← Files ForgeMindARCHIVED FILE
src/migrate-memory.mjs
1.52 KB · Oct 2, 2026 · 00:31 UTC
import { readFile, readdir } from 'node:fs/promises';
import path from 'node:path';
import { appendMemoryEntry } from './memory.mjs';
import { resolveWorkspace } from './paths.mjs';
export async function migrateMarkdownMemory({ workspace, author = 'ForgeMind migration' }) {
const root = await resolveWorkspace(workspace);
const legacyRoot = path.join(root, '.codex-orchestrator', 'memory');
let files = [];
try {
files = (await readdir(legacyRoot, { withFileTypes: true }))
.filter((entry) => entry.isFile() && entry.name.endsWith('.md'))
.map((entry) => entry.name)
.sort();
} catch (error) {
if (error.code !== 'ENOENT') throw error;
}
let imported = 0;
let duplicates = 0;
for (const name of files) {
const statement = (await readFile(path.join(legacyRoot, name), 'utf8')).trim();
if (!statement) continue;
const result = await appendMemoryEntry({
workspace: root,
scope: 'shared',
entry: {
type: 'legacy-memory',
subject: path.basename(name, '.md'),
statement,
source: `.codex-orchestrator/memory/${name}`,
evidence: [`.codex-orchestrator/memory/${name}`],
author,
confidence: 0.5,
reviewState: 'pending',
sensitivity: 'internal',
nonExpiring: true,
},
});
if (result.status === 'created') imported += 1;
else duplicates += 1;
}
return { schemaVersion: 1, status: 'passed', imported, duplicates, sourceFiles: files.length };
}
SHA-256: 587cfb4f218462f3ea2dadd897ab7f37f556a748c946fe0f88744aed64e56cc8