superlocalmemory 2.8.6 → 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 (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 +1 -1
  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
@@ -0,0 +1,102 @@
1
+ // SuperLocalMemory V3 — IDE Connections
2
+ // Displays detected IDEs and allows connecting them to SLM.
3
+
4
+ async function loadIDEStatus() {
5
+ try {
6
+ var response = await fetch('/api/v3/ide/status');
7
+ if (!response.ok) return;
8
+ var data = await response.json();
9
+
10
+ var tbody = document.getElementById('ide-list-body');
11
+ tbody.textContent = '';
12
+ (data.ides || []).forEach(function(ide) {
13
+ var tr = document.createElement('tr');
14
+
15
+ // IDE name cell
16
+ var tdName = document.createElement('td');
17
+ var strong = document.createElement('strong');
18
+ strong.textContent = ide.name;
19
+ tdName.appendChild(strong);
20
+ tr.appendChild(tdName);
21
+
22
+ // Installed status cell
23
+ var tdInstalled = document.createElement('td');
24
+ var badge = document.createElement('span');
25
+ if (ide.installed) {
26
+ badge.className = 'badge bg-success';
27
+ badge.textContent = 'Installed';
28
+ } else {
29
+ badge.className = 'badge bg-secondary';
30
+ badge.textContent = 'Not Found';
31
+ }
32
+ tdInstalled.appendChild(badge);
33
+ tr.appendChild(tdInstalled);
34
+
35
+ // Config path cell
36
+ var tdPath = document.createElement('td');
37
+ tdPath.className = 'text-muted small';
38
+ tdPath.textContent = ide.config_path || '';
39
+ tr.appendChild(tdPath);
40
+
41
+ // Action cell
42
+ var tdAction = document.createElement('td');
43
+ if (ide.installed) {
44
+ var btn = document.createElement('button');
45
+ btn.className = 'btn btn-sm btn-outline-primary ide-connect-btn';
46
+ btn.dataset.ide = ide.id;
47
+ btn.textContent = 'Connect';
48
+ tdAction.appendChild(btn);
49
+ }
50
+ tr.appendChild(tdAction);
51
+
52
+ tbody.appendChild(tr);
53
+ });
54
+ } catch (e) {
55
+ console.log('IDE status error:', e);
56
+ }
57
+ }
58
+
59
+ // Delegate click handler for individual IDE connect buttons
60
+ document.addEventListener('click', function(e) {
61
+ var btn = e.target.closest('.ide-connect-btn');
62
+ if (!btn) return;
63
+
64
+ var ideId = btn.dataset.ide;
65
+ fetch('/api/v3/ide/connect', {
66
+ method: 'POST',
67
+ headers: { 'Content-Type': 'application/json' },
68
+ body: JSON.stringify({ ide: ideId })
69
+ }).then(function(r) {
70
+ return r.json();
71
+ }).then(function(data) {
72
+ alert(data.success ? 'Connected: ' + ideId : 'Failed to connect');
73
+ loadIDEStatus();
74
+ }).catch(function(e) {
75
+ console.log('IDE connect error:', e);
76
+ });
77
+ });
78
+
79
+ // Connect all detected IDEs
80
+ var connectAllBtn = document.getElementById('ide-connect-all-btn');
81
+ if (connectAllBtn) {
82
+ connectAllBtn.addEventListener('click', function() {
83
+ fetch('/api/v3/ide/connect', {
84
+ method: 'POST',
85
+ headers: { 'Content-Type': 'application/json' },
86
+ body: JSON.stringify({})
87
+ }).then(function(r) {
88
+ return r.json();
89
+ }).then(function(data) {
90
+ var results = data.results || {};
91
+ var count = Object.values(results).filter(function(s) {
92
+ return s === 'connected';
93
+ }).length;
94
+ alert('Connected ' + count + ' IDEs');
95
+ loadIDEStatus();
96
+ }).catch(function(e) {
97
+ console.log('IDE connect-all error:', e);
98
+ });
99
+ });
100
+ }
101
+
102
+ document.getElementById('ide-tab')?.addEventListener('shown.bs.tab', loadIDEStatus);
@@ -0,0 +1,98 @@
1
+ // SuperLocalMemory V3 — Math Health
2
+ // Displays status of Fisher-Rao, sheaf cohomology, and Langevin dynamics layers.
3
+
4
+ async function loadMathHealth() {
5
+ try {
6
+ var response = await fetch('/api/v3/math/health');
7
+ if (!response.ok) return;
8
+ var data = await response.json();
9
+
10
+ var container = document.getElementById('math-health-cards');
11
+ container.textContent = '';
12
+
13
+ var layers = data.health || {};
14
+ var colors = { fisher: 'primary', sheaf: 'success', langevin: 'info' };
15
+ var icons = { fisher: 'bi-graph-up', sheaf: 'bi-diagram-3', langevin: 'bi-activity' };
16
+
17
+ Object.keys(layers).forEach(function(key) {
18
+ var layer = layers[key];
19
+ var col = document.createElement('div');
20
+ col.className = 'col-md-4';
21
+
22
+ var card = document.createElement('div');
23
+ card.className = 'card h-100';
24
+
25
+ // Card header
26
+ var header = document.createElement('div');
27
+ header.className = 'card-header bg-' + (colors[key] || 'secondary') + ' text-white';
28
+ var h6 = document.createElement('h6');
29
+ h6.className = 'mb-0';
30
+ var icon = document.createElement('i');
31
+ icon.className = 'bi ' + (icons[key] || 'bi-gear');
32
+ h6.appendChild(icon);
33
+ h6.appendChild(document.createTextNode(' ' + key.charAt(0).toUpperCase() + key.slice(1)));
34
+ header.appendChild(h6);
35
+ card.appendChild(header);
36
+
37
+ // Card body
38
+ var body = document.createElement('div');
39
+ body.className = 'card-body';
40
+
41
+ var desc = document.createElement('p');
42
+ desc.className = 'text-muted';
43
+ desc.textContent = layer.description || '';
44
+ body.appendChild(desc);
45
+
46
+ var ul = document.createElement('ul');
47
+ ul.className = 'list-unstyled mb-0';
48
+
49
+ // Status item
50
+ var liStatus = document.createElement('li');
51
+ liStatus.appendChild(document.createTextNode('Status: '));
52
+ var statusBadge = document.createElement('span');
53
+ statusBadge.className = 'badge bg-success';
54
+ statusBadge.textContent = layer.status || 'active';
55
+ liStatus.appendChild(statusBadge);
56
+ ul.appendChild(liStatus);
57
+
58
+ // Mode item (if present)
59
+ if (layer.mode) {
60
+ var liMode = document.createElement('li');
61
+ liMode.appendChild(document.createTextNode('Mode: '));
62
+ var modeStrong = document.createElement('strong');
63
+ modeStrong.textContent = layer.mode;
64
+ liMode.appendChild(modeStrong);
65
+ ul.appendChild(liMode);
66
+ }
67
+
68
+ // Threshold item (if present)
69
+ if (layer.threshold) {
70
+ var liThresh = document.createElement('li');
71
+ liThresh.appendChild(document.createTextNode('Threshold: '));
72
+ var threshStrong = document.createElement('strong');
73
+ threshStrong.textContent = layer.threshold;
74
+ liThresh.appendChild(threshStrong);
75
+ ul.appendChild(liThresh);
76
+ }
77
+
78
+ // Temperature item (if present)
79
+ if (layer.temperature) {
80
+ var liTemp = document.createElement('li');
81
+ liTemp.appendChild(document.createTextNode('Temperature: '));
82
+ var tempStrong = document.createElement('strong');
83
+ tempStrong.textContent = layer.temperature;
84
+ liTemp.appendChild(tempStrong);
85
+ ul.appendChild(liTemp);
86
+ }
87
+
88
+ body.appendChild(ul);
89
+ card.appendChild(body);
90
+ col.appendChild(card);
91
+ container.appendChild(col);
92
+ });
93
+ } catch (e) {
94
+ console.log('Math health error:', e);
95
+ }
96
+ }
97
+
98
+ document.getElementById('math-health-tab')?.addEventListener('shown.bs.tab', loadMathHealth);
@@ -0,0 +1,127 @@
1
+ // SuperLocalMemory V3 — Recall Lab
2
+ // Part of Qualixar | https://superlocalmemory.com
3
+
4
+ document.getElementById('recall-lab-search')?.addEventListener('click', function() {
5
+ var query = document.getElementById('recall-lab-query').value.trim();
6
+ if (!query) return;
7
+
8
+ var resultsDiv = document.getElementById('recall-lab-results');
9
+ var metaDiv = document.getElementById('recall-lab-meta');
10
+ resultsDiv.textContent = '';
11
+ var spinner = document.createElement('div');
12
+ spinner.className = 'text-center';
13
+ var spinnerInner = document.createElement('div');
14
+ spinnerInner.className = 'spinner-border text-primary';
15
+ spinner.appendChild(spinnerInner);
16
+ resultsDiv.appendChild(spinner);
17
+
18
+ fetch('/api/v3/recall/trace', {
19
+ method: 'POST',
20
+ headers: {'Content-Type': 'application/json'},
21
+ body: JSON.stringify({query: query, limit: 10})
22
+ }).then(function(r) { return r.json(); }).then(function(data) {
23
+ if (data.error) {
24
+ resultsDiv.textContent = '';
25
+ var errDiv = document.createElement('div');
26
+ errDiv.className = 'alert alert-danger';
27
+ errDiv.textContent = data.error;
28
+ resultsDiv.appendChild(errDiv);
29
+ return;
30
+ }
31
+
32
+ metaDiv.textContent = '';
33
+ appendMetaField(metaDiv, 'Query type: ', data.query_type || 'unknown');
34
+ metaDiv.appendChild(document.createTextNode(' | '));
35
+ appendMetaField(metaDiv, 'Results: ', String(data.result_count));
36
+ metaDiv.appendChild(document.createTextNode(' | '));
37
+ appendMetaField(metaDiv, 'Time: ', (data.retrieval_time_ms || 0).toFixed(0) + 'ms');
38
+
39
+ if (!data.results || data.results.length === 0) {
40
+ resultsDiv.textContent = '';
41
+ var infoDiv = document.createElement('div');
42
+ infoDiv.className = 'alert alert-info';
43
+ infoDiv.textContent = 'No results found.';
44
+ resultsDiv.appendChild(infoDiv);
45
+ return;
46
+ }
47
+
48
+ resultsDiv.textContent = '';
49
+ var listGroup = document.createElement('div');
50
+ listGroup.className = 'list-group';
51
+
52
+ data.results.forEach(function(r, i) {
53
+ var channels = r.channel_scores || {};
54
+ var maxChannel = Math.max(channels.semantic || 0, channels.bm25 || 0, channels.entity_graph || 0, channels.temporal || 0) || 1;
55
+
56
+ var item = document.createElement('div');
57
+ item.className = 'list-group-item';
58
+
59
+ var header = document.createElement('h6');
60
+ header.className = 'mb-1';
61
+ header.textContent = (i + 1) + '. ' + (r.content || '').substring(0, 200);
62
+ item.appendChild(header);
63
+
64
+ var meta = document.createElement('small');
65
+ meta.className = 'text-muted';
66
+ meta.textContent = 'Score: ' + r.score + ' | Trust: ' + r.trust_score + ' | Confidence: ' + r.confidence;
67
+ item.appendChild(meta);
68
+
69
+ var barsDiv = document.createElement('div');
70
+ barsDiv.className = 'mt-2';
71
+ barsDiv.appendChild(buildChannelBar('Semantic', channels.semantic || 0, maxChannel, 'primary'));
72
+ barsDiv.appendChild(buildChannelBar('BM25', channels.bm25 || 0, maxChannel, 'success'));
73
+ barsDiv.appendChild(buildChannelBar('Entity', channels.entity_graph || 0, maxChannel, 'info'));
74
+ barsDiv.appendChild(buildChannelBar('Temporal', channels.temporal || 0, maxChannel, 'warning'));
75
+ item.appendChild(barsDiv);
76
+
77
+ listGroup.appendChild(item);
78
+ });
79
+ resultsDiv.appendChild(listGroup);
80
+ }).catch(function(e) {
81
+ resultsDiv.textContent = '';
82
+ var errDiv = document.createElement('div');
83
+ errDiv.className = 'alert alert-danger';
84
+ errDiv.textContent = 'Error: ' + e.message;
85
+ resultsDiv.appendChild(errDiv);
86
+ });
87
+ });
88
+
89
+ function appendMetaField(parent, label, value) {
90
+ var text = document.createTextNode(label);
91
+ parent.appendChild(text);
92
+ var strong = document.createElement('strong');
93
+ strong.textContent = value;
94
+ parent.appendChild(strong);
95
+ }
96
+
97
+ function buildChannelBar(name, score, max, color) {
98
+ var pct = max > 0 ? Math.round((score / max) * 100) : 0;
99
+
100
+ var row = document.createElement('div');
101
+ row.className = 'd-flex align-items-center mb-1';
102
+
103
+ var label = document.createElement('span');
104
+ label.className = 'me-2';
105
+ label.style.width = '70px';
106
+ label.style.fontSize = '0.75rem';
107
+ label.textContent = name;
108
+ row.appendChild(label);
109
+
110
+ var progressWrap = document.createElement('div');
111
+ progressWrap.className = 'progress flex-grow-1';
112
+ progressWrap.style.height = '14px';
113
+
114
+ var bar = document.createElement('div');
115
+ bar.className = 'progress-bar bg-' + color;
116
+ bar.style.width = pct + '%';
117
+ bar.textContent = score.toFixed(3);
118
+ progressWrap.appendChild(bar);
119
+
120
+ row.appendChild(progressWrap);
121
+ return row;
122
+ }
123
+
124
+ // Enter key support
125
+ document.getElementById('recall-lab-query')?.addEventListener('keydown', function(e) {
126
+ if (e.key === 'Enter') document.getElementById('recall-lab-search')?.click();
127
+ });
package/ui/js/settings.js CHANGED
@@ -54,11 +54,11 @@ async function backupLearningDb() {
54
54
  if (data.success) {
55
55
  showToast('Learning DB backed up: ' + (data.filename || 'learning.db.bak'));
56
56
  } else {
57
- showToast('Backup created at ~/.claude-memory/learning.db.bak');
57
+ showToast('Backup created at ~/.superlocalmemory/learning.db.bak');
58
58
  }
59
59
  } catch (error) {
60
60
  // Fallback: just tell user the manual path
61
- showToast('Manual backup: cp ~/.claude-memory/learning.db ~/.claude-memory/learning.db.bak');
61
+ showToast('Manual backup: cp ~/.superlocalmemory/learning.db ~/.superlocalmemory/learning.db.bak');
62
62
  }
63
63
  }
