{"record":{"id":"86bf381fb708522b","repo":"paperclipai/paperclip","slug":"plugin-package-plugin-packagename-no-longer-exp","errorCode":null,"errorMessage":"Plugin package ${plugin.packageName} no longer exposes a Paperclip manifest","messagePattern":"Plugin package (.+?) no longer exposes a Paperclip manifest","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/plugin-loader.ts","lineNumber":1374,"sourceCode":"  async function loadManifestFromPackageRoot(\n    packageRoot: string,\n  ): Promise<PaperclipPluginManifestV1 | null> {\n    const pkgJson = await readPackageJson(packageRoot);\n    if (!pkgJson) return null;\n\n    const manifestPath = resolveManifestPath(packageRoot, pkgJson);\n    if (!manifestPath || !existsSync(manifestPath)) return null;\n\n    return loadManifestFromPath(manifestPath);\n  }\n\n  async function refreshPluginManifestFromPackage(\n    plugin: PluginRecord,\n    packageRoot: string,\n  ): Promise<PluginRecord> {\n    const manifest = await loadManifestFromPackageRoot(packageRoot);\n    if (!manifest) {\n      throw new Error(`Plugin package ${plugin.packageName} no longer exposes a Paperclip manifest`);\n    }\n    if (manifest.id !== plugin.pluginKey) {\n      throw new Error(\n        `Plugin manifest ID '${manifest.id}' does not match installed plugin '${plugin.pluginKey}'`,\n      );\n    }\n\n    if (JSON.stringify(manifest) === JSON.stringify(plugin.manifestJson)) {\n      return plugin;\n    }\n\n    await registry.update(plugin.id, {\n      packageName: plugin.packageName,\n      version: manifest.version,\n      manifest,\n    });\n\n    return {","sourceCodeStart":1356,"sourceCodeEnd":1392,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/plugin-loader.ts#L1356-L1392","documentation":"Refresh guard in refreshPluginManifestFromPackage: the installed package on disk no longer resolves to a Paperclip manifest (package replaced, downgraded, or build output removed), so the stored manifest cannot be refreshed; the mutated package contents are at fault.","triggerScenarios":"Thrown at server/src/services/plugin-loader.ts:1374 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The installed package no longer exports a Paperclip manifest. Reinstall a version that includes the manifest, or rebuild the plugin package."],"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"}