claude-flow 3.5.18 → 3.5.19

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-flow",
3
- "version": "3.5.18",
3
+ "version": "3.5.19",
4
4
  "description": "Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -59,12 +59,13 @@ async function checkNpmVersion() {
59
59
  }
60
60
  // Check config file
61
61
  async function checkConfigFile() {
62
- const configPaths = [
62
+ // JSON configs (parse-validated)
63
+ const jsonPaths = [
63
64
  '.claude-flow/config.json',
64
65
  'claude-flow.config.json',
65
66
  '.claude-flow.json'
66
67
  ];
67
- for (const configPath of configPaths) {
68
+ for (const configPath of jsonPaths) {
68
69
  if (existsSync(configPath)) {
69
70
  try {
70
71
  const content = readFileSync(configPath, 'utf8');
@@ -76,6 +77,17 @@ async function checkConfigFile() {
76
77
  }
77
78
  }
78
79
  }
80
+ // YAML configs (existence-checked only — no heavy yaml parser dependency)
81
+ const yamlPaths = [
82
+ '.claude-flow/config.yaml',
83
+ '.claude-flow/config.yml',
84
+ 'claude-flow.config.yaml'
85
+ ];
86
+ for (const configPath of yamlPaths) {
87
+ if (existsSync(configPath)) {
88
+ return { name: 'Config File', status: 'pass', message: `Found: ${configPath}` };
89
+ }
90
+ }
79
91
  return { name: 'Config File', status: 'warn', message: 'No config file (using defaults)', fix: 'claude-flow config init' };
80
92
  }
81
93
  // Check daemon status
@@ -128,9 +140,14 @@ async function checkApiKeys() {
128
140
  found.push(key);
129
141
  }
130
142
  }
143
+ // Detect Claude Code environment — API keys are managed internally
144
+ const inClaudeCode = !!(process.env.CLAUDE_CODE || process.env.CLAUDE_PROJECT_DIR || process.env.MCP_SESSION_ID);
131
145
  if (found.includes('ANTHROPIC_API_KEY') || found.includes('CLAUDE_API_KEY')) {
132
146
  return { name: 'API Keys', status: 'pass', message: `Found: ${found.join(', ')}` };
133
147
  }
148
+ else if (inClaudeCode) {
149
+ return { name: 'API Keys', status: 'pass', message: 'Claude Code (managed internally)' };
150
+ }
134
151
  else if (found.length > 0) {
135
152
  return { name: 'API Keys', status: 'warn', message: `Found: ${found.join(', ')} (no Claude key)`, fix: 'export ANTHROPIC_API_KEY=your_key' };
136
153
  }
@@ -171,12 +188,12 @@ async function checkMcpServers() {
171
188
  const content = JSON.parse(readFileSync(configPath, 'utf8'));
172
189
  const servers = content.mcpServers || content.servers || {};
173
190
  const count = Object.keys(servers).length;
174
- const hasClaudeFlow = 'claude-flow' in servers || 'claude-flow_alpha' in servers;
191
+ const hasClaudeFlow = 'claude-flow' in servers || 'claude-flow_alpha' in servers || 'ruflo' in servers || 'ruflo_alpha' in servers;
175
192
  if (hasClaudeFlow) {
176
- return { name: 'MCP Servers', status: 'pass', message: `${count} servers (claude-flow configured)` };
193
+ return { name: 'MCP Servers', status: 'pass', message: `${count} servers (ruflo configured)` };
177
194
  }
178
195
  else {
179
- return { name: 'MCP Servers', status: 'warn', message: `${count} servers (claude-flow not found)`, fix: 'claude mcp add claude-flow npx @claude-flow/cli@v3alpha mcp start' };
196
+ return { name: 'MCP Servers', status: 'warn', message: `${count} servers (ruflo not found)`, fix: 'claude mcp add ruflo -- npx -y ruflo@latest mcp start' };
180
197
  }
181
198
  }
182
199
  catch {
@@ -81,7 +81,7 @@ export const agentdbControllers = {
81
81
  const bridge = await getBridge();
82
82
  const controllers = await bridge.bridgeListControllers();
83
83
  if (!controllers)
84
- return { available: false, controllers: [], error: 'Bridge not available' };
84
+ return { available: false, controllers: [], error: 'AgentDB bridge not available — @claude-flow/memory not installed or missing controller-registry. Use memory_store/memory_search tools instead.' };
85
85
  return {
86
86
  available: true,
87
87
  controllers,
@@ -118,7 +118,7 @@ export const agentdbPatternStore = {
118
118
  type: validateString(params.type, 'type', 200) ?? 'general',
119
119
  confidence: validateScore(params.confidence, 0.8),
120
120
  });
121
- return result ?? { success: false, error: 'Bridge not available' };
121
+ return result ?? { success: false, error: 'AgentDB bridge not available. Use memory_store/memory_search instead.' };
122
122
  }
123
123
  catch (error) {
124
124
  return { success: false, error: sanitizeError(error) };
@@ -182,7 +182,7 @@ export const agentdbFeedback = {
182
182
  quality: validateScore(params.quality, 0.85),
183
183
  agent: validateString(params.agent, 'agent', 200) ?? undefined,
184
184
  });
185
- return result ?? { success: false, error: 'Bridge not available' };
185
+ return result ?? { success: false, error: 'AgentDB bridge not available. Use memory_store/memory_search instead.' };
186
186
  }
187
187
  catch (error) {
188
188
  return { success: false, error: sanitizeError(error) };
@@ -221,7 +221,7 @@ export const agentdbCausalEdge = {
221
221
  relation,
222
222
  weight: typeof params.weight === 'number' ? validateScore(params.weight, 0.5) : undefined,
223
223
  });
224
- return result ?? { success: false, error: 'Bridge not available' };
224
+ return result ?? { success: false, error: 'AgentDB bridge not available. Use memory_store/memory_search instead.' };
225
225
  }
226
226
  catch (error) {
227
227
  return { success: false, error: sanitizeError(error) };
@@ -279,7 +279,7 @@ export const agentdbSessionStart = {
279
279
  sessionId,
280
280
  context: validateString(params.context, 'context', 10_000) ?? undefined,
281
281
  });
282
- return result ?? { success: false, error: 'Bridge not available' };
282
+ return result ?? { success: false, error: 'AgentDB bridge not available. Use memory_store/memory_search instead.' };
283
283
  }
