@sparkleideas/cli 3.1.0-alpha.66 → 3.5.15-patch.14

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 (246) 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 +365 -0
  24. package/.claude/helpers/hook-handler.cjs +271 -0
  25. package/.claude/helpers/intelligence.cjs +916 -0
  26. package/.claude/helpers/learning-service.mjs +3 -3
  27. package/.claude/helpers/session.js +8 -0
  28. package/.claude/helpers/statusline.cjs +96 -28
  29. package/.claude/settings.json +86 -141
  30. package/.claude/skills/reasoningbank-intelligence/SKILL.md +2 -2
  31. package/.claude/skills/swarm-orchestration/SKILL.md +1 -1
  32. package/README.md +952 -481
  33. package/bin/preinstall.cjs +2 -0
  34. package/dist/src/appliance/gguf-engine.d.ts +91 -0
  35. package/dist/src/appliance/gguf-engine.d.ts.map +1 -0
  36. package/dist/src/appliance/gguf-engine.js +425 -0
  37. package/dist/src/appliance/gguf-engine.js.map +1 -0
  38. package/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
  39. package/dist/src/appliance/ruvllm-bridge.d.ts.map +1 -0
  40. package/dist/src/appliance/ruvllm-bridge.js +292 -0
  41. package/dist/src/appliance/ruvllm-bridge.js.map +1 -0
  42. package/dist/src/appliance/rvfa-builder.d.ts +44 -0
  43. package/dist/src/appliance/rvfa-builder.d.ts.map +1 -0
  44. package/dist/src/appliance/rvfa-builder.js +329 -0
  45. package/dist/src/appliance/rvfa-builder.js.map +1 -0
  46. package/dist/src/appliance/rvfa-distribution.d.ts +97 -0
  47. package/dist/src/appliance/rvfa-distribution.d.ts.map +1 -0
  48. package/dist/src/appliance/rvfa-distribution.js +370 -0
  49. package/dist/src/appliance/rvfa-distribution.js.map +1 -0
  50. package/dist/src/appliance/rvfa-format.d.ts +111 -0
  51. package/dist/src/appliance/rvfa-format.d.ts.map +1 -0
  52. package/dist/src/appliance/rvfa-format.js +393 -0
  53. package/dist/src/appliance/rvfa-format.js.map +1 -0
  54. package/dist/src/appliance/rvfa-runner.d.ts +69 -0
  55. package/dist/src/appliance/rvfa-runner.d.ts.map +1 -0
  56. package/dist/src/appliance/rvfa-runner.js +237 -0
  57. package/dist/src/appliance/rvfa-runner.js.map +1 -0
  58. package/dist/src/appliance/rvfa-signing.d.ts +123 -0
  59. package/dist/src/appliance/rvfa-signing.d.ts.map +1 -0
  60. package/dist/src/appliance/rvfa-signing.js +347 -0
  61. package/dist/src/appliance/rvfa-signing.js.map +1 -0
  62. package/dist/src/commands/appliance-advanced.d.ts +9 -0
  63. package/dist/src/commands/appliance-advanced.d.ts.map +1 -0
  64. package/dist/src/commands/appliance-advanced.js +215 -0
  65. package/dist/src/commands/appliance-advanced.js.map +1 -0
  66. package/dist/src/commands/appliance.d.ts +8 -0
  67. package/dist/src/commands/appliance.d.ts.map +1 -0
  68. package/dist/src/commands/appliance.js +406 -0
  69. package/dist/src/commands/appliance.js.map +1 -0
  70. package/dist/src/commands/benchmark.js +2 -2
  71. package/dist/src/commands/benchmark.js.map +1 -1
  72. package/dist/src/commands/claims.js +1 -1
  73. package/dist/src/commands/claims.js.map +1 -1
  74. package/dist/src/commands/config.js +1 -1
  75. package/dist/src/commands/config.js.map +1 -1
  76. package/dist/src/commands/daemon.d.ts.map +1 -1
  77. package/dist/src/commands/daemon.js +28 -12
  78. package/dist/src/commands/daemon.js.map +1 -1
  79. package/dist/src/commands/deployment.js +1 -1
  80. package/dist/src/commands/deployment.js.map +1 -1
  81. package/dist/src/commands/doctor.d.ts.map +1 -1
  82. package/dist/src/commands/doctor.js +76 -45
  83. package/dist/src/commands/doctor.js.map +1 -1
  84. package/dist/src/commands/embeddings.js +1 -1
  85. package/dist/src/commands/embeddings.js.map +1 -1
  86. package/dist/src/commands/hooks.d.ts.map +1 -1
  87. package/dist/src/commands/hooks.js +84 -81
  88. package/dist/src/commands/hooks.js.map +1 -1
  89. package/dist/src/commands/index.d.ts +7 -2
  90. package/dist/src/commands/index.d.ts.map +1 -1
  91. package/dist/src/commands/index.js +11 -2
  92. package/dist/src/commands/index.js.map +1 -1
  93. package/dist/src/commands/init.d.ts.map +1 -1
  94. package/dist/src/commands/init.js +29 -34
  95. package/dist/src/commands/init.js.map +1 -1
  96. package/dist/src/commands/mcp.d.ts.map +1 -1
  97. package/dist/src/commands/mcp.js +18 -3
  98. package/dist/src/commands/mcp.js.map +1 -1
  99. package/dist/src/commands/memory.d.ts.map +1 -1
  100. package/dist/src/commands/memory.js +25 -1
  101. package/dist/src/commands/memory.js.map +1 -1
  102. package/dist/src/commands/neural.js +1 -1
  103. package/dist/src/commands/neural.js.map +1 -1
  104. package/dist/src/commands/performance.js +1 -1
  105. package/dist/src/commands/performance.js.map +1 -1
  106. package/dist/src/commands/plugins.js +1 -1
  107. package/dist/src/commands/plugins.js.map +1 -1
  108. package/dist/src/commands/providers.js +1 -1
  109. package/dist/src/commands/providers.js.map +1 -1
  110. package/dist/src/commands/security.js +1 -1
  111. package/dist/src/commands/security.js.map +1 -1
  112. package/dist/src/commands/start.js +11 -11
  113. package/dist/src/commands/start.js.map +1 -1
  114. package/dist/src/commands/status.d.ts.map +1 -1
  115. package/dist/src/commands/status.js +12 -5
  116. package/dist/src/commands/status.js.map +1 -1
  117. package/dist/src/commands/transfer-store.js +1 -1
  118. package/dist/src/commands/transfer-store.js.map +1 -1
  119. package/dist/src/index.d.ts +1 -1
  120. package/dist/src/index.js +5 -5
  121. package/dist/src/index.js.map +1 -1
  122. package/dist/src/init/claudemd-generator.js +1 -1
  123. package/dist/src/init/claudemd-generator.js.map +1 -1
  124. package/dist/src/init/executor.d.ts.map +1 -1
  125. package/dist/src/init/executor.js +233 -97
  126. package/dist/src/init/executor.js.map +1 -1
  127. package/dist/src/init/helpers-generator.d.ts +18 -0
  128. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  129. package/dist/src/init/helpers-generator.js +587 -15
  130. package/dist/src/init/helpers-generator.js.map +1 -1
  131. package/dist/src/init/mcp-generator.d.ts +0 -1
  132. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  133. package/dist/src/init/mcp-generator.js +33 -17
  134. package/dist/src/init/mcp-generator.js.map +1 -1
  135. package/dist/src/init/settings-generator.d.ts.map +1 -1
  136. package/dist/src/init/settings-generator.js +140 -137
  137. package/dist/src/init/settings-generator.js.map +1 -1
  138. package/dist/src/init/statusline-generator.d.ts +16 -8
  139. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  140. package/dist/src/init/statusline-generator.js +506 -930
  141. package/dist/src/init/statusline-generator.js.map +1 -1
  142. package/dist/src/init/types.d.ts +8 -0
  143. package/dist/src/init/types.d.ts.map +1 -1
  144. package/dist/src/init/types.js +8 -1
  145. package/dist/src/init/types.js.map +1 -1
  146. package/dist/src/mcp-client.d.ts.map +1 -1
  147. package/dist/src/mcp-client.js +4 -0
  148. package/dist/src/mcp-client.js.map +1 -1
  149. package/dist/src/mcp-server.d.ts.map +1 -1
  150. package/dist/src/mcp-server.js +27 -1
  151. package/dist/src/mcp-server.js.map +1 -1
  152. package/dist/src/mcp-tools/agentdb-tools.d.ts +30 -0
  153. package/dist/src/mcp-tools/agentdb-tools.d.ts.map +1 -0
  154. package/dist/src/mcp-tools/agentdb-tools.js +557 -0
  155. package/dist/src/mcp-tools/agentdb-tools.js.map +1 -0
  156. package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
  157. package/dist/src/mcp-tools/config-tools.js +11 -1
  158. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  159. package/dist/src/mcp-tools/coordination-tools.js +1 -1
  160. package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
  161. package/dist/src/mcp-tools/daa-tools.js +5 -5
  162. package/dist/src/mcp-tools/daa-tools.js.map +1 -1
  163. package/dist/src/mcp-tools/embeddings-tools.js +1 -1
  164. package/dist/src/mcp-tools/github-tools.js +2 -2
  165. package/dist/src/mcp-tools/github-tools.js.map +1 -1
  166. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  167. package/dist/src/mcp-tools/hooks-tools.js +205 -33
  168. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  169. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  170. package/dist/src/mcp-tools/memory-tools.js +18 -1
  171. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  172. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  173. package/dist/src/mcp-tools/neural-tools.js +32 -27
  174. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  175. package/dist/src/mcp-tools/performance-tools.js +1 -1
  176. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  177. package/dist/src/mcp-tools/system-tools.d.ts.map +1 -1
  178. package/dist/src/mcp-tools/system-tools.js +109 -6
  179. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  180. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  181. package/dist/src/mcp-tools/task-tools.js +36 -0
  182. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  183. package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -1
  184. package/dist/src/mcp-tools/workflow-tools.js +91 -0
  185. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  186. package/dist/src/memory/intelligence.d.ts.map +1 -1
  187. package/dist/src/memory/intelligence.js +34 -6
  188. package/dist/src/memory/intelligence.js.map +1 -1
  189. package/dist/src/memory/memory-bridge.d.ts +407 -0
  190. package/dist/src/memory/memory-bridge.d.ts.map +1 -0
  191. package/dist/src/memory/memory-bridge.js +1494 -0
  192. package/dist/src/memory/memory-bridge.js.map +1 -0
  193. package/dist/src/memory/memory-initializer.d.ts +10 -1
  194. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  195. package/dist/src/memory/memory-initializer.js +182 -10
  196. package/dist/src/memory/memory-initializer.js.map +1 -1
  197. package/dist/src/output.d.ts.map +1 -1
  198. package/dist/src/output.js +1 -0
  199. package/dist/src/output.js.map +1 -1
  200. package/dist/src/plugins/manager.d.ts.map +1 -1
  201. package/dist/src/plugins/manager.js +24 -7
  202. package/dist/src/plugins/manager.js.map +1 -1
  203. package/dist/src/plugins/store/discovery.js +1 -1
  204. package/dist/src/plugins/store/discovery.js.map +1 -1
  205. package/dist/src/production/error-handler.js +1 -1
  206. package/dist/src/production/error-handler.js.map +1 -1
  207. package/dist/src/runtime/headless.js +3 -3
  208. package/dist/src/runtime/headless.js.map +1 -1
  209. package/dist/src/ruvector/enhanced-model-router.d.ts.map +1 -1
  210. package/dist/src/ruvector/enhanced-model-router.js +25 -15
  211. package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
  212. package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
  213. package/dist/src/services/agentic-flow-bridge.d.ts.map +1 -0
  214. package/dist/src/services/agentic-flow-bridge.js +95 -0
  215. package/dist/src/services/agentic-flow-bridge.js.map +1 -0
  216. package/dist/src/services/claim-service.js +1 -1
  217. package/dist/src/services/claim-service.js.map +1 -1
  218. package/dist/src/services/container-worker-pool.d.ts.map +1 -1
  219. package/dist/src/services/container-worker-pool.js +2 -0
  220. package/dist/src/services/container-worker-pool.js.map +1 -1
  221. package/dist/src/services/ruvector-training.d.ts +2 -1
  222. package/dist/src/services/ruvector-training.d.ts.map +1 -1
  223. package/dist/src/services/ruvector-training.js +1 -2
  224. package/dist/src/services/ruvector-training.js.map +1 -1
  225. package/dist/src/services/worker-queue.d.ts.map +1 -1
  226. package/dist/src/services/worker-queue.js +2 -0
  227. package/dist/src/services/worker-queue.js.map +1 -1
  228. package/dist/src/transfer/ipfs/client.d.ts.map +1 -1
  229. package/dist/src/transfer/ipfs/client.js +8 -0
  230. package/dist/src/transfer/ipfs/client.js.map +1 -1
  231. package/dist/src/transfer/ipfs/upload.d.ts.map +1 -1
  232. package/dist/src/transfer/ipfs/upload.js +0 -2
  233. package/dist/src/transfer/ipfs/upload.js.map +1 -1
  234. package/dist/src/transfer/serialization/cfp.d.ts.map +1 -1
  235. package/dist/src/transfer/serialization/cfp.js +8 -5
  236. package/dist/src/transfer/serialization/cfp.js.map +1 -1
  237. package/dist/src/transfer/storage/gcs.d.ts.map +1 -1
  238. package/dist/src/transfer/storage/gcs.js +49 -23
  239. package/dist/src/transfer/storage/gcs.js.map +1 -1
  240. package/dist/src/types.d.ts +1 -1
  241. package/dist/src/types.js +1 -1
  242. package/dist/src/update/validator.js +1 -1
  243. package/dist/src/update/validator.js.map +1 -1
  244. package/dist/tsconfig.build.tsbuildinfo +1 -1
  245. package/dist/tsconfig.tsbuildinfo +1 -0
  246. package/package.json +16 -13
