claude-flow 3.10.45 → 3.10.46
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 +1 -1
- package/v3/@claude-flow/cli/dist/src/commands/swarm.js +5 -1
- package/v3/@claude-flow/cli/dist/src/init/executor.js +34 -2
- package/v3/@claude-flow/cli/dist/src/services/container-worker-pool.d.ts +8 -1
- package/v3/@claude-flow/cli/dist/src/services/container-worker-pool.js +9 -3
- package/v3/@claude-flow/cli/package.json +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-flow",
|
|
3
|
-
"version": "3.10.
|
|
3
|
+
"version": "3.10.46",
|
|
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",
|
|
@@ -497,7 +497,11 @@ const startCommand = {
|
|
|
497
497
|
catch (err) {
|
|
498
498
|
spinner.fail('MCP swarm_init failed — swarm metadata saved locally only');
|
|
499
499
|
output.writeln(output.dim(` Error: ${err instanceof Error ? err.message : String(err)}`));
|
|
500
|
-
|
|
500
|
+
// #2370: the old hint referenced the deprecated `claude-flow@v3alpha`
|
|
501
|
+
// dist-tag which now resolves to a pre-rename package. Use the current
|
|
502
|
+
// `ruflo@latest` and force a fresh fetch with `-y` so npx doesn't pick
|
|
503
|
+
// a stale local install.
|
|
504
|
+
output.writeln(output.dim(' The MCP server may not be running. Start it with: claude mcp add claude-flow -- npx -y ruflo@latest mcp start'));
|
|
501
505
|
}
|
|
502
506
|
// Persist swarm state to disk so `swarm status` can read it
|
|
503
507
|
const swarmDir = path.join(process.cwd(), '.swarm');
|
|
@@ -751,7 +751,15 @@ function detectExistingRufloMCP(targetDir) {
|
|
|
751
751
|
// 'claude-flow', a second `ruflo init` must still recognise the existing install.
|
|
752
752
|
if (parsed.mcpServers && typeof parsed.mcpServers === 'object') {
|
|
753
753
|
const servers = parsed.mcpServers;
|
|
754
|
-
|
|
754
|
+
// #2369: also recognise the legacy dist-tag keys generated by
|
|
755
|
+
// pre-rename installs (claude-flow ≤ 2.x). Without these the
|
|
756
|
+
// detection walks parent dirs, doesn't match, and writes a NEW
|
|
757
|
+
// claude-flow-keyed config — both servers then run under
|
|
758
|
+
// different prefixes producing duplicate-tool noise.
|
|
759
|
+
if ('claude-flow' in servers ||
|
|
760
|
+
'ruflo' in servers ||
|
|
761
|
+
'claude-flow@alpha' in servers ||
|
|
762
|
+
'claude-flow@v3alpha' in servers)
|
|
755
763
|
return candidate;
|
|
756
764
|
}
|
|
757
765
|
// (b) #1840: Claude Code project-scoped registrations under
|
|
@@ -768,7 +776,11 @@ function detectExistingRufloMCP(targetDir) {
|
|
|
768
776
|
if (!projectMcp || typeof projectMcp !== 'object')
|
|
769
777
|
continue;
|
|
770
778
|
const mcp = projectMcp;
|
|
771
|
-
|
|
779
|
+
// #2369: legacy dist-tag keys also count as already-registered.
|
|
780
|
+
if (!('claude-flow' in mcp) &&
|
|
781
|
+
!('ruflo' in mcp) &&
|
|
782
|
+
!('claude-flow@alpha' in mcp) &&
|
|
783
|
+
!('claude-flow@v3alpha' in mcp))
|
|
772
784
|
continue;
|
|
773
785
|
if (targetAncestors.has(normalizeProjectKey(projectKey))) {
|
|
774
786
|
return `${candidate} (projects[${projectKey}])`;
|
|
@@ -795,6 +807,26 @@ function normalizeProjectKey(p) {
|
|
|
795
807
|
async function writeMCPConfig(targetDir, options, result) {
|
|
796
808
|
const mcpPath = path.join(targetDir, '.mcp.json');
|
|
797
809
|
if (fs.existsSync(mcpPath) && !options.force) {
|
|
810
|
+
// #2369: an existing .mcp.json from a pre-rename install is the most
|
|
811
|
+
// common cause of "autopilot tools missing after init" reports. Parse
|
|
812
|
+
// the existing file and surface a loud, specific message naming the
|
|
813
|
+
// stale key so users know to either delete the file or re-run with
|
|
814
|
+
// --force. Without this they get a silent skip and no warning.
|
|
815
|
+
try {
|
|
816
|
+
const parsed = JSON.parse(fs.readFileSync(mcpPath, 'utf-8'));
|
|
817
|
+
const servers = parsed?.mcpServers;
|
|
818
|
+
if (servers && typeof servers === 'object') {
|
|
819
|
+
const staleKeys = ['claude-flow@alpha', 'claude-flow@v3alpha'].filter(k => k in servers);
|
|
820
|
+
if (staleKeys.length > 0) {
|
|
821
|
+
result.skipped.push(`.mcp.json (existing file uses deprecated key '${staleKeys[0]}' — autopilot/browser/wasm-agent tools will be missing; ` +
|
|
822
|
+
`delete .mcp.json and re-run, or re-run with --force to overwrite)`);
|
|
823
|
+
return;
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
catch {
|
|
828
|
+
// Existing file isn't valid JSON — fall through to the generic skip.
|
|
829
|
+
}
|
|
798
830
|
result.skipped.push('.mcp.json');
|
|
799
831
|
return;
|
|
800
832
|
}
|
|
@@ -161,7 +161,14 @@ export declare class ContainerWorkerPool extends EventEmitter {
|
|
|
161
161
|
*/
|
|
162
162
|
private execInContainer;
|
|
163
163
|
/**
|
|
164
|
-
* Build worker command for container execution
|
|
164
|
+
* Build worker command for container execution.
|
|
165
|
+
*
|
|
166
|
+
* #2371: the old command spawned `npx claude-flow@v3alpha daemon trigger`,
|
|
167
|
+
* which (a) referenced a deprecated dist-tag pointing at the pre-rename
|
|
168
|
+
* package, and (b) omitted `-y`, so npx could silently fall back to a
|
|
169
|
+
* locally-installed stale `claude-flow` without fetching the published
|
|
170
|
+
* version. Workers were running pre-autopilot / pre-browser builds.
|
|
171
|
+
* Use the current `ruflo@latest` and force a fresh resolution with `-y`.
|
|
165
172
|
*/
|
|
166
173
|
private buildWorkerCommand;
|
|
167
174
|
/**
|
|
@@ -444,12 +444,18 @@ export class ContainerWorkerPool extends EventEmitter {
|
|
|
444
444
|
});
|
|
445
445
|
}
|
|
446
446
|
/**
|
|
447
|
-
* Build worker command for container execution
|
|
447
|
+
* Build worker command for container execution.
|
|
448
|
+
*
|
|
449
|
+
* #2371: the old command spawned `npx claude-flow@v3alpha daemon trigger`,
|
|
450
|
+
* which (a) referenced a deprecated dist-tag pointing at the pre-rename
|
|
451
|
+
* package, and (b) omitted `-y`, so npx could silently fall back to a
|
|
452
|
+
* locally-installed stale `claude-flow` without fetching the published
|
|
453
|
+
* version. Workers were running pre-autopilot / pre-browser builds.
|
|
454
|
+
* Use the current `ruflo@latest` and force a fresh resolution with `-y`.
|
|
448
455
|
*/
|
|
449
456
|
buildWorkerCommand(options) {
|
|
450
|
-
// Use npx to run claude-flow daemon trigger
|
|
451
457
|
return [
|
|
452
|
-
'npx', '
|
|
458
|
+
'npx', '-y', 'ruflo@latest',
|
|
453
459
|
'daemon', 'trigger',
|
|
454
460
|
'-w', options.workerType,
|
|
455
461
|
'--headless',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claude-flow/cli",
|
|
3
|
-
"version": "3.10.
|
|
3
|
+
"version": "3.10.46",
|
|
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",
|