claude-flow 2.7.0-alpha → 2.7.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/claude-flow CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
  # Claude-Flow Smart Dispatcher - Detects and uses the best available runtime
3
3
 
4
- VERSION="2.7.0-alpha"
4
+ VERSION="2.7.0-alpha.1"
5
5
 
6
6
  # Determine the correct path based on how the script is invoked
7
7
  if [ -L "$0" ]; then
@@ -85,4 +85,9 @@ export class HelpFormatter {
85
85
  }
86
86
  }
87
87
 
88
+ //# sourceMappingURL=help-formatter.js.map/\s+/g, ' ');
89
+ return text;
90
+ }
91
+ }
92
+
88
93
  //# sourceMappingURL=help-formatter.js.map
@@ -1,265 +1,123 @@
1
- import { printSuccess, printError, printWarning, readJsonFile, writeJsonFile, fileExists } from '../utils.js';
2
- export async function configCommand(subArgs, flags) {
3
- const configCmd = subArgs[0];
4
- switch(configCmd){
5
- case 'init':
6
- await initConfig(subArgs, flags);
7
- break;
8
- case 'show':
9
- await showConfig(subArgs, flags);
10
- break;
11
- case 'get':
12
- await getConfigValue(subArgs, flags);
13
- break;
14
- case 'set':
15
- await setConfigValue(subArgs, flags);
16
- break;
17
- case 'validate':
18
- await validateConfig(subArgs, flags);
19
- break;
20
- case 'reset':
21
- await resetConfig(subArgs, flags);
22
- break;
23
- default:
24
- showConfigHelp();
25
- }
26
- }
27
- async function initConfig(subArgs, flags) {
28
- const force = subArgs.includes('--force') || subArgs.includes('-f');
29
- const configFile = 'claude-flow.config.json';
30
- try {
31
- const exists = await fileExists(configFile);
32
- if (exists && !force) {
33
- printWarning('Configuration file already exists');
34
- console.log('Use --force to overwrite existing configuration');
35
- return;
36
- }
37
- printSuccess('Initializing Claude-Flow configuration...');
38
- const defaultConfig = {
39
- version: '1.0.71',
40
- terminal: {
41
- poolSize: 10,
42
- recycleAfter: 20,
43
- healthCheckInterval: 30000,
44
- type: 'auto'
45
- },
46
- orchestrator: {
47
- maxConcurrentTasks: 10,
48
- taskTimeout: 300000,
49
- defaultPriority: 5
50
- },
51
- memory: {
52
- backend: 'json',
53
- path: './memory/claude-flow-data.json',
54
- cacheSize: 1000,
55
- indexing: true
56
- },
57
- agents: {
58
- maxAgents: 20,
59
- defaultCapabilities: [
60
- 'research',
61
- 'code',
62
- 'terminal'
63
- ],
64
- resourceLimits: {
65
- memory: '1GB',
66
- cpu: '50%'
67
- }
68
- },
69
- mcp: {
70
- port: 3000,
71
- host: 'localhost',
72
- timeout: 30000
73
- },
74
- logging: {
75
- level: 'info',
76
- file: './claude-flow.log',
77
- maxSize: '10MB',
78
- maxFiles: 5
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import inquirer from 'inquirer';
4
+ import { ProviderManager } from '../../execution/provider-manager.js';
5
+ export function createConfigCommand() {
6
+ const config = new Command('config').description('Manage provider configuration');
7
+ config.command('set-provider').description('Set default provider').argument('<provider>', 'Provider name (anthropic, openrouter, onnx, gemini)').option('-m, --model <model>', 'Default model for provider').action(async (provider, options)=>{
8
+ try {
9
+ const manager = new ProviderManager();
10
+ await manager.setDefaultProvider(provider);
11
+ if (options.model) {
12
+ await manager.configureProvider(provider, {
13
+ model: options.model,
14
+ enabled: true
15
+ });
79
16
  }
80
- };
81
- await writeJsonFile(configFile, defaultConfig);
82
- console.log(`āœ“ Created ${configFile}`);
83
- console.log('āœ“ Default settings configured');
84
- console.log('\nNext steps:');
85
- console.log('1. Review settings: claude-flow config show');
86
- console.log('2. Customize values: claude-flow config set <key> <value>');
87
- console.log('3. Validate config: claude-flow config validate');
88
- } catch (err) {
89
- printError(`Failed to initialize configuration: ${err.message}`);
90
- }
91
- }
92
- async function showConfig(subArgs, flags) {
93
- const configFile = 'claude-flow.config.json';
94
- const format = getFlag(subArgs, '--format') || 'pretty';
95
- try {
96
- const config = await readJsonFile(configFile);
97
- printSuccess('Current configuration:');
98
- if (format === 'json') {
99
- console.log(JSON.stringify(config, null, 2));
100
- } else {
101
- console.log('\nšŸ“‹ System Configuration:');
102
- console.log(` Version: ${config.version || 'unknown'}`);
103
- console.log('\nšŸ–„ļø Terminal Pool:');
104
- console.log(` Pool Size: ${config.terminal?.poolSize || 10}`);
105
- console.log(` Recycle After: ${config.terminal?.recycleAfter || 20} commands`);
106
- console.log(` Health Check: ${config.terminal?.healthCheckInterval || 30000}ms`);
107
- console.log('\nšŸŽ­ Orchestrator:');
108
- console.log(` Max Concurrent Tasks: ${config.orchestrator?.maxConcurrentTasks || 10}`);
109
- console.log(` Task Timeout: ${config.orchestrator?.taskTimeout || 300000}ms`);
110
- console.log('\nšŸ’¾ Memory:');
111
- console.log(` Backend: ${config.memory?.backend || 'json'}`);
112
- console.log(` Path: ${config.memory?.path || './memory/claude-flow-data.json'}`);
113
- console.log('\nšŸ¤– Agents:');
114
- console.log(` Max Agents: ${config.agents?.maxAgents || 20}`);
115
- console.log(` Resource Limits: ${JSON.stringify(config.agents?.resourceLimits || {})}`);
116
- }
117
- } catch (err) {
118
- printError('Configuration file not found');
119
- console.log('Run "claude-flow config init" to create default configuration');
120
- }
121
- }
122
- async function getConfigValue(subArgs, flags) {
123
- const key = subArgs[1];
124
- const configFile = 'claude-flow.config.json';
125
- if (!key) {
126
- printError('Usage: config get <key>');
127
- console.log('Examples:');
128
- console.log(' claude-flow config get terminal.poolSize');
129
- console.log(' claude-flow config get orchestrator.maxConcurrentTasks');
130
- return;
131
- }
132
- try {
133
- const config = await readJsonFile(configFile);
134
- const value = getNestedValue(config, key);
135
- if (value !== undefined) {
136
- console.log(`${key}: ${JSON.stringify(value)}`);
137
- } else {
138
- printWarning(`Configuration key '${key}' not found`);
139
- }
140
- } catch (err) {
141
- printError('Configuration file not found');
142
- console.log('Run "claude-flow config init" to create configuration');
143
- }
144
- }
145
- async function setConfigValue(subArgs, flags) {
146
- const key = subArgs[1];
147
- const value = subArgs[2];
148
- const configFile = 'claude-flow.config.json';
149
- if (!key || value === undefined) {
150
- printError('Usage: config set <key> <value>');
151
- console.log('Examples:');
152
- console.log(' claude-flow config set terminal.poolSize 15');
153
- console.log(' claude-flow config set orchestrator.taskTimeout 600000');
154
- return;
155
- }
156
- try {
157
- let config = await readJsonFile(configFile, {});
158
- let parsedValue = value;
159
- if (value === 'true') parsedValue = true;
160
- else if (value === 'false') parsedValue = false;
161
- else if (!isNaN(value) && value.trim() !== '') parsedValue = Number(value);
162
- setNestedValue(config, key, parsedValue);
163
- await writeJsonFile(configFile, config);
164
- printSuccess(`Set ${key} = ${JSON.stringify(parsedValue)}`);
165
- } catch (err) {
166
- printError(`Failed to set configuration: ${err.message}`);
167
- }
168
- }
169
- async function validateConfig(subArgs, flags) {
170
- const configFile = 'claude-flow.config.json';
171
- try {
172
- const config = await readJsonFile(configFile);
173
- printSuccess('Validating configuration...');
174
- const errors = [];
175
- const warnings = [];
176
- const requiredSections = [
177
- 'terminal',
178
- 'orchestrator',
179
- 'memory'
180
- ];
181
- for (const section of requiredSections){
182
- if (!config[section]) {
183
- errors.push(`Missing required section: ${section}`);
17
+ console.log(chalk.green(`āœ“ Default provider set to: ${provider}`));
18
+ if (options.model) {
19
+ console.log(chalk.green(`āœ“ Default model set to: ${options.model}`));
184
20
  }
21
+ } catch (error) {
22
+ console.error(chalk.red('āœ— Error:'), error.message);
23
+ process.exit(1);
185
24
  }
186
- if (config.terminal?.poolSize && (config.terminal.poolSize < 1 || config.terminal.poolSize > 100)) {
187
- warnings.push('Terminal pool size should be between 1 and 100');
188
- }
189
- if (config.orchestrator?.maxConcurrentTasks && config.orchestrator.maxConcurrentTasks < 1) {
190
- errors.push('Max concurrent tasks must be at least 1');
191
- }
192
- if (config.agents?.maxAgents && config.agents.maxAgents < 1) {
193
- errors.push('Max agents must be at least 1');
194
- }
195
- if (errors.length === 0 && warnings.length === 0) {
196
- printSuccess('āœ… Configuration is valid');
197
- } else {
198
- if (errors.length > 0) {
199
- printError(`Found ${errors.length} error(s):`);
200
- errors.forEach((error)=>console.log(` āŒ ${error}`));
201
- }
202
- if (warnings.length > 0) {
203
- printWarning(`Found ${warnings.length} warning(s):`);
204
- warnings.forEach((warning)=>console.log(` āš ļø ${warning}`));
25
+ });
26
+ config.command('list-providers').alias('list').description('List configured providers').option('-f, --format <format>', 'Output format (text, json)', 'text').action(async (options)=>{
27
+ try {
28
+ const manager = new ProviderManager();
29
+ const providers = manager.listProviders();
30
+ const defaultProvider = manager.getDefaultProvider();
31
+ if (options.format === 'json') {
32
+ console.log(JSON.stringify({
33
+ defaultProvider,
34
+ providers
35
+ }, null, 2));
36
+ } else {
37
+ console.log(chalk.cyan('\nšŸ“‹ Configured Providers:\n'));
38
+ console.log(chalk.white(`Default: ${chalk.bold(defaultProvider)}\n`));
39
+ providers.forEach((provider)=>{
40
+ const isDefault = provider.name === defaultProvider;
41
+ const prefix = isDefault ? chalk.green('ā—') : chalk.gray('ā—‹');
42
+ const status = provider.enabled ? chalk.green('enabled') : chalk.gray('disabled');
43
+ console.log(`${prefix} ${chalk.bold(provider.name)}`);
44
+ console.log(` Model: ${provider.model || 'default'}`);
45
+ console.log(` Priority: ${provider.priority || 'balanced'}`);
46
+ console.log(` Status: ${status}`);
47
+ console.log('');
48
+ });
205
49
  }
50
+ } catch (error) {
51
+ console.error(chalk.red('āœ— Error:'), error.message);
52
+ process.exit(1);
206
53
  }
207
- } catch (err) {
208
- printError('Configuration file not found or invalid');
209
- console.log('Run "claude-flow config init" to create valid configuration');
210
- }
211
- }
212
- async function resetConfig(subArgs, flags) {
213
- const force = subArgs.includes('--force') || subArgs.includes('-f');
214
- if (!force) {
215
- printWarning('This will reset configuration to defaults');
216
- console.log('Use --force to confirm reset');
217
- return;
218
- }
219
- await initConfig([
220
- '--force'
221
- ], flags);
222
- printSuccess('Configuration reset to defaults');
223
- }
224
- function getNestedValue(obj, path) {
225
- return path.split('.').reduce((current, key)=>current?.[key], obj);
226
- }
227
- function setNestedValue(obj, path, value) {
228
- const keys = path.split('.');
229
- const last = keys.pop();
230
- const target = keys.reduce((current, key)=>{
231
- if (!current[key]) current[key] = {};
232
- return current[key];
233
- }, obj);
234
- target[last] = value;
235
- }
236
- function getFlag(args, flagName) {
237
- const index = args.indexOf(flagName);
238
- return index !== -1 && index + 1 < args.length ? args[index + 1] : null;
239
- }
240
- function showConfigHelp() {
241
- console.log('Configuration commands:');
242
- console.log(' init [--force] Create default configuration');
243
- console.log(' show [--format json] Display current configuration');
244
- console.log(' get <key> Get configuration value');
245
- console.log(' set <key> <value> Set configuration value');
246
- console.log(' validate Validate configuration');
247
- console.log(' reset --force Reset to defaults');
248
- console.log();
249
- console.log('Configuration Keys:');
250
- console.log(' terminal.poolSize Terminal pool size');
251
- console.log(' terminal.recycleAfter Commands before recycle');
252
- console.log(' orchestrator.maxConcurrentTasks Max parallel tasks');
253
- console.log(' orchestrator.taskTimeout Task timeout in ms');
254
- console.log(' memory.backend Memory storage backend');
255
- console.log(' memory.path Memory database path');
256
- console.log(' agents.maxAgents Maximum number of agents');
257
- console.log();
258
- console.log('Examples:');
259
- console.log(' claude-flow config init');
260
- console.log(' claude-flow config set terminal.poolSize 15');
261
- console.log(' claude-flow config get orchestrator.maxConcurrentTasks');
262
- console.log(' claude-flow config validate');
54
+ });
55
+ config.command('wizard').description('Interactive provider configuration wizard').action(async ()=>{
56
+ try {
57
+ const manager = new ProviderManager();
58
+ console.log(chalk.cyan('\nšŸ§™ Provider Configuration Wizard\n'));
59
+ const answers = await inquirer.prompt([
60
+ {
61
+ type: 'list',
62
+ name: 'defaultProvider',
63
+ message: 'Select default provider:',
64
+ choices: [
65
+ {
66
+ name: 'Anthropic (Highest quality)',
67
+ value: 'anthropic'
68
+ },
69
+ {
70
+ name: 'OpenRouter (99% cost savings)',
71
+ value: 'openrouter'
72
+ },
73
+ {
74
+ name: 'ONNX (Free local inference)',
75
+ value: 'onnx'
76
+ },
77
+ {
78
+ name: 'Gemini (Free tier)',
79
+ value: 'gemini'
80
+ }
81
+ ]
82
+ },
83
+ {
84
+ type: 'list',
85
+ name: 'optimization',
86
+ message: 'Optimization priority:',
87
+ choices: [
88
+ {
89
+ name: 'Balanced (recommended)',
90
+ value: 'balanced'
91
+ },
92
+ {
93
+ name: 'Cost (cheapest)',
94
+ value: 'cost'
95
+ },
96
+ {
97
+ name: 'Quality (best results)',
98
+ value: 'quality'
99
+ },
100
+ {
101
+ name: 'Speed (fastest)',
102
+ value: 'speed'
103
+ },
104
+ {
105
+ name: 'Privacy (local only)',
106
+ value: 'privacy'
107
+ }
108
+ ]
109
+ }
110
+ ]);
111
+ await manager.setDefaultProvider(answers.defaultProvider);
112
+ console.log(chalk.green('\nāœ“ Configuration saved successfully!'));
113
+ console.log(chalk.gray(`\nDefault provider: ${answers.defaultProvider}`));
114
+ console.log(chalk.gray(`Optimization: ${answers.optimization}`));
115
+ } catch (error) {
116
+ console.error(chalk.red('\nāœ— Error:'), error.message);
117
+ process.exit(1);
118
+ }
119
+ });
120
+ return config;
263
121
  }
264
122
 
265
123
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/simple-commands/config.js"],"sourcesContent":["// config.js - Configuration management commands\nimport {\n printSuccess,\n printError,\n printWarning,\n readJsonFile,\n writeJsonFile,\n fileExists,\n} from '../utils.js';\n\nexport async function configCommand(subArgs, flags) {\n const configCmd = subArgs[0];\n\n switch (configCmd) {\n case 'init':\n await initConfig(subArgs, flags);\n break;\n\n case 'show':\n await showConfig(subArgs, flags);\n break;\n\n case 'get':\n await getConfigValue(subArgs, flags);\n break;\n\n case 'set':\n await setConfigValue(subArgs, flags);\n break;\n\n case 'validate':\n await validateConfig(subArgs, flags);\n break;\n\n case 'reset':\n await resetConfig(subArgs, flags);\n break;\n\n default:\n showConfigHelp();\n }\n}\n\nasync function initConfig(subArgs, flags) {\n const force = subArgs.includes('--force') || subArgs.includes('-f');\n const configFile = 'claude-flow.config.json';\n\n try {\n // Check if config already exists\n const exists = await fileExists(configFile);\n if (exists && !force) {\n printWarning('Configuration file already exists');\n console.log('Use --force to overwrite existing configuration');\n return;\n }\n\n printSuccess('Initializing Claude-Flow configuration...');\n\n // Create default configuration\n const defaultConfig = {\n version: '1.0.71',\n terminal: {\n poolSize: 10,\n recycleAfter: 20,\n healthCheckInterval: 30000,\n type: 'auto',\n },\n orchestrator: {\n maxConcurrentTasks: 10,\n taskTimeout: 300000,\n defaultPriority: 5,\n },\n memory: {\n backend: 'json',\n path: './memory/claude-flow-data.json',\n cacheSize: 1000,\n indexing: true,\n },\n agents: {\n maxAgents: 20,\n defaultCapabilities: ['research', 'code', 'terminal'],\n resourceLimits: {\n memory: '1GB',\n cpu: '50%',\n },\n },\n mcp: {\n port: 3000,\n host: 'localhost',\n timeout: 30000,\n },\n logging: {\n level: 'info',\n file: './claude-flow.log',\n maxSize: '10MB',\n maxFiles: 5,\n },\n };\n\n await writeJsonFile(configFile, defaultConfig);\n console.log(`āœ“ Created ${configFile}`);\n console.log('āœ“ Default settings configured');\n console.log('\\nNext steps:');\n console.log('1. Review settings: claude-flow config show');\n console.log('2. Customize values: claude-flow config set <key> <value>');\n console.log('3. Validate config: claude-flow config validate');\n } catch (err) {\n printError(`Failed to initialize configuration: ${err.message}`);\n }\n}\n\nasync function showConfig(subArgs, flags) {\n const configFile = 'claude-flow.config.json';\n const format = getFlag(subArgs, '--format') || 'pretty';\n\n try {\n const config = await readJsonFile(configFile);\n\n printSuccess('Current configuration:');\n\n if (format === 'json') {\n console.log(JSON.stringify(config, null, 2));\n } else {\n // Pretty format\n console.log('\\nšŸ“‹ System Configuration:');\n console.log(` Version: ${config.version || 'unknown'}`);\n console.log('\\nšŸ–„ļø Terminal Pool:');\n console.log(` Pool Size: ${config.terminal?.poolSize || 10}`);\n console.log(` Recycle After: ${config.terminal?.recycleAfter || 20} commands`);\n console.log(` Health Check: ${config.terminal?.healthCheckInterval || 30000}ms`);\n console.log('\\nšŸŽ­ Orchestrator:');\n console.log(` Max Concurrent Tasks: ${config.orchestrator?.maxConcurrentTasks || 10}`);\n console.log(` Task Timeout: ${config.orchestrator?.taskTimeout || 300000}ms`);\n console.log('\\nšŸ’¾ Memory:');\n console.log(` Backend: ${config.memory?.backend || 'json'}`);\n console.log(` Path: ${config.memory?.path || './memory/claude-flow-data.json'}`);\n console.log('\\nšŸ¤– Agents:');\n console.log(` Max Agents: ${config.agents?.maxAgents || 20}`);\n console.log(` Resource Limits: ${JSON.stringify(config.agents?.resourceLimits || {})}`);\n }\n } catch (err) {\n printError('Configuration file not found');\n console.log('Run \"claude-flow config init\" to create default configuration');\n }\n}\n\nasync function getConfigValue(subArgs, flags) {\n const key = subArgs[1];\n const configFile = 'claude-flow.config.json';\n\n if (!key) {\n printError('Usage: config get <key>');\n console.log('Examples:');\n console.log(' claude-flow config get terminal.poolSize');\n console.log(' claude-flow config get orchestrator.maxConcurrentTasks');\n return;\n }\n\n try {\n const config = await readJsonFile(configFile);\n const value = getNestedValue(config, key);\n\n if (value !== undefined) {\n console.log(`${key}: ${JSON.stringify(value)}`);\n } else {\n printWarning(`Configuration key '${key}' not found`);\n }\n } catch (err) {\n printError('Configuration file not found');\n console.log('Run \"claude-flow config init\" to create configuration');\n }\n}\n\nasync function setConfigValue(subArgs, flags) {\n const key = subArgs[1];\n const value = subArgs[2];\n const configFile = 'claude-flow.config.json';\n\n if (!key || value === undefined) {\n printError('Usage: config set <key> <value>');\n console.log('Examples:');\n console.log(' claude-flow config set terminal.poolSize 15');\n console.log(' claude-flow config set orchestrator.taskTimeout 600000');\n return;\n }\n\n try {\n let config = await readJsonFile(configFile, {});\n\n // Parse value appropriately\n let parsedValue = value;\n if (value === 'true') parsedValue = true;\n else if (value === 'false') parsedValue = false;\n else if (!isNaN(value) && value.trim() !== '') parsedValue = Number(value);\n\n // Set nested value\n setNestedValue(config, key, parsedValue);\n\n await writeJsonFile(configFile, config);\n printSuccess(`Set ${key} = ${JSON.stringify(parsedValue)}`);\n } catch (err) {\n printError(`Failed to set configuration: ${err.message}`);\n }\n}\n\nasync function validateConfig(subArgs, flags) {\n const configFile = 'claude-flow.config.json';\n\n try {\n const config = await readJsonFile(configFile);\n\n printSuccess('Validating configuration...');\n\n const errors = [];\n const warnings = [];\n\n // Validate required sections\n const requiredSections = ['terminal', 'orchestrator', 'memory'];\n for (const section of requiredSections) {\n if (!config[section]) {\n errors.push(`Missing required section: ${section}`);\n }\n }\n\n // Validate specific values\n if (\n config.terminal?.poolSize &&\n (config.terminal.poolSize < 1 || config.terminal.poolSize > 100)\n ) {\n warnings.push('Terminal pool size should be between 1 and 100');\n }\n\n if (config.orchestrator?.maxConcurrentTasks && config.orchestrator.maxConcurrentTasks < 1) {\n errors.push('Max concurrent tasks must be at least 1');\n }\n\n if (config.agents?.maxAgents && config.agents.maxAgents < 1) {\n errors.push('Max agents must be at least 1');\n }\n\n // Report results\n if (errors.length === 0 && warnings.length === 0) {\n printSuccess('āœ… Configuration is valid');\n } else {\n if (errors.length > 0) {\n printError(`Found ${errors.length} error(s):`);\n errors.forEach((error) => console.log(` āŒ ${error}`));\n }\n\n if (warnings.length > 0) {\n printWarning(`Found ${warnings.length} warning(s):`);\n warnings.forEach((warning) => console.log(` āš ļø ${warning}`));\n }\n }\n } catch (err) {\n printError('Configuration file not found or invalid');\n console.log('Run \"claude-flow config init\" to create valid configuration');\n }\n}\n\nasync function resetConfig(subArgs, flags) {\n const force = subArgs.includes('--force') || subArgs.includes('-f');\n\n if (!force) {\n printWarning('This will reset configuration to defaults');\n console.log('Use --force to confirm reset');\n return;\n }\n\n await initConfig(['--force'], flags);\n printSuccess('Configuration reset to defaults');\n}\n\n// Helper functions\nfunction getNestedValue(obj, path) {\n return path.split('.').reduce((current, key) => current?.[key], obj);\n}\n\nfunction setNestedValue(obj, path, value) {\n const keys = path.split('.');\n const last = keys.pop();\n const target = keys.reduce((current, key) => {\n if (!current[key]) current[key] = {};\n return current[key];\n }, obj);\n target[last] = value;\n}\n\nfunction getFlag(args, flagName) {\n const index = args.indexOf(flagName);\n return index !== -1 && index + 1 < args.length ? args[index + 1] : null;\n}\n\n// fileExists is now imported from utils.js\n\nfunction showConfigHelp() {\n console.log('Configuration commands:');\n console.log(' init [--force] Create default configuration');\n console.log(' show [--format json] Display current configuration');\n console.log(' get <key> Get configuration value');\n console.log(' set <key> <value> Set configuration value');\n console.log(' validate Validate configuration');\n console.log(' reset --force Reset to defaults');\n console.log();\n console.log('Configuration Keys:');\n console.log(' terminal.poolSize Terminal pool size');\n console.log(' terminal.recycleAfter Commands before recycle');\n console.log(' orchestrator.maxConcurrentTasks Max parallel tasks');\n console.log(' orchestrator.taskTimeout Task timeout in ms');\n console.log(' memory.backend Memory storage backend');\n console.log(' memory.path Memory database path');\n console.log(' agents.maxAgents Maximum number of agents');\n console.log();\n console.log('Examples:');\n console.log(' claude-flow config init');\n console.log(' claude-flow config set terminal.poolSize 15');\n console.log(' claude-flow config get orchestrator.maxConcurrentTasks');\n console.log(' claude-flow config validate');\n}\n"],"names":["printSuccess","printError","printWarning","readJsonFile","writeJsonFile","fileExists","configCommand","subArgs","flags","configCmd","initConfig","showConfig","getConfigValue","setConfigValue","validateConfig","resetConfig","showConfigHelp","force","includes","configFile","exists","console","log","defaultConfig","version","terminal","poolSize","recycleAfter","healthCheckInterval","type","orchestrator","maxConcurrentTasks","taskTimeout","defaultPriority","memory","backend","path","cacheSize","indexing","agents","maxAgents","defaultCapabilities","resourceLimits","cpu","mcp","port","host","timeout","logging","level","file","maxSize","maxFiles","err","message","format","getFlag","config","JSON","stringify","key","value","getNestedValue","undefined","parsedValue","isNaN","trim","Number","setNestedValue","errors","warnings","requiredSections","section","push","length","forEach","error","warning","obj","split","reduce","current","keys","last","pop","target","args","flagName","index","indexOf"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/cli/simple-commands/config.ts"],"sourcesContent":["/**\n * Config CLI Commands - Manage provider configuration\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\nimport { ProviderManager } from '../../execution/provider-manager.js';\n\nexport function createConfigCommand(): Command {\n const config = new Command('config')\n .description('Manage provider configuration');\n\n // config set-provider command\n config\n .command('set-provider')\n .description('Set default provider')\n .argument('<provider>', 'Provider name (anthropic, openrouter, onnx, gemini)')\n .option('-m, --model <model>', 'Default model for provider')\n .action(async (provider, options) => {\n try {\n const manager = new ProviderManager();\n\n await manager.setDefaultProvider(provider);\n\n if (options.model) {\n await manager.configureProvider(provider, {\n model: options.model,\n enabled: true,\n } as any);\n }\n\n console.log(chalk.green(`āœ“ Default provider set to: ${provider}`));\n if (options.model) {\n console.log(chalk.green(`āœ“ Default model set to: ${options.model}`));\n }\n } catch (error: any) {\n console.error(chalk.red('āœ— Error:'), error.message);\n process.exit(1);\n }\n });\n\n // config list-providers command\n config\n .command('list-providers')\n .alias('list')\n .description('List configured providers')\n .option('-f, --format <format>', 'Output format (text, json)', 'text')\n .action(async (options) => {\n try {\n const manager = new ProviderManager();\n const providers = manager.listProviders();\n const defaultProvider = manager.getDefaultProvider();\n\n if (options.format === 'json') {\n console.log(JSON.stringify({ defaultProvider, providers }, null, 2));\n } else {\n console.log(chalk.cyan('\\nšŸ“‹ Configured Providers:\\n'));\n console.log(chalk.white(`Default: ${chalk.bold(defaultProvider)}\\n`));\n\n providers.forEach(provider => {\n const isDefault = provider.name === defaultProvider;\n const prefix = isDefault ? chalk.green('ā—') : chalk.gray('ā—‹');\n const status = provider.enabled ? chalk.green('enabled') : chalk.gray('disabled');\n\n console.log(`${prefix} ${chalk.bold(provider.name)}`);\n console.log(` Model: ${provider.model || 'default'}`);\n console.log(` Priority: ${provider.priority || 'balanced'}`);\n console.log(` Status: ${status}`);\n console.log('');\n });\n }\n } catch (error: any) {\n console.error(chalk.red('āœ— Error:'), error.message);\n process.exit(1);\n }\n });\n\n // config wizard command\n config\n .command('wizard')\n .description('Interactive provider configuration wizard')\n .action(async () => {\n try {\n const manager = new ProviderManager();\n\n console.log(chalk.cyan('\\nšŸ§™ Provider Configuration Wizard\\n'));\n\n const answers = await inquirer.prompt([\n {\n type: 'list',\n name: 'defaultProvider',\n message: 'Select default provider:',\n choices: [\n { name: 'Anthropic (Highest quality)', value: 'anthropic' },\n { name: 'OpenRouter (99% cost savings)', value: 'openrouter' },\n { name: 'ONNX (Free local inference)', value: 'onnx' },\n { name: 'Gemini (Free tier)', value: 'gemini' },\n ],\n },\n {\n type: 'list',\n name: 'optimization',\n message: 'Optimization priority:',\n choices: [\n { name: 'Balanced (recommended)', value: 'balanced' },\n { name: 'Cost (cheapest)', value: 'cost' },\n { name: 'Quality (best results)', value: 'quality' },\n { name: 'Speed (fastest)', value: 'speed' },\n { name: 'Privacy (local only)', value: 'privacy' },\n ],\n },\n ]);\n\n await manager.setDefaultProvider(answers.defaultProvider);\n\n console.log(chalk.green('\\nāœ“ Configuration saved successfully!'));\n console.log(chalk.gray(`\\nDefault provider: ${answers.defaultProvider}`));\n console.log(chalk.gray(`Optimization: ${answers.optimization}`));\n } catch (error: any) {\n console.error(chalk.red('\\nāœ— Error:'), error.message);\n process.exit(1);\n }\n });\n\n return config;\n}\n"],"names":["Command","chalk","inquirer","ProviderManager","createConfigCommand","config","description","command","argument","option","action","provider","options","manager","setDefaultProvider","model","configureProvider","enabled","console","log","green","error","red","message","process","exit","alias","providers","listProviders","defaultProvider","getDefaultProvider","format","JSON","stringify","cyan","white","bold","forEach","isDefault","name","prefix","gray","status","priority","answers","prompt","type","choices","value","optimization"],"mappings":"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"}
@@ -328,6 +328,7 @@ async function isReasoningBankInitialized() {
328
328
  }
329
329
  async function handleReasoningBankCommand(command, subArgs, flags) {
330
330
  const initialized = await isReasoningBankInitialized();
331
+ const { initializeReasoningBank, storeMemory, queryMemories, listMemories, getStatus } = await import('../../reasoningbank/reasoningbank-adapter.js');
331
332
  if (command === 'init') {
332
333
  if (initialized) {
333
334
  printWarning('āš ļø ReasoningBank already initialized');
@@ -338,10 +339,7 @@ async function handleReasoningBankCommand(command, subArgs, flags) {
338
339
  printInfo('🧠 Initializing ReasoningBank...');
339
340
  console.log('This will create: .swarm/memory.db\n');
340
341
  try {
341
- const { stdout, stderr } = await execAsync('npx agentic-flow reasoningbank init', {
342
- timeout: 30000
343
- });
344
- if (stdout) console.log(stdout);
342
+ await initializeReasoningBank();
345
343
  printSuccess('āœ… ReasoningBank initialized successfully!');
346
344
  console.log('\nNext steps:');
347
345
  console.log(' 1. Store memories: memory store key "value" --reasoningbank');
@@ -350,9 +348,6 @@ async function handleReasoningBankCommand(command, subArgs, flags) {
350
348
  } catch (error) {
351
349
  printError('āŒ Failed to initialize ReasoningBank');
352
350
  console.error(error.message);
353
- if (error.stderr) {
354
- console.error('Details:', error.stderr);
355
- }
356
351
  }
357
352
  return;
358
353
  }
@@ -364,17 +359,128 @@ async function handleReasoningBankCommand(command, subArgs, flags) {
364
359
  }
365
360
  printInfo(`🧠 Using ReasoningBank mode...`);
366
361
  try {
367
- const cmd = buildReasoningBankCommand(command, subArgs, flags);
368
- const { stdout, stderr } = await execAsync(cmd, {
369
- timeout: 30000
370
- });
371
- if (stdout) console.log(stdout);
372
- if (stderr && !stderr.includes('Warning')) console.error(stderr);
362
+ switch(command){
363
+ case 'store':
364
+ await handleReasoningBankStore(subArgs, flags, storeMemory);
365
+ break;
366
+ case 'query':
367
+ await handleReasoningBankQuery(subArgs, flags, queryMemories);
368
+ break;
369
+ case 'list':
370
+ await handleReasoningBankList(subArgs, flags, listMemories);
371
+ break;
372
+ case 'status':
373
+ await handleReasoningBankStatus(getStatus);
374
+ break;
375
+ case 'consolidate':
376
+ case 'demo':
377
+ case 'test':
378
+ case 'benchmark':
379
+ const cmd = `npx agentic-flow reasoningbank ${command}`;
380
+ const { stdout } = await execAsync(cmd, {
381
+ timeout: 60000
382
+ });
383
+ if (stdout) console.log(stdout);
384
+ break;
385
+ default:
386
+ printError(`Unknown ReasoningBank command: ${command}`);
387
+ }
373
388
  } catch (error) {
374
389
  printError(`āŒ ReasoningBank command failed`);
375
390
  console.error(error.message);
376
391
  }
377
392
  }
393
+ async function handleReasoningBankStore(subArgs, flags, storeMemory) {
394
+ const key = subArgs[1];
395
+ const value = subArgs.slice(2).join(' ');
396
+ if (!key || !value) {
397
+ printError('Usage: memory store <key> <value> --reasoningbank');
398
+ return;
399
+ }
400
+ try {
401
+ const namespace = flags?.namespace || flags?.ns || getArgValue(subArgs, '--namespace') || 'default';
402
+ const memoryId = await storeMemory(key, value, {
403
+ namespace,
404
+ agent: 'memory-agent',
405
+ domain: namespace
406
+ });
407
+ printSuccess('āœ… Stored successfully in ReasoningBank');
408
+ console.log(`šŸ“ Key: ${key}`);
409
+ console.log(`🧠 Memory ID: ${memoryId}`);
410
+ console.log(`šŸ“¦ Namespace: ${namespace}`);
411
+ console.log(`šŸ’¾ Size: ${new TextEncoder().encode(value).length} bytes`);
412
+ console.log(`šŸ” Semantic search: enabled`);
413
+ } catch (error) {
414
+ printError(`Failed to store: ${error.message}`);
415
+ }
416
+ }
417
+ async function handleReasoningBankQuery(subArgs, flags, queryMemories) {
418
+ const search = subArgs.slice(1).join(' ');
419
+ if (!search) {
420
+ printError('Usage: memory query <search> --reasoningbank');
421
+ return;
422
+ }
423
+ try {
424
+ const namespace = flags?.namespace || flags?.ns || getArgValue(subArgs, '--namespace');
425
+ const results = await queryMemories(search, {
426
+ domain: namespace || 'general',
427
+ limit: 10
428
+ });
429
+ if (results.length === 0) {
430
+ printWarning('No results found');
431
+ return;
432
+ }
433
+ printSuccess(`Found ${results.length} results (semantic search):`);
434
+ for (const entry of results){
435
+ console.log(`\nšŸ“Œ ${entry.key}`);
436
+ console.log(` Namespace: ${entry.namespace}`);
437
+ console.log(` Value: ${entry.value.substring(0, 100)}${entry.value.length > 100 ? '...' : ''}`);
438
+ console.log(` Confidence: ${(entry.confidence * 100).toFixed(1)}%`);
439
+ console.log(` Usage: ${entry.usage_count} times`);
440
+ if (entry.score) {
441
+ console.log(` Match Score: ${(entry.score * 100).toFixed(1)}%`);
442
+ }
443
+ console.log(` Stored: ${new Date(entry.created_at).toLocaleString()}`);
444
+ }
445
+ } catch (error) {
446
+ printError(`Failed to query: ${error.message}`);
447
+ }
448
+ }
449
+ async function handleReasoningBankList(subArgs, flags, listMemories) {
450
+ try {
451
+ const sort = flags?.sort || getArgValue(subArgs, '--sort') || 'created_at';
452
+ const limit = parseInt(flags?.limit || getArgValue(subArgs, '--limit') || '10');
453
+ const results = await listMemories({
454
+ sort,
455
+ limit
456
+ });
457
+ if (results.length === 0) {
458
+ printWarning('No memories found');
459
+ return;
460
+ }
461
+ printSuccess(`ReasoningBank memories (${results.length} shown):`);
462
+ for (const entry of results){
463
+ console.log(`\nšŸ“Œ ${entry.key}`);
464
+ console.log(` Value: ${entry.value.substring(0, 80)}${entry.value.length > 80 ? '...' : ''}`);
465
+ console.log(` Confidence: ${(entry.confidence * 100).toFixed(1)}% | Usage: ${entry.usage_count}`);
466
+ }
467
+ } catch (error) {
468
+ printError(`Failed to list: ${error.message}`);
469
+ }
470
+ }
471
+ async function handleReasoningBankStatus(getStatus) {
472
+ try {
473
+ const stats = await getStatus();
474
+ printSuccess('šŸ“Š ReasoningBank Status:');
475
+ console.log(` Total memories: ${stats.total_memories}`);
476
+ console.log(` Average confidence: ${(stats.avg_confidence * 100).toFixed(1)}%`);
477
+ console.log(` Total usage: ${stats.total_usage}`);
478
+ console.log(` Embeddings: ${stats.total_embeddings}`);
479
+ console.log(` Trajectories: ${stats.total_trajectories}`);
480
+ } catch (error) {
481
+ printError(`Failed to get status: ${error.message}`);
482
+ }
483
+ }
378
484
  function buildReasoningBankCommand(command, subArgs, flags) {
379
485
  const parts = [
380
486
  'npx',
@@ -398,6 +504,7 @@ function buildReasoningBankCommand(command, subArgs, flags) {
398
504
  parts.push(`"${arg}"`);
399
505
  }
400
506
  });
507
+ parts.push('--agent', 'memory-agent');
401
508
  return parts.join(' ');
402
509
  }
403
510
  async function handleModeCommand(command, subArgs, flags) {