superlocalmemory 2.8.5 → 3.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 (434) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +9 -1
  3. package/NOTICE +63 -0
  4. package/README.md +165 -480
  5. package/bin/slm +17 -449
  6. package/bin/slm-npm +2 -2
  7. package/bin/slm.bat +4 -2
  8. package/conftest.py +5 -0
  9. package/docs/api-reference.md +284 -0
  10. package/docs/architecture.md +149 -0
  11. package/docs/auto-memory.md +150 -0
  12. package/docs/cli-reference.md +276 -0
  13. package/docs/compliance.md +191 -0
  14. package/docs/configuration.md +182 -0
  15. package/docs/getting-started.md +102 -0
  16. package/docs/ide-setup.md +261 -0
  17. package/docs/mcp-tools.md +220 -0
  18. package/docs/migration-from-v2.md +170 -0
  19. package/docs/profiles.md +173 -0
  20. package/docs/troubleshooting.md +310 -0
  21. package/{configs → ide/configs}/antigravity-mcp.json +3 -3
  22. package/ide/configs/chatgpt-desktop-mcp.json +16 -0
  23. package/{configs → ide/configs}/claude-desktop-mcp.json +3 -3
  24. package/{configs → ide/configs}/codex-mcp.toml +4 -4
  25. package/{configs → ide/configs}/continue-mcp.yaml +4 -3
  26. package/{configs → ide/configs}/continue-skills.yaml +6 -6
  27. package/ide/configs/cursor-mcp.json +15 -0
  28. package/{configs → ide/configs}/gemini-cli-mcp.json +2 -2
  29. package/{configs → ide/configs}/jetbrains-mcp.json +2 -2
  30. package/{configs → ide/configs}/opencode-mcp.json +2 -2
  31. package/{configs → ide/configs}/perplexity-mcp.json +2 -2
  32. package/{configs → ide/configs}/vscode-copilot-mcp.json +2 -2
  33. package/{configs → ide/configs}/windsurf-mcp.json +3 -3
  34. package/{configs → ide/configs}/zed-mcp.json +2 -2
  35. package/{hooks → ide/hooks}/context-hook.js +9 -20
  36. package/ide/hooks/memory-list-skill.js +70 -0
  37. package/ide/hooks/memory-profile-skill.js +101 -0
  38. package/ide/hooks/memory-recall-skill.js +62 -0
  39. package/ide/hooks/memory-remember-skill.js +68 -0
  40. package/ide/hooks/memory-reset-skill.js +160 -0
  41. package/{hooks → ide/hooks}/post-recall-hook.js +2 -2
  42. package/ide/integrations/langchain/README.md +106 -0
  43. package/ide/integrations/langchain/langchain_superlocalmemory/__init__.py +9 -0
  44. package/ide/integrations/langchain/langchain_superlocalmemory/chat_message_history.py +201 -0
  45. package/ide/integrations/langchain/pyproject.toml +38 -0
  46. package/{src/learning → ide/integrations/langchain}/tests/__init__.py +1 -0
  47. package/ide/integrations/langchain/tests/test_chat_message_history.py +215 -0
  48. package/ide/integrations/langchain/tests/test_security.py +117 -0
  49. package/ide/integrations/llamaindex/README.md +81 -0
  50. package/ide/integrations/llamaindex/llama_index/storage/chat_store/superlocalmemory/__init__.py +9 -0
  51. package/ide/integrations/llamaindex/llama_index/storage/chat_store/superlocalmemory/base.py +316 -0
  52. package/ide/integrations/llamaindex/pyproject.toml +43 -0
  53. package/{src/lifecycle → ide/integrations/llamaindex}/tests/__init__.py +1 -2
  54. package/ide/integrations/llamaindex/tests/test_chat_store.py +294 -0
  55. package/ide/integrations/llamaindex/tests/test_security.py +241 -0
  56. package/{skills → ide/skills}/slm-build-graph/SKILL.md +6 -6
  57. package/{skills → ide/skills}/slm-list-recent/SKILL.md +5 -5
  58. package/{skills → ide/skills}/slm-recall/SKILL.md +5 -5
  59. package/{skills → ide/skills}/slm-remember/SKILL.md +6 -6
  60. package/{skills → ide/skills}/slm-show-patterns/SKILL.md +7 -7
  61. package/{skills → ide/skills}/slm-status/SKILL.md +9 -9
  62. package/{skills → ide/skills}/slm-switch-profile/SKILL.md +9 -9
  63. package/package.json +13 -22
  64. package/pyproject.toml +85 -0
  65. package/scripts/build-dmg.sh +417 -0
  66. package/scripts/install-skills.ps1 +334 -0
  67. package/{install.ps1 → scripts/install.ps1} +36 -4
  68. package/{install.sh → scripts/install.sh} +14 -13
  69. package/scripts/postinstall.js +2 -2
  70. package/scripts/start-dashboard.ps1 +52 -0
  71. package/scripts/start-dashboard.sh +41 -0
  72. package/scripts/sync-wiki.ps1 +127 -0
  73. package/scripts/sync-wiki.sh +82 -0
  74. package/scripts/test-dmg.sh +161 -0
  75. package/scripts/test-npm-package.ps1 +252 -0
  76. package/scripts/test-npm-package.sh +207 -0
  77. package/scripts/verify-install.ps1 +294 -0
  78. package/scripts/verify-install.sh +266 -0
  79. package/src/superlocalmemory/__init__.py +0 -0
  80. package/src/superlocalmemory/attribution/__init__.py +9 -0
  81. package/src/superlocalmemory/attribution/mathematical_dna.py +235 -0
  82. package/src/superlocalmemory/attribution/signer.py +153 -0
  83. package/src/superlocalmemory/attribution/watermark.py +189 -0
  84. package/src/superlocalmemory/cli/__init__.py +5 -0
  85. package/src/superlocalmemory/cli/commands.py +245 -0
  86. package/src/superlocalmemory/cli/main.py +89 -0
  87. package/src/superlocalmemory/cli/migrate_cmd.py +55 -0
  88. package/src/superlocalmemory/cli/post_install.py +99 -0
  89. package/src/superlocalmemory/cli/setup_wizard.py +129 -0
  90. package/src/superlocalmemory/compliance/__init__.py +0 -0
  91. package/src/superlocalmemory/compliance/abac.py +204 -0
  92. package/src/superlocalmemory/compliance/audit.py +314 -0
  93. package/src/superlocalmemory/compliance/eu_ai_act.py +131 -0
  94. package/src/superlocalmemory/compliance/gdpr.py +294 -0
  95. package/src/superlocalmemory/compliance/lifecycle.py +158 -0
  96. package/src/superlocalmemory/compliance/retention.py +232 -0
  97. package/src/superlocalmemory/compliance/scheduler.py +148 -0
  98. package/src/superlocalmemory/core/__init__.py +0 -0
  99. package/src/superlocalmemory/core/config.py +391 -0
  100. package/src/superlocalmemory/core/embeddings.py +293 -0
  101. package/src/superlocalmemory/core/engine.py +701 -0
  102. package/src/superlocalmemory/core/hooks.py +65 -0
  103. package/src/superlocalmemory/core/maintenance.py +172 -0
  104. package/src/superlocalmemory/core/modes.py +140 -0
  105. package/src/superlocalmemory/core/profiles.py +234 -0
  106. package/src/superlocalmemory/core/registry.py +117 -0
  107. package/src/superlocalmemory/dynamics/__init__.py +0 -0
  108. package/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +223 -0
  109. package/src/superlocalmemory/encoding/__init__.py +0 -0
  110. package/src/superlocalmemory/encoding/consolidator.py +485 -0
  111. package/src/superlocalmemory/encoding/emotional.py +125 -0
  112. package/src/superlocalmemory/encoding/entity_resolver.py +525 -0
  113. package/src/superlocalmemory/encoding/entropy_gate.py +104 -0
  114. package/src/superlocalmemory/encoding/fact_extractor.py +775 -0
  115. package/src/superlocalmemory/encoding/foresight.py +91 -0
  116. package/src/superlocalmemory/encoding/graph_builder.py +302 -0
  117. package/src/superlocalmemory/encoding/observation_builder.py +160 -0
  118. package/src/superlocalmemory/encoding/scene_builder.py +183 -0
  119. package/src/superlocalmemory/encoding/signal_inference.py +90 -0
  120. package/src/superlocalmemory/encoding/temporal_parser.py +426 -0
  121. package/src/superlocalmemory/encoding/type_router.py +235 -0
  122. package/src/superlocalmemory/hooks/__init__.py +3 -0
  123. package/src/superlocalmemory/hooks/auto_capture.py +111 -0
  124. package/src/superlocalmemory/hooks/auto_recall.py +93 -0
  125. package/src/superlocalmemory/hooks/ide_connector.py +204 -0
  126. package/src/superlocalmemory/hooks/rules_engine.py +99 -0
  127. package/src/superlocalmemory/infra/__init__.py +3 -0
  128. package/src/superlocalmemory/infra/auth_middleware.py +82 -0
  129. package/src/superlocalmemory/infra/backup.py +317 -0
  130. package/src/superlocalmemory/infra/cache_manager.py +267 -0
  131. package/src/superlocalmemory/infra/event_bus.py +381 -0
  132. package/src/superlocalmemory/infra/rate_limiter.py +135 -0
  133. package/src/{webhook_dispatcher.py → superlocalmemory/infra/webhook_dispatcher.py} +104 -101
  134. package/src/superlocalmemory/learning/__init__.py +0 -0
  135. package/src/superlocalmemory/learning/adaptive.py +172 -0
  136. package/src/superlocalmemory/learning/behavioral.py +490 -0
  137. package/src/superlocalmemory/learning/behavioral_listener.py +94 -0
  138. package/src/superlocalmemory/learning/bootstrap.py +298 -0
  139. package/src/superlocalmemory/learning/cross_project.py +399 -0
  140. package/src/superlocalmemory/learning/database.py +376 -0
  141. package/src/superlocalmemory/learning/engagement.py +323 -0
  142. package/src/superlocalmemory/learning/features.py +138 -0
  143. package/src/superlocalmemory/learning/feedback.py +316 -0
  144. package/src/superlocalmemory/learning/outcomes.py +255 -0
  145. package/src/superlocalmemory/learning/project_context.py +366 -0
  146. package/src/superlocalmemory/learning/ranker.py +155 -0
  147. package/src/superlocalmemory/learning/source_quality.py +303 -0
  148. package/src/superlocalmemory/learning/workflows.py +309 -0
  149. package/src/superlocalmemory/llm/__init__.py +0 -0
  150. package/src/superlocalmemory/llm/backbone.py +316 -0
  151. package/src/superlocalmemory/math/__init__.py +0 -0
  152. package/src/superlocalmemory/math/fisher.py +356 -0
  153. package/src/superlocalmemory/math/langevin.py +398 -0
  154. package/src/superlocalmemory/math/sheaf.py +257 -0
  155. package/src/superlocalmemory/mcp/__init__.py +0 -0
  156. package/src/superlocalmemory/mcp/resources.py +245 -0
  157. package/src/superlocalmemory/mcp/server.py +61 -0
  158. package/src/superlocalmemory/mcp/tools.py +18 -0
  159. package/src/superlocalmemory/mcp/tools_core.py +305 -0
  160. package/src/superlocalmemory/mcp/tools_v28.py +223 -0
  161. package/src/superlocalmemory/mcp/tools_v3.py +286 -0
  162. package/src/superlocalmemory/retrieval/__init__.py +0 -0
  163. package/src/superlocalmemory/retrieval/agentic.py +295 -0
  164. package/src/superlocalmemory/retrieval/ann_index.py +223 -0
  165. package/src/superlocalmemory/retrieval/bm25_channel.py +185 -0
  166. package/src/superlocalmemory/retrieval/bridge_discovery.py +170 -0
  167. package/src/superlocalmemory/retrieval/engine.py +390 -0
  168. package/src/superlocalmemory/retrieval/entity_channel.py +179 -0
  169. package/src/superlocalmemory/retrieval/fusion.py +78 -0
  170. package/src/superlocalmemory/retrieval/profile_channel.py +105 -0
  171. package/src/superlocalmemory/retrieval/reranker.py +154 -0
  172. package/src/superlocalmemory/retrieval/semantic_channel.py +232 -0
  173. package/src/superlocalmemory/retrieval/strategy.py +96 -0
  174. package/src/superlocalmemory/retrieval/temporal_channel.py +175 -0
  175. package/src/superlocalmemory/server/__init__.py +1 -0
  176. package/src/superlocalmemory/server/api.py +248 -0
  177. package/src/superlocalmemory/server/routes/__init__.py +4 -0
  178. package/src/superlocalmemory/server/routes/agents.py +107 -0
  179. package/src/superlocalmemory/server/routes/backup.py +91 -0
  180. package/src/superlocalmemory/server/routes/behavioral.py +127 -0
  181. package/src/superlocalmemory/server/routes/compliance.py +160 -0
  182. package/src/superlocalmemory/server/routes/data_io.py +188 -0
  183. package/src/superlocalmemory/server/routes/events.py +183 -0
  184. package/src/superlocalmemory/server/routes/helpers.py +85 -0
  185. package/src/superlocalmemory/server/routes/learning.py +273 -0
  186. package/src/superlocalmemory/server/routes/lifecycle.py +116 -0
  187. package/src/superlocalmemory/server/routes/memories.py +399 -0
  188. package/src/superlocalmemory/server/routes/profiles.py +219 -0
  189. package/src/superlocalmemory/server/routes/stats.py +346 -0
  190. package/src/superlocalmemory/server/routes/v3_api.py +365 -0
  191. package/src/superlocalmemory/server/routes/ws.py +82 -0
  192. package/src/superlocalmemory/server/security_middleware.py +57 -0
  193. package/src/superlocalmemory/server/ui.py +245 -0
  194. package/src/superlocalmemory/storage/__init__.py +0 -0
  195. package/src/superlocalmemory/storage/access_control.py +182 -0
  196. package/src/superlocalmemory/storage/database.py +594 -0
  197. package/src/superlocalmemory/storage/migrations.py +303 -0
  198. package/src/superlocalmemory/storage/models.py +406 -0
  199. package/src/superlocalmemory/storage/schema.py +726 -0
  200. package/src/superlocalmemory/storage/v2_migrator.py +317 -0
  201. package/src/superlocalmemory/trust/__init__.py +0 -0
  202. package/src/superlocalmemory/trust/gate.py +130 -0
  203. package/src/superlocalmemory/trust/provenance.py +124 -0
  204. package/src/superlocalmemory/trust/scorer.py +347 -0
  205. package/src/superlocalmemory/trust/signals.py +153 -0
  206. package/ui/index.html +278 -5
  207. package/ui/js/auto-settings.js +70 -0
  208. package/ui/js/dashboard.js +90 -0
  209. package/ui/js/fact-detail.js +92 -0
  210. package/ui/js/feedback.js +2 -2
  211. package/ui/js/ide-status.js +102 -0
  212. package/ui/js/math-health.js +98 -0
  213. package/ui/js/recall-lab.js +127 -0
  214. package/ui/js/settings.js +2 -2
  215. package/ui/js/trust-dashboard.js +73 -0
  216. package/api_server.py +0 -724
  217. package/bin/aider-smart +0 -72
  218. package/bin/superlocalmemoryv2-learning +0 -4
  219. package/bin/superlocalmemoryv2-list +0 -3
  220. package/bin/superlocalmemoryv2-patterns +0 -4
  221. package/bin/superlocalmemoryv2-profile +0 -3
  222. package/bin/superlocalmemoryv2-recall +0 -3
  223. package/bin/superlocalmemoryv2-remember +0 -3
  224. package/bin/superlocalmemoryv2-reset +0 -3
  225. package/bin/superlocalmemoryv2-status +0 -3
  226. package/configs/chatgpt-desktop-mcp.json +0 -16
  227. package/configs/cursor-mcp.json +0 -15
  228. package/docs/SECURITY-QUICK-REFERENCE.md +0 -214
  229. package/hooks/memory-list-skill.js +0 -139
  230. package/hooks/memory-profile-skill.js +0 -273
  231. package/hooks/memory-recall-skill.js +0 -114
  232. package/hooks/memory-remember-skill.js +0 -127
  233. package/hooks/memory-reset-skill.js +0 -274
  234. package/mcp_server.py +0 -1800
  235. package/requirements-core.txt +0 -22
  236. package/requirements-learning.txt +0 -12
  237. package/requirements.txt +0 -12
  238. package/src/agent_registry.py +0 -411
  239. package/src/auth_middleware.py +0 -61
  240. package/src/auto_backup.py +0 -459
  241. package/src/behavioral/__init__.py +0 -49
  242. package/src/behavioral/behavioral_listener.py +0 -203
  243. package/src/behavioral/behavioral_patterns.py +0 -275
  244. package/src/behavioral/cross_project_transfer.py +0 -206
  245. package/src/behavioral/outcome_inference.py +0 -194
  246. package/src/behavioral/outcome_tracker.py +0 -193
  247. package/src/behavioral/tests/__init__.py +0 -4
  248. package/src/behavioral/tests/test_behavioral_integration.py +0 -108
  249. package/src/behavioral/tests/test_behavioral_patterns.py +0 -150
  250. package/src/behavioral/tests/test_cross_project_transfer.py +0 -142
  251. package/src/behavioral/tests/test_mcp_behavioral.py +0 -139
  252. package/src/behavioral/tests/test_mcp_report_outcome.py +0 -117
  253. package/src/behavioral/tests/test_outcome_inference.py +0 -107
  254. package/src/behavioral/tests/test_outcome_tracker.py +0 -96
  255. package/src/cache_manager.py +0 -518
  256. package/src/compliance/__init__.py +0 -48
  257. package/src/compliance/abac_engine.py +0 -149
  258. package/src/compliance/abac_middleware.py +0 -116
  259. package/src/compliance/audit_db.py +0 -215
  260. package/src/compliance/audit_logger.py +0 -148
  261. package/src/compliance/retention_manager.py +0 -289
  262. package/src/compliance/retention_scheduler.py +0 -186
  263. package/src/compliance/tests/__init__.py +0 -4
  264. package/src/compliance/tests/test_abac_enforcement.py +0 -95
  265. package/src/compliance/tests/test_abac_engine.py +0 -124
  266. package/src/compliance/tests/test_abac_mcp_integration.py +0 -118
  267. package/src/compliance/tests/test_audit_db.py +0 -123
  268. package/src/compliance/tests/test_audit_logger.py +0 -98
  269. package/src/compliance/tests/test_mcp_audit.py +0 -128
  270. package/src/compliance/tests/test_mcp_retention_policy.py +0 -125
  271. package/src/compliance/tests/test_retention_manager.py +0 -131
  272. package/src/compliance/tests/test_retention_scheduler.py +0 -99
  273. package/src/compression/__init__.py +0 -25
  274. package/src/compression/cli.py +0 -150
  275. package/src/compression/cold_storage.py +0 -217
  276. package/src/compression/config.py +0 -72
  277. package/src/compression/orchestrator.py +0 -133
  278. package/src/compression/tier2_compressor.py +0 -228
  279. package/src/compression/tier3_compressor.py +0 -153
  280. package/src/compression/tier_classifier.py +0 -148
  281. package/src/db_connection_manager.py +0 -536
  282. package/src/embedding_engine.py +0 -63
  283. package/src/embeddings/__init__.py +0 -47
  284. package/src/embeddings/cache.py +0 -70
  285. package/src/embeddings/cli.py +0 -113
  286. package/src/embeddings/constants.py +0 -47
  287. package/src/embeddings/database.py +0 -91
  288. package/src/embeddings/engine.py +0 -247
  289. package/src/embeddings/model_loader.py +0 -145
  290. package/src/event_bus.py +0 -562
  291. package/src/graph/__init__.py +0 -36
  292. package/src/graph/build_helpers.py +0 -74
  293. package/src/graph/cli.py +0 -87
  294. package/src/graph/cluster_builder.py +0 -188
  295. package/src/graph/cluster_summary.py +0 -148
  296. package/src/graph/constants.py +0 -47
  297. package/src/graph/edge_builder.py +0 -162
  298. package/src/graph/entity_extractor.py +0 -95
  299. package/src/graph/graph_core.py +0 -226
  300. package/src/graph/graph_search.py +0 -231
  301. package/src/graph/hierarchical.py +0 -207
  302. package/src/graph/schema.py +0 -99
  303. package/src/graph_engine.py +0 -52
  304. package/src/hnsw_index.py +0 -628
  305. package/src/hybrid_search.py +0 -46
  306. package/src/learning/__init__.py +0 -217
  307. package/src/learning/adaptive_ranker.py +0 -682
  308. package/src/learning/bootstrap/__init__.py +0 -69
  309. package/src/learning/bootstrap/constants.py +0 -93
  310. package/src/learning/bootstrap/db_queries.py +0 -316
  311. package/src/learning/bootstrap/sampling.py +0 -82
  312. package/src/learning/bootstrap/text_utils.py +0 -71
  313. package/src/learning/cross_project_aggregator.py +0 -857
  314. package/src/learning/db/__init__.py +0 -40
  315. package/src/learning/db/constants.py +0 -44
  316. package/src/learning/db/schema.py +0 -279
  317. package/src/learning/engagement_tracker.py +0 -628
  318. package/src/learning/feature_extractor.py +0 -708
  319. package/src/learning/feedback_collector.py +0 -806
  320. package/src/learning/learning_db.py +0 -915
  321. package/src/learning/project_context_manager.py +0 -572
  322. package/src/learning/ranking/__init__.py +0 -33
  323. package/src/learning/ranking/constants.py +0 -84
  324. package/src/learning/ranking/helpers.py +0 -278
  325. package/src/learning/source_quality_scorer.py +0 -676
  326. package/src/learning/synthetic_bootstrap.py +0 -755
  327. package/src/learning/tests/test_adaptive_ranker.py +0 -325
  328. package/src/learning/tests/test_adaptive_ranker_v28.py +0 -60
  329. package/src/learning/tests/test_aggregator.py +0 -306
  330. package/src/learning/tests/test_auto_retrain_v28.py +0 -35
  331. package/src/learning/tests/test_e2e_ranking_v28.py +0 -82
  332. package/src/learning/tests/test_feature_extractor_v28.py +0 -93
  333. package/src/learning/tests/test_feedback_collector.py +0 -294
  334. package/src/learning/tests/test_learning_db.py +0 -602
  335. package/src/learning/tests/test_learning_db_v28.py +0 -110
  336. package/src/learning/tests/test_learning_init_v28.py +0 -48
  337. package/src/learning/tests/test_outcome_signals.py +0 -48
  338. package/src/learning/tests/test_project_context.py +0 -292
  339. package/src/learning/tests/test_schema_migration.py +0 -319
  340. package/src/learning/tests/test_signal_inference.py +0 -397
  341. package/src/learning/tests/test_source_quality.py +0 -351
  342. package/src/learning/tests/test_synthetic_bootstrap.py +0 -429
  343. package/src/learning/tests/test_workflow_miner.py +0 -318
  344. package/src/learning/workflow_pattern_miner.py +0 -655
  345. package/src/lifecycle/__init__.py +0 -54
  346. package/src/lifecycle/bounded_growth.py +0 -239
  347. package/src/lifecycle/compaction_engine.py +0 -226
  348. package/src/lifecycle/lifecycle_engine.py +0 -355
  349. package/src/lifecycle/lifecycle_evaluator.py +0 -257
  350. package/src/lifecycle/lifecycle_scheduler.py +0 -130
  351. package/src/lifecycle/retention_policy.py +0 -285
  352. package/src/lifecycle/tests/test_bounded_growth.py +0 -193
  353. package/src/lifecycle/tests/test_compaction.py +0 -179
  354. package/src/lifecycle/tests/test_lifecycle_engine.py +0 -137
  355. package/src/lifecycle/tests/test_lifecycle_evaluation.py +0 -177
  356. package/src/lifecycle/tests/test_lifecycle_scheduler.py +0 -127
  357. package/src/lifecycle/tests/test_lifecycle_search.py +0 -109
  358. package/src/lifecycle/tests/test_mcp_compact.py +0 -149
  359. package/src/lifecycle/tests/test_mcp_lifecycle_status.py +0 -114
  360. package/src/lifecycle/tests/test_retention_policy.py +0 -162
  361. package/src/mcp_tools_v28.py +0 -281
  362. package/src/memory/__init__.py +0 -36
  363. package/src/memory/cli.py +0 -205
  364. package/src/memory/constants.py +0 -39
  365. package/src/memory/helpers.py +0 -28
  366. package/src/memory/schema.py +0 -166
  367. package/src/memory-profiles.py +0 -595
  368. package/src/memory-reset.py +0 -491
  369. package/src/memory_compression.py +0 -989
  370. package/src/memory_store_v2.py +0 -1155
  371. package/src/migrate_v1_to_v2.py +0 -629
  372. package/src/pattern_learner.py +0 -34
  373. package/src/patterns/__init__.py +0 -24
  374. package/src/patterns/analyzers.py +0 -251
  375. package/src/patterns/learner.py +0 -271
  376. package/src/patterns/scoring.py +0 -171
  377. package/src/patterns/store.py +0 -225
  378. package/src/patterns/terminology.py +0 -140
  379. package/src/provenance_tracker.py +0 -312
  380. package/src/qualixar_attribution.py +0 -139
  381. package/src/qualixar_watermark.py +0 -78
  382. package/src/query_optimizer.py +0 -511
  383. package/src/rate_limiter.py +0 -83
  384. package/src/search/__init__.py +0 -20
  385. package/src/search/cli.py +0 -77
  386. package/src/search/constants.py +0 -26
  387. package/src/search/engine.py +0 -241
  388. package/src/search/fusion.py +0 -122
  389. package/src/search/index_loader.py +0 -114
  390. package/src/search/methods.py +0 -162
  391. package/src/search_engine_v2.py +0 -401
  392. package/src/setup_validator.py +0 -482
  393. package/src/subscription_manager.py +0 -391
  394. package/src/tree/__init__.py +0 -59
  395. package/src/tree/builder.py +0 -185
  396. package/src/tree/nodes.py +0 -202
  397. package/src/tree/queries.py +0 -257
  398. package/src/tree/schema.py +0 -80
  399. package/src/tree_manager.py +0 -19
  400. package/src/trust/__init__.py +0 -45
  401. package/src/trust/constants.py +0 -66
  402. package/src/trust/queries.py +0 -157
  403. package/src/trust/schema.py +0 -95
  404. package/src/trust/scorer.py +0 -299
  405. package/src/trust/signals.py +0 -95
  406. package/src/trust_scorer.py +0 -44
  407. package/ui/app.js +0 -1588
  408. package/ui/js/graph-cytoscape-monolithic-backup.js +0 -1168
  409. package/ui/js/graph-cytoscape.js +0 -1168
  410. package/ui/js/graph-d3-backup.js +0 -32
  411. package/ui/js/graph.js +0 -32
  412. package/ui_server.py +0 -266
  413. /package/docs/{ACCESSIBILITY.md → v2-archive/ACCESSIBILITY.md} +0 -0
  414. /package/docs/{ARCHITECTURE.md → v2-archive/ARCHITECTURE.md} +0 -0
  415. /package/docs/{CLI-COMMANDS-REFERENCE.md → v2-archive/CLI-COMMANDS-REFERENCE.md} +0 -0
  416. /package/docs/{COMPRESSION-README.md → v2-archive/COMPRESSION-README.md} +0 -0
  417. /package/docs/{FRAMEWORK-INTEGRATIONS.md → v2-archive/FRAMEWORK-INTEGRATIONS.md} +0 -0
  418. /package/docs/{MCP-MANUAL-SETUP.md → v2-archive/MCP-MANUAL-SETUP.md} +0 -0
  419. /package/docs/{MCP-TROUBLESHOOTING.md → v2-archive/MCP-TROUBLESHOOTING.md} +0 -0
  420. /package/docs/{PATTERN-LEARNING.md → v2-archive/PATTERN-LEARNING.md} +0 -0
  421. /package/docs/{PROFILES-GUIDE.md → v2-archive/PROFILES-GUIDE.md} +0 -0
  422. /package/docs/{RESET-GUIDE.md → v2-archive/RESET-GUIDE.md} +0 -0
  423. /package/docs/{SEARCH-ENGINE-V2.2.0.md → v2-archive/SEARCH-ENGINE-V2.2.0.md} +0 -0
  424. /package/docs/{SEARCH-INTEGRATION-GUIDE.md → v2-archive/SEARCH-INTEGRATION-GUIDE.md} +0 -0
  425. /package/docs/{UI-SERVER.md → v2-archive/UI-SERVER.md} +0 -0
  426. /package/docs/{UNIVERSAL-INTEGRATION.md → v2-archive/UNIVERSAL-INTEGRATION.md} +0 -0
  427. /package/docs/{V2.2.0-OPTIONAL-SEARCH.md → v2-archive/V2.2.0-OPTIONAL-SEARCH.md} +0 -0
  428. /package/docs/{WINDOWS-INSTALL-README.txt → v2-archive/WINDOWS-INSTALL-README.txt} +0 -0
  429. /package/docs/{WINDOWS-POST-INSTALL.txt → v2-archive/WINDOWS-POST-INSTALL.txt} +0 -0
  430. /package/docs/{example_graph_usage.py → v2-archive/example_graph_usage.py} +0 -0
  431. /package/{completions → ide/completions}/slm.bash +0 -0
  432. /package/{completions → ide/completions}/slm.zsh +0 -0
  433. /package/{configs → ide/configs}/cody-commands.json +0 -0
  434. /package/{install-skills.sh → scripts/install-skills.sh} +0 -0
