shieldcortex 2.0.0

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 (377) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +282 -0
  3. package/dashboard/components.json +22 -0
  4. package/dashboard/eslint.config.mjs +42 -0
  5. package/dashboard/next.config.ts +7 -0
  6. package/dashboard/package-lock.json +8053 -0
  7. package/dashboard/package.json +44 -0
  8. package/dashboard/postcss.config.mjs +7 -0
  9. package/dashboard/public/file.svg +1 -0
  10. package/dashboard/public/globe.svg +1 -0
  11. package/dashboard/public/next.svg +1 -0
  12. package/dashboard/public/vercel.svg +1 -0
  13. package/dashboard/public/window.svg +1 -0
  14. package/dashboard/scripts/ensure-api.mjs +76 -0
  15. package/dashboard/src/app/error.tsx +49 -0
  16. package/dashboard/src/app/favicon.ico +0 -0
  17. package/dashboard/src/app/globals.css +130 -0
  18. package/dashboard/src/app/layout.tsx +35 -0
  19. package/dashboard/src/app/page.tsx +364 -0
  20. package/dashboard/src/components/Providers.tsx +27 -0
  21. package/dashboard/src/components/brain/ActivityPulseSystem.tsx +229 -0
  22. package/dashboard/src/components/brain/BrainMesh.tsx +133 -0
  23. package/dashboard/src/components/brain/BrainRegions.tsx +254 -0
  24. package/dashboard/src/components/brain/BrainScene.tsx +255 -0
  25. package/dashboard/src/components/brain/CategoryLabels.tsx +103 -0
  26. package/dashboard/src/components/brain/CoreSphere.tsx +215 -0
  27. package/dashboard/src/components/brain/DataFlowParticles.tsx +123 -0
  28. package/dashboard/src/components/brain/DataStreamRings.tsx +161 -0
  29. package/dashboard/src/components/brain/ElectronFlow.tsx +323 -0
  30. package/dashboard/src/components/brain/HolographicGrid.tsx +235 -0
  31. package/dashboard/src/components/brain/MemoryLinks.tsx +271 -0
  32. package/dashboard/src/components/brain/MemoryNode.tsx +245 -0
  33. package/dashboard/src/components/brain/NeuralPathways.tsx +441 -0
  34. package/dashboard/src/components/brain/SynapseNodes.tsx +312 -0
  35. package/dashboard/src/components/brain/TimelineControls.tsx +205 -0
  36. package/dashboard/src/components/chip/ChipScene.tsx +497 -0
  37. package/dashboard/src/components/chip/ChipSubstrate.tsx +238 -0
  38. package/dashboard/src/components/chip/CortexCore.tsx +210 -0
  39. package/dashboard/src/components/chip/DataBus.tsx +416 -0
  40. package/dashboard/src/components/chip/MemoryCell.tsx +225 -0
  41. package/dashboard/src/components/chip/MemoryGrid.tsx +328 -0
  42. package/dashboard/src/components/chip/QuantumCell.tsx +316 -0
  43. package/dashboard/src/components/chip/SectionLabel.tsx +113 -0
  44. package/dashboard/src/components/chip/index.ts +14 -0
  45. package/dashboard/src/components/controls/ControlPanel.tsx +106 -0
  46. package/dashboard/src/components/controls/VersionPanel.tsx +185 -0
  47. package/dashboard/src/components/dashboard/StatsPanel.tsx +164 -0
  48. package/dashboard/src/components/debug/ActivityLog.tsx +250 -0
  49. package/dashboard/src/components/debug/DebugPanel.tsx +101 -0
  50. package/dashboard/src/components/debug/QueryTester.tsx +192 -0
  51. package/dashboard/src/components/debug/RelationshipGraph.tsx +403 -0
  52. package/dashboard/src/components/debug/SqlConsole.tsx +319 -0
  53. package/dashboard/src/components/graph/KnowledgeGraph.tsx +230 -0
  54. package/dashboard/src/components/graph/OntologyGraph.tsx +631 -0
  55. package/dashboard/src/components/insights/ActivityHeatmap.tsx +131 -0
  56. package/dashboard/src/components/insights/InsightsView.tsx +46 -0
  57. package/dashboard/src/components/insights/KnowledgeMapPanel.tsx +80 -0
  58. package/dashboard/src/components/insights/QualityPanel.tsx +116 -0
  59. package/dashboard/src/components/memories/MemoriesView.tsx +150 -0
  60. package/dashboard/src/components/memories/MemoryCard.tsx +103 -0
  61. package/dashboard/src/components/memory/MemoryDetail.tsx +325 -0
  62. package/dashboard/src/components/nav/NavRail.tsx +54 -0
  63. package/dashboard/src/components/ui/button.tsx +62 -0
  64. package/dashboard/src/components/ui/card.tsx +92 -0
  65. package/dashboard/src/components/ui/input.tsx +21 -0
  66. package/dashboard/src/hooks/useDebouncedValue.ts +24 -0
  67. package/dashboard/src/hooks/useMemories.ts +458 -0
  68. package/dashboard/src/hooks/useSuggestions.ts +46 -0
  69. package/dashboard/src/lib/category-colors.ts +84 -0
  70. package/dashboard/src/lib/position-algorithm.ts +177 -0
  71. package/dashboard/src/lib/simplex-noise.ts +217 -0
  72. package/dashboard/src/lib/store.ts +88 -0
  73. package/dashboard/src/lib/utils.ts +6 -0
  74. package/dashboard/src/lib/websocket.ts +249 -0
  75. package/dashboard/src/types/memory.ts +73 -0
  76. package/dashboard/tsconfig.json +34 -0
  77. package/dist/__tests__/consolidation-merge.test.d.ts +9 -0
  78. package/dist/__tests__/consolidation-merge.test.d.ts.map +1 -0
  79. package/dist/__tests__/consolidation-merge.test.js +137 -0
  80. package/dist/__tests__/consolidation-merge.test.js.map +1 -0
  81. package/dist/__tests__/contradictions.test.d.ts +8 -0
  82. package/dist/__tests__/contradictions.test.d.ts.map +1 -0
  83. package/dist/__tests__/contradictions.test.js +78 -0
  84. package/dist/__tests__/contradictions.test.js.map +1 -0
  85. package/dist/__tests__/salience-evolution.test.d.ts +7 -0
  86. package/dist/__tests__/salience-evolution.test.d.ts.map +1 -0
  87. package/dist/__tests__/salience-evolution.test.js +151 -0
  88. package/dist/__tests__/salience-evolution.test.js.map +1 -0
  89. package/dist/__tests__/store.test.d.ts +7 -0
  90. package/dist/__tests__/store.test.d.ts.map +1 -0
  91. package/dist/__tests__/store.test.js +582 -0
  92. package/dist/__tests__/store.test.js.map +1 -0
  93. package/dist/api/control.d.ts +27 -0
  94. package/dist/api/control.d.ts.map +1 -0
  95. package/dist/api/control.js +60 -0
  96. package/dist/api/control.js.map +1 -0
  97. package/dist/api/events.d.ts +159 -0
  98. package/dist/api/events.d.ts.map +1 -0
  99. package/dist/api/events.js +155 -0
  100. package/dist/api/events.js.map +1 -0
  101. package/dist/api/version.d.ts +36 -0
  102. package/dist/api/version.d.ts.map +1 -0
  103. package/dist/api/version.js +146 -0
  104. package/dist/api/version.js.map +1 -0
  105. package/dist/api/visualization-server.d.ts +11 -0
  106. package/dist/api/visualization-server.d.ts.map +1 -0
  107. package/dist/api/visualization-server.js +1186 -0
  108. package/dist/api/visualization-server.js.map +1 -0
  109. package/dist/context/project-context.d.ts +57 -0
  110. package/dist/context/project-context.d.ts.map +1 -0
  111. package/dist/context/project-context.js +135 -0
  112. package/dist/context/project-context.js.map +1 -0
  113. package/dist/database/init.d.ts +49 -0
  114. package/dist/database/init.d.ts.map +1 -0
  115. package/dist/database/init.js +567 -0
  116. package/dist/database/init.js.map +1 -0
  117. package/dist/defence/__tests__/firewall.test.d.ts +8 -0
  118. package/dist/defence/__tests__/firewall.test.d.ts.map +1 -0
  119. package/dist/defence/__tests__/firewall.test.js +123 -0
  120. package/dist/defence/__tests__/firewall.test.js.map +1 -0
  121. package/dist/defence/__tests__/fragmentation.test.d.ts +7 -0
  122. package/dist/defence/__tests__/fragmentation.test.d.ts.map +1 -0
  123. package/dist/defence/__tests__/fragmentation.test.js +51 -0
  124. package/dist/defence/__tests__/fragmentation.test.js.map +1 -0
  125. package/dist/defence/__tests__/pipeline.test.d.ts +8 -0
  126. package/dist/defence/__tests__/pipeline.test.d.ts.map +1 -0
  127. package/dist/defence/__tests__/pipeline.test.js +61 -0
  128. package/dist/defence/__tests__/pipeline.test.js.map +1 -0
  129. package/dist/defence/__tests__/sensitivity.test.d.ts +7 -0
  130. package/dist/defence/__tests__/sensitivity.test.d.ts.map +1 -0
  131. package/dist/defence/__tests__/sensitivity.test.js +61 -0
  132. package/dist/defence/__tests__/sensitivity.test.js.map +1 -0
  133. package/dist/defence/__tests__/trust.test.d.ts +7 -0
  134. package/dist/defence/__tests__/trust.test.d.ts.map +1 -0
  135. package/dist/defence/__tests__/trust.test.js +49 -0
  136. package/dist/defence/__tests__/trust.test.js.map +1 -0
  137. package/dist/defence/audit/index.d.ts +4 -0
  138. package/dist/defence/audit/index.d.ts.map +1 -0
  139. package/dist/defence/audit/index.js +3 -0
  140. package/dist/defence/audit/index.js.map +1 -0
  141. package/dist/defence/audit/logger.d.ts +14 -0
  142. package/dist/defence/audit/logger.d.ts.map +1 -0
  143. package/dist/defence/audit/logger.js +54 -0
  144. package/dist/defence/audit/logger.js.map +1 -0
  145. package/dist/defence/audit/queries.d.ts +33 -0
  146. package/dist/defence/audit/queries.d.ts.map +1 -0
  147. package/dist/defence/audit/queries.js +103 -0
  148. package/dist/defence/audit/queries.js.map +1 -0
  149. package/dist/defence/firewall/anomaly-scorer.d.ts +8 -0
  150. package/dist/defence/firewall/anomaly-scorer.d.ts.map +1 -0
  151. package/dist/defence/firewall/anomaly-scorer.js +58 -0
  152. package/dist/defence/firewall/anomaly-scorer.js.map +1 -0
  153. package/dist/defence/firewall/encoding-detector.d.ts +13 -0
  154. package/dist/defence/firewall/encoding-detector.d.ts.map +1 -0
  155. package/dist/defence/firewall/encoding-detector.js +120 -0
  156. package/dist/defence/firewall/encoding-detector.js.map +1 -0
  157. package/dist/defence/firewall/index.d.ts +21 -0
  158. package/dist/defence/firewall/index.d.ts.map +1 -0
  159. package/dist/defence/firewall/index.js +133 -0
  160. package/dist/defence/firewall/index.js.map +1 -0
  161. package/dist/defence/firewall/instruction-detector.d.ts +12 -0
  162. package/dist/defence/firewall/instruction-detector.d.ts.map +1 -0
  163. package/dist/defence/firewall/instruction-detector.js +99 -0
  164. package/dist/defence/firewall/instruction-detector.js.map +1 -0
  165. package/dist/defence/firewall/privilege-detector.d.ts +13 -0
  166. package/dist/defence/firewall/privilege-detector.d.ts.map +1 -0
  167. package/dist/defence/firewall/privilege-detector.js +89 -0
  168. package/dist/defence/firewall/privilege-detector.js.map +1 -0
  169. package/dist/defence/fragmentation/assembly-detector.d.ts +18 -0
  170. package/dist/defence/fragmentation/assembly-detector.d.ts.map +1 -0
  171. package/dist/defence/fragmentation/assembly-detector.js +72 -0
  172. package/dist/defence/fragmentation/assembly-detector.js.map +1 -0
  173. package/dist/defence/fragmentation/entity-extractor.d.ts +19 -0
  174. package/dist/defence/fragmentation/entity-extractor.d.ts.map +1 -0
  175. package/dist/defence/fragmentation/entity-extractor.js +86 -0
  176. package/dist/defence/fragmentation/entity-extractor.js.map +1 -0
  177. package/dist/defence/fragmentation/index.d.ts +23 -0
  178. package/dist/defence/fragmentation/index.d.ts.map +1 -0
  179. package/dist/defence/fragmentation/index.js +49 -0
  180. package/dist/defence/fragmentation/index.js.map +1 -0
  181. package/dist/defence/fragmentation/temporal-analyzer.d.ts +28 -0
  182. package/dist/defence/fragmentation/temporal-analyzer.d.ts.map +1 -0
  183. package/dist/defence/fragmentation/temporal-analyzer.js +41 -0
  184. package/dist/defence/fragmentation/temporal-analyzer.js.map +1 -0
  185. package/dist/defence/index.d.ts +12 -0
  186. package/dist/defence/index.d.ts.map +1 -0
  187. package/dist/defence/index.js +18 -0
  188. package/dist/defence/index.js.map +1 -0
  189. package/dist/defence/pipeline.d.ts +9 -0
  190. package/dist/defence/pipeline.d.ts.map +1 -0
  191. package/dist/defence/pipeline.js +115 -0
  192. package/dist/defence/pipeline.js.map +1 -0
  193. package/dist/defence/scanner/index.d.ts +5 -0
  194. package/dist/defence/scanner/index.d.ts.map +1 -0
  195. package/dist/defence/scanner/index.js +5 -0
  196. package/dist/defence/scanner/index.js.map +1 -0
  197. package/dist/defence/scanner/scan-existing.d.ts +34 -0
  198. package/dist/defence/scanner/scan-existing.d.ts.map +1 -0
  199. package/dist/defence/scanner/scan-existing.js +136 -0
  200. package/dist/defence/scanner/scan-existing.js.map +1 -0
  201. package/dist/defence/sensitivity/classifier.d.ts +6 -0
  202. package/dist/defence/sensitivity/classifier.d.ts.map +1 -0
  203. package/dist/defence/sensitivity/classifier.js +50 -0
  204. package/dist/defence/sensitivity/classifier.js.map +1 -0
  205. package/dist/defence/sensitivity/index.d.ts +11 -0
  206. package/dist/defence/sensitivity/index.d.ts.map +1 -0
  207. package/dist/defence/sensitivity/index.js +13 -0
  208. package/dist/defence/sensitivity/index.js.map +1 -0
  209. package/dist/defence/sensitivity/patterns.d.ts +14 -0
  210. package/dist/defence/sensitivity/patterns.d.ts.map +1 -0
  211. package/dist/defence/sensitivity/patterns.js +67 -0
  212. package/dist/defence/sensitivity/patterns.js.map +1 -0
  213. package/dist/defence/sensitivity/redaction.d.ts +17 -0
  214. package/dist/defence/sensitivity/redaction.d.ts.map +1 -0
  215. package/dist/defence/sensitivity/redaction.js +47 -0
  216. package/dist/defence/sensitivity/redaction.js.map +1 -0
  217. package/dist/defence/trust/index.d.ts +3 -0
  218. package/dist/defence/trust/index.d.ts.map +1 -0
  219. package/dist/defence/trust/index.js +3 -0
  220. package/dist/defence/trust/index.js.map +1 -0
  221. package/dist/defence/trust/recall-filter.d.ts +10 -0
  222. package/dist/defence/trust/recall-filter.d.ts.map +1 -0
  223. package/dist/defence/trust/recall-filter.js +38 -0
  224. package/dist/defence/trust/recall-filter.js.map +1 -0
  225. package/dist/defence/trust/source-scorer.d.ts +6 -0
  226. package/dist/defence/trust/source-scorer.d.ts.map +1 -0
  227. package/dist/defence/trust/source-scorer.js +34 -0
  228. package/dist/defence/trust/source-scorer.js.map +1 -0
  229. package/dist/defence/types.d.ts +88 -0
  230. package/dist/defence/types.d.ts.map +1 -0
  231. package/dist/defence/types.js +15 -0
  232. package/dist/defence/types.js.map +1 -0
  233. package/dist/embeddings/generator.d.ts +20 -0
  234. package/dist/embeddings/generator.d.ts.map +1 -0
  235. package/dist/embeddings/generator.js +83 -0
  236. package/dist/embeddings/generator.js.map +1 -0
  237. package/dist/embeddings/index.d.ts +2 -0
  238. package/dist/embeddings/index.d.ts.map +1 -0
  239. package/dist/embeddings/index.js +2 -0
  240. package/dist/embeddings/index.js.map +1 -0
  241. package/dist/errors.d.ts +74 -0
  242. package/dist/errors.d.ts.map +1 -0
  243. package/dist/errors.js +131 -0
  244. package/dist/errors.js.map +1 -0
  245. package/dist/graph/backfill.d.ts +6 -0
  246. package/dist/graph/backfill.d.ts.map +1 -0
  247. package/dist/graph/backfill.js +33 -0
  248. package/dist/graph/backfill.js.map +1 -0
  249. package/dist/graph/extract.d.ts +21 -0
  250. package/dist/graph/extract.d.ts.map +1 -0
  251. package/dist/graph/extract.js +231 -0
  252. package/dist/graph/extract.js.map +1 -0
  253. package/dist/graph/resolve.d.ts +6 -0
  254. package/dist/graph/resolve.d.ts.map +1 -0
  255. package/dist/graph/resolve.js +126 -0
  256. package/dist/graph/resolve.js.map +1 -0
  257. package/dist/index.d.ts +31 -0
  258. package/dist/index.d.ts.map +1 -0
  259. package/dist/index.js +248 -0
  260. package/dist/index.js.map +1 -0
  261. package/dist/memory/activation.d.ts +69 -0
  262. package/dist/memory/activation.d.ts.map +1 -0
  263. package/dist/memory/activation.js +168 -0
  264. package/dist/memory/activation.js.map +1 -0
  265. package/dist/memory/consolidate.d.ts +98 -0
  266. package/dist/memory/consolidate.d.ts.map +1 -0
  267. package/dist/memory/consolidate.js +511 -0
  268. package/dist/memory/consolidate.js.map +1 -0
  269. package/dist/memory/contradiction.d.ts +69 -0
  270. package/dist/memory/contradiction.d.ts.map +1 -0
  271. package/dist/memory/contradiction.js +286 -0
  272. package/dist/memory/contradiction.js.map +1 -0
  273. package/dist/memory/decay.d.ts +62 -0
  274. package/dist/memory/decay.d.ts.map +1 -0
  275. package/dist/memory/decay.js +184 -0
  276. package/dist/memory/decay.js.map +1 -0
  277. package/dist/memory/salience.d.ts +36 -0
  278. package/dist/memory/salience.d.ts.map +1 -0
  279. package/dist/memory/salience.js +216 -0
  280. package/dist/memory/salience.js.map +1 -0
  281. package/dist/memory/similarity.d.ts +57 -0
  282. package/dist/memory/similarity.d.ts.map +1 -0
  283. package/dist/memory/similarity.js +114 -0
  284. package/dist/memory/similarity.js.map +1 -0
  285. package/dist/memory/store.d.ts +179 -0
  286. package/dist/memory/store.d.ts.map +1 -0
  287. package/dist/memory/store.js +1184 -0
  288. package/dist/memory/store.js.map +1 -0
  289. package/dist/memory/types.d.ts +97 -0
  290. package/dist/memory/types.d.ts.map +1 -0
  291. package/dist/memory/types.js +30 -0
  292. package/dist/memory/types.js.map +1 -0
  293. package/dist/server.d.ts +12 -0
  294. package/dist/server.d.ts.map +1 -0
  295. package/dist/server.js +568 -0
  296. package/dist/server.js.map +1 -0
  297. package/dist/service/install.d.ts +15 -0
  298. package/dist/service/install.d.ts.map +1 -0
  299. package/dist/service/install.js +178 -0
  300. package/dist/service/install.js.map +1 -0
  301. package/dist/service/templates.d.ts +13 -0
  302. package/dist/service/templates.d.ts.map +1 -0
  303. package/dist/service/templates.js +58 -0
  304. package/dist/service/templates.js.map +1 -0
  305. package/dist/setup/claude-md.d.ts +12 -0
  306. package/dist/setup/claude-md.d.ts.map +1 -0
  307. package/dist/setup/claude-md.js +68 -0
  308. package/dist/setup/claude-md.js.map +1 -0
  309. package/dist/setup/clawdbot.d.ts +15 -0
  310. package/dist/setup/clawdbot.d.ts.map +1 -0
  311. package/dist/setup/clawdbot.js +118 -0
  312. package/dist/setup/clawdbot.js.map +1 -0
  313. package/dist/setup/doctor.d.ts +5 -0
  314. package/dist/setup/doctor.d.ts.map +1 -0
  315. package/dist/setup/doctor.js +141 -0
  316. package/dist/setup/doctor.js.map +1 -0
  317. package/dist/setup/hooks.d.ts +6 -0
  318. package/dist/setup/hooks.d.ts.map +1 -0
  319. package/dist/setup/hooks.js +36 -0
  320. package/dist/setup/hooks.js.map +1 -0
  321. package/dist/setup/migrate.d.ts +16 -0
  322. package/dist/setup/migrate.d.ts.map +1 -0
  323. package/dist/setup/migrate.js +164 -0
  324. package/dist/setup/migrate.js.map +1 -0
  325. package/dist/setup/settings-hooks.d.ts +7 -0
  326. package/dist/setup/settings-hooks.d.ts.map +1 -0
  327. package/dist/setup/settings-hooks.js +83 -0
  328. package/dist/setup/settings-hooks.js.map +1 -0
  329. package/dist/setup/uninstall.d.ts +12 -0
  330. package/dist/setup/uninstall.d.ts.map +1 -0
  331. package/dist/setup/uninstall.js +125 -0
  332. package/dist/setup/uninstall.js.map +1 -0
  333. package/dist/tools/context.d.ts +135 -0
  334. package/dist/tools/context.d.ts.map +1 -0
  335. package/dist/tools/context.js +273 -0
  336. package/dist/tools/context.js.map +1 -0
  337. package/dist/tools/forget.d.ts +53 -0
  338. package/dist/tools/forget.d.ts.map +1 -0
  339. package/dist/tools/forget.js +179 -0
  340. package/dist/tools/forget.js.map +1 -0
  341. package/dist/tools/graph.d.ts +46 -0
  342. package/dist/tools/graph.d.ts.map +1 -0
  343. package/dist/tools/graph.js +206 -0
  344. package/dist/tools/graph.js.map +1 -0
  345. package/dist/tools/recall.d.ts +79 -0
  346. package/dist/tools/recall.d.ts.map +1 -0
  347. package/dist/tools/recall.js +156 -0
  348. package/dist/tools/recall.js.map +1 -0
  349. package/dist/tools/remember.d.ts +83 -0
  350. package/dist/tools/remember.d.ts.map +1 -0
  351. package/dist/tools/remember.js +151 -0
  352. package/dist/tools/remember.js.map +1 -0
  353. package/dist/worker/brain-worker.d.ts +100 -0
  354. package/dist/worker/brain-worker.d.ts.map +1 -0
  355. package/dist/worker/brain-worker.js +283 -0
  356. package/dist/worker/brain-worker.js.map +1 -0
  357. package/dist/worker/link-discovery.d.ts +47 -0
  358. package/dist/worker/link-discovery.d.ts.map +1 -0
  359. package/dist/worker/link-discovery.js +103 -0
  360. package/dist/worker/link-discovery.js.map +1 -0
  361. package/dist/worker/predictive-consolidation.d.ts +46 -0
  362. package/dist/worker/predictive-consolidation.d.ts.map +1 -0
  363. package/dist/worker/predictive-consolidation.js +110 -0
  364. package/dist/worker/predictive-consolidation.js.map +1 -0
  365. package/dist/worker/types.d.ts +91 -0
  366. package/dist/worker/types.d.ts.map +1 -0
  367. package/dist/worker/types.js +22 -0
  368. package/dist/worker/types.js.map +1 -0
  369. package/hooks/clawdbot/cortex-memory/HOOK.md +71 -0
  370. package/hooks/clawdbot/cortex-memory/handler.js +279 -0
  371. package/package.json +73 -0
  372. package/scripts/pre-compact-hook.mjs +716 -0
  373. package/scripts/session-end-hook.mjs +548 -0
  374. package/scripts/session-start-hook.mjs +221 -0
  375. package/scripts/start-dashboard.sh +41 -0
  376. package/scripts/stop-dashboard.sh +21 -0
  377. package/scripts/stop-hook.mjs +163 -0
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Salience Detection System
3
+ *
4
+ * Determines what information is worth remembering, like how the human brain
5
+ * filters important from unimportant information.
6
+ */
7
+ // Keywords that indicate high-importance content
8
+ const ARCHITECTURE_KEYWORDS = [
9
+ 'architecture', 'design', 'pattern', 'structure', 'system',
10
+ 'database', 'api', 'schema', 'model', 'framework', 'stack',
11
+ 'microservice', 'monolith', 'serverless', 'infrastructure'
12
+ ];
13
+ const ERROR_KEYWORDS = [
14
+ 'error', 'bug', 'fix', 'issue', 'problem', 'crash', 'fail',
15
+ 'exception', 'debug', 'resolve', 'solution', 'workaround'
16
+ ];
17
+ const PREFERENCE_KEYWORDS = [
18
+ 'prefer', 'always', 'never', 'style', 'convention', 'standard',
19
+ 'like', 'want', 'should', 'must', 'require'
20
+ ];
21
+ const PATTERN_KEYWORDS = [
22
+ 'pattern', 'practice', 'approach', 'method', 'technique',
23
+ 'implementation', 'strategy', 'algorithm', 'workflow'
24
+ ];
25
+ const EMOTIONAL_MARKERS = [
26
+ 'important', 'critical', 'crucial', 'essential', 'key',
27
+ 'finally', 'breakthrough', 'eureka', 'aha', 'got it',
28
+ 'frustrating', 'annoying', 'tricky', 'remember'
29
+ ];
30
+ // Code reference patterns
31
+ const CODE_REFERENCE_PATTERNS = [
32
+ /\b[A-Z][a-zA-Z]*\.[a-zA-Z]+\b/, // Class.method
33
+ /\b[a-z_][a-zA-Z0-9_]*\.(ts|js|py|go|rs)\b/, // filename.ext
34
+ /`[^`]+`/, // backtick code
35
+ /\b(function|class|interface|type|const|let|var)\s+\w+/i, // declarations
36
+ /\bline\s*\d+\b/i, // line references
37
+ /\b(src|lib|app|components?)\/\S+/, // path references
38
+ ];
39
+ /**
40
+ * Calculate salience score based on content analysis
41
+ */
42
+ export function calculateSalience(input) {
43
+ const factors = analyzeSalienceFactors(input);
44
+ return computeSalienceScore(factors);
45
+ }
46
+ /**
47
+ * Analyze content to extract salience factors
48
+ */
49
+ export function analyzeSalienceFactors(input) {
50
+ const text = `${input.title} ${input.content}`.toLowerCase();
51
+ return {
52
+ explicitRequest: detectExplicitRequest(text),
53
+ isArchitectureDecision: detectKeywords(text, ARCHITECTURE_KEYWORDS),
54
+ isErrorResolution: detectKeywords(text, ERROR_KEYWORDS),
55
+ isCodePattern: detectKeywords(text, PATTERN_KEYWORDS),
56
+ isUserPreference: detectKeywords(text, PREFERENCE_KEYWORDS),
57
+ mentionCount: countMentions(text),
58
+ hasCodeReference: detectCodeReferences(input.content),
59
+ emotionalMarkers: detectKeywords(text, EMOTIONAL_MARKERS),
60
+ };
61
+ }
62
+ /**
63
+ * Compute final salience score from factors
64
+ */
65
+ export function computeSalienceScore(factors) {
66
+ let score = 0.25; // Base score (lowered from 0.4 so trivial notes don't appear important)
67
+ // Weight each factor
68
+ if (factors.explicitRequest)
69
+ score += 0.5; // Highest weight
70
+ if (factors.isArchitectureDecision)
71
+ score += 0.4;
72
+ if (factors.isErrorResolution)
73
+ score += 0.35;
74
+ if (factors.isCodePattern)
75
+ score += 0.25;
76
+ if (factors.isUserPreference)
77
+ score += 0.25;
78
+ if (factors.hasCodeReference)
79
+ score += 0.15;
80
+ if (factors.emotionalMarkers)
81
+ score += 0.2;
82
+ // Mention count bonus (diminishing returns)
83
+ if (factors.mentionCount > 1) {
84
+ score += Math.min(0.3, Math.log2(factors.mentionCount) * 0.1);
85
+ }
86
+ // Cap at 1.0
87
+ return Math.min(1.0, score);
88
+ }
89
+ /**
90
+ * Count how many keyword mentions appear in the text
91
+ */
92
+ function countMentions(text) {
93
+ const allKeywords = [
94
+ ...ARCHITECTURE_KEYWORDS, ...ERROR_KEYWORDS,
95
+ ...PREFERENCE_KEYWORDS, ...PATTERN_KEYWORDS
96
+ ];
97
+ let count = 0;
98
+ const lower = text.toLowerCase();
99
+ for (const kw of allKeywords) {
100
+ if (lower.includes(kw))
101
+ count++;
102
+ }
103
+ return Math.max(1, count);
104
+ }
105
+ /**
106
+ * Detect if user explicitly requested to remember
107
+ */
108
+ function detectExplicitRequest(text) {
109
+ const patterns = [
110
+ /\bremember\s+(this|that)\b/i,
111
+ /\bdon'?t\s+forget\b/i,
112
+ /\bkeep\s+(in\s+)?mind\b/i,
113
+ /\bnote\s+(this|that)\b/i,
114
+ /\bsave\s+(this|that)\b/i,
115
+ /\bstore\s+(this|that)\b/i,
116
+ /\bimportant[:\s]/i,
117
+ /\bfor\s+future\s+reference\b/i,
118
+ ];
119
+ return patterns.some(pattern => pattern.test(text));
120
+ }
121
+ /**
122
+ * Detect presence of keywords in text
123
+ */
124
+ function detectKeywords(text, keywords) {
125
+ return keywords.some(keyword => text.includes(keyword.toLowerCase()));
126
+ }
127
+ /**
128
+ * Detect code references in content
129
+ */
130
+ function detectCodeReferences(content) {
131
+ return CODE_REFERENCE_PATTERNS.some(pattern => pattern.test(content));
132
+ }
133
+ /**
134
+ * Suggest a category based on content analysis
135
+ */
136
+ export function suggestCategory(input) {
137
+ const text = `${input.title} ${input.content}`.toLowerCase();
138
+ if (detectKeywords(text, ARCHITECTURE_KEYWORDS))
139
+ return 'architecture';
140
+ if (detectKeywords(text, ERROR_KEYWORDS))
141
+ return 'error';
142
+ if (detectKeywords(text, PREFERENCE_KEYWORDS))
143
+ return 'preference';
144
+ if (detectKeywords(text, PATTERN_KEYWORDS))
145
+ return 'pattern';
146
+ // Check for TODO patterns
147
+ if (/\b(todo|fixme|hack|xxx)\b/i.test(text))
148
+ return 'todo';
149
+ // Check for learning patterns
150
+ if (/\b(learned?|discovered?|realized?|found\s+out)\b/i.test(text))
151
+ return 'learning';
152
+ // Check for relationship patterns
153
+ if (/\b(depends?\s+on|requires?|uses?|imports?|extends?)\b/i.test(text))
154
+ return 'relationship';
155
+ // Default to note
156
+ return 'note';
157
+ }
158
+ /**
159
+ * Extract tags from content
160
+ */
161
+ export function extractTags(input) {
162
+ const tags = new Set(input.tags || []);
163
+ const text = `${input.title} ${input.content}`;
164
+ // Extract hashtags
165
+ const hashtagMatches = text.match(/#[a-zA-Z][a-zA-Z0-9_-]*/g);
166
+ if (hashtagMatches) {
167
+ hashtagMatches.forEach(tag => tags.add(tag.slice(1).toLowerCase()));
168
+ }
169
+ // Extract common tech terms
170
+ const techTerms = [
171
+ 'react', 'vue', 'angular', 'node', 'python', 'typescript', 'javascript',
172
+ 'api', 'database', 'sql', 'nosql', 'mongodb', 'postgresql', 'mysql',
173
+ 'docker', 'kubernetes', 'aws', 'gcp', 'azure', 'git', 'ci/cd',
174
+ 'testing', 'auth', 'security', 'performance', 'caching'
175
+ ];
176
+ const lowerText = text.toLowerCase();
177
+ techTerms.forEach(term => {
178
+ if (lowerText.includes(term)) {
179
+ tags.add(term);
180
+ }
181
+ });
182
+ return Array.from(tags).slice(0, 10); // Limit to 10 tags
183
+ }
184
+ /**
185
+ * Analyze if content is worth remembering at all
186
+ */
187
+ export function isWorthRemembering(input, minSalience = 0.3) {
188
+ const salience = calculateSalience(input);
189
+ return salience >= minSalience;
190
+ }
191
+ /**
192
+ * Get a human-readable explanation of why something was considered important
193
+ */
194
+ export function explainSalience(factors) {
195
+ const reasons = [];
196
+ if (factors.explicitRequest)
197
+ reasons.push('explicitly requested to remember');
198
+ if (factors.isArchitectureDecision)
199
+ reasons.push('architecture decision');
200
+ if (factors.isErrorResolution)
201
+ reasons.push('error resolution');
202
+ if (factors.isCodePattern)
203
+ reasons.push('code pattern');
204
+ if (factors.isUserPreference)
205
+ reasons.push('user preference');
206
+ if (factors.hasCodeReference)
207
+ reasons.push('references specific code');
208
+ if (factors.emotionalMarkers)
209
+ reasons.push('marked as important');
210
+ if (factors.mentionCount > 1)
211
+ reasons.push(`mentioned ${factors.mentionCount} times`);
212
+ if (reasons.length === 0)
213
+ return 'general note';
214
+ return reasons.join(', ');
215
+ }
216
+ //# sourceMappingURL=salience.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"salience.js","sourceRoot":"","sources":["../../src/memory/salience.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Text Similarity Utilities
3
+ *
4
+ * Provides Jaccard similarity and related text comparison functions
5
+ * for memory enrichment and contradiction detection.
6
+ *
7
+ * Phase 3 Organic Brain Feature
8
+ */
9
+ /**
10
+ * Tokenize text into a set of normalized words
11
+ * Removes punctuation, lowercases, and filters short words
12
+ */
13
+ export declare function tokenize(text: string): Set<string>;
14
+ /**
15
+ * Calculate Jaccard similarity between two texts
16
+ * Returns a value between 0 (completely different) and 1 (identical)
17
+ *
18
+ * Jaccard Index = |A ∩ B| / |A ∪ B|
19
+ *
20
+ * @param textA - First text to compare
21
+ * @param textB - Second text to compare
22
+ * @returns Similarity score between 0 and 1
23
+ */
24
+ export declare function jaccardSimilarity(textA: string, textB: string): number;
25
+ /**
26
+ * Extract key phrases/concepts from text
27
+ * Used for topic comparison in contradiction detection
28
+ *
29
+ * Extracts:
30
+ * - Quoted phrases ("like this")
31
+ * - Backticked code/terms (`like_this`)
32
+ * - Capitalized terms (LikeThis)
33
+ *
34
+ * @param text - Text to extract key phrases from
35
+ * @returns Array of unique key phrases (lowercased)
36
+ */
37
+ export declare function extractKeyPhrases(text: string): string[];
38
+ /**
39
+ * Calculate word overlap between two texts
40
+ * Returns the count of shared words
41
+ *
42
+ * @param textA - First text
43
+ * @param textB - Second text
44
+ * @returns Number of shared words
45
+ */
46
+ export declare function wordOverlap(textA: string, textB: string): number;
47
+ /**
48
+ * Check if two texts share significant content
49
+ * Quick check before running full similarity calculation
50
+ *
51
+ * @param textA - First text
52
+ * @param textB - Second text
53
+ * @param minOverlap - Minimum word overlap required
54
+ * @returns True if texts share at least minOverlap words
55
+ */
56
+ export declare function hasSignificantOverlap(textA: string, textB: string, minOverlap?: number): boolean;
57
+ //# sourceMappingURL=similarity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"similarity.d.ts","sourceRoot":"","sources":["../../src/memory/similarity.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAQlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CA4BxD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAUhE;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,UAAU,GAAE,MAAU,GACrB,OAAO,CAET"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Text Similarity Utilities
3
+ *
4
+ * Provides Jaccard similarity and related text comparison functions
5
+ * for memory enrichment and contradiction detection.
6
+ *
7
+ * Phase 3 Organic Brain Feature
8
+ */
9
+ /**
10
+ * Tokenize text into a set of normalized words
11
+ * Removes punctuation, lowercases, and filters short words
12
+ */
13
+ export function tokenize(text) {
14
+ return new Set(text
15
+ .toLowerCase()
16
+ .replace(/[^\w\s]/g, ' ') // Remove punctuation
17
+ .split(/\s+/)
18
+ .filter(word => word.length > 2) // Filter very short words
19
+ );
20
+ }
21
+ /**
22
+ * Calculate Jaccard similarity between two texts
23
+ * Returns a value between 0 (completely different) and 1 (identical)
24
+ *
25
+ * Jaccard Index = |A ∩ B| / |A ∪ B|
26
+ *
27
+ * @param textA - First text to compare
28
+ * @param textB - Second text to compare
29
+ * @returns Similarity score between 0 and 1
30
+ */
31
+ export function jaccardSimilarity(textA, textB) {
32
+ const setA = tokenize(textA);
33
+ const setB = tokenize(textB);
34
+ if (setA.size === 0 && setB.size === 0)
35
+ return 1.0;
36
+ if (setA.size === 0 || setB.size === 0)
37
+ return 0.0;
38
+ // Calculate intersection
39
+ let intersection = 0;
40
+ for (const word of setA) {
41
+ if (setB.has(word))
42
+ intersection++;
43
+ }
44
+ // Calculate union: |A| + |B| - |A ∩ B|
45
+ const union = setA.size + setB.size - intersection;
46
+ return intersection / union;
47
+ }
48
+ /**
49
+ * Extract key phrases/concepts from text
50
+ * Used for topic comparison in contradiction detection
51
+ *
52
+ * Extracts:
53
+ * - Quoted phrases ("like this")
54
+ * - Backticked code/terms (`like_this`)
55
+ * - Capitalized terms (LikeThis)
56
+ *
57
+ * @param text - Text to extract key phrases from
58
+ * @returns Array of unique key phrases (lowercased)
59
+ */
60
+ export function extractKeyPhrases(text) {
61
+ const phrases = [];
62
+ // Extract quoted phrases
63
+ const quotedMatches = text.match(/"[^"]+"/g);
64
+ if (quotedMatches) {
65
+ phrases.push(...quotedMatches.map(m => m.replace(/"/g, '').toLowerCase()));
66
+ }
67
+ // Extract backticked code/terms
68
+ const backtickMatches = text.match(/`[^`]+`/g);
69
+ if (backtickMatches) {
70
+ phrases.push(...backtickMatches.map(m => m.replace(/`/g, '').toLowerCase()));
71
+ }
72
+ // Extract capitalized terms (likely proper nouns/tech terms)
73
+ const capitalMatches = text.match(/\b[A-Z][a-zA-Z0-9]+\b/g);
74
+ if (capitalMatches) {
75
+ phrases.push(...capitalMatches.map(m => m.toLowerCase()));
76
+ }
77
+ // Extract common tech terms that might not be capitalized
78
+ const techTerms = text.match(/\b(?:api|sql|css|html|json|xml|http|rest|graphql|docker|kubernetes|redis|postgres|sqlite|mongodb|react|vue|angular|node|npm|yarn|git|github|aws|gcp|azure)\b/gi);
79
+ if (techTerms) {
80
+ phrases.push(...techTerms.map(m => m.toLowerCase()));
81
+ }
82
+ return [...new Set(phrases)];
83
+ }
84
+ /**
85
+ * Calculate word overlap between two texts
86
+ * Returns the count of shared words
87
+ *
88
+ * @param textA - First text
89
+ * @param textB - Second text
90
+ * @returns Number of shared words
91
+ */
92
+ export function wordOverlap(textA, textB) {
93
+ const setA = tokenize(textA);
94
+ const setB = tokenize(textB);
95
+ let overlap = 0;
96
+ for (const word of setA) {
97
+ if (setB.has(word))
98
+ overlap++;
99
+ }
100
+ return overlap;
101
+ }
102
+ /**
103
+ * Check if two texts share significant content
104
+ * Quick check before running full similarity calculation
105
+ *
106
+ * @param textA - First text
107
+ * @param textB - Second text
108
+ * @param minOverlap - Minimum word overlap required
109
+ * @returns True if texts share at least minOverlap words
110
+ */
111
+ export function hasSignificantOverlap(textA, textB, minOverlap = 3) {
112
+ return wordOverlap(textA, textB) >= minOverlap;
113
+ }
114
+ //# sourceMappingURL=similarity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"similarity.js","sourceRoot":"","sources":["../../src/memory/similarity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Memory Store
3
+ *
4
+ * Core CRUD operations for the memory database.
5
+ * Handles storage, retrieval, and management of memories.
6
+ */
7
+ import { Memory, MemoryInput, MemoryType, SearchOptions, SearchResult, MemoryConfig } from './types.js';
8
+ import type { DefenceSource } from '../defence/types.js';
9
+ /**
10
+ * Get truncation info from the last addMemory call
11
+ */
12
+ export declare function getLastTruncationInfo(): {
13
+ wasTruncated: boolean;
14
+ originalLength: number;
15
+ truncatedLength: number;
16
+ } | null;
17
+ /**
18
+ * Convert database row to Memory object
19
+ */
20
+ export declare function rowToMemory(row: Record<string, unknown>): Memory;
21
+ /**
22
+ * Error thrown when memory creation is paused
23
+ */
24
+ export declare class MemoryPausedError extends Error {
25
+ constructor();
26
+ }
27
+ /**
28
+ * Error thrown when memory is blocked by the defence firewall
29
+ */
30
+ export declare class MemoryBlockedError extends Error {
31
+ constructor(reason: string);
32
+ }
33
+ /**
34
+ * Add a new memory
35
+ */
36
+ export declare function addMemory(input: MemoryInput, config?: MemoryConfig, source?: DefenceSource): Memory;
37
+ /**
38
+ * Get a memory by ID
39
+ */
40
+ export declare function getMemoryById(id: number): Memory | null;
41
+ /**
42
+ * Update a memory
43
+ */
44
+ export declare function updateMemory(id: number, updates: Partial<MemoryInput>): Memory | null;
45
+ /**
46
+ * Delete a memory
47
+ */
48
+ export declare function deleteMemory(id: number): boolean;
49
+ /**
50
+ * Access a memory (updates access count and timestamp, returns reinforced memory)
51
+ */
52
+ export declare function accessMemory(id: number, config?: MemoryConfig): Memory | null;
53
+ /**
54
+ * Reinforce a memory that appeared in search results
55
+ * Gives a small salience boost with diminishing returns based on access count.
56
+ * ORGANIC FEATURE: Searched memories get reinforced, closing the feedback loop
57
+ * so frequently-found memories grow stronger over time.
58
+ */
59
+ export declare function reinforceFromSearch(memoryId: number): void;
60
+ /**
61
+ * Enrichment result indicating what happened
62
+ */
63
+ export interface EnrichmentResult {
64
+ enriched: boolean;
65
+ reason: string;
66
+ }
67
+ /**
68
+ * Enrich a memory with additional context
69
+ *
70
+ * This adds timestamped context to a memory when:
71
+ * 1. The new context is sufficiently related but different (new information)
72
+ * 2. The memory hasn't been enriched recently (cooldown)
73
+ * 3. The content won't exceed the size limit
74
+ *
75
+ * ORGANIC FEATURE: Memories grow with new context over time,
76
+ * mimicking how human memories are reconsolidated with new information
77
+ *
78
+ * @param memoryId - ID of the memory to enrich
79
+ * @param newContext - New context to add
80
+ * @param contextType - Type of context ('search' | 'access' | 'related')
81
+ * @returns EnrichmentResult indicating success or failure with reason
82
+ */
83
+ export declare function enrichMemory(memoryId: number, newContext: string, contextType?: 'search' | 'access' | 'related'): EnrichmentResult;
84
+ /**
85
+ * Clear enrichment cooldown for a memory (for testing)
86
+ */
87
+ export declare function clearEnrichmentCooldown(memoryId: number): void;
88
+ /**
89
+ * Get enrichment cooldown status for a memory
90
+ */
91
+ export declare function getEnrichmentCooldownStatus(memoryId: number): {
92
+ onCooldown: boolean;
93
+ remainingMs: number;
94
+ };
95
+ /**
96
+ * Update persisted decay scores for all memories
97
+ * Called during consolidation and periodically by the API server
98
+ * Returns the number of memories updated
99
+ */
100
+ export declare function updateDecayScores(): number;
101
+ export declare function searchMemories(options: SearchOptions, config?: MemoryConfig): Promise<SearchResult[]>;
102
+ /**
103
+ * Get all memories for a project
104
+ */
105
+ export declare function getProjectMemories(project: string, config?: MemoryConfig): Memory[];
106
+ /**
107
+ * Get recent memories
108
+ */
109
+ export declare function getRecentMemories(limit?: number, project?: string): Memory[];
110
+ /**
111
+ * Get memories by type
112
+ */
113
+ export declare function getMemoriesByType(type: MemoryType, limit?: number): Memory[];
114
+ /**
115
+ * Get high-priority memories (for context injection)
116
+ */
117
+ export declare function getHighPriorityMemories(limit?: number, project?: string): Memory[];
118
+ /**
119
+ * Promote a memory from short-term to long-term
120
+ */
121
+ export declare function promoteMemory(id: number): Memory | null;
122
+ /**
123
+ * Bulk delete decayed memories
124
+ */
125
+ export declare function cleanupDecayedMemories(config?: MemoryConfig): number;
126
+ /**
127
+ * Get memory statistics
128
+ */
129
+ export declare function getMemoryStats(project?: string): {
130
+ total: number;
131
+ shortTerm: number;
132
+ longTerm: number;
133
+ episodic: number;
134
+ byCategory: Record<string, number>;
135
+ averageSalience: number;
136
+ };
137
+ export type RelationshipType = 'references' | 'extends' | 'contradicts' | 'related';
138
+ export interface MemoryLink {
139
+ id: number;
140
+ sourceId: number;
141
+ targetId: number;
142
+ relationship: RelationshipType;
143
+ strength: number;
144
+ createdAt: Date;
145
+ }
146
+ /**
147
+ * Create a link between two memories
148
+ */
149
+ export declare function createMemoryLink(sourceId: number, targetId: number, relationship: RelationshipType, strength?: number): MemoryLink | null;
150
+ /**
151
+ * Get all memories related to a given memory
152
+ */
153
+ export declare function getRelatedMemories(memoryId: number): {
154
+ memory: Memory;
155
+ relationship: RelationshipType;
156
+ strength: number;
157
+ direction: 'outgoing' | 'incoming';
158
+ }[];
159
+ /**
160
+ * Delete a memory link
161
+ */
162
+ export declare function deleteMemoryLink(sourceId: number, targetId: number): boolean;
163
+ /**
164
+ * Get all memory links
165
+ */
166
+ export declare function getAllMemoryLinks(): MemoryLink[];
167
+ /**
168
+ * Detect potential relationships for a new memory
169
+ * Uses three strategies in priority order:
170
+ * 1. Tag-based linking (shared tags)
171
+ * 2. Embedding-based semantic linking (cosine similarity >= 0.6)
172
+ * 3. FTS content similarity fallback (Jaccard similarity >= 0.3)
173
+ */
174
+ export declare function detectRelationships(memory: Memory, maxResults?: number): {
175
+ targetId: number;
176
+ relationship: RelationshipType;
177
+ strength: number;
178
+ }[];
179
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"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"}