284
284
  catch (error) {
285
285
  return { success: false, error: sanitizeError(error) };
@@ -310,7 +310,7 @@ export const agentdbSessionEnd = {
310
310
  summary: validateString(params.summary, 'summary', 50_000) ?? undefined,
311
311
  tasksCompleted: validatePositiveInt(params.tasksCompleted, 0, 10_000),
312
312
  });
313
- return result ?? { success: false, error: 'Bridge not available' };
313
+ return result ?? { success: false, error: 'AgentDB bridge not available. Use memory_store/memory_search instead.' };
314
314
  }
315
315
  catch (error) {
316
316
  return { success: false, error: sanitizeError(error) };
@@ -349,7 +349,7 @@ export const agentdbHierarchicalStore = {
349
349
  }
350
350
  const bridge = await getBridge();
351
351
  const result = await bridge.bridgeHierarchicalStore({ key, value, tier });
352
- return result ?? { success: false, error: 'Bridge not available' };
352
+ return result ?? { success: false, error: 'AgentDB bridge not available. Use memory_store/memory_search instead.' };
353
353
  }
354
354
  catch (error) {
355
355
  return { success: false, error: sanitizeError(error) };
@@ -384,7 +384,7 @@ export const agentdbHierarchicalRecall = {
384
384
  tier: tier ?? undefined,
385
385
  topK: validatePositiveInt(params.topK, 5, MAX_TOP_K),
386
386
  });
387
- return result ?? { results: [], error: 'Bridge not available' };
387
+ return result ?? { results: [], error: 'AgentDB bridge not available. Use memory_search instead.' };
388
388
  }
389
389
  catch (error) {
390
390
  return { results: [], error: sanitizeError(error) };
@@ -409,7 +409,7 @@ export const agentdbConsolidate = {
409
409
  minAge: typeof params.minAge === 'number' ? Math.max(0, params.minAge) : undefined,
410
410
  maxEntries: validatePositiveInt(params.maxEntries, 1000, 10_000),
411
411
  });
412
- return result ?? { success: false, error: 'Bridge not available' };
412
+ return result ?? { success: false, error: 'AgentDB bridge not available. Use memory_store/memory_search instead.' };
413
413
  }
414
414
  catch (error) {
415
415
  return { success: false, error: sanitizeError(error) };
@@ -475,7 +475,7 @@ export const agentdbBatch = {
475
475
  operation,
476
476
  entries: validatedEntries,
477
477
  });
478
- return result ?? { success: false, error: 'Bridge not available' };
478
+ return result ?? { success: false, error: 'AgentDB bridge not available. Use memory_store/memory_search instead.' };
479
479
  }
480
480
  catch (error) {
481
481
  return { success: false, error: sanitizeError(error) };
@@ -504,7 +504,7 @@ export const agentdbContextSynthesize = {
504
504
  query,
505
505
  maxEntries: validatePositiveInt(params.maxEntries, 10, MAX_TOP_K),
506
506
  });
507
- return result ?? { success: false, error: 'Bridge not available' };
507
+ return result ?? { success: false, error: 'AgentDB bridge not available. Use memory_store/memory_search instead.' };
508
508
  }
509
509
  catch (error) {
510
510
  return { success: false, error: sanitizeError(error) };
@@ -529,7 +529,7 @@ export const agentdbSemanticRoute = {
529
529
  return { route: null, error: 'input is required (non-empty string, max 10KB)' };
530
530
  const bridge = await getBridge();
531
531
  const result = await bridge.bridgeSemanticRoute({ input });
532
- return result ?? { route: null, error: 'Bridge not available' };
532
+ return result ?? { route: null, error: 'AgentDB bridge not available. Use hooks route instead.' };
533
533
  }
534
534
  catch (error) {
535
535
  return { route: null, error: sanitizeError(error) };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-flow/cli",
3
- "version": "3.5.18",
3
+ "version": "3.5.19",
4
4
  "type": "module",
5
5
  "description": "Ruflo CLI - Enterprise AI agent orchestration with 60+ specialized agents, swarm coordination, MCP server, self-learning hooks, and vector memory for Claude Code",
6
6
  "main": "dist/src/index.js",