(
config: ManagedKimiConfigShape,
models: readonly ManagedKimiCodeModelInfo[],
options: { readonly preserveExisting: boolean },
)
| 657 | } |
| 658 | |
| 659 | function selectDefaultModel( |
| 660 | config: ManagedKimiConfigShape, |
| 661 | models: readonly ManagedKimiCodeModelInfo[], |
| 662 | options: { readonly preserveExisting: boolean }, |
| 663 | ): SelectedDefaultModel { |
| 664 | const firstModel = models[0]; |
| 665 | if (firstModel === undefined) { |
| 666 | throw new Error('No models available for Kimi Code.'); |
| 667 | } |
| 668 | |
| 669 | const managedModels = new Map(models.map((model) => [managedModelKey(model.id), model])); |
| 670 | const existingModels = config.models ?? {}; |
| 671 | const currentDefault = |
| 672 | typeof config.defaultModel === 'string' && config.defaultModel.length > 0 |
| 673 | ? config.defaultModel |
| 674 | : undefined; |
| 675 | |
| 676 | if ( |
| 677 | options.preserveExisting && |
| 678 | currentDefault !== undefined && |
| 679 | canPreserveDefaultModel(existingModels, currentDefault, managedModels) |
| 680 | ) { |
| 681 | const preservedModel = managedModels.get(currentDefault); |
| 682 | return { |
| 683 | modelKey: currentDefault, |
| 684 | thinking: forcedThinking( |
| 685 | preservedModel, |
| 686 | config.thinking?.enabled ?? preservedModel?.supportsReasoning ?? false, |
| 687 | ), |
| 688 | }; |
| 689 | } |
| 690 | |
| 691 | return { |
| 692 | modelKey: managedModelKey(firstModel.id), |
| 693 | thinking: forcedThinking(firstModel, config.thinking?.enabled ?? firstModel.supportsReasoning), |
| 694 | }; |
| 695 | } |
| 696 | |
| 697 | function canPreserveDefaultModel( |
| 698 | existingModels: Record<string, ManagedKimiModelAlias | Record<string, unknown>>, |
no test coverage detected