@@ -512,12 +512,32 @@ export const hooksPostEdit = {
512
512
  handler: async (params) => {
513
513
  const filePath = params.filePath;
514
514
  const success = params.success !== false;
515
+ const agent = params.agent;
516
+ // Wire recordFeedback through bridge (issue #1209)
517
+ let feedbackResult = null;
518
+ try {
519
+ const bridge = await import('../memory/memory-bridge.js');
520
+ feedbackResult = await bridge.bridgeRecordFeedback({
521
+ taskId: `edit-${filePath}-${Date.now()}`,
522
+ success,
523
+ quality: success ? 0.85 : 0.3,
524
+ agent,
525
+ });
526
+ }
527
+ catch {
528
+ // Bridge not available — continue with basic response
529
+ }
515
530
  return {
516
531
  recorded: true,
517
532
  filePath,
518
533
  success,
519
534
  timestamp: new Date().toISOString(),
520
535
  learningUpdate: success ? 'pattern_reinforced' : 'pattern_adjusted',
536
+ feedback: feedbackResult ? {
537
+ recorded: feedbackResult.success,
538
+ controller: feedbackResult.controller,
539
+ updates: feedbackResult.updated,
540
+ } : { recorded: false, controller: 'unavailable', updates: 0 },
521
541
  };
522
542
  },
523
543
  };
