Skip to content

fix(api): preserve custom-node combo catalog metadata after builder saves - #15667

Closed
ekinnee wants to merge 1 commit into
diegosouzapw:release/v3.8.52from
ekinnee:ekinnee/fix-custom-node-combo-metadata
Closed

ekinnee wants to merge 1 commit into
diegosouzapw:release/v3.8.52from
ekinnee:ekinnee/fix-custom-node-combo-metadata

Conversation

@ekinnee

@ekinnee ekinnee commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Custom-provider combo steps built by the dashboard store the internal node ID in providerId and its public prefix in model, for example providerId: "openai-compatible-chat-…" with model: "cliproxy-direct/gpt-5.6-luna". The catalog treated the qualified string as the bare model ID, losing output limits, modalities, and reasoning tiers. This also affects already-saved steps after the builder prefix fix in #14143 (related to #14135).

Normalize the public model prefix to the internal node ID before the catalog's existing target resolver strips it. Apply this only when the existing prefix winner map identifies the same node, preserving reserved-prefix and collision handling. Connection identity remains keyed to the node UUID. No persisted combo rewrite is needed for the affected UUID/public-prefix shape.

The regression builds global-picker and manual-entry steps through the real builder, persists them in an isolated database, and checks catalog metadata parity with the direct model. It also covers legacy UUID-qualified steps and rejects foreign-prefix reasoning metadata. Before the fix, the new regression failed with combo context 400000 versus direct context 1050000; after the fix all 14 tests in the metadata file pass.

Validation:

  • node --import tsx/esm --import ./open-sse/utils/setupPolyfill.ts tests/unit/models-catalog-combo-metadata.test.ts — 14 passed.
  • Node test runner with setupPolyfill and isolateDataDir — seven related catalog/builder files passed: models-catalog-combo-metadata, combo-builder-custom-provider-alias-14135, combo-builder-draft, combo-builder-options-route, models-catalog-custom-node-prefix, models-catalog-route, catalog-helpers-extraction.
  • npm run test:vitest — 54 files / 493 tests passed.
  • npm run typecheck:core, focused ESLint, Prettier check, and diff whitespace check passed.
  • Repository pre-commit checks passed when invoked directly (the generated Husky hook wrappers are absent in this fresh worktree).
  • Independent read-only review completed with no blocking findings.

⚠️ base-red inherited: #15306. The full Node unit suite, production build, and deployed UI/picker verification have not been run for this draft. The release-green report records full-unit and other gate failures/timeouts on the base; this change does not repair them. Runtime combo-context aggregation outside /v1/models is outside this patch's scope.

@ekinnee

ekinnee commented Oct 6, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #15668, which carries the same reviewed repair on the repository-required fix/custom-node-combo-metadata branch, follows the PR template, and includes full lint plus focused validation rerun after reconciling with the active release base. Closing this draft to avoid duplicate review and CI. The replacement remains draft pending required CI gates.

@ekinnee ekinnee closed this Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant