Skip to content

Commit e8b37a3

Browse files
committed
The current validation forces provider and models.main even when partial=true, making partial updates unusable. Validate only fields provided for partial updates; require full fields only for full updates.
1 parent ff99a7d commit e8b37a3

File tree

2 files changed

+36
-10
lines changed

2 files changed

+36
-10
lines changed

eval-server/nodejs/src/api-server.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,9 +267,17 @@ class APIServer {
267267
// Handle nested model configuration directly
268268
const nestedModelConfig = this.processNestedModelConfig(requestBody);
269269

270+
const redact = (mk) => ({
271+
...mk,
272+
api_key: mk?.api_key ? `${String(mk.api_key).slice(0, 4)}...` : undefined
273+
});
270274
logger.info('Processing responses request:', {
271275
input: requestBody.input,
272-
modelConfig: nestedModelConfig
276+
modelConfig: {
277+
main_model: redact(nestedModelConfig.main_model),
278+
mini_model: redact(nestedModelConfig.mini_model),
279+
nano_model: redact(nestedModelConfig.nano_model),
280+
}
273281
});
274282

275283
// Find a connected and ready client

eval-server/nodejs/src/lib/EvalServer.js

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,16 @@ export class EvalServer extends EventEmitter {
347347
result = await this.handleConfigureLLM(connection, params);
348348
break;
349349
default:
350-
throw new Error(`Unknown method: ${method}`);
350+
// JSON-RPC: Method not found
351+
this.sendMessage(connection.ws, {
352+
jsonrpc: '2.0',
353+
error: {
354+
code: -32601,
355+
message: `Method not found: ${method}`
356+
},
357+
id
358+
});
359+
return;
351360
}
352361

353362
// Send success response
@@ -388,15 +397,24 @@ export class EvalServer extends EventEmitter {
388397

389398
const { provider, apiKey, endpoint, models, partial = false } = params;
390399

391-
// Validate provider
400+
// Validate inputs
392401
const supportedProviders = ['openai', 'litellm', 'groq', 'openrouter'];
393-
if (!supportedProviders.includes(provider)) {
394-
throw new Error(`Unsupported provider: ${provider}. Supported providers: ${supportedProviders.join(', ')}`);
395-
}
396-
397-
// Validate models
398-
if (!models || !models.main) {
399-
throw new Error('Main model is required');
402+
if (partial) {
403+
// For partial updates, validate only provided fields
404+
if (provider && !supportedProviders.includes(provider)) {
405+
throw new Error(`Unsupported provider: ${provider}. Supported providers: ${supportedProviders.join(', ')}`);
406+
}
407+
if (models && models.main === '') {
408+
throw new Error('Main model cannot be empty');
409+
}
410+
} else {
411+
// For full updates, require provider and main model
412+
if (!provider || !supportedProviders.includes(provider)) {
413+
throw new Error(`Unsupported or missing provider: ${provider ?? '(none)'}. Supported providers: ${supportedProviders.join(', ')}`);
414+
}
415+
if (!models || !models.main) {
416+
throw new Error('Main model is required');
417+
}
400418
}
401419

402420
// Store configuration for this client connection

0 commit comments

Comments
 (0)