UNPKG

@earendil-works/pi-coding-agent

Version:

Coding agent CLI with read, bash, edit, write tools and session management

33 lines • 1.52 kB
import { existsSync, mkdirSync, writeFileSync } from "node:fs"; import { dirname } from "node:path"; import { resolvePath } from "../utils/paths.js"; import { CURRENT_SESSION_VERSION } from "./session-manager.js"; /** Serialize the current branch and optional export-only entries as JSONL. */ export function serializeSessionBranch(sessionManager, createTrailingEntries) { const timestamp = new Date().toISOString(); const header = { type: "session", version: CURRENT_SESSION_VERSION, id: sessionManager.getSessionId(), timestamp, cwd: sessionManager.getCwd(), }; const entries = [header]; let parentId = null; for (const entry of sessionManager.getBranch()) { entries.push({ ...entry, parentId }); parentId = entry.id; } entries.push(...(createTrailingEntries?.(parentId, timestamp) ?? [])); return `${entries.map((entry) => JSON.stringify(entry)).join("\n")}\n`; } /** Write the current session branch and optional export-only entries as JSONL. */ export function exportSessionToJsonl(sessionManager, outputPath, createTrailingEntries) { const filePath = resolvePath(outputPath ?? `session-${new Date().toISOString().replace(/[:.]/g, "-")}.jsonl`, process.cwd()); const dir = dirname(filePath); if (!existsSync(dir)) mkdirSync(dir, { recursive: true }); writeFileSync(filePath, serializeSessionBranch(sessionManager, createTrailingEntries)); return filePath; } //# sourceMappingURL=session-export.js.map