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
package/bin/aider-smart DELETED
@@ -1,72 +0,0 @@
1
- #!/bin/bash
2
- # aider-smart - Aider with SuperLocalMemory context injection
3
- #
4
- # Copyright (c) 2026 Varun Pratap Bhardwaj
5
- # Licensed under MIT License
6
- #
7
- # Automatically injects relevant project context from SuperLocalMemory
8
- # when launching Aider CLI for AI-assisted coding.
9
-
10
- set -e
11
-
12
- SLM_DIR="${HOME}/.claude-memory"
13
-
14
- # Check if Aider is installed
15
- if ! command -v aider &> /dev/null; then
16
- echo "Error: Aider not found. Install: pip install aider-chat"
17
- exit 1
18
- fi
19
-
20
- # Check if SuperLocalMemory is installed
21
- if [ ! -d "$SLM_DIR" ]; then
22
- echo "Error: SuperLocalMemory V2 not installed"
23
- echo "Install from: https://github.com/varun369/SuperLocalMemoryV2"
24
- exit 1
25
- fi
26
-
27
- # Generate context from current project
28
- project=$(basename "$PWD")
29
- CONTEXT_FILE="/tmp/slm-aider-context-$$.txt"
30
-
31
- echo "🧠 Gathering project context from SuperLocalMemory..."
32
- echo ""
33
-
34
- # Get recent project memories
35
- if command -v slm &> /dev/null; then
36
- # Use slm command if available
37
- slm context > "$CONTEXT_FILE" 2>/dev/null || {
38
- "$SLM_DIR/bin/superlocalmemoryv2-recall" "$project" --limit 5 > "$CONTEXT_FILE" 2>/dev/null || true
39
- }
40
- else
41
- # Fallback to direct command
42
- "$SLM_DIR/bin/superlocalmemoryv2-recall" "$project" --limit 5 > "$CONTEXT_FILE" 2>/dev/null || true
43
- fi
44
-
45
- # Get coding patterns if available
46
- if [ -f "$SLM_DIR/pattern_learner.py" ]; then
47
- echo "" >> "$CONTEXT_FILE"
48
- echo "## Your Coding Patterns:" >> "$CONTEXT_FILE"
49
- python3 "$SLM_DIR/pattern_learner.py" context 0.6 >> "$CONTEXT_FILE" 2>/dev/null || true
50
- fi
51
-
52
- # Launch Aider with context
53
- if [ -s "$CONTEXT_FILE" ] && [ "$(wc -l < "$CONTEXT_FILE")" -gt 1 ]; then
54
- echo "✓ Context loaded from SuperLocalMemory"
55
- echo ""
56
-
57
- # Pass context to Aider
58
- aider \
59
- --read "$CONTEXT_FILE" \
60
- --message "Context from SuperLocalMemory V2 loaded. I have access to your project's memory and coding patterns." \
61
- "$@"
62
- else
63
- echo "⚠ No context found for project: $project"
64
- echo " Use: slm remember \"project info\" to save context"
65
- echo ""
66
-
67
- # Launch Aider without context
68
- aider "$@"
69
- fi
70
-
71
- # Cleanup
72
- rm -f "$CONTEXT_FILE"
@@ -1,4 +0,0 @@
1
- #!/bin/bash
2
- # SuperLocalMemory V2 - Learning System Status
3
- SLM_DIR="${HOME}/.claude-memory"
4
- exec "${SLM_DIR}/bin/slm" learning "${@:-status}"
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
- # SuperLocalMemory V2 - List Recent Memories Command Wrapper
3
- node ~/.claude-memory/hooks/memory-list-skill.js "$@"
@@ -1,4 +0,0 @@
1
- #!/bin/bash
2
- # SuperLocalMemory V2 - Show Learned Patterns
3
- SLM_DIR="${HOME}/.claude-memory"
4
- exec "${SLM_DIR}/bin/slm" patterns list "$@"
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
- # SuperLocalMemory V2 - Profile Management Command Wrapper
3
- node ~/.claude-memory/hooks/memory-profile-skill.js "$@"
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
- # SuperLocalMemory V2 - Recall (Search Memories) Command Wrapper
3
- node ~/.claude-memory/hooks/memory-recall-skill.js "$@"
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
- # SuperLocalMemory V2 - Remember (Save Memory) Command Wrapper
3
- node ~/.claude-memory/hooks/memory-remember-skill.js "$@"
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
- # SuperLocalMemory V2 - Reset Command Wrapper
3
- node ~/.claude-memory/hooks/memory-reset-skill.js "$@"
@@ -1,3 +0,0 @@
1
- #!/bin/bash
2
- # SuperLocalMemory V2 - Quick Status Check
3
- node ~/.claude-memory/hooks/memory-reset-skill.js status
@@ -1,16 +0,0 @@
1
- {
2
- "_README": "ChatGPT Integration — SuperLocalMemory V2 as ChatGPT Connector",
3
- "_requires": "ChatGPT Pro/Plus/Business/Enterprise with Developer Mode enabled",
4
- "_tools": "search(query) and fetch(id) — required by OpenAI MCP spec for Connectors",
5
- "_setup": {
6
- "step1": "Start MCP server: slm serve --port 8417",
7
- "step2": "Expose via tunnel: ngrok http 8417",
8
- "step3": "Copy the HTTPS URL from ngrok (e.g. https://abc123.ngrok.app)",
9
- "step4": "In ChatGPT: Settings → Connectors → Advanced → Enable Developer Mode",
10
- "step5": "Create new Connector → paste URL with /sse/ suffix (e.g. https://abc123.ngrok.app/sse/)",
11
- "step6": "Name it 'SuperLocalMemory' and click Create",
12
- "step7": "In any chat, click + → More → select SuperLocalMemory connector"
13
- },
14
- "_alternative_transport": "For Streamable HTTP (recommended): slm serve --transport streamable-http --port 8417",
15
- "_note": "100% local — your MCP server runs on YOUR machine. The tunnel just makes it reachable by ChatGPT servers. All data stays in ~/.claude-memory/memory.db"
16
- }
@@ -1,15 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "superlocalmemory-v2": {
4
- "command": "python3",
5
- "args": [
6
- "{{INSTALL_DIR}}/mcp_server.py"
7
- ],
8
- "cwd": "{{INSTALL_DIR}}",
9
- "env": {
10
- "PYTHONPATH": "{{INSTALL_DIR}}"
11
- },
12
- "description": "SuperLocalMemory V2 - Local memory system with knowledge graphs and pattern learning"
13
- }
14
- }
15
- }
@@ -1,214 +0,0 @@
1
- # Security Quick Reference — For Developers
2
-
3
- **Last Updated:** March 4, 2026
4
-
5
- ## TL;DR — Safe Coding Patterns
6
-
7
- ### ✅ DO THIS (Safe)
8
-
9
- ```javascript
10
- // Safe: Use textContent for plain text
11
- element.textContent = userContent;
12
-
13
- // Safe: Use escapeHtml() before DOM insertion
14
- element.innerHTML = escapeHtml(userContent);
15
-
16
- // Safe: Create elements programmatically
17
- const div = document.createElement('div');
18
- div.textContent = userContent;
19
- parent.appendChild(div);
20
- ```
21
-
22
- ### ❌ DON'T DO THIS (Dangerous)
23
-
24
- ```javascript
25
- // DANGEROUS: Direct assignment with user content
26
- element.innerHTML = userContent; // XSS VULNERABLE
27
-
28
- // DANGEROUS: Using code evaluation with user input
29
- // Never use eval, Function constructor, or similar
30
-
31
- // DANGEROUS: Inline event handlers with user content
32
- element.setAttribute('onclick', userCode); // XSS VULNERABLE
33
- ```
34
-
35
- ## Security Checklist — Before Committing
36
-
37
- - [ ] No direct innerHTML assignments without escapeHtml()
38
- - [ ] All user content either uses textContent or is escaped
39
- - [ ] No code evaluation with user input
40
- - [ ] No inline event handlers with dynamic content
41
- - [ ] All API endpoints return explicit Content-Type
42
- - [ ] SQL queries use parameterized statements (never string concatenation)
43
- - [ ] No secrets in code or config files
44
- - [ ] Run security tests: pytest tests/test_security_headers.py -v
45
-
46
- ## Common Patterns
47
-
48
- ### Rendering User-Generated Content
49
-
50
- **Pattern 1: Plain Text Only**
51
- ```javascript
52
- const contentDiv = document.getElementById('memory-content');
53
- contentDiv.textContent = memory.content; // Automatically safe
54
- ```
55
-
56
- **Pattern 2: Mixed Content (HTML Structure + User Text)**
57
- ```javascript
58
- const html = `
59
- <div class="memory-card">
60
- <h3>${escapeHtml(memory.title)}</h3>
61
- <p>${escapeHtml(memory.content)}</p>
62
- <span class="badge">${escapeHtml(memory.category)}</span>
63
- </div>
64
- `;
65
- container.innerHTML = html;
66
- ```
67
-
68
- **Pattern 3: Building DOM Programmatically (Most Secure)**
69
- ```javascript
70
- const card = document.createElement('div');
71
- card.className = 'memory-card';
72
-
73
- const title = document.createElement('h3');
74
- title.textContent = memory.title;
75
-
76
- const content = document.createElement('p');
77
- content.textContent = memory.content;
78
-
79
- card.appendChild(title);
80
- card.appendChild(content);
81
- container.appendChild(card);
82
- ```
83
-
84
- ### FastAPI Routes
85
-
86
- **Safe Pattern:**
87
- ```python
88
- @router.get("/api/memories")
89
- async def get_memories():
90
- # FastAPI automatically sets Content-Type: application/json
91
- return {
92
- "memories": memories, # User content here is safe in JSON
93
- "total": len(memories)
94
- }
95
- ```
96
-
97
- **SQL Queries:**
98
- ```python
99
- # SAFE: Parameterized query
100
- cursor.execute("SELECT * FROM memories WHERE id = ?", (memory_id,))
101
-
102
- # DANGEROUS: String concatenation (SQL injection)
103
- # Never use f-strings or concatenation for SQL queries
104
- ```
105
-
106
- ## Testing XSS Protection
107
-
108
- ```python
109
- # Test that XSS payloads are handled safely
110
- def test_xss_payload():
111
- payload = "<script>alert('xss')</script>"
112
-
113
- # This should be safe when:
114
- # 1. Returned as JSON with Content-Type: application/json
115
- # 2. Rendered with escapeHtml() on client
116
- # 3. Protected by CSP headers
117
-
118
- response = client.get(f"/api/memory?content={payload}")
119
- assert response.headers["Content-Type"] == "application/json"
120
- assert response.headers["X-Content-Type-Options"] == "nosniff"
121
- ```
122
-
123
- ## Security Headers Reference
124
-
125
- All responses include these headers automatically via SecurityHeadersMiddleware:
126
-
127
- - X-Content-Type-Options: nosniff
128
- - X-Frame-Options: DENY
129
- - X-XSS-Protection: 1; mode=block
130
- - Content-Security-Policy: (comprehensive policy)
131
- - Referrer-Policy: strict-origin-when-cross-origin
132
- - Cache-Control: no-store (API endpoints only)
133
-
134
- **Don't override these headers** unless you have a specific security reason and understand the implications.
135
-
136
- ## CORS Configuration
137
-
138
- Current allowed origins:
139
- - http://localhost:8765
140
- - http://127.0.0.1:8765
141
- - http://localhost:8417
142
- - http://127.0.0.1:8417
143
-
144
- **To add a new origin:**
145
- 1. Add to the allow_origins list in ui_server.py
146
- 2. Document why it's needed
147
- 3. Never use wildcard * in production
148
-
149
- ## When to Update Security
150
-
151
- ### Add New Route
152
- - [ ] Verify return type has explicit Content-Type
153
- - [ ] Test with XSS payloads
154
- - [ ] Add test case to test_security_headers.py
155
-
156
- ### Add New JavaScript
157
- - [ ] Use textContent for plain text
158
- - [ ] Use escapeHtml() for mixed content
159
- - [ ] Test rendering with XSS payloads
160
-
161
- ### Modify Security Headers
162
- - [ ] Document reason in commit message
163
- - [ ] Update SECURITY.md
164
- - [ ] Run full security test suite
165
- - [ ] Consider security implications
166
-
167
- ## Resources
168
-
169
- - **Full Security Policy:** See SECURITY.md
170
- - **Security Enhancement Details:** .backup/security-enhancement-2026-03-04.md
171
- - **Security Tests:** tests/test_security_headers.py
172
- - **Middleware Source:** security_middleware.py
173
- - **Client-Side Escaping:** ui/app.js (escapeHtml function)
174
-
175
- ## Quick Test Commands
176
-
177
- ```bash
178
- # Run security tests only
179
- pytest tests/test_security_headers.py -v
180
-
181
- # Run all tests
182
- pytest tests/ -x -q
183
-
184
- # Manual verification (browser)
185
- python3 ui_server.py
186
- # Open http://localhost:8765
187
- # DevTools → Network → Check response headers
188
- ```
189
-
190
- ## Red Flags — Stop and Review
191
-
192
- If you see any of these patterns, STOP and review:
193
-
194
- - innerHTML with user content (without escaping)
195
- - Code evaluation functions anywhere
196
- - String concatenation in SQL queries
197
- - CORS with wildcard *
198
- - User input in event handler attributes
199
- - Disabling CSP or security headers
200
- - Secrets or API keys in code
201
-
202
- ## When in Doubt
203
-
204
- **Ask these questions:**
205
- 1. Could a user inject a script tag here?
206
- 2. Is this content escaped before rendering?
207
- 3. Does this SQL query use parameters?
208
- 4. Could this header configuration weaken security?
209
-
210
- **If unsure:** Use the safest pattern (textContent or programmatic DOM creation).
211
-
212
- ---
213
-
214
- **Remember:** Defense in depth. We have multiple layers (headers, CSP, escaping). Use all of them.
@@ -1,139 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Memory List CLI Skill
4
- * List recent memories with sorting and filtering
5
- */
6
-
7
- const { execFile } = require('child_process');
8
- const { promisify } = require('util');
9
- const path = require('path');
10
-
11
- const execFileAsync = promisify(execFile);
12
-
13
- async function memoryListSkill() {
14
- const memoryScript = path.join(process.env.HOME, '.claude-memory', 'memory_store_v2.py');
15
- const args = process.argv.slice(2);
16
-
17
- // Show help if --help
18
- if (args.includes('--help') || args.includes('-h')) {
19
- console.log(`
20
- ╔══════════════════════════════════════════════════════════╗
21
- ║ ║
22
- ║ SuperLocalMemory V2 - List Recent Memories ║
23
- ║ ║
24
- ╚══════════════════════════════════════════════════════════╝
25
-
26
- Display recent memories with optional sorting and limits.
27
- Quick overview of what's stored in your memory database.
28
-
29
- Usage: memory-list [options]
30
-
31
- Options:
32
- --limit <n> Number of memories to show (default: 20)
33
- --sort <field> Sort by: recent, accessed, importance
34
- • recent: Latest created first (default)
35
- • accessed: Most recently accessed
36
- • importance: Highest importance first
37
- --full Show complete content without truncation
38
-
39
- Examples:
40
- memory-list
41
-
42
- memory-list --limit 50
43
-
44
- memory-list --sort importance
45
-
46
- memory-list --limit 10 --sort accessed --full
47
-
48
- Output Format:
49
- • ID, Content (smart truncated), Tags, Importance
50
- • Creation timestamp
51
- • Access count and last accessed time
52
-
53
- Notes:
54
- • Default shows last 20 memories
55
- • Smart truncation: full content if <5000 chars, preview if ≥5000 chars
56
- • Use --full flag to always show complete content
57
- • Sort by 'accessed' to find frequently used memories
58
- `);
59
- return;
60
- }
61
-
62
- // Parse options
63
- let limit = 20;
64
- let sortBy = 'recent';
65
- let showFull = false;
66
-
67
- for (let i = 0; i < args.length; i++) {
68
- const arg = args[i];
69
-
70
- if (arg === '--limit' && i + 1 < args.length) {
71
- const parsedLimit = parseInt(args[i + 1]);
72
- if (parsedLimit > 0 && parsedLimit <= 1000) {
73
- limit = parsedLimit;
74
- } else {
75
- console.error('❌ ERROR: Limit must be between 1-1000');
76
- return;
77
- }
78
- i++;
79
- } else if (arg === '--sort' && i + 1 < args.length) {
80
- const validSorts = ['recent', 'accessed', 'importance'];
81
- if (validSorts.includes(args[i + 1])) {
82
- sortBy = args[i + 1];
83
- } else {
84
- console.error(`❌ ERROR: Sort must be one of: ${validSorts.join(', ')}`);
85
- return;
86
- }
87
- i++;
88
- } else if (arg === '--full') {
89
- showFull = true;
90
- }
91
- }
92
-
93
- // Build Python command based on sort type
94
- // Note: V1 store only supports 'recent' and 'list' commands without sort flags
95
- let pythonArgs = [];
96
-
97
- if (sortBy === 'recent' || sortBy === 'accessed') {
98
- pythonArgs = ['recent', limit.toString()];
99
- } else {
100
- // Default to list for importance or other sorts
101
- pythonArgs = ['list', limit.toString()];
102
- }
103
-
104
- // Add --full flag if requested
105
- if (showFull) {
106
- pythonArgs.push('--full');
107
- }
108
-
109
- try {
110
- const { stdout, stderr } = await execFileAsync('python3', [memoryScript, ...pythonArgs]);
111
-
112
- if (stderr) {
113
- console.error('⚠️ Warning:', stderr);
114
- }
115
-
116
- console.log(`
117
- ╔══════════════════════════════════════════════════════════╗
118
- ║ Recent Memories (${sortBy} | limit: ${limit})
119
- ╚══════════════════════════════════════════════════════════╝
120
- `);
121
-
122
- console.log(stdout);
123
-
124
- // Show helpful next steps
125
- console.log(`
126
- Next steps:
127
- • Use \`memory-recall <query>\` to search memories
128
- • Use \`memory-remember <content>\` to add new memories
129
- • Use \`memory-list --sort <field>\` to change sort order
130
- `);
131
-
132
- } catch (error) {
133
- console.error('❌ Error listing memories:', error.message);
134
- if (error.stdout) console.log(error.stdout);
135
- if (error.stderr) console.error(error.stderr);
136
- }
137
- }
138
-
139
- memoryListSkill();