5
5
6
6
import { BUILD_CONFIG } from '../../core/BuildConfig.js' ;
7
7
import { WebSocketRPCClient } from '../../common/WebSocketRPCClient.js' ;
8
- import { LLMConfigurationManager } from '../../core/LLMConfigurationManager.js' ;
8
+ import { LLMConfigurationManager , type LLMConfig } from '../../core/LLMConfigurationManager.js' ;
9
9
import { getEvaluationConfig , getEvaluationClientId } from '../../common/EvaluationConfig.js' ;
10
10
import { ToolRegistry , ConfigurableAgentTool } from '../../agent_framework/ConfigurableAgentTool.js' ;
11
11
import { AgentService } from '../../core/AgentService.js' ;
@@ -1056,24 +1056,35 @@ export class EvaluationAgent {
1056
1056
// Get configuration manager
1057
1057
const configManager = LLMConfigurationManager . getInstance ( ) ;
1058
1058
1059
- // Load existing configuration for partial updates
1059
+ // Store current config for potential rollback
1060
1060
const currentConfig = configManager . loadConfiguration ( ) ;
1061
1061
1062
- // Merge configurations based on partial flag
1063
- const mergedConfig = {
1064
- provider : params . partial ? ( params . provider ?? currentConfig . provider ) : params . provider ,
1065
- apiKey : params . partial ? ( params . apiKey ?? currentConfig . apiKey ) : params . apiKey ,
1066
- endpoint : params . partial ? ( params . endpoint ?? currentConfig . endpoint ) : params . endpoint ,
1067
- mainModel : params . partial ? ( params . models ?. main ?? currentConfig . mainModel ) : params . models . main ,
1068
- miniModel : params . partial ? ( params . models ?. mini ?? currentConfig . miniModel ) : params . models ?. mini ,
1069
- nanoModel : params . partial ? ( params . models ?. nano ?? currentConfig . nanoModel ) : params . models ?. nano
1070
- } ;
1071
-
1072
- // Validate the merged configuration
1073
- const validation = configManager . validateConfiguration ( ) ;
1062
+ // Handle configuration update based on partial flag
1063
+ if ( params . partial ) {
1064
+ // Use the new partial configuration method
1065
+ const partialConfig : Partial < LLMConfig > = { } ;
1066
+ if ( params . provider !== undefined ) partialConfig . provider = params . provider ;
1067
+ if ( params . apiKey !== undefined ) partialConfig . apiKey = params . apiKey ;
1068
+ if ( params . endpoint !== undefined ) partialConfig . endpoint = params . endpoint ;
1069
+ if ( params . models ?. main !== undefined ) partialConfig . mainModel = params . models . main ;
1070
+ if ( params . models ?. mini !== undefined ) partialConfig . miniModel = params . models . mini ;
1071
+ if ( params . models ?. nano !== undefined ) partialConfig . nanoModel = params . models . nano ;
1072
+
1073
+ configManager . applyPartialConfiguration ( partialConfig ) ;
1074
+ } else {
1075
+ // Full configuration update
1076
+ const fullConfig : LLMConfig = {
1077
+ provider : params . provider ,
1078
+ apiKey : params . apiKey ,
1079
+ endpoint : params . endpoint ,
1080
+ mainModel : params . models . main ,
1081
+ miniModel : params . models ?. mini ,
1082
+ nanoModel : params . models ?. nano
1083
+ } ;
1084
+ configManager . saveConfiguration ( fullConfig ) ;
1085
+ }
1074
1086
1075
- // Check validation after setting the merged config temporarily
1076
- configManager . saveConfiguration ( mergedConfig ) ;
1087
+ // Validate the saved configuration
1077
1088
const postSaveValidation = configManager . validateConfiguration ( ) ;
1078
1089
1079
1090
if ( ! postSaveValidation . isValid ) {
@@ -1103,13 +1114,16 @@ export class EvaluationAgent {
1103
1114
const agentService = AgentService . getInstance ( ) ;
1104
1115
await agentService . refreshCredentials ( ) ;
1105
1116
1117
+ // Get the applied configuration
1118
+ const appliedConfiguration = configManager . loadConfiguration ( ) ;
1119
+
1106
1120
// Prepare response with applied configuration
1107
1121
const appliedConfig = {
1108
- provider : mergedConfig . provider ,
1122
+ provider : appliedConfiguration . provider ,
1109
1123
models : {
1110
- main : mergedConfig . mainModel ,
1111
- mini : mergedConfig . miniModel || '' ,
1112
- nano : mergedConfig . nanoModel || ''
1124
+ main : appliedConfiguration . mainModel ,
1125
+ mini : appliedConfiguration . miniModel || '' ,
1126
+ nano : appliedConfiguration . nanoModel || ''
1113
1127
}
1114
1128
} ;
1115
1129
@@ -1121,8 +1135,8 @@ export class EvaluationAgent {
1121
1135
}
1122
1136
1123
1137
logger . info ( 'LLM configuration applied successfully' , {
1124
- provider : mergedConfig . provider ,
1125
- mainModel : mergedConfig . mainModel
1138
+ provider : appliedConfiguration . provider ,
1139
+ mainModel : appliedConfiguration . mainModel
1126
1140
} ) ;
1127
1141
1128
1142
} catch ( error ) {
0 commit comments