claude-flow 2.7.43 → 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 +257 -115
- package/dist/src/cli/simple-commands/config.js.map +1 -1
- package/dist/src/cli/validation-helper.js.map +1 -1
- package/dist/src/core/version.js +2 -2
- package/dist/src/core/version.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/swarm-memory.js +348 -416
- package/dist/src/memory/swarm-memory.js.map +1 -1
- package/dist/src/utils/metrics-reader.js +0 -10
- package/package.json +1 -1
- package/src/memory/in-memory-store.js +2 -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,123 +1,265 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
20
79
|
}
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
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 || {})}`);
|
|
24
116
|
}
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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}`);
|
|
49
184
|
}
|
|
50
|
-
} catch (error) {
|
|
51
|
-
console.error(chalk.red('✗ Error:'), error.message);
|
|
52
|
-
process.exit(1);
|
|
53
185
|
}
|
|
54
|
-
|
|
55
|
-
|
|
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);
|
|
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');
|
|
118
188
|
}
|
|
119
|
-
|
|
120
|
-
|
|
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}`));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
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');
|
|
121
263
|
}
|
|
122
264
|
|
|
123
265
|
//# sourceMappingURL=config.js.map
|
|
@@ -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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"}
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/validation-helper.js"],"sourcesContent":["/**\n * CLI Parameter Validation Helper\n * Provides standardized error messages for invalid parameters\n */\n\nimport { HelpFormatter } from './help-formatter.js';\n\nexport class ValidationHelper {\n /**\n * Validate enum parameter\n */\n static validateEnum(value, paramName, validOptions, commandPath) {\n if (!validOptions.includes(value)) {\n console.error(\n HelpFormatter.formatValidationError(value, paramName, validOptions, commandPath),\n );\n process.exit(1);\n }\n }\n\n /**\n * Validate numeric parameter\n */\n static validateNumber(value, paramName, min, max, commandPath) {\n const num = parseInt(value, 10);\n\n if (isNaN(num)) {\n console.error(\n HelpFormatter.formatError(\n `'${value}' is not a valid number for ${paramName}.`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n\n if (min !== undefined && num < min) {\n console.error(\n HelpFormatter.formatError(\n `${paramName} must be at least ${min}. Got: ${num}`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n\n if (max !== undefined && num > max) {\n console.error(\n HelpFormatter.formatError(\n `${paramName} must be at most ${max}. Got: ${num}`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n\n return num;\n }\n\n /**\n * Validate required parameter\n */\n static validateRequired(value, paramName, commandPath) {\n if (!value || (typeof value === 'string' && value.trim() === '')) {\n console.error(\n HelpFormatter.formatError(\n `Missing required parameter: ${paramName}`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n }\n\n /**\n * Validate file path exists\n */\n static async validateFilePath(path, paramName, commandPath) {\n try {\n const fs = await import('fs/promises');\n await fs.access(path);\n } catch (error) {\n console.error(\n HelpFormatter.formatError(\n `File not found for ${paramName}: ${path}`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n }\n\n /**\n * Validate boolean flag\n */\n static validateBoolean(value, paramName, commandPath) {\n const lowerValue = value.toLowerCase();\n if (lowerValue === 'true' || lowerValue === '1' || lowerValue === 'yes') {\n return true;\n }\n if (lowerValue === 'false' || lowerValue === '0' || lowerValue === 'no') {\n return false;\n }\n\n console.error(\n HelpFormatter.formatError(\n `'${value}' is not a valid boolean for ${paramName}. Use: true, false, yes, no, 1, or 0.`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n}\n"],"names":["HelpFormatter","ValidationHelper","validateEnum","value","paramName","validOptions","commandPath","includes","console","error","formatValidationError","process","exit","validateNumber","min","max","num","parseInt","isNaN","formatError","undefined","validateRequired","trim","validateFilePath","path","fs","access","validateBoolean","lowerValue","toLowerCase"],"mappings":"AAKA,SAASA,aAAa,QAAQ,sBAAsB;AAEpD,OAAO,MAAMC;IAIX,OAAOC,aAAaC,KAAK,EAAEC,SAAS,EAAEC,YAAY,EAAEC,WAAW,EAAE;QAC/D,IAAI,CAACD,aAAaE,QAAQ,CAACJ,QAAQ;YACjCK,QAAQC,KAAK,CACXT,cAAcU,qBAAqB,CAACP,OAAOC,WAAWC,cAAcC;YAEtEK,QAAQC,IAAI,CAAC;QACf;IACF;IAKA,OAAOC,eAAeV,KAAK,EAAEC,SAAS,EAAEU,GAAG,EAAEC,GAAG,EAAET,WAAW,EAAE;QAC7D,MAAMU,MAAMC,SAASd,OAAO;QAE5B,IAAIe,MAAMF,MAAM;YACdR,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,CAAC,CAAC,EAAEhB,MAAM,4BAA4B,EAAEC,UAAU,CAAC,CAAC,EACpDE,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;QAEA,IAAIE,QAAQM,aAAaJ,MAAMF,KAAK;YAClCN,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,GAAGf,UAAU,kBAAkB,EAAEU,IAAI,OAAO,EAAEE,KAAK,EACnDV,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;QAEA,IAAIG,QAAQK,aAAaJ,MAAMD,KAAK;YAClCP,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,GAAGf,UAAU,iBAAiB,EAAEW,IAAI,OAAO,EAAEC,KAAK,EAClDV,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;QAEA,OAAOI;IACT;IAKA,OAAOK,iBAAiBlB,KAAK,EAAEC,SAAS,EAAEE,WAAW,EAAE;QACrD,IAAI,CAACH,SAAU,OAAOA,UAAU,YAAYA,MAAMmB,IAAI,OAAO,IAAK;YAChEd,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,CAAC,4BAA4B,EAAEf,WAAW,EAC1CE,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;IACF;IAKA,aAAaW,iBAAiBC,IAAI,EAAEpB,SAAS,EAAEE,WAAW,EAAE;QAC1D,IAAI;YACF,MAAMmB,KAAK,MAAM,MAAM,CAAC;YACxB,MAAMA,GAAGC,MAAM,CAACF;QAClB,EAAE,OAAOf,OAAO;YACdD,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,CAAC,mBAAmB,EAAEf,UAAU,EAAE,EAAEoB,MAAM,EAC1ClB,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;IACF;IAKA,OAAOe,gBAAgBxB,KAAK,EAAEC,SAAS,EAAEE,WAAW,EAAE;QACpD,MAAMsB,aAAazB,MAAM0B,WAAW;QACpC,IAAID,eAAe,UAAUA,eAAe,OAAOA,eAAe,OAAO;YACvE,OAAO;QACT;QACA,IAAIA,eAAe,WAAWA,eAAe,OAAOA,eAAe,MAAM;YACvE,OAAO;QACT;QAEApB,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,CAAC,CAAC,EAAEhB,MAAM,6BAA6B,EAAEC,UAAU,qCAAqC,CAAC,EACzFE,eAAe;QAGnBK,QAAQC,IAAI,CAAC;IACf;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/validation-helper.js"],"sourcesContent":["/**\n * CLI Parameter Validation Helper\n * Provides standardized error messages for invalid parameters\n */\n\nimport { HelpFormatter } from './help-formatter.js';\n\nexport class ValidationHelper {\n /**\n * Validate enum parameter\n */\n static validateEnum(value, paramName, validOptions, commandPath) {\n if (!validOptions.includes(value)) {\n console.error(\n HelpFormatter.formatValidationError(value, paramName, validOptions, commandPath),\n );\n process.exit(1);\n }\n }\n\n /**\n * Validate numeric parameter\n */\n static validateNumber(value, paramName, min, max, commandPath) {\n const num = parseInt(value, 10);\n\n if (isNaN(num)) {\n console.error(\n HelpFormatter.formatError(\n `'${value}' is not a valid number for ${paramName}.`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n\n if (min !== undefined && num < min) {\n console.error(\n HelpFormatter.formatError(\n `${paramName} must be at least ${min}. Got: ${num}`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n\n if (max !== undefined && num > max) {\n console.error(\n HelpFormatter.formatError(\n `${paramName} must be at most ${max}. Got: ${num}`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n\n return num;\n }\n\n /**\n * Validate required parameter\n */\n static validateRequired(value, paramName, commandPath) {\n if (!value || (typeof value === 'string' && value.trim() === '')) {\n console.error(\n HelpFormatter.formatError(\n `Missing required parameter: ${paramName}`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n }\n\n /**\n * Validate file path exists\n */\n static async validateFilePath(path, paramName, commandPath) {\n try {\n const fs = await import('fs/promises');\n await fs.access(path);\n } catch (error) {\n console.error(\n HelpFormatter.formatError(\n `File not found for ${paramName}: ${path}`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n }\n\n /**\n * Validate boolean flag\n */\n static validateBoolean(value, paramName, commandPath) {\n const lowerValue = value.toLowerCase();\n if (lowerValue === 'true' || lowerValue === '1' || lowerValue === 'yes') {\n return true;\n }\n if (lowerValue === 'false' || lowerValue === '0' || lowerValue === 'no') {\n return false;\n }\n\n console.error(\n HelpFormatter.formatError(\n `'${value}' is not a valid boolean for ${paramName}. Use: true, false, yes, no, 1, or 0.`,\n commandPath || 'claude-flow',\n ),\n );\n process.exit(1);\n }\n}\n"],"names":["HelpFormatter","ValidationHelper","validateEnum","value","paramName","validOptions","commandPath","includes","console","error","formatValidationError","process","exit","validateNumber","min","max","num","parseInt","isNaN","formatError","undefined","validateRequired","trim","validateFilePath","path","fs","access","validateBoolean","lowerValue","toLowerCase"],"mappings":"AAKA,SAASA,aAAa,QAAQ,sBAAsB;AAEpD,OAAO,MAAMC;IAIX,OAAOC,aAAaC,KAAK,EAAEC,SAAS,EAAEC,YAAY,EAAEC,WAAW,EAAE;QAC/D,IAAI,CAACD,aAAaE,QAAQ,CAACJ,QAAQ;YACjCK,QAAQC,KAAK,CACXT,cAAcU,qBAAqB,CAACP,OAAOC,WAAWC,cAAcC;YAEtEK,QAAQC,IAAI,CAAC;QACf;IACF;IAKA,OAAOC,eAAeV,KAAK,EAAEC,SAAS,EAAEU,GAAG,EAAEC,GAAG,EAAET,WAAW,EAAE;QAC7D,MAAMU,MAAMC,SAASd,OAAO;QAE5B,IAAIe,MAAMF,MAAM;YACdR,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,CAAC,CAAC,EAAEhB,MAAM,4BAA4B,EAAEC,UAAU,CAAC,CAAC,EACpDE,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;QAEA,IAAIE,QAAQM,aAAaJ,MAAMF,KAAK;YAClCN,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,GAAGf,UAAU,kBAAkB,EAAEU,IAAI,OAAO,EAAEE,KAAK,EACnDV,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;QAEA,IAAIG,QAAQK,aAAaJ,MAAMD,KAAK;YAClCP,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,GAAGf,UAAU,iBAAiB,EAAEW,IAAI,OAAO,EAAEC,KAAK,EAClDV,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;QAEA,OAAOI;IACT;IAKA,OAAOK,iBAAiBlB,KAAK,EAAEC,SAAS,EAAEE,WAAW,EAAE;QACrD,IAAI,CAACH,SAAU,OAAOA,UAAU,YAAYA,MAAMmB,IAAI,OAAO,IAAK;YAChEd,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,CAAC,4BAA4B,EAAEf,WAAW,EAC1CE,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;IACF;IAKA,aAAaW,iBAAiBC,IAAI,EAAEpB,SAAS,EAAEE,WAAW,EAAE;QAC1D,IAAI;YACF,MAAMmB,KAAK,MAAM,MAAM,CAAC;YACxB,MAAMA,GAAGC,MAAM,CAACF;QAClB,EAAE,OAAOf,OAAO;YACdD,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,CAAC,mBAAmB,EAAEf,UAAU,EAAE,EAAEoB,MAAM,EAC1ClB,eAAe;YAGnBK,QAAQC,IAAI,CAAC;QACf;IACF;IAKA,OAAOe,gBAAgBxB,KAAK,EAAEC,SAAS,EAAEE,WAAW,EAAE;QACpD,MAAMsB,aAAazB,MAAM0B,WAAW;QACpC,IAAID,eAAe,UAAUA,eAAe,OAAOA,eAAe,OAAO;YACvE,OAAO;QACT;QACA,IAAIA,eAAe,WAAWA,eAAe,OAAOA,eAAe,MAAM;YACvE,OAAO;QACT;QAEApB,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,CAAC,CAAC,EAAEhB,MAAM,6BAA6B,EAAEC,UAAU,qCAAqC,CAAC,EACzFE,eAAe;QAGnBK,QAAQC,IAAI,CAAC;IACf;AACF"}MsB,aAAazB,MAAM0B,WAAW;QACpC,IAAID,eAAe,UAAUA,eAAe,OAAOA,eAAe,OAAO;YACvE,OAAO;QACT;QACA,IAAIA,eAAe,WAAWA,eAAe,OAAOA,eAAe,MAAM;YACvE,OAAO;QACT;QAEApB,QAAQC,KAAK,CACXT,cAAcmB,WAAW,CACvB,CAAC,CAAC,EAAEhB,MAAM,6BAA6B,EAAEC,UAAU,qCAAqC,CAAC,EACzFE,eAAe;QAGnBK,QAAQC,IAAI,CAAC;IACf;AACF"}
|
package/dist/src/core/version.js
CHANGED
|
@@ -12,7 +12,7 @@ try {
|
|
|
12
12
|
BUILD_DATE = new Date().toISOString().split('T')[0];
|
|
13
13
|
} catch (error) {
|
|
14
14
|
console.warn('Warning: Could not read version from package.json, using fallback');
|
|
15
|
-
VERSION = '2.0.0-alpha.
|
|
15
|
+
VERSION = '2.0.0-alpha.91';
|
|
16
16
|
BUILD_DATE = new Date().toISOString().split('T')[0];
|
|
17
17
|
}
|
|
18
18
|
export { VERSION, BUILD_DATE };
|
|
@@ -23,4 +23,4 @@ export function displayVersion() {
|
|
|
23
23
|
console.log(getVersionString());
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
//# sourceMappingURL=version.js.
|
|
26
|
+
//# sourceMappingURL=version.js.mapp
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/core/version.
|
|
1
|
+
{"version":3,"sources":["../../../src/core/version.ts"],"sourcesContent":["/**\n * Centralized version management\n * Reads version from package.json to ensure consistency\n */\n\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\n// Get the directory of this module\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n// Read version from package.json\nlet VERSION: string;\nlet BUILD_DATE: string;\n\ntry {\n // Navigate to project root and read package.json\n const packageJsonPath = join(__dirname, '../../package.json');\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));\n VERSION = packageJson.version;\n BUILD_DATE = new Date().toISOString().split('T')[0];\n} catch (error) {\n // Fallback version if package.json can't be read\n console.warn('Warning: Could not read version from package.json, using fallback');\n VERSION = '2.0.0-alpha.91';\n BUILD_DATE = new Date().toISOString().split('T')[0];\n}\n\nexport { VERSION, BUILD_DATE };\n\n// Helper function to get formatted version string\nexport function getVersionString(includeV = true): string {\n return includeV ? `v${VERSION}` : VERSION;\n}\n\n// Helper function for version display in CLI\nexport function displayVersion(): void {\n console.log(getVersionString());\n}"],"names":["readFileSync","join","dirname","fileURLToPath","__filename","url","__dirname","VERSION","BUILD_DATE","packageJsonPath","packageJson","JSON","parse","version","Date","toISOString","split","error","console","warn","getVersionString","includeV","displayVersion","log"],"mappings":"AAKA,SAASA,YAAY,QAAQ,KAAK;AAClC,SAASC,IAAI,EAAEC,OAAO,QAAQ,OAAO;AACrC,SAASC,aAAa,QAAQ,MAAM;AAGpC,MAAMC,aAAaD,cAAc,YAAYE,GAAG;AAChD,MAAMC,YAAYJ,QAAQE;AAG1B,IAAIG;AACJ,IAAIC;AAEJ,IAAI;IAEF,MAAMC,kBAAkBR,KAAKK,WAAW;IACxC,MAAMI,cAAcC,KAAKC,KAAK,CAACZ,aAAaS,iBAAiB;IAC7DF,UAAUG,YAAYG,OAAO;IAC7BL,aAAa,IAAIM,OAAOC,WAAW,GAAGC,KAAK,CAAC,IAAI,CAAC,EAAE;AACrD,EAAE,OAAOC,OAAO;IAEdC,QAAQC,IAAI,CAAC;IACbZ,UAAU;IACVC,aAAa,IAAIM,OAAOC,WAAW,GAAGC,KAAK,CAAC,IAAI,CAAC,EAAE;AACrD;AAEA,SAAST,OAAO,EAAEC,UAAU,GAAG;AAG/B,OAAO,SAASY,iBAAiBC,WAAW,IAAI;IAC9C,OAAOA,WAAW,CAAC,CAAC,EAAEd,SAAS,GAAGA;AACpC;AAGA,OAAO,SAASe;IACdJ,QAAQK,GAAG,CAACH;AACd"}
|
|
@@ -12,6 +12,7 @@ let InMemoryStore = class InMemoryStore {
|
|
|
12
12
|
this.cleanupInterval = setInterval(()=>{
|
|
13
13
|
this.cleanup().catch((err)=>console.error(`[${new Date().toISOString()}] ERROR [in-memory-store] Cleanup failed:`, err));
|
|
14
14
|
}, 60000);
|
|
15
|
+
this.cleanupInterval.unref();
|
|
15
16
|
this.isInitialized = true;
|
|
16
17
|
console.error(`[${new Date().toISOString()}] INFO [in-memory-store] Initialized in-memory store`);
|
|
17
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/memory/in-memory-store.js"],"sourcesContent":["/**\n * In-memory store for environments where SQLite is not available\n * Provides the same API as SQLite store but data is not persistent\n */\n\nimport { sessionSerializer } from './enhanced-session-serializer.js';\n\nclass InMemoryStore {\n constructor(options = {}) {\n this.options = options;\n this.data = new Map(); // namespace -> Map(key -> entry)\n this.isInitialized = false;\n this.cleanupInterval = null;\n }\n\n async initialize() {\n if (this.isInitialized) return;\n\n // Initialize default namespace\n this.data.set('default', new Map());\n\n // Start cleanup interval for expired entries\n this.cleanupInterval = setInterval(() => {\n this.cleanup().catch((err) =>\n console.error(`[${new Date().toISOString()}] ERROR [in-memory-store] Cleanup failed:`, err),\n );\n }, 60000); // Run cleanup every minute\n\n this.isInitialized = true;\n console.error(\n `[${new Date().toISOString()}] INFO [in-memory-store] Initialized in-memory store`,\n );\n }\n\n _getNamespaceMap(namespace) {\n if (!this.data.has(namespace)) {\n this.data.set(namespace, new Map());\n }\n return this.data.get(namespace);\n }\n\n async store(key, value, options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const namespaceMap = this._getNamespaceMap(namespace);\n\n const now = Date.now();\n const ttl = options.ttl || null;\n const expiresAt = ttl ? now + ttl * 1000 : null;\n const valueStr = typeof value === 'string' ? value : sessionSerializer.serializer.serialize(value);\n\n const entry = {\n key,\n value: valueStr,\n namespace,\n metadata: options.metadata || null,\n createdAt: namespaceMap.has(key) ? namespaceMap.get(key).createdAt : now,\n updatedAt: now,\n accessedAt: now,\n accessCount: namespaceMap.has(key) ? namespaceMap.get(key).accessCount + 1 : 1,\n ttl,\n expiresAt,\n };\n\n namespaceMap.set(key, entry);\n\n return {\n success: true,\n id: `${namespace}:${key}`,\n size: valueStr.length,\n };\n }\n\n async retrieve(key, options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const namespaceMap = this._getNamespaceMap(namespace);\n\n const entry = namespaceMap.get(key);\n\n if (!entry) {\n return null;\n }\n\n // Check if expired\n if (entry.expiresAt && entry.expiresAt < Date.now()) {\n namespaceMap.delete(key);\n return null;\n }\n\n // Update access stats\n entry.accessedAt = Date.now();\n entry.accessCount++;\n\n // Try to deserialize, fall back to raw string\n try {\n return sessionSerializer.serializer.deserialize(entry.value);\n } catch {\n return entry.value;\n }\n }\n\n async list(options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const limit = options.limit || 100;\n const namespaceMap = this._getNamespaceMap(namespace);\n\n const entries = Array.from(namespaceMap.values())\n .filter((entry) => !entry.expiresAt || entry.expiresAt > Date.now())\n .sort((a, b) => b.updatedAt - a.updatedAt)\n .slice(0, limit);\n\n return entries.map((entry) => ({\n key: entry.key,\n value: this._tryParseJson(entry.value),\n namespace: entry.namespace,\n metadata: entry.metadata,\n createdAt: new Date(entry.createdAt),\n updatedAt: new Date(entry.updatedAt),\n accessCount: entry.accessCount,\n }));\n }\n\n async delete(key, options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const namespaceMap = this._getNamespaceMap(namespace);\n\n return namespaceMap.delete(key);\n }\n\n async search(pattern, options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const limit = options.limit || 50;\n const namespaceMap = this._getNamespaceMap(namespace);\n\n const searchLower = pattern.toLowerCase();\n const results = [];\n\n for (const [key, entry] of namespaceMap.entries()) {\n // Skip expired entries\n if (entry.expiresAt && entry.expiresAt < Date.now()) {\n continue;\n }\n\n // Search in key and value\n if (\n key.toLowerCase().includes(searchLower) ||\n entry.value.toLowerCase().includes(searchLower)\n ) {\n results.push({\n key: entry.key,\n value: this._tryParseJson(entry.value),\n namespace: entry.namespace,\n score: entry.accessCount,\n updatedAt: new Date(entry.updatedAt),\n });\n }\n\n if (results.length >= limit) {\n break;\n }\n }\n\n // Sort by score (access count) and updated time\n return results.sort((a, b) => {\n if (a.score !== b.score) return b.score - a.score;\n return b.updatedAt - a.updatedAt;\n });\n }\n\n async cleanup() {\n await this.initialize();\n\n let cleaned = 0;\n const now = Date.now();\n\n for (const [namespace, namespaceMap] of this.data.entries()) {\n for (const [key, entry] of namespaceMap.entries()) {\n if (entry.expiresAt && entry.expiresAt <= now) {\n namespaceMap.delete(key);\n cleaned++;\n }\n }\n }\n\n return cleaned;\n }\n\n _tryParseJson(value) {\n try {\n return sessionSerializer.serializer.deserialize(value);\n } catch {\n return value;\n }\n }\n\n close() {\n if (this.cleanupInterval) {\n clearInterval(this.cleanupInterval);\n this.cleanupInterval = null;\n }\n this.data.clear();\n this.isInitialized = false;\n }\n}\n\nexport { InMemoryStore };\nexport default InMemoryStore;\n"],"names":["sessionSerializer","InMemoryStore","options","data","Map","isInitialized","cleanupInterval","initialize","set","setInterval","cleanup","catch","err","console","error","Date","toISOString","_getNamespaceMap","namespace","has","get","store","key","value","namespaceMap","now","ttl","expiresAt","valueStr","serializer","serialize","entry","metadata","createdAt","updatedAt","accessedAt","accessCount","success","id","size","length","retrieve","delete","deserialize","list","limit","entries","Array","from","values","filter","sort","a","b","slice","map","_tryParseJson","search","pattern","searchLower","toLowerCase","results","includes","push","score","cleaned","close","clearInterval","clear"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/memory/in-memory-store.js"],"sourcesContent":["/**\n * In-memory store for environments where SQLite is not available\n * Provides the same API as SQLite store but data is not persistent\n */\n\nimport { sessionSerializer } from './enhanced-session-serializer.js';\n\nclass InMemoryStore {\n constructor(options = {}) {\n this.options = options;\n this.data = new Map(); // namespace -> Map(key -> entry)\n this.isInitialized = false;\n this.cleanupInterval = null;\n }\n\n async initialize() {\n if (this.isInitialized) return;\n\n // Initialize default namespace\n this.data.set('default', new Map());\n\n // Start cleanup interval for expired entries\n // Use unref() so the interval doesn't prevent process exit\n this.cleanupInterval = setInterval(() => {\n this.cleanup().catch((err) =>\n console.error(`[${new Date().toISOString()}] ERROR [in-memory-store] Cleanup failed:`, err),\n );\n }, 60000); // Run cleanup every minute\n this.cleanupInterval.unref(); // Don't keep process alive just for cleanup\n\n this.isInitialized = true;\n console.error(\n `[${new Date().toISOString()}] INFO [in-memory-store] Initialized in-memory store`,\n );\n }\n\n _getNamespaceMap(namespace) {\n if (!this.data.has(namespace)) {\n this.data.set(namespace, new Map());\n }\n return this.data.get(namespace);\n }\n\n async store(key, value, options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const namespaceMap = this._getNamespaceMap(namespace);\n\n const now = Date.now();\n const ttl = options.ttl || null;\n const expiresAt = ttl ? now + ttl * 1000 : null;\n const valueStr = typeof value === 'string' ? value : sessionSerializer.serializer.serialize(value);\n\n const entry = {\n key,\n value: valueStr,\n namespace,\n metadata: options.metadata || null,\n createdAt: namespaceMap.has(key) ? namespaceMap.get(key).createdAt : now,\n updatedAt: now,\n accessedAt: now,\n accessCount: namespaceMap.has(key) ? namespaceMap.get(key).accessCount + 1 : 1,\n ttl,\n expiresAt,\n };\n\n namespaceMap.set(key, entry);\n\n return {\n success: true,\n id: `${namespace}:${key}`,\n size: valueStr.length,\n };\n }\n\n async retrieve(key, options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const namespaceMap = this._getNamespaceMap(namespace);\n\n const entry = namespaceMap.get(key);\n\n if (!entry) {\n return null;\n }\n\n // Check if expired\n if (entry.expiresAt && entry.expiresAt < Date.now()) {\n namespaceMap.delete(key);\n return null;\n }\n\n // Update access stats\n entry.accessedAt = Date.now();\n entry.accessCount++;\n\n // Try to deserialize, fall back to raw string\n try {\n return sessionSerializer.serializer.deserialize(entry.value);\n } catch {\n return entry.value;\n }\n }\n\n async list(options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const limit = options.limit || 100;\n const namespaceMap = this._getNamespaceMap(namespace);\n\n const entries = Array.from(namespaceMap.values())\n .filter((entry) => !entry.expiresAt || entry.expiresAt > Date.now())\n .sort((a, b) => b.updatedAt - a.updatedAt)\n .slice(0, limit);\n\n return entries.map((entry) => ({\n key: entry.key,\n value: this._tryParseJson(entry.value),\n namespace: entry.namespace,\n metadata: entry.metadata,\n createdAt: new Date(entry.createdAt),\n updatedAt: new Date(entry.updatedAt),\n accessCount: entry.accessCount,\n }));\n }\n\n async delete(key, options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const namespaceMap = this._getNamespaceMap(namespace);\n\n return namespaceMap.delete(key);\n }\n\n async search(pattern, options = {}) {\n await this.initialize();\n\n const namespace = options.namespace || 'default';\n const limit = options.limit || 50;\n const namespaceMap = this._getNamespaceMap(namespace);\n\n const searchLower = pattern.toLowerCase();\n const results = [];\n\n for (const [key, entry] of namespaceMap.entries()) {\n // Skip expired entries\n if (entry.expiresAt && entry.expiresAt < Date.now()) {\n continue;\n }\n\n // Search in key and value\n if (\n key.toLowerCase().includes(searchLower) ||\n entry.value.toLowerCase().includes(searchLower)\n ) {\n results.push({\n key: entry.key,\n value: this._tryParseJson(entry.value),\n namespace: entry.namespace,\n score: entry.accessCount,\n updatedAt: new Date(entry.updatedAt),\n });\n }\n\n if (results.length >= limit) {\n break;\n }\n }\n\n // Sort by score (access count) and updated time\n return results.sort((a, b) => {\n if (a.score !== b.score) return b.score - a.score;\n return b.updatedAt - a.updatedAt;\n });\n }\n\n async cleanup() {\n await this.initialize();\n\n let cleaned = 0;\n const now = Date.now();\n\n for (const [namespace, namespaceMap] of this.data.entries()) {\n for (const [key, entry] of namespaceMap.entries()) {\n if (entry.expiresAt && entry.expiresAt <= now) {\n namespaceMap.delete(key);\n cleaned++;\n }\n }\n }\n\n return cleaned;\n }\n\n _tryParseJson(value) {\n try {\n return sessionSerializer.serializer.deserialize(value);\n } catch {\n return value;\n }\n }\n\n close() {\n if (this.cleanupInterval) {\n clearInterval(this.cleanupInterval);\n this.cleanupInterval = null;\n }\n this.data.clear();\n this.isInitialized = false;\n }\n}\n\nexport { InMemoryStore };\nexport default InMemoryStore;\n"],"names":["sessionSerializer","InMemoryStore","options","data","Map","isInitialized","cleanupInterval","initialize","set","setInterval","cleanup","catch","err","console","error","Date","toISOString","unref","_getNamespaceMap","namespace","has","get","store","key","value","namespaceMap","now","ttl","expiresAt","valueStr","serializer","serialize","entry","metadata","createdAt","updatedAt","accessedAt","accessCount","success","id","size","length","retrieve","delete","deserialize","list","limit","entries","Array","from","values","filter","sort","a","b","slice","map","_tryParseJson","search","pattern","searchLower","toLowerCase","results","includes","push","score","cleaned","close","clearInterval","clear"],"mappings":"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"}
|