{"record":{"id":"2bc1dcbb8053358e","repo":"LykosAI/StabilityMatrix","slug":"prompt-extensions-not-installed","errorCode":null,"errorMessage":"Prompt extensions not installed","messagePattern":"Prompt extensions not installed","errorType":"validation","errorClass":"ValidationException","httpStatus":null,"severity":"error","filePath":"StabilityMatrix.Avalonia/ViewModels/Base/InferenceGenerationViewModelBase.cs","lineNumber":297,"sourceCode":"        var client = args.Client;\n        var nodes = args.Nodes;\n\n        // Checks\n        if (args.Parameters is null)\n            throw new InvalidOperationException(\"Parameters is null\");\n        if (args.Project is null)\n            throw new InvalidOperationException(\"Project is null\");\n        if (args.OutputNodeNames.Count == 0)\n            throw new InvalidOperationException(\"OutputNodeNames is empty\");\n        if (client.OutputImagesDir is null)\n            throw new InvalidOperationException(\"OutputImagesDir is null\");\n\n        // Only check extensions for first batch index\n        if (args.BatchIndex == 0)\n        {\n            if (!await CheckPromptExtensionsInstalled(args.Nodes))\n            {\n                throw new ValidationException(\"Prompt extensions not installed\");\n            }\n        }\n\n        // Upload input images\n        await UploadInputImages(client);\n\n        // Upload required files\n        await UploadPromptFiles(args.FilesToTransfer, client);\n\n        // Connect preview image handler\n        client.PreviewImageReceived += OnPreviewImageReceived;\n\n        // Register to interrupt if user cancels\n        var promptInterrupt = cancellationToken.Register(() =>\n        {\n            Logger.Info(\"Cancelling prompt\");\n            client\n                .InterruptPromptAsync(new CancellationTokenSource(5000).Token)","sourceCodeStart":279,"sourceCodeEnd":315,"githubUrl":"https://github.com/LykosAI/StabilityMatrix/blob/af93d6ef57c01cd890d7e0ad0a9ea8c9fcda3002/StabilityMatrix.Avalonia/ViewModels/Base/InferenceGenerationViewModelBase.cs#L279-L315","documentation":"RunGeneration validates, for the first batch (BatchIndex == 0), that all required prompt extensions (e.g. custom nodes needed by the built node graph) are installed on the connected backend via CheckPromptExtensionsInstalled. If any are missing it throws ValidationException('Prompt extensions not installed') to stop the run early rather than failing server-side.","triggerScenarios":"Submitting a generation whose node graph references extension nodes (custom nodes) that are not installed on the connected ComfyUI instance — e.g. missing extensions for ControlNet, IPAdapter, or other third-party nodes the template requires.","commonSituations":"Fresh ComfyUI install without custom nodes; switching to a different backend checkpoint/server that lacks the extensions; shared workflows/templates authored with extensions the local install never added; extension update/checkpoint mismatch after a version change.","solutions":["Install the required prompt extensions (ComfyUI custom nodes) the workflow depends on, then retry.","Use the app's extension manager (CheckpointManager/extension installer) to add the missing node packs reported by the validation.","Pick a generation template/workflow that only uses built-in nodes if you cannot install extensions.","Run CheckPromptExtensionsInstalled on the built nodes before invoking generation and surface a friendly install prompt."],"exampleFix":"// before\nawait RunGeneration(args); // ValidationException at runtime\n// after\nif (!await CheckPromptExtensionsInstalled(args.Nodes))\n{\n    await Dialogs.ShowExtensionsInstallDialog();\n    return;\n}\nawait RunGeneration(args);","handlingStrategy":"validation","validationCode":"if (!await CheckPromptExtensionsInstalled(args.Nodes))\n{\n    await ShowMissingExtensionsDialog();\n    return;\n}","typeGuard":null,"tryCatchPattern":"try { await RunGeneration(args); }\ncatch (ValidationException ex) { Dialogs.ShowDialog(\"Missing extensions\", ex.Message); }","preventionTips":["Install all custom nodes an imported workflow/template requires before running it.","Run the extension check (CheckPromptExtensionsInstalled) before dispatching generation.","Keep ComfyUI extension packs updated and consistent across checkpoints/servers."],"tags":["validation","extensions","inference","comfyui"],"backgroundTag":"missing-dependency","analyzedSha":"af93d6ef57c01cd890d7e0ad0a9ea8c9fcda3002","analyzedAt":"2026-09-12T19:02:43.389Z","contentChangedAt":"2026-09-12T19:02:43.389Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}