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,13 +1,13 @@
1
- # SuperLocalMemory V2 - Codex CLI MCP Configuration
1
+ # SuperLocalMemory V3 - Codex CLI MCP Configuration
2
2
  # Copyright (c) 2026 Varun Pratap Bhardwaj
3
3
  # Licensed under MIT License
4
4
  #
5
5
  # Auto-configured by install.sh or use: codex mcp add
6
6
  # Manual: Copy this to ~/.codex/config.toml
7
7
 
8
- [mcp_servers.superlocalmemory-v2]
8
+ [mcp_servers.superlocalmemory]
9
9
  command = "python3"
10
- args = ["{{INSTALL_DIR}}/mcp_server.py"]
10
+ args = ["-m", "superlocalmemory.mcp.server"]
11
11
 
12
- [mcp_servers.superlocalmemory-v2.env]
12
+ [mcp_servers.superlocalmemory.env]
13
13
  PYTHONPATH = "{{INSTALL_DIR}}"
@@ -4,11 +4,12 @@
4
4
  contextProviders:
5
5
  - name: mcp
6
6
  params:
7
- serverName: "superlocalmemory-v2"
7
+ serverName: "superlocalmemory"
8
8
  command: "python3"
9
9
  args:
10
- - "{{INSTALL_DIR}}/mcp_server.py"
11
- description: "SuperLocalMemory V2 - Search your memory system"
10
+ - "-m"
11
+ - "superlocalmemory.mcp.server"
12
+ description: "SuperLocalMemory V3 - Search your memory system"
12
13
 
13
14
  # You can also use Continue's slash commands with SuperLocalMemory
14
15
  # See continue-skills.yaml for slash command configuration
@@ -1,23 +1,23 @@
1
- # Continue.dev Slash Commands for SuperLocalMemory V2
2
- # These map to your existing bash scripts (no duplicate logic)
1
+ # Continue.dev Slash Commands for SuperLocalMemory V3
2
+ # These map to the V3 CLI commands
3
3
  # Add this to ~/.continue/config.yaml
4
4
 
5
5
  slashCommands:
6
6
  - name: "slm-remember"
7
7
  description: "Save to SuperLocalMemory"
8
- run: "~/.claude-memory/bin/superlocalmemoryv2-remember \"{{input}}\""
8
+ run: "slm remember \"{{input}}\""
9
9
 
10
10
  - name: "slm-recall"
11
11
  description: "Search SuperLocalMemory"
12
- run: "~/.claude-memory/bin/superlocalmemoryv2-recall \"{{input}}\""
12
+ run: "slm recall \"{{input}}\""
13
13
 
14
14
  - name: "slm-list"
15
15
  description: "List recent memories"
16
- run: "~/.claude-memory/bin/superlocalmemoryv2-list"
16
+ run: "slm list"
17
17
 
18
18
  - name: "slm-status"
19
19
  description: "SuperLocalMemory system status"
20
- run: "~/.claude-memory/bin/superlocalmemoryv2-status"
20
+ run: "slm status"
21
21
 
22
22
  # Usage in Continue.dev:
23
23
  # /slm-remember Use FastAPI for REST APIs
