{"record":{"id":"3c8fc3641afe39cb","repo":"paperclipai/paperclip","slug":"failed-to-resolve-config-schema-message","errorCode":null,"errorMessage":"Failed to resolve config schema: ${message}","messagePattern":"Failed to resolve config schema: (.+?)","errorType":"http","errorClass":null,"httpStatus":500,"severity":"error","filePath":"server/src/routes/adapters.ts","lineNumber":750,"sourceCode":"      return;\n    }\n    if (!adapter.getConfigSchema) {\n      res.status(404).json({ error: `Adapter \"${type}\" does not provide a config schema.` });\n      return;\n    }\n\n    const cached = configSchemaCache.get(type);\n    if (cached && cached.adapter === adapter && Date.now() - cached.fetchedAt < CONFIG_SCHEMA_TTL_MS) {\n      res.json(cached.schema);\n      return;\n    }\n\n    try {\n      const schema = await adapter.getConfigSchema();\n      configSchemaCache.set(type, { adapter, schema, fetchedAt: Date.now() });\n      res.json(schema);\n    } catch (err) {\n      const message = err instanceof Error ? err.message : String(err);\n      logger.error({ err, type }, \"Failed to resolve config schema\");\n      res.status(500).json({ error: `Failed to resolve config schema: ${message}` });\n    }\n  });\n\n  // ── GET /api/adapters/:type/ui-parser.js ─────────────────────────────────\n  // Serve the self-contained UI parser JS for an adapter type.\n  // This allows external adapters to provide custom run-log parsing\n  // without modifying Paperclip's source code.\n  //\n  // The adapter package must export a \"./ui-parser\" entry in package.json\n  // pointing to a self-contained ESM module with zero runtime dependencies.\n  router.get(\"/adapters/:type/ui-parser.js\", (req, res) => {\n    // UI parsers are read-only assets for displaying existing run output.\n    // Runtime-changing adapter management routes above require instance admin.\n    assertBoardOrgAccess(req);\n    const { type } = req.params;\n    const source = getOrExtractUiParserSource(type);","sourceCodeStart":732,"sourceCodeEnd":768,"githubUrl":"https://github.com/paperclipai/paperclip/blob/5716fe907e596ce73501408fc6efdb19fb61edf2/server/src/routes/adapters.ts#L732-L768","documentation":"Wrapped failure in the config-schema route's catch block: the adapter's getConfigSchema() threw (dynamic schema resolution hit an error), so the cached entry is not written and the failure is returned as a 500 with the underlying message.","triggerScenarios":"Thrown at server/src/routes/adapters.ts:692 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Read the failure message, fix the adapter's schema export, and retry resolving the schema."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"5716fe907e596ce73501408fc6efdb19fb61edf2","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}