claude-flow 3.5.81 → 3.5.82

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.81",
3
+ "version": "3.5.82",
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",
@@ -3365,14 +3365,14 @@ const statuslineCommand = {
3365
3365
  const isWindows = process.platform === 'win32';
3366
3366
  try {
3367
3367
  const psCmd = isWindows
3368
- ? 'tasklist /FI "IMAGENAME eq node.exe" 2>NUL | findstr /I /C:"node" >NUL && echo 1 || echo 0'
3368
+ ? 'tasklist /FI "IMAGENAME eq node.exe" /NH 2>NUL | find /c /v "" 2>NUL || echo 0'
3369
3369
  : 'ps aux 2>/dev/null | grep -c agentic-flow || echo "0"';
3370
- const ps = execSync(psCmd, { encoding: 'utf-8' });
3370
+ const ps = execSync(psCmd, { encoding: 'utf-8', timeout: 3000 });
3371
3371
  activeAgents = Math.max(0, parseInt(ps.trim()) - 1);
3372
3372
  coordinationActive = activeAgents > 0;
3373
3373
  }
3374
3374
  catch {
3375
- // Ignore
3375
+ // ps/tasklist unavailable or timed out — report zero
3376
3376
  }
3377
3377
  return { activeAgents, maxAgents, coordinationActive };
3378
3378
  }
@@ -344,13 +344,13 @@ const initAction = async (ctx) => {
344
344
  }
345
345
  }
346
346
  if (!startDaemon && !startAll) {
347
- // Next steps (only if not auto-starting)
347
+ const bin = (process.argv[1] || '').includes('ruflo') ? 'ruflo' : 'claude-flow';
348
348
  output.writeln(output.bold('Next steps:'));
349
349
  output.printList([
350
- `Run ${output.highlight('claude-flow daemon start')} to start background workers`,
351
- `Run ${output.highlight('claude-flow memory init')} to initialize memory database`,
352
- `Run ${output.highlight('claude-flow swarm init')} to initialize a swarm`,
353
- `Or use ${output.highlight('claude-flow init --start-all')} to do all of the above`,
350
+ `Run ${output.highlight(`${bin} daemon start`)} to start background workers`,
351
+ `Run ${output.highlight(`${bin} memory init`)} to initialize memory database`,
352
+ `Run ${output.highlight(`${bin} swarm init`)} to initialize a swarm`,
353
+ `Or use ${output.highlight(`${bin} init --start-all`)} to do all of the above`,
354
354
  options.components.settings ? `Review ${output.highlight('.claude/settings.json')} for hook configurations` : '',
355
355
  ].filter(Boolean));
356
356
  }