@@ -0,0 +1,15 @@
1
+ {
2
+ "mcpServers": {
3
+ "superlocalmemory": {
4
+ "command": "python3",
5
+ "args": [
6
+ "-m", "superlocalmemory.mcp.server"
7
+ ],
8
+ "cwd": "{{INSTALL_DIR}}",
9
+ "env": {
10
+ "PYTHONPATH": "{{INSTALL_DIR}}"
11
+ },
12
+ "description": "SuperLocalMemory V3 - Local memory system with mathematical foundations and knowledge graphs"
13
+ }
14
+ }
15
+ }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "mcpServers": {
3
- "superlocalmemory-v2": {
3
+ "superlocalmemory": {
4
4
  "command": "python3",
5
- "args": ["{{INSTALL_DIR}}/mcp_server.py"],
5
+ "args": ["-m", "superlocalmemory.mcp.server"],
6
6
  "env": {
7
7
  "PYTHONPATH": "{{INSTALL_DIR}}"
8
8
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "mcpServers": {
3
- "superlocalmemory-v2": {
3
+ "superlocalmemory": {
4
4
  "command": "python3",
5
- "args": ["{{INSTALL_DIR}}/mcp_server.py"],
5
+ "args": ["-m", "superlocalmemory.mcp.server"],
6
6
  "env": {
7
7
  "PYTHONPATH": "{{INSTALL_DIR}}"
8
8
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "mcp": {
3
- "superlocalmemory-v2": {
3
+ "superlocalmemory": {
4
4
  "command": "python3",
5
- "args": ["{{INSTALL_DIR}}/mcp_server.py"],
5
+ "args": ["-m", "superlocalmemory.mcp.server"],
6
6
  "env": {
7
7
  "PYTHONPATH": "{{INSTALL_DIR}}"
8
8
  },
@@ -1,7 +1,7 @@
1
1
  {
2
- "superlocalmemory-v2": {
2
+ "superlocalmemory": {
3
3
  "command": "python3",
4
- "args": ["{{INSTALL_DIR}}/mcp_server.py"],
4
+ "args": ["-m", "superlocalmemory.mcp.server"],
5
5
  "env": {
6
6
  "PYTHONPATH": "{{INSTALL_DIR}}"
7
7
  }
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "servers": {
3
- "superlocalmemory-v2": {
3
+ "superlocalmemory": {
4
4
  "type": "stdio",
5
5
  "command": "python3",
6
- "args": ["{{INSTALL_DIR}}/mcp_server.py"],
6
+ "args": ["-m", "superlocalmemory.mcp.server"],
7
7
  "env": {
8
8
  "PYTHONPATH": "{{INSTALL_DIR}}"
9
9
  }
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "mcpServers": {
3
- "superlocalmemory-v2": {
3
+ "superlocalmemory": {
4
4
  "command": "python3",
5
5
  "args": [
6
- "{{INSTALL_DIR}}/mcp_server.py"
6
+ "-m", "superlocalmemory.mcp.server"
7
7
  ],
8
8
  "cwd": "{{INSTALL_DIR}}",
9
9
  "env": {
10
10
  "PYTHONPATH": "{{INSTALL_DIR}}"
11
11
  },
12
12
  "transport": "stdio",
13
- "description": "SuperLocalMemory V2 - 100% local memory system for AI assistants"
13
+ "description": "SuperLocalMemory V3 - 100% local memory system for AI assistants"
14
14
  }
15
15
  }
16
16
  }
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "context_servers": {
3
- "superlocalmemory-v2": {
3
+ "superlocalmemory": {
4
4
  "source": "custom",
5
5
  "command": "python3",
6
- "args": ["{{INSTALL_DIR}}/mcp_server.py"],
6
+ "args": ["-m", "superlocalmemory.mcp.server"],
7
7
  "env": {
8
8
  "PYTHONPATH": "{{INSTALL_DIR}}"
9
9
  }
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * SuperLocalMemory V2 - Session Start Context Hook
3
+ * SuperLocalMemory V3 - Session Start Context Hook
4
4
  * Copyright (c) 2026 Varun Pratap Bhardwaj
5
5
  * Licensed under MIT License
6
6
  *
7
7
  * Loads recent memories and learned patterns on Claude Code session start.
8
8
  * Outputs context to stderr (Claude Code reads hook stderr as context).
9
- * Fails gracefully never blocks session start if DB is missing or errors occur.
9
+ * Fails gracefully -- never blocks session start if DB is missing or errors occur.
10
10
  */
11
11
 
12
12
  const { execFile } = require('child_process');
@@ -16,9 +16,8 @@ const fs = require('fs');
16
16
 
17
17
  const execFileAsync = promisify(execFile);
18
18
 
19
- const MEMORY_DIR = path.join(process.env.HOME, '.claude-memory');
19
+ const MEMORY_DIR = path.join(process.env.HOME, '.superlocalmemory');
20
20
  const DB_PATH = path.join(MEMORY_DIR, 'memory.db');
21
- const MEMORY_SCRIPT = path.join(MEMORY_DIR, 'memory_store_v2.py');
22
21
 
23
22
  async function loadSessionContext() {
24
23
  // Fail gracefully if not installed
@@ -26,19 +25,10 @@ async function loadSessionContext() {
26
25
  return;
27
26
  }
28
27
 
29
- if (!fs.existsSync(MEMORY_SCRIPT)) {
30
- return;
31
- }
32
-
33
28
  try {
34
- // Get stats (memory_store_v2.py stats → JSON output)
29
+ // Get stats via V3 CLI
35
30
  const { stdout: statsOutput } = await execFileAsync('python3', [
36
- MEMORY_SCRIPT, 'stats'
37
- ], { timeout: 5000 });
38
-
39
- // Get recent memories (memory_store_v2.py list <limit>)
40
- const { stdout: recentOutput } = await execFileAsync('python3', [
41
- MEMORY_SCRIPT, 'list', '5'
31
+ '-m', 'superlocalmemory.cli.main', 'status', '--format', 'json'
42
32
  ], { timeout: 5000 });
43
33
 
44
34
  // Build context output
@@ -48,13 +38,12 @@ async function loadSessionContext() {
48
38
  try {
49
39
  const stats = JSON.parse(statsOutput.trim());
50
40
  const total = stats.total_memories || 0;
51
- const clusters = stats.total_clusters || 0;
52
41
  if (total > 0) {
53
- context += 'SuperLocalMemory: ' + total + ' memories, ' + clusters + ' clusters loaded.\n';
42
+ context += 'SuperLocalMemory V3: ' + total + ' memories loaded.\n';
54
43
  }
55
44
  } catch (e) {
56
- // Stats output wasn't JSON use first line as-is
57
- context += 'SuperLocalMemory: ' + statsOutput.trim().split('\n')[0] + '\n';
45
+ // Stats output wasn't JSON -- use first line as-is
46
+ context += 'SuperLocalMemory V3: ' + statsOutput.trim().split('\n')[0] + '\n';
58
47
  }
59
48
  }
60
49
 
@@ -62,7 +51,7 @@ async function loadSessionContext() {
62
51
  process.stderr.write(context);
63
52
  }
64
53
  } catch (error) {
65
- // Never fail session start must not be blocked
54
+ // Never fail -- session start must not be blocked
66
55
  // Silently ignore errors (timeout, missing python, etc.)
67
56
  }
68
57
  }
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Memory List CLI Skill (V3)
4
+ * List recent memories with sorting and filtering
5
+ */
6
+
7
+ const { execFile } = require('child_process');
8
+ const { promisify } = require('util');
9
+
10
+ const execFileAsync = promisify(execFile);
11
+
12
+ async function memoryListSkill() {
13
+ const args = process.argv.slice(2);
14
+
15
+ // Show help if --help
16
+ if (args.includes('--help') || args.includes('-h')) {
17
+ console.log(`
18
+ SuperLocalMemory V3 - List Recent Memories
19
+
20
+ Display recent memories with optional sorting and limits.
21
+ Quick overview of what's stored in your memory database.
22
+
23
+ Usage: memory-list [options]
24
+
25
+ Options:
26
+ --limit <n> Number of memories to show (default: 20)
27
+ --sort <field> Sort by: recent, accessed, importance
28
+ --full Show complete content without truncation
29
+
30
+ Examples:
31
+ memory-list
32
+ memory-list --limit 50
33
+ memory-list --sort importance
34
+ memory-list --limit 10 --sort accessed --full
35
+ `);
36
+ return;
37
+ }
38
+
39
+ // Build CLI args for V3
40
+ const cliArgs = ['-m', 'superlocalmemory.cli.main', 'list'];
41
+
42
+ for (let i = 0; i < args.length; i++) {
43
+ cliArgs.push(args[i]);
44
+ }
45
+
46
+ try {
47
+ const { stdout, stderr } = await execFileAsync('python3', cliArgs);
48
+
49
+ if (stderr) {
50
+ console.error('Warning:', stderr);
51
+ }
52
+
53
+ console.log(stdout);
54
+
55
+ // Show helpful next steps
56
+ console.log(`
57
+ Next steps:
58
+ - Use \`slm recall <query>\` to search memories
59
+ - Use \`slm remember <content>\` to add new memories
60
+ - Use \`slm list --sort <field>\` to change sort order
61
+ `);
62
+
63
+ } catch (error) {
64
+ console.error('Error listing memories:', error.message);
65
+ if (error.stdout) console.log(error.stdout);
66
+ if (error.stderr) console.error(error.stderr);
67
+ }
68
+ }
69
+
70
+ memoryListSkill();
@@ -0,0 +1,101 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Memory Profile CLI Skill (V3)
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 readline = require('readline');
10
+
11
+ const execFileAsync = promisify(execFile);
12
+
13
+ const rl = readline.createInterface({
14
+ input: process.stdin,
15
+ output: process.stdout
16
+ });
17
+
18
+ const question = (query) => new Promise((resolve) => rl.question(query, resolve));
19
+
20
+ async function memoryProfileSkill() {
21
+ const args = process.argv.slice(2);
22
+
23
+ // Show help if no args
24
+ if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
25
+ console.log(`
26
+ SuperLocalMemory V3 - Profile Management
27
+
28
+ Profiles let you maintain separate memory contexts in ONE database:
29
+ - Work vs Personal projects
30
+ - Different clients or teams
31
+ - Experimentation vs Production
32
+
33
+ All profiles share one database. Switching is instant and safe.
34
+ No data copying, no data loss risk.
35
+
36
+ Usage: memory-profile <command> [options]
37
+
38
+ Commands:
39
+ list List all profiles and show active one
40
+ current Show current active profile
41
+ create <name> Create a new empty profile
42
+ switch <name> Switch to a different profile
43
+ delete <name> Delete a profile (with confirmation)
44
+
45
+ Examples:
46
+ memory-profile list
47
+ memory-profile current
48
+ memory-profile create work
49
+ memory-profile switch work
50
+ memory-profile delete old-project
51
+ `);
52
+ rl.close();
53
+ return;
54
+ }
55
+
56
+ const command = args[0];
57
+ const cliArgs = ['-m', 'superlocalmemory.cli.main', 'profile', ...args];
58
+
59
+ // For destructive operations, add confirmation prompts
60
+ if (command === 'delete' && args.length >= 2) {
61
+ const profileName = args[1];
62
+
63
+ if (profileName === 'default') {
64
+ console.log('Error: Cannot delete the default profile.');
65
+ rl.close();
66
+ return;
67
+ }
68
+
69
+ const answer = await question(`Type the profile name "${profileName}" to confirm deletion: `);
70
+
71
+ if (answer !== profileName) {
72
+ console.log('\nCancelled. No changes made.');
73
+ rl.close();
74
+ return;
75
+ }
76
+ }
77
+
78
+ if (command === 'switch' && args.length >= 2) {
79
+ const profileName = args[1];
80
+ const answer = await question(`Switch to profile "${profileName}"? (yes/no): `);
81
+
82
+ if (answer.toLowerCase() !== 'yes') {
83
+ console.log('\nCancelled. No changes made.');
84
+ rl.close();
85
+ return;
86
+ }
87
+ }
88
+
89
+ try {
90
+ const { stdout, stderr } = await execFileAsync('python3', cliArgs);
91
+ if (stdout) console.log(stdout);
92
+ if (stderr) console.error(stderr);
93
+ } catch (error) {
94
+ console.error('Error:', error.message);
95
+ if (error.stdout) console.log(error.stdout);
96
+ }
97
+
98
+ rl.close();
99
+ }
100
+
101
+ memoryProfileSkill();
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Memory Recall CLI Skill (V3)
4
+ * Search and retrieve memories with advanced filtering
5
+ */
6
+
7
+ const { execFile } = require('child_process');
8
+ const { promisify } = require('util');
9
+
10
+ const execFileAsync = promisify(execFile);
11
+
12
+ async function memoryRecallSkill() {
13
+ const args = process.argv.slice(2);
14
+
15
+ // Show help if no args or --help
16
+ if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
17
+ console.log(`
18
+ SuperLocalMemory V3 - Recall (Search Memories)
19
+
20
+ Search your memory store using hybrid retrieval (semantic, BM25, graph, temporal).
21
+
22
+ Usage: memory-recall <query> [options]
23
+
24
+ Arguments:
25
+ <query> Search query (required)
26
+
27
+ Options:
28
+ --limit <n> Maximum results to return (default: 10)
29
+ --full Show complete content without truncation
30
+
31
+ Examples:
32
+ memory-recall "authentication bug"
33
+ memory-recall "API configuration" --limit 5
34
+ memory-recall "security best practices" --full
35
+ `);
36
+ return;
37
+ }
38
+
39
+ // Build V3 CLI args
40
+ const cliArgs = ['-m', 'superlocalmemory.cli.main', 'recall'];
41
+
42
+ for (let i = 0; i < args.length; i++) {
43
+ cliArgs.push(args[i]);
44
+ }
45
+
46
+ try {
47
+ const { stdout, stderr } = await execFileAsync('python3', cliArgs);
48
+
49
+ if (stderr) {
50
+ console.error('Warning:', stderr);
51
+ }
52
+
53
+ console.log(stdout);
54
+
55
+ } catch (error) {
56
+ console.error('Error searching memories:', error.message);
57
+ if (error.stdout) console.log(error.stdout);
58
+ if (error.stderr) console.error(error.stderr);
59
+ }
60
+ }
61
+
62
+ memoryRecallSkill();
@@ -0,0 +1,68 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Memory Remember CLI Skill (V3)
4
+ * Save memories with tags, project context, and importance levels
5
+ */
6
+
7
+ const { execFile } = require('child_process');
8
+ const { promisify } = require('util');
9
+
10
+ const execFileAsync = promisify(execFile);
11
+
12
+ async function memoryRememberSkill() {
13
+ const args = process.argv.slice(2);
14
+
15
+ // Show help if no args or --help
16
+ if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
17
+ console.log(`
18
+ SuperLocalMemory V3 - Remember (Save Memory)
19
+
20
+ Save important information to your persistent memory store.
21
+ Memories are indexed, searchable, and integrated with the knowledge graph.
22
+
23
+ Usage: memory-remember <content> [options]
24
+
25
+ Arguments:
26
+ <content> The memory content to save (required)
27
+
28
+ Options:
29
+ --tags <tag1,tag2> Comma-separated tags for categorization
30
+ --project <path> Project path context
31
+
32
+ Examples:
33
+ memory-remember "API key stored in .env file" --tags security,config
34
+ memory-remember "User prefers tabs over spaces"
35
+ memory-remember "Bug in auth.js line 42" --project ~/work/app --tags bug
36
+ `);
37
+ return;
38
+ }
39
+
40
+ // Build V3 CLI args
41
+ const cliArgs = ['-m', 'superlocalmemory.cli.main', 'remember'];
42
+
43
+ for (let i = 0; i < args.length; i++) {
44
+ cliArgs.push(args[i]);
45
+ }
46
+
47
+ try {
48
+ const { stdout, stderr } = await execFileAsync('python3', cliArgs);
49
+
50
+ if (stderr) {
51
+ console.error('Warning:', stderr);
52
+ }
53
+
54
+ console.log(stdout);
55
+
56
+ // Show helpful next steps
57
+ console.log('Next steps:');
58
+ console.log(' - Use `slm recall <query>` to search this memory');
59
+ console.log(' - Use `slm list` to see recent memories');
60
+
61
+ } catch (error) {
62
+ console.error('Error saving memory:', error.message);
63
+ if (error.stdout) console.log(error.stdout);
64
+ if (error.stderr) console.error(error.stderr);
65
+ }
66
+ }
67
+
68
+ memoryRememberSkill();