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
package/dist/index.js ADDED
@@ -0,0 +1,248 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ShieldCortex - Brain-like Memory System for Claude Code
4
+ *
5
+ * This server provides persistent, intelligent memory for Claude Code,
6
+ * solving the context compaction and session persistence problems.
7
+ *
8
+ * Usage:
9
+ * npx shieldcortex # Start MCP server (default)
10
+ * npx shieldcortex --mode mcp # Start MCP server
11
+ * npx shieldcortex --mode api # Start visualization API server
12
+ * npx shieldcortex --mode both # Start both servers
13
+ * npx shieldcortex --dashboard # Start API + Dashboard (admin panel)
14
+ * npx shieldcortex --db /path/to.db # Custom database path
15
+ * npx shieldcortex setup # Configure Claude for proactive memory use
16
+ * npx shieldcortex hook pre-compact # Run pre-compact hook (for settings.json)
17
+ * npx shieldcortex hook session-start # Run session-start hook (for settings.json)
18
+ * npx shieldcortex hook session-end # Run session-end hook (for settings.json)
19
+ * npx shieldcortex service install # Auto-start dashboard on login
20
+ * npx shieldcortex service uninstall # Remove auto-start
21
+ * npx shieldcortex service status # Check service status
22
+ * npx shieldcortex clawdbot install # Install OpenClaw/Clawdbot hook
23
+ * npx shieldcortex clawdbot uninstall # Remove OpenClaw/Clawdbot hook
24
+ * npx shieldcortex clawdbot status # Check OpenClaw hook status
25
+ * npx shieldcortex migrate # Migrate from Claude Cortex
26
+ * npx shieldcortex setup uninstall # Remove hooks + CLAUDE.md block
27
+ * npx shieldcortex uninstall # Full uninstall (service, hooks, CLAUDE.md)
28
+ * npx shieldcortex uninstall --keep-logs # Full uninstall but keep log files
29
+ */
30
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
31
+ import { spawn } from 'child_process';
32
+ import { fileURLToPath } from 'url';
33
+ import path from 'path';
34
+ import { createServer } from './server.js';
35
+ import { startVisualizationServer } from './api/visualization-server.js';
36
+ import { handleServiceCommand } from './service/install.js';
37
+ import { setupClaudeMd } from './setup/claude-md.js';
38
+ import { handleHookCommand } from './setup/hooks.js';
39
+ import { handleClawdbotCommand } from './setup/clawdbot.js';
40
+ import { createRequire } from 'module';
41
+ const require = createRequire(import.meta.url);
42
+ const pkg = require('../package.json');
43
+ // Get the directory of this file for relative paths
44
+ const __filename = fileURLToPath(import.meta.url);
45
+ const __dirname = path.dirname(__filename);
46
+ // Parse command line arguments
47
+ function parseArgs() {
48
+ const args = process.argv.slice(2);
49
+ const result = { mode: 'mcp' };
50
+ for (let i = 0; i < args.length; i++) {
51
+ if (args[i] === '--db' && args[i + 1]) {
52
+ result.dbPath = args[i + 1];
53
+ i++;
54
+ }
55
+ else if (args[i] === '--dashboard') {
56
+ result.mode = 'dashboard';
57
+ }
58
+ else if (args[i] === '--mode' && args[i + 1]) {
59
+ const mode = args[i + 1].toLowerCase();
60
+ if (mode === 'mcp' || mode === 'api' || mode === 'both' || mode === 'dashboard') {
61
+ result.mode = mode;
62
+ }
63
+ i++;
64
+ }
65
+ }
66
+ return result;
67
+ }
68
+ /**
69
+ * Start MCP server for Claude Code integration
70
+ */
71
+ async function startMcpServer(dbPath) {
72
+ // Create the MCP server
73
+ const server = createServer(dbPath);
74
+ // Connect via stdio transport
75
+ const transport = new StdioServerTransport();
76
+ await server.connect(transport);
77
+ // Handle graceful shutdown
78
+ process.on('SIGINT', async () => {
79
+ await server.close();
80
+ process.exit(0);
81
+ });
82
+ process.on('SIGTERM', async () => {
83
+ await server.close();
84
+ process.exit(0);
85
+ });
86
+ }
87
+ /**
88
+ * Start the Next.js dashboard as a child process
89
+ */
90
+ function startDashboard() {
91
+ // Dashboard is in the dashboard/ subdirectory relative to project root
92
+ // Since we're in dist/, go up one level to find dashboard/
93
+ const dashboardDir = path.resolve(__dirname, '..', 'dashboard');
94
+ console.log(`
95
+ ╔══════════════════════════════════════════════════════════════╗
96
+ ║ 🧠 ShieldCortex Dashboard ║
97
+ ╠══════════════════════════════════════════════════════════════╣
98
+ ║ Starting Next.js dashboard... ║
99
+ ║ Dashboard: http://localhost:3030 ║
100
+ ║ API: http://localhost:3001 ║
101
+ ╚══════════════════════════════════════════════════════════════╝
102
+ `);
103
+ // Start Next.js in production mode if built, otherwise dev mode
104
+ const dashboard = spawn('npm', ['run', 'start'], {
105
+ cwd: dashboardDir,
106
+ stdio: ['ignore', 'pipe', 'pipe'],
107
+ shell: true,
108
+ });
109
+ // Pipe dashboard output with prefix
110
+ dashboard.stdout?.on('data', (data) => {
111
+ const lines = data.toString().split('\n').filter((l) => l.trim());
112
+ for (const line of lines) {
113
+ console.log(`[dashboard] ${line}`);
114
+ }
115
+ });
116
+ dashboard.stderr?.on('data', (data) => {
117
+ const lines = data.toString().split('\n').filter((l) => l.trim());
118
+ for (const line of lines) {
119
+ console.error(`[dashboard] ${line}`);
120
+ }
121
+ });
122
+ dashboard.on('error', (error) => {
123
+ console.error('[dashboard] Failed to start:', error.message);
124
+ console.error('[dashboard] Make sure to run "npm run build" in the dashboard directory first.');
125
+ });
126
+ dashboard.on('exit', (code, signal) => {
127
+ if (signal) {
128
+ console.log(`[dashboard] Killed by signal ${signal}`);
129
+ }
130
+ else if (code !== 0) {
131
+ console.error(`[dashboard] Exited with code ${code}`);
132
+ }
133
+ });
134
+ return dashboard;
135
+ }
136
+ /**
137
+ * Main entry point
138
+ */
139
+ async function main() {
140
+ // Handle --version / -v
141
+ if (process.argv[2] === '--version' || process.argv[2] === '-v') {
142
+ console.log(pkg.version);
143
+ return;
144
+ }
145
+ // Handle "doctor" subcommand
146
+ if (process.argv[2] === 'doctor') {
147
+ const { handleDoctorCommand } = await import('./setup/doctor.js');
148
+ await handleDoctorCommand();
149
+ return;
150
+ }
151
+ // Handle "setup" subcommand
152
+ if (process.argv[2] === 'setup') {
153
+ if (process.argv[3] === 'uninstall') {
154
+ const { uninstallSetup } = await import('./setup/uninstall.js');
155
+ await uninstallSetup();
156
+ return;
157
+ }
158
+ const stopHook = process.argv.includes('--with-stop-hook');
159
+ await setupClaudeMd({ stopHook });
160
+ return;
161
+ }
162
+ // Handle "migrate" subcommand
163
+ if (process.argv[2] === 'migrate') {
164
+ const { handleMigrateCommand } = await import('./setup/migrate.js');
165
+ await handleMigrateCommand();
166
+ return;
167
+ }
168
+ // Handle "uninstall" subcommand
169
+ if (process.argv[2] === 'uninstall') {
170
+ const { uninstallAll } = await import('./setup/uninstall.js');
171
+ await uninstallAll({ keepLogs: process.argv.includes('--keep-logs') });
172
+ return;
173
+ }
174
+ // Handle "hook" subcommand
175
+ if (process.argv[2] === 'hook') {
176
+ await handleHookCommand(process.argv[3] || '');
177
+ return;
178
+ }
179
+ // Handle "clawdbot" subcommand
180
+ if (process.argv[2] === 'clawdbot') {
181
+ await handleClawdbotCommand(process.argv[3] || '');
182
+ return;
183
+ }
184
+ // Handle "service" subcommand before normal mode parsing
185
+ if (process.argv[2] === 'service') {
186
+ await handleServiceCommand(process.argv[3] || '');
187
+ return;
188
+ }
189
+ // Handle "graph" subcommand
190
+ if (process.argv[2] === 'graph') {
191
+ const action = process.argv[3];
192
+ if (action === 'backfill') {
193
+ const { initDatabase } = await import('./database/init.js');
194
+ const os = await import('os');
195
+ const dbPath = process.env.CLAUDE_MEMORY_DB || path.join(os.homedir(), '.shieldcortex', 'memories.db');
196
+ initDatabase(dbPath);
197
+ const { backfillGraph } = await import('./graph/backfill.js');
198
+ console.log('Backfilling knowledge graph from existing memories...');
199
+ const result = backfillGraph();
200
+ console.log(`Done! Extracted ${result.entities} new entities, ${result.triples} new triples from ${result.memoriesProcessed} memories.`);
201
+ }
202
+ else {
203
+ console.error('Unknown graph command. Available: backfill');
204
+ process.exit(1);
205
+ }
206
+ return;
207
+ }
208
+ const { dbPath, mode } = parseArgs();
209
+ let dashboardProcess = null;
210
+ if (mode === 'api') {
211
+ // API mode only - for dashboard visualization
212
+ console.log('Starting ShieldCortex in API mode...');
213
+ startVisualizationServer(dbPath);
214
+ }
215
+ else if (mode === 'dashboard') {
216
+ // Dashboard mode - API + Next.js dashboard
217
+ console.log('Starting ShieldCortex with Dashboard...');
218
+ startVisualizationServer(dbPath);
219
+ dashboardProcess = startDashboard();
220
+ // Graceful shutdown for dashboard mode
221
+ const shutdown = (signal) => {
222
+ console.log(`\nReceived ${signal}, shutting down...`);
223
+ if (dashboardProcess) {
224
+ dashboardProcess.kill('SIGTERM');
225
+ }
226
+ process.exit(0);
227
+ };
228
+ process.on('SIGINT', () => shutdown('SIGINT'));
229
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
230
+ }
231
+ else if (mode === 'both') {
232
+ // Both modes - API in background, MCP in foreground
233
+ console.log('Starting ShieldCortex in both modes...');
234
+ startVisualizationServer(dbPath);
235
+ await startMcpServer(dbPath);
236
+ }
237
+ else {
238
+ // MCP mode (default) - for Claude Code integration
239
+ await startMcpServer(dbPath);
240
+ }
241
+ }
242
+ // Run
243
+ main().catch((error) => {
244
+ // Log to stderr to avoid corrupting MCP protocol
245
+ console.error('Failed to start shieldcortex server:', error);
246
+ process.exit(1);
247
+ });
248
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Spreading Activation System
3
+ *
4
+ * Implements brain-like spreading activation where accessing a memory
5
+ * "primes" related memories, making them easier to recall.
6
+ *
7
+ * EPHEMERAL: This cache is session-only and does not persist to disk.
8
+ * Each MCP server restart starts with a fresh activation state.
9
+ *
10
+ * Based on spreading activation theory in cognitive psychology:
11
+ * - Collins & Loftus (1975) semantic network model
12
+ * - Activation spreads through associative links
13
+ * - Activation decays over time (exponential decay)
14
+ */
15
+ /**
16
+ * Activate a memory and spread activation to linked memories
17
+ *
18
+ * When a memory is accessed, it becomes fully activated (1.0).
19
+ * Linked memories receive partial activation based on link strength.
20
+ *
21
+ * @param memoryId - The ID of the memory being accessed
22
+ */
23
+ export declare function activateMemory(memoryId: number): void;
24
+ /**
25
+ * Get the activation boost for a memory in search scoring
26
+ *
27
+ * Returns 0 if memory is not activated or activation has fully decayed.
28
+ * Returns up to MAX_ACTIVATION_BOOST for fully activated memories.
29
+ *
30
+ * @param memoryId - The ID of the memory to check
31
+ * @returns Activation boost (0 to MAX_ACTIVATION_BOOST)
32
+ */
33
+ export declare function getActivationBoost(memoryId: number): number;
34
+ /**
35
+ * Get current activation level for a memory (for debugging/dashboard)
36
+ *
37
+ * @param memoryId - The ID of the memory to check
38
+ * @returns Current activation level (0-1) or null if not activated
39
+ */
40
+ export declare function getActivationLevel(memoryId: number): number | null;
41
+ /**
42
+ * Get all currently activated memories with their levels
43
+ * Useful for dashboard visualization
44
+ *
45
+ * @returns Array of {memoryId, activationLevel} for all activated memories
46
+ */
47
+ export declare function getActiveMemories(): Array<{
48
+ memoryId: number;
49
+ activationLevel: number;
50
+ }>;
51
+ /**
52
+ * Clear the activation cache
53
+ * Useful for testing or manual reset
54
+ */
55
+ export declare function clearActivationCache(): void;
56
+ /**
57
+ * Prune stale entries from the activation cache
58
+ * Call periodically to prevent memory bloat
59
+ */
60
+ export declare function pruneActivationCache(): number;
61
+ /**
62
+ * Get activation cache statistics
63
+ */
64
+ export declare function getActivationStats(): {
65
+ totalEntries: number;
66
+ activeEntries: number;
67
+ averageActivation: number;
68
+ };
69
+ //# sourceMappingURL=activation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activation.d.ts","sourceRoot":"","sources":["../../src/memory/activation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAyBH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAqCrD;AAaD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAe3D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQlE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,CAYxF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAY7C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAWA"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Spreading Activation System
3
+ *
4
+ * Implements brain-like spreading activation where accessing a memory
5
+ * "primes" related memories, making them easier to recall.
6
+ *
7
+ * EPHEMERAL: This cache is session-only and does not persist to disk.
8
+ * Each MCP server restart starts with a fresh activation state.
9
+ *
10
+ * Based on spreading activation theory in cognitive psychology:
11
+ * - Collins & Loftus (1975) semantic network model
12
+ * - Activation spreads through associative links
13
+ * - Activation decays over time (exponential decay)
14
+ */
15
+ import { getRelatedMemories } from './store.js';
16
+ /**
17
+ * In-memory activation cache
18
+ * Ephemeral - cleared on process restart
19
+ */
20
+ const activationCache = new Map();
21
+ // Configuration
22
+ const DECAY_HALF_LIFE_MINUTES = 30; // Activation halves every 30 minutes
23
+ const SPREAD_FACTOR = 0.5; // How much activation spreads (50% of link strength)
24
+ const MAX_SPREAD_DEPTH = 1; // Only spread to direct neighbors (not neighbors of neighbors)
25
+ const MAX_ACTIVATION_BOOST = 0.3; // Cap search boost at 30%
26
+ /**
27
+ * Activate a memory and spread activation to linked memories
28
+ *
29
+ * When a memory is accessed, it becomes fully activated (1.0).
30
+ * Linked memories receive partial activation based on link strength.
31
+ *
32
+ * @param memoryId - The ID of the memory being accessed
33
+ */
34
+ export function activateMemory(memoryId) {
35
+ const now = Date.now();
36
+ // Fully activate the accessed memory
37
+ activationCache.set(memoryId, {
38
+ memoryId,
39
+ activationLevel: 1.0,
40
+ timestamp: now,
41
+ });
42
+ // Spread activation to linked memories
43
+ try {
44
+ const related = getRelatedMemories(memoryId);
45
+ for (const link of related) {
46
+ // Calculate spread amount: link strength * spread factor
47
+ const spreadAmount = link.strength * SPREAD_FACTOR;
48
+ // Get existing activation (if any)
49
+ const existing = activationCache.get(link.memory.id);
50
+ const existingLevel = existing
51
+ ? getDecayedActivation(existing, now)
52
+ : 0;
53
+ // Add activation (cap at 1.0)
54
+ const newLevel = Math.min(1.0, existingLevel + spreadAmount);
55
+ activationCache.set(link.memory.id, {
56
+ memoryId: link.memory.id,
57
+ activationLevel: newLevel,
58
+ timestamp: now,
59
+ });
60
+ }
61
+ }
62
+ catch (e) {
63
+ // Don't fail memory access if spreading fails
64
+ console.error('[shieldcortex] Activation spreading failed:', e);
65
+ }
66
+ }
67
+ /**
68
+ * Calculate decayed activation level
69
+ *
70
+ * Uses exponential decay: level * 0.5^(minutes / half_life)
71
+ */
72
+ function getDecayedActivation(entry, now) {
73
+ const ageMinutes = (now - entry.timestamp) / (1000 * 60);
74
+ const decayFactor = Math.pow(0.5, ageMinutes / DECAY_HALF_LIFE_MINUTES);
75
+ return entry.activationLevel * decayFactor;
76
+ }
77
+ /**
78
+ * Get the activation boost for a memory in search scoring
79
+ *
80
+ * Returns 0 if memory is not activated or activation has fully decayed.
81
+ * Returns up to MAX_ACTIVATION_BOOST for fully activated memories.
82
+ *
83
+ * @param memoryId - The ID of the memory to check
84
+ * @returns Activation boost (0 to MAX_ACTIVATION_BOOST)
85
+ */
86
+ export function getActivationBoost(memoryId) {
87
+ const entry = activationCache.get(memoryId);
88
+ if (!entry)
89
+ return 0;
90
+ const now = Date.now();
91
+ const decayedLevel = getDecayedActivation(entry, now);
92
+ // If activation is negligible, clean up the entry
93
+ if (decayedLevel < 0.01) {
94
+ activationCache.delete(memoryId);
95
+ return 0;
96
+ }
97
+ // Scale to max boost (e.g., 1.0 activation -> 0.2 boost)
98
+ return decayedLevel * MAX_ACTIVATION_BOOST;
99
+ }
100
+ /**
101
+ * Get current activation level for a memory (for debugging/dashboard)
102
+ *
103
+ * @param memoryId - The ID of the memory to check
104
+ * @returns Current activation level (0-1) or null if not activated
105
+ */
106
+ export function getActivationLevel(memoryId) {
107
+ const entry = activationCache.get(memoryId);
108
+ if (!entry)
109
+ return null;
110
+ const decayedLevel = getDecayedActivation(entry, Date.now());
111
+ if (decayedLevel < 0.01)
112
+ return null;
113
+ return decayedLevel;
114
+ }
115
+ /**
116
+ * Get all currently activated memories with their levels
117
+ * Useful for dashboard visualization
118
+ *
119
+ * @returns Array of {memoryId, activationLevel} for all activated memories
120
+ */
121
+ export function getActiveMemories() {
122
+ const now = Date.now();
123
+ const active = [];
124
+ for (const entry of activationCache.values()) {
125
+ const level = getDecayedActivation(entry, now);
126
+ if (level >= 0.01) {
127
+ active.push({ memoryId: entry.memoryId, activationLevel: level });
128
+ }
129
+ }
130
+ return active.sort((a, b) => b.activationLevel - a.activationLevel);
131
+ }
132
+ /**
133
+ * Clear the activation cache
134
+ * Useful for testing or manual reset
135
+ */
136
+ export function clearActivationCache() {
137
+ activationCache.clear();
138
+ }
139
+ /**
140
+ * Prune stale entries from the activation cache
141
+ * Call periodically to prevent memory bloat
142
+ */
143
+ export function pruneActivationCache() {
144
+ const now = Date.now();
145
+ let pruned = 0;
146
+ for (const [memoryId, entry] of activationCache) {
147
+ if (getDecayedActivation(entry, now) < 0.01) {
148
+ activationCache.delete(memoryId);
149
+ pruned++;
150
+ }
151
+ }
152
+ return pruned;
153
+ }
154
+ /**
155
+ * Get activation cache statistics
156
+ */
157
+ export function getActivationStats() {
158
+ const active = getActiveMemories();
159
+ const avgActivation = active.length > 0
160
+ ? active.reduce((sum, a) => sum + a.activationLevel, 0) / active.length
161
+ : 0;
162
+ return {
163
+ totalEntries: activationCache.size,
164
+ activeEntries: active.length,
165
+ averageActivation: avgActivation,
166
+ };
167
+ }
168
+ //# sourceMappingURL=activation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activation.js","sourceRoot":"","sources":["../../src/memory/activation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Memory Consolidation System
3
+ *
4
+ * Like sleep consolidation in human brains, this system:
5
+ * - Moves worthy short-term memories to long-term storage
6
+ * - Strengthens frequently accessed memories
7
+ * - Cleans up decayed/irrelevant memories
8
+ * - Merges similar memories to reduce redundancy
9
+ */
10
+ import { Memory, MemoryConfig, ConsolidationResult, ContextSummary } from './types.js';
11
+ /**
12
+ * Run full consolidation process
13
+ * This is like the brain's sleep consolidation - should be run periodically
14
+ */
15
+ export declare function consolidate(config?: MemoryConfig): ConsolidationResult;
16
+ /**
17
+ * Enforce maximum memory limits
18
+ * Removes lowest-priority memories when limits are exceeded
19
+ */
20
+ export declare function enforceMemoryLimits(config?: MemoryConfig): number;
21
+ /**
22
+ * Find and merge similar short-term memories into coherent long-term entries.
23
+ * Groups memories by project|category, then clusters by Jaccard similarity
24
+ * on content (0.6 weight) + title (0.4 weight).
25
+ * Returns count of deleted (merged) memories.
26
+ */
27
+ export declare function mergeSimilarMemories(project?: string, similarityThreshold?: number): number;
28
+ /**
29
+ * Generate a context summary for session start
30
+ * Provides a high-level view of relevant memories
31
+ */
32
+ export declare function generateContextSummary(project?: string, config?: MemoryConfig): Promise<ContextSummary>;
33
+ /**
34
+ * Format context summary as a readable string
35
+ */
36
+ export declare function formatContextSummary(summary: ContextSummary): string;
37
+ /**
38
+ * Start a new session
39
+ * Creates a session record and returns relevant context
40
+ */
41
+ export declare function startSession(project?: string): Promise<{
42
+ sessionId: number;
43
+ context: ContextSummary;
44
+ }>;
45
+ /**
46
+ * End a session
47
+ * Updates session record with summary
48
+ */
49
+ export declare function endSession(sessionId: number, summary?: string): void;
50
+ /**
51
+ * Get suggested context for the current query
52
+ * Returns memories that might be relevant to what the user is working on
53
+ */
54
+ export declare function getSuggestedContext(currentContext: string, project?: string, limit?: number): Promise<Memory[]>;
55
+ /**
56
+ * Export memories as JSON (for backup/transfer)
57
+ */
58
+ export declare function exportMemories(project?: string): string;
59
+ /**
60
+ * Import memories from JSON
61
+ */
62
+ export declare function importMemories(json: string): number;
63
+ /**
64
+ * Vacuum database to reclaim space after deletions
65
+ * Run periodically or after major cleanup operations
66
+ */
67
+ export declare function vacuumDatabase(): {
68
+ success: boolean;
69
+ message: string;
70
+ };
71
+ /**
72
+ * Preview what consolidation would do without actually doing it
73
+ * Useful for dry-run mode
74
+ */
75
+ export declare function previewConsolidation(config?: MemoryConfig): {
76
+ toPromote: Memory[];
77
+ toDelete: Memory[];
78
+ totalShortTerm: number;
79
+ totalLongTerm: number;
80
+ };
81
+ /**
82
+ * Check if consolidation should be triggered based on memory state
83
+ * Returns true if consolidation is recommended
84
+ */
85
+ export declare function shouldTriggerConsolidation(config?: MemoryConfig): {
86
+ shouldRun: boolean;
87
+ reason: string;
88
+ };
89
+ /**
90
+ * Full cleanup: consolidate + vacuum
91
+ * Best run periodically to keep database healthy
92
+ */
93
+ export declare function fullCleanup(config?: MemoryConfig): {
94
+ consolidation: ConsolidationResult;
95
+ vacuumed: boolean;
96
+ merged: number;
97
+ };
98
+ //# sourceMappingURL=consolidate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidate.d.ts","sourceRoot":"","sources":["../../src/memory/consolidate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,MAAM,EACN,YAAY,EAEZ,mBAAmB,EACnB,cAAc,EACf,MAAM,YAAY,CAAC;AAyBpB;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,GAAE,YAA6B,GACpC,mBAAmB,CAqErB;AAgDD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,GAAE,YAA6B,GAAG,MAAM,CA+CjF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,MAAM,EAChB,mBAAmB,GAAE,MAAa,GACjC,MAAM,CA4HR;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,CAAC,EAAE,MAAM,EAChB,MAAM,GAAE,YAA6B,GACpC,OAAO,CAAC,cAAc,CAAC,CAqCzB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAuCpE;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB,CAAC,CAcD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAwBN;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,GAAE,MAAU,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAWnB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAavD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAgCnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQtE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,GAAE,YAA6B,GACpC;IACD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CA8BA;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,GAAE,YAA6B,GACpC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2BxC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,GAAE,YAA6B,GACpC;IAAE,aAAa,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAe3E"}