#!/usr/bin/env node /** * Memory Optimization Pipeline (MOP) * * Usage: * npx tsx .claude/memory-optimization/pipeline.ts optimize --dry-run * npx tsx .claude/memory-optimization/pipeline.ts optimize --apply */ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs'; import { join, dirname } from 'path'; import { evaluateChunk, type JudgeConfig } from './judge.js'; const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || process.cwd(); const MEMORIES_DIR = join(PROJECT_DIR, '.claude', 'memories'); const MOP_DIR = join(PROJECT_DIR, '.claude', 'memory-optimization'); const CONFIG_PATH = join(MOP_DIR, 'config.json'); interface PipelineOptions { dryRun: boolean; apply: boolean; gepa: boolean; } function loadConfig(): JudgeConfig { if (existsSync(CONFIG_PATH)) { return JSON.parse(readFileSync(CONFIG_PATH, 'utf8')); } // Fallback to default return JSON.parse( readFileSync(join(dirname(import.meta.url), 'config.default.json'), 'utf8') ); } async function main() { const args = process.argv.slice(2); const command = args[0]; if (command !== 'optimize') { console.log('Usage: pipeline.ts optimize [--dry-run] [--apply] [--gepa]'); process.exit(1); } const options: PipelineOptions = { dryRun: args.includes('--dry-run'), apply: args.includes('--apply'), gepa: args.includes('--gepa') }; const config = loadConfig(); console.log('Memory Optimization Pipeline'); console.log(`Mode: ${options.dryRun ? 'DRY-RUN' : options.apply ? 'APPLY' : 'REPORT'}`); console.log(`GEPA: ${options.gepa ? 'ENABLED' : 'DISABLED'}`); // Placeholder for actual logic // 1. Load memories // 2. Chunk // 3. Judge // 4. (Optional) GEPA // 5. Generate report + optimized files console.log('\n[INFO] Pipeline skeleton executed. Full implementation pending.'); console.log('This is a safe dry-run placeholder. No files were modified.'); } main().catch(err => { console.error('Pipeline failed:', err); process.exit(1); });