@@ -593,6 +613,47 @@ export const hooksRoute = {
593
613
  const task = params.task;
594
614
  const context = params.context;
595
615
  const useSemanticRouter = params.useSemanticRouter !== false;
616
+ // Phase 5: Try AgentDB's SemanticRouter / LearningSystem first
617
+ if (useSemanticRouter) {
618
+ try {
619
+ const bridge = await import('../memory/memory-bridge.js');
620
+ const agentdbRoute = await bridge.bridgeRouteTask({ task, context });
621
+ if (agentdbRoute && agentdbRoute.confidence > 0.5) {
622
+ const agents = agentdbRoute.agents.length > 0 ? agentdbRoute.agents : ['coder', 'researcher'];
623
+ const complexity = task.length > 200 ? 'high' : task.length < 50 ? 'low' : 'medium';
624
+ return {
625
+ task,
626
+ routing: {
627
+ method: `agentdb-${agentdbRoute.controller}`,
628
+ backend: agentdbRoute.controller,
629
+ latencyMs: 0,
630
+ throughput: 'N/A',
631
+ },
632
+ matchedPattern: agentdbRoute.route,
633
+ semanticMatches: [{ pattern: agentdbRoute.route, score: agentdbRoute.confidence }],
634
+ primaryAgent: {
635
+ type: agents[0],
636
+ confidence: Math.round(agentdbRoute.confidence * 100) / 100,
637
+ reason: `AgentDB ${agentdbRoute.controller}: "${agentdbRoute.route}" (${Math.round(agentdbRoute.confidence * 100)}%)`,
638
+ },
639
+ alternativeAgents: agents.slice(1).map((agent, i) => ({
640
+ type: agent,
641
+ confidence: Math.round((agentdbRoute.confidence - (0.1 * (i + 1))) * 100) / 100,
642
+ reason: `Alternative from ${agentdbRoute.controller}`,
643
+ })),
644
+ estimatedMetrics: {
645
+ successProbability: Math.round(agentdbRoute.confidence * 100) / 100,
646
+ estimatedDuration: complexity === 'high' ? '2-4 hours' : complexity === 'medium' ? '30-60 min' : '10-30 min',
647
+ complexity,
648
+ },
649
+ swarmRecommendation: agents.length > 2 ? { topology: 'hierarchical', agents, coordination: 'queen-led' } : null,
650
+ };
651
+ }
652
+ }
653
+ catch {
654
+ // AgentDB router not available — fall through to local routing
655
+ }
656
+ }
596
657
  // Get router (tries native VectorDb first, falls back to pure JS)
597
658
  const { router, backend, native } = useSemanticRouter
598
659
  ? await getSemanticRouter()
@@ -886,17 +947,55 @@ export const hooksPostTask = {
886
947
  handler: async (params) => {
887
948
  const taskId = params.taskId;
888
949
  const success = params.success !== false;
950
+ const agent = params.agent;
889
951
  const quality = params.quality || (success ? 0.85 : 0.3);
952
+ const startTime = Date.now();
953
+ // Phase 3: Wire recordFeedback through bridge → LearningSystem + ReasoningBank
954
+ let feedbackResult = null;
955
+ try {
956
+ const bridge = await import('../memory/memory-bridge.js');
957
+ feedbackResult = await bridge.bridgeRecordFeedback({
958
+ taskId,
959
+ success,
960
+ quality,
961
+ agent,
962
+ duration: params.duration || undefined,
963
+ patterns: params.patterns || undefined,
964
+ });
965
+ }
966
+ catch {
967
+ // Bridge not available — continue with basic response
968
+ }
969
+ // Phase 3: Record causal edge (task → outcome)
970
+ try {
971
+ const bridge = await import('../memory/memory-bridge.js');
972
+ await bridge.bridgeRecordCausalEdge({
973
+ sourceId: taskId,
974
+ targetId: `outcome-${taskId}`,
975
+ relation: success ? 'succeeded' : 'failed',
976
+ weight: quality,
977
+ });
978
+ }
979
+ catch {
980
+ // Non-fatal
981
+ }
982
+ const duration = Date.now() - startTime;
890
983
  return {
891
984
  taskId,
892
985
  success,
893
- duration: Math.floor(Math.random() * 300) + 60, // 1-6 minutes in seconds
986
+ duration,
894
987
  learningUpdates: {
895
- patternsUpdated: success ? 2 : 1,
988
+ patternsUpdated: feedbackResult?.updated || (success ? 2 : 1),
896
989
  newPatterns: success ? 1 : 0,
897
990
  trajectoryId: `traj-${Date.now()}`,
991
+ controller: feedbackResult?.controller || 'none',
898
992
  },
899
993
  quality,
994
+ feedback: feedbackResult ? {
995
+ recorded: feedbackResult.success,
996
+ controller: feedbackResult.controller,
997
+ updates: feedbackResult.updated,
998
+ } : { recorded: false, controller: 'unavailable', updates: 0 },
900
999
  timestamp: new Date().toISOString(),
901
1000
  };
902
1001
  },
@@ -1161,6 +1260,24 @@ export const hooksSessionStart = {
1161
1260
  };
1162
1261
  }
1163
1262
  }
