paperclipai/paperclip · error · Error
Expected a JSON object.
Error message
Expected a JSON object.
What it means
asObject checked a successfully parsed JSON value and found it was not a plain object (null, array, or primitive), so it cannot be used as a fields/edits payload.
Solutions
- Pass a JSON object ({...}) rather than an array or scalar.
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at cli/src/commands/pipelines.ts:702 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/5ce5a5fbf29b8fc8.
Report an issue: GitHub.
Appendix: source
Thrown at cli/src/commands/pipelines.ts:702
if (file) return readJsonFile(file);
return undefined;
}
async function readJsonFile(file: string): Promise<unknown> {
return parseJson(await readFile(file, "utf8"));
}
function parseJson(value: string): unknown {
try {
return JSON.parse(value) as unknown;
} catch (error) {
throw new Error(`Invalid JSON: ${error instanceof Error ? error.message : String(error)}`);
}
}
function asObject(value: unknown): JsonObject {
if (!value || typeof value !== "object" || Array.isArray(value)) {
throw new Error("Expected a JSON object.");
}
return value as JsonObject;
}
function asOptionalObject(value: unknown): JsonObject | undefined {
return value && typeof value === "object" && !Array.isArray(value) ? value as JsonObject : undefined;
}
function parsePositiveInt(value: string, label: string): number {
const parsed = Number(value);
if (!Number.isInteger(parsed) || parsed <= 0) throw new Error(`Invalid ${label}: ${value}`);
return parsed;
}
function parseCsv(value: string): string[] {
return value.split(",").map((item) => item.trim()).filter(Boolean);
}
View on GitHub (pinned to 120ae5428f)