@claude-flow/cli 3.41.1 → 3.41.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.41.
|
|
3
|
+
"version": "3.41.2",
|
|
4
4
|
"files": {
|
|
5
5
|
"auto-memory-hook.mjs": "85fe05c757421c52137c0bc8545a0896bab6b4714538c2a11d1d0835bfcc8c1c",
|
|
6
6
|
"hook-handler.cjs": "209d9fafe10e17d1be0866727f6f9cf9ac66f9a0793f1c793a4f58319e8e4583",
|
|
@@ -8,6 +8,6 @@
|
|
|
8
8
|
"statusline.cjs": "4a48353b4f1566fa4379b00fd0321b6676a22b6cc91fbbd8380ac5183d619468"
|
|
9
9
|
}
|
|
10
10
|
},
|
|
11
|
-
"signature": "
|
|
11
|
+
"signature": "cmz1Yt39LkaWY+8JH1BOtqD27A3TYoFbpHnMGTpKZDzpuhgq1RQCF9P90z1yrnnStOSX0e01meDsHeRoGQgtAA==",
|
|
12
12
|
"algorithm": "ed25519"
|
|
13
13
|
}
|
package/catalog-manifest.json
CHANGED
|
@@ -9,6 +9,23 @@ import { distillCommand } from './memory-distill.js';
|
|
|
9
9
|
import { backupCommand } from './memory-backup.js';
|
|
10
10
|
import { countSiblingStoreRows } from '../memory/sibling-store.js';
|
|
11
11
|
import { resolveDbPath } from '../memory/memory-initializer.js';
|
|
12
|
+
/**
|
|
13
|
+
* #3228: a miss in one store is not a miss in the memory.
|
|
14
|
+
*
|
|
15
|
+
* 3.41.1 disclosed the sibling AgentDB store from `memory list` only. `retrieve`,
|
|
16
|
+
* `search` and `stats` kept reporting a clean negative — "Key not found", "No
|
|
17
|
+
* results" — while the rows sat in the file this interface does not read. On the
|
|
18
|
+
* reported Windows install that is 31,673 rows in the other store answering
|
|
19
|
+
* `found:false`. A confident negative is worse than an error, because nothing
|
|
20
|
+
* prompts anyone to look further.
|
|
21
|
+
*/
|
|
22
|
+
async function warnIfSiblingHasRows(pathFlag) {
|
|
23
|
+
const unread = await countSiblingStoreRows(resolveDbPath(pathFlag));
|
|
24
|
+
if (unread && unread.rows > 0) {
|
|
25
|
+
output.printWarning(`This read covered one store. ${unread.rows} entries are in ${unread.path} and were not searched. ` +
|
|
26
|
+
`That store is written by the MCP/AgentDB path; read it with --path ${unread.path}.`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
12
29
|
// Memory backends
|
|
13
30
|
const BACKENDS = [
|
|
14
31
|
{ value: 'agentdb', label: 'AgentDB', hint: 'Vector database with HNSW indexing (150x-12,500x faster)' },
|
|
@@ -287,6 +304,7 @@ const retrieveCommand = {
|
|
|
287
304
|
}
|
|
288
305
|
if (!result.found || !result.entry) {
|
|
289
306
|
output.printWarning(`Key not found: ${key}`);
|
|
307
|
+
await warnIfSiblingHasRows(ctx.flags.path);
|
|
290
308
|
return { success: false, exitCode: 1, data: { key, found: false } };
|
|
291
309
|
}
|
|
292
310
|
const entry = result.entry;
|
|
@@ -667,6 +685,7 @@ const searchCommand = {
|
|
|
667
685
|
output.writeln();
|
|
668
686
|
if (results.length === 0) {
|
|
669
687
|
output.printWarning('No results found');
|
|
688
|
+
await warnIfSiblingHasRows(ctx.flags.path);
|
|
670
689
|
output.writeln(output.dim('Try: claude-flow memory store -k "key" --value "data"'));
|
|
671
690
|
return { success: true, data: [] };
|
|
672
691
|
}
|
|
@@ -746,6 +765,7 @@ const listCommand = {
|
|
|
746
765
|
output.writeln();
|
|
747
766
|
if (entries.length === 0) {
|
|
748
767
|
output.printWarning('No entries found');
|
|
768
|
+
await warnIfSiblingHasRows(ctx.flags.path);
|
|
749
769
|
output.printInfo('Store data: claude-flow memory store -k "key" --value "data"');
|
|
750
770
|
return { success: true, data: [] };
|
|
751
771
|
}
|
|
@@ -54,14 +54,32 @@ export function isDaemonAlive(projectRoot) {
|
|
|
54
54
|
}
|
|
55
55
|
/** Project-local opt-out: `{ "daemon": { "autostart": false } }` in claude-flow.config.json. */
|
|
56
56
|
function autostartDisabledByProjectConfig(projectRoot) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
// #3278: read BOTH files, and both spellings.
|
|
58
|
+
//
|
|
59
|
+
// This used to consult only `claude-flow.config.json` with the key
|
|
60
|
+
// `daemon.autostart`. But `init` generates `.claude/settings.json` with
|
|
61
|
+
// `claudeFlow.daemon.autoStart` — a different file and a different capital S —
|
|
62
|
+
// and writes it `false` under the comment "Opt-in only — prevents unintended
|
|
63
|
+
// token consumption (#1427, #1330)". So the one setting a fresh project
|
|
64
|
+
// actually ships was never read, and the runtime spent tokens the generated
|
|
65
|
+
// config existed to prevent. Accept either spelling in either file: a user who
|
|
66
|
+
// wrote the word "autostart: false" anywhere sensible meant it.
|
|
67
|
+
const readsFalse = (v) => v === false;
|
|
68
|
+
for (const [file, pick] of [
|
|
69
|
+
['claude-flow.config.json', (c) => c?.daemon],
|
|
70
|
+
[path.join('.claude', 'settings.json'), (c) => c?.claudeFlow?.daemon],
|
|
71
|
+
]) {
|
|
72
|
+
try {
|
|
73
|
+
const cfg = JSON.parse(fs.readFileSync(path.join(projectRoot, file), 'utf-8'));
|
|
74
|
+
const d = pick(cfg);
|
|
75
|
+
if (readsFalse(d?.autostart) || readsFalse(d?.autoStart))
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
// absent/malformed config = this file says nothing; keep checking the others
|
|
80
|
+
}
|
|
64
81
|
}
|
|
82
|
+
return false;
|
|
65
83
|
}
|
|
66
84
|
function autostartDisabled(projectRoot) {
|
|
67
85
|
if (/^(0|false|no|off)$/i.test(process.env.RUFLO_DAEMON_AUTOSTART ?? ''))
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@claude-flow/cli",
|
|
3
|
-
"version": "3.41.
|
|
3
|
+
"version": "3.41.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",
|