{"record":{"id":"832c93948dae3c81","repo":"paperclipai/paperclip","slug":"plugin-manifest-id-manifest-has-inconsistent-ca","errorCode":null,"errorMessage":"Plugin ${manifest.id} manifest has inconsistent capabilities. Missing required capabilities for declared features: ${capResult.missing.join(\", \")}","messagePattern":"Plugin (.+?) manifest has inconsistent capabilities\\. Missing required capabilities for declared features: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/plugin-loader.ts","lineNumber":1299,"sourceCode":"      throw new Error(\n        `Package ${resolvedPackageName} at ${resolvedPackagePath} does not appear to be a Paperclip plugin (no manifest found).${manualBuildHint}`,\n      );\n    }\n\n    const manifest = await loadManifestFromPath(manifestPath);\n\n    // Step 4: Reject incompatible plugin API versions\n    if (!manifestValidator.getSupportedVersions().includes(manifest.apiVersion)) {\n      throw new Error(\n        `Plugin ${manifest.id} declares apiVersion ${manifest.apiVersion} which is not supported by this host. ` +\n          `Supported versions: ${manifestValidator.getSupportedVersions().join(\", \")}`,\n      );\n    }\n\n    // Step 5: Validate manifest capabilities are consistent\n    const capResult = capabilityValidator.validateManifestCapabilities(manifest);\n    if (!capResult.allowed) {\n      throw new Error(\n        `Plugin ${manifest.id} manifest has inconsistent capabilities. ` +\n          `Missing required capabilities for declared features: ${capResult.missing.join(\", \")}`,\n      );\n    }\n\n    await assertPageRoutePathsAvailable(manifest);\n\n    // Step 6: Reject plugins that require a newer host than the running server\n    const minimumHostVersion = getMinimumHostVersion(manifest);\n    if (minimumHostVersion && hostVersion) {\n      if (compareSemver(hostVersion, minimumHostVersion) < 0) {\n        throw new Error(\n          `Plugin ${manifest.id} requires host version ${minimumHostVersion} or newer, ` +\n            `but this server is running ${hostVersion}`,\n        );\n      }\n    }\n","sourceCodeStart":1281,"sourceCodeEnd":1317,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/plugin-loader.ts#L1281-L1317","documentation":"Capability consistency check in fetchAndValidate: the manifest declares features whose required capabilities are absent (capabilityValidator returned allowed=false with a missing list). Prevents plugins that would silently under-function or mislead users; the inconsistent manifest is at fault.","triggerScenarios":"Thrown at server/src/services/plugin-loader.ts:1299 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add the missing capabilities listed in the error to the plugin manifest, or remove the features that require them."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}