{"record":{"id":"f37dc9b58134a2d3","repo":"rohitg00/agentmemory","slug":"envname-must-be-a-positive-integer-got-over","errorCode":null,"errorMessage":"${envName} must be a positive integer, got: ${override}","messagePattern":"(.+?) must be a positive integer, got: (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/providers/embedding/_dimensions.ts","lineNumber":39,"sourceCode":"const DEFAULT_DIMENSIONS = 1536;\n\nfunction lookupModelDimensions(model: string): number | undefined {\n  if (model in MODEL_DIMENSIONS) return MODEL_DIMENSIONS[model];\n  const slash = model.indexOf(\"/\");\n  if (slash === -1) return undefined;\n  const bare = model.slice(slash + 1);\n  return MODEL_DIMENSIONS[bare];\n}\n\nexport function resolveDimensions(\n  model: string,\n  override: string | undefined,\n  envName: string,\n): number {\n  if (override !== undefined && override.trim().length > 0) {\n    const parsed = parseInt(override, 10);\n    if (!Number.isFinite(parsed) || parsed <= 0) {\n      throw new Error(\n        `${envName} must be a positive integer, got: ${override}`,\n      );\n    }\n    return parsed;\n  }\n  return lookupModelDimensions(model) ?? DEFAULT_DIMENSIONS;\n}\n\nexport { MODEL_DIMENSIONS, DEFAULT_DIMENSIONS };\n","sourceCodeStart":21,"sourceCodeEnd":49,"githubUrl":"https://github.com/rohitg00/agentmemory/blob/e04ba88819c365c9acf9d6661ea802143e728bd6/src/providers/embedding/_dimensions.ts#L21-L49","documentation":"`resolveDimensions` in src/providers/embedding/_dimensions.ts parses an environment-variable override for the embedding vector size and throws when the value is non-numeric or <= 0. Without a valid override it falls back to model-specific lookup or DEFAULT_DIMENSIONS, so this error only fires when an override is present but invalid.","triggerScenarios":"Constructing any embedding provider whose dimensions override is read from an env var (the envName in the message) when that variable is set to e.g. \"abc\", \"\", whitespace is skipped but \"0\", \"-768\", \"3.5\", or \"1e3\" — anything parseInt can't turn into a positive integer.","commonSituations":"Typo like `EMBEDDING_DIMENSIONS=768px`; shell exported an empty-ish or zero value; copying a float like `1024.0` from docs; CI secrets set to placeholder text like `changeme`; confusing dimensions with tokens/API key in the env config.","solutions":["Set the env var to a plain positive integer, e.g. `EMBEDDING_DIMENSIONS=1024`.","Unset the variable entirely so resolveDimensions uses the model's known dimensions or DEFAULT_DIMENSIONS.","Check for stray characters: no units (px), decimals (1024.0), exponents (1e3), quotes, or trailing spaces are accepted by parseInt-based parsing.","Verify in the error message which env name (envName) is offending, and fix that specific variable in your shell profile/.env."],"exampleFix":"// before\nprocess.env.EMBEDDING_DIMENSIONS = \"1024.0\"; // throws\n// after\nprocess.env.EMBEDDING_DIMENSIONS = \"1024\";\n// or simply delete the override:\ndelete process.env.EMBEDDING_DIMENSIONS;","handlingStrategy":"validation","validationCode":"function validateDimensionsEnv(name: string): number | undefined {\n  const raw = process.env[name];\n  if (raw === undefined || raw.trim() === \"\") return undefined;\n  const n = Number(raw);\n  if (!Number.isInteger(n) || n <= 0) throw new Error(`${name} must be a positive integer, got: ${raw}`);\n  return n;\n}\nvalidateDimensionsEnv(\"EMBEDDING_DIMENSIONS\"); // run before constructing providers","typeGuard":"function isPositiveIntString(v: string): boolean {\n  return /^\\d+$/.test(v.trim()) && parseInt(v, 10) > 0;\n}","tryCatchPattern":"try {\n  provider = createEmbeddingProvider();\n} catch (e) {\n  if (e instanceof Error && e.message.includes(\"must be a positive integer\")) {\n    console.warn(\"Bad dimensions override; falling back to model defaults\");\n    delete process.env.EMBEDDING_DIMENSIONS;\n    provider = createEmbeddingProvider();\n  } else throw e;\n}","preventionTips":["Document the exact env names and formats (plain positive integers) in your .env.example.","Add a config validation step at process startup that parses every numeric env var once.","Never include units, decimals, or quotes in integer env values.","Prefer omitting the override and letting the provider use known model dimensions."],"tags":["configuration","env-var","validation","embeddings"],"backgroundTag":"invalid-env-var-value","analyzedSha":"e04ba88819c365c9acf9d6661ea802143e728bd6","analyzedAt":"2026-08-30T01:07:40.754Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}