@sparkleideas/claude-flow-patch 3.1.0-alpha.44.patch.10 → 3.1.0-alpha.44.patch.11
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.md +87 -8
- package/README.md +156 -4
- package/check-patches.sh +90 -16
- package/lib/categories.json +3 -1
- package/lib/common.py +15 -0
- package/package.json +6 -3
- package/patch/010-CF-001-doctor-yaml/sentinel +1 -1
- package/patch/020-CF-002-config-export-yaml/README.md +1 -1
- package/patch/020-CF-002-config-export-yaml/fix.py +3 -43
- package/patch/060-DM-004-worker-stubs/README.md +35 -0
- package/patch/060-DM-004-worker-stubs/fix.py +83 -0
- package/patch/{070-DM-005-consolidation-worker-stub → 060-DM-004-worker-stubs}/sentinel +1 -0
- package/patch/320-SG-004-wizard-parity/fix.py +1 -1
- package/patch/340-SG-006-wizard-capture/README.md +29 -0
- package/patch/340-SG-006-wizard-capture/fix.py +23 -0
- package/patch/340-SG-006-wizard-capture/sentinel +2 -0
- package/patch/350-WM-001-memory-wiring/README.md +50 -0
- package/patch/350-WM-001-memory-wiring/fix.py +385 -0
- package/patch/350-WM-001-memory-wiring/sentinel +3 -0
- package/patch/360-WM-002-config-respect/README.md +31 -0
- package/patch/360-WM-002-config-respect/fix.py +37 -0
- package/patch/360-WM-002-config-respect/sentinel +3 -0
- package/patch/370-WM-003-auto-memory-bridge/README.md +37 -0
- package/patch/370-WM-003-auto-memory-bridge/fix.py +261 -0
- package/patch/370-WM-003-auto-memory-bridge/sentinel +6 -0
- package/patch/380-CF-003-doctor-native-deps/README.md +46 -0
- package/patch/380-CF-003-doctor-native-deps/fix.py +157 -0
- package/patch/380-CF-003-doctor-native-deps/sentinel +4 -0
- package/patch/385-SG-007-init-shallow-copy/README.md +25 -0
- package/patch/385-SG-007-init-shallow-copy/fix.py +44 -0
- package/patch/385-SG-007-init-shallow-copy/sentinel +3 -0
- package/patch/390-WM-004-source-hook-fail-loud/README.md +33 -0
- package/patch/390-WM-004-source-hook-fail-loud/fix.py +164 -0
- package/patch/390-WM-004-source-hook-fail-loud/sentinel +2 -0
- package/patch/420-CF-004-config-export-json/README.md +24 -0
- package/patch/420-CF-004-config-export-json/fix.py +24 -0
- package/patch/420-CF-004-config-export-json/sentinel +2 -0
- package/patch/440-SG-008-init-config-json/README.md +21 -0
- package/patch/440-SG-008-init-config-json/fix.py +116 -0
- package/patch/440-SG-008-init-config-json/sentinel +2 -0
- package/patch/450-CF-006-config-yaml-to-json/README.md +42 -0
- package/patch/450-CF-006-config-yaml-to-json/fix.py +138 -0
- package/patch/450-CF-006-config-yaml-to-json/sentinel +7 -0
- package/patch/480-DOC-001-readme-docs/README.md +52 -0
- package/patch/480-DOC-001-readme-docs/fix.py +273 -0
- package/patch/480-DOC-001-readme-docs/sentinel +11 -0
- package/patch/490-SG-009-remove-v3-mode/README.md +47 -0
- package/patch/490-SG-009-remove-v3-mode/fix.py +204 -0
- package/patch/490-SG-009-remove-v3-mode/sentinel +8 -0
- package/patch/500-CF-009-minimal-v3-defaults/README.md +25 -0
- package/patch/500-CF-009-minimal-v3-defaults/fix.py +32 -0
- package/patch/500-CF-009-minimal-v3-defaults/sentinel +2 -0
- package/patch/530-WM-007-wire-dead-config-keys/README.md +49 -0
- package/patch/530-WM-007-wire-dead-config-keys/fix.py +254 -0
- package/patch/530-WM-007-wire-dead-config-keys/sentinel +15 -0
- package/patch/540-SG-010-init-cli-options/README.md +47 -0
- package/patch/540-SG-010-init-cli-options/fix.py +418 -0
- package/patch/540-SG-010-init-cli-options/sentinel +19 -0
- package/patch/550-SG-011-topology-hierarchical-refs/README.md +34 -0
- package/patch/550-SG-011-topology-hierarchical-refs/fix.py +28 -0
- package/patch/550-SG-011-topology-hierarchical-refs/sentinel +5 -0
- package/patch/560-WM-008-agentdb-v3-upgrade/README.md +57 -0
- package/patch/560-WM-008-agentdb-v3-upgrade/fix.py +257 -0
- package/patch/560-WM-008-agentdb-v3-upgrade/fix.sh +49 -0
- package/patch/560-WM-008-agentdb-v3-upgrade/sentinel +13 -0
- package/patch/570-WM-009-agentdb-learning-loop/README.md +35 -0
- package/patch/570-WM-009-agentdb-learning-loop/fix.py +141 -0
- package/patch/570-WM-009-agentdb-learning-loop/sentinel +3 -0
- package/patch/580-WM-010-witness-chain-verify/README.md +33 -0
- package/patch/580-WM-010-witness-chain-verify/fix.py +45 -0
- package/patch/580-WM-010-witness-chain-verify/sentinel +1 -0
- package/patch/590-WM-011-reasoning-bank-controller/README.md +34 -0
- package/patch/590-WM-011-reasoning-bank-controller/fix.py +381 -0
- package/patch/590-WM-011-reasoning-bank-controller/sentinel +4 -0
- package/patch/060-DM-004-preload-worker-stub/README.md +0 -11
- package/patch/060-DM-004-preload-worker-stub/fix.py +0 -34
- package/patch/060-DM-004-preload-worker-stub/sentinel +0 -1
- package/patch/070-DM-005-consolidation-worker-stub/README.md +0 -11
- package/patch/070-DM-005-consolidation-worker-stub/fix.py +0 -46
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# WM-007: Wire dead config.json keys into runtime consumers
|
|
2
|
+
# GitHub: #1204
|
|
3
|
+
|
|
4
|
+
# ── Op a: memory-initializer.js — read cacheSize, enableHNSW, similarityThreshold, defaultScope ──
|
|
5
|
+
# Extend the WM-001a config.json read block to extract additional keys,
|
|
6
|
+
# then replace the embeddings.json HNSW read and hardcoded defaults.
|
|
7
|
+
patch("WM-007a: wire cacheSize/enableHNSW/similarityThreshold/defaultScope from config.json",
|
|
8
|
+
MI,
|
|
9
|
+
""" // WM-001a: Resolve backend choice from config.json (absorbs WM-005)
|
|
10
|
+
let backendChoice = backend;
|
|
11
|
+
try {
|
|
12
|
+
const cfgPath = path.join(process.cwd(), '.claude-flow', 'config.json');
|
|
13
|
+
if (fs.existsSync(cfgPath)) {
|
|
14
|
+
const cfg = JSON.parse(fs.readFileSync(cfgPath, 'utf-8'));
|
|
15
|
+
if (cfg.memory && cfg.memory.backend) backendChoice = cfg.memory.backend;
|
|
16
|
+
}
|
|
17
|
+
} catch {}""",
|
|
18
|
+
""" // WM-001a: Resolve backend choice from config.json (absorbs WM-005)
|
|
19
|
+
let backendChoice = backend;
|
|
20
|
+
let cfgMemory = {};
|
|
21
|
+
try {
|
|
22
|
+
const cfgPath = path.join(process.cwd(), '.claude-flow', 'config.json');
|
|
23
|
+
if (fs.existsSync(cfgPath)) {
|
|
24
|
+
const cfg = JSON.parse(fs.readFileSync(cfgPath, 'utf-8'));
|
|
25
|
+
if (cfg.memory && cfg.memory.backend) backendChoice = cfg.memory.backend;
|
|
26
|
+
if (cfg.memory) cfgMemory = cfg.memory;
|
|
27
|
+
}
|
|
28
|
+
} catch {}""")
|
|
29
|
+
|
|
30
|
+
# Now replace the embeddings.json HNSW block + hardcoded defaults
|
|
31
|
+
patch("WM-007a2: replace embeddings.json HNSW read with config.json + wire defaults",
|
|
32
|
+
MI,
|
|
33
|
+
""" // Read HNSW config from embeddings.json
|
|
34
|
+
let enableHNSW = true;
|
|
35
|
+
try {
|
|
36
|
+
const embConfigPath = path.join(process.cwd(), '.claude-flow', 'embeddings.json');
|
|
37
|
+
if (fs.existsSync(embConfigPath)) {
|
|
38
|
+
const embConfig = JSON.parse(fs.readFileSync(embConfigPath, 'utf-8'));
|
|
39
|
+
if (embConfig.hnsw === false) enableHNSW = false;
|
|
40
|
+
}
|
|
41
|
+
} catch {}
|
|
42
|
+
|
|
43
|
+
// WM-001c: Build HybridBackendConfig with correct keys
|
|
44
|
+
const hybridDbPath = path.join(swarmDir, 'hybrid-memory.db');
|
|
45
|
+
const agentDbPath = path.join(swarmDir, 'agentdb-memory.db');
|
|
46
|
+
const hybridConfig = {};""",
|
|
47
|
+
""" // WM-007a: Read enableHNSW from config.json (replaces embeddings.json read)
|
|
48
|
+
let enableHNSW = cfgMemory.enableHNSW !== false;
|
|
49
|
+
|
|
50
|
+
// WM-001c: Build HybridBackendConfig with correct keys
|
|
51
|
+
const hybridDbPath = path.join(swarmDir, 'hybrid-memory.db');
|
|
52
|
+
const agentDbPath = path.join(swarmDir, 'agentdb-memory.db');
|
|
53
|
+
const hybridConfig = {};""")
|
|
54
|
+
|
|
55
|
+
# Replace hardcoded defaultNamespace and semanticThreshold
|
|
56
|
+
patch("WM-007a3: wire defaultScope and similarityThreshold from config.json",
|
|
57
|
+
MI,
|
|
58
|
+
""" hybridConfig.defaultNamespace = 'default';
|
|
59
|
+
hybridConfig.semanticThreshold = 0.7;""",
|
|
60
|
+
""" hybridConfig.defaultNamespace = (cfgMemory.agentScopes && cfgMemory.agentScopes.defaultScope) || 'default';
|
|
61
|
+
hybridConfig.semanticThreshold = (cfgMemory.memoryGraph && cfgMemory.memoryGraph.similarityThreshold) || 0.7;""")
|
|
62
|
+
|
|
63
|
+
# ── Op b: intelligence.js — read learningBridge + memoryGraph config from config.json ──
|
|
64
|
+
# Extend the WM-002c config.json read to also extract memory config
|
|
65
|
+
patch("WM-007b: wire learningBridge and memoryGraph config from config.json",
|
|
66
|
+
INTEL,
|
|
67
|
+
""" // WM-002c: Read neural.enabled from config.json — skip init when disabled
|
|
68
|
+
let neuralEnabled = true;
|
|
69
|
+
try {
|
|
70
|
+
const cfgPath = join(process.cwd(), '.claude-flow', 'config.json');
|
|
71
|
+
if (existsSync(cfgPath)) {
|
|
72
|
+
const cfg = JSON.parse(readFileSync(cfgPath, 'utf-8'));
|
|
73
|
+
if (cfg.neural && cfg.neural.enabled === false) neuralEnabled = false;
|
|
74
|
+
}
|
|
75
|
+
} catch (_cfgErr) { /* config read failure is non-fatal */ }
|
|
76
|
+
if (!neuralEnabled) {
|
|
77
|
+
intelligenceInitialized = true; // MUST set — callers check this flag
|
|
78
|
+
return { success: true, sonaEnabled: false, reasoningBankEnabled: false };
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
// Merge config with defaults
|
|
82
|
+
const finalConfig = {
|
|
83
|
+
...DEFAULT_SONA_CONFIG,
|
|
84
|
+
...config
|
|
85
|
+
};""",
|
|
86
|
+
""" // WM-002c: Read neural.enabled from config.json — skip init when disabled
|
|
87
|
+
let neuralEnabled = true;
|
|
88
|
+
let cfgLearningBridge = {};
|
|
89
|
+
let cfgMemoryGraph = {};
|
|
90
|
+
try {
|
|
91
|
+
const cfgPath = join(process.cwd(), '.claude-flow', 'config.json');
|
|
92
|
+
if (existsSync(cfgPath)) {
|
|
93
|
+
const cfg = JSON.parse(readFileSync(cfgPath, 'utf-8'));
|
|
94
|
+
if (cfg.neural && cfg.neural.enabled === false) neuralEnabled = false;
|
|
95
|
+
if (cfg.memory && cfg.memory.learningBridge) cfgLearningBridge = cfg.memory.learningBridge;
|
|
96
|
+
if (cfg.memory && cfg.memory.memoryGraph) cfgMemoryGraph = cfg.memory.memoryGraph;
|
|
97
|
+
}
|
|
98
|
+
} catch (_cfgErr) { /* config read failure is non-fatal */ }
|
|
99
|
+
if (!neuralEnabled) {
|
|
100
|
+
intelligenceInitialized = true; // MUST set — callers check this flag
|
|
101
|
+
return { success: true, sonaEnabled: false, reasoningBankEnabled: false };
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
// WM-007b: Merge config.json learningBridge/memoryGraph into SONA config
|
|
105
|
+
const configOverrides = {};
|
|
106
|
+
if (cfgLearningBridge.sonaMode) configOverrides.sonaMode = cfgLearningBridge.sonaMode;
|
|
107
|
+
if (cfgLearningBridge.confidenceDecayRate != null) configOverrides.confidenceDecayRate = cfgLearningBridge.confidenceDecayRate;
|
|
108
|
+
if (cfgLearningBridge.accessBoostAmount != null) configOverrides.accessBoostAmount = cfgLearningBridge.accessBoostAmount;
|
|
109
|
+
if (cfgLearningBridge.consolidationThreshold != null) configOverrides.consolidationThreshold = cfgLearningBridge.consolidationThreshold;
|
|
110
|
+
if (cfgMemoryGraph.pageRankDamping != null) configOverrides.pageRankDamping = cfgMemoryGraph.pageRankDamping;
|
|
111
|
+
if (cfgMemoryGraph.maxNodes != null) configOverrides.maxNodes = cfgMemoryGraph.maxNodes;
|
|
112
|
+
// Merge config with defaults
|
|
113
|
+
const finalConfig = {
|
|
114
|
+
...DEFAULT_SONA_CONFIG,
|
|
115
|
+
...configOverrides,
|
|
116
|
+
...config
|
|
117
|
+
};""")
|
|
118
|
+
|
|
119
|
+
# ── Op c: intelligence.js — read neural.modelPath from config.json ──
|
|
120
|
+
patch("WM-007c: wire neural.modelPath from config.json",
|
|
121
|
+
INTEL,
|
|
122
|
+
"""function getDataDir() {
|
|
123
|
+
const cwd = process.cwd();
|
|
124
|
+
const localDir = join(cwd, '.claude-flow', 'neural');
|
|
125
|
+
const homeDir = join(homedir(), '.claude-flow', 'neural');
|
|
126
|
+
// Prefer local directory if .claude-flow exists
|
|
127
|
+
if (existsSync(join(cwd, '.claude-flow'))) {
|
|
128
|
+
return localDir;
|
|
129
|
+
}
|
|
130
|
+
return homeDir;
|
|
131
|
+
}""",
|
|
132
|
+
"""function getDataDir() {
|
|
133
|
+
const cwd = process.cwd();
|
|
134
|
+
// WM-007c: Read neural.modelPath from config.json
|
|
135
|
+
try {
|
|
136
|
+
const cfgPath = join(cwd, '.claude-flow', 'config.json');
|
|
137
|
+
if (existsSync(cfgPath)) {
|
|
138
|
+
const cfg = JSON.parse(readFileSync(cfgPath, 'utf-8'));
|
|
139
|
+
if (cfg.neural && cfg.neural.modelPath) {
|
|
140
|
+
const customDir = join(cwd, cfg.neural.modelPath);
|
|
141
|
+
return customDir;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
} catch {}
|
|
145
|
+
const localDir = join(cwd, '.claude-flow', 'neural');
|
|
146
|
+
const homeDir = join(homedir(), '.claude-flow', 'neural');
|
|
147
|
+
// Prefer local directory if .claude-flow exists
|
|
148
|
+
if (existsSync(join(cwd, '.claude-flow'))) {
|
|
149
|
+
return localDir;
|
|
150
|
+
}
|
|
151
|
+
return homeDir;
|
|
152
|
+
}""")
|
|
153
|
+
|
|
154
|
+
# ── Op d: start.js — read coordinationStrategy from config.json ──
|
|
155
|
+
patch("WM-007d: wire coordinationStrategy from config.json into swarm_init",
|
|
156
|
+
START_CMD,
|
|
157
|
+
""" const swarmResult = await callMCPTool('swarm_init', {
|
|
158
|
+
topology: finalTopology,
|
|
159
|
+
maxAgents,
|
|
160
|
+
autoScaling: swarmConfig.autoScale !== false
|
|
161
|
+
});""",
|
|
162
|
+
""" const swarmResult = await callMCPTool('swarm_init', {
|
|
163
|
+
topology: finalTopology,
|
|
164
|
+
maxAgents,
|
|
165
|
+
autoScaling: swarmConfig.autoScale !== false,
|
|
166
|
+
coordinationStrategy: swarmConfig.coordinationStrategy || 'consensus',
|
|
167
|
+
});""")
|
|
168
|
+
|
|
169
|
+
# ── Op e: hooks-tools.js — read hooks.enabled from config.json ──
|
|
170
|
+
# Insert before "// Auto-start daemon if enabled" — matches HK-004 patched form
|
|
171
|
+
patch("WM-007e: gate hook execution on hooks.enabled config",
|
|
172
|
+
MCP_HOOKS,
|
|
173
|
+
""" })();
|
|
174
|
+
// Auto-start daemon if enabled
|
|
175
|
+
let daemonStatus = { started: false };""",
|
|
176
|
+
""" })();
|
|
177
|
+
|
|
178
|
+
// WM-007e: Check hooks.enabled from config.json
|
|
179
|
+
try {
|
|
180
|
+
const hooksConfigPath = join(process.cwd(), '.claude-flow', 'config.json');
|
|
181
|
+
if (existsSync(hooksConfigPath)) {
|
|
182
|
+
const hCfg = JSON.parse(readFileSync(hooksConfigPath, 'utf-8'));
|
|
183
|
+
if (hCfg.hooks && hCfg.hooks.enabled === false) {
|
|
184
|
+
return { success: true, skipped: true, reason: 'hooks.enabled is false in config.json' };
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
} catch {}
|
|
188
|
+
|
|
189
|
+
// Auto-start daemon if enabled
|
|
190
|
+
let daemonStatus = { started: false };""")
|
|
191
|
+
|
|
192
|
+
# ── Op f: embeddings-tools.js — read memory.cacheSize from config.json ──
|
|
193
|
+
patch("WM-007f: wire memory.cacheSize from config.json into embeddings init",
|
|
194
|
+
EMB_TOOLS,
|
|
195
|
+
""" const cacheSize = input.cacheSize || 256;""",
|
|
196
|
+
""" // WM-007f: Read cacheSize from config.json as middle fallback
|
|
197
|
+
let configCacheSize = 256;
|
|
198
|
+
try {
|
|
199
|
+
const embCfgPath = resolve(join(process.cwd(), '.claude-flow', 'config.json'));
|
|
200
|
+
if (existsSync(embCfgPath)) {
|
|
201
|
+
const embCfg = JSON.parse(readFileSync(embCfgPath, 'utf-8'));
|
|
202
|
+
if (embCfg.memory && embCfg.memory.cacheSize) configCacheSize = embCfg.memory.cacheSize;
|
|
203
|
+
}
|
|
204
|
+
} catch {}
|
|
205
|
+
const cacheSize = input.cacheSize || configCacheSize || 256;""")
|
|
206
|
+
|
|
207
|
+
# ── Op g: Gate hooks on autoExecute ──
|
|
208
|
+
patch("WM-007g: gate hook execution on hooks.autoExecute config",
|
|
209
|
+
MCP_HOOKS,
|
|
210
|
+
""" if (hCfg.hooks && hCfg.hooks.enabled === false) {
|
|
211
|
+
return { success: true, skipped: true, reason: 'hooks.enabled is false in config.json' };
|
|
212
|
+
}""",
|
|
213
|
+
""" if (hCfg.hooks && hCfg.hooks.enabled === false) {
|
|
214
|
+
return { success: true, skipped: true, reason: 'hooks.enabled is false in config.json' };
|
|
215
|
+
}
|
|
216
|
+
if (hCfg.hooks && hCfg.hooks.autoExecute === false) {
|
|
217
|
+
return { success: true, skipped: true, reason: 'hooks.autoExecute is false in config.json' };
|
|
218
|
+
}""")
|
|
219
|
+
|
|
220
|
+
# ── Op h: Gate agentScopes.defaultScope on .enabled ──
|
|
221
|
+
patch("WM-007h: gate agentScopes.defaultScope on enabled flag",
|
|
222
|
+
MI,
|
|
223
|
+
""" hybridConfig.defaultNamespace = (cfgMemory.agentScopes && cfgMemory.agentScopes.defaultScope) || 'default';""",
|
|
224
|
+
""" hybridConfig.defaultNamespace = (cfgMemory.agentScopes && cfgMemory.agentScopes.enabled !== false && cfgMemory.agentScopes.defaultScope) || 'default';""")
|
|
225
|
+
|
|
226
|
+
# ── Op i: Gate learningBridge overrides on .enabled ──
|
|
227
|
+
patch("WM-007i: gate learningBridge overrides on enabled flag",
|
|
228
|
+
INTEL,
|
|
229
|
+
""" // WM-007b: Merge config.json learningBridge/memoryGraph into SONA config
|
|
230
|
+
const configOverrides = {};
|
|
231
|
+
if (cfgLearningBridge.sonaMode) configOverrides.sonaMode = cfgLearningBridge.sonaMode;
|
|
232
|
+
if (cfgLearningBridge.confidenceDecayRate != null) configOverrides.confidenceDecayRate = cfgLearningBridge.confidenceDecayRate;
|
|
233
|
+
if (cfgLearningBridge.accessBoostAmount != null) configOverrides.accessBoostAmount = cfgLearningBridge.accessBoostAmount;
|
|
234
|
+
if (cfgLearningBridge.consolidationThreshold != null) configOverrides.consolidationThreshold = cfgLearningBridge.consolidationThreshold;
|
|
235
|
+
if (cfgMemoryGraph.pageRankDamping != null) configOverrides.pageRankDamping = cfgMemoryGraph.pageRankDamping;
|
|
236
|
+
if (cfgMemoryGraph.maxNodes != null) configOverrides.maxNodes = cfgMemoryGraph.maxNodes;""",
|
|
237
|
+
""" // WM-007b: Merge config.json learningBridge/memoryGraph into SONA config
|
|
238
|
+
const configOverrides = {};
|
|
239
|
+
if (cfgLearningBridge.enabled !== false) {
|
|
240
|
+
if (cfgLearningBridge.sonaMode) configOverrides.sonaMode = cfgLearningBridge.sonaMode;
|
|
241
|
+
if (cfgLearningBridge.confidenceDecayRate != null) configOverrides.confidenceDecayRate = cfgLearningBridge.confidenceDecayRate;
|
|
242
|
+
if (cfgLearningBridge.accessBoostAmount != null) configOverrides.accessBoostAmount = cfgLearningBridge.accessBoostAmount;
|
|
243
|
+
if (cfgLearningBridge.consolidationThreshold != null) configOverrides.consolidationThreshold = cfgLearningBridge.consolidationThreshold;
|
|
244
|
+
}
|
|
245
|
+
if (cfgMemoryGraph.enabled !== false) {
|
|
246
|
+
if (cfgMemoryGraph.pageRankDamping != null) configOverrides.pageRankDamping = cfgMemoryGraph.pageRankDamping;
|
|
247
|
+
if (cfgMemoryGraph.maxNodes != null) configOverrides.maxNodes = cfgMemoryGraph.maxNodes;
|
|
248
|
+
}""")
|
|
249
|
+
|
|
250
|
+
# ── Op j: Gate semanticThreshold on memoryGraph.enabled ──
|
|
251
|
+
patch("WM-007j: gate semanticThreshold on memoryGraph.enabled flag",
|
|
252
|
+
MI,
|
|
253
|
+
""" hybridConfig.semanticThreshold = (cfgMemory.memoryGraph && cfgMemory.memoryGraph.similarityThreshold) || 0.7;""",
|
|
254
|
+
""" hybridConfig.semanticThreshold = (cfgMemory.memoryGraph && cfgMemory.memoryGraph.enabled !== false && cfgMemory.memoryGraph.similarityThreshold) || 0.7;""")
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
grep "cfgMemory" memory/memory-initializer.js
|
|
2
|
+
grep "cfgMemory.enableHNSW" memory/memory-initializer.js
|
|
3
|
+
grep "cfgMemory.agentScopes" memory/memory-initializer.js
|
|
4
|
+
grep "cfgLearningBridge" memory/intelligence.js
|
|
5
|
+
grep "configOverrides" memory/intelligence.js
|
|
6
|
+
grep "WM-007c" memory/intelligence.js
|
|
7
|
+
grep "coordinationStrategy: swarmConfig" commands/start.js
|
|
8
|
+
grep "WM-007e" mcp-tools/hooks-tools.js
|
|
9
|
+
grep "configCacheSize" mcp-tools/embeddings-tools.js
|
|
10
|
+
absent "Read HNSW config from embeddings.json" memory/memory-initializer.js
|
|
11
|
+
grep "hooks.autoExecute === false" mcp-tools/hooks-tools.js
|
|
12
|
+
grep "cfgMemory.agentScopes.enabled !== false" memory/memory-initializer.js
|
|
13
|
+
grep "cfgLearningBridge.enabled !== false" memory/intelligence.js
|
|
14
|
+
grep "cfgMemoryGraph.enabled !== false" memory/intelligence.js
|
|
15
|
+
grep "cfgMemory.memoryGraph.enabled !== false" memory/memory-initializer.js
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# SG-010: Add CLI options to init for all config.json settings
|
|
2
|
+
|
|
3
|
+
**Severity**: Enhancement
|
|
4
|
+
**GitHub**: [#1205](https://github.com/ruvnet/claude-flow/issues/1205)
|
|
5
|
+
|
|
6
|
+
## Root Cause
|
|
7
|
+
|
|
8
|
+
The `init` command has no CLI flags for most config.json settings. Users must edit
|
|
9
|
+
config.json manually after init. Additionally, `cacheSize` defaults to 100 in
|
|
10
|
+
executor.js but 256 everywhere else (embeddings-tools.js, settings-generator.js).
|
|
11
|
+
|
|
12
|
+
## Fix
|
|
13
|
+
|
|
14
|
+
14 ops add 21 CLI option declarations, wire them through to config.json generation,
|
|
15
|
+
and clean up stale cache duplication.
|
|
16
|
+
|
|
17
|
+
| Op | File | What |
|
|
18
|
+
|----|------|------|
|
|
19
|
+
| a | commands/init.js | Add 13 option declarations after `--dual` |
|
|
20
|
+
| b | commands/init.js | Wire 13 CLI flags into options.runtime/options.mcp |
|
|
21
|
+
| c | init/executor.js | Wire options into config.json template, fix cacheSize 100→256 |
|
|
22
|
+
| d | commands/init.js | Add 3 CLI examples |
|
|
23
|
+
| e | commands/init.js | Add 7 more option declarations (topology thru access-boost-amount) |
|
|
24
|
+
| f | commands/init.js | Wire 7 new flags into options |
|
|
25
|
+
| g | init/executor.js | Wire accessBoostAmount, hooks, modelPath from options (3 sub-patches) |
|
|
26
|
+
| h | commands/init.js | Add 2 CLI examples (topology, hooks) |
|
|
27
|
+
| i | commands/init.js + init/executor.js | Add `--default-scope` option, wiring, and template (3 sub-patches) |
|
|
28
|
+
| j | commands/init.js | Deduplicate SG-010b wiring block (stale cache cleanup) |
|
|
29
|
+
|
|
30
|
+
**New CLI options (a-d)**: `--cache-size`, `--coordination-strategy`, `--auto-scale`,
|
|
31
|
+
`--mcp-port`, `--mcp-auto-start`, `--memory-backend`, `--neural`, `--sona-mode`,
|
|
32
|
+
`--confidence-decay-rate`, `--consolidation-threshold`, `--page-rank-damping`,
|
|
33
|
+
`--max-memory-nodes`, `--similarity-threshold`.
|
|
34
|
+
|
|
35
|
+
**New CLI options (e-h)**: `--topology`, `--max-agents`, `--enable-hnsw`,
|
|
36
|
+
`--model-path`, `--hooks`, `--auto-execute`, `--access-boost-amount`.
|
|
37
|
+
|
|
38
|
+
**New CLI option (i)**: `--default-scope`.
|
|
39
|
+
|
|
40
|
+
## Files Patched
|
|
41
|
+
|
|
42
|
+
- `commands/init.js`
|
|
43
|
+
- `init/executor.js`
|
|
44
|
+
|
|
45
|
+
## Ops
|
|
46
|
+
|
|
47
|
+
14 ops in fix.py
|