earendil-works/pi · error · SessionError
storage
storage
Error message
Invalid SQLite session ${sessionId}: metadata is not valid JSON What it means
Error "Invalid SQLite session ${sessionId}: metadata is not valid JSON" thrown in earendil-works/pi.
Source
Thrown at packages/session-backends/sqlite-node/src/sqlite/storage/sessions.ts:29
has_session_name: number;
session_name: string | null;
}
export interface NewSessionRow {
id: string;
createdAt: number;
cwd: string;
parentSessionId?: string;
metadata?: Record<string, unknown>;
}
function parseMetadata(metadata: string | null, sessionId: string): Record<string, unknown> | undefined {
if (metadata === null) return undefined;
let parsed: unknown;
try {
parsed = JSON.parse(metadata);
} catch (error) {
throw new SessionError(
"storage",
`Invalid SQLite session ${sessionId}: metadata is not valid JSON`,
error instanceof Error ? error : undefined,
);
}
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
throw new SessionError("storage", `Invalid SQLite session ${sessionId}: metadata must be an object`);
}
return parsed as Record<string, unknown>;
}
export function sessionExists(db: SqliteDatabase, sessionId: string) {
return !!sql`SELECT 1 AS found FROM sessions WHERE id = ${sessionId}`.get<{ found: number }>(db);
}
function serializeMetadata(metadata: Record<string, unknown> | undefined): string | null {
if (metadata === undefined) return null;
if (typeof metadata !== "object" || metadata === null || Array.isArray(metadata)) {View on GitHub (pinned to 4af9d21d3b)
Solutions
- The session metadata is not valid JSON; fix or reset the stored metadata.
When it happens
Trigger: Thrown at packages/session-backends/sqlite-node/src/sqlite/storage/sessions.ts:29 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/5dcc703d61568093.
Report an issue: GitHub.