Repository navigation
fix(api): preserve custom-node combo catalog metadata after builder saves - #15668
Merged
diegosouzapw merged 7 commits intoOct 7, 2026
Merged
diegosouzapw merged 7 commits into
diegosouzapw merged 7 commits into
Conversation
5 tasks done
diegosouzapw
merged commit Oct 7, 2026
9979ed5
into
diegosouzapw:release/v3.8.52
45 of 97 checks passed
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.
Summary
Restore
/v1/modelsmetadata for builder-saved custom-provider combo members whoseproviderIdis the node UUID and whosemodeluses its public prefix. Recognize only a prefix whose existing winner map selects that same node, then let the existing resolver strip one prefix. Connection identity, reserved-prefix rules, and collision winner selection remain intact.For example,
providerId: "openai-compatible-chat-…"withmodel: "cliproxy-direct/gpt-5.6-luna"now publishes the direct model's limits, modalities, and reasoning tiers.The prefix normalization is a small helper in
catalogProviderMaps.ts, keeping the resolver within the existing complexity budget. No migration, persisted combo rewrite, feature flag, suppression, or baseline change is included. Runtime combo-context aggregation outside/v1/modelsremains outside this repair.Related Issues
Validation
Candidate:
e598f89fa8c27bc7c192a513b3ab565d153f5bcf. Landed upstream changes through8ad6b1c46eaewere merged without rewriting PR history. The net PR diff remains four files: two production catalog files, the existing regression test file, and the changelog fragment.Final local evidence, including a fresh lockfile install:
APP_LOG_TO_FILE=false DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --import ./open-sse/utils/setupPolyfill.ts tests/unit/models-catalog-combo-metadata.test.ts— 14 passed. The original implementation's recorded red proof was combo context 400000 versus direct context 1050000; the regression now passes.APP_LOG_TO_FILE=false DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx/esm --test tests/unit/models-catalog-custom-node-prefix.test.ts tests/unit/combo-builder-custom-provider-alias-14135.test.ts tests/unit/combo-context-prefix-resolution.test.ts tests/unit/12058-models-catalog-canonical-self-aliased.test.ts— four files passed.APP_LOG_TO_FILE=false npm run test:vitest— 54 files / 494 tests passed.npm run typecheck:core— passed.--pass-on-unpruned-suppressions— passed; no suppressions changed.npm run check:complexity-ratchets -- --base-ref 8ad6b1c46e— passed: zero new cyclomatic or cognitive violations. The previous CI's genuine PR regression (getComboTargetModelIdcomplexity 17, cap 15) is repaired.npm run check:file-size -- --base-ref 8ad6b1c46e— production and test file-size ratchets passed.The broad local native-unit/full-lint attempts were stopped after the operator narrowed this task to focused PR readiness. An earlier broad attempt also exposed missing packages in reused
node_modules;npm cirepaired that environment before the final focused checks. No full native-suite, full lint, coverage-floor, deployment, or build pass is claimed.Tests Added Or Updated
tests/unit/models-catalog-combo-metadata.test.tsbuilds real global-picker and manual-entry steps, persists them in an isolated database, and verifies direct-model parity for context/output limits, modalities, and reasoning tiers. It also covers legacy UUID qualification and rejects foreign-prefix reasoning metadata. Database handles are closed in teardown.Coverage Notes
No coverage baseline or suppression changed. The full coverage gate remains hosted CI validation; no passing 60% floor is claimed.
Reviewer Notes
Ready to wait for external repairs; do not merge while required checks are red.
Current-head logs, refreshed after the push:
credential.ts,cursor.ts, executorindex.ts, and/api/providers/route.ts; no combo file is listed.omni-auth/omni-settingsdrift; active fix(release): drain two v3.8.52 base-reds — cycles membership test, drifted skills mirrors #15682 owns that repair.compressionEngineConfig.settingsLoadFailed, an unchanged translation input. Other broad current-head checks are still running at this update; earlier-run unit/runner failures are not presented as final-candidate results.Next trigger: relevant upstream release/base repairs and companions land, or current-head CI identifies a new failure in this PR's changed files. Then sync the necessary landed changes once and refresh focused/CI evidence. General release-branch cleanup stays with its existing owners. No merge authorization has been given.