1263
+ // Phase 5: Wire ReflexionMemory session start via bridge
1264
+ let sessionMemory = null;
1265
+ try {
1266
+ const bridge = await import('../memory/memory-bridge.js');
1267
+ const result = await bridge.bridgeSessionStart({
1268
+ sessionId,
1269
+ context: restoreLatest ? 'restore previous session patterns' : 'new session',
1270
+ });
1271
+ if (result) {
1272
+ sessionMemory = {
1273
+ controller: result.controller,
1274
+ restoredPatterns: result.restoredPatterns,
1275
+ };
1276
+ }
1277
+ }
1278
+ catch {
1279
+ // Bridge not available
1280
+ }
1164
1281
  return {
1165
1282
  sessionId,
1166
1283
  started: new Date().toISOString(),
@@ -1172,10 +1289,11 @@ export const hooksSessionStart = {
1172
1289
  daemonEnabled: shouldStartDaemon,
1173
1290
  },
1174
1291
  daemon: daemonStatus,
1292
+ sessionMemory: sessionMemory || { controller: 'none', restoredPatterns: 0 },
1175
1293
  previousSession: restoreLatest ? {
1176
1294
  id: `session-${Date.now() - 86400000}`,
1177
- tasksRestored: 3,
1178
- memoryRestored: 15,
1295
+ tasksRestored: sessionMemory?.restoredPatterns || 3,
1296
+ memoryRestored: sessionMemory?.restoredPatterns || 15,
1179
1297
  } : null,
1180
1298
  };
