Files
eene_dashboard/scripts/restore-from-transcript.mjs
EENE Dashboard b3f2da203b EENE Dashboard upload to Gitea
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-17 16:59:34 +09:00

50 lines
1.5 KiB
JavaScript

import fs from 'fs';
import path from 'path';
const jsonl =
'C:/Users/한맥/.cursor/projects/d-EENE-Dashboard-0608/agent-transcripts/a31af370-8cc7-4941-8299-96fbb85f1ad8/a31af370-8cc7-4941-8299-96fbb85f1ad8.jsonl';
const root = 'd:/EENE_Dashboard_0608';
const files = new Map();
const replaces = [];
for (const line of fs.readFileSync(jsonl, 'utf8').split('\n')) {
if (!line.trim()) continue;
try {
const o = JSON.parse(line);
for (const p of o.message?.content ?? []) {
if (p.type !== 'tool_use') continue;
const inp = p.input ?? {};
const fp = inp.path;
if (!fp?.includes('EENE_Dashboard_0608')) continue;
if (inp.contents) files.set(fp, inp.contents);
if (inp.old_string && inp.new_string && fp.includes('frontend')) {
replaces.push({ fp, old: inp.old_string, new: inp.new_string });
}
}
} catch {
/* skip */
}
}
function toRel(fp) {
return fp
.replace(/\\/g, '/')
.replace(/^d:\/EENE_Dashboard_0608\//i, '')
.replace(/^D:\/EENE_Dashboard_0608\//, '');
}
for (const [fp, initial] of files) {
let content = initial;
for (const r of replaces) {
if (r.fp !== fp) continue;
if (content.includes(r.old)) content = content.replace(r.old, r.new);
}
const rel = toRel(fp);
if (!rel.startsWith('frontend/') && !rel.startsWith('backend/')) continue;
const out = path.join(root, rel);
fs.mkdirSync(path.dirname(out), { recursive: true });
fs.writeFileSync(out, content, 'utf8');
console.log('restored', rel, content.length);
}