paperclipai/paperclip · error
Teams catalog manifest not found. Checked: ${catalogPackageR
Error message
Teams catalog manifest not found. Checked: ${catalogPackageRootCandidates.map((root) => path.join(root, "generated/catalog.json")).join(", ")}. Run pnpm --filter @paperclipai/teams-catalog build:manifest. What it means
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.
Source
Thrown at server/src/services/teams-catalog.ts:166
path.resolve(process.cwd(), "packages/teams-catalog"),
path.resolve(serviceDir, "../../..", "packages/teams-catalog"),
];
return Array.from(new Set(candidates));
}
async function statCatalogManifest() {
for (const candidateRoot of catalogPackageRootCandidates) {
const candidateManifestPath = path.join(candidateRoot, "generated/catalog.json");
try {
const stats = await fs.stat(candidateManifestPath);
catalogPackageRoot = candidateRoot;
catalogManifestPath = candidateManifestPath;
return { stats, manifestPath: candidateManifestPath };
} catch {
// Try the next known runtime layout before reporting all checked paths.
}
}
throw new 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.`,
);
}
async function getCatalogManifest() {
const { stats, manifestPath } = await statCatalogManifest();
if (
cachedCatalogManifest
&& cachedCatalogManifest.manifestPath === manifestPath
&& cachedCatalogManifest.mtimeMs === stats.mtimeMs
&& cachedCatalogManifest.size === stats.size
) {
return cachedCatalogManifest.manifest;
}
const manifest = JSON.parse(await fs.readFile(manifestPath, "utf8")) as CatalogManifestFile;
cachedCatalogManifest = {
manifest,View on GitHub (pinned to 120ae5428f)
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.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/services/teams-catalog.ts:166 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@120ae5428f (2026-08-18).
Data as JSON: /api/errors/86d28b0f08e30d4d.
Report an issue: GitHub.