Compare commits

...

2 Commits

Author SHA1 Message Date
Saoud Rizwan ffb5c69c95 fix: use type guard for hasProviderConfig to fix TypeScript errors 2026-01-30 11:20:50 -08:00
Saoud Rizwan 13f50595fc fix: prevent empty provider settings from forcing provider change
An empty provider settings object (e.g., `"AwsBedrock": {}`) was being
treated as "this provider is configured" which forced all org users
to that provider. This prevented users from using their preferred
provider (like Cline account) even when the admin only intended to
enable the provider as an option, not require it.

The fix adds a helper function that checks if a provider settings
object has actual configuration properties before treating it as
configured. Empty objects are now ignored.
2026-01-30 11:13:33 -08:00
+12 -5
View File
@@ -103,9 +103,16 @@ export function transformRemoteConfigToStateShape(remoteConfig: RemoteConfig): P
// Map provider settings
const providers: ApiProvider[] = []
// Helper to check if a provider settings object has actual configuration.
// An empty object {} shouldn't force the provider, only allow it as an option.
// This prevents users from being forced to a provider when the admin only
// intended to enable it, not require it.
const hasProviderConfig = <T extends object>(settings: T | undefined): settings is T =>
settings !== undefined && Object.keys(settings).length > 0
// Map OpenAiCompatible provider settings
const openAiSettings = remoteConfig.providerSettings?.OpenAiCompatible
if (openAiSettings) {
if (hasProviderConfig(openAiSettings)) {
transformed.planModeApiProvider = "openai"
transformed.actModeApiProvider = "openai"
providers.push("openai")
@@ -126,7 +133,7 @@ export function transformRemoteConfigToStateShape(remoteConfig: RemoteConfig): P
// Map AwsBedrock provider settings
const awsBedrockSettings = remoteConfig.providerSettings?.AwsBedrock
if (awsBedrockSettings) {
if (hasProviderConfig(awsBedrockSettings)) {
transformed.planModeApiProvider = "bedrock"
transformed.actModeApiProvider = "bedrock"
providers.push("bedrock")
@@ -149,7 +156,7 @@ export function transformRemoteConfigToStateShape(remoteConfig: RemoteConfig): P
}
const clineSettings = remoteConfig.providerSettings?.Cline
if (clineSettings) {
if (hasProviderConfig(clineSettings)) {
transformed.planModeApiProvider = "cline"
transformed.actModeApiProvider = "cline"
providers.push("cline")
@@ -157,7 +164,7 @@ export function transformRemoteConfigToStateShape(remoteConfig: RemoteConfig): P
// Map LiteLLM provider settings
const liteLlmSettings = remoteConfig.providerSettings?.LiteLLM
if (liteLlmSettings) {
if (hasProviderConfig(liteLlmSettings)) {
transformed.planModeApiProvider = "litellm"
transformed.actModeApiProvider = "litellm"
providers.push("litellm")
@@ -169,7 +176,7 @@ export function transformRemoteConfigToStateShape(remoteConfig: RemoteConfig): P
// Map Vertex provider settings
const vertexSettings = remoteConfig.providerSettings?.Vertex
if (vertexSettings) {
if (hasProviderConfig(vertexSettings)) {
transformed.planModeApiProvider = "vertex"
transformed.actModeApiProvider = "vertex"
providers.push("vertex")