@@ -1,482 +0,0 @@
1
- #!/usr/bin/env python3
2
- # SPDX-License-Identifier: MIT
3
- # Copyright (c) 2026 SuperLocalMemory (superlocalmemory.com)
4
- """SuperLocalMemory V2 - Setup Validator
5
-
6
- First-run setup validator that ensures all dependencies are installed
7
- and the database is properly initialized.
8
- """
9
- import sys
10
- import os
11
- import sqlite3
12
- from pathlib import Path
13
- from typing import Tuple, List, Optional
14
-
15
- # Configuration
16
- MEMORY_DIR = Path(os.environ.get('SUPERLOCALEMORY_DIR', str(Path.home() / ".claude-memory")))
17
- DB_PATH = MEMORY_DIR / "memory.db"
18
-
19
- # Required Python version
20
- MIN_PYTHON_VERSION = (3, 8)
21
-
22
- # Required tables for V2
23
- REQUIRED_TABLES = [
24
- 'memories',
25
- 'graph_edges',
26
- 'graph_nodes',
27
- 'graph_clusters',
28
- 'identity_patterns',
29
- 'pattern_examples',
30
- 'memory_tree',
31
- 'memory_archive'
32
- ]
33
-
34
-
35
- def print_banner():
36
- """Print product banner."""
37
- print("""
38
- ╔══════════════════════════════════════════════════════════════╗
39
- ║ SuperLocalMemory - Setup Validator ║
40
- ║ https://superlocalmemory.com ║
41
- ╚══════════════════════════════════════════════════════════════╝
42
- """)
43
-
44
-
45
- def check_python_version() -> Tuple[bool, str]:
46
- """Check Python version meets requirements."""
47
- current = sys.version_info[:2]
48
- if current >= MIN_PYTHON_VERSION:
49
- return True, f"Python {current[0]}.{current[1]}"
50
- else:
51
- return False, f"Python {current[0]}.{current[1]} (need {MIN_PYTHON_VERSION[0]}.{MIN_PYTHON_VERSION[1]}+)"
52
-
53
-
54
- def check_core_dependencies() -> List[Tuple[str, bool, str]]:
55
- """Check core required dependencies."""
56
- results = []
57
-
58
- # SQLite3 (built-in)
59
- try:
60
- import sqlite3
61
- results.append(("sqlite3", True, "Built-in"))
62
- except ImportError:
63
- results.append(("sqlite3", False, "pip install sqlite3"))
64
-
65
- # JSON (built-in)
66
- try:
67
- import json
68
- results.append(("json", True, "Built-in"))
69
- except ImportError:
70
- results.append(("json", False, "Built-in - should be available"))
71
-
72
- # hashlib (built-in)
73
- try:
74
- import hashlib
75
- results.append(("hashlib", True, "Built-in"))
76
- except ImportError:
77
- results.append(("hashlib", False, "Built-in - should be available"))
78
-
79
- return results
80
-
81
-
82
- def check_optional_dependencies() -> List[Tuple[str, bool, str, str]]:
83
- """Check optional dependencies for advanced features."""
84
- results = []
85
-
86
- # scikit-learn (for knowledge graph)
87
- try:
88
- import sklearn
89
- results.append(("scikit-learn", True, sklearn.__version__, "Knowledge Graph"))
90
- except ImportError:
91
- results.append(("scikit-learn", False, "pip install scikit-learn", "Knowledge Graph"))
92
-
93
- # numpy (for vector operations)
94
- try:
95
- import numpy
96
- results.append(("numpy", True, numpy.__version__, "Vector Operations"))
97
- except ImportError:
98
- results.append(("numpy", False, "pip install numpy", "Vector Operations"))
99
-
100
- # igraph (for clustering)
101
- try:
102
- import igraph
103
- results.append(("python-igraph", True, igraph.__version__, "Graph Clustering"))
104
- except ImportError:
105
- results.append(("python-igraph", False, "pip install python-igraph", "Graph Clustering"))
106
-
107
- # leidenalg (for Leiden algorithm)
108
- try:
109
- import leidenalg
110
- results.append(("leidenalg", True, leidenalg.__version__, "Leiden Clustering"))
111
- except ImportError:
112
- results.append(("leidenalg", False, "pip install leidenalg", "Leiden Clustering"))
113
-
114
- # FastAPI (for UI server)
115
- try:
116
- import fastapi
117
- results.append(("fastapi", True, fastapi.__version__, "UI Server"))
118
- except ImportError:
119
- results.append(("fastapi", False, "pip install fastapi uvicorn", "UI Server"))
120
-
121
- return results
122
-
123
-
124
- def check_database() -> Tuple[bool, str, List[str]]:
125
- """Check database status and tables."""
126
- if not DB_PATH.exists():
127
- return False, "Not created yet (will be created on first use)", []
128
-
129
- try:
130
- conn = sqlite3.connect(DB_PATH)
131
- cursor = conn.cursor()
132
-
133
- # Get existing tables
134
- cursor.execute("SELECT name FROM sqlite_master WHERE type='table'")
135
- existing_tables = {row[0] for row in cursor.fetchall()}
136
-
137
- # Check for required tables
138
- missing_tables = []
139
- for table in REQUIRED_TABLES:
140
- if table not in existing_tables:
141
- missing_tables.append(table)
142
-
143
- # Get memory count
144
- try:
145
- cursor.execute("SELECT COUNT(*) FROM memories")
146
- memory_count = cursor.fetchone()[0]
147
- except Exception:
148
- memory_count = 0
149
-
150
- conn.close()
151
-
152
- if missing_tables:
153
- return False, f"Missing tables: {', '.join(missing_tables)}", missing_tables
154
- else:
155
- return True, f"OK ({memory_count} memories)", []
156
-
157
- except Exception as e:
158
- return False, f"Error: {str(e)}", []
159
-
160
-
161
- def check_directory_structure() -> List[Tuple[str, bool, str]]:
162
- """Check required directories exist."""
163
- results = []
164
-
165
- # Memory directory
166
- if MEMORY_DIR.exists():
167
- results.append(("Memory Directory", True, str(MEMORY_DIR)))
168
- else:
169
- results.append(("Memory Directory", False, f"Will be created at {MEMORY_DIR}"))
170
-
171
- # Profiles directory
172
- profiles_dir = MEMORY_DIR / "profiles"
173
- if profiles_dir.exists():
174
- results.append(("Profiles Directory", True, str(profiles_dir)))
175
- else:
176
- results.append(("Profiles Directory", False, "Will be created on first profile"))
177
-
178
- # Backups directory
179
- backups_dir = MEMORY_DIR / "backups"
180
- if backups_dir.exists():
181
- results.append(("Backups Directory", True, str(backups_dir)))
182
- else:
183
- results.append(("Backups Directory", False, "Will be created on first backup"))
184
-
185
- return results
186
-
187
-
188
- def initialize_database() -> Tuple[bool, str]:
189
- """Initialize database with required schema if needed."""
190
- try:
191
- # Create memory directory if needed
192
- MEMORY_DIR.mkdir(parents=True, exist_ok=True)
193
-
194
- conn = sqlite3.connect(DB_PATH)
195
- try:
196
- cursor = conn.cursor()
197
-
198
- # Create memories table (core)
199
- cursor.execute('''
200
- CREATE TABLE IF NOT EXISTS memories (
201
- id INTEGER PRIMARY KEY AUTOINCREMENT,
202
- content TEXT NOT NULL,
203
- summary TEXT,
204
- project_path TEXT,
205
- project_name TEXT,
206
- tags TEXT DEFAULT '[]',
207
- category TEXT,
208
- parent_id INTEGER,
209
- tree_path TEXT DEFAULT '/',
210
- depth INTEGER DEFAULT 0,
211
- memory_type TEXT DEFAULT 'session',
212
- importance INTEGER DEFAULT 5,
213
- content_hash TEXT,
214
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
215
- last_accessed TIMESTAMP,
216
- access_count INTEGER DEFAULT 0,
217
- compressed_at TIMESTAMP,
218
- tier INTEGER DEFAULT 1,
219
- cluster_id INTEGER,
220
- FOREIGN KEY (parent_id) REFERENCES memories(id)
221
- )
222
- ''')
223
-
224
- # Create graph tables
225
- cursor.execute('''
226
- CREATE TABLE IF NOT EXISTS graph_nodes (
227
- id INTEGER PRIMARY KEY AUTOINCREMENT,
228
- memory_id INTEGER UNIQUE NOT NULL,
229
- entities TEXT DEFAULT '[]',
230
- embedding_vector BLOB,
231
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
232
- FOREIGN KEY (memory_id) REFERENCES memories(id)
233
- )
234
- ''')
235
-
236
- cursor.execute('''
237
- CREATE TABLE IF NOT EXISTS graph_edges (
238
- id INTEGER PRIMARY KEY AUTOINCREMENT,
239
- source_memory_id INTEGER NOT NULL,
240
- target_memory_id INTEGER NOT NULL,
241
- similarity REAL NOT NULL,
242
- relationship_type TEXT,
243
- shared_entities TEXT DEFAULT '[]',
244
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
245
- FOREIGN KEY (source_memory_id) REFERENCES memories(id),
246
- FOREIGN KEY (target_memory_id) REFERENCES memories(id),
247
- UNIQUE(source_memory_id, target_memory_id)
248
- )
249
- ''')
250
-
251
- cursor.execute('''
252
- CREATE TABLE IF NOT EXISTS graph_clusters (
253
- id INTEGER PRIMARY KEY AUTOINCREMENT,
254
- cluster_name TEXT,
255
- name TEXT,
256
- description TEXT,
257
- summary TEXT,
258
- memory_count INTEGER DEFAULT 0,
259
- member_count INTEGER DEFAULT 0,
260
- avg_importance REAL DEFAULT 5.0,
261
- top_entities TEXT DEFAULT '[]',
262
- parent_cluster_id INTEGER,
263
- depth INTEGER DEFAULT 0,
264
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
265
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
266
- FOREIGN KEY (parent_cluster_id) REFERENCES graph_clusters(id) ON DELETE SET NULL
267
- )
268
- ''')
269
-
270
- # Create pattern learning tables
271
- cursor.execute('''
272
- CREATE TABLE IF NOT EXISTS identity_patterns (
273
- id INTEGER PRIMARY KEY AUTOINCREMENT,
274
- pattern_type TEXT NOT NULL,
275
- pattern_key TEXT NOT NULL,
276
- pattern_value TEXT,
277
- confidence REAL DEFAULT 0.0,
278
- frequency INTEGER DEFAULT 1,
279
- last_seen TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
280
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
281
- UNIQUE(pattern_type, pattern_key)
282
- )
283
- ''')
284
-
285
- cursor.execute('''
286
- CREATE TABLE IF NOT EXISTS pattern_examples (
287
- id INTEGER PRIMARY KEY AUTOINCREMENT,
288
- pattern_id INTEGER NOT NULL,
289
- memory_id INTEGER NOT NULL,
290
- context TEXT,
291
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
292
- FOREIGN KEY (pattern_id) REFERENCES identity_patterns(id),
293
- FOREIGN KEY (memory_id) REFERENCES memories(id)
294
- )
295
- ''')
296
-
297
- # Create tree table
298
- cursor.execute('''
299
- CREATE TABLE IF NOT EXISTS memory_tree (
300
- id INTEGER PRIMARY KEY AUTOINCREMENT,
301
- node_type TEXT NOT NULL,
302
- name TEXT NOT NULL,
303
- parent_id INTEGER,
304
- tree_path TEXT DEFAULT '/',
305
- depth INTEGER DEFAULT 0,
306
- memory_count INTEGER DEFAULT 0,
307
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
308
- FOREIGN KEY (parent_id) REFERENCES memory_tree(id)
309
- )
310
- ''')
311
-
312
- # Create archive table
313
- cursor.execute('''
314
- CREATE TABLE IF NOT EXISTS memory_archive (
315
- id INTEGER PRIMARY KEY AUTOINCREMENT,
316
- original_memory_id INTEGER,
317
- compressed_content TEXT NOT NULL,
318
- compression_type TEXT DEFAULT 'tier2',
319
- original_size INTEGER,
320
- compressed_size INTEGER,
321
- archived_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
322
- )
323
- ''')
324
-
325
- # Create system metadata table for watermarking
326
- cursor.execute('''
327
- CREATE TABLE IF NOT EXISTS system_metadata (
328
- key TEXT PRIMARY KEY,
329
- value TEXT NOT NULL
330
- )
331
- ''')
332
-
333
- # Add system watermark
334
- cursor.execute('''
335
- INSERT OR REPLACE INTO system_metadata (key, value) VALUES
336
- ('product', 'SuperLocalMemory'),
337
- ('website', 'https://superlocalmemory.com'),
338
- ('repository', 'https://github.com/varun369/SuperLocalMemoryV2'),
339
- ('license', 'MIT'),
340
- ('schema_version', '2.0.0')
341
- ''')
342
-
343
- # Create indexes for performance
344
- cursor.execute('CREATE INDEX IF NOT EXISTS idx_memories_project ON memories(project_name)')
345
- cursor.execute('CREATE INDEX IF NOT EXISTS idx_memories_category ON memories(category)')
346
- cursor.execute('CREATE INDEX IF NOT EXISTS idx_memories_cluster ON memories(cluster_id)')
347
- cursor.execute('CREATE INDEX IF NOT EXISTS idx_memories_hash ON memories(content_hash)')
348
- cursor.execute('CREATE INDEX IF NOT EXISTS idx_graph_edges_source ON graph_edges(source_memory_id)')
349
- cursor.execute('CREATE INDEX IF NOT EXISTS idx_graph_edges_target ON graph_edges(target_memory_id)')
350
-
351
- conn.commit()
352
- finally:
353
- conn.close()
354
-
355
- return True, "Database initialized successfully"
356
-
357
- except Exception as e:
358
- return False, f"Error initializing database: {str(e)}"
359
-
360
-
361
- def validate_setup(auto_fix: bool = False) -> bool:
362
- """
363
- Run complete setup validation.
364
-
365
- Args:
366
- auto_fix: If True, automatically initialize missing components
367
-
368
- Returns:
369
- True if all required checks pass
370
- """
371
- print_banner()
372
-
373
- all_passed = True
374
- optional_issues = []
375
-
376
- # Check Python version
377
- print("Checking Python version...")
378
- py_ok, py_msg = check_python_version()
379
- print(f" {'✓' if py_ok else '✗'} {py_msg}")
380
- if not py_ok:
381
- all_passed = False
382
-
383
- print()
384
-
385
- # Check core dependencies
386
- print("Checking core dependencies...")
387
- for name, ok, msg in check_core_dependencies():
388
- print(f" {'✓' if ok else '✗'} {name}: {msg}")
389
- if not ok:
390
- all_passed = False
391
-
392
- print()
393
-
394
- # Check optional dependencies
395
- print("Checking optional dependencies...")
396
- for name, ok, msg, feature in check_optional_dependencies():
397
- status = '✓' if ok else '○'
398
- print(f" {status} {name}: {msg if ok else 'Not installed'} ({feature})")
399
- if not ok:
400
- optional_issues.append((name, msg, feature))
401
-
402
- print()
403
-
404
- # Check directory structure
405
- print("Checking directory structure...")
406
- for name, ok, msg in check_directory_structure():
407
- print(f" {'✓' if ok else '○'} {name}: {msg}")
408
-
409
- print()
410
-
411
- # Check database
412
- print("Checking database...")
413
- db_ok, db_msg, missing_tables = check_database()
414
- print(f" {'✓' if db_ok else '○'} Database: {db_msg}")
415
-
416
- if not db_ok and auto_fix:
417
- print("\n Initializing database...")
418
- init_ok, init_msg = initialize_database()
419
- print(f" {'✓' if init_ok else '✗'} {init_msg}")
420
- if init_ok:
421
- db_ok = True
422
-
423
- print()
424
- print("=" * 60)
425
-
426
- if all_passed and db_ok:
427
- print("\n✓ All required checks passed!")
428
- print("\nQuick Start Commands:")
429
- print(" 1. Add a memory:")
430
- print(" superlocalmemoryv2-remember 'Your content here'")
431
- print("\n 2. Search memories:")
432
- print(" superlocalmemoryv2-recall 'search query'")
433
- print("\n 3. Build knowledge graph (after adding 2+ memories):")
434
- print(" python ~/.claude-memory/graph_engine.py build")
435
- print("\n 4. Start UI server:")
436
- print(" python ~/.claude-memory/api_server.py")
437
- print("\nDocumentation: https://github.com/varun369/SuperLocalMemoryV2")
438
- return True
439
- else:
440
- print("\n⚠ Some checks need attention:")
441
- if not all_passed:
442
- print(" - Fix required dependency issues above")
443
- if not db_ok:
444
- print(" - Database needs initialization")
445
- print(" Run: python setup_validator.py --init")
446
-
447
- if optional_issues:
448
- print("\nOptional (for full features):")
449
- print(" pip install scikit-learn numpy python-igraph leidenalg fastapi uvicorn")
450
-
451
- return False
452
-
453
-
454
- def main():
455
- """Main entry point."""
456
- import argparse
457
-
458
- parser = argparse.ArgumentParser(
459
- description="SuperLocalMemory V2 Setup Validator",
460
- formatter_class=argparse.RawDescriptionHelpFormatter,
461
- epilog="""
462
- Examples:
463
- python setup_validator.py # Check setup
464
- python setup_validator.py --init # Check and initialize database
465
-
466
- Author: Varun Pratap Bhardwaj
467
- Repository: https://github.com/varun369/SuperLocalMemoryV2
468
- """
469
- )
470
- parser.add_argument(
471
- '--init', '-i',
472
- action='store_true',
473
- help='Initialize database if needed'
474
- )
475
-
476
- args = parser.parse_args()
477
- success = validate_setup(auto_fix=args.init)
478
- sys.exit(0 if success else 1)
479
-
480
-
481
- if __name__ == "__main__":
482
- main()