@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.
Files changed (79) hide show
  1. package/CLAUDE.md +87 -8
  2. package/README.md +156 -4
  3. package/check-patches.sh +90 -16
  4. package/lib/categories.json +3 -1
  5. package/lib/common.py +15 -0
  6. package/package.json +6 -3
  7. package/patch/010-CF-001-doctor-yaml/sentinel +1 -1
  8. package/patch/020-CF-002-config-export-yaml/README.md +1 -1
  9. package/patch/020-CF-002-config-export-yaml/fix.py +3 -43
  10. package/patch/060-DM-004-worker-stubs/README.md +35 -0
  11. package/patch/060-DM-004-worker-stubs/fix.py +83 -0
  12. package/patch/{070-DM-005-consolidation-worker-stub → 060-DM-004-worker-stubs}/sentinel +1 -0
  13. package/patch/320-SG-004-wizard-parity/fix.py +1 -1
  14. package/patch/340-SG-006-wizard-capture/README.md +29 -0
  15. package/patch/340-SG-006-wizard-capture/fix.py +23 -0
  16. package/patch/340-SG-006-wizard-capture/sentinel +2 -0
  17. package/patch/350-WM-001-memory-wiring/README.md +50 -0
  18. package/patch/350-WM-001-memory-wiring/fix.py +385 -0
  19. package/patch/350-WM-001-memory-wiring/sentinel +3 -0
  20. package/patch/360-WM-002-config-respect/README.md +31 -0
  21. package/patch/360-WM-002-config-respect/fix.py +37 -0
  22. package/patch/360-WM-002-config-respect/sentinel +3 -0
  23. package/patch/370-WM-003-auto-memory-bridge/README.md +37 -0
  24. package/patch/370-WM-003-auto-memory-bridge/fix.py +261 -0
  25. package/patch/370-WM-003-auto-memory-bridge/sentinel +6 -0
  26. package/patch/380-CF-003-doctor-native-deps/README.md +46 -0
  27. package/patch/380-CF-003-doctor-native-deps/fix.py +157 -0
  28. package/patch/380-CF-003-doctor-native-deps/sentinel +4 -0
  29. package/patch/385-SG-007-init-shallow-copy/README.md +25 -0
  30. package/patch/385-SG-007-init-shallow-copy/fix.py +44 -0
  31. package/patch/385-SG-007-init-shallow-copy/sentinel +3 -0
  32. package/patch/390-WM-004-source-hook-fail-loud/README.md +33 -0
  33. package/patch/390-WM-004-source-hook-fail-loud/fix.py +164 -0
  34. package/patch/390-WM-004-source-hook-fail-loud/sentinel +2 -0
  35. package/patch/420-CF-004-config-export-json/README.md +24 -0
  36. package/patch/420-CF-004-config-export-json/fix.py +24 -0
  37. package/patch/420-CF-004-config-export-json/sentinel +2 -0
  38. package/patch/440-SG-008-init-config-json/README.md +21 -0
  39. package/patch/440-SG-008-init-config-json/fix.py +116 -0
  40. package/patch/440-SG-008-init-config-json/sentinel +2 -0
  41. package/patch/450-CF-006-config-yaml-to-json/README.md +42 -0
  42. package/patch/450-CF-006-config-yaml-to-json/fix.py +138 -0
  43. package/patch/450-CF-006-config-yaml-to-json/sentinel +7 -0
  44. package/patch/480-DOC-001-readme-docs/README.md +52 -0
  45. package/patch/480-DOC-001-readme-docs/fix.py +273 -0
  46. package/patch/480-DOC-001-readme-docs/sentinel +11 -0
  47. package/patch/490-SG-009-remove-v3-mode/README.md +47 -0
  48. package/patch/490-SG-009-remove-v3-mode/fix.py +204 -0
  49. package/patch/490-SG-009-remove-v3-mode/sentinel +8 -0
  50. package/patch/500-CF-009-minimal-v3-defaults/README.md +25 -0
  51. package/patch/500-CF-009-minimal-v3-defaults/fix.py +32 -0
  52. package/patch/500-CF-009-minimal-v3-defaults/sentinel +2 -0
  53. package/patch/530-WM-007-wire-dead-config-keys/README.md +49 -0
  54. package/patch/530-WM-007-wire-dead-config-keys/fix.py +254 -0
  55. package/patch/530-WM-007-wire-dead-config-keys/sentinel +15 -0
  56. package/patch/540-SG-010-init-cli-options/README.md +47 -0
  57. package/patch/540-SG-010-init-cli-options/fix.py +418 -0
  58. package/patch/540-SG-010-init-cli-options/sentinel +19 -0
  59. package/patch/550-SG-011-topology-hierarchical-refs/README.md +34 -0
  60. package/patch/550-SG-011-topology-hierarchical-refs/fix.py +28 -0
  61. package/patch/550-SG-011-topology-hierarchical-refs/sentinel +5 -0
  62. package/patch/560-WM-008-agentdb-v3-upgrade/README.md +57 -0
  63. package/patch/560-WM-008-agentdb-v3-upgrade/fix.py +257 -0
  64. package/patch/560-WM-008-agentdb-v3-upgrade/fix.sh +49 -0
  65. package/patch/560-WM-008-agentdb-v3-upgrade/sentinel +13 -0
  66. package/patch/570-WM-009-agentdb-learning-loop/README.md +35 -0
  67. package/patch/570-WM-009-agentdb-learning-loop/fix.py +141 -0
  68. package/patch/570-WM-009-agentdb-learning-loop/sentinel +3 -0
  69. package/patch/580-WM-010-witness-chain-verify/README.md +33 -0
  70. package/patch/580-WM-010-witness-chain-verify/fix.py +45 -0
  71. package/patch/580-WM-010-witness-chain-verify/sentinel +1 -0
  72. package/patch/590-WM-011-reasoning-bank-controller/README.md +34 -0
  73. package/patch/590-WM-011-reasoning-bank-controller/fix.py +381 -0
  74. package/patch/590-WM-011-reasoning-bank-controller/sentinel +4 -0
  75. package/patch/060-DM-004-preload-worker-stub/README.md +0 -11
  76. package/patch/060-DM-004-preload-worker-stub/fix.py +0 -34
  77. package/patch/060-DM-004-preload-worker-stub/sentinel +0 -1
  78. package/patch/070-DM-005-consolidation-worker-stub/README.md +0 -11
  79. 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