/** * Per-task on-disk layout under $FRANKLIN_HOME/tasks//. * meta.json — single TaskRecord, atomically rewritten * events.jsonl — append-only event log * log.txt — child process stdout/stderr * * Storage location: defaults to BLOCKRUN_DIR (~/.blockrun), matching * every other persistent state in the codebase (sessions, audit, stats, * brain, etc.). Earlier releases used ~/.franklin instead, so we * lazily fall back to that legacy directory on reads when a task isn't * found in the primary location. New tasks always write to the primary. * * Why a lazy fallback instead of a startup migration: a long-running * task runner (`franklin _task-runner `) captures its task dir * path in memory at spawn and continues writing there for the duration * of the run. Verified 2026-05-04: an in-flight ETL task at PID 59095 * had been writing to ~/.franklin/tasks/ for 4 minutes, with ~10 hours * of progress still ahead. Moving the directory mid-flight would * orphan its writes; the fallback path lets new CLI commands keep * reading legacy task state without disturbing an active runner. */ export declare function getTasksDir(): string; export declare function getLegacyTasksDir(): string; export declare function getTaskDir(runId: string): string; export declare function ensureTaskDir(runId: string): string; export declare function taskMetaPath(runId: string): string; export declare function taskEventsPath(runId: string): string; export declare function taskLogPath(runId: string): string;