@jmkim85/dev-flow-mcp
Version:
MCP-based Dev Flow - AI-powered development workflow management with 13 essential tools for TDD and context management
75 lines • 2.7 kB
JavaScript
/**
* Migration script for Dev Flow MCP v2.1+
* Updates existing context frames with new metadata fields
*/
import { promises as fs } from 'fs';
import { join } from 'path';
import YAML from 'yaml';
async function migrateContextFrames(projectRoot) {
const contextDir = join(projectRoot, '.devflow', 'context');
const statePath = join(contextDir, 'context-state.yaml');
try {
// Check if context state file exists
const data = await fs.readFile(statePath, 'utf-8');
const state = YAML.parse(data);
let migrated = false;
// Migrate each frame to include new metadata fields
for (const frame of state.frames) {
if (frame.token_usage === undefined) {
frame.token_usage = 0;
migrated = true;
}
if (frame.importance_score === undefined) {
frame.importance_score = 1.0;
migrated = true;
}
}
if (migrated) {
// Save updated state
await fs.writeFile(statePath, YAML.stringify(state, null, 2));
console.log(`✅ Migrated context frames in ${projectRoot}`);
}
else {
console.log(`✅ Context frames already up to date in ${projectRoot}`);
}
}
catch (error) {
if (error.code === 'ENOENT') {
console.log(`ℹ️ No context state found in ${projectRoot} - nothing to migrate`);
}
else {
console.error(`❌ Error migrating ${projectRoot}:`, error);
}
}
}
async function main() {
const args = process.argv.slice(2);
const projectRoot = args[0] || process.cwd();
console.log('🔄 Dev Flow MCP Migration v2.1+');
console.log(`📁 Project: ${projectRoot}`);
console.log('');
try {
// Ensure .devflow directory exists
const devflowDir = join(projectRoot, '.devflow');
await fs.mkdir(devflowDir, { recursive: true });
// Migrate context frames
await migrateContextFrames(projectRoot);
console.log('');
console.log('🎉 Migration completed successfully!');
console.log('');
console.log('New features available:');
console.log('- Context frames now track token usage');
console.log('- Context frames now have importance scores');
console.log('- Enhanced context metadata in buildContext() output');
}
catch (error) {
console.error('❌ Migration failed:', error);
process.exit(1);
}
}
if (require.main === module) {
main().catch(console.error);
}
export { migrateContextFrames };
//# sourceMappingURL=migrate.js.map