36699531cf
Aligns with CC2 enforcement: ESLint + Prettier + noImplicitAny now enforced. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
24 lines
956 B
TypeScript
24 lines
956 B
TypeScript
import type { ErrorLogEntry } from '@shared/ipc'
|
||
import { isValidErrorLogEntry } from './validation'
|
||
import { createJsonStore } from './jsonStore'
|
||
import { ERRORLOG_MAX_ENTRIES } from './constants'
|
||
|
||
// Plain JSON in userData, same shape as history.ts. Persisted so a failure
|
||
// report survives the queue item being cleared (Seal's "debug report"). Atomic
|
||
// writes / corruption backup / caching come from the shared jsonStore (R1–R3).
|
||
// Per-entry validation (isValidErrorLogEntry) so a hand-edited or corrupted
|
||
// errorlog.json can't feed the UI entries with the wrong shape. (audit S5)
|
||
const store = createJsonStore('errorlog.json', isValidErrorLogEntry, ERRORLOG_MAX_ENTRIES)
|
||
|
||
export function listErrorLog(): ErrorLogEntry[] {
|
||
return store.read()
|
||
}
|
||
|
||
export function addErrorLog(entry: ErrorLogEntry): ErrorLogEntry[] {
|
||
return store.write([entry, ...listErrorLog()])
|
||
}
|
||
|
||
export function clearErrorLog(): ErrorLogEntry[] {
|
||
return store.write([])
|
||
}
|