{"record":{"id":"81d3a5583f6bce0c","repo":"nikivdev/code","slug":"ai-server-model-not-set-and-no-models-returned-se","errorCode":null,"errorMessage":"AI_SERVER_MODEL not set and no models returned. Set it with: f env set --personal AI_SERVER_MODEL=<model>","messagePattern":"AI_SERVER_MODEL not set and no models returned\\. Set it with: f env set --personal AI_SERVER_MODEL=<model>","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/ai_server.rs","lineNumber":251,"sourceCode":"        bail!(\n            \"AI_SERVER_MODEL not set and /v1/models failed with status {}. Set it with: f env set --personal AI_SERVER_MODEL=<model>\",\n            resp.status()\n        );\n    }\n\n    let text_body = resp.text().context(\"failed to read models response\")?;\n    let parsed: ModelsResponse =\n        serde_json::from_str(&text_body).context(\"failed to parse models response\")?;\n\n    let model = parsed\n        .data\n        .into_iter()\n        .find(|m| !m.id.trim().is_empty())\n        .map(|m| m.id)\n        .unwrap_or_default();\n\n    if model.trim().is_empty() {\n        bail!(\n            \"AI_SERVER_MODEL not set and no models returned. Set it with: f env set --personal AI_SERVER_MODEL=<model>\"\n        );\n    }\n\n    Ok(model)\n}\n\nfn base_ai_url(url: &str) -> String {\n    let trimmed = url.trim_end_matches('/');\n    if let Some(idx) = trimmed.find(\"/v1/\") {\n        return trimmed[..idx].to_string();\n    }\n    trimmed.to_string()\n}\n","sourceCodeStart":233,"sourceCodeEnd":266,"githubUrl":"https://github.com/nikivdev/code/blob/a747e741ae92c09071d0ae946ab48488adcff1ce/src/ai_server.rs#L233-L266","documentation":"Error \"AI_SERVER_MODEL not set and no models returned. Set it with: f env set --personal AI_SERVER_MODEL=<model>\" thrown in nikivdev/code.","triggerScenarios":"Thrown at src/ai_server.rs:251 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"}