50 lines
1.5 KiB
JavaScript
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);
|
|
}
|