@@ -65,7 +65,7 @@ const CAPABILITY_CATALOG = {
65
65
  'memory-knowledge': {
66
66
  name: 'Memory & Knowledge',
67
67
  description: 'Persistent memory with HNSW vector search, AgentDB storage, and embeddings.',
68
- tools: ['memory_store', 'memory_retrieve', 'memory_search', 'memory_list', 'memory_delete', 'memory_init', 'memory_export', 'memory_import', 'memory_stats', 'memory_compact', 'memory_namespace'],
68
+ tools: ['memory_store', 'memory_retrieve', 'memory_search', 'memory_list', 'memory_delete', 'memory_init', 'memory_export', 'memory_import_claude', 'memory_stats', 'memory_compact', 'memory_namespace'],
69
69
  commands: ['memory store', 'memory retrieve', 'memory search', 'memory list', 'memory delete', 'memory init'],
70
70
  agents: ['swarm-memory-manager', 'v3-memory-specialist'],
71
71
  skills: ['v3-memory-unification', 'agentdb-advanced', 'agentdb-vector-search', 'agentdb-memory-patterns', 'agentdb-learning'],
@@ -2196,6 +2196,21 @@ export const hooksTrajectoryStart = {
2196
2196
  startedAt,
2197
2197
  };
2198
2198
  activeTrajectories.set(trajectoryId, trajectory);
2199
+ // Persist pending trajectory to disk so it survives MCP restarts
2200
+ const storeFn = await getRealStoreFunction();
2201
+ if (storeFn) {
2202
+ try {
2203
+ await storeFn({
2204
+ key: `trajectory-pending-${trajectoryId}`,
2205
+ value: JSON.stringify(trajectory),
2206
+ namespace: 'trajectories',
2207
+ tags: [agent, 'pending', 'sona-trajectory'],
2208
+ });
2209
+ }
2210
+ catch {
2211
+ // Best-effort persistence — trajectory still lives in-memory
2212
+ }
2213
+ }
2199
2214
  return {
2200
2215
  trajectoryId,
2201
2216
  task,
@@ -2607,8 +2622,19 @@ export const hooksIntelligenceStats = {
2607
2622
  const moe = await getMoERouter();
2608
2623
  const flash = await getFlashAttention();
2609
2624
  const lora = await getLoRAAdapter();
2610
- // Fallback to memory store for legacy data
2611
- const memoryStats = getIntelligenceStatsFromMemory();
2625
+ // Fallback to memory store for legacy data (may not exist yet)
2626
+ let memoryStats;
2627
+ try {
2628
+ memoryStats = getIntelligenceStatsFromMemory();
2629
+ }
2630
+ catch {
2631
+ memoryStats = {
2632
+ trajectories: { total: 0, successful: 0 },
2633
+ patterns: { learned: 0, categories: {} },
2634
+ memory: { indexSize: 0, totalAccessCount: 0, memorySizeBytes: 0 },
2635
+ routing: { decisions: 0, avgConfidence: 0 },
2636
+ };
2637
+ }
2612
2638
  // SONA stats from real implementation
2613
2639
  let sonaStats = {
2614
2640
  trajectoriesTotal: memoryStats.trajectories.total,
@@ -3304,26 +3330,7 @@ export const hooksWorkerDispatch = {
3304
3330
  startedAt: new Date(),
3305
3331
  };
3306
3332
  activeWorkers.set(workerId, worker);
3307
- // Update worker progress in background
3308
- if (background) {
3309
- setTimeout(() => {
3310
- const w = activeWorkers.get(workerId);
3311
- if (w) {
3312
- w.progress = 50;
3313
- w.phase = 'processing';
3314
- }
3315
- }, 500);
3316
- setTimeout(() => {
3317
- const w = activeWorkers.get(workerId);
3318
- if (w) {
3319
- w.progress = 100;
3320
- w.phase = 'completed';
3321
- w.status = 'completed';
3322
- w.completedAt = new Date();
3323
- }
3324
- }, 1500);
3325
- }
3326
- else {
3333
+ if (!background) {
3327
3334
  worker.progress = 100;
3328
3335
  worker.phase = 'completed';
3329
3336
  worker.status = 'completed';
@@ -3340,8 +3347,9 @@ export const hooksWorkerDispatch = {
3340
3347
  estimatedDuration: config.estimatedDuration,
3341
3348
  capabilities: config.capabilities,
3342
3349
  },
3343
- status: background ? 'dispatched' : 'completed',
3350
+ status: background ? 'scheduled' : 'completed',
3344
3351
  background,
3352
+ note: background ? 'Worker scheduled. Use hooks_worker-status to check progress. Start the daemon (daemon start) for real background execution.' : undefined,
3345
3353
  timestamp: new Date().toISOString(),
3346
3354
  };
3347
3355
  },
@@ -251,6 +251,9 @@ export const neuralTools = [
251
251
  totalPatterns: Object.keys(store.patterns).length,
252
252
  epochs,
253
253
  trainedAt: model.trainedAt,
254
+ ...(embeddingServiceName === 'hash-fallback' || embeddingServiceName === 'none' ? {
255
+ platformNote: 'ONNX embeddings not available — using hash-based fallback. Install @claude-flow/embeddings and run "embeddings init --download" for semantic search.',
256
+ } : {}),
254
257
  };
255
258
  },
256
259
  },
@@ -284,11 +284,13 @@ export const systemTools = [
284
284
  const metrics = loadMetrics();
285
285
  const checks = [];
286
286
  const projectCwd = getProjectCwd();
287
- // Memory DB check — verify the store file exists
287
+ // Memory DB check — verify any supported store file exists
288
288
  {
289
289
  const t0 = performance.now();
290
- const memoryDbPath = join(projectCwd, '.claude-flow', 'memory', 'store.json');
291
- const memoryExists = existsSync(memoryDbPath);
290
+ const legacyPath = join(projectCwd, '.claude-flow', 'memory', 'store.json');
291
+ const agentDbPath = join(projectCwd, '.claude-flow', 'memory', 'agentdb.sqlite');
292
+ const rvfPath = join(projectCwd, '.claude-flow', 'memory', 'store.rvf');
293
+ const memoryExists = existsSync(legacyPath) || existsSync(agentDbPath) || existsSync(rvfPath);
292
294
  const elapsed = performance.now() - t0;
293
295
  checks.push({
294
296
  name: 'memory',
@@ -9,6 +9,10 @@
9
9
  * where process.cwd() may resolve to '/') over the real process.cwd().
10
10
  */
11
11
  export function getProjectCwd() {
12
- return process.env.CLAUDE_FLOW_CWD || process.cwd();
12
+ const envCwd = process.env.CLAUDE_FLOW_CWD;
13
+ if (envCwd && envCwd !== '/' && envCwd !== process.env.HOME) {
14
+ return envCwd;
15
+ }
16
+ return process.cwd();
13
17
  }
14
18
  //# sourceMappingURL=types.js.map
@@ -78,13 +78,15 @@ async function getRegistry(dbPath) {
78
78
  dbPath: dbPath || getDbPath(),
79
79
  embeddingModel: 'Xenova/all-MiniLM-L6-v2',
80
80
  dimension: 384,
81
+ vectorBackend: 'auto',
81
82
  controllers: {
82
83
  reasoningBank: true,
83
84
  learningBridge: false,
84
85
  tieredCache: true,
85
86
  hierarchicalMemory: true,
86
87
  memoryConsolidation: true,
87
- memoryGraph: true, // issue #1214: enable MemoryGraph for graph-aware ranking
88
+ memoryGraph: true,
89
+ vectorBackend: true,
88
90
  },
89
91
  });
90
92
  }
@@ -10,7 +10,7 @@
10
10
  * - testgaps: Test coverage analysis (20 min interval)
11
11
  */
12
12
  import { EventEmitter } from 'events';
13
- import { existsSync, mkdirSync, writeFileSync, readFileSync, appendFileSync, unlinkSync } from 'fs';
13
+ import { existsSync, mkdirSync, writeFileSync, readFileSync, appendFileSync, unlinkSync, renameSync } from 'fs';
14
14
  import { cpus } from 'os';
15
15
  import { join } from 'path';
16
16
  import { HeadlessWorkerExecutor, isHeadlessWorker, } from './headless-worker-executor.js';
@@ -903,7 +903,9 @@ export class WorkerDaemon extends EventEmitter {
903
903
  savedAt: new Date().toISOString(),
904
904
  };
905
905
  try {
906
- writeFileSync(this.config.stateFile, JSON.stringify(state, null, 2));
906
+ const tmpFile = this.config.stateFile + '.tmp';
907
+ writeFileSync(tmpFile, JSON.stringify(state, null, 2));
908
+ renameSync(tmpFile, this.config.stateFile);
907
909
  }
908
910
  catch (error) {
909
911
  this.log('error', `Failed to save state: ${error}`);
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-flow/cli",
3
- "version": "3.5.81",
3
+ "version": "3.5.82",
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",