{"record":{"id":"42de5e557cf7d747","repo":"sigoden/aichat","slug":"invalid-chunk-size","errorCode":null,"errorMessage":"Invalid chunk_size","messagePattern":"Invalid chunk_size","errorType":"validation","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"src/rag/mod.rs","lineNumber":903,"sourceCode":"    let default_value = model.default_chunk_size().to_string();\n    let help_message = model\n        .max_tokens_per_chunk()\n        .map(|v| format!(\"The model's max_tokens is {v}\"));\n\n    let mut text = Text::new(\"Set chunk size:\")\n        .with_default(&default_value)\n        .with_validator(move |text: &str| {\n            let out = match text.parse::<usize>() {\n                Ok(_) => Validation::Valid,\n                Err(_) => Validation::Invalid(\"Must be a integer\".into()),\n            };\n            Ok(out)\n        });\n    if let Some(help_message) = &help_message {\n        text = text.with_help_message(help_message);\n    }\n    let value = text.prompt()?;\n    value.parse().map_err(|_| anyhow!(\"Invalid chunk_size\"))\n}\n\nfn set_chunk_overlay(default_value: usize) -> Result<usize> {\n    let value = Text::new(\"Set chunk overlay:\")\n        .with_default(&default_value.to_string())\n        .with_validator(move |text: &str| {\n            let out = match text.parse::<usize>() {\n                Ok(_) => Validation::Valid,\n                Err(_) => Validation::Invalid(\"Must be a integer\".into()),\n            };\n            Ok(out)\n        })\n        .prompt()?;\n    value.parse().map_err(|_| anyhow!(\"Invalid chunk_overlay\"))\n}\n\nfn add_documents() -> Result<Vec<String>> {\n    let text = Text::new(\"Add documents:\")","sourceCodeStart":885,"sourceCodeEnd":921,"githubUrl":"https://github.com/sigoden/aichat/blob/82976d349ad97ac9aae0655ad631dace5e2a6385/src/rag/mod.rs#L885-L921","documentation":"In the interactive RAG setup wizard, set_chunk_size prompts the user for a chunk size and parses it as usize. Any non-numeric (or unparsable) input fails validation at parse time with this generic error.","triggerScenarios":"Entering a value that doesn't parse as usize at the 'chunk size' prompt during rag create_config (e.g. '1k', '10.5', '', 'abc').","commonSituations":"Typing suffixed numbers like '512b' or '1k'; pasting values with whitespace/units; accidental non-digit input.","solutions":["Re-run the setup and enter a plain positive integer, e.g. 2000","Use the interactive prompt's validator feedback — input must be an integer","Edit the generated RAG config file directly to set chunk_size numerically"],"exampleFix":"// at the prompt\n// before: chunk size: 2k\n// after:  chunk size: 2000","handlingStrategy":"validation","validationCode":"fn valid_chunk_size(s: &str) -> bool { s.trim().parse::<usize>().is_ok() }","typeGuard":null,"tryCatchPattern":"let cs: usize = prompt_and_parse(\"chunk size\").map_err(|_| {\n    eprintln!(\"Enter a plain positive integer, e.g. 2000\"); retry()\n})?;","preventionTips":["Enter plain integers without units or suffixes","Strip whitespace before submitting prompt input","Prefer editing the config file over interactive entry for scripted setups"],"tags":["cli","input-validation","rag"],"backgroundTag":"invalid-config-value","analyzedSha":"82976d349ad97ac9aae0655ad631dace5e2a6385","analyzedAt":"2026-09-09T18:33:06.139Z","contentChangedAt":"2026-09-09T18:33:06.139Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}