{"record":{"id":"7624dbb0df799251","repo":"zed-industries/zed","slug":"from-extension-version","errorCode":null,"errorMessage":"from extension \\\"{}\\\" version {}: {}","messagePattern":"from extension \\\\\"(.+?)\\\\\" version (.+?): (.+?)","errorType":"exception","errorClass":"anyhow::Error","httpStatus":null,"severity":"error","filePath":"crates/extension_host/src/wasm_host.rs","lineNumber":978,"sourceCode":"            }))\n            .unwrap_or_else(|_| {\n                panic!(\n                    \"main thread message channel should not be closed yet, extension {} (id {})\",\n                    self.manifest.name, self.manifest.id,\n                )\n            });\n        let name = self.manifest.name.clone();\n        let id = self.manifest.id.clone();\n        async move {\n            return_rx.await.unwrap_or_else(|_| {\n                panic!(\"main thread message channel, extension {name} (id {id})\")\n            })\n        }\n    }\n\n    fn work_dir(&self) -> PathBuf {\n        self.host.work_dir.join(self.manifest.id.as_ref())\n    }\n\n    fn extension_error(&self, message: String) -> anyhow::Error {\n        anyhow!(\n            \"from extension \\\"{}\\\" version {}: {}\",\n            self.manifest.name,\n            self.manifest.version,\n            message\n        )\n    }\n}\n\nimpl wasmtime::component::HasData for WasmState {\n    type Data<'a> = &'a mut WasmState;\n}\n\nimpl WasiView for WasmState {\n    fn ctx(&mut self) -> WasiCtxView<'_> {\n        WasiCtxView {","sourceCodeStart":960,"sourceCodeEnd":996,"githubUrl":"https://github.com/zed-industries/zed/blob/5a9b9558db01a6b906cec2fb70a797affdc58cdd/crates/extension_host/src/wasm_host.rs#L960-L996","documentation":"This is the extension_error formatting helper pattern: it wraps an error originating inside a wasm extension with context 'from extension \\\"{name}\\\" version {version}: {inner}'. The message is a context wrapper, not a distinct failure — the actual cause is the inner error produced by the extension's own code (e.g. an npm install/version lookup failure), attributed here so users know which extension is at fault.","triggerScenarios":"Thrown at crates/extension_host/src/wasm_host.rs:941 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Surface the full formatted string including extension name, version, and inner error to the user or logs — the root cause is the inner '{}` error","Reproduce with the extension's logs enabled to identify which extension API call failed","Update or disable the offending extension if the error persists"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5a9b9558db01a6b906cec2fb70a797affdc58cdd","analyzedAt":"2026-08-20T19:29:52.058Z","contentChangedAt":"2026-08-20T19:29:52.058Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}