/** * [WHO]: Provides JsonlEvalSink (filesystem append-only adapter) * [FROM]: Depends on node:fs, node:path, node:url; ./types.js for EvalSink/EvalEventEnvelope/CreateEvalSinkOptions * [TO]: Constructed by eval/index.ts factory when adapter resolves to "jsonl" * [HERE]: extensions/builtin/sal/eval/jsonl-sink.ts - offline-friendly sink that appends one JSON object per line; useful for experiments that don't want a live backend, and for capturing replayable event traces * * Output schema: each line is a serialized EvalEventEnvelope. Downstream tools * (analysis scripts, bulk import to InsForge / Postgres / BigQuery) consume the * file directly. No transformation is applied — the file is the raw event log. */ import type { CreateEvalSinkOptions, EvalEventEnvelope, EvalSink } from "./types.js"; export declare class JsonlEvalSink implements EvalSink { readonly enabled = true; private filePath; private pending; private batchIntervalMs; private flushTimer; private closed; private onDiagnostic; constructor(options: CreateEvalSinkOptions); sendEvent(event: EvalEventEnvelope): Promise; flush(): Promise; close(): Promise; private scheduleFlush; private writeLines; private reportDiagnostic; }