{"record":{"id":"f16009ec47376de4","repo":"paperclipai/paperclip","slug":"local-plugin-path-does-not-exist-abslocalpath","errorCode":null,"errorMessage":"Local plugin path does not exist: ${absLocalPath}","messagePattern":"Local plugin path does not exist: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/plugin-loader.ts","lineNumber":1213,"sourceCode":"    installOptions: PluginInstallOptions,\n  ): Promise<DiscoveredPlugin> {\n    const { packageName, localPath, version, installDir } = installOptions;\n\n    if (!packageName && !localPath) {\n      throw new Error(\"Either packageName or localPath must be provided\");\n    }\n\n    const targetInstallDir = installDir ?? localPluginDir;\n\n    // Step 1 & 2: Resolve and install package\n    let resolvedPackagePath: string;\n    let resolvedPackageName: string;\n\n    if (localPath) {\n      // Local path install — validate the directory exists\n      const absLocalPath = path.resolve(localPath);\n      if (!existsSync(absLocalPath)) {\n        throw new Error(`Local plugin path does not exist: ${absLocalPath}`);\n      }\n      resolvedPackagePath = absLocalPath;\n      const pkgJson = await readPackageJson(absLocalPath);\n      resolvedPackageName =\n        typeof pkgJson?.[\"name\"] === \"string\"\n          ? pkgJson[\"name\"]\n          : path.basename(absLocalPath);\n\n      log.info(\n        { localPath: absLocalPath, packageName: resolvedPackageName },\n        \"plugin-loader: fetching plugin from local path\",\n      );\n    } else {\n      // npm install\n      const spec = version ? `${packageName}@${version}` : packageName!;\n\n      log.info(\n        { spec, installDir: targetInstallDir },","sourceCodeStart":1195,"sourceCodeEnd":1231,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/plugin-loader.ts#L1195-L1231","documentation":"Thrown during plugin install when localPath was provided: the resolved absolute directory does not exist on disk, so a local plugin install cannot proceed from that path.","triggerScenarios":"Thrown at server/src/services/plugin-loader.ts:1213 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Correct the localPath to an existing directory containing the plugin package; check for typos or an unmounted path."],"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"}