claude-flow-novice
Version:
Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes CodeSearch (hybrid SQLite + pgvector), mem0/memgraph specialists, and all CFN skills.
76 lines (63 loc) • 2.51 kB
text/typescript
/**
* CLI entry point for Skill Propagation System
* Provides command-line interface for propagating skill updates
*/
import { NodeFileSystemAdapter } from './file-system-adapter';
import { SQLiteDatabaseAdapter } from './database-adapter';
import { ConsoleLogger } from './logger';
import { SkillPropagator } from './skill-propagator';
import type { SkillPropagationOptions } from './types';
const logger = new ConsoleLogger({ debug: process.env['DEBUG'] === '1' });
async function main() {
const args = process.argv.slice(2);
// Parse command-line arguments
const skillName = args[0];
const newVersion = args[1];
const updatePath = args[2];
const changeType = (args[3] || 'patch') as 'patch' | 'minor' | 'major';
const notifyAgents = args[4] === 'true' ? true : false;
// Validate minimum arguments
if (!skillName || !newVersion || !updatePath) {
logger.error('Missing required arguments');
logger.error('Usage: propagate-skill-update SKILL_NAME NEW_VERSION UPDATE_PATH [CHANGE_TYPE] [NOTIFY_AGENTS]');
process.exit(1);
}
try {
// Create adapters
const fs = new NodeFileSystemAdapter();
const databasePath = process.env['CFN_SKILLS_DB_PATH'] || './.claude/skills-database/skills.db';
const db = new SQLiteDatabaseAdapter(databasePath);
// Create propagator
const propagator = new SkillPropagator(fs, db, logger);
// Prepare options
const options: SkillPropagationOptions = {
skillName,
newVersion,
updatePath,
changeType,
notifyAgents,
databasePath,
phase4PostgresHost: process.env['PHASE4_POSTGRES_HOST'],
phase4PostgresDb: process.env['PHASE4_POSTGRES_DB'] || 'workflow_codification',
phase4PostgresUser: process.env['PHASE4_POSTGRES_USER'],
phase4PostgresPass: process.env['PHASE4_POSTGRES_PASS'],
enableAgentNotifications: process.env['ENABLE_AGENT_NOTIFICATIONS'] === 'true',
debug: process.env['DEBUG'] === '1',
};
// Execute propagation
await propagator.propagate(options);
logger.success(`Propagation completed successfully`);
process.exit(0);
} catch (error) {
logger.error(`Propagation failed: ${(error as Error).message}`);
if (process.env['DEBUG'] === '1') {
console.error(error);
}
process.exit(1);
}
}
main().catch((error) => {
logger.error(`Fatal error: ${error.message}`);
process.exit(1);
});