claude-flow
Version:
Enterprise-grade AI agent orchestration with ruv-swarm integration (Alpha Release)
84 lines (76 loc) • 3.05 kB
text/typescript
import { Command } from 'commander';
import { ConfigManager } from '../../config/config-manager.js';
import { createCliFeatureAdapter } from '../../features/adapters/CliFeatureAdapter.js';
export function createFeaturesCommand(): Command {
const features = new Command('features')
.description('Manage transparent features')
.addHelpText('after', `
Examples:
claude-flow features list
claude-flow features enable auto-format
claude-flow features disable auto-format
claude-flow features status
claude-flow features config auto-format
`);
// List features
features
.command('list')
.description('List all available features')
.option('-v, --verbose', 'Show detailed feature information')
.action(async (options) => {
const configManager = new ConfigManager();
const adapter = createCliFeatureAdapter(configManager);
await adapter.listFeatures([], options);
});
// Enable feature
features
.command('enable <feature>')
.description('Enable a specific feature')
.action(async (feature) => {
const configManager = new ConfigManager();
const adapter = createCliFeatureAdapter(configManager);
await adapter.enableFeature([feature], {});
});
// Disable feature
features
.command('disable <feature>')
.description('Disable a specific feature')
.action(async (feature) => {
const configManager = new ConfigManager();
const adapter = createCliFeatureAdapter(configManager);
await adapter.disableFeature([feature], {});
});
// Toggle feature
features
.command('toggle <feature>')
.description('Toggle a feature on/off')
.action(async (feature) => {
const configManager = new ConfigManager();
const adapter = createCliFeatureAdapter(configManager);
await adapter.toggleFeature([feature], {});
});
// Configure feature
features
.command('config <feature>')
.alias('configure')
.description('Configure a specific feature')
.option('-s, --set <key=value>', 'Set a configuration value')
.option('-g, --get <key>', 'Get a configuration value')
.option('-r, --reset', 'Reset to default configuration')
.action(async (feature, options) => {
const configManager = new ConfigManager();
const adapter = createCliFeatureAdapter(configManager);
await adapter.configureFeature([feature], options);
});
// Feature status
features
.command('status [feature]')
.description('Show feature status')
.option('-d, --detailed', 'Show detailed status information')
.action(async (feature, options) => {
const configManager = new ConfigManager();
const adapter = createCliFeatureAdapter(configManager);
await adapter.showFeatureStatus(feature ? [feature] : [], options);
});
return features;
}