import * as fs from 'fs'; import * as path from 'path'; import { parseSessionKey } from '@runtime/lib/models'; import { getUserDataDir } from './paths'; const PRIMARY_TRANSCRIPT_ROOT_DIR = 'models'; const LEGACY_TRANSCRIPT_ROOT_DIR = 'agents'; function buildTranscriptFilePath(sessionKey: string, rootDirName: string): string { const parsed = parseSessionKey(sessionKey); const agentId = parsed.isAgentSession ? parsed.agentId : 'default'; let sessionId = parsed.isAgentSession ? parsed.sessionId : sessionKey; if (!sessionId) { sessionId = 'unknown'; } const baseDir = path.join(getUserDataDir(), rootDirName, agentId, 'sessions'); return path.join(baseDir, `${sessionId}.jsonl`); } export function getTranscriptFilePath(sessionKey: string): string { return buildTranscriptFilePath(sessionKey, PRIMARY_TRANSCRIPT_ROOT_DIR); } export function getLegacyTranscriptFilePath(sessionKey: string): string { return buildTranscriptFilePath(sessionKey, LEGACY_TRANSCRIPT_ROOT_DIR); } export function getTranscriptPathCandidates(sessionKey: string): string[] { return Array.from(new Set([ getTranscriptFilePath(sessionKey), getLegacyTranscriptFilePath(sessionKey), ])); } export function appendTranscriptLine(sessionKey: string, lineObject: any): void { const filePath = getTranscriptFilePath(sessionKey); fs.mkdirSync(path.dirname(filePath), { recursive: true }); fs.appendFileSync(filePath, JSON.stringify(lineObject) + '\n', 'utf-8'); }