{"record":{"id":"86d28b0f08e30d4d","repo":"paperclipai/paperclip","slug":"teams-catalog-manifest-not-found-checked-catal","errorCode":null,"errorMessage":"Teams catalog manifest not found. Checked: ${catalogPackageRootCandidates.map((root) => path.join(root, \"generated/catalog.json\")).join(\", \")}. Run pnpm --filter @paperclipai/teams-catalog build:manifest.","messagePattern":"Teams catalog manifest not found\\. Checked: (.+?)\\. Run pnpm --filter @paperclipai/teams-catalog build:manifest\\.","errorType":"exception","errorClass":null,"httpStatus":500,"severity":"error","filePath":"server/src/services/teams-catalog.ts","lineNumber":166,"sourceCode":"    path.resolve(process.cwd(), \"packages/teams-catalog\"),\n    path.resolve(serviceDir, \"../../..\", \"packages/teams-catalog\"),\n  ];\n  return Array.from(new Set(candidates));\n}\n\nasync function statCatalogManifest() {\n  for (const candidateRoot of catalogPackageRootCandidates) {\n    const candidateManifestPath = path.join(candidateRoot, \"generated/catalog.json\");\n    try {\n      const stats = await fs.stat(candidateManifestPath);\n      catalogPackageRoot = candidateRoot;\n      catalogManifestPath = candidateManifestPath;\n      return { stats, manifestPath: candidateManifestPath };\n    } catch {\n      // Try the next known runtime layout before reporting all checked paths.\n    }\n  }\n  throw new Error(\n    `Teams catalog manifest not found. Checked: ${catalogPackageRootCandidates.map((root) => path.join(root, \"generated/catalog.json\")).join(\", \")}. Run pnpm --filter @paperclipai/teams-catalog build:manifest.`,\n  );\n}\n\nasync function getCatalogManifest() {\n  const { stats, manifestPath } = await statCatalogManifest();\n  if (\n    cachedCatalogManifest\n    && cachedCatalogManifest.manifestPath === manifestPath\n    && cachedCatalogManifest.mtimeMs === stats.mtimeMs\n    && cachedCatalogManifest.size === stats.size\n  ) {\n    return cachedCatalogManifest.manifest;\n  }\n\n  const manifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as CatalogManifestFile;\n  cachedCatalogManifest = {\n    manifest,","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/teams-catalog.ts#L148-L184","documentation":"Error \"Teams catalog manifest not found. Checked: ${catalogPackageRootCandidates.map((root) => path.join(root, \"generated/catalog.json\")).join(\", \")}. Run pnpm --filter @paperclipai/teams-catalog build:manifest.\" thrown in paperclipai/paperclip.","triggerScenarios":"Thrown at server/src/services/teams-catalog.ts:166 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Run 'pnpm --filter @paperclipai/teams-catalog build:manifest' from the repo root to generate catalog.json at one of the checked locations, then restart."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}