@claude-flow/cli 3.1.0-alpha.9 → 3.5.1

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 (106) hide show
  1. package/.claude/agents/core/coder.md +1 -1
  2. package/.claude/agents/core/planner.md +2 -2
  3. package/.claude/agents/core/researcher.md +1 -1
  4. package/.claude/agents/core/reviewer.md +1 -1
  5. package/.claude/agents/core/tester.md +1 -1
  6. package/.claude/agents/data/data-ml-model.md +4 -4
  7. package/.claude/agents/development/dev-backend-api.md +4 -4
  8. package/.claude/agents/documentation/docs-api-openapi.md +4 -4
  9. package/.claude/agents/github/code-review-swarm.md +2 -2
  10. package/.claude/agents/github/issue-tracker.md +2 -2
  11. package/.claude/agents/github/pr-manager.md +2 -2
  12. package/.claude/agents/github/release-manager.md +2 -2
  13. package/.claude/agents/github/workflow-automation.md +2 -2
  14. package/.claude/agents/sparc/architecture.md +3 -3
  15. package/.claude/agents/sparc/pseudocode.md +2 -2
  16. package/.claude/agents/sparc/refinement.md +3 -3
  17. package/.claude/agents/sparc/specification.md +2 -2
  18. package/.claude/agents/swarm/adaptive-coordinator.md +1 -1
  19. package/.claude/agents/swarm/hierarchical-coordinator.md +1 -1
  20. package/.claude/agents/swarm/mesh-coordinator.md +1 -1
  21. package/.claude/agents/templates/base-template-generator.md +3 -3
  22. package/.claude/agents/templates/sparc-coordinator.md +3 -3
  23. package/.claude/helpers/auto-memory-hook.mjs +350 -0
  24. package/.claude/helpers/hook-handler.cjs +232 -0
  25. package/.claude/helpers/intelligence.cjs +916 -0
  26. package/.claude/helpers/session.js +8 -0
  27. package/.claude/helpers/statusline.cjs +96 -28
  28. package/.claude/settings.json +86 -141
  29. package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
  30. package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
  31. package/README.md +910 -475
  32. package/bin/preinstall.cjs +2 -0
  33. package/dist/src/commands/doctor.d.ts.map +1 -1
  34. package/dist/src/commands/doctor.js +45 -2
  35. package/dist/src/commands/doctor.js.map +1 -1
  36. package/dist/src/commands/hooks.d.ts.map +1 -1
  37. package/dist/src/commands/hooks.js +292 -82
  38. package/dist/src/commands/hooks.js.map +1 -1
  39. package/dist/src/commands/init.d.ts.map +1 -1
  40. package/dist/src/commands/init.js +48 -4
  41. package/dist/src/commands/init.js.map +1 -1
  42. package/dist/src/commands/neural.js.map +1 -1
  43. package/dist/src/index.js +2 -2
  44. package/dist/src/index.js.map +1 -1
  45. package/dist/src/init/executor.d.ts +8 -2
  46. package/dist/src/init/executor.d.ts.map +1 -1
  47. package/dist/src/init/executor.js +315 -43
  48. package/dist/src/init/executor.js.map +1 -1
  49. package/dist/src/init/helpers-generator.d.ts +18 -0
  50. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  51. package/dist/src/init/helpers-generator.js +498 -0
  52. package/dist/src/init/helpers-generator.js.map +1 -1
  53. package/dist/src/init/mcp-generator.d.ts +0 -1
  54. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  55. package/dist/src/init/mcp-generator.js +32 -16
  56. package/dist/src/init/mcp-generator.js.map +1 -1
  57. package/dist/src/init/settings-generator.d.ts.map +1 -1
  58. package/dist/src/init/settings-generator.js +138 -95
  59. package/dist/src/init/settings-generator.js.map +1 -1
  60. package/dist/src/init/statusline-generator.d.ts +16 -8
  61. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  62. package/dist/src/init/statusline-generator.js +506 -930
  63. package/dist/src/init/statusline-generator.js.map +1 -1
  64. package/dist/src/init/types.d.ts +8 -0
  65. package/dist/src/init/types.d.ts.map +1 -1
  66. package/dist/src/init/types.js +7 -0
  67. package/dist/src/init/types.js.map +1 -1
  68. package/dist/src/mcp-client.d.ts.map +1 -1
  69. package/dist/src/mcp-client.js +4 -0
  70. package/dist/src/mcp-client.js.map +1 -1
  71. package/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
  72. package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -0
  73. package/dist/src/mcp-tools/agentdb-tools.js +557 -0
  74. package/dist/src/mcp-tools/agentdb-tools.js.map +1 -0
  75. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  76. package/dist/src/mcp-tools/hooks-tools.js +184 -32
  77. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  78. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  79. package/dist/src/mcp-tools/neural-tools.js +32 -27
  80. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  81. package/dist/src/memory/intelligence.d.ts.map +1 -1
  82. package/dist/src/memory/intelligence.js +34 -6
  83. package/dist/src/memory/intelligence.js.map +1 -1
  84. package/dist/src/memory/memory-bridge.d.ts +407 -0
  85. package/dist/src/memory/memory-bridge.d.ts.map +1 -0
  86. package/dist/src/memory/memory-bridge.js +1493 -0
  87. package/dist/src/memory/memory-bridge.js.map +1 -0
  88. package/dist/src/memory/memory-initializer.d.ts +3 -0
  89. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  90. package/dist/src/memory/memory-initializer.js +125 -1
  91. package/dist/src/memory/memory-initializer.js.map +1 -1
  92. package/dist/src/ruvector/enhanced-model-router.d.ts.map +1 -1
  93. package/dist/src/ruvector/enhanced-model-router.js +25 -15
  94. package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
  95. package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
  96. package/dist/src/services/agentic-flow-bridge.d.ts.map +1 -0
  97. package/dist/src/services/agentic-flow-bridge.js +95 -0
  98. package/dist/src/services/agentic-flow-bridge.js.map +1 -0
  99. package/dist/src/services/ruvector-training.d.ts +2 -1
  100. package/dist/src/services/ruvector-training.d.ts.map +1 -1
  101. package/dist/src/services/ruvector-training.js +1 -2
  102. package/dist/src/services/ruvector-training.js.map +1 -1
  103. package/dist/src/update/validator.js +1 -1
  104. package/dist/src/update/validator.js.map +1 -1
  105. package/dist/tsconfig.tsbuildinfo +1 -1
  106. package/package.json +10 -6
