{"record":{"id":"2ea3620bb2245bc3","repo":"paperclipai/paperclip","slug":"package-packagename-does-not-export-createser","errorCode":null,"errorMessage":"Package \"${packageName}\" does not export createServerAdapter(). Ensure the package's main entry exports a createServerAdapter function.","messagePattern":"Package \"(.+?)\" does not export createServerAdapter\\(\\)\\. Ensure the package's main entry exports a createServerAdapter function\\.","errorType":"exception","errorClass":null,"httpStatus":500,"severity":"error","filePath":"server/src/adapters/plugin-loader.ts","lineNumber":153,"sourceCode":"      { packageName, uiParserFile, size: source.length },\n      `Loaded UI parser from adapter package${contractVersion ? \"\" : \" (no version declared)\"}`,\n    );\n    return source;\n  } catch (err) {\n    logger.warn({ err, packageName, uiParserFile }, \"Failed to read UI parser from adapter package\");\n    return undefined;\n  }\n}\n\n// ---------------------------------------------------------------------------\n// Load / reload\n// ---------------------------------------------------------------------------\n\nexport function validateAdapterModule(mod: unknown, packageName: string): ServerAdapterModule {\n  const m = mod as Record<string, unknown>;\n  const createServerAdapter = m.createServerAdapter;\n  if (typeof createServerAdapter !== \"function\") {\n    throw new Error(\n      `Package \"${packageName}\" does not export createServerAdapter(). ` +\n      `Ensure the package's main entry exports a createServerAdapter function.`,\n    );\n  }\n\n  const adapterModule = createServerAdapter() as ServerAdapterModule;\n  if (!adapterModule || !adapterModule.type) {\n    throw new Error(\n      `createServerAdapter() from \"${packageName}\" returned an invalid module (missing \"type\").`,\n    );\n  }\n\n  // Fail closed on a malformed login capability. The validator throws a clear\n  // error, so the loader rejects the adapter instead of loading it with a\n  // partial capability.\n  try {\n    validateAdapterLoginCapability(adapterModule);\n  } catch (err) {","sourceCodeStart":135,"sourceCodeEnd":171,"githubUrl":"https://github.com/paperclipai/paperclip/blob/a7e689b3c35347b529cb9f54c9b9a8575a3dcab6/server/src/adapters/plugin-loader.ts#L135-L171","documentation":"Contract check in validateAdapterModule: the loaded adapter package's main entry does not export a createServerAdapter function. The plugin/adapter loader requires this exact factory as the server-adapter entry point, so a package missing (or renaming) that export fails validation and the adapter is not registered — check the package's exports/main field.","triggerScenarios":"Thrown at server/src/adapters/plugin-loader.ts:152 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Export a createServerAdapter function from the package's main entry point.","Verify the installed plugin package version matches the expected adapter contract."],"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"}