{"record":{"id":"04ab0a955cc631ea","repo":"nikivdev/code","slug":"ai-server-returned-status","errorCode":null,"errorMessage":"AI server returned status {}: {}","messagePattern":"AI server returned status (.+?): (.+?)","errorType":"http","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/ai_server.rs","lineNumber":128,"sourceCode":"                }\n                return Err(err);\n            }\n        };\n\n        if !resp.status().is_success() {\n            let status = resp.status();\n            let body = resp.text().unwrap_or_default();\n            let retryable_status = status.is_server_error() || status.as_u16() == 429;\n            if retryable_status && attempt < MAX_RETRIES {\n                thread::sleep(Duration::from_millis(300 * attempt as u64));\n                last_error = Some(anyhow::anyhow!(\n                    \"AI server returned retryable status {}: {}\",\n                    status,\n                    body\n                ));\n                continue;\n            }\n            bail!(\"AI server returned status {}: {}\", status, body);\n        }\n\n        let text_body = resp.text().context(\"failed to read AI server response\")?;\n        let parsed: ChatResponse =\n            serde_json::from_str(&text_body).context(\"failed to parse AI server response\")?;\n\n        let text = parsed\n            .choices\n            .first()\n            .and_then(|c| {\n                c.message\n                    .as_ref()\n                    .map(|m| m.content.clone())\n                    .or(c.text.clone())\n            })\n            .map(|t| t.trim().to_string())\n            .unwrap_or_default();\n","sourceCodeStart":110,"sourceCodeEnd":146,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/ai_server.rs#L110-L146","documentation":"Error \"AI server returned status {}: {}\" thrown in nikivdev/code.","triggerScenarios":"Thrown at src/ai_server.rs:128 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a747e741ae92c09071d0ae946ab48488adcff1ce","analyzedAt":"2026-09-01T22:43:55.719Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}