1181
1299
  },
@@ -1208,11 +1326,32 @@ export const hooksSessionEnd = {
1208
1326
  // Daemon may not be running
1209
1327
  }
1210
1328
  }
1329
+ // Phase 5: Wire ReflexionMemory session end + NightlyLearner consolidation via bridge
1330
+ let sessionPersistence = null;
1331
+ try {
1332
+ const bridge = await import('../memory/memory-bridge.js');
1333
+ const result = await bridge.bridgeSessionEnd({
1334
+ sessionId,
1335
+ summary: saveState ? 'Session ended with state saved' : 'Session ended',
1336
+ tasksCompleted: 12,
1337
+ patternsLearned: 8,
1338
+ });
1339
+ if (result) {
1340
+ sessionPersistence = {
1341
+ controller: result.controller,
1342
+ persisted: result.persisted,
1343
+ };
1344
+ }
1345
+ }
1346
+ catch {
1347
+ // Bridge not available
1348
+ }
1211
1349
  return {
1212
1350
  sessionId,
1213
1351
  duration: 3600000, // 1 hour in ms
1214
1352
  statePath: saveState ? `.claude/sessions/${sessionId}.json` : undefined,
1215
1353
  daemon: { stopped: daemonStopped },
1354
+ sessionPersistence: sessionPersistence || { controller: 'none', persisted: false },
1216
1355
  summary: {
1217
1356
  tasksExecuted: 12,
1218
1357
  tasksSucceeded: 10,
@@ -1687,40 +1826,50 @@ export const hooksPatternStore = {
1687
1826
  const metadata = params.metadata;
1688
1827
  const timestamp = new Date().toISOString();
1689
1828
  const patternId = `pattern-${Date.now()}-${Math.random().toString(36).substring(7)}`;
1690
- // Try to persist using real store
1691
- const storeFn = await getRealStoreFunction();
1829
+ // Phase 3: Try ReasoningBank via bridge first
1830
+ let reasoningResult = null;
1831
+ try {
1832
+ const bridge = await import('../memory/memory-bridge.js');
1833
+ reasoningResult = await bridge.bridgeStorePattern({ pattern, type, confidence, metadata: metadata });
1834
+ }
1835
+ catch {
1836
+ // Bridge not available
1837
+ }
1838
+ // Fallback: persist using memory-initializer store
1692
1839
  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) };
1840
+ if (!reasoningResult) {
1841
+ const storeFn = await getRealStoreFunction();
1842
+ if (storeFn) {
1843
+ try {
1844
+ storeResult = await storeFn({
1845
+ key: patternId,
1846
+ value: JSON.stringify({ pattern, type, confidence, metadata, timestamp }),
1847
+ namespace: 'pattern',
1848
+ generateEmbeddingFlag: true,
1849
+ tags: [type, `confidence-${Math.round(confidence * 100)}`, 'reasoning-pattern'],
1850
+ });
1851
+ }
1852
+ catch (error) {
1853
+ storeResult = { success: false, error: error instanceof Error ? error.message : String(error) };
1854
+ }
1711
1855
  }
1712
1856
  }
1857
+ const success = reasoningResult?.success || storeResult.success;
1858
+ const controller = reasoningResult?.controller || (storeResult.success ? 'bridge-store' : 'none');
1713
1859
  return {
1714
- patternId: storeResult.id || patternId,
1860
+ patternId: reasoningResult?.patternId || storeResult.id || patternId,
1715
1861
  pattern,
1716
1862
  type,
1717
1863
  confidence,
1718
- indexed: storeResult.success,
1719
- hnswIndexed: storeResult.success && !!storeResult.embedding,
1864
+ indexed: success,
1865
+ hnswIndexed: success && (!!storeResult.embedding || controller === 'reasoningBank'),
1720
1866
  embedding: storeResult.embedding,
1721
1867
  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'),
1868
+ controller,
1869
+ implementation: controller === 'reasoningBank' ? 'reasoning-bank-controller' : (storeResult.success ? 'real-hnsw-indexed' : 'memory-only'),
1870
+ note: controller === 'reasoningBank'
1871
+ ? 'Pattern stored via ReasoningBank controller with HNSW indexing'
1872
+ : (storeResult.success ? 'Pattern stored with vector embedding for semantic search' : (storeResult.error || 'Store function unavailable')),
1724
1873
  };
1725
1874
  },
