claude-flow 2.7.42 → 2.7.44
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 +1 -1
- package/dist/src/cli/help-formatter.js +0 -5
- package/dist/src/cli/simple-commands/config.js +137 -119
- package/dist/src/cli/simple-commands/config.js.map +1 -1
- package/dist/src/cli/simple-commands/hive-mind.js +42 -5
- package/dist/src/cli/simple-commands/hive-mind.js.map +1 -1
- package/dist/src/cli/simple-commands/hooks.js +21 -1
- package/dist/src/cli/simple-commands/hooks.js.map +1 -1
- package/dist/src/cli/validation-helper.js.map +1 -1
- package/dist/src/core/DatabaseManager.js +19 -2
- package/dist/src/core/DatabaseManager.js.map +1 -1
- package/dist/src/memory/in-memory-store.js +1 -0
- package/dist/src/memory/in-memory-store.js.map +1 -1
- package/dist/src/memory/sqlite-wrapper.js +52 -14
- package/dist/src/memory/sqlite-wrapper.js.map +1 -1
- package/dist/src/memory/swarm-memory.js +348 -416
- package/dist/src/memory/swarm-memory.js.map +1 -1
- package/dist/src/utils/error-recovery.js +29 -0
- package/dist/src/utils/error-recovery.js.map +1 -1
- package/dist/src/utils/metrics-reader.js +0 -10
- package/package.json +1 -1
- package/src/cli/simple-commands/hooks.js +31 -1
- package/src/core/DatabaseManager.ts +27 -2
- package/src/memory/in-memory-store.js +2 -0
- package/src/memory/sqlite-wrapper.js +63 -19
- package/src/utils/error-recovery.ts +48 -0
package/bin/claude-flow
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Claude-Flow Smart Dispatcher - Detects and uses the best available runtime
|
|
3
3
|
# Enhanced with NPX cache error handling and retry logic
|
|
4
4
|
|
|
5
|
-
VERSION="2.7.
|
|
5
|
+
VERSION="2.7.44"
|
|
6
6
|
|
|
7
7
|
# Determine the correct path based on how the script is invoked
|
|
8
8
|
if [ -L "$0" ]; then
|
|
@@ -1,126 +1,144 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
});
|
|
49
|
-
}
|
|
50
|
-
} catch (error) {
|
|
51
|
-
console.error(chalk.red('✗ Error:'), error.message);
|
|
52
|
-
process.exit(1);
|
|
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;
|
|
53
36
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
]
|
|
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%'
|
|
109
67
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
|
79
|
+
}
|
|
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 || {})}`);
|
|
118
116
|
}
|
|
119
|
-
})
|
|
120
|
-
|
|
117
|
+
} catch (err) {
|
|
118
|
+
printError('Configuration file not found');
|
|
119
|
+
console.log('Run "claude-flow config init" to create default configuration');
|
|
120
|
+
}
|
|
121
121
|
}
|
|
122
|
-
|
|
123
|
-
|
|
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');
|
|
124
142
|
console.log('Run "claude-flow config init" to create configuration');
|
|
125
143
|
}
|
|
126
144
|
}
|
|
@@ -1 +1 @@
|
|
|
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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"}lags) {\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.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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"}
|
|
@@ -12,14 +12,23 @@ let sqliteAvailable = false;
|
|
|
12
12
|
async function loadSqlite() {
|
|
13
13
|
if (Database !== null) return sqliteAvailable;
|
|
14
14
|
try {
|
|
15
|
-
const
|
|
16
|
-
|
|
15
|
+
const { createRequire } = await import('module');
|
|
16
|
+
const require = createRequire(import.meta.url);
|
|
17
|
+
Database = require('better-sqlite3');
|
|
17
18
|
const testDb = new Database(':memory:');
|
|
18
19
|
testDb.close();
|
|
19
20
|
sqliteAvailable = true;
|
|
20
|
-
} catch (
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
} catch (requireErr) {
|
|
22
|
+
try {
|
|
23
|
+
const sqlite = await import('better-sqlite3');
|
|
24
|
+
Database = sqlite.default || sqlite;
|
|
25
|
+
const testDb = new Database(':memory:');
|
|
26
|
+
testDb.close();
|
|
27
|
+
sqliteAvailable = true;
|
|
28
|
+
} catch (err) {
|
|
29
|
+
sqliteAvailable = false;
|
|
30
|
+
Database = null;
|
|
31
|
+
}
|
|
23
32
|
}
|
|
24
33
|
return sqliteAvailable;
|
|
25
34
|
}
|
|
@@ -494,6 +503,14 @@ async function spawnSwarmWizard() {
|
|
|
494
503
|
return swarmResult;
|
|
495
504
|
}
|
|
496
505
|
async function spawnSwarm(args, flags) {
|
|
506
|
+
const hasSqlite = await loadSqlite();
|
|
507
|
+
if (!hasSqlite) {
|
|
508
|
+
console.error(chalk.red('Error: SQLite is required for hive-mind spawn'));
|
|
509
|
+
console.log(chalk.yellow('Please ensure better-sqlite3 is properly installed:'));
|
|
510
|
+
console.log(chalk.gray(' npm install better-sqlite3'));
|
|
511
|
+
console.log(chalk.gray(' # or for ARM64/M1: npm rebuild better-sqlite3'));
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
497
514
|
const objective = args.join(' ').trim();
|
|
498
515
|
const isNonInteractive = flags['non-interactive'] || flags.nonInteractive;
|
|
499
516
|
if (!objective && !flags.wizard) {
|
|
@@ -1048,6 +1065,11 @@ async function showStatus(flags) {
|
|
|
1048
1065
|
}
|
|
1049
1066
|
}
|
|
1050
1067
|
async function showConsensus(flags) {
|
|
1068
|
+
const hasSqlite = await loadSqlite();
|
|
1069
|
+
if (!hasSqlite) {
|
|
1070
|
+
console.error(chalk.red('Error: SQLite is required for this command'));
|
|
1071
|
+
return;
|
|
1072
|
+
}
|
|
1051
1073
|
try {
|
|
1052
1074
|
const dbPath = path.join(cwd(), '.hive-mind', 'hive.db');
|
|
1053
1075
|
const db = new Database(dbPath);
|
|
@@ -1111,6 +1133,11 @@ async function showConsensus(flags) {
|
|
|
1111
1133
|
}
|
|
1112
1134
|
}
|
|
1113
1135
|
async function showMetrics(flags) {
|
|
1136
|
+
const hasSqlite = await loadSqlite();
|
|
1137
|
+
if (!hasSqlite) {
|
|
1138
|
+
console.error(chalk.red('Error: SQLite is required for this command'));
|
|
1139
|
+
return;
|
|
1140
|
+
}
|
|
1114
1141
|
try {
|
|
1115
1142
|
const dbPath = path.join(cwd(), '.hive-mind', 'hive.db');
|
|
1116
1143
|
const db = new Database(dbPath);
|
|
@@ -1442,6 +1469,11 @@ export async function hiveMindCommand(args, flags) {
|
|
|
1442
1469
|
}
|
|
1443
1470
|
}
|
|
1444
1471
|
async function listMemories() {
|
|
1472
|
+
const hasSqlite = await loadSqlite();
|
|
1473
|
+
if (!hasSqlite) {
|
|
1474
|
+
console.error(chalk.red('Error: SQLite is required for this command'));
|
|
1475
|
+
return;
|
|
1476
|
+
}
|
|
1445
1477
|
try {
|
|
1446
1478
|
console.log(chalk.blue('\n📋 Collective Memory Store\n'));
|
|
1447
1479
|
const dbPath = path.join(cwd(), '.hive-mind', 'hive.db');
|
|
@@ -1487,6 +1519,11 @@ async function listMemories() {
|
|
|
1487
1519
|
}
|
|
1488
1520
|
}
|
|
1489
1521
|
async function searchMemories() {
|
|
1522
|
+
const hasSqlite = await loadSqlite();
|
|
1523
|
+
if (!hasSqlite) {
|
|
1524
|
+
console.error(chalk.red('Error: SQLite is required for this command'));
|
|
1525
|
+
return;
|
|
1526
|
+
}
|
|
1490
1527
|
try {
|
|
1491
1528
|
const { searchTerm } = await inquirer.prompt([
|
|
1492
1529
|
{
|