From 83c3e9c86949f87e941b38631dc3bc3868d56c36 Mon Sep 17 00:00:00 2001 From: usr-bin-roygbiv Date: Sat, 25 Jul 2026 08:44:12 +0000 Subject: [PATCH] fix(model-registry): rebuild immediate runtime models --- .../coding-agent/src/config/model-registry.ts | 2 +- .../model-registry-runtime-provider.test.ts | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/coding-agent/src/config/model-registry.ts b/packages/coding-agent/src/config/model-registry.ts index e7bd30e48..4b3e2f56c 100644 --- a/packages/coding-agent/src/config/model-registry.ts +++ b/packages/coding-agent/src/config/model-registry.ts @@ -2414,7 +2414,7 @@ export class ModelRegistry { const withRuntimeTransportOverride = runtimeTransportOverride ? nextModels.map(model => { if (model.provider !== providerName) return model; - return this.#applyProviderTransportOverride(model, runtimeTransportOverride); + return this.#applyProviderTransportOverrideToModel(model, runtimeTransportOverride); }) : nextModels; diff --git a/packages/coding-agent/test/model-registry-runtime-provider.test.ts b/packages/coding-agent/test/model-registry-runtime-provider.test.ts index 89abffdba..b84b81a9a 100644 --- a/packages/coding-agent/test/model-registry-runtime-provider.test.ts +++ b/packages/coding-agent/test/model-registry-runtime-provider.test.ts @@ -155,6 +155,29 @@ describe("ModelRegistry runtime provider registration", () => { expect(registry.find("openai", modelId)?.supportsComputerUse).toBe(true); }); + test("config.models re-registration rebuilds inferred capability after a saved transport override", () => { + const providerName = "openai"; + const modelId = "gpt-5.4"; + const proxyBaseUrl = "https://runtime-proxy.example.com/v1"; + + registry.registerProvider(providerName, { baseUrl: proxyBaseUrl }, "ext://runtime"); + registry.registerProvider( + providerName, + { + baseUrl: "https://api.openai.com/v1", + api: "openai-responses", + apiKey: "RUNTIME_KEY", + models: [{ ...baseModel, id: modelId }], + }, + "ext://runtime", + ); + + const model = registry.find(providerName, modelId); + expect(model?.baseUrl).toBe(proxyBaseUrl); + expect(model?.supportsComputerUse).toBe(false); + expect(model?.supportsComputerUseConfig).toBeUndefined(); + }); + test("registerProvider applies headers-only overrides to existing provider models across refresh", async () => { const providerName = "anthropic"; const runtimeHeader = "X-Runtime-Provider-Header";