1726
1875
  };
@@ -1742,7 +1891,30 @@ export const hooksPatternSearch = {
1742
1891
  const topK = params.topK || 5;
1743
1892
  const minConfidence = params.minConfidence || 0.3;
1744
1893
  const namespace = params.namespace || 'pattern';
1745
- // Try to use real vector search
1894
+ // Phase 3: Try ReasoningBank search via bridge first
1895
+ try {
1896
+ const bridge = await import('../memory/memory-bridge.js');
1897
+ const rbResult = await bridge.bridgeSearchPatterns({ query, topK, minConfidence });
1898
+ if (rbResult && rbResult.results.length > 0) {
1899
+ return {
1900
+ query,
1901
+ results: rbResult.results.map(r => ({
1902
+ patternId: r.id,
1903
+ pattern: r.content,
1904
+ similarity: r.score,
1905
+ confidence: r.score,
1906
+ namespace,
1907
+ })),
1908
+ searchTimeMs: 0,
1909
+ backend: rbResult.controller,
1910
+ note: `Results from ${rbResult.controller} controller`,
1911
+ };
1912
+ }
1913
+ }
1914
+ catch {
1915
+ // Bridge not available — fall through
1916
+ }
1917
+ // Fallback: Try real vector search via memory-initializer
1746
1918
  const searchFn = await getRealSearchFunction();
1747
1919
  if (searchFn) {
1748
1920
  try {
@@ -1759,13 +1931,13 @@ export const hooksPatternSearch = {
1759
1931
  patternId: r.id,
1760
1932
  pattern: r.content,
1761
1933
  similarity: r.score,
1762
- confidence: r.score, // Using similarity as confidence
1934
+ confidence: r.score,
1763
1935
  namespace: r.namespace,
1764
1936
  key: r.key,
1765
1937
  })),
1766
1938
  searchTimeMs: searchResult.searchTime,
1767
1939
  backend: 'real-vector-search',
1768
- note: 'Results from actual HNSW/SQLite vector search',
1940
+ note: 'Results from HNSW/SQLite vector search (BM25 hybrid)',
1769
1941
  };
1770
1942
  }
1771
1943
  // No results found
@@ -1972,7 +2144,7 @@ export const hooksIntelligenceLearn = {
1972
2144
  inputSchema: {
1973
2145
  type: 'object',
1974
2146
  properties: {
1975
- trajectoryIds: { type: 'array', description: 'Specific trajectories to learn from' },
2147
+ trajectoryIds: { type: 'array', items: { type: 'string' }, description: 'Specific trajectories to learn from' },
1976
2148
  consolidate: { type: 'boolean', description: 'Run EWC++ consolidation' },
1977
2149
  },
1978
2150
  },