paperclipai/paperclip · error

Package "${packageName}" does not export createServerAdapter

Error message

Package "${packageName}" does not export createServerAdapter(). Ensure the package's main entry exports a createServerAdapter function.

What it means

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.

Source

Thrown at server/src/adapters/plugin-loader.ts:153

      { packageName, uiParserFile, size: source.length },
      `Loaded UI parser from adapter package${contractVersion ? "" : " (no version declared)"}`,
    );
    return source;
  } catch (err) {
    logger.warn({ err, packageName, uiParserFile }, "Failed to read UI parser from adapter package");
    return undefined;
  }
}

// ---------------------------------------------------------------------------
// Load / reload
// ---------------------------------------------------------------------------

export function validateAdapterModule(mod: unknown, packageName: string): ServerAdapterModule {
  const m = mod as Record<string, unknown>;
  const createServerAdapter = m.createServerAdapter;
  if (typeof createServerAdapter !== "function") {
    throw new Error(
      `Package "${packageName}" does not export createServerAdapter(). ` +
      `Ensure the package's main entry exports a createServerAdapter function.`,
    );
  }

  const adapterModule = createServerAdapter() as ServerAdapterModule;
  if (!adapterModule || !adapterModule.type) {
    throw new Error(
      `createServerAdapter() from "${packageName}" returned an invalid module (missing "type").`,
    );
  }

  // Fail closed on a malformed login capability. The validator throws a clear
  // error, so the loader rejects the adapter instead of loading it with a
  // partial capability.
  try {
    validateAdapterLoginCapability(adapterModule);
  } catch (err) {

View on GitHub (pinned to a7e689b3c3)

Solutions

  1. Export a createServerAdapter function from the package's main entry point.
  2. Verify the installed plugin package version matches the expected adapter contract.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at server/src/adapters/plugin-loader.ts:152 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18). Data as JSON: /api/errors/2ea3620bb2245bc3. Report an issue: GitHub.