{"record":{"id":"6a8aee93f0f3dc13","repo":"linshenkx/prompt-optimizer","slug":"value-too-long","errorCode":"VALUE_TOO_LONG","errorMessage":"Variable value too long: ${value.length} > ${VARIABLE_VALIDATION.MAX_VALUE_LENGTH}","messagePattern":"Variable value too long: (.+?) > (.+?)","errorType":"validation","errorClass":"VariableError","httpStatus":null,"severity":"error","filePath":"packages/ui/src/services/VariableManager.ts","lineNumber":130,"sourceCode":"      throw new VariableError(\n        `Invalid variable name: ${name}. ${reasonText}`,\n        name,\n        undefined,\n        'INVALID_VARIABLE_NAME'\n      );\n    }\n\n    if (this.isPredefinedVariable(name)) {\n      throw new VariableError(\n        `Cannot override predefined variable: ${name}`,\n        name,\n        undefined,\n        'PREDEFINED_VARIABLE_OVERRIDE'\n      );\n    }\n\n    if (value.length > VARIABLE_VALIDATION.MAX_VALUE_LENGTH) {\n      throw new VariableError(\n        `Variable value too long: ${value.length} > ${VARIABLE_VALIDATION.MAX_VALUE_LENGTH}`,\n        name,\n        undefined,\n        'VALUE_TOO_LONG'\n      );\n    }\n\n    this.customVariables[name] = value;\n    this.saveToStorage();\n  }\n\n  getVariable(name: string): string | undefined {\n    return this.customVariables[name];\n  }\n\n  deleteVariable(name: string): void {\n    if (this.isPredefinedVariable(name)) {\n      throw new VariableError(","sourceCodeStart":112,"sourceCodeEnd":148,"githubUrl":"https://github.com/linshenkx/prompt-optimizer/blob/3e677b1d9f7e0493c142c175560531e7ae786dce/packages/ui/src/services/VariableManager.ts#L112-L148","documentation":"VariableManager.setVariable throws VariableError with code VALUE_TOO_LONG when the value string exceeds VARIABLE_VALIDATION.MAX_VALUE_LENGTH. This is a guard against unbounded storage growth (values are persisted via saveToStorage, e.g. to localStorage). The error message reports both the actual length and the limit.","triggerScenarios":"Calling setVariable(name, value) with value.length > VARIABLE_VALIDATION.MAX_VALUE_LENGTH. Typical with base64-encoded images, large JSON blobs, or pasted text stored as a variable.","commonSituations":"Storing base64 image data or long documents in a variable; importing variables from a file created under different limits; localStorage quota issues that surface as oversized payloads.","solutions":["Truncate or reject long values client-side before calling setVariable","Store large payloads out-of-band (e.g. an asset/image storage service) and keep only a reference ID in the variable","Check VARIABLE_VALIDATION.MAX_VALUE_LENGTH and surface a form validation message instead of relying on the throw"],"exampleFix":"// before\nvariableManager.setVariable('doc', hugeString)\n\n// after\nif (hugeString.length > VARIABLE_VALIDATION.MAX_VALUE_LENGTH) {\n  throw new Error(`Value exceeds ${VARIABLE_VALIDATION.MAX_VALUE_LENGTH} chars`)\n}\nvariableManager.setVariable('doc', hugeString)","handlingStrategy":"validation","validationCode":"const MAX = VARIABLE_VALIDATION.MAX_VALUE_LENGTH\nif (value.length > MAX) {\n  throw new RangeError(`Value too long: ${value.length} > ${MAX}`)\n}","typeGuard":"const fitsVariableLimit = (value: string): boolean =>\n  value.length <= VARIABLE_VALIDATION.MAX_VALUE_LENGTH","tryCatchPattern":"try {\n  vm.setVariable(name, value)\n} catch (e) {\n  if (e instanceof VariableError && e.code === 'VALUE_TOO_LONG') {\n    value = value.slice(0, VARIABLE_VALIDATION.MAX_VALUE_LENGTH)\n    vm.setVariable(name, value)\n  } else throw e\n}","preventionTips":["Validate textarea/inputs against MAX_VALUE_LENGTH in forms","Keep large binaries out of variables; store references instead"],"tags":["variables","validation","size-limit"],"backgroundTag":"payload-too-large","analyzedSha":"3e677b1d9f7e0493c142c175560531e7ae786dce","analyzedAt":"2026-08-27T21:29:16.709Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}