feat(images): add full combo strategy execution for image generation (#9239) - #9499
Merged
diegosouzapw merged 6 commits intoAug 10, 2026
Merged
Conversation
diegosouzapw
added a commit
that referenced
this pull request
Aug 5, 2026
…ne (#9509) release/v3.8.50 fails its own "No new ESLint warnings" gate right now, independent of what any PR changes. Measured directly: a worktree checked out at the current tip alone, no PR merged in, exits 2 with "There are suppressions left that do not occur anymore." Cross-checked against two unrelated open PRs (#9499, #9497) hitting the identical failure, ruling out anything content-specific. The mass-freeze commit that regenerated config/quality/eslint-suppressions.json for the TypeScript 7 migration left one entry pointing at a violation that no longer exists: src/lib/usage/providerLimits.ts no longer triggers no-restricted-imports, but the suppression entry for it does. ESLint's own suppression bookkeeping treats an unmatched entry as a hard failure, separate from and in addition to real unsuppressed errors. --prune-suppressions removes exactly that one entry. It also drops the informal "_comment" key documenting the freeze's origin, since ESLint's suppression writer only round-trips file-keyed entries it manages itself -- that context is not lost, it is still readable at the mass-freeze commit (6b0e11e) in git history. This is one of two independent problems behind the same gate failure, not the whole fix. Two files (tests/unit/issue-9407-gemini-web-validation-false-positive.test.ts, tests/unit/v1-models-auth-leak-9320.test.ts) carry real, currently unsuppressed no-explicit-any errors with no entry covering them at all -- pruning cannot add what was never there. #9484 fixes those at the source. Verified here that after this change alone, the gate moves from exit 2 (stale suppressions) to the ordinary exit 1 those two remaining errors cause -- both this and #9484 need to land before the gate is green again. Signed-off-by: Minxi Hou <houminxi@gmail.com> Co-authored-by: Diego Rodrigues de Sa e Souza <diegosouza.pw@gmail.com>
…image-combo-strategy-execution # Conflicts: # src/app/api/v1/images/generations/route.ts
Owner
Author
|
Thanks for the PR. Please address the mandatory items (tests and/or merge blockers) in this branch, then rerun checks before /merge-prs. |
3 similar comments
Owner
Author
|
Thanks for the PR. Please address the mandatory items (tests and/or merge blockers) in this branch, then rerun checks before /merge-prs. |
Owner
Author
|
Thanks for the PR. Please address the mandatory items (tests and/or merge blockers) in this branch, then rerun checks before /merge-prs. |
Owner
Author
|
Thanks for the PR. Please address the mandatory items (tests and/or merge blockers) in this branch, then rerun checks before /merge-prs. |
6 of 9 tasks
diegosouzapw
added a commit
that referenced
this pull request
Aug 12, 2026
…sh (#10198) The Build CI job is advisory, so eight module-level defects from eight different PRs accumulated on release/v3.8.50 until `npm run build` failed with 7 Turbopack errors and `npm run lint` with 14. Build (link-time): - modelSelectModalHelpers.ts: a lost `}` swallowed PROVIDER_TEST_CHUNK_SIZE into isProviderModelHidden's body (#9011). - videoGeneration.ts: handleFalVideoGeneration imported twice; the standalone falHandler.ts is superseded by the provider-neutral mediaGeneration/fal.ts and is removed here (#9982 over #9969). - catalog.ts: re-exported and called the injectable SWR policy that #9199 deliberately replaced with a fixed 30s bound. Fixed on the consumer side — restoring the accessor would resurrect the unbounded window #9199 removed after measuring a 41s catalog build in production. - tinycmsSigner.ts: generated wasm-bindgen glue kept a sidecar `new URL('wasm_signer_bg.wasm', import.meta.url)` that no file backs; Turbopack resolves it statically. The module ships inlined as WASM_BASE64 and the only caller always passes it explicitly (#8736/#10087). - conolDiscovery.ts: imported getProviderOutboundGuard from outboundUrlGuard, which does not export it. Fixed on the consumer side: outboundUrlGuard.ts is loaded by the packaged CLI without a tsconfig, so it must stay free of `@/`-aliased imports (#7682). Runtime (the build never caught this one): - catalogCache.ts::scheduleBackgroundRefresh had two dangling statements referencing undeclared `inFlight`/`promise`, so EVERY stale-while-revalidate read threw a ReferenceError. Surfaced by realigning the #8728 suite, which #9199 left asserting a removed contract. Lint: - driverFactory.test.ts: a case inserted between the preceding test's `finally` and its `});` left the file unparseable, so the SQLite driver-cascade suite (26 tests) had not run since 2026-08-11 (#9173). - providerModelsConfig.ts: imported an executor directly, crossing the G14 boundary; routed through a new open-sse/services/zaiWebCredentials.ts (#8451). - image-combo.test.ts: 11 `any` violations, now typed (#9499). Validation: npm run build exit 0, npm run lint clean, typecheck:core clean, 41/41 tests green across the affected suites. Refs #9011 #9982 #9199 #8728 #8736 #10087 #8974 #9173 #8451 #9499 Co-authored-by: backryun <bakryun0718@proton.me>
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…ne (diegosouzapw#9509) release/v3.8.50 fails its own "No new ESLint warnings" gate right now, independent of what any PR changes. Measured directly: a worktree checked out at the current tip alone, no PR merged in, exits 2 with "There are suppressions left that do not occur anymore." Cross-checked against two unrelated open PRs (diegosouzapw#9499, diegosouzapw#9497) hitting the identical failure, ruling out anything content-specific. The mass-freeze commit that regenerated config/quality/eslint-suppressions.json for the TypeScript 7 migration left one entry pointing at a violation that no longer exists: src/lib/usage/providerLimits.ts no longer triggers no-restricted-imports, but the suppression entry for it does. ESLint's own suppression bookkeeping treats an unmatched entry as a hard failure, separate from and in addition to real unsuppressed errors. --prune-suppressions removes exactly that one entry. It also drops the informal "_comment" key documenting the freeze's origin, since ESLint's suppression writer only round-trips file-keyed entries it manages itself -- that context is not lost, it is still readable at the mass-freeze commit (020ea4a) in git history. This is one of two independent problems behind the same gate failure, not the whole fix. Two files (tests/unit/issue-9407-gemini-web-validation-false-positive.test.ts, tests/unit/v1-models-auth-leak-9320.test.ts) carry real, currently unsuppressed no-explicit-any errors with no entry covering them at all -- pruning cannot add what was never there. diegosouzapw#9484 fixes those at the source. Verified here that after this change alone, the gate moves from exit 2 (stale suppressions) to the ordinary exit 1 those two remaining errors cause -- both this and diegosouzapw#9484 need to land before the gate is green again. Signed-off-by: Minxi Hou <houminxi@gmail.com> Co-authored-by: Diego Rodrigues de Sa e Souza <diegosouza.pw@gmail.com>
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…iegosouzapw#9239) (diegosouzapw#9499) Co-authored-by: diegosouzapw <diegosouzapw@users.noreply.github.com>
muhamadgalihsaputra
pushed a commit
to niyatna/NiyatnaRoute
that referenced
this pull request
Sep 27, 2026
…sh (diegosouzapw#10198) The Build CI job is advisory, so eight module-level defects from eight different PRs accumulated on release/v3.8.50 until `npm run build` failed with 7 Turbopack errors and `npm run lint` with 14. Build (link-time): - modelSelectModalHelpers.ts: a lost `}` swallowed PROVIDER_TEST_CHUNK_SIZE into isProviderModelHidden's body (diegosouzapw#9011). - videoGeneration.ts: handleFalVideoGeneration imported twice; the standalone falHandler.ts is superseded by the provider-neutral mediaGeneration/fal.ts and is removed here (diegosouzapw#9982 over diegosouzapw#9969). - catalog.ts: re-exported and called the injectable SWR policy that diegosouzapw#9199 deliberately replaced with a fixed 30s bound. Fixed on the consumer side — restoring the accessor would resurrect the unbounded window diegosouzapw#9199 removed after measuring a 41s catalog build in production. - tinycmsSigner.ts: generated wasm-bindgen glue kept a sidecar `new URL('wasm_signer_bg.wasm', import.meta.url)` that no file backs; Turbopack resolves it statically. The module ships inlined as WASM_BASE64 and the only caller always passes it explicitly (diegosouzapw#8736/diegosouzapw#10087). - conolDiscovery.ts: imported getProviderOutboundGuard from outboundUrlGuard, which does not export it. Fixed on the consumer side: outboundUrlGuard.ts is loaded by the packaged CLI without a tsconfig, so it must stay free of `@/`-aliased imports (diegosouzapw#7682). Runtime (the build never caught this one): - catalogCache.ts::scheduleBackgroundRefresh had two dangling statements referencing undeclared `inFlight`/`promise`, so EVERY stale-while-revalidate read threw a ReferenceError. Surfaced by realigning the diegosouzapw#8728 suite, which diegosouzapw#9199 left asserting a removed contract. Lint: - driverFactory.test.ts: a case inserted between the preceding test's `finally` and its `});` left the file unparseable, so the SQLite driver-cascade suite (26 tests) had not run since 2026-08-11 (diegosouzapw#9173). - providerModelsConfig.ts: imported an executor directly, crossing the G14 boundary; routed through a new open-sse/services/zaiWebCredentials.ts (diegosouzapw#8451). - image-combo.test.ts: 11 `any` violations, now typed (diegosouzapw#9499). Validation: npm run build exit 0, npm run lint clean, typecheck:core clean, 41/41 tests green across the affected suites. Refs diegosouzapw#9011 diegosouzapw#9982 diegosouzapw#9199 diegosouzapw#8728 diegosouzapw#8736 diegosouzapw#10087 diegosouzapw#8974 diegosouzapw#9173 diegosouzapw#8451 diegosouzapw#9499 Co-authored-by: backryun <bakryun0718@proton.me>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add an image-specific combo execution path for
POST /v1/images/generations. Currently, combo names are flattened to the first target; now the full combo strategy is executed with fallback across targets.Changes:
open-sse/services/imageCombo.tsmodule withexecuteImageCombo(): resolves combo targets, filters to images-capable, iterates with priority strategy, callshandleImageGenerationper target, returns first success or last failuregenerations/route.ts: detects combo names before model resolution and diverts to combo executionX-OmniRoute-Decision,X-OmniRoute-Fallback-AttemptsCloses #9239