64
64
 
@@ -0,0 +1,73 @@
1
+ // SuperLocalMemory V3 — Trust Dashboard
2
+ // Loads and displays Bayesian trust scores per agent and per fact.
3
+
4
+ async function loadTrustDashboard() {
5
+ try {
6
+ var response = await fetch('/api/v3/trust/dashboard');
7
+ if (!response.ok) return;
8
+ var data = await response.json();
9
+
10
+ var agents = data.agents || [];
11
+ document.getElementById('trust-agent-count').textContent = agents.length;
12
+
13
+ var avg = agents.length > 0
14
+ ? (agents.reduce(function(s, a) { return s + (a.trust_score || 0); }, 0) / agents.length).toFixed(3)
15
+ : '\u2014';
16
+ document.getElementById('trust-avg-score').textContent = avg;
17
+ document.getElementById('trust-burst-count').textContent = (data.alerts || []).length;
18
+
19
+ var tbody = document.getElementById('trust-agents-body');
20
+ tbody.textContent = '';
21
+ agents.forEach(function(a) {
22
+ var tr = document.createElement('tr');
23
+ var score = (a.trust_score || 0);
24
+ var badge = score >= 0.7 ? 'success' : score >= 0.3 ? 'warning' : 'danger';
25
+ var label = score >= 0.7 ? 'Trusted' : score >= 0.3 ? 'Neutral' : 'Low Trust';
26
+
27
+ // Target ID cell
28
+ var tdTarget = document.createElement('td');
29
+ tdTarget.textContent = a.target_id || '';
30
+ tr.appendChild(tdTarget);
31
+
32
+ // Type cell
33
+ var tdType = document.createElement('td');
34
+ var spanType = document.createElement('span');
35
+ spanType.className = 'badge bg-secondary';
36
+ spanType.textContent = a.target_type || '';
37
+ tdType.appendChild(spanType);
38
+ tr.appendChild(tdType);
39
+
40
+ // Trust score progress bar cell
41
+ var tdScore = document.createElement('td');
42
+ var progress = document.createElement('div');
43
+ progress.className = 'progress';
44
+ progress.style.height = '20px';
45
+ var bar = document.createElement('div');
46
+ bar.className = 'progress-bar bg-' + badge;
47
+ bar.style.width = Math.round(score * 100) + '%';
48
+ bar.textContent = score.toFixed(3);
49
+ progress.appendChild(bar);
50
+ tdScore.appendChild(progress);
51
+ tr.appendChild(tdScore);
52
+
53
+ // Evidence count cell
54
+ var tdEvidence = document.createElement('td');
55
+ tdEvidence.textContent = a.evidence_count || 0;
56
+ tr.appendChild(tdEvidence);
57
+
58
+ // Status badge cell
59
+ var tdStatus = document.createElement('td');
60
+ var spanStatus = document.createElement('span');
61
+ spanStatus.className = 'badge bg-' + badge;
62
+ spanStatus.textContent = label;
63
+ tdStatus.appendChild(spanStatus);
64
+ tr.appendChild(tdStatus);
65
+
66
+ tbody.appendChild(tr);
67
+ });
68
+ } catch (e) {
69
+ console.log('Trust dashboard error:', e);
70
+ }
71
+ }
72
+
73
+ document.getElementById('trust-tab')?.addEventListener('shown.bs.tab', loadTrustDashboard);