@@ -17,6 +17,7 @@ export const providerProfilesSchema = z.object({
1717 . object ( {
1818 rateLimitSecondsMigrated : z . boolean ( ) . optional ( ) ,
1919 diffSettingsMigrated : z . boolean ( ) . optional ( ) ,
20+ openAiHeadersMigrated : z . boolean ( ) . optional ( ) ,
2021 } )
2122 . optional ( ) ,
2223} )
@@ -38,6 +39,7 @@ export class ProviderSettingsManager {
3839 migrations : {
3940 rateLimitSecondsMigrated : true , // Mark as migrated on fresh installs
4041 diffSettingsMigrated : true , // Mark as migrated on fresh installs
42+ openAiHeadersMigrated : true , // Mark as migrated on fresh installs
4143 } ,
4244 }
4345
@@ -90,6 +92,7 @@ export class ProviderSettingsManager {
9092 providerProfiles . migrations = {
9193 rateLimitSecondsMigrated : false ,
9294 diffSettingsMigrated : false ,
95+ openAiHeadersMigrated : false ,
9396 } // Initialize with default values
9497 isDirty = true
9598 }
@@ -106,6 +109,12 @@ export class ProviderSettingsManager {
106109 isDirty = true
107110 }
108111
112+ if ( ! providerProfiles . migrations . openAiHeadersMigrated ) {
113+ await this . migrateOpenAiHeaders ( providerProfiles )
114+ providerProfiles . migrations . openAiHeadersMigrated = true
115+ isDirty = true
116+ }
117+
109118 if ( isDirty ) {
110119 await this . store ( providerProfiles )
111120 }
@@ -175,6 +184,30 @@ export class ProviderSettingsManager {
175184 }
176185 }
177186
187+ private async migrateOpenAiHeaders ( providerProfiles : ProviderProfiles ) {
188+ try {
189+ for ( const [ _name , apiConfig ] of Object . entries ( providerProfiles . apiConfigs ) ) {
190+ // Use type assertion to access the deprecated property safely
191+ const configAny = apiConfig as any
192+
193+ // Check if openAiHostHeader exists but openAiHeaders doesn't
194+ if (
195+ configAny . openAiHostHeader &&
196+ ( ! apiConfig . openAiHeaders || Object . keys ( apiConfig . openAiHeaders || { } ) . length === 0 )
197+ ) {
198+ // Create the headers object with the Host value
199+ apiConfig . openAiHeaders = { Host : configAny . openAiHostHeader }
200+
201+ // Delete the old property to prevent re-migration
202+ // This prevents the header from reappearing after deletion
203+ configAny . openAiHostHeader = undefined
204+ }
205+ }
206+ } catch ( error ) {
207+ console . error ( `[MigrateOpenAiHeaders] Failed to migrate OpenAI headers:` , error )
208+ }
209+ }
210+
178211 /**
179212 * List all available configs with metadata.
180213 */
0 commit comments