{"record":{"id":"ec3542701948bde7","repo":"zed-industries/zed","slug":"cannot-format-prompt-for","errorCode":null,"errorMessage":"Cannot format prompt for {:?}","messagePattern":"Cannot format prompt for (.+?)","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/edit_prediction_cli/src/format_prompt.rs","lineNumber":137,"sourceCode":"                        expected_cursor_offset,\n                    )\n                    .ok()\n                });\n\n            let rejected_output = example.spec.rejected_patch.as_ref().and_then(|patch| {\n                format_expected_output(prompt_inputs, zeta_format, patch, None).ok()\n            });\n\n            example.prompt = prompt.map(|prompt| ExamplePrompt {\n                input: prompt,\n                expected_output,\n                rejected_output,\n                provider: args.provider,\n                prefill: Some(prefill),\n            });\n        }\n        _ => {\n            panic!(\"Cannot format prompt for {:?}\", args.provider);\n        }\n    };\n    Ok(())\n}\n\npub struct TeacherPrompt;\n\nimpl TeacherPrompt {\n    pub(crate) const EDITABLE_REGION_START: &str = \"<|editable_region_start|>\\n\";\n    pub(crate) const EDITABLE_REGION_END: &str = \"\\n<|editable_region_end|>\";\n    pub(crate) const USER_CURSOR_MARKER: &str = \"<|user_cursor|>\";\n    pub(crate) const NO_EDITS: &str = \"NO_EDITS\";\n\n    /// Truncate edit history to this number of last lines\n    const MAX_HISTORY_LINES: usize = 128;\n\n    pub fn format_prompt(\n        example: &Example,","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/zed-industries/zed/blob/f4178619acd0d47ea1f76a2025c42962c6d6638c/crates/edit_prediction_cli/src/format_prompt.rs#L119-L155","documentation":"format_prompt_for_example matches on the requested PredictionProvider to pick a prompt formatter. Teacher/TeacherNonBatching, TeacherJumps/TeacherJumpsNonBatching, and Zeta2 have formatting paths; every other variant (the client-side inference providers) has no prompt format defined, so the `_` arm panics with the provider value. It is an explicit unsupported-provider assertion, not a runtime failure.","triggerScenarios":"Running the format-prompt step with a provider flag that only supports inference (e.g. the zeta client provider) instead of teacher/teacher-jumps/zeta2 variants; or adding a new PredictionProvider variant without extending this match.","commonSituations":"Copying a `--provider` value from another subcommand that accepts inference providers; introducing a new provider enum variant and forgetting format_prompt.rs.","solutions":["Use a provider that supports formatting: teacher, teacher-non-batching, teacher-jumps, teacher-jumps-non-batching, or zeta2","If you added a new PredictionProvider variant, implement a formatting arm in the match at crates/edit_prediction_cli/src/format_prompt.rs:68","Preferably return an anyhow error (`bail!`) for unsupported providers instead of panicking so the CLI reports it cleanly"],"exampleFix":"// before\nlet args = FormatPromptArgs { provider: PredictionProvider::Zeta(..), .. }; // panic: Cannot format prompt\n\n// after\nlet args = FormatPromptArgs { provider: PredictionProvider::Zeta2(..), .. };","handlingStrategy":"validation","validationCode":"let supports_formatting = matches!(\n    args.provider,\n    PredictionProvider::Teacher(..)\n        | PredictionProvider::TeacherNonBatching(..)\n        | PredictionProvider::TeacherJumps(..)\n        | PredictionProvider::TeacherJumpsNonBatching(..)\n        | PredictionProvider::Zeta2(..)\n);\nanyhow::ensure!(supports_formatting, \"provider does not support formatting: {:?}\", args.provider);","typeGuard":"fn supports_prompt_formatting(provider: &PredictionProvider) -> bool {\n    matches!(\n        provider,\n        PredictionProvider::Teacher(..)\n            | PredictionProvider::TeacherNonBatching(..)\n            | PredictionProvider::TeacherJumps(..)\n            | PredictionProvider::TeacherJumpsNonBatching(..)\n            | PredictionProvider::Zeta2(..)\n    )\n}","tryCatchPattern":null,"preventionTips":["When adding a PredictionProvider variant, extend the match in format_prompt.rs in the same change","Prefer returning anyhow errors for unsupported combinations instead of panics in CLI paths","Document which subcommands accept which providers"],"tags":["edit-prediction-cli","provider","panic","unsupported-operation"],"backgroundTag":"unsupported-provider","analyzedSha":"f4178619acd0d47ea1f76a2025c42962c6d6638c","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}