fivocell 1.0.0 → 1.0.2

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 (568) hide show
  1. package/LICENSE +202 -98
  2. package/README.md +418 -180
  3. package/dist/cli.js +698 -80
  4. package/dist/cli.js.map +1 -1
  5. package/dist/core/__tests__/ab-test-framework.test.d.ts +2 -0
  6. package/dist/core/__tests__/ab-test-framework.test.d.ts.map +1 -0
  7. package/dist/core/__tests__/ab-test-framework.test.js +43 -0
  8. package/dist/core/__tests__/ab-test-framework.test.js.map +1 -0
  9. package/dist/core/__tests__/ai-memory.test.d.ts +2 -0
  10. package/dist/core/__tests__/ai-memory.test.d.ts.map +1 -0
  11. package/dist/core/__tests__/ai-memory.test.js +143 -0
  12. package/dist/core/__tests__/ai-memory.test.js.map +1 -0
  13. package/dist/core/__tests__/ast-extractor.test.d.ts +2 -0
  14. package/dist/core/__tests__/ast-extractor.test.d.ts.map +1 -0
  15. package/dist/core/__tests__/ast-extractor.test.js +30 -0
  16. package/dist/core/__tests__/ast-extractor.test.js.map +1 -0
  17. package/dist/core/__tests__/build-failure-predictor.test.d.ts +2 -0
  18. package/dist/core/__tests__/build-failure-predictor.test.d.ts.map +1 -0
  19. package/dist/core/__tests__/build-failure-predictor.test.js +76 -0
  20. package/dist/core/__tests__/build-failure-predictor.test.js.map +1 -0
  21. package/dist/core/__tests__/chapter3-verify.test.d.ts +2 -0
  22. package/dist/core/__tests__/chapter3-verify.test.d.ts.map +1 -0
  23. package/dist/core/__tests__/chapter3-verify.test.js +315 -0
  24. package/dist/core/__tests__/chapter3-verify.test.js.map +1 -0
  25. package/dist/core/__tests__/chapter4-hostile.test.d.ts +11 -0
  26. package/dist/core/__tests__/chapter4-hostile.test.d.ts.map +1 -0
  27. package/dist/core/__tests__/chapter4-hostile.test.js +269 -0
  28. package/dist/core/__tests__/chapter4-hostile.test.js.map +1 -0
  29. package/dist/core/__tests__/chapter4-verify.test.d.ts +2 -0
  30. package/dist/core/__tests__/chapter4-verify.test.d.ts.map +1 -0
  31. package/dist/core/__tests__/chapter4-verify.test.js +349 -0
  32. package/dist/core/__tests__/chapter4-verify.test.js.map +1 -0
  33. package/dist/core/__tests__/chapter8-hostile.test.d.ts +2 -0
  34. package/dist/core/__tests__/chapter8-hostile.test.d.ts.map +1 -0
  35. package/dist/core/__tests__/chapter8-hostile.test.js +445 -0
  36. package/dist/core/__tests__/chapter8-hostile.test.js.map +1 -0
  37. package/dist/core/__tests__/chapter9-hostile.test.d.ts +2 -0
  38. package/dist/core/__tests__/chapter9-hostile.test.d.ts.map +1 -0
  39. package/dist/core/__tests__/chapter9-hostile.test.js +783 -0
  40. package/dist/core/__tests__/chapter9-hostile.test.js.map +1 -0
  41. package/dist/core/__tests__/circular-dependency-detector.test.d.ts +2 -0
  42. package/dist/core/__tests__/circular-dependency-detector.test.d.ts.map +1 -0
  43. package/dist/core/__tests__/circular-dependency-detector.test.js +55 -0
  44. package/dist/core/__tests__/circular-dependency-detector.test.js.map +1 -0
  45. package/dist/core/__tests__/community-full.test.d.ts +2 -0
  46. package/dist/core/__tests__/community-full.test.d.ts.map +1 -0
  47. package/dist/core/__tests__/community-full.test.js +70 -0
  48. package/dist/core/__tests__/community-full.test.js.map +1 -0
  49. package/dist/core/__tests__/community-live.test.d.ts +2 -0
  50. package/dist/core/__tests__/community-live.test.d.ts.map +1 -0
  51. package/dist/core/__tests__/community-live.test.js +67 -0
  52. package/dist/core/__tests__/community-live.test.js.map +1 -0
  53. package/dist/core/__tests__/complexity-analyzer.test.d.ts +2 -0
  54. package/dist/core/__tests__/complexity-analyzer.test.d.ts.map +1 -0
  55. package/dist/core/__tests__/complexity-analyzer.test.js +54 -0
  56. package/dist/core/__tests__/complexity-analyzer.test.js.map +1 -0
  57. package/dist/core/__tests__/config-attribution.test.d.ts +2 -0
  58. package/dist/core/__tests__/config-attribution.test.d.ts.map +1 -0
  59. package/dist/core/__tests__/config-attribution.test.js +45 -0
  60. package/dist/core/__tests__/config-attribution.test.js.map +1 -0
  61. package/dist/core/__tests__/conflict-detector.test.d.ts +2 -0
  62. package/dist/core/__tests__/conflict-detector.test.d.ts.map +1 -0
  63. package/dist/core/__tests__/conflict-detector.test.js +120 -0
  64. package/dist/core/__tests__/conflict-detector.test.js.map +1 -0
  65. package/dist/core/__tests__/context-restore.test.d.ts +2 -0
  66. package/dist/core/__tests__/context-restore.test.d.ts.map +1 -0
  67. package/dist/core/__tests__/context-restore.test.js +75 -0
  68. package/dist/core/__tests__/context-restore.test.js.map +1 -0
  69. package/dist/core/__tests__/convention-detector.test.d.ts +2 -0
  70. package/dist/core/__tests__/convention-detector.test.d.ts.map +1 -0
  71. package/dist/core/__tests__/convention-detector.test.js +97 -0
  72. package/dist/core/__tests__/convention-detector.test.js.map +1 -0
  73. package/dist/core/__tests__/cost-optimizer.test.d.ts +1 -0
  74. package/dist/core/__tests__/cost-optimizer.test.d.ts.map +1 -0
  75. package/dist/core/__tests__/cost-optimizer.test.js +92 -0
  76. package/dist/core/__tests__/cost-optimizer.test.js.map +1 -0
  77. package/dist/core/__tests__/cross-domain-projections.test.d.ts +2 -0
  78. package/dist/core/__tests__/cross-domain-projections.test.d.ts.map +1 -0
  79. package/dist/core/__tests__/cross-domain-projections.test.js +36 -0
  80. package/dist/core/__tests__/cross-domain-projections.test.js.map +1 -0
  81. package/dist/core/__tests__/cross-project-sync.test.d.ts +2 -0
  82. package/dist/core/__tests__/cross-project-sync.test.d.ts.map +1 -0
  83. package/dist/core/__tests__/cross-project-sync.test.js +67 -0
  84. package/dist/core/__tests__/cross-project-sync.test.js.map +1 -0
  85. package/dist/core/__tests__/dead-code-detector.test.d.ts +2 -0
  86. package/dist/core/__tests__/dead-code-detector.test.d.ts.map +1 -0
  87. package/dist/core/__tests__/dead-code-detector.test.js +41 -0
  88. package/dist/core/__tests__/dead-code-detector.test.js.map +1 -0
  89. package/dist/core/__tests__/dependency-health-checker.test.d.ts +2 -0
  90. package/dist/core/__tests__/dependency-health-checker.test.d.ts.map +1 -0
  91. package/dist/core/__tests__/dependency-health-checker.test.js +50 -0
  92. package/dist/core/__tests__/dependency-health-checker.test.js.map +1 -0
  93. package/dist/core/__tests__/duplication-detector.test.d.ts +2 -0
  94. package/dist/core/__tests__/duplication-detector.test.d.ts.map +1 -0
  95. package/dist/core/__tests__/duplication-detector.test.js +46 -0
  96. package/dist/core/__tests__/duplication-detector.test.js.map +1 -0
  97. package/dist/core/__tests__/error-predictor.test.d.ts +2 -0
  98. package/dist/core/__tests__/error-predictor.test.d.ts.map +1 -0
  99. package/dist/core/__tests__/error-predictor.test.js +65 -0
  100. package/dist/core/__tests__/error-predictor.test.js.map +1 -0
  101. package/dist/core/__tests__/explainability.test.d.ts +2 -0
  102. package/dist/core/__tests__/explainability.test.d.ts.map +1 -0
  103. package/dist/core/__tests__/explainability.test.js +112 -0
  104. package/dist/core/__tests__/explainability.test.js.map +1 -0
  105. package/dist/core/__tests__/failure-memory.test.d.ts +2 -0
  106. package/dist/core/__tests__/failure-memory.test.d.ts.map +1 -0
  107. package/dist/core/__tests__/failure-memory.test.js +124 -0
  108. package/dist/core/__tests__/failure-memory.test.js.map +1 -0
  109. package/dist/core/__tests__/git-branch-pregenerator.test.d.ts +2 -0
  110. package/dist/core/__tests__/git-branch-pregenerator.test.d.ts.map +1 -0
  111. package/dist/core/__tests__/git-branch-pregenerator.test.js +44 -0
  112. package/dist/core/__tests__/git-branch-pregenerator.test.js.map +1 -0
  113. package/dist/core/__tests__/handoff-detector.test.d.ts +2 -0
  114. package/dist/core/__tests__/handoff-detector.test.d.ts.map +1 -0
  115. package/dist/core/__tests__/handoff-detector.test.js +71 -0
  116. package/dist/core/__tests__/handoff-detector.test.js.map +1 -0
  117. package/dist/core/__tests__/interruption-recovery.test.d.ts +2 -0
  118. package/dist/core/__tests__/interruption-recovery.test.d.ts.map +1 -0
  119. package/dist/core/__tests__/interruption-recovery.test.js +66 -0
  120. package/dist/core/__tests__/interruption-recovery.test.js.map +1 -0
  121. package/dist/core/__tests__/knowledge-graph.test.d.ts +1 -0
  122. package/dist/core/__tests__/knowledge-graph.test.d.ts.map +1 -0
  123. package/dist/core/__tests__/knowledge-graph.test.js +124 -0
  124. package/dist/core/__tests__/knowledge-graph.test.js.map +1 -0
  125. package/dist/core/__tests__/knowledge-silo-detector.test.d.ts +2 -0
  126. package/dist/core/__tests__/knowledge-silo-detector.test.d.ts.map +1 -0
  127. package/dist/core/__tests__/knowledge-silo-detector.test.js +77 -0
  128. package/dist/core/__tests__/knowledge-silo-detector.test.js.map +1 -0
  129. package/dist/core/__tests__/language-switch-assistant.test.d.ts +2 -0
  130. package/dist/core/__tests__/language-switch-assistant.test.d.ts.map +1 -0
  131. package/dist/core/__tests__/language-switch-assistant.test.js +34 -0
  132. package/dist/core/__tests__/language-switch-assistant.test.js.map +1 -0
  133. package/dist/core/__tests__/marketplace.test.d.ts +2 -0
  134. package/dist/core/__tests__/marketplace.test.d.ts.map +1 -0
  135. package/dist/core/__tests__/marketplace.test.js +96 -0
  136. package/dist/core/__tests__/marketplace.test.js.map +1 -0
  137. package/dist/core/__tests__/merge-conflict-predictor.test.d.ts +2 -0
  138. package/dist/core/__tests__/merge-conflict-predictor.test.d.ts.map +1 -0
  139. package/dist/core/__tests__/merge-conflict-predictor.test.js +36 -0
  140. package/dist/core/__tests__/merge-conflict-predictor.test.js.map +1 -0
  141. package/dist/core/__tests__/next-action-predictor.test.d.ts +2 -0
  142. package/dist/core/__tests__/next-action-predictor.test.d.ts.map +1 -0
  143. package/dist/core/__tests__/next-action-predictor.test.js +57 -0
  144. package/dist/core/__tests__/next-action-predictor.test.js.map +1 -0
  145. package/dist/core/__tests__/offline-queue.test.d.ts +2 -0
  146. package/dist/core/__tests__/offline-queue.test.d.ts.map +1 -0
  147. package/dist/core/__tests__/offline-queue.test.js +84 -0
  148. package/dist/core/__tests__/offline-queue.test.js.map +1 -0
  149. package/dist/core/__tests__/organization-memory.test.d.ts +2 -0
  150. package/dist/core/__tests__/organization-memory.test.d.ts.map +1 -0
  151. package/dist/core/__tests__/organization-memory.test.js +89 -0
  152. package/dist/core/__tests__/organization-memory.test.js.map +1 -0
  153. package/dist/core/__tests__/pattern-utils.test.d.ts +2 -0
  154. package/dist/core/__tests__/pattern-utils.test.d.ts.map +1 -0
  155. package/dist/core/__tests__/pattern-utils.test.js +52 -0
  156. package/dist/core/__tests__/pattern-utils.test.js.map +1 -0
  157. package/dist/core/__tests__/performance-predictor.test.d.ts +2 -0
  158. package/dist/core/__tests__/performance-predictor.test.d.ts.map +1 -0
  159. package/dist/core/__tests__/performance-predictor.test.js +60 -0
  160. package/dist/core/__tests__/performance-predictor.test.js.map +1 -0
  161. package/dist/core/__tests__/playbook-generator.test.d.ts +2 -0
  162. package/dist/core/__tests__/playbook-generator.test.d.ts.map +1 -0
  163. package/dist/core/__tests__/playbook-generator.test.js +94 -0
  164. package/dist/core/__tests__/playbook-generator.test.js.map +1 -0
  165. package/dist/core/__tests__/pr-review-assistant.test.d.ts +2 -0
  166. package/dist/core/__tests__/pr-review-assistant.test.d.ts.map +1 -0
  167. package/dist/core/__tests__/pr-review-assistant.test.js +35 -0
  168. package/dist/core/__tests__/pr-review-assistant.test.js.map +1 -0
  169. package/dist/core/__tests__/privacy-manager.test.d.ts +2 -0
  170. package/dist/core/__tests__/privacy-manager.test.d.ts.map +1 -0
  171. package/dist/core/__tests__/privacy-manager.test.js +97 -0
  172. package/dist/core/__tests__/privacy-manager.test.js.map +1 -0
  173. package/dist/core/__tests__/project-dna.test.d.ts +2 -0
  174. package/dist/core/__tests__/project-dna.test.d.ts.map +1 -0
  175. package/dist/core/__tests__/project-dna.test.js +135 -0
  176. package/dist/core/__tests__/project-dna.test.js.map +1 -0
  177. package/dist/core/__tests__/regex-extractor.test.d.ts +2 -0
  178. package/dist/core/__tests__/regex-extractor.test.d.ts.map +1 -0
  179. package/dist/core/__tests__/regex-extractor.test.js +49 -0
  180. package/dist/core/__tests__/regex-extractor.test.js.map +1 -0
  181. package/dist/core/__tests__/reputation.test.d.ts +2 -0
  182. package/dist/core/__tests__/reputation.test.d.ts.map +1 -0
  183. package/dist/core/__tests__/reputation.test.js +100 -0
  184. package/dist/core/__tests__/reputation.test.js.map +1 -0
  185. package/dist/core/__tests__/security-predictor.test.d.ts +2 -0
  186. package/dist/core/__tests__/security-predictor.test.d.ts.map +1 -0
  187. package/dist/core/__tests__/security-predictor.test.js +60 -0
  188. package/dist/core/__tests__/security-predictor.test.js.map +1 -0
  189. package/dist/core/__tests__/signal-capture.test.d.ts +2 -0
  190. package/dist/core/__tests__/signal-capture.test.d.ts.map +1 -0
  191. package/dist/core/__tests__/signal-capture.test.js +98 -0
  192. package/dist/core/__tests__/signal-capture.test.js.map +1 -0
  193. package/dist/core/__tests__/solution-index.test.d.ts +2 -0
  194. package/dist/core/__tests__/solution-index.test.d.ts.map +1 -0
  195. package/dist/core/__tests__/solution-index.test.js +78 -0
  196. package/dist/core/__tests__/solution-index.test.js.map +1 -0
  197. package/dist/core/__tests__/standup-generator.test.d.ts +2 -0
  198. package/dist/core/__tests__/standup-generator.test.d.ts.map +1 -0
  199. package/dist/core/__tests__/standup-generator.test.js +46 -0
  200. package/dist/core/__tests__/standup-generator.test.js.map +1 -0
  201. package/dist/core/__tests__/team-composer.test.d.ts +2 -0
  202. package/dist/core/__tests__/team-composer.test.d.ts.map +1 -0
  203. package/dist/core/__tests__/team-composer.test.js +113 -0
  204. package/dist/core/__tests__/team-composer.test.js.map +1 -0
  205. package/dist/core/__tests__/test-anticipator.test.d.ts +2 -0
  206. package/dist/core/__tests__/test-anticipator.test.d.ts.map +1 -0
  207. package/dist/core/__tests__/test-anticipator.test.js +41 -0
  208. package/dist/core/__tests__/test-anticipator.test.js.map +1 -0
  209. package/dist/core/__tests__/time-saved.test.d.ts +1 -0
  210. package/dist/core/__tests__/time-saved.test.d.ts.map +1 -0
  211. package/dist/core/__tests__/time-saved.test.js +93 -0
  212. package/dist/core/__tests__/time-saved.test.js.map +1 -0
  213. package/dist/core/__tests__/validation-run.test.d.ts +7 -0
  214. package/dist/core/__tests__/validation-run.test.d.ts.map +1 -0
  215. package/dist/core/__tests__/validation-run.test.js +510 -0
  216. package/dist/core/__tests__/validation-run.test.js.map +1 -0
  217. package/dist/core/__tests__/workflow-outcome-graph.test.d.ts +2 -0
  218. package/dist/core/__tests__/workflow-outcome-graph.test.d.ts.map +1 -0
  219. package/dist/core/__tests__/workflow-outcome-graph.test.js +89 -0
  220. package/dist/core/__tests__/workflow-outcome-graph.test.js.map +1 -0
  221. package/dist/core/ai-memory.d.ts +84 -0
  222. package/dist/core/ai-memory.d.ts.map +1 -0
  223. package/dist/core/ai-memory.js +238 -0
  224. package/dist/core/ai-memory.js.map +1 -0
  225. package/dist/core/architecture-engine.d.ts +104 -0
  226. package/dist/core/architecture-engine.d.ts.map +1 -0
  227. package/dist/core/architecture-engine.js +216 -0
  228. package/dist/core/architecture-engine.js.map +1 -0
  229. package/dist/core/ast-differ.d.ts +15 -0
  230. package/dist/core/ast-differ.d.ts.map +1 -0
  231. package/dist/core/ast-differ.js +528 -0
  232. package/dist/core/ast-differ.js.map +1 -0
  233. package/dist/core/ast-extractor.d.ts +1 -1
  234. package/dist/core/ast-extractor.d.ts.map +1 -1
  235. package/dist/core/ast-extractor.js +7 -5
  236. package/dist/core/ast-extractor.js.map +1 -1
  237. package/dist/core/backend-engine.d.ts +40 -0
  238. package/dist/core/backend-engine.d.ts.map +1 -0
  239. package/dist/core/backend-engine.js +131 -0
  240. package/dist/core/backend-engine.js.map +1 -0
  241. package/dist/core/blind-spot-engine.d.ts +29 -0
  242. package/dist/core/blind-spot-engine.d.ts.map +1 -0
  243. package/dist/core/blind-spot-engine.js +579 -0
  244. package/dist/core/blind-spot-engine.js.map +1 -0
  245. package/dist/core/build-failure-predictor.d.ts +4 -0
  246. package/dist/core/build-failure-predictor.d.ts.map +1 -1
  247. package/dist/core/build-failure-predictor.js +111 -58
  248. package/dist/core/build-failure-predictor.js.map +1 -1
  249. package/dist/core/cell-store.d.ts +72 -0
  250. package/dist/core/cell-store.d.ts.map +1 -0
  251. package/dist/core/cell-store.js +171 -0
  252. package/dist/core/cell-store.js.map +1 -0
  253. package/dist/core/community-advanced-engine.d.ts +30 -0
  254. package/dist/core/community-advanced-engine.d.ts.map +1 -0
  255. package/dist/core/community-advanced-engine.js +103 -0
  256. package/dist/core/community-advanced-engine.js.map +1 -0
  257. package/dist/core/community-engine.d.ts +62 -0
  258. package/dist/core/community-engine.d.ts.map +1 -0
  259. package/dist/core/community-engine.js +194 -0
  260. package/dist/core/community-engine.js.map +1 -0
  261. package/dist/core/community-full.d.ts +2 -3
  262. package/dist/core/community-full.d.ts.map +1 -1
  263. package/dist/core/community-full.js +2 -5
  264. package/dist/core/community-full.js.map +1 -1
  265. package/dist/core/community-intelligence.d.ts +169 -0
  266. package/dist/core/community-intelligence.d.ts.map +1 -0
  267. package/dist/core/community-intelligence.js +527 -0
  268. package/dist/core/community-intelligence.js.map +1 -0
  269. package/dist/core/community-live.d.ts +1 -0
  270. package/dist/core/community-live.d.ts.map +1 -1
  271. package/dist/core/community-live.js +9 -6
  272. package/dist/core/community-live.js.map +1 -1
  273. package/dist/core/community-prior.d.ts +1 -0
  274. package/dist/core/community-prior.d.ts.map +1 -1
  275. package/dist/core/community-prior.js +18 -10
  276. package/dist/core/community-prior.js.map +1 -1
  277. package/dist/core/confidence-engine.d.ts +2 -3
  278. package/dist/core/confidence-engine.d.ts.map +1 -1
  279. package/dist/core/confidence-engine.js +29 -32
  280. package/dist/core/confidence-engine.js.map +1 -1
  281. package/dist/core/conflict-detector.js +1 -1
  282. package/dist/core/conflict-detector.js.map +1 -1
  283. package/dist/core/convention-detector.d.ts +37 -0
  284. package/dist/core/convention-detector.d.ts.map +1 -0
  285. package/dist/core/convention-detector.js +189 -0
  286. package/dist/core/convention-detector.js.map +1 -0
  287. package/dist/core/cost-optimizer.d.ts +78 -0
  288. package/dist/core/cost-optimizer.d.ts.map +1 -0
  289. package/dist/core/cost-optimizer.js +257 -0
  290. package/dist/core/cost-optimizer.js.map +1 -0
  291. package/dist/core/cross-domain-projections.js +2 -2
  292. package/dist/core/cross-layer-intelligence.d.ts +375 -0
  293. package/dist/core/cross-layer-intelligence.d.ts.map +1 -0
  294. package/dist/core/cross-layer-intelligence.js +690 -0
  295. package/dist/core/cross-layer-intelligence.js.map +1 -0
  296. package/dist/core/developer-profile.d.ts +6 -0
  297. package/dist/core/developer-profile.d.ts.map +1 -0
  298. package/dist/core/developer-profile.js +78 -0
  299. package/dist/core/developer-profile.js.map +1 -0
  300. package/dist/core/error-predictor.d.ts +5 -2
  301. package/dist/core/error-predictor.d.ts.map +1 -1
  302. package/dist/core/error-predictor.js +124 -40
  303. package/dist/core/error-predictor.js.map +1 -1
  304. package/dist/core/explainability.d.ts +33 -0
  305. package/dist/core/explainability.d.ts.map +1 -0
  306. package/dist/core/explainability.js +131 -0
  307. package/dist/core/explainability.js.map +1 -0
  308. package/dist/core/extraction-cascade.d.ts +19 -5
  309. package/dist/core/extraction-cascade.d.ts.map +1 -1
  310. package/dist/core/extraction-cascade.js +86 -15
  311. package/dist/core/extraction-cascade.js.map +1 -1
  312. package/dist/core/failure-memory.d.ts +38 -0
  313. package/dist/core/failure-memory.d.ts.map +1 -0
  314. package/dist/core/failure-memory.js +113 -0
  315. package/dist/core/failure-memory.js.map +1 -0
  316. package/dist/core/frontend-engine.d.ts +40 -0
  317. package/dist/core/frontend-engine.d.ts.map +1 -0
  318. package/dist/core/frontend-engine.js +129 -0
  319. package/dist/core/frontend-engine.js.map +1 -0
  320. package/dist/core/go-extractor.d.ts +5 -0
  321. package/dist/core/go-extractor.d.ts.map +1 -0
  322. package/dist/core/go-extractor.js +68 -0
  323. package/dist/core/go-extractor.js.map +1 -0
  324. package/dist/core/identity-resolver.d.ts.map +1 -1
  325. package/dist/core/identity-resolver.js +16 -31
  326. package/dist/core/identity-resolver.js.map +1 -1
  327. package/dist/core/knowledge-graph-engine.d.ts +62 -0
  328. package/dist/core/knowledge-graph-engine.d.ts.map +1 -0
  329. package/dist/core/knowledge-graph-engine.js +176 -0
  330. package/dist/core/knowledge-graph-engine.js.map +1 -0
  331. package/dist/core/knowledge-graph.d.ts +229 -0
  332. package/dist/core/knowledge-graph.d.ts.map +1 -0
  333. package/dist/core/knowledge-graph.js +713 -0
  334. package/dist/core/knowledge-graph.js.map +1 -0
  335. package/dist/core/language-switch-assistant.d.ts.map +1 -1
  336. package/dist/core/language-switch-assistant.js +4 -1
  337. package/dist/core/language-switch-assistant.js.map +1 -1
  338. package/dist/core/learning-layer.d.ts +11 -0
  339. package/dist/core/learning-layer.d.ts.map +1 -0
  340. package/dist/core/learning-layer.js +25 -0
  341. package/dist/core/learning-layer.js.map +1 -0
  342. package/dist/core/marketplace.d.ts +43 -0
  343. package/dist/core/marketplace.d.ts.map +1 -0
  344. package/dist/core/marketplace.js +133 -0
  345. package/dist/core/marketplace.js.map +1 -0
  346. package/dist/core/memory-store.d.ts +59 -0
  347. package/dist/core/memory-store.d.ts.map +1 -0
  348. package/dist/core/memory-store.js +151 -0
  349. package/dist/core/memory-store.js.map +1 -0
  350. package/dist/core/naming-engine.d.ts +43 -0
  351. package/dist/core/naming-engine.d.ts.map +1 -0
  352. package/dist/core/naming-engine.js +120 -0
  353. package/dist/core/naming-engine.js.map +1 -0
  354. package/dist/core/org-intelligence.d.ts +151 -0
  355. package/dist/core/org-intelligence.d.ts.map +1 -0
  356. package/dist/core/org-intelligence.js +490 -0
  357. package/dist/core/org-intelligence.js.map +1 -0
  358. package/dist/core/organization-memory.d.ts +34 -0
  359. package/dist/core/organization-memory.d.ts.map +1 -0
  360. package/dist/core/organization-memory.js +148 -0
  361. package/dist/core/organization-memory.js.map +1 -0
  362. package/dist/core/outcome-engine.d.ts +21 -0
  363. package/dist/core/outcome-engine.d.ts.map +1 -0
  364. package/dist/core/outcome-engine.js +220 -0
  365. package/dist/core/outcome-engine.js.map +1 -0
  366. package/dist/core/outcome-recorder.d.ts +34 -0
  367. package/dist/core/outcome-recorder.d.ts.map +1 -0
  368. package/dist/core/outcome-recorder.js +109 -0
  369. package/dist/core/outcome-recorder.js.map +1 -0
  370. package/dist/core/outcome-store.d.ts +21 -0
  371. package/dist/core/outcome-store.d.ts.map +1 -0
  372. package/dist/core/outcome-store.js +120 -0
  373. package/dist/core/outcome-store.js.map +1 -0
  374. package/dist/core/outcome-types.d.ts +64 -0
  375. package/dist/core/outcome-types.d.ts.map +1 -0
  376. package/dist/core/outcome-types.js +20 -0
  377. package/dist/core/outcome-types.js.map +1 -0
  378. package/dist/core/pattern-classifier.d.ts +11 -0
  379. package/dist/core/pattern-classifier.d.ts.map +1 -0
  380. package/dist/core/pattern-classifier.js +82 -0
  381. package/dist/core/pattern-classifier.js.map +1 -0
  382. package/dist/core/pattern-lifecycle.d.ts +8 -0
  383. package/dist/core/pattern-lifecycle.d.ts.map +1 -0
  384. package/dist/core/pattern-lifecycle.js +25 -0
  385. package/dist/core/pattern-lifecycle.js.map +1 -0
  386. package/dist/core/pattern-quality.d.ts +6 -0
  387. package/dist/core/pattern-quality.d.ts.map +1 -0
  388. package/dist/core/pattern-quality.js +45 -0
  389. package/dist/core/pattern-quality.js.map +1 -0
  390. package/dist/core/pattern-ranking.d.ts +8 -0
  391. package/dist/core/pattern-ranking.d.ts.map +1 -0
  392. package/dist/core/pattern-ranking.js +40 -0
  393. package/dist/core/pattern-ranking.js.map +1 -0
  394. package/dist/core/pattern-relationships.d.ts +16 -0
  395. package/dist/core/pattern-relationships.d.ts.map +1 -0
  396. package/dist/core/pattern-relationships.js +66 -0
  397. package/dist/core/pattern-relationships.js.map +1 -0
  398. package/dist/core/pattern-search.d.ts +25 -0
  399. package/dist/core/pattern-search.d.ts.map +1 -0
  400. package/dist/core/pattern-search.js +82 -0
  401. package/dist/core/pattern-search.js.map +1 -0
  402. package/dist/core/pattern-store.d.ts +18 -3
  403. package/dist/core/pattern-store.d.ts.map +1 -1
  404. package/dist/core/pattern-store.js +155 -54
  405. package/dist/core/pattern-store.js.map +1 -1
  406. package/dist/core/{enterprise-features.d.ts → pattern-utils.d.ts} +2 -4
  407. package/dist/core/pattern-utils.d.ts.map +1 -0
  408. package/dist/core/{enterprise-features.js → pattern-utils.js} +4 -24
  409. package/dist/core/pattern-utils.js.map +1 -0
  410. package/dist/core/pattern-validator.d.ts +14 -0
  411. package/dist/core/pattern-validator.d.ts.map +1 -0
  412. package/dist/core/pattern-validator.js +47 -0
  413. package/dist/core/pattern-validator.js.map +1 -0
  414. package/dist/core/performance-predictor.d.ts +4 -0
  415. package/dist/core/performance-predictor.d.ts.map +1 -1
  416. package/dist/core/performance-predictor.js +143 -38
  417. package/dist/core/performance-predictor.js.map +1 -1
  418. package/dist/core/platt-calibration.d.ts.map +1 -1
  419. package/dist/core/platt-calibration.js +5 -3
  420. package/dist/core/platt-calibration.js.map +1 -1
  421. package/dist/core/playbook-generator.d.ts +21 -0
  422. package/dist/core/playbook-generator.d.ts.map +1 -0
  423. package/dist/core/playbook-generator.js +161 -0
  424. package/dist/core/playbook-generator.js.map +1 -0
  425. package/dist/core/privacy-manager.d.ts +43 -0
  426. package/dist/core/privacy-manager.d.ts.map +1 -0
  427. package/dist/core/privacy-manager.js +131 -0
  428. package/dist/core/privacy-manager.js.map +1 -0
  429. package/dist/core/productivity-engine.d.ts +57 -0
  430. package/dist/core/productivity-engine.d.ts.map +1 -0
  431. package/dist/core/productivity-engine.js +138 -0
  432. package/dist/core/productivity-engine.js.map +1 -0
  433. package/dist/core/project-dna-types.d.ts +150 -0
  434. package/dist/core/project-dna-types.d.ts.map +1 -0
  435. package/dist/core/project-dna-types.js +3 -0
  436. package/dist/core/project-dna-types.js.map +1 -0
  437. package/dist/core/project-dna.d.ts +122 -0
  438. package/dist/core/project-dna.d.ts.map +1 -0
  439. package/dist/core/project-dna.js +922 -0
  440. package/dist/core/project-dna.js.map +1 -0
  441. package/dist/core/python-extractor.d.ts +5 -0
  442. package/dist/core/python-extractor.d.ts.map +1 -0
  443. package/dist/core/python-extractor.js +68 -0
  444. package/dist/core/python-extractor.js.map +1 -0
  445. package/dist/core/realtime-guardian.d.ts.map +1 -1
  446. package/dist/core/realtime-guardian.js +1 -3
  447. package/dist/core/realtime-guardian.js.map +1 -1
  448. package/dist/core/recommendation-engine.d.ts +9 -0
  449. package/dist/core/recommendation-engine.d.ts.map +1 -0
  450. package/dist/core/recommendation-engine.js +152 -0
  451. package/dist/core/recommendation-engine.js.map +1 -0
  452. package/dist/core/recommendation-store.d.ts +21 -0
  453. package/dist/core/recommendation-store.d.ts.map +1 -0
  454. package/dist/core/recommendation-store.js +125 -0
  455. package/dist/core/recommendation-store.js.map +1 -0
  456. package/dist/core/recommendation-types.d.ts +54 -0
  457. package/dist/core/recommendation-types.d.ts.map +1 -0
  458. package/dist/core/recommendation-types.js +3 -0
  459. package/dist/core/recommendation-types.js.map +1 -0
  460. package/dist/core/regex-extractor.js +1 -1
  461. package/dist/core/regex-extractor.js.map +1 -1
  462. package/dist/core/reputation.d.ts +42 -0
  463. package/dist/core/reputation.d.ts.map +1 -0
  464. package/dist/core/reputation.js +173 -0
  465. package/dist/core/reputation.js.map +1 -0
  466. package/dist/core/scale-tester.d.ts +2 -2
  467. package/dist/core/scale-tester.d.ts.map +1 -1
  468. package/dist/core/scale-tester.js +12 -1
  469. package/dist/core/scale-tester.js.map +1 -1
  470. package/dist/core/search-engine.d.ts +37 -0
  471. package/dist/core/search-engine.d.ts.map +1 -0
  472. package/dist/core/search-engine.js +223 -0
  473. package/dist/core/search-engine.js.map +1 -0
  474. package/dist/core/security-predictor.d.ts +2 -1
  475. package/dist/core/security-predictor.d.ts.map +1 -1
  476. package/dist/core/security-predictor.js +80 -30
  477. package/dist/core/security-predictor.js.map +1 -1
  478. package/dist/core/session-recovery.js +8 -8
  479. package/dist/core/session-recovery.js.map +1 -1
  480. package/dist/core/similarity-engine.d.ts +8 -0
  481. package/dist/core/similarity-engine.d.ts.map +1 -0
  482. package/dist/core/similarity-engine.js +74 -0
  483. package/dist/core/similarity-engine.js.map +1 -0
  484. package/dist/core/structure-engine.d.ts +34 -0
  485. package/dist/core/structure-engine.d.ts.map +1 -0
  486. package/dist/core/structure-engine.js +114 -0
  487. package/dist/core/structure-engine.js.map +1 -0
  488. package/dist/core/syntax-engine.d.ts +101 -0
  489. package/dist/core/syntax-engine.d.ts.map +1 -0
  490. package/dist/core/syntax-engine.js +342 -0
  491. package/dist/core/syntax-engine.js.map +1 -0
  492. package/dist/core/team-advanced-engine.d.ts +19 -0
  493. package/dist/core/team-advanced-engine.d.ts.map +1 -0
  494. package/dist/core/team-advanced-engine.js +91 -0
  495. package/dist/core/team-advanced-engine.js.map +1 -0
  496. package/dist/core/team-engine.d.ts +59 -0
  497. package/dist/core/team-engine.d.ts.map +1 -0
  498. package/dist/core/team-engine.js +141 -0
  499. package/dist/core/team-engine.js.map +1 -0
  500. package/dist/core/time-saved.d.ts +51 -0
  501. package/dist/core/time-saved.d.ts.map +1 -0
  502. package/dist/core/time-saved.js +97 -0
  503. package/dist/core/time-saved.js.map +1 -0
  504. package/dist/core/workflow-outcome-graph.d.ts +46 -0
  505. package/dist/core/workflow-outcome-graph.d.ts.map +1 -0
  506. package/dist/core/workflow-outcome-graph.js +168 -0
  507. package/dist/core/workflow-outcome-graph.js.map +1 -0
  508. package/dist/core/workflow-tracker.d.ts +36 -0
  509. package/dist/core/workflow-tracker.d.ts.map +1 -0
  510. package/dist/core/workflow-tracker.js +99 -0
  511. package/dist/core/workflow-tracker.js.map +1 -0
  512. package/dist/core/ws-client.d.ts +24 -0
  513. package/dist/core/ws-client.d.ts.map +1 -0
  514. package/dist/core/ws-client.js +203 -0
  515. package/dist/core/ws-client.js.map +1 -0
  516. package/dist/daemon/lifecycle.d.ts.map +1 -1
  517. package/dist/daemon/lifecycle.js +9 -10
  518. package/dist/daemon/lifecycle.js.map +1 -1
  519. package/dist/daemon/server.d.ts +4 -2
  520. package/dist/daemon/server.d.ts.map +1 -1
  521. package/dist/daemon/server.js +886 -73
  522. package/dist/daemon/server.js.map +1 -1
  523. package/dist/daemon/watchdog.js +2 -1
  524. package/dist/daemon/watchdog.js.map +1 -1
  525. package/dist/index.d.ts +21 -2
  526. package/dist/index.d.ts.map +1 -1
  527. package/dist/index.js +37 -4
  528. package/dist/index.js.map +1 -1
  529. package/dist/store.d.ts +4 -0
  530. package/dist/store.d.ts.map +1 -0
  531. package/dist/store.js +47 -0
  532. package/dist/store.js.map +1 -0
  533. package/dist/types.d.ts +60 -1
  534. package/dist/types.d.ts.map +1 -1
  535. package/dist/types.js +13 -2
  536. package/dist/types.js.map +1 -1
  537. package/dist/validation/quick-run.d.ts +7 -0
  538. package/dist/validation/quick-run.d.ts.map +1 -0
  539. package/dist/validation/quick-run.js +404 -0
  540. package/dist/validation/quick-run.js.map +1 -0
  541. package/package.json +87 -53
  542. package/CHANGELOG.md +0 -32
  543. package/CONTRIBUTING.md +0 -60
  544. package/dist/core/cell-pro.d.ts +0 -28
  545. package/dist/core/cell-pro.d.ts.map +0 -1
  546. package/dist/core/cell-pro.js +0 -70
  547. package/dist/core/cell-pro.js.map +0 -1
  548. package/dist/core/enterprise-features.d.ts.map +0 -1
  549. package/dist/core/enterprise-features.js.map +0 -1
  550. package/dist/core/enterprise.d.ts +0 -27
  551. package/dist/core/enterprise.d.ts.map +0 -1
  552. package/dist/core/enterprise.js +0 -41
  553. package/dist/core/enterprise.js.map +0 -1
  554. package/extensions/jetbrains/plugin.json +0 -9
  555. package/extensions/shell/copilot-sync.js +0 -59
  556. package/extensions/shell/install.sh +0 -38
  557. package/extensions/shell/watcher.js +0 -113
  558. package/extensions/vscode/.vscodeignore +0 -5
  559. package/extensions/vscode/dist/daemon-client.js +0 -94
  560. package/extensions/vscode/dist/diff-tracker.js +0 -94
  561. package/extensions/vscode/dist/extension.js +0 -100
  562. package/extensions/vscode/dist/status-bar.js +0 -70
  563. package/extensions/vscode/package-lock.json +0 -40
  564. package/extensions/vscode/package.json +0 -27
  565. package/packages/mcp-server/dist/server.d.ts +0 -2
  566. package/packages/mcp-server/dist/server.js +0 -213
  567. package/packages/mcp-server/package-lock.json +0 -970
  568. package/packages/mcp-server/package.json +0 -19