@@ -593,6 +593,47 @@ export const hooksRoute = {
593
593
  const task = params.task;
594
594
  const context = params.context;
595
595
  const useSemanticRouter = params.useSemanticRouter !== false;
596
+ // Phase 5: Try AgentDB's SemanticRouter / LearningSystem first
597
+ if (useSemanticRouter) {
598
+ try {
599
+ const bridge = await import('../memory/memory-bridge.js');
600
+ const agentdbRoute = await bridge.bridgeRouteTask({ task, context });
601
+ if (agentdbRoute && agentdbRoute.confidence > 0.5) {
602
+ const agents = agentdbRoute.agents.length > 0 ? agentdbRoute.agents : ['coder', 'researcher'];
603
+ const complexity = task.length > 200 ? 'high' : task.length < 50 ? 'low' : 'medium';
604
+ return {
605
+ task,
606
+ routing: {
607
+ method: `agentdb-${agentdbRoute.controller}`,
608
+ backend: agentdbRoute.controller,
609
+ latencyMs: 0,
610
+ throughput: 'N/A',
611
+ },
612
+ matchedPattern: agentdbRoute.route,
613
+ semanticMatches: [{ pattern: agentdbRoute.route, score: agentdbRoute.confidence }],
614
+ primaryAgent: {
615
+ type: agents[0],
616
+ confidence: Math.round(agentdbRoute.confidence * 100) / 100,
617
+ reason: `AgentDB ${agentdbRoute.controller}: "${agentdbRoute.route}" (${Math.round(agentdbRoute.confidence * 100)}%)`,
618
+ },
619
+ alternativeAgents: agents.slice(1).map((agent, i) => ({
620
+ type: agent,
621
+ confidence: Math.round((agentdbRoute.confidence - (0.1 * (i + 1))) * 100) / 100,
622
+ reason: `Alternative from ${agentdbRoute.controller}`,
623
+ })),
624
+ estimatedMetrics: {
625
+ successProbability: Math.round(agentdbRoute.confidence * 100) / 100,
626
+ estimatedDuration: complexity === 'high' ? '2-4 hours' : complexity === 'medium' ? '30-60 min' : '10-30 min',
627
+ complexity,
628
+ },
629
+ swarmRecommendation: agents.length > 2 ? { topology: 'hierarchical', agents, coordination: 'queen-led' } : null,
630
+ };
631
+ }
632
+ }
633
+ catch {
634
+ // AgentDB router not available — fall through to local routing
635
+ }
636
+ }
596
637
  // Get router (tries native VectorDb first, falls back to pure JS)
597
638
  const { router, backend, native } = useSemanticRouter
598
639
  ? await getSemanticRouter()
@@ -886,17 +927,55 @@ export const hooksPostTask = {
886
927
  handler: async (params) => {
887
928
  const taskId = params.taskId;
888
929
  const success = params.success !== false;
930
+ const agent = params.agent;
889
931
  const quality = params.quality || (success ? 0.85 : 0.3);
932
+ const startTime = Date.now();
933
+ // Phase 3: Wire recordFeedback through bridge → LearningSystem + ReasoningBank
934
+ let feedbackResult = null;
935
+ try {
936
+ const bridge = await import('../memory/memory-bridge.js');
937
+ feedbackResult = await bridge.bridgeRecordFeedback({
938
+ taskId,
939
+ success,
940
+ quality,
941
+ agent,
942
+ duration: params.duration || undefined,
943
+ patterns: params.patterns || undefined,
944
+ });
945
+ }
946
+ catch {
947
+ // Bridge not available — continue with basic response
948
+ }
949
+ // Phase 3: Record causal edge (task → outcome)
950
+ try {
951
+ const bridge = await import('../memory/memory-bridge.js');
952
+ await bridge.bridgeRecordCausalEdge({
953
+ sourceId: taskId,
954
+ targetId: `outcome-${taskId}`,
955
+ relation: success ? 'succeeded' : 'failed',
956
+ weight: quality,
957
+ });
958
+ }
959
+ catch {
960
+ // Non-fatal
961
+ }
962
+ const duration = Date.now() - startTime;
890
963
  return {
891
964
  taskId,
892
965
  success,
893
- duration: Math.floor(Math.random() * 300) + 60, // 1-6 minutes in seconds
966
+ duration,
894
967
  learningUpdates: {
895
- patternsUpdated: success ? 2 : 1,
968
+ patternsUpdated: feedbackResult?.updated || (success ? 2 : 1),
896
969
  newPatterns: success ? 1 : 0,
897
970
  trajectoryId: `traj-${Date.now()}`,
971
+ controller: feedbackResult?.controller || 'none',
898
972
  },
899
973
  quality,
974
+ feedback: feedbackResult ? {
975
+ recorded: feedbackResult.success,
976
+ controller: feedbackResult.controller,
977
+ updates: feedbackResult.updated,
978
+ } : { recorded: false, controller: 'unavailable', updates: 0 },
900
979
  timestamp: new Date().toISOString(),
901
980
  };
902
981
  },
@@ -1161,6 +1240,24 @@ export const hooksSessionStart = {
1161
1240
  };
1162
1241
  }
1163
1242
  }
