@claude-flow/cli 3.44.0 → 3.45.0
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/.claude/helpers/helpers.manifest.json +2 -2
- package/catalog-manifest.json +2 -2
- package/dist/src/commands/doctor.d.ts +9 -0
- package/dist/src/commands/doctor.js +69 -1
- package/node_modules/@claude-flow/codex/dist/cli.js +0 -0
- package/node_modules/@claude-flow/plugin-agent-federation/dist/bin.js +0 -0
- package/node_modules/@claude-flow/security/dist/input-validator.d.ts +6 -6
- package/package.json +3 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manifest": {
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.45.0",
|
|
4
4
|
"files": {
|
|
5
5
|
"auto-memory-hook.mjs": "85fe05c757421c52137c0bc8545a0896bab6b4714538c2a11d1d0835bfcc8c1c",
|
|
6
6
|
"hook-handler.cjs": "209d9fafe10e17d1be0866727f6f9cf9ac66f9a0793f1c793a4f58319e8e4583",
|
|
@@ -9,6 +9,6 @@
|
|
|
9
9
|
"router.js": "b6998397e7883191b62229ccdc66fb87f1ccca1d5b2039ecb8c1e686d1ad81f8"
|
|
10
10
|
}
|
|
11
11
|
},
|
|
12
|
-
"signature": "
|
|
12
|
+
"signature": "IO42tJDeyKIl8l7ewYgoPdlZqQdsESvjIJr3KoAHDYHTi7gMCElwEyah4jx/RC6+Lq2zXv8XSOd/cgHI2U5zAg==",
|
|
13
13
|
"algorithm": "ed25519"
|
|
14
14
|
}
|
package/catalog-manifest.json
CHANGED
|
@@ -12,6 +12,15 @@ interface HealthCheck {
|
|
|
12
12
|
fix?: string;
|
|
13
13
|
}
|
|
14
14
|
export declare function checkMemoryPersistenceDriver(): Promise<HealthCheck>;
|
|
15
|
+
/**
|
|
16
|
+
* #3392: pure verdict for "does the @claude-flow/memory the CLI loads satisfy
|
|
17
|
+
* the range the CLI declares?". `npx @claude-flow/cli@latest` reuses one npx
|
|
18
|
+
* cache directory across CLI versions, and npm keeps an already-installed
|
|
19
|
+
* dependency that still satisfies a caret range, so a stale memory could
|
|
20
|
+
* survive a CLI upgrade with no error. Exported for unit testing.
|
|
21
|
+
*/
|
|
22
|
+
export declare function evaluateMemoryPackageVersion(declared: string | null, installed: string | null): HealthCheck;
|
|
23
|
+
export declare function checkMemoryPackageVersion(): Promise<HealthCheck>;
|
|
15
24
|
export declare const doctorCommand: Command;
|
|
16
25
|
export default doctorCommand;
|
|
17
26
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -13,7 +13,8 @@ import { execSync, exec } from 'child_process';
|
|
|
13
13
|
import { promisify } from 'util';
|
|
14
14
|
import { decodeKey, isEncryptionEnabled } from '../encryption/vault.js';
|
|
15
15
|
import { isEncryptedBlob } from '../encryption/vault.js';
|
|
16
|
-
import
|
|
16
|
+
import * as semver from 'semver';
|
|
17
|
+
import { resolveMemoryPackageFromProject, resolveMemoryPackageFromCli, readMemoryPackageVersion, recordMemoryPackagePath, } from '../init/memory-package-resolver.js';
|
|
17
18
|
// Promisified exec with proper shell and env inheritance for cross-platform support
|
|
18
19
|
const execAsync = promisify(exec);
|
|
19
20
|
/**
|
|
@@ -1045,6 +1046,70 @@ async function checkLearningBridge() {
|
|
|
1045
1046
|
fix: 'npm i -D @claude-flow/memory (optional dep appears absent — likely --omit=optional install)',
|
|
1046
1047
|
};
|
|
1047
1048
|
}
|
|
1049
|
+
/**
|
|
1050
|
+
* #3392: pure verdict for "does the @claude-flow/memory the CLI loads satisfy
|
|
1051
|
+
* the range the CLI declares?". `npx @claude-flow/cli@latest` reuses one npx
|
|
1052
|
+
* cache directory across CLI versions, and npm keeps an already-installed
|
|
1053
|
+
* dependency that still satisfies a caret range, so a stale memory could
|
|
1054
|
+
* survive a CLI upgrade with no error. Exported for unit testing.
|
|
1055
|
+
*/
|
|
1056
|
+
export function evaluateMemoryPackageVersion(declared, installed) {
|
|
1057
|
+
const NAME = '@claude-flow/memory version';
|
|
1058
|
+
if (!declared) {
|
|
1059
|
+
return { name: NAME, status: 'warn', message: 'could not read the @claude-flow/memory range declared by @claude-flow/cli' };
|
|
1060
|
+
}
|
|
1061
|
+
if (!installed) {
|
|
1062
|
+
return {
|
|
1063
|
+
name: NAME,
|
|
1064
|
+
status: 'warn',
|
|
1065
|
+
message: `@claude-flow/memory is not resolvable from the CLI (declared ${declared}) — memory features fall back to degraded paths`,
|
|
1066
|
+
fix: `npm install @claude-flow/memory@${declared} --include=optional`,
|
|
1067
|
+
};
|
|
1068
|
+
}
|
|
1069
|
+
if (!semver.validRange(declared) || !semver.valid(installed)) {
|
|
1070
|
+
return { name: NAME, status: 'warn', message: `cannot compare installed ${installed} against declared ${declared}` };
|
|
1071
|
+
}
|
|
1072
|
+
if (semver.satisfies(installed, declared, { includePrerelease: true })) {
|
|
1073
|
+
return { name: NAME, status: 'pass', message: `v${installed} satisfies declared ${declared}` };
|
|
1074
|
+
}
|
|
1075
|
+
// warn, not fail: a dev/hoisted layout can legitimately differ, and doctor's
|
|
1076
|
+
// exit code must not depend on which copy a package manager happened to hoist.
|
|
1077
|
+
return {
|
|
1078
|
+
name: NAME,
|
|
1079
|
+
status: 'warn',
|
|
1080
|
+
message: `installed v${installed} does not satisfy declared ${declared} — a stale cached copy is running, so fixes shipped in a newer @claude-flow/memory are silently absent`,
|
|
1081
|
+
fix: `rm -rf "$(npm config get cache)/_npx" && npx @claude-flow/cli@latest doctor # or: npm install @claude-flow/memory@${declared}`,
|
|
1082
|
+
};
|
|
1083
|
+
}
|
|
1084
|
+
export async function checkMemoryPackageVersion() {
|
|
1085
|
+
try {
|
|
1086
|
+
// Walk up from this module to the CLI package root (npx cache, global,
|
|
1087
|
+
// project-local and monorepo dev all resolve the same way).
|
|
1088
|
+
let declared = null;
|
|
1089
|
+
let dir = dirname(fileURLToPath(import.meta.url));
|
|
1090
|
+
for (let i = 0; i < 8 && declared === null; i++) {
|
|
1091
|
+
const pj = join(dir, 'package.json');
|
|
1092
|
+
if (existsSync(pj)) {
|
|
1093
|
+
try {
|
|
1094
|
+
const pkg = JSON.parse(readFileSync(pj, 'utf-8'));
|
|
1095
|
+
if (pkg.name === '@claude-flow/cli') {
|
|
1096
|
+
declared = pkg.optionalDependencies?.['@claude-flow/memory'] ?? pkg.dependencies?.['@claude-flow/memory'] ?? null;
|
|
1097
|
+
break;
|
|
1098
|
+
}
|
|
1099
|
+
}
|
|
1100
|
+
catch { /* keep walking */ }
|
|
1101
|
+
}
|
|
1102
|
+
dir = dirname(dir);
|
|
1103
|
+
}
|
|
1104
|
+
// Resolve exactly as the CLI's own runtime does (its module context),
|
|
1105
|
+
// not from process.cwd() — that would report the project's copy instead.
|
|
1106
|
+
const distPath = resolveMemoryPackageFromCli();
|
|
1107
|
+
return evaluateMemoryPackageVersion(declared, distPath ? readMemoryPackageVersion(distPath) : null);
|
|
1108
|
+
}
|
|
1109
|
+
catch (err) {
|
|
1110
|
+
return { name: '@claude-flow/memory version', status: 'warn', message: `check failed: ${err instanceof Error ? err.message : String(err)}` };
|
|
1111
|
+
}
|
|
1112
|
+
}
|
|
1048
1113
|
// Check API keys
|
|
1049
1114
|
async function checkApiKeys() {
|
|
1050
1115
|
const keys = ['ANTHROPIC_API_KEY', 'CLAUDE_API_KEY', 'OPENAI_API_KEY'];
|
|
@@ -2393,6 +2458,7 @@ export const doctorCommand = {
|
|
|
2393
2458
|
checkMemoryStructuralIntegrity, // #2737 — bounded, native quick_check on every default run
|
|
2394
2459
|
checkMemoryPersistenceDriver, // #2968/#3321 — read-only native capability probe
|
|
2395
2460
|
checkLearningBridge, // #2545 — can the auto-memory hook actually load @claude-flow/memory?
|
|
2461
|
+
checkMemoryPackageVersion, // #3392 — loaded @claude-flow/memory must satisfy the CLI's declared range
|
|
2396
2462
|
checkApiKeys,
|
|
2397
2463
|
checkMcpServers,
|
|
2398
2464
|
checkMcpSchemaOverhead, // #2726 — fixed tools/list prompt cost
|
|
@@ -2430,11 +2496,13 @@ export const doctorCommand = {
|
|
|
2430
2496
|
checkMemoryDatabase, // existing: exists + statable (unchanged)
|
|
2431
2497
|
checkMemoryIntegrity, // #2677 check 1: sql.js open + PRAGMA integrity_check
|
|
2432
2498
|
checkMemoryPersistenceDriver, // #2968/#3321: read-only native capability probe
|
|
2499
|
+
checkMemoryPackageVersion, // #3392: loaded memory package satisfies the declared range
|
|
2433
2500
|
checkMemoryContent, // #2677 check 2: memory_entries content coverage
|
|
2434
2501
|
checkMemoryEmbeddingCoverage, // #2677 check 3: vector coverage on populated rows
|
|
2435
2502
|
checkMemoryReflexionCoverage, // #2677 check 6: episodes are retrievable
|
|
2436
2503
|
checkMemoryCritiqueCoverage, // #2677 check 6: feedback carries lessons
|
|
2437
2504
|
],
|
|
2505
|
+
'memory-package': checkMemoryPackageVersion, // #3392
|
|
2438
2506
|
'learning': checkLearningBridge, // #2545
|
|
2439
2507
|
'learning-bridge': checkLearningBridge, // #2545
|
|
2440
2508
|
'api': checkApiKeys,
|
|
File without changes
|
|
File without changes
|
|
@@ -159,14 +159,14 @@ export declare const SpawnAgentSchema: z.ZodObject<{
|
|
|
159
159
|
timeout: z.ZodOptional<z.ZodNumber>;
|
|
160
160
|
}, "strip", z.ZodTypeAny, {
|
|
161
161
|
type: "coder" | "reviewer" | "tester" | "planner" | "researcher" | "security-architect" | "security-auditor" | "memory-specialist" | "swarm-specialist" | "integration-architect" | "performance-engineer" | "core-architect" | "test-architect" | "queen-coordinator" | "project-coordinator";
|
|
162
|
+
id?: string | undefined;
|
|
162
163
|
config?: Record<string, unknown> | undefined;
|
|
163
164
|
timeout?: number | undefined;
|
|
164
|
-
id?: string | undefined;
|
|
165
165
|
}, {
|
|
166
166
|
type: "coder" | "reviewer" | "tester" | "planner" | "researcher" | "security-architect" | "security-auditor" | "memory-specialist" | "swarm-specialist" | "integration-architect" | "performance-engineer" | "core-architect" | "test-architect" | "queen-coordinator" | "project-coordinator";
|
|
167
|
+
id?: string | undefined;
|
|
167
168
|
config?: Record<string, unknown> | undefined;
|
|
168
169
|
timeout?: number | undefined;
|
|
169
|
-
id?: string | undefined;
|
|
170
170
|
}>;
|
|
171
171
|
/**
|
|
172
172
|
* Task input schema
|
|
@@ -181,13 +181,13 @@ export declare const TaskInputSchema: z.ZodObject<{
|
|
|
181
181
|
taskId: string;
|
|
182
182
|
content: string;
|
|
183
183
|
agentType: "coder" | "reviewer" | "tester" | "planner" | "researcher" | "security-architect" | "security-auditor" | "memory-specialist" | "swarm-specialist" | "integration-architect" | "performance-engineer" | "core-architect" | "test-architect" | "queen-coordinator" | "project-coordinator";
|
|
184
|
-
priority?: "
|
|
184
|
+
priority?: "low" | "medium" | "high" | "critical" | undefined;
|
|
185
185
|
metadata?: Record<string, unknown> | undefined;
|
|
186
186
|
}, {
|
|
187
187
|
taskId: string;
|
|
188
188
|
content: string;
|
|
189
189
|
agentType: "coder" | "reviewer" | "tester" | "planner" | "researcher" | "security-architect" | "security-auditor" | "memory-specialist" | "swarm-specialist" | "integration-architect" | "performance-engineer" | "core-architect" | "test-architect" | "queen-coordinator" | "project-coordinator";
|
|
190
|
-
priority?: "
|
|
190
|
+
priority?: "low" | "medium" | "high" | "critical" | undefined;
|
|
191
191
|
metadata?: Record<string, unknown> | undefined;
|
|
192
192
|
}>;
|
|
193
193
|
/**
|
|
@@ -234,16 +234,16 @@ export declare const ExecutorConfigSchema: z.ZodObject<{
|
|
|
234
234
|
cwd: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>>;
|
|
235
235
|
allowSudo: z.ZodDefault<z.ZodBoolean>;
|
|
236
236
|
}, "strip", z.ZodTypeAny, {
|
|
237
|
-
allowedCommands: string[];
|
|
238
237
|
timeout: number;
|
|
238
|
+
allowedCommands: string[];
|
|
239
239
|
maxBuffer: number;
|
|
240
240
|
allowSudo: boolean;
|
|
241
241
|
blockedPatterns?: string[] | undefined;
|
|
242
242
|
cwd?: string | undefined;
|
|
243
243
|
}, {
|
|
244
244
|
allowedCommands: string[];
|
|
245
|
-
blockedPatterns?: string[] | undefined;
|
|
246
245
|
timeout?: number | undefined;
|
|
246
|
+
blockedPatterns?: string[] | undefined;
|
|
247
247
|
maxBuffer?: number | undefined;
|
|
248
248
|
cwd?: string | undefined;
|
|
249
249
|
allowSudo?: boolean | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claude-flow/cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.45.0",
|
|
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",
|
|
@@ -125,11 +125,11 @@
|
|
|
125
125
|
"ws": "^8.21.0",
|
|
126
126
|
"yaml": "^2.8.0",
|
|
127
127
|
"zod": "^3.22.0",
|
|
128
|
-
"@claude-flow/memory": "
|
|
128
|
+
"@claude-flow/memory": "3.0.0-alpha.25"
|
|
129
129
|
},
|
|
130
130
|
"optionalDependencies": {
|
|
131
131
|
"@agntcy/slim-bindings": "2.0.0-alpha.5",
|
|
132
|
-
"@claude-flow/memory": "
|
|
132
|
+
"@claude-flow/memory": "3.0.0-alpha.25",
|
|
133
133
|
"@metaharness/darwin": "~0.10.2",
|
|
134
134
|
"@metaharness/flywheel": "~0.1.10",
|
|
135
135
|
"@metaharness/radio": "~0.1.0",
|