claude-flow-novice 2.0.3 → 2.0.4

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 (272) hide show
  1. package/dist/src/cli/commands/guidance.js +487 -668
  2. package/dist/src/cli/commands/index-validate.js +18 -29
  3. package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
  4. package/dist/src/cli/commands/neural-goal-init.js +92 -125
  5. package/dist/src/cli/commands/swarm-exec.js +317 -393
  6. package/dist/src/cli/commands/swarm.js +1 -1
  7. package/dist/src/cli/commands/validate-framework.js +983 -1100
  8. package/dist/src/cli/commands/validate.js +144 -223
  9. package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
  10. package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
  11. package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
  12. package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
  13. package/dist/src/cli/simple-commands/agent.js +157 -193
  14. package/dist/src/cli/simple-commands/analysis.js +336 -446
  15. package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
  16. package/dist/src/cli/simple-commands/automation.js +481 -469
  17. package/dist/src/cli/simple-commands/batch-manager.js +261 -313
  18. package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
  19. package/dist/src/cli/simple-commands/claude-track.js +68 -90
  20. package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
  21. package/dist/src/cli/simple-commands/config.js +245 -290
  22. package/dist/src/cli/simple-commands/coordination.js +182 -234
  23. package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
  24. package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
  25. package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
  26. package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
  27. package/dist/src/cli/simple-commands/github/github-api.js +535 -574
  28. package/dist/src/cli/simple-commands/github/init.js +276 -303
  29. package/dist/src/cli/simple-commands/github.js +222 -247
  30. package/dist/src/cli/simple-commands/goal.js +51 -63
  31. package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
  32. package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
  33. package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
  34. package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
  35. package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
  36. package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
  37. package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
  38. package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
  39. package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
  40. package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
  41. package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
  42. package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
  43. package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
  44. package/dist/src/cli/simple-commands/hive.js +90 -79
  45. package/dist/src/cli/simple-commands/hook-safety.js +431 -521
  46. package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
  47. package/dist/src/cli/simple-commands/hooks.js +1064 -1204
  48. package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
  49. package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
  50. package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
  51. package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
  52. package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
  53. package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
  54. package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
  55. package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
  56. package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
  57. package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
  58. package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
  59. package/dist/src/cli/simple-commands/init/help.js +104 -107
  60. package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
  61. package/dist/src/cli/simple-commands/init/index.js +1510 -1759
  62. package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
  63. package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
  64. package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
  65. package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
  66. package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
  67. package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
  68. package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
  69. package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
  70. package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
  71. package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
  72. package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
  73. package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
  74. package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
  75. package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
  76. package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
  77. package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
  78. package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
  79. package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
  80. package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
  81. package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
  82. package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
  83. package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
  84. package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
  85. package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
  86. package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
  87. package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
  88. package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
  89. package/dist/src/cli/simple-commands/init.js +1 -2
  90. package/dist/src/cli/simple-commands/mcp-health.js +131 -158
  91. package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
  92. package/dist/src/cli/simple-commands/mcp.js +345 -400
  93. package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
  94. package/dist/src/cli/simple-commands/memory.js +247 -311
  95. package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
  96. package/dist/src/cli/simple-commands/monitor.js +294 -363
  97. package/dist/src/cli/simple-commands/neural.js +51 -65
  98. package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
  99. package/dist/src/cli/simple-commands/pair-basic.js +528 -656
  100. package/dist/src/cli/simple-commands/pair-old.js +430 -543
  101. package/dist/src/cli/simple-commands/pair-working.js +615 -751
  102. package/dist/src/cli/simple-commands/pair.js +615 -751
  103. package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
  104. package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
  105. package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
  106. package/dist/src/cli/simple-commands/process-ui.js +230 -254
  107. package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
  108. package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
  109. package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
  110. package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
  111. package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
  112. package/dist/src/cli/simple-commands/sparc/index.js +241 -298
  113. package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
  114. package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
  115. package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
  116. package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
  117. package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
  118. package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
  119. package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
  120. package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
  121. package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
  122. package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
  123. package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
  124. package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
  125. package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
  126. package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
  127. package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
  128. package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
  129. package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
  130. package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
  131. package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
  132. package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
  133. package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
  134. package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
  135. package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
  136. package/dist/src/cli/simple-commands/sparc.js +465 -493
  137. package/dist/src/cli/simple-commands/start-ui.js +108 -132
  138. package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
  139. package/dist/src/cli/simple-commands/start.js +1 -1
  140. package/dist/src/cli/simple-commands/status.js +254 -275
  141. package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
  142. package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
  143. package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
  144. package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
  145. package/dist/src/cli/simple-commands/stream-chain.js +260 -318
  146. package/dist/src/cli/simple-commands/stream-processor.js +290 -315
  147. package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
  148. package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
  149. package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
  150. package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
  151. package/dist/src/cli/simple-commands/swarm.js +887 -1082
  152. package/dist/src/cli/simple-commands/task.js +161 -206
  153. package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
  154. package/dist/src/cli/simple-commands/token-tracker.js +258 -316
  155. package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
  156. package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
  157. package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
  158. package/dist/src/cli/simple-commands/training.js +170 -227
  159. package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
  160. package/dist/src/cli/simple-commands/verification-integration.js +389 -417
  161. package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
  162. package/dist/src/cli/simple-commands/verification.js +493 -513
  163. package/dist/src/cli/simple-commands/web-server.js +766 -836
  164. package/dist/src/cli/simple-commands/webui-validator.js +106 -124
  165. package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
  166. package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
  167. package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
  168. package/dist/src/coordination/iteration-tracker.js +363 -454
  169. package/dist/src/enterprise/analytics-manager.js +1135 -0
  170. package/dist/src/enterprise/audit-manager.js +1115 -0
  171. package/dist/src/enterprise/cloud-manager.js +891 -0
  172. package/dist/src/enterprise/deployment-manager.js +966 -0
  173. package/dist/src/enterprise/index.js +6 -0
  174. package/dist/src/enterprise/project-manager.js +584 -0
  175. package/dist/src/enterprise/security-manager.js +991 -0
  176. package/dist/src/index.js +1 -1
  177. package/dist/src/mcp/DEPRECATED.js +46 -60
  178. package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
  179. package/dist/src/mcp/implementations/agent-tracker.js +114 -128
  180. package/dist/src/mcp/implementations/daa-tools.js +292 -350
  181. package/dist/src/mcp/implementations/workflow-tools.js +329 -361
  182. package/dist/src/mcp/mcp-config-manager.js +1183 -1331
  183. package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
  184. package/dist/src/mcp/mcp-server-novice.js +11 -17
  185. package/dist/src/mcp/mcp-server-sdk.js +11 -17
  186. package/dist/src/mcp/mcp-server.js +1620 -1484
  187. package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
  188. package/dist/src/memory/advanced-serializer.js +609 -589
  189. package/dist/src/memory/enhanced-examples.js +220 -305
  190. package/dist/src/memory/enhanced-memory.js +295 -336
  191. package/dist/src/memory/enhanced-session-serializer.js +408 -492
  192. package/dist/src/memory/fallback-memory-system.js +900 -1021
  193. package/dist/src/memory/fallback-store.js +93 -131
  194. package/dist/src/memory/high-performance-serialization.js +592 -730
  195. package/dist/src/memory/in-memory-store.js +161 -213
  196. package/dist/src/memory/index.js +123 -157
  197. package/dist/src/memory/lock-free-structures.js +578 -764
  198. package/dist/src/memory/memory-mapped-persistence.js +585 -766
  199. package/dist/src/memory/memory-pressure-manager.js +569 -707
  200. package/dist/src/memory/migration.js +358 -445
  201. package/dist/src/memory/shared-memory.js +641 -768
  202. package/dist/src/memory/sqlite-store.js +245 -325
  203. package/dist/src/memory/sqlite-wrapper.js +122 -151
  204. package/dist/src/memory/swarm-memory.js +470 -603
  205. package/dist/src/memory/test-example.js +126 -134
  206. package/dist/src/memory/ultra-fast-memory-store.js +622 -821
  207. package/dist/src/memory/unified-memory-manager.js +356 -437
  208. package/dist/src/migration/index.js +92 -0
  209. package/dist/src/migration/logger.js +121 -0
  210. package/dist/src/migration/migration-analyzer.js +268 -0
  211. package/dist/src/migration/migration-runner.js +522 -0
  212. package/dist/src/migration/migration-validator.js +285 -0
  213. package/dist/src/migration/progress-reporter.js +150 -0
  214. package/dist/src/migration/rollback-manager.js +321 -0
  215. package/dist/src/migration/tests/migration-system.test.js +7 -0
  216. package/dist/src/migration/types.js +3 -0
  217. package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
  218. package/dist/src/swarm/__tests__/integration.test.js +227 -0
  219. package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
  220. package/dist/src/swarm/advanced-orchestrator.js +1095 -0
  221. package/dist/src/swarm/claude-code-interface.js +961 -0
  222. package/dist/src/swarm/claude-flow-executor.js +229 -0
  223. package/dist/src/swarm/consensus-coordinator.js +475 -0
  224. package/dist/src/swarm/coordinator.js +2993 -0
  225. package/dist/src/swarm/direct-executor.js +1180 -0
  226. package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
  227. package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
  228. package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
  229. package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
  230. package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
  231. package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
  232. package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
  233. package/dist/src/swarm/executor-v2.js +322 -0
  234. package/dist/src/swarm/executor.js +815 -0
  235. package/dist/src/swarm/hive-mind-integration.js +703 -0
  236. package/dist/src/swarm/index.js +41 -0
  237. package/dist/src/swarm/json-output-aggregator.js +267 -0
  238. package/dist/src/swarm/large-scale-coordinator.js +542 -0
  239. package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
  240. package/dist/src/swarm/memory.js +1117 -0
  241. package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
  242. package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
  243. package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
  244. package/dist/src/swarm/optimizations/connection-pool.js +244 -0
  245. package/dist/src/swarm/optimizations/index.js +28 -0
  246. package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
  247. package/dist/src/swarm/optimizations/ttl-map.js +234 -0
  248. package/dist/src/swarm/prompt-cli.js +200 -0
  249. package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
  250. package/dist/src/swarm/prompt-copier.js +381 -0
  251. package/dist/src/swarm/prompt-manager.js +295 -0
  252. package/dist/src/swarm/prompt-utils.js +310 -0
  253. package/dist/src/swarm/result-aggregator.js +718 -0
  254. package/dist/src/swarm/sparc-executor.js +1568 -0
  255. package/dist/src/swarm/strategies/auto.js +758 -0
  256. package/dist/src/swarm/strategies/base.js +128 -0
  257. package/dist/src/swarm/strategies/research.js +914 -0
  258. package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
  259. package/dist/src/swarm/types.js +52 -0
  260. package/dist/src/swarm/workers/copy-worker.js +56 -0
  261. package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
  262. package/dist/src/utils/github-cli-safe.js +56 -64
  263. package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
  264. package/dist/src/utils/npx-isolated-cache.js +104 -119
  265. package/dist/src/utils/preference-manager.js +622 -652
  266. package/dist/src/utils/timezone-utils.js +86 -105
  267. package/dist/src/validators/epic-config-schema.js +214 -0
  268. package/dist/src/validators/index.js +10 -0
  269. package/dist/src/validators/swarm-init-validator.js +259 -0
  270. package/dist/src/validators/todowrite-batching-validator.js +215 -0
  271. package/dist/src/validators/todowrite-integration.js +187 -0
  272. package/package.json +2 -2