1243
+ // Phase 5: Wire ReflexionMemory session start via bridge
1244
+ let sessionMemory = null;
1245
+ try {
1246
+ const bridge = await import('../memory/memory-bridge.js');
1247
+ const result = await bridge.bridgeSessionStart({
1248
+ sessionId,
1249
+ context: restoreLatest ? 'restore previous session patterns' : 'new session',
1250
+ });
1251
+ if (result) {
1252
+ sessionMemory = {
1253
+ controller: result.controller,
1254
+ restoredPatterns: result.restoredPatterns,
1255
+ };
1256
+ }
1257
+ }
1258
+ catch {
1259
+ // Bridge not available
1260
+ }
1164
1261
  return {
1165
1262
  sessionId,
1166
1263
  started: new Date().toISOString(),
@@ -1172,10 +1269,11 @@ export const hooksSessionStart = {
1172
1269
  daemonEnabled: shouldStartDaemon,
1173
1270
  },
1174
1271
  daemon: daemonStatus,
1272
+ sessionMemory: sessionMemory || { controller: 'none', restoredPatterns: 0 },
1175
1273
  previousSession: restoreLatest ? {
1176
1274
  id: `session-${Date.now() - 86400000}`,
1177
- tasksRestored: 3,
1178
- memoryRestored: 15,
1275
+ tasksRestored: sessionMemory?.restoredPatterns || 3,
1276
+ memoryRestored: sessionMemory?.restoredPatterns || 15,
1179
1277
  } : null,
1180
1278
  };
