fix(stt): address review feedback — reserved fields guard, schema validation, docs

- Filter reserved fields (file, model, language) from extraParams before merge
- Change extraParams schema to z.record(z.union([z.string(), z.number(), z.boolean()]))
- Add regex validation for language field in Zod schema
- Add JSDoc note about extraParams in openAIProvider
- Add comment clarifying language/extraParams are OpenAI-only (not Azure)
- Remove unnecessary optional chaining on sttSchema
This commit is contained in:
Mieszko Makuch 2026-03-26 01:56:40 +01:00
parent f158f07ee0
commit dead7b9d6b
2 changed files with 13 additions and 5 deletions

View file

@ -186,7 +186,7 @@ class STTService {
/**
* Prepares the request for the OpenAI STT provider.
* @param {Object} sttSchema - The STT schema for OpenAI.
* @param {Object} sttSchema - The STT schema for OpenAI (includes optional language and extraParams).
* @param {Stream} audioReadStream - The audio data to be transcribed.
* @param {Object} audioFile - The audio file object (unused in OpenAI provider).
* @param {string} language - The language code for the transcription.
@ -206,8 +206,12 @@ class STTService {
data.language = validLanguage;
}
if (sttSchema?.extraParams) {
Object.assign(data, sttSchema.extraParams);
if (sttSchema.extraParams) {
const reservedFields = new Set(['file', 'model', 'language']);
const safeParams = Object.fromEntries(
Object.entries(sttSchema.extraParams).filter(([key]) => !reservedFields.has(key)),
);
Object.assign(data, safeParams);
}
const headers = {