@@ -1,646 +1,526 @@
1
1
  /**
2
2
  * Verification-Training Integration Module
3
3
  * Connects verification results to the neural training system for continuous improvement
4
- */
5
-
6
- import fs from 'fs/promises';
7
- import path from 'path';
8
- import { execSync } from 'child_process';
9
-
4
+ */ import fs from "node:fs/promises";
5
+ import { execSync } from "child_process";
10
6
  /**
11
7
  * Integration between Verification and Training Systems
12
8
  * Feeds verification results into training to improve agent performance
13
- */
14
- export class VerificationTrainingIntegration {
15
- constructor() {
16
- this.trainingDataPath = '.claude-flow/training/verification-data.jsonl';
17
- this.modelPath = '.claude-flow/models/verification-model.json';
18
- this.metricsPath = '.claude-flow/metrics/agent-performance.json';
19
- this.learningRate = 0.1;
20
- this.initialized = false;
21
- }
22
-
23
- /**
9
+ */ export class VerificationTrainingIntegration {
10
+ /**
24
11
  * Initialize the integration
25
- */
26
- async initialize() {
27
- // Ensure directories exist
28
- const dirs = ['.claude-flow/training', '.claude-flow/models', '.claude-flow/metrics'];
29
-
30
- for (const dir of dirs) {
31
- await fs.mkdir(dir, { recursive: true });
12
+ */ async initialize() {
13
+ // Ensure directories exist
14
+ const dirs = [
15
+ '.claude-flow/training',
16
+ '.claude-flow/models',
17
+ '.claude-flow/metrics'
18
+ ];
19
+ for (const dir of dirs){
20
+ await fs.mkdir(dir, {
21
+ recursive: true
22
+ });
23
+ }
24
+ // Load or create model
25
+ await this.loadModel();
26
+ this.initialized = true;
27
+ console.log('āœ… Verification-Training integration initialized');
32
28
  }
33
-
34
- // Load or create model
35
- await this.loadModel();
36
- this.initialized = true;
37
-
38
- console.log('āœ… Verification-Training integration initialized');
39
- }
40
-
41
- /**
29
+ /**
42
30
  * Feed verification results to training system
43
- */
44
- async feedVerificationToTraining(verification) {
45
- if (!this.initialized) await this.initialize();
46
-
47
- // Extract training features from verification
48
- const trainingData = {
49
- input: {
50
- taskId: verification.taskId,
51
- agentType: verification.agentType,
52
- timestamp: verification.timestamp,
53
- mode: verification.mode || 'moderate',
54
- checksPerformed: verification.results?.map((r) => r.name) || [],
55
- },
56
- output: {
57
- score: verification.score,
58
- passed: verification.passed,
59
- threshold: verification.threshold,
60
- },
61
- metadata: {
62
- sessionId: process.env.SESSION_ID || 'default',
63
- timestamp: new Date().toISOString(),
64
- },
65
- };
66
-
67
- // Append to training data
68
- await this.appendTrainingData(trainingData);
69
-
70
- // Update agent-specific model
71
- await this.updateAgentModel(verification.agentType, verification);
72
-
73
- // Trigger incremental learning
74
- await this.incrementalLearn(trainingData);
75
-
76
- // Update performance metrics
77
- await this.updatePerformanceMetrics(verification);
78
-
79
- return trainingData;
80
- }
81
-
82
- /**
83
- * Incremental learning from new verification data
84
- */
85
- async incrementalLearn(trainingData) {
86
- const model = await this.loadModel();
87
-
88
- // Update agent reliability scores
89
- const agentType = trainingData.input.agentType;
90
- if (!model.agentReliability) model.agentReliability = {};
91
-
92
- const currentReliability = model.agentReliability[agentType] || 0.5;
93
- const newScore = trainingData.output.score;
94
-
95
- // Exponential moving average for reliability
96
- model.agentReliability[agentType] =
97
- currentReliability * (1 - this.learningRate) + newScore * this.learningRate;
98
-
99
- // Update verification patterns
100
- if (!model.patterns) model.patterns = {};
101
- const patternKey = `${agentType}_${trainingData.output.passed ? 'success' : 'failure'}`;
102
-
103
- if (!model.patterns[patternKey]) {
104
- model.patterns[patternKey] = {
105
- count: 0,
106
- avgScore: 0,
107
- checks: {},
108
- };
31
+ */ async feedVerificationToTraining(verification) {
32
+ if (!this.initialized) await this.initialize();
33
+ // Extract training features from verification
34
+ const trainingData = {
35
+ input: {
36
+ taskId: verification.taskId,
37
+ agentType: verification.agentType,
38
+ timestamp: verification.timestamp,
39
+ mode: verification.mode || 'moderate',
40
+ checksPerformed: verification.results?.map((r)=>r.name) || []
41
+ },
42
+ output: {
43
+ score: verification.score,
44
+ passed: verification.passed,
45
+ threshold: verification.threshold
46
+ },
47
+ metadata: {
48
+ sessionId: process.env.SESSION_ID || 'default',
49
+ timestamp: new Date().toISOString()
50
+ }
51
+ };
52
+ // Append to training data
53
+ await this.appendTrainingData(trainingData);
54
+ // Update agent-specific model
55
+ await this.updateAgentModel(verification.agentType, verification);
56
+ // Trigger incremental learning
57
+ await this.incrementalLearn(trainingData);
58
+ // Update performance metrics
59
+ await this.updatePerformanceMetrics(verification);
60
+ return trainingData;
109
61
  }
110
-
111
- const pattern = model.patterns[patternKey];
112
- pattern.count++;
113
- pattern.avgScore = (pattern.avgScore * (pattern.count - 1) + newScore) / pattern.count;
114
-
115
- // Track which checks lead to success/failure
116
- for (const check of trainingData.input.checksPerformed) {
117
- if (!pattern.checks[check]) {
118
- pattern.checks[check] = { success: 0, failure: 0 };
119
- }
120
- pattern.checks[check][trainingData.output.passed ? 'success' : 'failure']++;
62
+ /**
63
+ * Incremental learning from new verification data
64
+ */ async incrementalLearn(trainingData) {
65
+ const model = await this.loadModel();
66
+ // Update agent reliability scores
67
+ const agentType = trainingData.input.agentType;
68
+ if (!model.agentReliability) model.agentReliability = {};
69
+ const currentReliability = model.agentReliability[agentType] || 0.5;
70
+ const newScore = trainingData.output.score;
71
+ // Exponential moving average for reliability
72
+ model.agentReliability[agentType] = currentReliability * (1 - this.learningRate) + newScore * this.learningRate;
73
+ // Update verification patterns
74
+ if (!model.patterns) model.patterns = {};
75
+ const patternKey = `${agentType}_${trainingData.output.passed ? 'success' : 'failure'}`;
76
+ if (!model.patterns[patternKey]) {
77
+ model.patterns[patternKey] = {
78
+ count: 0,
79
+ avgScore: 0,
80
+ checks: {}
81
+ };
82
+ }
83
+ const pattern = model.patterns[patternKey];
84
+ pattern.count++;
85
+ pattern.avgScore = (pattern.avgScore * (pattern.count - 1) + newScore) / pattern.count;
86
+ // Track which checks lead to success/failure
87
+ for (const check of trainingData.input.checksPerformed){
88
+ if (!pattern.checks[check]) {
89
+ pattern.checks[check] = {
90
+ success: 0,
91
+ failure: 0
92
+ };
93
+ }
94
+ pattern.checks[check][trainingData.output.passed ? 'success' : 'failure']++;
95
+ }
96
+ // Save updated model
97
+ await this.saveModel(model);
98
+ // Log learning progress
99
+ console.log(`šŸ“Š Learning update for ${agentType}: reliability ${model.agentReliability[agentType].toFixed(3)}`);
121
100
  }
122
-
123
- // Save updated model
124
- await this.saveModel(model);
125
-
126
- // Log learning progress
127
- console.log(
128
- `šŸ“Š Learning update for ${agentType}: reliability ${model.agentReliability[agentType].toFixed(3)}`,
129
- );
130
- }
131
-
132
- /**
101
+ /**
133
102
  * Predict verification outcome based on historical data
134
- */
135
- async predictVerificationOutcome(taskType, agentType) {
136
- const model = await this.loadModel();
137
-
138
- // Get agent reliability
139
- const reliability = model.agentReliability?.[agentType] || 0.5;
140
-
141
- // Get pattern statistics
142
- const successPattern = model.patterns?.[`${agentType}_success`];
143
- const failurePattern = model.patterns?.[`${agentType}_failure`];
144
-
145
- if (!successPattern && !failurePattern) {
146
- return {
147
- predictedScore: reliability,
148
- confidence: 0.1,
149
- recommendation: 'insufficient_data',
150
- };
151
- }
152
-
153
- // Calculate prediction
154
- const totalCount = (successPattern?.count || 0) + (failurePattern?.count || 0);
155
- const successRate = (successPattern?.count || 0) / totalCount;
156
-
157
- const predictedScore = reliability * 0.7 + successRate * 0.3;
158
- const confidence = Math.min(totalCount / 100, 1.0); // Confidence increases with data
159
-
160
- // Generate recommendation
161
- let recommendation = 'proceed';
162
- if (predictedScore < 0.5) {
163
- recommendation = 'use_different_agent';
164
- } else if (predictedScore < 0.75) {
165
- recommendation = 'add_additional_checks';
166
- } else if (confidence < 0.3) {
167
- recommendation = 'low_confidence_proceed_with_caution';
103
+ */ async predictVerificationOutcome(taskType, agentType) {
104
+ const model = await this.loadModel();
105
+ // Get agent reliability
106
+ const reliability = model.agentReliability?.[agentType] || 0.5;
107
+ // Get pattern statistics
108
+ const successPattern = model.patterns?.[`${agentType}_success`];
109
+ const failurePattern = model.patterns?.[`${agentType}_failure`];
110
+ if (!successPattern && !failurePattern) {
111
+ return {
112
+ predictedScore: reliability,
113
+ confidence: 0.1,
114
+ recommendation: 'insufficient_data'
115
+ };
116
+ }
117
+ // Calculate prediction
118
+ const totalCount = (successPattern?.count || 0) + (failurePattern?.count || 0);
119
+ const successRate = (successPattern?.count || 0) / totalCount;
120
+ const predictedScore = reliability * 0.7 + successRate * 0.3;
121
+ const confidence = Math.min(totalCount / 100, 1.0); // Confidence increases with data
122
+ // Generate recommendation
123
+ let recommendation = 'proceed';
124
+ if (predictedScore < 0.5) {
125
+ recommendation = 'use_different_agent';
126
+ } else if (predictedScore < 0.75) {
127
+ recommendation = 'add_additional_checks';
128
+ } else if (confidence < 0.3) {
129
+ recommendation = 'low_confidence_proceed_with_caution';
130
+ }
131
+ return {
132
+ predictedScore,
133
+ confidence,
134
+ recommendation,
135
+ agentReliability: reliability,
136
+ historicalSuccessRate: successRate,
137
+ dataPoints: totalCount
138
+ };
168
139
  }
169
-
170
- return {
171
- predictedScore,
172
- confidence,
173
- recommendation,
174
- agentReliability: reliability,
175
- historicalSuccessRate: successRate,
176
- dataPoints: totalCount,
177
- };
178
- }
179
-
180
- /**
140
+ /**
181
141
  * Get agent recommendations based on task type
182
- */
183
- async recommendAgent(taskType) {
184
- const model = await this.loadModel();
185
-
186
- if (!model.agentReliability) {
187
- return {
188
- recommended: 'coder', // Default
189
- reason: 'no_historical_data',
190
- };
191
- }
192
-
193
- // Sort agents by reliability
194
- const agents = Object.entries(model.agentReliability).sort(([, a], [, b]) => b - a);
195
-
196
- if (agents.length === 0) {
197
- return {
198
- recommended: 'coder',
199
- reason: 'no_agent_data',
200
- };
142
+ */ async recommendAgent(taskType) {
143
+ const model = await this.loadModel();
144
+ if (!model.agentReliability) {
145
+ return {
146
+ recommended: 'coder',
147
+ reason: 'no_historical_data'
148
+ };
149
+ }
150
+ // Sort agents by reliability
151
+ const agents = Object.entries(model.agentReliability).sort(([, a], [, b])=>b - a);
152
+ if (agents.length === 0) {
153
+ return {
154
+ recommended: 'coder',
155
+ reason: 'no_agent_data'
156
+ };
157
+ }
158
+ const [bestAgent, bestScore] = agents[0];
159
+ return {
160
+ recommended: bestAgent,
161
+ reliability: bestScore,
162
+ alternatives: agents.slice(1, 3).map(([agent, score])=>({
163
+ agent,
164
+ reliability: score
165
+ })),
166
+ reason: `highest_reliability_score`
167
+ };
201
168
  }
202
-
203
- const [bestAgent, bestScore] = agents[0];
204
-
205
- return {
206
- recommended: bestAgent,
207
- reliability: bestScore,
208
- alternatives: agents.slice(1, 3).map(([agent, score]) => ({
209
- agent,
210
- reliability: score,
211
- })),
212
- reason: `highest_reliability_score`,
213
- };
214
- }
215
-
216
- /**
169
+ /**
217
170
  * Update agent-specific model
218
- */
219
- async updateAgentModel(agentType, verification) {
220
- const modelFile = `.claude-flow/models/agent-${agentType}.json`;
221
-
222
- let agentModel = {};
223
- try {
224
- const data = await fs.readFile(modelFile, 'utf8');
225
- agentModel = JSON.parse(data);
226
- } catch {
227
- agentModel = {
228
- agentType,
229
- totalTasks: 0,
230
- successfulTasks: 0,
231
- averageScore: 0,
232
- scoreHistory: [],
233
- checkPerformance: {},
234
- };
235
- }
236
-
237
- // Update statistics
238
- agentModel.totalTasks++;
239
- if (verification.passed) agentModel.successfulTasks++;
240
-
241
- // Update average score
242
- agentModel.averageScore =
243
- (agentModel.averageScore * (agentModel.totalTasks - 1) + verification.score) /
244
- agentModel.totalTasks;
245
-
246
- // Keep last 100 scores for trend analysis
247
- agentModel.scoreHistory.push({
248
- score: verification.score,
249
- timestamp: verification.timestamp,
250
- passed: verification.passed,
251
- });
252
- if (agentModel.scoreHistory.length > 100) {
253
- agentModel.scoreHistory = agentModel.scoreHistory.slice(-100);
254
- }
255
-
256
- // Track performance by check type
257
- if (verification.results) {
258
- for (const result of verification.results) {
259
- if (!agentModel.checkPerformance[result.name]) {
260
- agentModel.checkPerformance[result.name] = {
261
- total: 0,
262
- passed: 0,
263
- avgScore: 0,
264
- };
171
+ */ async updateAgentModel(agentType, verification) {
172
+ const modelFile = `.claude-flow/models/agent-${agentType}.json`;
173
+ let agentModel = {};
174
+ try {
175
+ const data = await fs.readFile(modelFile, 'utf8');
176
+ agentModel = JSON.parse(data);
177
+ } catch {
178
+ agentModel = {
179
+ agentType,
180
+ totalTasks: 0,
181
+ successfulTasks: 0,
182
+ averageScore: 0,
183
+ scoreHistory: [],
184
+ checkPerformance: {}
185
+ };
265
186
  }
266
-
267
- const checkPerf = agentModel.checkPerformance[result.name];
268
- checkPerf.total++;
269
- if (result.passed) checkPerf.passed++;
270
- checkPerf.avgScore =
271
- (checkPerf.avgScore * (checkPerf.total - 1) + result.score) / checkPerf.total;
272
- }
273
- }
274
-
275
- // Calculate performance trend (last 10 vs previous 10)
276
- if (agentModel.scoreHistory.length >= 20) {
277
- const recent10 = agentModel.scoreHistory.slice(-10);
278
- const previous10 = agentModel.scoreHistory.slice(-20, -10);
279
-
280
- const recentAvg = recent10.reduce((sum, h) => sum + h.score, 0) / 10;
281
- const previousAvg = previous10.reduce((sum, h) => sum + h.score, 0) / 10;
282
-
283
- agentModel.trend = {
284
- direction: recentAvg > previousAvg ? 'improving' : 'declining',
285
- change: recentAvg - previousAvg,
286
- recentAverage: recentAvg,
287
- previousAverage: previousAvg,
288
- };
289
- }
290
-
291
- // Save agent model
292
- await fs.writeFile(modelFile, JSON.stringify(agentModel, null, 2));
293
-
294
- // Log if agent is improving or declining
295
- if (agentModel.trend) {
296
- const emoji = agentModel.trend.direction === 'improving' ? 'šŸ“ˆ' : 'šŸ“‰';
297
- console.log(
298
- `${emoji} Agent ${agentType} is ${agentModel.trend.direction} (${agentModel.trend.change > 0 ? '+' : ''}${agentModel.trend.change.toFixed(3)})`,
299
- );
187
+ // Update statistics
188
+ agentModel.totalTasks++;
189
+ if (verification.passed) agentModel.successfulTasks++;
190
+ // Update average score
191
+ agentModel.averageScore = (agentModel.averageScore * (agentModel.totalTasks - 1) + verification.score) / agentModel.totalTasks;
192
+ // Keep last 100 scores for trend analysis
193
+ agentModel.scoreHistory.push({
194
+ score: verification.score,
195
+ timestamp: verification.timestamp,
196
+ passed: verification.passed
197
+ });
198
+ if (agentModel.scoreHistory.length > 100) {
199
+ agentModel.scoreHistory = agentModel.scoreHistory.slice(-100);
200
+ }
201
+ // Track performance by check type
202
+ if (verification.results) {
203
+ for (const result of verification.results){
204
+ if (!agentModel.checkPerformance[result.name]) {
205
+ agentModel.checkPerformance[result.name] = {
206
+ total: 0,
207
+ passed: 0,
208
+ avgScore: 0
209
+ };
210
+ }
211
+ const checkPerf = agentModel.checkPerformance[result.name];
212
+ checkPerf.total++;
213
+ if (result.passed) checkPerf.passed++;
214
+ checkPerf.avgScore = (checkPerf.avgScore * (checkPerf.total - 1) + result.score) / checkPerf.total;
215
+ }
216
+ }
217
+ // Calculate performance trend (last 10 vs previous 10)
218
+ if (agentModel.scoreHistory.length >= 20) {
219
+ const recent10 = agentModel.scoreHistory.slice(-10);
220
+ const previous10 = agentModel.scoreHistory.slice(-20, -10);
221
+ const recentAvg = recent10.reduce((sum, h)=>sum + h.score, 0) / 10;
222
+ const previousAvg = previous10.reduce((sum, h)=>sum + h.score, 0) / 10;
223
+ agentModel.trend = {
224
+ direction: recentAvg > previousAvg ? 'improving' : 'declining',
225
+ change: recentAvg - previousAvg,
226
+ recentAverage: recentAvg,
227
+ previousAverage: previousAvg
228
+ };
229
+ }
230
+ // Save agent model
231
+ await fs.writeFile(modelFile, JSON.stringify(agentModel, null, 2));
232
+ // Log if agent is improving or declining
233
+ if (agentModel.trend) {
234
+ const emoji = agentModel.trend.direction === 'improving' ? 'šŸ“ˆ' : 'šŸ“‰';
235
+ console.log(`${emoji} Agent ${agentType} is ${agentModel.trend.direction} (${agentModel.trend.change > 0 ? '+' : ''}${agentModel.trend.change.toFixed(3)})`);
236
+ }
237
+ return agentModel;
300
238
  }
301
-
302
- return agentModel;
303
- }
304
-
305
- /**
239
+ /**
306
240
  * Generate training recommendations
307
- */
308
- async generateTrainingRecommendations() {
309
- const model = await this.loadModel();
310
- const recommendations = [];
311
-
312
- // Check agent reliability
313
- if (model.agentReliability) {
314
- for (const [agent, reliability] of Object.entries(model.agentReliability)) {
315
- if (reliability < 0.7) {
316
- recommendations.push({
317
- type: 'retrain_agent',
318
- agent,
319
- currentReliability: reliability,
320
- action: `Retrain ${agent} agent - reliability below 70%`,
321
- });
241
+ */ async generateTrainingRecommendations() {
242
+ const model = await this.loadModel();
243
+ const recommendations = [];
244
+ // Check agent reliability
245
+ if (model.agentReliability) {
246
+ for (const [agent, reliability] of Object.entries(model.agentReliability)){
247
+ if (reliability < 0.7) {
248
+ recommendations.push({
249
+ type: 'retrain_agent',
250
+ agent,
251
+ currentReliability: reliability,
252
+ action: `Retrain ${agent} agent - reliability below 70%`
253
+ });
254
+ }
255
+ }
322
256
  }
323
- }
324
- }
325
-
326
- // Check patterns
327
- if (model.patterns) {
328
- for (const [pattern, data] of Object.entries(model.patterns)) {
329
- if (pattern.includes('failure') && data.count > 10) {
330
- const [agentType] = pattern.split('_');
331
-
332
- // Find most common failing checks
333
- const failingChecks = Object.entries(data.checks || {})
334
- .filter(([, stats]) => stats.failure > stats.success)
335
- .map(([check]) => check);
336
-
337
- if (failingChecks.length > 0) {
257
+ // Check patterns
258
+ if (model.patterns) {
259
+ for (const [pattern, data] of Object.entries(model.patterns)){
260
+ if (pattern.includes('failure') && data.count > 10) {
261
+ const [agentType] = pattern.split('_');
262
+ // Find most common failing checks
263
+ const failingChecks = Object.entries(data.checks || {}).filter(([, stats])=>stats.failure > stats.success).map(([check])=>check);
264
+ if (failingChecks.length > 0) {
265
+ recommendations.push({
266
+ type: 'improve_checks',
267
+ agent: agentType,
268
+ checks: failingChecks,
269
+ action: `Focus training on ${failingChecks.join(', ')} for ${agentType}`
270
+ });
271
+ }
272
+ }
273
+ }
274
+ }
275
+ // Check if we need more data
276
+ const totalDataPoints = Object.values(model.patterns || {}).reduce((sum, p)=>sum + p.count, 0);
277
+ if (totalDataPoints < 50) {
338
278
  recommendations.push({
339
- type: 'improve_checks',
340
- agent: agentType,
341
- checks: failingChecks,
342
- action: `Focus training on ${failingChecks.join(', ')} for ${agentType}`,
279
+ type: 'collect_more_data',
280
+ currentDataPoints: totalDataPoints,
281
+ action: 'Run more verification cycles to improve training accuracy'
343
282
  });
344
- }
345
283
  }
346
- }
347
- }
348
-
349
- // Check if we need more data
350
- const totalDataPoints = Object.values(model.patterns || {}).reduce(
351
- (sum, p) => sum + p.count,
352
- 0,
353
- );
354
-
355
- if (totalDataPoints < 50) {
356
- recommendations.push({
357
- type: 'collect_more_data',
358
- currentDataPoints: totalDataPoints,
359
- action: 'Run more verification cycles to improve training accuracy',
360
- });
284
+ return recommendations;
361
285
  }
362
-
363
- return recommendations;
364
- }
365
-
366
- /**
286
+ /**
367
287
  * Update performance metrics
368
- */
369
- async updatePerformanceMetrics(verification) {
370
- let metrics = {};
371
-
372
- try {
373
- const data = await fs.readFile(this.metricsPath, 'utf8');
374
- metrics = JSON.parse(data);
375
- } catch {
376
- metrics = {
377
- totalVerifications: 0,
378
- passedVerifications: 0,
379
- averageScore: 0,
380
- byAgent: {},
381
- byHour: {},
382
- created: new Date().toISOString(),
383
- };
288
+ */ async updatePerformanceMetrics(verification) {
289
+ let metrics = {};
290
+ try {
291
+ const data = await fs.readFile(this.metricsPath, 'utf8');
292
+ metrics = JSON.parse(data);
293
+ } catch {
294
+ metrics = {
295
+ totalVerifications: 0,
296
+ passedVerifications: 0,
297
+ averageScore: 0,
298
+ byAgent: {},
299
+ byHour: {},
300
+ created: new Date().toISOString()
301
+ };
302
+ }
303
+ // Update totals
304
+ metrics.totalVerifications++;
305
+ if (verification.passed) metrics.passedVerifications++;
306
+ metrics.averageScore = (metrics.averageScore * (metrics.totalVerifications - 1) + verification.score) / metrics.totalVerifications;
307
+ // Update by agent
308
+ if (!metrics.byAgent[verification.agentType]) {
309
+ metrics.byAgent[verification.agentType] = {
310
+ total: 0,
311
+ passed: 0,
312
+ avgScore: 0
313
+ };
314
+ }
315
+ const agentMetrics = metrics.byAgent[verification.agentType];
316
+ agentMetrics.total++;
317
+ if (verification.passed) agentMetrics.passed++;
318
+ agentMetrics.avgScore = (agentMetrics.avgScore * (agentMetrics.total - 1) + verification.score) / agentMetrics.total;
319
+ // Update by hour (for pattern detection)
320
+ const hour = new Date().getHours();
321
+ if (!metrics.byHour[hour]) {
322
+ metrics.byHour[hour] = {
323
+ total: 0,
324
+ avgScore: 0
325
+ };
326
+ }
327
+ metrics.byHour[hour].total++;
328
+ metrics.byHour[hour].avgScore = (metrics.byHour[hour].avgScore * (metrics.byHour[hour].total - 1) + verification.score) / metrics.byHour[hour].total;
329
+ metrics.lastUpdated = new Date().toISOString();
330
+ await fs.writeFile(this.metricsPath, JSON.stringify(metrics, null, 2));
331
+ return metrics;
384
332
  }
385
-
386
- // Update totals
387
- metrics.totalVerifications++;
388
- if (verification.passed) metrics.passedVerifications++;
389
- metrics.averageScore =
390
- (metrics.averageScore * (metrics.totalVerifications - 1) + verification.score) /
391
- metrics.totalVerifications;
392
-
393
- // Update by agent
394
- if (!metrics.byAgent[verification.agentType]) {
395
- metrics.byAgent[verification.agentType] = {
396
- total: 0,
397
- passed: 0,
398
- avgScore: 0,
399
- };
333
+ /**
334
+ * Train neural network for pattern recognition
335
+ */ async trainNeuralPatterns() {
336
+ console.log('🧠 Training neural patterns from verification data...');
337
+ try {
338
+ // Call the training command
339
+ const result = execSync('npx claude-flow-novice training neural-train --data .claude-flow/training/verification-data.jsonl --model verification-predictor --epochs 100', {
340
+ encoding: 'utf8',
341
+ stdio: 'pipe'
342
+ });
343
+ console.log('āœ… Neural training completed');
344
+ return {
345
+ success: true,
346
+ output: result
347
+ };
348
+ } catch (error) {
349
+ console.error('āŒ Neural training failed:', error.message);
350
+ return {
351
+ success: false,
352
+ error: error.message
353
+ };
354
+ }
400
355
  }
401
-
402
- const agentMetrics = metrics.byAgent[verification.agentType];
403
- agentMetrics.total++;
404
- if (verification.passed) agentMetrics.passed++;
405
- agentMetrics.avgScore =
406
- (agentMetrics.avgScore * (agentMetrics.total - 1) + verification.score) / agentMetrics.total;
407
-
408
- // Update by hour (for pattern detection)
409
- const hour = new Date().getHours();
410
- if (!metrics.byHour[hour]) {
411
- metrics.byHour[hour] = {
412
- total: 0,
413
- avgScore: 0,
414
- };
356
+ // Helper methods
357
+ async appendTrainingData(data) {
358
+ const line = JSON.stringify(data) + '\n';
359
+ await fs.appendFile(this.trainingDataPath, line);
415
360
  }
416
-
417
- metrics.byHour[hour].total++;
418
- metrics.byHour[hour].avgScore =
419
- (metrics.byHour[hour].avgScore * (metrics.byHour[hour].total - 1) + verification.score) /
420
- metrics.byHour[hour].total;
421
-
422
- metrics.lastUpdated = new Date().toISOString();
423
-
424
- await fs.writeFile(this.metricsPath, JSON.stringify(metrics, null, 2));
425
- return metrics;
426
- }
427
-
428
- /**
429
- * Train neural network for pattern recognition
430
- */
431
- async trainNeuralPatterns() {
432
- console.log('🧠 Training neural patterns from verification data...');
433
-
434
- try {
435
- // Call the training command
436
- const result = execSync(
437
- 'npx claude-flow-novice training neural-train --data .claude-flow/training/verification-data.jsonl --model verification-predictor --epochs 100',
438
- { encoding: 'utf8', stdio: 'pipe' },
439
- );
440
-
441
- console.log('āœ… Neural training completed');
442
- return { success: true, output: result };
443
- } catch (error) {
444
- console.error('āŒ Neural training failed:', error.message);
445
- return { success: false, error: error.message };
361
+ async loadModel() {
362
+ try {
363
+ const data = await fs.readFile(this.modelPath, 'utf8');
364
+ return JSON.parse(data);
365
+ } catch {
366
+ return {
367
+ version: '1.0.0',
368
+ created: new Date().toISOString(),
369
+ agentReliability: {},
370
+ patterns: {},
371
+ checkWeights: {}
372
+ };
373
+ }
446
374
  }
447
- }
448
-
449
- // Helper methods
450
-
451
- async appendTrainingData(data) {
452
- const line = JSON.stringify(data) + '\n';
453
- await fs.appendFile(this.trainingDataPath, line);
454
- }
455
-
456
- async loadModel() {
457
- try {
458
- const data = await fs.readFile(this.modelPath, 'utf8');
459
- return JSON.parse(data);
460
- } catch {
461
- return {
462
- version: '1.0.0',
463
- created: new Date().toISOString(),
464
- agentReliability: {},
465
- patterns: {},
466
- checkWeights: {},
467
- };
375
+ async saveModel(model) {
376
+ model.lastUpdated = new Date().toISOString();
377
+ await fs.writeFile(this.modelPath, JSON.stringify(model, null, 2));
468
378
  }
469
- }
470
-
471
- async saveModel(model) {
472
- model.lastUpdated = new Date().toISOString();
473
- await fs.writeFile(this.modelPath, JSON.stringify(model, null, 2));
474
- }
475
-
476
- /**
379
+ /**
477
380
  * Get training status and statistics
478
- */
479
- async getTrainingStatus() {
480
- const model = await this.loadModel();
481
- const metrics = await this.loadMetrics();
482
-
483
- // Count training data
484
- let trainingDataCount = 0;
485
- try {
486
- const data = await fs.readFile(this.trainingDataPath, 'utf8');
487
- trainingDataCount = data.split('\n').filter((line) => line.trim()).length;
488
- } catch {
489
- // File doesn't exist
381
+ */ async getTrainingStatus() {
382
+ const model = await this.loadModel();
383
+ const metrics = await this.loadMetrics();
384
+ // Count training data
385
+ let trainingDataCount = 0;
386
+ try {
387
+ const data = await fs.readFile(this.trainingDataPath, 'utf8');
388
+ trainingDataCount = data.split('\n').filter((line)=>line.trim()).length;
389
+ } catch {
390
+ // File doesn't exist
391
+ }
392
+ return {
393
+ modelVersion: model.version,
394
+ lastUpdated: model.lastUpdated,
395
+ trainingDataPoints: trainingDataCount,
396
+ agentReliability: model.agentReliability,
397
+ totalVerifications: metrics.totalVerifications || 0,
398
+ averageScore: metrics.averageScore || 0,
399
+ passRate: metrics.totalVerifications > 0 ? metrics.passedVerifications / metrics.totalVerifications : 0,
400
+ agentPerformance: metrics.byAgent || {},
401
+ recommendations: await this.generateTrainingRecommendations()
402
+ };
490
403
  }
491
-
492
- return {
493
- modelVersion: model.version,
494
- lastUpdated: model.lastUpdated,
495
- trainingDataPoints: trainingDataCount,
496
- agentReliability: model.agentReliability,
497
- totalVerifications: metrics.totalVerifications || 0,
498
- averageScore: metrics.averageScore || 0,
499
- passRate:
500
- metrics.totalVerifications > 0
501
- ? metrics.passedVerifications / metrics.totalVerifications
502
- : 0,
503
- agentPerformance: metrics.byAgent || {},
504
- recommendations: await this.generateTrainingRecommendations(),
505
- };
506
- }
507
-
508
- async loadMetrics() {
509
- try {
510
- const data = await fs.readFile(this.metricsPath, 'utf8');
511
- return JSON.parse(data);
512
- } catch {
513
- return {};
404
+ async loadMetrics() {
405
+ try {
406
+ const data = await fs.readFile(this.metricsPath, 'utf8');
407
+ return JSON.parse(data);
408
+ } catch {
409
+ return {};
410
+ }
411
+ }
412
+ constructor(){
413
+ this.trainingDataPath = '.claude-flow/training/verification-data.jsonl';
414
+ this.modelPath = '.claude-flow/models/verification-model.json';
415
+ this.metricsPath = '.claude-flow/metrics/agent-performance.json';
416
+ this.learningRate = 0.1;
417
+ this.initialized = false;
514
418
  }
515
- }
516
419
  }
517
-
518
420
  /**
519
421
  * CLI integration for verification-training
520
- */
521
- export async function verificationTrainingCommand(args, flags) {
522
- const integration = new VerificationTrainingIntegration();
523
- await integration.initialize();
524
-
525
- const subcommand = args[0] || 'status';
526
-
527
- switch (subcommand) {
528
- case 'feed':
529
- // Feed current verification data to training
530
- const verificationFile = '.swarm/verification-memory.json';
531
- try {
532
- const data = await fs.readFile(verificationFile, 'utf8');
533
- const memory = JSON.parse(data);
534
-
535
- if (memory.history && memory.history.length > 0) {
536
- console.log(`šŸ“Š Feeding ${memory.history.length} verification records to training...`);
537
-
538
- for (const verification of memory.history) {
539
- await integration.feedVerificationToTraining(verification);
540
- }
541
-
542
- console.log('āœ… Training data updated');
543
- } else {
544
- console.log('No verification history to feed');
545
- }
546
- } catch (error) {
547
- console.error('Error reading verification data:', error.message);
548
- }
549
- break;
550
-
551
- case 'predict':
552
- // Predict verification outcome
553
- const taskType = args[1] || 'default';
554
- const agentType = args[2] || 'coder';
555
-
556
- const prediction = await integration.predictVerificationOutcome(taskType, agentType);
557
- console.log('\nšŸ”® Verification Prediction:');
558
- console.log(` Predicted Score: ${prediction.predictedScore.toFixed(3)}`);
559
- console.log(` Confidence: ${(prediction.confidence * 100).toFixed(1)}%`);
560
- console.log(` Recommendation: ${prediction.recommendation}`);
561
- console.log(
562
- ` Historical Success Rate: ${(prediction.historicalSuccessRate * 100).toFixed(1)}%`,
563
- );
564
- console.log(` Data Points: ${prediction.dataPoints}`);
565
- break;
566
-
567
- case 'recommend':
568
- // Get agent recommendation
569
- const task = args[1] || 'default';
570
- const recommendation = await integration.recommendAgent(task);
571
-
572
- console.log('\nšŸ¤– Agent Recommendation:');
573
- console.log(` Recommended: ${recommendation.recommended}`);
574
- console.log(` Reliability: ${(recommendation.reliability * 100).toFixed(1)}%`);
575
- console.log(` Reason: ${recommendation.reason}`);
576
-
577
- if (recommendation.alternatives && recommendation.alternatives.length > 0) {
578
- console.log(' Alternatives:');
579
- for (const alt of recommendation.alternatives) {
580
- console.log(` • ${alt.agent}: ${(alt.reliability * 100).toFixed(1)}%`);
581
- }
582
- }
583
- break;
584
-
585
- case 'train':
586
- // Trigger neural training
587
- await integration.trainNeuralPatterns();
588
- break;
589
-
590
- case 'recommendations':
591
- // Get training recommendations
592
- const recs = await integration.generateTrainingRecommendations();
593
-
594
- console.log('\nšŸ’” Training Recommendations:');
595
- if (recs.length === 0) {
596
- console.log(' No recommendations at this time');
597
- } else {
598
- for (const rec of recs) {
599
- console.log(` • ${rec.action}`);
600
- }
601
- }
602
- break;
603
-
604
- case 'status':
605
- default:
606
- // Show training status
607
- const status = await integration.getTrainingStatus();
608
-
609
- console.log('\nšŸ“Š Verification-Training Status');
610
- console.log('━'.repeat(50));
611
- console.log(`Model Version: ${status.modelVersion}`);
612
- console.log(`Last Updated: ${status.lastUpdated || 'Never'}`);
613
- console.log(`Training Data Points: ${status.trainingDataPoints}`);
614
- console.log(`Total Verifications: ${status.totalVerifications}`);
615
- console.log(`Average Score: ${status.averageScore.toFixed(3)}`);
616
- console.log(`Pass Rate: ${(status.passRate * 100).toFixed(1)}%`);
617
-
618
- if (Object.keys(status.agentReliability).length > 0) {
619
- console.log('\nšŸ¤– Agent Reliability:');
620
- for (const [agent, reliability] of Object.entries(status.agentReliability)) {
621
- console.log(` ${agent}: ${(reliability * 100).toFixed(1)}%`);
622
- }
623
- }
624
-
625
- if (status.recommendations.length > 0) {
626
- console.log('\nšŸ’” Recommendations:');
627
- for (const rec of status.recommendations) {
628
- console.log(` • ${rec.action}`);
629
- }
630
- }
631
-
632
- console.log('\nšŸ“š Commands:');
633
- console.log(' feed - Feed verification data to training');
634
- console.log(' predict - Predict verification outcome');
635
- console.log(' recommend - Get agent recommendation');
636
- console.log(' train - Trigger neural training');
637
- console.log(' status - Show training status');
638
- break;
639
- }
422
+ */ export async function verificationTrainingCommand(args, flags) {
423
+ const integration = new VerificationTrainingIntegration();
424
+ await integration.initialize();
425
+ const subcommand = args[0] || 'status';
426
+ switch(subcommand){
427
+ case 'feed':
428
+ // Feed current verification data to training
429
+ const verificationFile = '.swarm/verification-memory.json';
430
+ try {
431
+ const data = await fs.readFile(verificationFile, 'utf8');
432
+ const memory = JSON.parse(data);
433
+ if (memory.history && memory.history.length > 0) {
434
+ console.log(`šŸ“Š Feeding ${memory.history.length} verification records to training...`);
435
+ for (const verification of memory.history){
436
+ await integration.feedVerificationToTraining(verification);
437
+ }
438
+ console.log('āœ… Training data updated');
439
+ } else {
440
+ console.log('No verification history to feed');
441
+ }
442
+ } catch (error) {
443
+ console.error('Error reading verification data:', error.message);
444
+ }
445
+ break;
446
+ case 'predict':
447
+ // Predict verification outcome
448
+ const taskType = args[1] || 'default';
449
+ const agentType = args[2] || 'coder';
450
+ const prediction = await integration.predictVerificationOutcome(taskType, agentType);
451
+ console.log('\nšŸ”® Verification Prediction:');
452
+ console.log(` Predicted Score: ${prediction.predictedScore.toFixed(3)}`);
453
+ console.log(` Confidence: ${(prediction.confidence * 100).toFixed(1)}%`);
454
+ console.log(` Recommendation: ${prediction.recommendation}`);
455
+ console.log(` Historical Success Rate: ${(prediction.historicalSuccessRate * 100).toFixed(1)}%`);
456
+ console.log(` Data Points: ${prediction.dataPoints}`);
457
+ break;
458
+ case 'recommend':
459
+ // Get agent recommendation
460
+ const task = args[1] || 'default';
461
+ const recommendation = await integration.recommendAgent(task);
462
+ console.log('\nšŸ¤– Agent Recommendation:');
463
+ console.log(` Recommended: ${recommendation.recommended}`);
464
+ console.log(` Reliability: ${(recommendation.reliability * 100).toFixed(1)}%`);
465
+ console.log(` Reason: ${recommendation.reason}`);
466
+ if (recommendation.alternatives && recommendation.alternatives.length > 0) {
467
+ console.log(' Alternatives:');
468
+ for (const alt of recommendation.alternatives){
469
+ console.log(` • ${alt.agent}: ${(alt.reliability * 100).toFixed(1)}%`);
470
+ }
471
+ }
472
+ break;
473
+ case 'train':
474
+ // Trigger neural training
475
+ await integration.trainNeuralPatterns();
476
+ break;
477
+ case 'recommendations':
478
+ // Get training recommendations
479
+ const recs = await integration.generateTrainingRecommendations();
480
+ console.log('\nšŸ’” Training Recommendations:');
481
+ if (recs.length === 0) {
482
+ console.log(' No recommendations at this time');
483
+ } else {
484
+ for (const rec of recs){
485
+ console.log(` • ${rec.action}`);
486
+ }
487
+ }
488
+ break;
489
+ case 'status':
490
+ default:
491
+ // Show training status
492
+ const status = await integration.getTrainingStatus();
493
+ console.log('\nšŸ“Š Verification-Training Status');
494
+ console.log('━'.repeat(50));
495
+ console.log(`Model Version: ${status.modelVersion}`);
496
+ console.log(`Last Updated: ${status.lastUpdated || 'Never'}`);
497
+ console.log(`Training Data Points: ${status.trainingDataPoints}`);
498
+ console.log(`Total Verifications: ${status.totalVerifications}`);
499
+ console.log(`Average Score: ${status.averageScore.toFixed(3)}`);
500
+ console.log(`Pass Rate: ${(status.passRate * 100).toFixed(1)}%`);
501
+ if (Object.keys(status.agentReliability).length > 0) {
502
+ console.log('\nšŸ¤– Agent Reliability:');
503
+ for (const [agent, reliability] of Object.entries(status.agentReliability)){
504
+ console.log(` ${agent}: ${(reliability * 100).toFixed(1)}%`);
505
+ }
506
+ }
507
+ if (status.recommendations.length > 0) {
508
+ console.log('\nšŸ’” Recommendations:');
509
+ for (const rec of status.recommendations){
510
+ console.log(` • ${rec.action}`);
511
+ }
512
+ }
513
+ console.log('\nšŸ“š Commands:');
514
+ console.log(' feed - Feed verification data to training');
515
+ console.log(' predict - Predict verification outcome');
516
+ console.log(' recommend - Get agent recommendation');
517
+ console.log(' train - Trigger neural training');
518
+ console.log(' status - Show training status');
519
+ break;
520
+ }
640
521
  }
641
-
642
522
  // Export for use in other modules
643
523
  export default {
644
- VerificationTrainingIntegration,
645
- verificationTrainingCommand,
524
+ VerificationTrainingIntegration,
525
+ verificationTrainingCommand
646
526
  };