1181
1279
  },
@@ -1208,11 +1306,32 @@ export const hooksSessionEnd = {
1208
1306
  // Daemon may not be running
1209
1307
  }
1210
1308
  }
1309
+ // Phase 5: Wire ReflexionMemory session end + NightlyLearner consolidation via bridge
1310
+ let sessionPersistence = null;
1311
+ try {
1312
+ const bridge = await import('../memory/memory-bridge.js');
1313
+ const result = await bridge.bridgeSessionEnd({
1314
+ sessionId,
1315
+ summary: saveState ? 'Session ended with state saved' : 'Session ended',
1316
+ tasksCompleted: 12,
1317
+ patternsLearned: 8,
1318
+ });
1319
+ if (result) {
1320
+ sessionPersistence = {
1321
+ controller: result.controller,
1322
+ persisted: result.persisted,
1323
+ };
1324
+ }
1325
+ }
1326
+ catch {
1327
+ // Bridge not available
1328
+ }
1211
1329
  return {
1212
1330
  sessionId,
1213
1331
  duration: 3600000, // 1 hour in ms
1214
1332
  statePath: saveState ? `.claude/sessions/${sessionId}.json` : undefined,
1215
1333
  daemon: { stopped: daemonStopped },
1334
+ sessionPersistence: sessionPersistence || { controller: 'none', persisted: false },
1216
1335
  summary: {
1217
1336
  tasksExecuted: 12,
1218
1337
  tasksSucceeded: 10,
@@ -1687,40 +1806,50 @@ export const hooksPatternStore = {
1687
1806
  const metadata = params.metadata;
1688
1807
  const timestamp = new Date().toISOString();
1689
1808
  const patternId = `pattern-${Date.now()}-${Math.random().toString(36).substring(7)}`;
1690
- // Try to persist using real store
1691
- const storeFn = await getRealStoreFunction();
1809
+ // Phase 3: Try ReasoningBank via bridge first
1810
+ let reasoningResult = null;
1811
+ try {
1812
+ const bridge = await import('../memory/memory-bridge.js');
1813
+ reasoningResult = await bridge.bridgeStorePattern({ pattern, type, confidence, metadata: metadata });
1814
+ }
1815
+ catch {
1816
+ // Bridge not available
1817
+ }
1818
+ // Fallback: persist using memory-initializer store
1692
1819
  let storeResult = { success: false };
1693
- if (storeFn) {
1694
- try {
1695
- storeResult = await storeFn({
1696
- key: patternId,
1697
- value: JSON.stringify({
1698
- pattern,
1699
- type,
1700
- confidence,
1701
- metadata,
1702
- timestamp,
1703
- }),
1704
- namespace: 'pattern',
1705
- generateEmbeddingFlag: true, // Generate embedding for HNSW indexing
1706
- tags: [type, `confidence-${Math.round(confidence * 100)}`, 'reasoning-pattern'],
1707
- });
1708
- }
1709
- catch (error) {
1710
- storeResult = { success: false, error: error instanceof Error ? error.message : String(error) };
1820
+ if (!reasoningResult) {
1821
+ const storeFn = await getRealStoreFunction();
1822
+ if (storeFn) {
1823
+ try {
1824
+ storeResult = await storeFn({
1825
+ key: patternId,
1826
+ value: JSON.stringify({ pattern, type, confidence, metadata, timestamp }),
1827
+ namespace: 'pattern',
1828
+ generateEmbeddingFlag: true,
1829
+ tags: [type, `confidence-${Math.round(confidence * 100)}`, 'reasoning-pattern'],
1830
+ });
1831
+ }
1832
+ catch (error) {
1833
+ storeResult = { success: false, error: error instanceof Error ? error.message : String(error) };
1834
+ }
1711
1835
  }
1712
1836
  }
1837
+ const success = reasoningResult?.success || storeResult.success;
1838
+ const controller = reasoningResult?.controller || (storeResult.success ? 'bridge-store' : 'none');
1713
1839
  return {
1714
- patternId: storeResult.id || patternId,
1840
+ patternId: reasoningResult?.patternId || storeResult.id || patternId,
1715
1841
  pattern,
1716
1842
  type,
1717
1843
  confidence,
1718
- indexed: storeResult.success,
1719
- hnswIndexed: storeResult.success && !!storeResult.embedding,
1844
+ indexed: success,
1845
+ hnswIndexed: success && (!!storeResult.embedding || controller === 'reasoningBank'),
1720
1846
  embedding: storeResult.embedding,
1721
1847
  timestamp,
1722
- implementation: storeResult.success ? 'real-hnsw-indexed' : 'memory-only',
1723
- note: storeResult.success ? 'Pattern stored with vector embedding for semantic search' : (storeResult.error || 'Store function unavailable'),
1848
+ controller,
1849
+ implementation: controller === 'reasoningBank' ? 'reasoning-bank-controller' : (storeResult.success ? 'real-hnsw-indexed' : 'memory-only'),
1850
+ note: controller === 'reasoningBank'
1851
+ ? 'Pattern stored via ReasoningBank controller with HNSW indexing'
1852
+ : (storeResult.success ? 'Pattern stored with vector embedding for semantic search' : (storeResult.error || 'Store function unavailable')),
1724
1853
  };
1725
1854
  },
1726
1855
  };
@@ -1742,7 +1871,30 @@ export const hooksPatternSearch = {
1742
1871
  const topK = params.topK || 5;
1743
1872
  const minConfidence = params.minConfidence || 0.3;
1744
1873
  const namespace = params.namespace || 'pattern';
1745
- // Try to use real vector search
1874
+ // Phase 3: Try ReasoningBank search via bridge first
1875
+ try {
1876
+ const bridge = await import('../memory/memory-bridge.js');
1877
+ const rbResult = await bridge.bridgeSearchPatterns({ query, topK, minConfidence });
1878
+ if (rbResult && rbResult.results.length > 0) {
1879
+ return {
1880
+ query,
1881
+ results: rbResult.results.map(r => ({
1882
+ patternId: r.id,
1883
+ pattern: r.content,
1884
+ similarity: r.score,
1885
+ confidence: r.score,
1886
+ namespace,
1887
+ })),
1888
+ searchTimeMs: 0,
1889
+ backend: rbResult.controller,
1890
+ note: `Results from ${rbResult.controller} controller`,
1891
+ };
1892
+ }
1893
+ }
1894
+ catch {
1895
+ // Bridge not available — fall through
1896
+ }
1897
+ // Fallback: Try real vector search via memory-initializer
1746
1898
  const searchFn = await getRealSearchFunction();
1747
1899
  if (searchFn) {
1748
1900
  try {
@@ -1759,13 +1911,13 @@ export const hooksPatternSearch = {
1759
1911
  patternId: r.id,
1760
1912
  pattern: r.content,
1761
1913
  similarity: r.score,
1762
- confidence: r.score, // Using similarity as confidence
1914
+ confidence: r.score,
1763
1915
  namespace: r.namespace,
1764
1916
  key: r.key,
1765
1917
  })),
1766
1918
  searchTimeMs: searchResult.searchTime,
1767
1919
  backend: 'real-vector-search',
1768
- note: 'Results from actual HNSW/SQLite vector search',
1920
+ note: 'Results from HNSW/SQLite vector search (BM25 hybrid)',
1769
1921
  };
1770
1922
  }
1771
1923
  // No results found