{"record":{"id":"d5baeb9aae0859c1","repo":"paperclipai/paperclip","slug":"plugin-not-found-d5baeb","errorCode":null,"errorMessage":"Plugin not found","messagePattern":"Plugin not found","errorType":"http","errorClass":null,"httpStatus":404,"severity":"error","filePath":"server/src/routes/plugins.ts","lineNumber":1411,"sourceCode":"   * - 502 if the worker is unavailable or returns an error\n   *\n   * @see PLUGIN_SPEC.md §13.8 — `getData`\n   * @see PLUGIN_SPEC.md §19.7 — Error Propagation Through The Bridge\n   */\n  router.post(\"/plugins/:pluginId/bridge/data\", async (req, res) => {\n    assertBoardOrgAccess(req);\n\n    if (!bridgeDeps) {\n      res.status(501).json({ error: \"Plugin bridge is not enabled\" });\n      return;\n    }\n\n    const { pluginId } = req.params;\n\n    // Resolve plugin\n    const plugin = await resolvePlugin(registry, pluginId);\n    if (!plugin) {\n      res.status(404).json({ error: \"Plugin not found\" });\n      return;\n    }\n\n    // Validate plugin is in ready state\n    if (plugin.status !== \"ready\") {\n      const bridgeError: PluginBridgeErrorResponse = {\n        code: \"WORKER_UNAVAILABLE\",\n        message: `Plugin is not ready (current status: ${plugin.status})`,\n      };\n      attachPluginBridgeErrorContext(req, res, new Error(bridgeError.message), bridgeError, {\n        pluginId: plugin.id,\n        pluginKey: plugin.pluginKey,\n        bridgeMethod: \"getData\",\n      });\n      res.status(502).json(bridgeError);\n      return;\n    }\n","sourceCodeStart":1393,"sourceCodeEnd":1429,"githubUrl":"https://github.com/paperclipai/paperclip/blob/a7e689b3c35347b529cb9f54c9b9a8575a3dcab6/server/src/routes/plugins.ts#L1393-L1429","documentation":"404 from POST /plugins/:pluginId/bridge/data. Fires when resolvePlugin cannot find a plugin for the given pluginId (unknown id or not accessible), before any bridge call is attempted.","triggerScenarios":"Thrown at server/src/routes/plugins.ts:1395 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the id in the request path or body refers to an existing record in this company; re-list the parent collection to get a valid id.","Check that the record was not deleted or archived, and that the request is scoped to the correct companyId."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a7e689b3c35347b529cb9f54c9b9a8575a3dcab6","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}