{"record":{"id":"7ee239b8ef91a6a0","repo":"eyaltoledano/claude-task-master","slug":"temperature-must-be-between-0-and-1","errorCode":null,"errorMessage":"Temperature must be between 0 and 1","messagePattern":"Temperature must be between 0 and 1","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/ai-providers/base-provider.js","lineNumber":222,"sourceCode":"\t\t// Validate required model ID\n\t\tif (!params.modelId) {\n\t\t\tthrow new Error(`${this.name} Model ID is required`);\n\t\t}\n\n\t\t// Validate optional parameters\n\t\tthis.validateOptionalParams(params);\n\t}\n\n\t/**\n\t * Validates optional parameters like temperature and maxTokens\n\t * @param {object} params - Parameters to validate\n\t */\n\tvalidateOptionalParams(params) {\n\t\tif (\n\t\t\tparams.temperature !== undefined &&\n\t\t\t(params.temperature < 0 || params.temperature > 1)\n\t\t) {\n\t\t\tthrow new Error('Temperature must be between 0 and 1');\n\t\t}\n\t\tif (params.maxTokens !== undefined) {\n\t\t\tconst maxTokens = Number(params.maxTokens);\n\t\t\tif (!Number.isFinite(maxTokens) || maxTokens <= 0) {\n\t\t\t\tthrow new Error('maxTokens must be a finite number greater than 0');\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Validates message array structure\n\t */\n\tvalidateMessages(messages) {\n\t\tif (!messages || !Array.isArray(messages) || messages.length === 0) {\n\t\t\tthrow new Error('Invalid or empty messages array provided');\n\t\t}\n\n\t\tfor (const msg of messages) {","sourceCodeStart":204,"sourceCodeEnd":240,"githubUrl":"https://github.com/eyaltoledano/claude-task-master/blob/c0c98d367c55296bfe69e65680625b6db437af02/src/ai-providers/base-provider.js#L204-L240","documentation":"validateOptionalParams() rejects a temperature outside the [0, 1] range. The provider layer normalizes temperature to this range regardless of some upstream APIs allowing up to 2, so passing e.g. 1.5 throws before the request is sent.","triggerScenarios":"Passing params.temperature < 0 or > 1 (e.g., temperature: 1.5 or 2) to any generation call; loading a config file with an out-of-range temperature.","commonSituations":"Copy-pasting temperature: 2 from APIs that support it (OpenAI allows 0-2); computing temperature dynamically and exceeding bounds; config file hand-edited.","solutions":["Set temperature between 0 and 1 (e.g., 0.7)","Clamp the value: Math.min(1, Math.max(0, temp)) before calling","Remove the temperature param to use the provider default"],"exampleFix":"// before\nawait provider.generateText({ ..., temperature: 2 });\n// after\nawait provider.generateText({ ..., temperature: 0.7 });","handlingStrategy":"validation","validationCode":"if (params.temperature !== undefined && !(params.temperature >= 0 && params.temperature <= 1)) throw new Error('temperature must be between 0 and 1');","typeGuard":"function isValidTemperature(t) { return t === undefined || (typeof t === 'number' && t >= 0 && t <= 1); }","tryCatchPattern":"try {\n  await provider.generateText(params);\n} catch (err) {\n  if (err.message === 'Temperature must be between 0 and 1') {\n    params.temperature = Math.min(1, Math.max(0, Number(params.temperature)));\n  } else throw err;\n}","preventionTips":["Clamp temperature to [0,1] when read from config or CLI","Remember this library's range is 0-1, not the 0-2 some APIs allow","Sanity-check config values after hand edits"],"tags":["validation","parameters","temperature","range-check"],"backgroundTag":"parameter-validation-failed","analyzedSha":"c0c98d367c55296bfe69e65680625b6db437af02","analyzedAt":"2026-08-29T02:56:26.071Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}