superlocalmemory 2.8.6 → 3.0.1

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 (431) hide show
  1. package/LICENSE +9 -1
  2. package/NOTICE +63 -0
  3. package/README.md +165 -480
  4. package/bin/slm +17 -449
  5. package/bin/slm-npm +62 -48
  6. package/conftest.py +5 -0
  7. package/docs/api-reference.md +284 -0
  8. package/docs/architecture.md +149 -0
  9. package/docs/auto-memory.md +150 -0
  10. package/docs/cli-reference.md +276 -0
  11. package/docs/compliance.md +191 -0
  12. package/docs/configuration.md +182 -0
  13. package/docs/getting-started.md +102 -0
  14. package/docs/ide-setup.md +261 -0
  15. package/docs/mcp-tools.md +220 -0
  16. package/docs/migration-from-v2.md +170 -0
  17. package/docs/profiles.md +173 -0
  18. package/docs/troubleshooting.md +310 -0
  19. package/{configs → ide/configs}/antigravity-mcp.json +3 -3
  20. package/ide/configs/chatgpt-desktop-mcp.json +16 -0
  21. package/{configs → ide/configs}/claude-desktop-mcp.json +3 -3
  22. package/{configs → ide/configs}/codex-mcp.toml +4 -4
  23. package/{configs → ide/configs}/continue-mcp.yaml +4 -3
  24. package/{configs → ide/configs}/continue-skills.yaml +6 -6
  25. package/ide/configs/cursor-mcp.json +15 -0
  26. package/{configs → ide/configs}/gemini-cli-mcp.json +2 -2
  27. package/{configs → ide/configs}/jetbrains-mcp.json +2 -2
  28. package/{configs → ide/configs}/opencode-mcp.json +2 -2
  29. package/{configs → ide/configs}/perplexity-mcp.json +2 -2
  30. package/{configs → ide/configs}/vscode-copilot-mcp.json +2 -2
  31. package/{configs → ide/configs}/windsurf-mcp.json +3 -3
  32. package/{configs → ide/configs}/zed-mcp.json +2 -2
  33. package/{hooks → ide/hooks}/context-hook.js +9 -20
  34. package/ide/hooks/memory-list-skill.js +70 -0
  35. package/ide/hooks/memory-profile-skill.js +101 -0
  36. package/ide/hooks/memory-recall-skill.js +62 -0
  37. package/ide/hooks/memory-remember-skill.js +68 -0
  38. package/ide/hooks/memory-reset-skill.js +160 -0
  39. package/{hooks → ide/hooks}/post-recall-hook.js +2 -2
  40. package/ide/integrations/langchain/README.md +106 -0
  41. package/ide/integrations/langchain/langchain_superlocalmemory/__init__.py +9 -0
  42. package/ide/integrations/langchain/langchain_superlocalmemory/chat_message_history.py +201 -0
  43. package/ide/integrations/langchain/pyproject.toml +38 -0
  44. package/{src/learning → ide/integrations/langchain}/tests/__init__.py +1 -0
  45. package/ide/integrations/langchain/tests/test_chat_message_history.py +215 -0
  46. package/ide/integrations/langchain/tests/test_security.py +117 -0
  47. package/ide/integrations/llamaindex/README.md +81 -0
  48. package/ide/integrations/llamaindex/llama_index/storage/chat_store/superlocalmemory/__init__.py +9 -0
  49. package/ide/integrations/llamaindex/llama_index/storage/chat_store/superlocalmemory/base.py +316 -0
  50. package/ide/integrations/llamaindex/pyproject.toml +43 -0
  51. package/{src/lifecycle → ide/integrations/llamaindex}/tests/__init__.py +1 -2
  52. package/ide/integrations/llamaindex/tests/test_chat_store.py +294 -0
  53. package/ide/integrations/llamaindex/tests/test_security.py +241 -0
  54. package/{skills → ide/skills}/slm-build-graph/SKILL.md +6 -6
  55. package/{skills → ide/skills}/slm-list-recent/SKILL.md +5 -5
  56. package/{skills → ide/skills}/slm-recall/SKILL.md +5 -5
  57. package/{skills → ide/skills}/slm-remember/SKILL.md +6 -6
  58. package/{skills → ide/skills}/slm-show-patterns/SKILL.md +7 -7
  59. package/{skills → ide/skills}/slm-status/SKILL.md +9 -9
  60. package/{skills → ide/skills}/slm-switch-profile/SKILL.md +9 -9
  61. package/package.json +13 -22
  62. package/pyproject.toml +85 -0
  63. package/scripts/build-dmg.sh +417 -0
  64. package/scripts/install-skills.ps1 +334 -0
  65. package/scripts/postinstall.js +2 -2
  66. package/scripts/start-dashboard.ps1 +52 -0
  67. package/scripts/start-dashboard.sh +41 -0
  68. package/scripts/sync-wiki.ps1 +127 -0
  69. package/scripts/sync-wiki.sh +82 -0
  70. package/scripts/test-dmg.sh +161 -0
  71. package/scripts/test-npm-package.ps1 +252 -0
  72. package/scripts/test-npm-package.sh +207 -0
  73. package/scripts/verify-install.ps1 +294 -0
  74. package/scripts/verify-install.sh +266 -0
  75. package/src/superlocalmemory/__init__.py +0 -0
  76. package/src/superlocalmemory/attribution/__init__.py +9 -0
  77. package/src/superlocalmemory/attribution/mathematical_dna.py +235 -0
  78. package/src/superlocalmemory/attribution/signer.py +153 -0
  79. package/src/superlocalmemory/attribution/watermark.py +189 -0
  80. package/src/superlocalmemory/cli/__init__.py +5 -0
  81. package/src/superlocalmemory/cli/commands.py +245 -0
  82. package/src/superlocalmemory/cli/main.py +89 -0
  83. package/src/superlocalmemory/cli/migrate_cmd.py +55 -0
  84. package/src/superlocalmemory/cli/post_install.py +99 -0
  85. package/src/superlocalmemory/cli/setup_wizard.py +129 -0
  86. package/src/superlocalmemory/compliance/__init__.py +0 -0
  87. package/src/superlocalmemory/compliance/abac.py +204 -0
  88. package/src/superlocalmemory/compliance/audit.py +314 -0
  89. package/src/superlocalmemory/compliance/eu_ai_act.py +131 -0
  90. package/src/superlocalmemory/compliance/gdpr.py +294 -0
  91. package/src/superlocalmemory/compliance/lifecycle.py +158 -0
  92. package/src/superlocalmemory/compliance/retention.py +232 -0
  93. package/src/superlocalmemory/compliance/scheduler.py +148 -0
  94. package/src/superlocalmemory/core/__init__.py +0 -0
  95. package/src/superlocalmemory/core/config.py +391 -0
  96. package/src/superlocalmemory/core/embeddings.py +293 -0
  97. package/src/superlocalmemory/core/engine.py +701 -0
  98. package/src/superlocalmemory/core/hooks.py +65 -0
  99. package/src/superlocalmemory/core/maintenance.py +172 -0
  100. package/src/superlocalmemory/core/modes.py +140 -0
  101. package/src/superlocalmemory/core/profiles.py +234 -0
  102. package/src/superlocalmemory/core/registry.py +117 -0
  103. package/src/superlocalmemory/dynamics/__init__.py +0 -0
  104. package/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +223 -0
  105. package/src/superlocalmemory/encoding/__init__.py +0 -0
  106. package/src/superlocalmemory/encoding/consolidator.py +485 -0
  107. package/src/superlocalmemory/encoding/emotional.py +125 -0
  108. package/src/superlocalmemory/encoding/entity_resolver.py +525 -0
  109. package/src/superlocalmemory/encoding/entropy_gate.py +104 -0
  110. package/src/superlocalmemory/encoding/fact_extractor.py +775 -0
  111. package/src/superlocalmemory/encoding/foresight.py +91 -0
  112. package/src/superlocalmemory/encoding/graph_builder.py +302 -0
  113. package/src/superlocalmemory/encoding/observation_builder.py +160 -0
  114. package/src/superlocalmemory/encoding/scene_builder.py +183 -0
  115. package/src/superlocalmemory/encoding/signal_inference.py +90 -0
  116. package/src/superlocalmemory/encoding/temporal_parser.py +426 -0
  117. package/src/superlocalmemory/encoding/type_router.py +235 -0
  118. package/src/superlocalmemory/hooks/__init__.py +3 -0
  119. package/src/superlocalmemory/hooks/auto_capture.py +111 -0
  120. package/src/superlocalmemory/hooks/auto_recall.py +93 -0
  121. package/src/superlocalmemory/hooks/ide_connector.py +204 -0
  122. package/src/superlocalmemory/hooks/rules_engine.py +99 -0
  123. package/src/superlocalmemory/infra/__init__.py +3 -0
  124. package/src/superlocalmemory/infra/auth_middleware.py +82 -0
  125. package/src/superlocalmemory/infra/backup.py +317 -0
  126. package/src/superlocalmemory/infra/cache_manager.py +267 -0
  127. package/src/superlocalmemory/infra/event_bus.py +381 -0
  128. package/src/superlocalmemory/infra/rate_limiter.py +135 -0
  129. package/src/{webhook_dispatcher.py → superlocalmemory/infra/webhook_dispatcher.py} +104 -101
  130. package/src/superlocalmemory/learning/__init__.py +0 -0
  131. package/src/superlocalmemory/learning/adaptive.py +172 -0
  132. package/src/superlocalmemory/learning/behavioral.py +490 -0
  133. package/src/superlocalmemory/learning/behavioral_listener.py +94 -0
  134. package/src/superlocalmemory/learning/bootstrap.py +298 -0
  135. package/src/superlocalmemory/learning/cross_project.py +399 -0
  136. package/src/superlocalmemory/learning/database.py +376 -0
  137. package/src/superlocalmemory/learning/engagement.py +323 -0
  138. package/src/superlocalmemory/learning/features.py +138 -0
  139. package/src/superlocalmemory/learning/feedback.py +316 -0
  140. package/src/superlocalmemory/learning/outcomes.py +255 -0
  141. package/src/superlocalmemory/learning/project_context.py +366 -0
  142. package/src/superlocalmemory/learning/ranker.py +155 -0
  143. package/src/superlocalmemory/learning/source_quality.py +303 -0
  144. package/src/superlocalmemory/learning/workflows.py +309 -0
  145. package/src/superlocalmemory/llm/__init__.py +0 -0
  146. package/src/superlocalmemory/llm/backbone.py +316 -0
  147. package/src/superlocalmemory/math/__init__.py +0 -0
  148. package/src/superlocalmemory/math/fisher.py +356 -0
  149. package/src/superlocalmemory/math/langevin.py +398 -0
  150. package/src/superlocalmemory/math/sheaf.py +257 -0
  151. package/src/superlocalmemory/mcp/__init__.py +0 -0
  152. package/src/superlocalmemory/mcp/resources.py +245 -0
  153. package/src/superlocalmemory/mcp/server.py +61 -0
  154. package/src/superlocalmemory/mcp/tools.py +18 -0
  155. package/src/superlocalmemory/mcp/tools_core.py +305 -0
  156. package/src/superlocalmemory/mcp/tools_v28.py +223 -0
  157. package/src/superlocalmemory/mcp/tools_v3.py +286 -0
  158. package/src/superlocalmemory/retrieval/__init__.py +0 -0
  159. package/src/superlocalmemory/retrieval/agentic.py +295 -0
  160. package/src/superlocalmemory/retrieval/ann_index.py +223 -0
  161. package/src/superlocalmemory/retrieval/bm25_channel.py +185 -0
  162. package/src/superlocalmemory/retrieval/bridge_discovery.py +170 -0
  163. package/src/superlocalmemory/retrieval/engine.py +390 -0
  164. package/src/superlocalmemory/retrieval/entity_channel.py +179 -0
  165. package/src/superlocalmemory/retrieval/fusion.py +78 -0
  166. package/src/superlocalmemory/retrieval/profile_channel.py +105 -0
  167. package/src/superlocalmemory/retrieval/reranker.py +154 -0
  168. package/src/superlocalmemory/retrieval/semantic_channel.py +232 -0
  169. package/src/superlocalmemory/retrieval/strategy.py +96 -0
  170. package/src/superlocalmemory/retrieval/temporal_channel.py +175 -0
  171. package/src/superlocalmemory/server/__init__.py +1 -0
  172. package/src/superlocalmemory/server/api.py +248 -0
  173. package/src/superlocalmemory/server/routes/__init__.py +4 -0
  174. package/src/superlocalmemory/server/routes/agents.py +107 -0
  175. package/src/superlocalmemory/server/routes/backup.py +91 -0
  176. package/src/superlocalmemory/server/routes/behavioral.py +127 -0
  177. package/src/superlocalmemory/server/routes/compliance.py +160 -0
  178. package/src/superlocalmemory/server/routes/data_io.py +188 -0
  179. package/src/superlocalmemory/server/routes/events.py +183 -0
  180. package/src/superlocalmemory/server/routes/helpers.py +85 -0
  181. package/src/superlocalmemory/server/routes/learning.py +273 -0
  182. package/src/superlocalmemory/server/routes/lifecycle.py +116 -0
  183. package/src/superlocalmemory/server/routes/memories.py +399 -0
  184. package/src/superlocalmemory/server/routes/profiles.py +219 -0
  185. package/src/superlocalmemory/server/routes/stats.py +346 -0
  186. package/src/superlocalmemory/server/routes/v3_api.py +365 -0
  187. package/src/superlocalmemory/server/routes/ws.py +82 -0
  188. package/src/superlocalmemory/server/security_middleware.py +57 -0
  189. package/src/superlocalmemory/server/ui.py +245 -0
  190. package/src/superlocalmemory/storage/__init__.py +0 -0
  191. package/src/superlocalmemory/storage/access_control.py +182 -0
  192. package/src/superlocalmemory/storage/database.py +594 -0
  193. package/src/superlocalmemory/storage/migrations.py +303 -0
  194. package/src/superlocalmemory/storage/models.py +406 -0
  195. package/src/superlocalmemory/storage/schema.py +726 -0
  196. package/src/superlocalmemory/storage/v2_migrator.py +317 -0
  197. package/src/superlocalmemory/trust/__init__.py +0 -0
  198. package/src/superlocalmemory/trust/gate.py +130 -0
  199. package/src/superlocalmemory/trust/provenance.py +124 -0
  200. package/src/superlocalmemory/trust/scorer.py +347 -0
  201. package/src/superlocalmemory/trust/signals.py +153 -0
  202. package/ui/index.html +278 -5
  203. package/ui/js/auto-settings.js +70 -0
  204. package/ui/js/dashboard.js +90 -0
  205. package/ui/js/fact-detail.js +92 -0
  206. package/ui/js/feedback.js +2 -2
  207. package/ui/js/ide-status.js +102 -0
  208. package/ui/js/math-health.js +98 -0
  209. package/ui/js/recall-lab.js +127 -0
  210. package/ui/js/settings.js +2 -2
  211. package/ui/js/trust-dashboard.js +73 -0
  212. package/api_server.py +0 -724
  213. package/bin/aider-smart +0 -72
  214. package/bin/superlocalmemoryv2-learning +0 -4
  215. package/bin/superlocalmemoryv2-list +0 -3
  216. package/bin/superlocalmemoryv2-patterns +0 -4
  217. package/bin/superlocalmemoryv2-profile +0 -3
  218. package/bin/superlocalmemoryv2-recall +0 -3
  219. package/bin/superlocalmemoryv2-remember +0 -3
  220. package/bin/superlocalmemoryv2-reset +0 -3
  221. package/bin/superlocalmemoryv2-status +0 -3
  222. package/configs/chatgpt-desktop-mcp.json +0 -16
  223. package/configs/cursor-mcp.json +0 -15
  224. package/hooks/memory-list-skill.js +0 -139
  225. package/hooks/memory-profile-skill.js +0 -273
  226. package/hooks/memory-recall-skill.js +0 -114
  227. package/hooks/memory-remember-skill.js +0 -127
  228. package/hooks/memory-reset-skill.js +0 -274
  229. package/mcp_server.py +0 -1808
  230. package/requirements-core.txt +0 -22
  231. package/requirements-learning.txt +0 -12
  232. package/requirements.txt +0 -12
  233. package/src/agent_registry.py +0 -411
  234. package/src/auth_middleware.py +0 -61
  235. package/src/auto_backup.py +0 -459
  236. package/src/behavioral/__init__.py +0 -49
  237. package/src/behavioral/behavioral_listener.py +0 -203
  238. package/src/behavioral/behavioral_patterns.py +0 -275
  239. package/src/behavioral/cross_project_transfer.py +0 -206
  240. package/src/behavioral/outcome_inference.py +0 -194
  241. package/src/behavioral/outcome_tracker.py +0 -193
  242. package/src/behavioral/tests/__init__.py +0 -4
  243. package/src/behavioral/tests/test_behavioral_integration.py +0 -108
  244. package/src/behavioral/tests/test_behavioral_patterns.py +0 -150
  245. package/src/behavioral/tests/test_cross_project_transfer.py +0 -142
  246. package/src/behavioral/tests/test_mcp_behavioral.py +0 -139
  247. package/src/behavioral/tests/test_mcp_report_outcome.py +0 -117
  248. package/src/behavioral/tests/test_outcome_inference.py +0 -107
  249. package/src/behavioral/tests/test_outcome_tracker.py +0 -96
  250. package/src/cache_manager.py +0 -518
  251. package/src/compliance/__init__.py +0 -48
  252. package/src/compliance/abac_engine.py +0 -149
  253. package/src/compliance/abac_middleware.py +0 -116
  254. package/src/compliance/audit_db.py +0 -215
  255. package/src/compliance/audit_logger.py +0 -148
  256. package/src/compliance/retention_manager.py +0 -289
  257. package/src/compliance/retention_scheduler.py +0 -186
  258. package/src/compliance/tests/__init__.py +0 -4
  259. package/src/compliance/tests/test_abac_enforcement.py +0 -95
  260. package/src/compliance/tests/test_abac_engine.py +0 -124
  261. package/src/compliance/tests/test_abac_mcp_integration.py +0 -118
  262. package/src/compliance/tests/test_audit_db.py +0 -123
  263. package/src/compliance/tests/test_audit_logger.py +0 -98
  264. package/src/compliance/tests/test_mcp_audit.py +0 -128
  265. package/src/compliance/tests/test_mcp_retention_policy.py +0 -125
  266. package/src/compliance/tests/test_retention_manager.py +0 -131
  267. package/src/compliance/tests/test_retention_scheduler.py +0 -99
  268. package/src/compression/__init__.py +0 -25
  269. package/src/compression/cli.py +0 -150
  270. package/src/compression/cold_storage.py +0 -217
  271. package/src/compression/config.py +0 -72
  272. package/src/compression/orchestrator.py +0 -133
  273. package/src/compression/tier2_compressor.py +0 -228
  274. package/src/compression/tier3_compressor.py +0 -153
  275. package/src/compression/tier_classifier.py +0 -148
  276. package/src/db_connection_manager.py +0 -536
  277. package/src/embedding_engine.py +0 -63
  278. package/src/embeddings/__init__.py +0 -47
  279. package/src/embeddings/cache.py +0 -70
  280. package/src/embeddings/cli.py +0 -113
  281. package/src/embeddings/constants.py +0 -47
  282. package/src/embeddings/database.py +0 -91
  283. package/src/embeddings/engine.py +0 -247
  284. package/src/embeddings/model_loader.py +0 -145
  285. package/src/event_bus.py +0 -562
  286. package/src/graph/__init__.py +0 -36
  287. package/src/graph/build_helpers.py +0 -74
  288. package/src/graph/cli.py +0 -87
  289. package/src/graph/cluster_builder.py +0 -188
  290. package/src/graph/cluster_summary.py +0 -148
  291. package/src/graph/constants.py +0 -47
  292. package/src/graph/edge_builder.py +0 -162
  293. package/src/graph/entity_extractor.py +0 -95
  294. package/src/graph/graph_core.py +0 -226
  295. package/src/graph/graph_search.py +0 -231
  296. package/src/graph/hierarchical.py +0 -207
  297. package/src/graph/schema.py +0 -99
  298. package/src/graph_engine.py +0 -52
  299. package/src/hnsw_index.py +0 -628
  300. package/src/hybrid_search.py +0 -46
  301. package/src/learning/__init__.py +0 -217
  302. package/src/learning/adaptive_ranker.py +0 -682
  303. package/src/learning/bootstrap/__init__.py +0 -69
  304. package/src/learning/bootstrap/constants.py +0 -93
  305. package/src/learning/bootstrap/db_queries.py +0 -316
  306. package/src/learning/bootstrap/sampling.py +0 -82
  307. package/src/learning/bootstrap/text_utils.py +0 -71
  308. package/src/learning/cross_project_aggregator.py +0 -857
  309. package/src/learning/db/__init__.py +0 -40
  310. package/src/learning/db/constants.py +0 -44
  311. package/src/learning/db/schema.py +0 -279
  312. package/src/learning/engagement_tracker.py +0 -628
  313. package/src/learning/feature_extractor.py +0 -708
  314. package/src/learning/feedback_collector.py +0 -806
  315. package/src/learning/learning_db.py +0 -915
  316. package/src/learning/project_context_manager.py +0 -572
  317. package/src/learning/ranking/__init__.py +0 -33
  318. package/src/learning/ranking/constants.py +0 -84
  319. package/src/learning/ranking/helpers.py +0 -278
  320. package/src/learning/source_quality_scorer.py +0 -676
  321. package/src/learning/synthetic_bootstrap.py +0 -755
  322. package/src/learning/tests/test_adaptive_ranker.py +0 -325
  323. package/src/learning/tests/test_adaptive_ranker_v28.py +0 -60
  324. package/src/learning/tests/test_aggregator.py +0 -306
  325. package/src/learning/tests/test_auto_retrain_v28.py +0 -35
  326. package/src/learning/tests/test_e2e_ranking_v28.py +0 -82
  327. package/src/learning/tests/test_feature_extractor_v28.py +0 -93
  328. package/src/learning/tests/test_feedback_collector.py +0 -294
  329. package/src/learning/tests/test_learning_db.py +0 -602
  330. package/src/learning/tests/test_learning_db_v28.py +0 -110
  331. package/src/learning/tests/test_learning_init_v28.py +0 -48
  332. package/src/learning/tests/test_outcome_signals.py +0 -48
  333. package/src/learning/tests/test_project_context.py +0 -292
  334. package/src/learning/tests/test_schema_migration.py +0 -319
  335. package/src/learning/tests/test_signal_inference.py +0 -397
  336. package/src/learning/tests/test_source_quality.py +0 -351
  337. package/src/learning/tests/test_synthetic_bootstrap.py +0 -429
  338. package/src/learning/tests/test_workflow_miner.py +0 -318
  339. package/src/learning/workflow_pattern_miner.py +0 -655
  340. package/src/lifecycle/__init__.py +0 -54
  341. package/src/lifecycle/bounded_growth.py +0 -239
  342. package/src/lifecycle/compaction_engine.py +0 -226
  343. package/src/lifecycle/lifecycle_engine.py +0 -355
  344. package/src/lifecycle/lifecycle_evaluator.py +0 -257
  345. package/src/lifecycle/lifecycle_scheduler.py +0 -130
  346. package/src/lifecycle/retention_policy.py +0 -285
  347. package/src/lifecycle/tests/test_bounded_growth.py +0 -193
  348. package/src/lifecycle/tests/test_compaction.py +0 -179
  349. package/src/lifecycle/tests/test_lifecycle_engine.py +0 -137
  350. package/src/lifecycle/tests/test_lifecycle_evaluation.py +0 -177
  351. package/src/lifecycle/tests/test_lifecycle_scheduler.py +0 -127
  352. package/src/lifecycle/tests/test_lifecycle_search.py +0 -109
  353. package/src/lifecycle/tests/test_mcp_compact.py +0 -149
  354. package/src/lifecycle/tests/test_mcp_lifecycle_status.py +0 -114
  355. package/src/lifecycle/tests/test_retention_policy.py +0 -162
  356. package/src/mcp_tools_v28.py +0 -281
  357. package/src/memory/__init__.py +0 -36
  358. package/src/memory/cli.py +0 -205
  359. package/src/memory/constants.py +0 -39
  360. package/src/memory/helpers.py +0 -28
  361. package/src/memory/schema.py +0 -166
  362. package/src/memory-profiles.py +0 -595
  363. package/src/memory-reset.py +0 -491
  364. package/src/memory_compression.py +0 -989
  365. package/src/memory_store_v2.py +0 -1155
  366. package/src/migrate_v1_to_v2.py +0 -629
  367. package/src/pattern_learner.py +0 -34
  368. package/src/patterns/__init__.py +0 -24
  369. package/src/patterns/analyzers.py +0 -251
  370. package/src/patterns/learner.py +0 -271
  371. package/src/patterns/scoring.py +0 -171
  372. package/src/patterns/store.py +0 -225
  373. package/src/patterns/terminology.py +0 -140
  374. package/src/provenance_tracker.py +0 -312
  375. package/src/qualixar_attribution.py +0 -139
  376. package/src/qualixar_watermark.py +0 -78
  377. package/src/query_optimizer.py +0 -511
  378. package/src/rate_limiter.py +0 -83
  379. package/src/search/__init__.py +0 -20
  380. package/src/search/cli.py +0 -77
  381. package/src/search/constants.py +0 -26
  382. package/src/search/engine.py +0 -241
  383. package/src/search/fusion.py +0 -122
  384. package/src/search/index_loader.py +0 -114
  385. package/src/search/methods.py +0 -162
  386. package/src/search_engine_v2.py +0 -401
  387. package/src/setup_validator.py +0 -482
  388. package/src/subscription_manager.py +0 -391
  389. package/src/tree/__init__.py +0 -59
  390. package/src/tree/builder.py +0 -185
  391. package/src/tree/nodes.py +0 -202
  392. package/src/tree/queries.py +0 -257
  393. package/src/tree/schema.py +0 -80
  394. package/src/tree_manager.py +0 -19
  395. package/src/trust/__init__.py +0 -45
  396. package/src/trust/constants.py +0 -66
  397. package/src/trust/queries.py +0 -157
  398. package/src/trust/schema.py +0 -95
  399. package/src/trust/scorer.py +0 -299
  400. package/src/trust/signals.py +0 -95
  401. package/src/trust_scorer.py +0 -44
  402. package/ui/app.js +0 -1588
  403. package/ui/js/graph-cytoscape-monolithic-backup.js +0 -1168
  404. package/ui/js/graph-cytoscape.js +0 -1168
  405. package/ui/js/graph-d3-backup.js +0 -32
  406. package/ui/js/graph.js +0 -32
  407. package/ui_server.py +0 -286
  408. /package/docs/{ACCESSIBILITY.md → v2-archive/ACCESSIBILITY.md} +0 -0
  409. /package/docs/{ARCHITECTURE.md → v2-archive/ARCHITECTURE.md} +0 -0
  410. /package/docs/{CLI-COMMANDS-REFERENCE.md → v2-archive/CLI-COMMANDS-REFERENCE.md} +0 -0
  411. /package/docs/{COMPRESSION-README.md → v2-archive/COMPRESSION-README.md} +0 -0
  412. /package/docs/{FRAMEWORK-INTEGRATIONS.md → v2-archive/FRAMEWORK-INTEGRATIONS.md} +0 -0
  413. /package/docs/{MCP-MANUAL-SETUP.md → v2-archive/MCP-MANUAL-SETUP.md} +0 -0
  414. /package/docs/{MCP-TROUBLESHOOTING.md → v2-archive/MCP-TROUBLESHOOTING.md} +0 -0
  415. /package/docs/{PATTERN-LEARNING.md → v2-archive/PATTERN-LEARNING.md} +0 -0
  416. /package/docs/{PROFILES-GUIDE.md → v2-archive/PROFILES-GUIDE.md} +0 -0
  417. /package/docs/{RESET-GUIDE.md → v2-archive/RESET-GUIDE.md} +0 -0
  418. /package/docs/{SEARCH-ENGINE-V2.2.0.md → v2-archive/SEARCH-ENGINE-V2.2.0.md} +0 -0
  419. /package/docs/{SEARCH-INTEGRATION-GUIDE.md → v2-archive/SEARCH-INTEGRATION-GUIDE.md} +0 -0
  420. /package/docs/{UI-SERVER.md → v2-archive/UI-SERVER.md} +0 -0
  421. /package/docs/{UNIVERSAL-INTEGRATION.md → v2-archive/UNIVERSAL-INTEGRATION.md} +0 -0
  422. /package/docs/{V2.2.0-OPTIONAL-SEARCH.md → v2-archive/V2.2.0-OPTIONAL-SEARCH.md} +0 -0
  423. /package/docs/{WINDOWS-INSTALL-README.txt → v2-archive/WINDOWS-INSTALL-README.txt} +0 -0
  424. /package/docs/{WINDOWS-POST-INSTALL.txt → v2-archive/WINDOWS-POST-INSTALL.txt} +0 -0
  425. /package/docs/{example_graph_usage.py → v2-archive/example_graph_usage.py} +0 -0
  426. /package/{completions → ide/completions}/slm.bash +0 -0
  427. /package/{completions → ide/completions}/slm.zsh +0 -0
  428. /package/{configs → ide/configs}/cody-commands.json +0 -0
  429. /package/{install-skills.sh → scripts/install-skills.sh} +0 -0
  430. /package/{install.ps1 → scripts/install.ps1} +0 -0
  431. /package/{install.sh → scripts/install.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,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();
@@ -1,273 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Memory Profile CLI Skill
4
- * Provides memory-profile commands for managing multiple memory contexts
5
- */
6
-
7
- const { execFile } = require('child_process');
8
- const { promisify } = require('util');
9
- const path = require('path');
10
- const readline = require('readline');
11
-
12
- const execFileAsync = promisify(execFile);
13
-
14
- const rl = readline.createInterface({
15
- input: process.stdin,
16
- output: process.stdout
17
- });
18
-
19
- const question = (query) => new Promise((resolve) => rl.question(query, resolve));
20
-
21
- async function memoryProfileSkill() {
22
- const profileScript = path.join(process.env.HOME, '.claude-memory', 'memory-profiles.py');
23
- const args = process.argv.slice(2); // Get command line arguments
24
-
25
- // Show help if no args
26
- if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
27
- console.log(`
28
- ╔══════════════════════════════════════════════════════════╗
29
- ║ ║
30
- ║ SuperLocalMemory V2 - Profile Management ║
31
- ║ ║
32
- ╚══════════════════════════════════════════════════════════╝
33
-
34
- Profiles let you maintain separate memory contexts in ONE database:
35
- • Work vs Personal projects
36
- • Different clients or teams
37
- • Experimentation vs Production
38
-
39
- All profiles share one database. Switching is instant and safe.
40
- No data copying, no data loss risk.
41
-
42
- Usage: memory-profile <command> [options]
43
-
44
- Commands:
45
- list List all profiles and show active one
46
- current Show current active profile
47
- create <name> Create a new empty profile
48
- switch <name> Switch to a different profile (requires restart)
49
- delete <name> Delete a profile (with confirmation)
50
-
51
- Examples:
52
- memory-profile list
53
- memory-profile current
54
- memory-profile create work
55
- memory-profile switch work
56
- memory-profile delete old-project
57
-
58
- Notes:
59
- • Default profile is always available
60
- • Switching profiles requires restarting Claude CLI
61
- • Deleting a profile is permanent (but creates backup)
62
- `);
63
- rl.close();
64
- return;
65
- }
66
-
67
- const command = args[0];
68
-
69
- // LIST command
70
- if (command === 'list') {
71
- try {
72
- const { stdout } = await execFileAsync('python', [profileScript, 'list']);
73
- console.log(stdout);
74
- } catch (error) {
75
- console.error('❌ Error:', error.message);
76
- }
77
- rl.close();
78
- return;
79
- }
80
-
81
- // CURRENT command
82
- if (command === 'current') {
83
- try {
84
- const { stdout } = await execFileAsync('python', [profileScript, 'current']);
85
- console.log(stdout);
86
- } catch (error) {
87
- console.error('❌ Error:', error.message);
88
- }
89
- rl.close();
90
- return;
91
- }
92
-
93
- // CREATE command
94
- if (command === 'create') {
95
- if (args.length < 2) {
96
- console.log(`
97
- ❌ ERROR: Profile name required
98
-
99
- Usage: memory-profile create <name> [options]
100
-
101
- Options:
102
- --description "text" Profile description
103
- --from-current Copy current profile's data to new profile
104
-
105
- Examples:
106
- memory-profile create work
107
- memory-profile create work --description "Work projects"
108
- memory-profile create personal --from-current
109
- `);
110
- rl.close();
111
- return;
112
- }
113
-
114
- const profileName = args[1];
115
- const pythonArgs = ['create', profileName];
116
-
117
- // Check for --description flag
118
- const descIndex = args.indexOf('--description');
119
- if (descIndex !== -1 && descIndex + 1 < args.length) {
120
- pythonArgs.push('--description', args[descIndex + 1]);
121
- }
122
-
123
- // Check for --from-current flag
124
- if (args.includes('--from-current')) {
125
- pythonArgs.push('--from-current');
126
- }
127
-
128
- try {
129
- const { stdout } = await execFileAsync('python', [profileScript, ...pythonArgs]);
130
- console.log(stdout);
131
- } catch (error) {
132
- console.error('❌ Error:', error.message);
133
- if (error.stdout) console.log(error.stdout);
134
- }
135
- rl.close();
136
- return;
137
- }
138
-
139
- // SWITCH command
140
- if (command === 'switch') {
141
- if (args.length < 2) {
142
- console.log(`
143
- ❌ ERROR: Profile name required
144
-
145
- Usage: memory-profile switch <name>
146
-
147
- Example:
148
- memory-profile switch work
149
-
150
- After switching, restart Claude CLI for changes to take effect.
151
- `);
152
- rl.close();
153
- return;
154
- }
155
-
156
- const profileName = args[1];
157
-
158
- console.log(`
159
- ╔══════════════════════════════════════════════════════════╗
160
- ║ Profile Switch ║
161
- ╚══════════════════════════════════════════════════════════╝
162
-
163
- This will switch the active profile to "${profileName}".
164
- All profiles share one database — switching is instant and safe.
165
- Your current memories are always preserved.
166
- `);
167
-
168
- const answer = await question('Proceed with profile switch? (yes/no): ');
169
-
170
- if (answer.toLowerCase() === 'yes') {
171
- try {
172
- const { stdout } = await execFileAsync('python', [
173
- profileScript,
174
- 'switch',
175
- profileName
176
- ]);
177
- console.log(stdout);
178
- } catch (error) {
179
- console.error('❌ Error:', error.message);
180
- if (error.stdout) console.log(error.stdout);
181
- }
182
- } else {
183
- console.log('\nCancelled. No changes made.');
184
- }
185
-
186
- rl.close();
187
- return;
188
- }
189
-
190
- // DELETE command
191
- if (command === 'delete') {
192
- if (args.length < 2) {
193
- console.log(`
194
- ❌ ERROR: Profile name required
195
-
196
- Usage: memory-profile delete <name>
197
-
198
- Example:
199
- memory-profile delete old-project
200
-
201
- Cannot delete:
202
- • The "default" profile
203
- • The currently active profile
204
- `);
205
- rl.close();
206
- return;
207
- }
208
-
209
- const profileName = args[1];
210
-
211
- // Prevent deleting default
212
- if (profileName === 'default') {
213
- console.log(`
214
- ❌ ERROR: Cannot delete the default profile
215
-
216
- The default profile is protected and cannot be deleted.
217
- `);
218
- rl.close();
219
- return;
220
- }
221
-
222
- console.log(`
223
- ╔══════════════════════════════════════════════════════════╗
224
- ║ ⚠️ DELETE PROFILE WARNING ⚠️ ║
225
- ╚══════════════════════════════════════════════════════════╝
226
-
227
- This will PERMANENTLY delete profile: "${profileName}"
228
-
229
- What will be deleted:
230
- 🔴 All memories in this profile
231
- 🔴 Graph data (nodes, edges, clusters)
232
- 🔴 Learned patterns
233
- 🔴 Compressed archives
234
-
235
- A backup will be created before deletion.
236
-
237
- `);
238
-
239
- const answer = await question(`Type the profile name "${profileName}" to confirm: `);
240
-
241
- if (answer === profileName) {
242
- try {
243
- const { stdout } = await execFileAsync('python', [
244
- profileScript,
245
- 'delete',
246
- profileName
247
- ]);
248
- console.log(stdout);
249
- } catch (error) {
250
- console.error('❌ Error:', error.message);
251
- if (error.stdout) console.log(error.stdout);
252
- }
253
- } else {
254
- console.log('\nCancelled. No changes made.');
255
- console.log(`(You must type exactly "${profileName}" to confirm)`);
256
- }
257
-
258
- rl.close();
259
- return;
260
- }
261
-
262
- // Unknown command
263
- console.log(`
264
- ❌ Unknown command: ${command}
265
-
266
- Valid commands: list, current, create, switch, delete
267
-
268
- Use: memory-profile --help for more information
269
- `);
270
- rl.close();
271
- }
272
-
273
- memoryProfileSkill();
@@ -1,114 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Memory Recall CLI Skill
4
- * Search and retrieve memories with advanced 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 memoryRecallSkill() {
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 no args or --help
18
- if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
19
- console.log(`
20
- ╔══════════════════════════════════════════════════════════╗
21
- ║ ║
22
- ║ SuperLocalMemory V2 - Recall (Search Memories) ║
23
- ║ ║
24
- ╚══════════════════════════════════════════════════════════╝
25
-
26
- Search your memory store using semantic search and filters.
27
- Finds relevant memories using TF-IDF similarity and metadata.
28
-
29
- Usage: memory-recall <query> [options]
30
-
31
- Arguments:
32
- <query> Search query (required)
33
-
34
- Options:
35
- --limit <n> Maximum results to return (default: 10)
36
- --full Show complete content without truncation
37
-
38
- Examples:
39
- memory-recall "authentication bug"
40
-
41
- memory-recall "API configuration" --limit 5
42
-
43
- memory-recall "security best practices" --full
44
-
45
- memory-recall "user preferences"
46
-
47
- Output Format:
48
- • Ranked by relevance (TF-IDF cosine similarity)
49
- • Shows: ID, Content, Tags, Importance, Timestamp
50
- • Higher scores = better matches
51
- • Smart truncation: full content if <5000 chars, preview if ≥5000 chars
52
- • Use --full flag to always show complete content
53
-
54
- Notes:
55
- • Uses local TF-IDF search (no external APIs)
56
- • Searches content, summary, and tags
57
- • Empty query returns recent memories
58
- • Use quotes for multi-word queries
59
- `);
60
- return;
61
- }
62
-
63
- // Parse query and options
64
- let query = null;
65
- const pythonArgs = ['search'];
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
- // Note: V1 store doesn't support --limit in search, will truncate output instead
72
- i++; // Skip but don't add to pythonArgs
73
- } else if (arg === '--full') {
74
- pythonArgs.push('--full');
75
- } else if (!arg.startsWith('--') && query === null) {
76
- query = arg;
77
- }
78
- }
79
-
80
- // Validate query
81
- if (!query || query.trim().length === 0) {
82
- console.log(`
83
- ❌ ERROR: Search query required
84
-
85
- Usage: memory-recall <query> [options]
86
-
87
- Example:
88
- memory-recall "search term" --limit 10
89
-
90
- Use --help for more information
91
- `);
92
- return;
93
- }
94
-
95
- // Add query to Python args
96
- pythonArgs.push(query);
97
-
98
- try {
99
- const { stdout, stderr } = await execFileAsync('python3', [memoryScript, ...pythonArgs]);
100
-
101
- if (stderr) {
102
- console.error('⚠️ Warning:', stderr);
103
- }
104
-
105
- console.log(stdout);
106
-
107
- } catch (error) {
108
- console.error('❌ Error searching memories:', error.message);
109
- if (error.stdout) console.log(error.stdout);
110
- if (error.stderr) console.error(error.stderr);
111
- }
112
- }
113
-
114
- memoryRecallSkill();