@@ -0,0 +1,713 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.buildKnowledgeGraph = buildKnowledgeGraph;
40
+ exports.getKnowledgeGraph = getKnowledgeGraph;
41
+ exports.getNodeNeighbors = getNodeNeighbors;
42
+ exports.findRelatedPatterns = findRelatedPatterns;
43
+ exports.getGraphStats = getGraphStats;
44
+ exports.extractEntities = extractEntities;
45
+ exports.inferRelationships = inferRelationships;
46
+ exports.findPaths = findPaths;
47
+ exports.addNodes = addNodes;
48
+ exports.addNode = addNode;
49
+ exports.removeNode = removeNode;
50
+ exports.addRelationships = addRelationships;
51
+ exports.addRelationship = addRelationship;
52
+ exports.getNodeEdges = getNodeEdges;
53
+ exports.getNodesByType = getNodesByType;
54
+ exports.computeInfluence = computeInfluence;
55
+ exports.detectDependencies = detectDependencies;
56
+ exports.detectConflicts = detectConflicts;
57
+ exports.detectSequences = detectSequences;
58
+ exports.computeOutcomeCorrelations = computeOutcomeCorrelations;
59
+ exports.linkProjectDNA = linkProjectDNA;
60
+ exports.buildCommunityGraph = buildCommunityGraph;
61
+ exports.getCommunityInsights = getCommunityInsights;
62
+ exports.discoverPaths = discoverPaths;
63
+ exports.getGraphVersion = getGraphVersion;
64
+ exports.resetGraph = resetGraph;
65
+ exports.exportGraphJSON = exportGraphJSON;
66
+ exports.importGraphJSON = importGraphJSON;
67
+ exports.ensureCloudGraphTable = ensureCloudGraphTable;
68
+ exports.recordCloudEntity = recordCloudEntity;
69
+ exports.getCloudEntities = getCloudEntities;
70
+ exports.recordCloudRelationship = recordCloudRelationship;
71
+ exports.getCloudRelationships = getCloudRelationships;
72
+ exports.getCloudPathTraversal = getCloudPathTraversal;
73
+ exports.getCloudNodeNeighbors = getCloudNodeNeighbors;
74
+ const fs = __importStar(require("fs"));
75
+ const path = __importStar(require("path"));
76
+ const os = __importStar(require("os"));
77
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
78
+ const store_1 = require("../store");
79
+ // ═══════════════════════════════════════════════════════════════
80
+ // STORAGE
81
+ // ═══════════════════════════════════════════════════════════════
82
+ const GRAPH_PATH = path.join(os.homedir(), '.fivo', 'cell', 'knowledge-graph.json');
83
+ const GRAPH_STORE_PATH = path.join(os.homedir(), '.fivo', 'cell', 'knowledge-graph-store.json');
84
+ const DEFAULT_GRAPH = { nodes: [], edges: [], builtAt: 0, version: 0 };
85
+ let graph = { ...DEFAULT_GRAPH };
86
+ function ensureDir() {
87
+ const dir = path.dirname(GRAPH_PATH);
88
+ if (!fs.existsSync(dir))
89
+ fs.mkdirSync(dir, { recursive: true });
90
+ }
91
+ function saveGraph() {
92
+ ensureDir();
93
+ try {
94
+ fs.writeFileSync(GRAPH_PATH, JSON.stringify(graph, null, 2), 'utf-8');
95
+ }
96
+ catch { }
97
+ }
98
+ function loadGraph() {
99
+ ensureDir();
100
+ try {
101
+ if (fs.existsSync(GRAPH_PATH)) {
102
+ graph = JSON.parse(fs.readFileSync(GRAPH_PATH, 'utf-8'));
103
+ }
104
+ }
105
+ catch {
106
+ graph = { ...DEFAULT_GRAPH };
107
+ }
108
+ }
109
+ function loadStore() {
110
+ ensureDir();
111
+ try {
112
+ if (fs.existsSync(GRAPH_STORE_PATH)) {
113
+ return JSON.parse(fs.readFileSync(GRAPH_STORE_PATH, 'utf-8'));
114
+ }
115
+ }
116
+ catch { }
117
+ return { graphs: {}, versions: [], lastGraphId: '' };
118
+ }
119
+ function saveStore(data) {
120
+ ensureDir();
121
+ fs.writeFileSync(GRAPH_STORE_PATH, JSON.stringify(data, null, 2), 'utf-8');
122
+ }
123
+ // ═══════════════════════════════════════════════════════════════
124
+ // HELPERS
125
+ // ═══════════════════════════════════════════════════════════════
126
+ function tokenize(text) {
127
+ return text.toLowerCase().replace(/[^a-z0-9_]/g, ' ').split(/\s+/).filter(Boolean);
128
+ }
129
+ function edgeKey(a, b, type) {
130
+ return `${a}|${b}|${type}`;
131
+ }
132
+ function upsertNode(id, type, label, weight = 1, metadata) {
133
+ const existing = graph.nodes.find(n => n.id === id);
134
+ if (existing) {
135
+ existing.weight += weight;
136
+ if (metadata)
137
+ existing.metadata = { ...existing.metadata, ...metadata };
138
+ }
139
+ else {
140
+ graph.nodes.push({ id, type, label, weight, metadata });
141
+ }
142
+ }
143
+ function upsertEdge(from, to, type, weight, metadata) {
144
+ const key = edgeKey(from, to, type);
145
+ const existing = graph.edges.find(e => edgeKey(e.from, e.to, e.type) === key);
146
+ if (existing) {
147
+ existing.weight = (existing.weight + weight) / 2;
148
+ if (metadata)
149
+ existing.metadata = { ...existing.metadata, ...metadata };
150
+ }
151
+ else {
152
+ graph.edges.push({ from, to, type, weight, metadata });
153
+ }
154
+ }
155
+ // ═══════════════════════════════════════════════════════════════
156
+ // LEGACY API (backward compat)
157
+ // ═══════════════════════════════════════════════════════════════
158
+ function buildKnowledgeGraph(patterns) {
159
+ loadGraph();
160
+ graph.nodes = [];
161
+ graph.edges = [];
162
+ graph.builtAt = Date.now();
163
+ graph.version = (graph.version || 0) + 1;
164
+ for (const p of patterns) {
165
+ upsertNode(p.patternId, 'pattern', p.description);
166
+ const catId = `cat:${p.category}`;
167
+ upsertNode(catId, 'category', p.category);
168
+ upsertEdge(p.patternId, catId, 'category_of', 1);
169
+ if (p.language && p.language !== 'unknown') {
170
+ const langId = `lang:${p.language}`;
171
+ upsertNode(langId, 'language', p.language);
172
+ }
173
+ if (p.framework && p.framework !== 'unknown') {
174
+ const fwId = `fw:${p.framework}`;
175
+ upsertNode(fwId, 'framework', p.framework);
176
+ }
177
+ if (p.conditions) {
178
+ for (const c of p.conditions) {
179
+ if (c.type === 'language')
180
+ upsertNode(`lang:${c.value}`, 'language', c.value);
181
+ if (c.type === 'framework')
182
+ upsertNode(`fw:${c.value}`, 'framework', c.value);
183
+ }
184
+ }
185
+ }
186
+ const patternArr = patterns;
187
+ for (let i = 0; i < patternArr.length; i++) {
188
+ for (let j = i + 1; j < patternArr.length; j++) {
189
+ const a = patternArr[i];
190
+ const b = patternArr[j];
191
+ const tokensA = new Set([...tokenize(a.from), ...tokenize(a.to)]);
192
+ const tokensB = new Set([...tokenize(b.from), ...tokenize(b.to)]);
193
+ const intersection = new Set([...tokensA].filter(t => tokensB.has(t)));
194
+ const union = new Set([...tokensA, ...tokensB]);
195
+ const jaccard = union.size > 0 ? intersection.size / union.size : 0;
196
+ if (jaccard >= 0.3) {
197
+ upsertEdge(a.patternId, b.patternId, 'similar', Math.round(jaccard * 10) / 10);
198
+ }
199
+ }
200
+ }
201
+ saveGraph();
202
+ return graph;
203
+ }
204
+ function getKnowledgeGraph() {
205
+ if (graph.nodes.length === 0)
206
+ loadGraph();
207
+ return graph;
208
+ }
209
+ function getNodeNeighbors(nodeId, maxDepth = 1) {
210
+ const g = getKnowledgeGraph();
211
+ const node = g.nodes.find(n => n.id === nodeId);
212
+ if (!node)
213
+ return null;
214
+ if (maxDepth <= 1) {
215
+ return { node, edges: g.edges.filter(e => e.from === nodeId || e.to === nodeId) };
216
+ }
217
+ const visited = new Set([nodeId]);
218
+ const edges = [];
219
+ let currentLevel = new Set([nodeId]);
220
+ for (let depth = 0; depth < maxDepth; depth++) {
221
+ const nextLevel = new Set();
222
+ for (const cur of currentLevel) {
223
+ for (const e of g.edges) {
224
+ if (e.from === cur && !visited.has(e.to)) {
225
+ visited.add(e.to);
226
+ nextLevel.add(e.to);
227
+ edges.push(e);
228
+ }
229
+ else if (e.to === cur && !visited.has(e.from)) {
230
+ visited.add(e.from);
231
+ nextLevel.add(e.from);
232
+ edges.push(e);
233
+ }
234
+ }
235
+ }
236
+ if (nextLevel.size === 0)
237
+ break;
238
+ currentLevel = nextLevel;
239
+ }
240
+ return { node, edges };
241
+ }
242
+ function findRelatedPatterns(patternId, limit = 10) {
243
+ const g = getKnowledgeGraph();
244
+ const edges = g.edges.filter(e => (e.from === patternId || e.to === patternId) && e.type !== 'category_of' && e.type !== 'language_of');
245
+ const related = new Map();
246
+ for (const e of edges) {
247
+ const relatedId = e.from === patternId ? e.to : e.from;
248
+ if (!related.has(relatedId) || related.get(relatedId).weight < e.weight) {
249
+ related.set(relatedId, { relationship: e.type, weight: e.weight });
250
+ }
251
+ }
252
+ return Array.from(related.entries()).sort((a, b) => b[1].weight - a[1].weight).slice(0, limit)
253
+ .map(([pid, info]) => ({ patternId: pid, relationship: info.relationship, weight: info.weight }));
254
+ }
255
+ function getGraphStats() {
256
+ const g = getKnowledgeGraph();
257
+ return {
258
+ nodes: g.nodes.length, edges: g.edges.length, builtAt: g.builtAt, version: g.version,
259
+ patternNodes: g.nodes.filter(n => n.type === 'pattern').length,
260
+ categoryNodes: g.nodes.filter(n => n.type === 'category').length,
261
+ languageNodes: g.nodes.filter(n => n.type === 'language').length,
262
+ };
263
+ }
264
+ function extractEntities(patterns) {
265
+ const entityMap = new Map();
266
+ for (const p of patterns) {
267
+ const all = `${p.from} ${p.to} ${p.description} ${p.category}`;
268
+ const words = all.split(/[^a-zA-Z]/).filter(w => w.length >= 3);
269
+ const classes = words.filter(w => /^[A-Z][a-z]+[A-Z]/.test(w));
270
+ for (const c of classes) {
271
+ if (!entityMap.has(c))
272
+ entityMap.set(c, { type: 'class', patterns: new Set() });
273
+ entityMap.get(c).patterns.add(p.patternId);
274
+ }
275
+ if (p.to.includes('=>') || p.to.startsWith('function') || p.from.startsWith('function')) {
276
+ const fName = 'fn:' + p.category;
277
+ if (!entityMap.has(fName))
278
+ entityMap.set(fName, { type: 'function', patterns: new Set() });
279
+ entityMap.get(fName).patterns.add(p.patternId);
280
+ }
281
+ const vars = words.filter(w => /^[a-z][a-zA-Z0-9]{2,}$/.test(w) && !['const', 'let', 'var', 'function', 'return', 'import', 'export', 'class', 'from', 'this', 'true', 'false', 'null', 'undefined'].includes(w));
282
+ for (const v of vars.slice(0, 5)) {
283
+ const key = `var:${v}`;
284
+ if (!entityMap.has(key))
285
+ entityMap.set(key, { type: 'variable', patterns: new Set() });
286
+ entityMap.get(key).patterns.add(p.patternId);
287
+ }
288
+ const fws = ['react', 'vue', 'angular', 'express', 'django', 'spring', 'next', 'nuxt', 'svelte', 'tailwind', 'redux', 'graphql', 'jest', 'mocha'];
289
+ for (const fw of fws) {
290
+ if (all.toLowerCase().includes(fw)) {
291
+ if (!entityMap.has(fw))
292
+ entityMap.set(fw, { type: 'framework', patterns: new Set() });
293
+ entityMap.get(fw).patterns.add(p.patternId);
294
+ }
295
+ }
296
+ }
297
+ return Array.from(entityMap.entries())
298
+ .map(([name, data]) => ({ name, type: data.type, occurrences: data.patterns.size, patterns: Array.from(data.patterns) }))
299
+ .sort((a, b) => b.occurrences - a.occurrences);
300
+ }
301
+ function inferRelationships(patterns) {
302
+ const rels = [];
303
+ for (let i = 0; i < patterns.length; i++) {
304
+ for (let j = i + 1; j < patterns.length; j++) {
305
+ const a = patterns[i];
306
+ const b = patterns[j];
307
+ if (a.category === b.category)
308
+ rels.push({ from: a.patternId, to: b.patternId, type: 'similar_to', strength: 0.6, evidence: [`Both in ${a.category} category`] });
309
+ if (a.to.includes(b.from) || b.to.includes(a.from))
310
+ rels.push({ from: a.patternId, to: b.patternId, type: 'prerequisite', strength: 0.8, evidence: [`"${a.to}" leads to "${b.from}"`] });
311
+ if (a.from === b.from && a.to !== b.to)
312
+ rels.push({ from: a.patternId, to: b.patternId, type: 'alternative_to', strength: 0.7, evidence: [`Both transform "${a.from}"`] });
313
+ if (a.from === b.to && a.to === b.from)
314
+ rels.push({ from: a.patternId, to: b.patternId, type: 'conflicts_with', strength: 0.9, evidence: [`"${a.description}" reverses "${b.description}"`] });
315
+ }
316
+ }
317
+ return rels;
318
+ }
319
+ function findPaths(from, to, maxDepth = 4) {
320
+ const g = getKnowledgeGraph();
321
+ const results = [];
322
+ function dfs(current, target, visited, pathEdges, depth) {
323
+ if (depth > maxDepth)
324
+ return;
325
+ if (current === target && pathEdges.length > 0) {
326
+ const nodes = [pathEdges[0].from];
327
+ for (const e of pathEdges)
328
+ nodes.push(e.to);
329
+ results.push({ nodes, edges: pathEdges.map(e => e.type), totalWeight: pathEdges.reduce((s, e) => s + e.weight, 0) });
330
+ return;
331
+ }
332
+ const neighbors = g.edges.filter(e => e.from === current || e.to === current);
333
+ for (const edge of neighbors) {
334
+ const next = edge.from === current ? edge.to : edge.from;
335
+ if (!visited.has(next)) {
336
+ visited.add(next);
337
+ pathEdges.push(edge);
338
+ dfs(next, target, visited, pathEdges, depth + 1);
339
+ pathEdges.pop();
340
+ visited.delete(next);
341
+ }
342
+ }
343
+ }
344
+ dfs(from, to, new Set([from]), [], 0);
345
+ return results.sort((a, b) => b.totalWeight - a.totalWeight);
346
+ }
347
+ function addNodes(inputs) {
348
+ loadGraph();
349
+ for (const inp of inputs) {
350
+ upsertNode(inp.id, inp.type, inp.label, inp.weight || 1, { ...inp.metadata, source: inp.source || 'pattern' });
351
+ }
352
+ saveGraph();
353
+ }
354
+ function addNode(input) {
355
+ addNodes([input]);
356
+ }
357
+ function removeNode(nodeId) {
358
+ loadGraph();
359
+ const idx = graph.nodes.findIndex(n => n.id === nodeId);
360
+ if (idx === -1)
361
+ return false;
362
+ graph.nodes.splice(idx, 1);
363
+ graph.edges = graph.edges.filter(e => e.from !== nodeId && e.to !== nodeId);
364
+ saveGraph();
365
+ return true;
366
+ }
367
+ function addRelationships(inputs) {
368
+ loadGraph();
369
+ for (const inp of inputs) {
370
+ upsertEdge(inp.from, inp.to, inp.type, inp.weight, inp.evidence ? { evidence: inp.evidence } : undefined);
371
+ }
372
+ saveGraph();
373
+ }
374
+ function addRelationship(input) {
375
+ addRelationships([input]);
376
+ }
377
+ function getNodeEdges(nodeId) {
378
+ const g = getKnowledgeGraph();
379
+ return g.edges.filter(e => e.from === nodeId || e.to === nodeId);
380
+ }
381
+ function getNodesByType(type) {
382
+ return getKnowledgeGraph().nodes.filter(n => n.type === type);
383
+ }
384
+ // ─── SYSTEM 3: INFLUENCE ENGINE ──────────────────────
385
+ function computeInfluence(patternOutcomes) {
386
+ const g = getKnowledgeGraph();
387
+ const scores = [];
388
+ for (const node of g.nodes) {
389
+ if (node.type === 'pattern' && patternOutcomes.has(node.id)) {
390
+ const outcome = patternOutcomes.get(node.id);
391
+ // Count how many other patterns link to this one
392
+ const incomingEdges = g.edges.filter(e => e.to === node.id);
393
+ const outgoingEdges = g.edges.filter(e => e.from === node.id);
394
+ const connectedness = incomingEdges.length + outgoingEdges.length;
395
+ const outcomeScore = outcome.successRate * (outcome.usageCount / Math.max(outcome.usageCount, 10));
396
+ const influence = Math.round((connectedness * 0.3 + outcomeScore * 0.7) * 100) / 100;
397
+ const evidence = [];
398
+ if (incomingEdges.length > 0)
399
+ evidence.push(`${incomingEdges.length} incoming relationships`);
400
+ if (outgoingEdges.length > 0)
401
+ evidence.push(`${outgoingEdges.length} outgoing relationships`);
402
+ evidence.push(`Success rate: ${outcome.successRate}, Usage: ${outcome.usageCount}`);
403
+ scores.push({ nodeId: node.id, label: node.label, score: influence, evidence });
404
+ }
405
+ }
406
+ return scores.sort((a, b) => b.score - a.score);
407
+ }
408
+ // ─── SYSTEM 4: DEPENDENCY ENGINE ─────────────────────
409
+ function detectDependencies(patterns) {
410
+ const rels = [];
411
+ const all = patterns;
412
+ for (let i = 0; i < all.length; i++) {
413
+ for (let j = 0; j < all.length; j++) {
414
+ if (i === j)
415
+ continue;
416
+ const a = all[i];
417
+ const b = all[j];
418
+ // If A's "to" transformation is a prerequisite for B's "from"
419
+ if (a.to && b.from && a.to.includes(b.from)) {
420
+ rels.push({ from: a.patternId, to: b.patternId, type: 'depends_on', weight: 0.8, evidence: [`"${a.to}" contains "${b.from}"`] });
421
+ }
422
+ // Same category co-occurrence indicates dependency
423
+ if (a.category === b.category && a.category !== 'general') {
424
+ rels.push({ from: a.patternId, to: b.patternId, type: 'related_to', weight: 0.5, evidence: [`Both in ${a.category}`] });
425
+ }
426
+ }
427
+ }
428
+ return rels;
429
+ }
430
+ // ─── SYSTEM 5: CONFLICT ENGINE ───────────────────────
431
+ function detectConflicts(patterns) {
432
+ const rels = [];
433
+ for (let i = 0; i < patterns.length; i++) {
434
+ for (let j = i + 1; j < patterns.length; j++) {
435
+ const a = patterns[i];
436
+ const b = patterns[j];
437
+ if (a.from && b.to && a.to && b.from && a.from === b.to && a.to === b.from) {
438
+ rels.push({ from: a.patternId, to: b.patternId, type: 'conflicts', weight: 0.9, evidence: [`"${a.description}" reverses "${b.description}"`] });
439
+ }
440
+ // Different categories with different goals
441
+ if (a.category !== b.category && (a.description.includes('microservice') && b.description.includes('monolith'))) {
442
+ rels.push({ from: a.patternId, to: b.patternId, type: 'conflicts', weight: 0.7, evidence: ['Architecture conflict'] });
443
+ }
444
+ }
445
+ }
446
+ return rels;
447
+ }
448
+ // ─── SYSTEM 6: SEQUENCE ENGINE ───────────────────────
449
+ function detectSequences(developerHistories) {
450
+ const pairCount = new Map();
451
+ for (const history of developerHistories) {
452
+ const sorted = [...history].sort((a, b) => a.timestamp - b.timestamp);
453
+ for (let i = 0; i < sorted.length - 1; i++) {
454
+ for (let j = i + 1; j < Math.min(i + 5, sorted.length); j++) {
455
+ const key = `${sorted[i].patternId}|${sorted[j].patternId}`;
456
+ const timeGap = sorted[j].timestamp - sorted[i].timestamp;
457
+ const weight = timeGap > 0 ? Math.max(0.1, 1 - (timeGap / 86400000)) : 0.5;
458
+ if (!pairCount.has(key))
459
+ pairCount.set(key, { count: 0, weight: 0 });
460
+ const entry = pairCount.get(key);
461
+ entry.count++;
462
+ entry.weight = Math.max(entry.weight, weight);
463
+ }
464
+ }
465
+ }
466
+ const rels = [];
467
+ for (const [key, data] of pairCount) {
468
+ if (data.count >= 2) {
469
+ const [from, to] = key.split('|');
470
+ rels.push({ from, to, type: 'sequenced_after', weight: Math.round((data.weight * Math.min(data.count / 5, 1)) * 100) / 100, evidence: [`Sequence seen ${data.count} times`] });
471
+ }
472
+ }
473
+ return rels;
474
+ }
475
+ // ─── SYSTEM 7: OUTCOME CORRELATION ───────────────────
476
+ function computeOutcomeCorrelations(allOutcomes) {
477
+ const correlations = [];
478
+ const entries = Array.from(allOutcomes.entries());
479
+ for (let i = 0; i < entries.length; i++) {
480
+ for (let j = i + 1; j < entries.length; j++) {
481
+ const [pidA, outA] = entries[i];
482
+ const [pidB, outB] = entries[j];
483
+ if (outA.usageCount < 3 || outB.usageCount < 3)
484
+ continue;
485
+ const diff = outA.successRate - outB.successRate;
486
+ const direction = Math.abs(diff) < 0.1 ? 'neutral' : diff > 0 ? 'positive' : 'negative';
487
+ const sampleSize = Math.min(outA.usageCount, outB.usageCount);
488
+ correlations.push({
489
+ fromPattern: pidA, toPattern: pidB,
490
+ correlation: Math.round(Math.abs(diff) * 100) / 100,
491
+ sampleSize, direction,
492
+ evidence: [`${pidA}: ${outA.successRate} success (${outA.usageCount} uses)`, `${pidB}: ${outB.successRate} success (${outB.usageCount} uses)`],
493
+ });
494
+ }
495
+ }
496
+ return correlations.sort((a, b) => b.correlation - a.correlation);
497
+ }
498
+ // ─── SYSTEM 8: PROJECT DNA LINKS ─────────────────────
499
+ function linkProjectDNA(dnaFingerprint, patternIds) {
500
+ const rels = [];
501
+ const prefix = `dna:`;
502
+ const fpId = `${prefix}fingerprint`;
503
+ upsertNode(fpId, 'dna_fingerprint', `DNA: ${dnaFingerprint.primaryLanguage}`, 1, { ...dnaFingerprint });
504
+ const archId = `${prefix}arch:${dnaFingerprint.architecture}`;
505
+ upsertNode(archId, 'project_dna', `Architecture: ${dnaFingerprint.architecture}`);
506
+ rels.push({ from: fpId, to: archId, type: 'belongs_to', weight: 1, evidence: ['DNA fingerprint'] });
507
+ const langId = `${prefix}lang:${dnaFingerprint.primaryLanguage}`;
508
+ const existingLang = graph.nodes.find(n => n.id === `lang:${dnaFingerprint.primaryLanguage}`);
509
+ if (existingLang) {
510
+ rels.push({ from: fpId, to: existingLang.id, type: 'uses', weight: 1, evidence: ['Primary language'] });
511
+ }
512
+ for (const pid of patternIds) {
513
+ const pNode = graph.nodes.find(n => n.id === pid);
514
+ if (pNode) {
515
+ rels.push({ from: fpId, to: pid, type: 'related_to', weight: 0.8, evidence: ['DNA-to-pattern link'] });
516
+ if (dnaFingerprint.architecture === 'layered' || dnaFingerprint.architecture === 'mvc') {
517
+ rels.push({ from: pid, to: archId, type: 'belongs_to', weight: 0.6, evidence: [`Pattern used in ${dnaFingerprint.architecture}`] });
518
+ }
519
+ }
520
+ }
521
+ return rels;
522
+ }
523
+ // ─── SYSTEM 9: COMMUNITY GRAPH ───────────────────────
524
+ function buildCommunityGraph(allProfiles) {
525
+ const langFreq = new Map();
526
+ const catFreq = new Map();
527
+ let totalDevs = allProfiles.length || 1;
528
+ for (const prof of allProfiles) {
529
+ for (const [lang, count] of Object.entries(prof.languages)) {
530
+ langFreq.set(lang, (langFreq.get(lang) || 0) + count);
531
+ }
532
+ for (const cat of prof.topCategories) {
533
+ catFreq.set(cat, (catFreq.get(cat) || 0) + 1);
534
+ }
535
+ }
536
+ const nodes = [];
537
+ const edges = [];
538
+ // Community concept nodes for languages
539
+ for (const [lang, freq] of langFreq) {
540
+ const pct = Math.round((freq / totalDevs) * 100);
541
+ nodes.push({ id: `community:lang:${lang}`, type: 'community_concept', label: `Community: ${lang}`, weight: pct });
542
+ }
543
+ // Community concept nodes for categories
544
+ for (const [cat, freq] of catFreq) {
545
+ const pct = Math.round((freq / totalDevs) * 100);
546
+ nodes.push({ id: `community:cat:${cat}`, type: 'community_concept', label: `Community: ${cat}`, weight: pct });
547
+ }
548
+ // Link community nodes to existing language/category nodes
549
+ for (const lang of langFreq.keys()) {
550
+ edges.push({ from: `community:lang:${lang}`, to: `lang:${lang}`, type: 'related_to', weight: 0.7 });
551
+ }
552
+ for (const cat of catFreq.keys()) {
553
+ edges.push({ from: `community:cat:${cat}`, to: `cat:${cat}`, type: 'related_to', weight: 0.7 });
554
+ }
555
+ return { nodes, edges };
556
+ }
557
+ function getCommunityInsights() {
558
+ const g = getKnowledgeGraph();
559
+ const communityNodes = g.nodes.filter(n => n.type === 'community_concept');
560
+ return communityNodes.map(n => {
561
+ const edges = g.edges.filter(e => e.from === n.id || e.to === n.id);
562
+ const topPats = edges.filter(e => {
563
+ const other = e.from === n.id ? e.to : e.from;
564
+ return g.nodes.find(gn => gn.id === other && gn.type === 'pattern');
565
+ }).slice(0, 5).map(e => e.from === n.id ? e.to : e.from);
566
+ return {
567
+ concept: n.label, developerCount: n.weight * 10, patternCount: edges.length,
568
+ topPatterns: topPats, avgSuccessRate: 0.75,
569
+ };
570
+ });
571
+ }
572
+ // ─── SYSTEM 10: PATH DISCOVERY ───────────────────────
573
+ function discoverPaths(fromNode, toNode, maxDepth = 5) {
574
+ const g = getKnowledgeGraph();
575
+ const results = [];
576
+ function dfs(current, target, visited, pathEdges, depth) {
577
+ if (depth > maxDepth)
578
+ return;
579
+ if (current === target && pathEdges.length > 0) {
580
+ const nodes = [pathEdges[0].from];
581
+ const nodeLabels = [];
582
+ for (const e of pathEdges) {
583
+ nodes.push(e.to);
584
+ const toNode = g.nodes.find(n => n.id === e.to);
585
+ nodeLabels.push(toNode?.label || e.to);
586
+ }
587
+ const firstNode = g.nodes.find(n => n.id === pathEdges[0].from);
588
+ nodeLabels.unshift(firstNode?.label || pathEdges[0].from);
589
+ results.push({
590
+ nodes, edges: pathEdges.map(e => `${e.type}`), totalWeight: pathEdges.reduce((s, e) => s + e.weight, 0),
591
+ nodeLabels, edgeTypes: pathEdges.map(e => e.type),
592
+ });
593
+ return;
594
+ }
595
+ const neighbors = g.edges.filter(e => e.from === current || e.to === current);
596
+ for (const edge of neighbors) {
597
+ const next = edge.from === current ? edge.to : edge.from;
598
+ if (!visited.has(next) || next === target) {
599
+ visited.add(next);
600
+ pathEdges.push(edge);
601
+ dfs(next, target, visited, pathEdges, depth + 1);
602
+ pathEdges.pop();
603
+ }
604
+ }
605
+ }
606
+ dfs(fromNode, toNode, new Set([fromNode]), [], 0);
607
+ return results.sort((a, b) => b.totalWeight - a.totalWeight);
608
+ }
609
+ // ─── GRAPH EVOLUTION & HISTORY ──────────────────────
610
+ function getGraphVersion() {
611
+ return graph.version || 0;
612
+ }
613
+ function resetGraph() {
614
+ graph = { ...DEFAULT_GRAPH, version: graph.version + 1 };
615
+ saveGraph();
616
+ }
617
+ function exportGraphJSON() {
618
+ return JSON.stringify(getKnowledgeGraph(), null, 2);
619
+ }
620
+ function importGraphJSON(json) {
621
+ try {
622
+ const parsed = JSON.parse(json);
623
+ if (parsed.nodes && parsed.edges) {
624
+ graph = parsed;
625
+ saveGraph();
626
+ }
627
+ }
628
+ catch { }
629
+ }
630
+ // ─── CLOUD GRAPH DB (SQLite) — legacy compat ─────────
631
+ function getCloudDb() {
632
+ const { dbPath } = (0, store_1.getStore)();
633
+ return new better_sqlite3_1.default(dbPath);
634
+ }
635
+ function ensureCloudGraphTable() {
636
+ const db = getCloudDb();
637
+ db.exec(`CREATE TABLE IF NOT EXISTS graph_entities (id INTEGER PRIMARY KEY AUTOINCREMENT, entity_name TEXT NOT NULL, entity_type TEXT NOT NULL, pattern_id TEXT)`);
638
+ db.exec(`CREATE TABLE IF NOT EXISTS graph_relationships (id INTEGER PRIMARY KEY AUTOINCREMENT, from_pattern TEXT NOT NULL, to_pattern TEXT NOT NULL, rel_type TEXT NOT NULL, strength REAL NOT NULL DEFAULT 1.0, evidence TEXT)`);
639
+ db.close();
640
+ }
641
+ function recordCloudEntity(entity_name, entity_type, pattern_id) {
642
+ const db = getCloudDb();
643
+ db.prepare(`INSERT INTO graph_entities (entity_name, entity_type, pattern_id) VALUES (?, ?, ?)`).run(entity_name, entity_type, pattern_id);
644
+ db.close();
645
+ }
646
+ function getCloudEntities() {
647
+ const db = getCloudDb();
648
+ const rows = db.prepare(`SELECT entity_name, entity_type, COUNT(*) as patternCount FROM graph_entities GROUP BY entity_name, entity_type`).all();
649
+ db.close();
650
+ return rows.map(r => ({ name: r.entity_name, type: r.entity_type, patternCount: r.patternCount }));
651
+ }
652
+ function recordCloudRelationship(from, to, type, strength, evidence) {
653
+ const db = getCloudDb();
654
+ db.prepare(`INSERT INTO graph_relationships (from_pattern, to_pattern, rel_type, strength, evidence) VALUES (?, ?, ?, ?, ?)`).run(from, to, type, strength, evidence);
655
+ db.close();
656
+ }
657
+ function getCloudRelationships() {
658
+ const db = getCloudDb();
659
+ const rows = db.prepare(`SELECT from_pattern, to_pattern, rel_type, strength FROM graph_relationships`).all();
660
+ db.close();
661
+ return rows.map(r => ({ from: r.from_pattern, to: r.to_pattern, type: r.rel_type, strength: r.strength }));
662
+ }
663
+ function getCloudPathTraversal(from, to, maxDepth = 10) {
664
+ const db = getCloudDb();
665
+ const rows = db.prepare(`SELECT from_pattern, to_pattern, rel_type, strength FROM graph_relationships`).all();
666
+ db.close();
667
+ const adj = new Map();
668
+ for (const r of rows) {
669
+ if (!adj.has(r.from_pattern))
670
+ adj.set(r.from_pattern, []);
671
+ adj.get(r.from_pattern).push({ to: r.to_pattern, type: r.rel_type, weight: r.strength });
672
+ if (!adj.has(r.to_pattern))
673
+ adj.set(r.to_pattern, []);
674
+ adj.get(r.to_pattern).push({ to: r.from_pattern, type: r.rel_type, weight: r.strength });
675
+ }
676
+ const results = [];
677
+ function bfs(start, target) {
678
+ const queue = [{ node: start, path: [start], edgeTypes: [], weight: 0 }];
679
+ const visited = new Set();
680
+ while (queue.length > 0) {
681
+ const cur = queue.shift();
682
+ if (cur.node === target && cur.path.length > 1) {
683
+ results.push({ nodes: cur.path, edges: cur.edgeTypes, totalWeight: cur.weight });
684
+ continue;
685
+ }
686
+ if (cur.path.length > maxDepth)
687
+ continue;
688
+ const neighbors = adj.get(cur.node) || [];
689
+ for (const nb of neighbors) {
690
+ if (!visited.has(nb.to) || nb.to === target) {
691
+ visited.add(nb.to);
692
+ queue.push({ node: nb.to, path: [...cur.path, nb.to], edgeTypes: [...cur.edgeTypes, nb.type], weight: cur.weight + nb.weight });
693
+ }
694
+ }
695
+ }
696
+ }
697
+ bfs(from, to);
698
+ return results.sort((a, b) => b.totalWeight - a.totalWeight);
699
+ }
700
+ function getCloudNodeNeighbors(nodeId) {
701
+ const db = getCloudDb();
702
+ const rows = db.prepare(`SELECT from_pattern, to_pattern, rel_type, strength FROM graph_relationships WHERE from_pattern = ? OR to_pattern = ?`).all(nodeId, nodeId);
703
+ db.close();
704
+ const neighbors = new Map();
705
+ for (const r of rows) {
706
+ const neighborId = r.from_pattern === nodeId ? r.to_pattern : r.from_pattern;
707
+ const key = neighborId + '|' + r.rel_type;
708
+ if (!neighbors.has(key) || neighbors.get(key).weight < r.strength)
709
+ neighbors.set(key, { neighborId, edgeType: r.rel_type, weight: r.strength });
710
+ }
711
+ return Array.from(neighbors.values());
712
+ }
713
+ //# sourceMappingURL=knowledge-graph.js.map