@claude-flow/cli 3.72.1 → 3.72.2

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": {
3
- "version": "3.72.1",
3
+ "version": "3.72.2",
4
4
  "files": {
5
5
  "auto-memory-hook.mjs": "6078bd1c6b02dd3f80097f8d7f28904d48b3cdf7a534d2aa13966590694ca403",
6
6
  "hook-handler.cjs": "31db0f7492fbd8b2e48ea9adbc1ba293dfed1e006666d20e93ea76e158986947",
@@ -10,6 +10,6 @@
10
10
  "learning-loop.cjs": "d046cd6f8efb7dd40e1d2451516c181fc8b26477aefb1124c0df5f52a23f9190"
11
11
  }
12
12
  },
13
- "signature": "xOPNAkZaRFxW1eLWGKMWxYTKSag+Q6LH2zEvMSKUkICLeNN5KDOOBmd9G6nqQqqj2W9Yj+iNPgo6fMvxM7KgAw==",
13
+ "signature": "5RMg2Vt/R7xAPg+7/pY9fUkypu0bwOIKuBsMHvJtcnWxhreO1Ljk2M9HDOD8C5CO5QDALr07wfBXheMnoZFyCw==",
14
14
  "algorithm": "ed25519"
15
15
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "generation": 7,
4
- "generatedAt": "2026-11-06T02:50:18.000Z",
5
- "gitSha": "29b327ee",
4
+ "generatedAt": "2026-11-06T13:58:28.616Z",
5
+ "gitSha": "b7bc909d",
6
6
  "catalog": {
7
7
  "agents": 177,
8
8
  "tools": 451,
@@ -1526,7 +1526,9 @@ const benchmarkCommand = {
1526
1526
  // when it isn't installed — install-safety / Build V3 pattern from #2586).
1527
1527
  const attentionPkg = '@ruvector/attention';
1528
1528
  // eslint-disable-next-line @typescript-eslint/no-explicit-any -- dynamic import of optional native WASM module with no type declarations
1529
- const attention = await import(attentionPkg);
1529
+ // @ruvector/attention is CommonJS: under import() its classes sit on `default`.
1530
+ const attentionMod = await import(attentionPkg);
1531
+ const attention = (attentionMod.default ?? attentionMod);
1530
1532
  // Manual benchmark since benchmarkAttention has a binding bug
1531
1533
  const benchmarkMechanism = async (name, mechanism) => {
1532
1534
  const query = new Float32Array(dim);
@@ -1546,10 +1548,10 @@ const benchmarkCommand = {
1546
1548
  }
1547
1549
  // Warmup
1548
1550
  for (let i = 0; i < 10; i++)
1549
- mechanism.computeRaw(query, keys, values);
1551
+ mechanism.compute(query, keys, values);
1550
1552
  const start = performance.now();
1551
1553
  for (let i = 0; i < iterations; i++) {
1552
- mechanism.computeRaw(query, keys, values);
1554
+ mechanism.compute(query, keys, values);
1553
1555
  }
1554
1556
  const elapsed = performance.now() - start;
1555
1557
  return {
@@ -13,9 +13,9 @@
13
13
  * AgentDB index). They do not inline a replay engine; replay
14
14
  * enumerates trajectory steps and returns them for the caller to dispatch.
15
15
  * - ruvector resolution is local-first: if a locally installed `ruvector`
16
- * package is found (the CLI already depends on ruvector@0.2.27), its bin
16
+ * package is found (the CLI depends on ruvector ^0.3.11), its bin
17
17
  * is spawned directly with `node`; otherwise we fall back to
18
- * `npx -y ruvector@0.2.27`. The previous 0.2.25 pin forced cold npx
18
+ * `npx -y ruvector@0.3.12`. The previous 0.2.25 pin forced cold npx
19
19
  * downloads of a *second* ruvector version — 4 per browser session.
20
20
  * - Best-effort: missing dependencies (no `ruvector`, no `agent-browser`,
21
21
  * no AgentDB controller) degrade gracefully with a structured error
@@ -13,9 +13,9 @@
13
13
  * AgentDB index). They do not inline a replay engine; replay
14
14
  * enumerates trajectory steps and returns them for the caller to dispatch.
15
15
  * - ruvector resolution is local-first: if a locally installed `ruvector`
16
- * package is found (the CLI already depends on ruvector@0.2.27), its bin
16
+ * package is found (the CLI depends on ruvector ^0.3.11), its bin
17
17
  * is spawned directly with `node`; otherwise we fall back to
18
- * `npx -y ruvector@0.2.27`. The previous 0.2.25 pin forced cold npx
18
+ * `npx -y ruvector@0.3.12`. The previous 0.2.25 pin forced cold npx
19
19
  * downloads of a *second* ruvector version — 4 per browser session.
20
20
  * - Best-effort: missing dependencies (no `ruvector`, no `agent-browser`,
21
21
  * no AgentDB controller) degrade gracefully with a structured error
@@ -25,9 +25,9 @@ import { validateIdentifier, validateText } from './validate-input.js';
25
25
  import { browserUrlError } from './browser-argv.js';
26
26
  // Pin matches the version in this package's own dependency tree so the npx
27
27
  // fallback never downloads a second ruvector. Subcommand surface verified
28
- // against ruvector@0.2.27 --help: `rvf create/compact/status/derive/segments`
28
+ // against ruvector@0.3.12 --help (and earlier 0.2.27): `rvf create/compact/status/derive/segments`
29
29
  // and `hooks trajectory-begin/step/end` all exist with the flags used below.
30
- const RUVECTOR_PIN = 'ruvector@0.2.27';
30
+ const RUVECTOR_PIN = 'ruvector@0.3.12';
31
31
  const RVF_DIR_DEFAULT = '.ruflo/browser-sessions';
32
32
  async function shell(cmd, args, opts = {}) {
33
33
  const { execFile } = await import('node:child_process');
@@ -2224,8 +2224,24 @@ export const hooksBuildAgents = {
2224
2224
  return { success: false, error: v.error };
2225
2225
  }
2226
2226
  const outputDir = resolve(getProjectCwd(), params.outputDir || './agents');
2227
+ // validatePath allows absolute paths, so keep the real output dir inside
2228
+ // the real project root (CWE-22/59): configs are only ever project files.
2229
+ let realProjectRoot;
2230
+ try {
2231
+ realProjectRoot = nodeFs.realpathSync(getProjectCwd());
2232
+ }
2233
+ catch {
2234
+ realProjectRoot = getProjectCwd();
2235
+ }
2236
+ if (!isInsideRealRoot(realProjectRoot, outputDir)) {
2237
+ return { success: false, error: 'outputDir must be inside the project directory' };
2238
+ }
2227
2239
  const focus = params.focus || 'all';
2228
- const format = params.format || 'yaml';
2240
+ // format is spliced into each file name; only the two supported formats.
2241
+ const format = params.format === undefined ? 'yaml' : params.format;
2242
+ if (format !== 'yaml' && format !== 'json') {
2243
+ return { success: false, error: 'format must be "yaml" or "json"' };
2244
+ }
2229
2245
  const persist = params.persist !== false; // Default to true
2230
2246
  const agents = [
2231
2247
  { type: 'coder', configFile: join(outputDir, `coder.${format}`), capabilities: ['code-generation', 'refactoring', 'debugging'], optimizations: ['flash-attention', 'token-reduction'] },
@@ -72,7 +72,7 @@ function activeChampionParams() {
72
72
  // command, because mcp-client statically imports this module. ensureEmbeddings()
73
73
  // keeps the exact same tier chain and degraded/fallback semantics, but only
74
74
  // pays the cost when a handler actually needs an embedding.
75
- // Tier 0 (ADR-089): ruvector@0.2.27 bundled ONNX (no sharp dep, fixes ADR-086's
75
+ // Tier 0 (ADR-089): ruvector bundled ONNX (since 0.2.27) (no sharp dep, fixes ADR-086's
76
76
  // silent-fallback bug at source; closes the chain described in ruvnet/ruvector#523).
77
77
  // Tier 1: agentic-flow v3 ReasoningBank (was Tier 1 — broken on darwin-arm64 without sharp)
78
78
  // Tier 2-3: @claude-flow/embeddings
@@ -110,7 +110,7 @@ function ensureEmbeddings() {
110
110
  }
111
111
  }
112
112
  catch { /* not configured — fall through */ }
113
- // Tier 0: ruvector@0.2.27 — bundled all-MiniLM-L6-v2 + parallel worker pool.
113
+ // Tier 0: ruvector (CLI dependency) — bundled all-MiniLM-L6-v2 + parallel worker pool.
114
114
  // Probe with isOnnxAvailable() and verify an actual embed succeeds (avoids
115
115
  // the type-load-success-but-runtime-fails trap from ADR-086). The probe now
116
116
  // runs on first embed request instead of at import time.
@@ -133,7 +133,7 @@ function ensureEmbeddings() {
133
133
  return Array.isArray(v) ? v : Array.from(v);
134
134
  },
135
135
  };
136
- embeddingServiceName = 'ruvector@0.2.27 (bundled all-MiniLM-L6-v2)';
136
+ embeddingServiceName = 'ruvector (bundled all-MiniLM-L6-v2)';
137
137
  }
138
138
  }
139
139
  catch {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claude-flow/cli",
3
- "version": "3.72.1",
3
+ "version": "3.72.2",
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",
@@ -104,7 +104,7 @@
104
104
  "@claude-flow/cli-core": "3.7.5",
105
105
  "@claude-flow/codex": "3.0.6",
106
106
  "@claude-flow/mcp": "3.1.6",
107
- "@claude-flow/neural": "3.0.2",
107
+ "@claude-flow/neural": "3.0.3",
108
108
  "@claude-flow/plugin-agent-federation": "1.0.5",
109
109
  "@claude-flow/security": "3.0.6",
110
110
  "@claude-flow/shared": "3.0.7",
@@ -142,7 +142,7 @@
142
142
  "agentdb": "^3.3.0",
143
143
  "agentic-flow": "^3.0.0",
144
144
  "better-sqlite3": "^12.9.0",
145
- "ruvector": "^0.3.11",
145
+ "ruvector": "^0.3.13",
146
146
  "nostr-tools": "^2.7.0",
147
147
  "@ruvector/learning-wasm": "0.1.29",
148
148
  "agent-booster": "^0.2.2"