|
1 | 1 | import { ExtensionContext } from "vscode" |
2 | 2 | import { z, ZodError } from "zod" |
3 | 3 |
|
4 | | -import { providerSettingsSchema, ApiConfigMeta } from "../../schemas" |
| 4 | +import { providerSettingsSchema, ApiConfigMeta, ProviderSettings } from "../../schemas" |
5 | 5 | import { Mode, modes } from "../../shared/modes" |
6 | 6 | import { telemetryService } from "../../services/telemetry/TelemetryService" |
7 | 7 |
|
@@ -115,20 +115,15 @@ export class ProviderSettingsManager { |
115 | 115 | } |
116 | 116 |
|
117 | 117 | if (rateLimitSeconds === undefined) { |
118 | | - // Failed to get the existing value, use the default |
| 118 | + // Failed to get the existing value, use the default. |
119 | 119 | rateLimitSeconds = 0 |
120 | 120 | } |
121 | 121 |
|
122 | 122 | for (const [name, apiConfig] of Object.entries(providerProfiles.apiConfigs)) { |
123 | 123 | if (apiConfig.rateLimitSeconds === undefined) { |
124 | | - console.log( |
125 | | - `[MigrateRateLimitSeconds] Applying rate limit ${rateLimitSeconds}s to profile: ${name}`, |
126 | | - ) |
127 | 124 | apiConfig.rateLimitSeconds = rateLimitSeconds |
128 | 125 | } |
129 | 126 | } |
130 | | - |
131 | | - console.log(`[MigrateRateLimitSeconds] migration complete`) |
132 | 127 | } catch (error) { |
133 | 128 | console.error(`[MigrateRateLimitSeconds] Failed to migrate rate limit settings:`, error) |
134 | 129 | } |
@@ -321,7 +316,31 @@ export class ProviderSettingsManager { |
321 | 316 | private async load(): Promise<ProviderProfiles> { |
322 | 317 | try { |
323 | 318 | const content = await this.context.secrets.get(this.secretsKey) |
324 | | - return content ? providerProfilesSchema.parse(JSON.parse(content)) : this.defaultProviderProfiles |
| 319 | + |
| 320 | + if (!content) { |
| 321 | + return this.defaultProviderProfiles |
| 322 | + } |
| 323 | + |
| 324 | + const providerProfiles = providerProfilesSchema |
| 325 | + .extend({ |
| 326 | + apiConfigs: z.record(z.string(), z.any()), |
| 327 | + }) |
| 328 | + .parse(JSON.parse(content)) |
| 329 | + |
| 330 | + const apiConfigs = Object.entries(providerProfiles.apiConfigs).reduce( |
| 331 | + (acc, [key, apiConfig]) => { |
| 332 | + const result = providerSettingsWithIdSchema.safeParse(apiConfig) |
| 333 | + return result.success ? { ...acc, [key]: result.data } : acc |
| 334 | + }, |
| 335 | + {} as Record<string, ProviderSettingsWithId>, |
| 336 | + ) |
| 337 | + |
| 338 | + return { |
| 339 | + ...providerProfiles, |
| 340 | + apiConfigs: Object.fromEntries( |
| 341 | + Object.entries(apiConfigs).filter(([_, apiConfig]) => apiConfig !== null), |
| 342 | + ), |
| 343 | + } |
325 | 344 | } catch (error) { |
326 | 345 | if (error instanceof ZodError) { |
327 | 346 | telemetryService.captureSchemaValidationError({ schemaName: "ProviderProfiles", error }) |
|
0 commit comments