{"record":{"id":"8f89fd0de618a5ec","repo":"paperclipai/paperclip","slug":"no-ui-parser-available-for-adapter-type","errorCode":null,"errorMessage":"No UI parser available for adapter \"${type}\".","messagePattern":"No UI parser available for adapter \"(.+?)\"\\.","errorType":"http","errorClass":null,"httpStatus":404,"severity":"error","filePath":"server/src/routes/adapters.ts","lineNumber":768,"sourceCode":"      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);\n    if (!source) {\n      res.status(404).json({ error: `No UI parser available for adapter \"${type}\".` });\n      return;\n    }\n    res.type(\"application/javascript\").send(source);\n  });\n\n  return router;\n}\n","sourceCodeStart":750,"sourceCodeEnd":778,"githubUrl":"https://github.com/paperclipai/paperclip/blob/5716fe907e596ce73501408fc6efdb19fb61edf2/server/src/routes/adapters.ts#L750-L778","documentation":"Capability guard on GET /api/adapters/:type/ui-parser.js: the adapter package does not export a usable self-contained UI parser module, so there is no custom run-log parsing script to serve and the route reports the absence instead of serving a stub.","triggerScenarios":"Thrown at server/src/routes/adapters.ts:710 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The adapter has no UI parser; use its CLI/config files, or choose an adapter that provides a UI parser."],"exampleFix":null,"handlingStrategy":"validation","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-14T00:17:10.932Z"}