@kontextmind/kxm
Version:
KXM local-first multi-agent orchestration and operator dashboard
36 lines (30 loc) • 1.08 kB
text/typescript
/**
* History export adapter for local disk persistence.
*/
import { mkdirSync, writeFileSync } from "node:fs";
import { join } from "node:path";
import {
renderWorkflowHistoryMarkdown,
formatWorkflowHistoryJsonl,
type HistoryEventItem,
} from "../tui/history.ts";
export interface ExportedHistoryFiles {
readonly mdPath: string;
readonly jsonlPath: string;
}
/**
* Export workflow history into both Markdown retrospective and JSONL audit logs on disk.
*/
export function exportWorkflowHistory(
runId: string,
events: readonly HistoryEventItem[],
destinationDir: string,
): ExportedHistoryFiles {
mkdirSync(destinationDir, { recursive: true });
const sanitizedRunId = runId.replaceAll(/[^a-zA-Z0-9_-]/g, "_");
const mdPath = join(destinationDir, `retrospective-${sanitizedRunId}.md`);
const jsonlPath = join(destinationDir, `history-${sanitizedRunId}.jsonl`);
writeFileSync(mdPath, renderWorkflowHistoryMarkdown(runId, events), "utf8");
writeFileSync(jsonlPath, formatWorkflowHistoryJsonl(runId, events), "utf8");
return { mdPath, jsonlPath };
}