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
@@ -0,0 +1,334 @@
1
+ # SuperLocalMemory V2 - Universal Skills Installer (PowerShell)
2
+ # Installs skills for Claude Code, Codex, Gemini CLI, Antigravity, and Windsurf
3
+
4
+ param(
5
+ [switch]$Auto
6
+ )
7
+
8
+ $ErrorActionPreference = "Stop"
9
+
10
+ # Configuration
11
+ $REPO_DIR = $PSScriptRoot
12
+ $SKILLS_SOURCE = Join-Path $REPO_DIR "skills"
13
+
14
+ # Tool definitions
15
+ $TOOL_IDS = @("claude_code", "codex", "gemini_cli", "antigravity", "windsurf", "cursor", "vscode_copilot")
16
+ $TOOL_NAMES = @("Claude Code", "Codex", "Gemini CLI", "Antigravity", "Windsurf", "Cursor", "VS Code/Copilot")
17
+ $TOOL_DIRS = @(
18
+ (Join-Path $env:USERPROFILE ".claude\skills"),
19
+ (Join-Path $env:USERPROFILE ".codex\skills"),
20
+ (Join-Path $env:USERPROFILE ".gemini\skills"),
21
+ (Join-Path $env:USERPROFILE ".gemini\antigravity\skills"),
22
+ (Join-Path $env:USERPROFILE ".windsurf\skills"),
23
+ (Join-Path $env:USERPROFILE ".cursor\skills"),
24
+ (Join-Path $env:USERPROFILE ".copilot\skills")
25
+ )
26
+
27
+ # Helper functions
28
+ function Get-ToolName {
29
+ param([string]$ToolId)
30
+ $index = $TOOL_IDS.IndexOf($ToolId)
31
+ if ($index -ge 0) { return $TOOL_NAMES[$index] }
32
+ return $ToolId
33
+ }
34
+
35
+ function Get-ToolDir {
36
+ param([string]$ToolId)
37
+ $index = $TOOL_IDS.IndexOf($ToolId)
38
+ if ($index -ge 0) { return $TOOL_DIRS[$index] }
39
+ return ""
40
+ }
41
+
42
+ # Skills to install
43
+ $SKILLS = @(
44
+ "slm-remember",
45
+ "slm-recall",
46
+ "slm-status",
47
+ "slm-list-recent",
48
+ "slm-build-graph",
49
+ "slm-switch-profile"
50
+ )
51
+
52
+ Write-Host "=========================================="
53
+ Write-Host "SuperLocalMemory V2 - Universal Skills Installer"
54
+ Write-Host "=========================================="
55
+ Write-Host ""
56
+
57
+ # Check if SuperLocalMemory V2 is installed
58
+ $memoryDir = Join-Path $env:USERPROFILE ".claude-memory"
59
+ if (-not (Test-Path $memoryDir)) {
60
+ Write-Host "Warning: SuperLocalMemory V2 not found at $memoryDir" -ForegroundColor Yellow
61
+ Write-Host "Skills require SuperLocalMemory V2 to be installed first."
62
+ Write-Host ""
63
+ if (-not $Auto) {
64
+ $response = Read-Host "Do you want to continue anyway? (y/n)"
65
+ if ($response -ne "y" -and $response -ne "Y") {
66
+ Write-Host "Installation cancelled."
67
+ Write-Host "Please install SuperLocalMemory V2 first: .\install.ps1"
68
+ exit 1
69
+ }
70
+ } else {
71
+ Write-Host "Auto mode: continuing anyway..."
72
+ }
73
+ }
74
+
75
+ # Check if skills source directory exists
76
+ if (-not (Test-Path $SKILLS_SOURCE)) {
77
+ Write-Host "Error: Skills directory not found: $SKILLS_SOURCE" -ForegroundColor Red
78
+ Write-Host "Please run this script from the SuperLocalMemoryV2-repo directory."
79
+ exit 1
80
+ }
81
+
82
+ # Verify all skill directories exist
83
+ Write-Host "Verifying skill files..."
84
+ $MISSING_SKILLS = 0
85
+ foreach ($skill in $SKILLS) {
86
+ $skillDir = Join-Path $SKILLS_SOURCE $skill
87
+ $skillFile = Join-Path $skillDir "SKILL.md"
88
+ if (-not (Test-Path $skillDir)) {
89
+ Write-Host "✗ Missing: $skill/" -ForegroundColor Red
90
+ $MISSING_SKILLS++
91
+ } elseif (-not (Test-Path $skillFile)) {
92
+ Write-Host "✗ Missing: $skill/SKILL.md" -ForegroundColor Red
93
+ $MISSING_SKILLS++
94
+ } else {
95
+ Write-Host "✓ Found: $skill/SKILL.md" -ForegroundColor Green
96
+ }
97
+ }
98
+
99
+ if ($MISSING_SKILLS -gt 0) {
100
+ Write-Host "Error: $MISSING_SKILLS skill(s) missing. Cannot proceed." -ForegroundColor Red
101
+ exit 1
102
+ }
103
+
104
+ Write-Host ""
105
+ Write-Host "Found $($SKILLS.Count) skills to install"
106
+ Write-Host ""
107
+
108
+ # Detect available tools
109
+ Write-Host "=========================================="
110
+ Write-Host "Detecting AI Tools"
111
+ Write-Host "=========================================="
112
+ Write-Host ""
113
+
114
+ $DETECTED_TOOLS = @()
115
+
116
+ for ($i = 0; $i -lt $TOOL_IDS.Count; $i++) {
117
+ $toolId = $TOOL_IDS[$i]
118
+ $toolName = $TOOL_NAMES[$i]
119
+ $toolDir = $TOOL_DIRS[$i]
120
+ $parentDir = Split-Path $toolDir -Parent
121
+
122
+ if (Test-Path $parentDir) {
123
+ Write-Host "✓ $toolName detected: $toolDir" -ForegroundColor Green
124
+ $DETECTED_TOOLS += $toolId
125
+ } else {
126
+ Write-Host "○ $toolName not found: $parentDir" -ForegroundColor Blue
127
+ }
128
+ }
129
+
130
+ Write-Host ""
131
+
132
+ if ($DETECTED_TOOLS.Count -eq 0) {
133
+ if ($Auto) {
134
+ Write-Host "Warning: No supported AI tools detected. Skipping skills installation." -ForegroundColor Yellow
135
+ Write-Host ""
136
+ exit 0
137
+ }
138
+ Write-Host "Warning: No supported AI tools detected." -ForegroundColor Yellow
139
+ Write-Host ""
140
+ Write-Host "Supported tools:"
141
+ for ($i = 0; $i -lt $TOOL_IDS.Count; $i++) {
142
+ Write-Host " - $($TOOL_NAMES[$i]): $($TOOL_DIRS[$i])"
143
+ }
144
+ Write-Host ""
145
+ $response = Read-Host "Do you want to continue and create directories anyway? (y/n)"
146
+ if ($response -ne "y" -and $response -ne "Y") {
147
+ Write-Host "Installation cancelled."
148
+ exit 1
149
+ }
150
+ # Add all tools to install list
151
+ $DETECTED_TOOLS = $TOOL_IDS
152
+ } else {
153
+ Write-Host "Will install skills for $($DETECTED_TOOLS.Count) tool(s)"
154
+ Write-Host ""
155
+ }
156
+
157
+ # Ask user for installation method
158
+ if ($Auto) {
159
+ $METHOD = "copy" # Windows: copy is more reliable than symlink
160
+ Write-Host "Auto mode: Using copy method..."
161
+ } else {
162
+ Write-Host "Installation Methods:"
163
+ Write-Host " 1. Copy - Stable, requires manual updates (recommended for Windows)"
164
+ Write-Host " 2. Symlink - Changes in repo reflect immediately (requires admin on Windows)"
165
+ Write-Host ""
166
+ $choice = Read-Host "Choose installation method (1 or 2)"
167
+ Write-Host ""
168
+
169
+ if ($choice -eq "1") {
170
+ $METHOD = "copy"
171
+ Write-Host "Installing via copy..."
172
+ } elseif ($choice -eq "2") {
173
+ $METHOD = "symlink"
174
+ Write-Host "Installing via symlink..."
175
+ } else {
176
+ Write-Host "Invalid choice. Please enter 1 or 2." -ForegroundColor Red
177
+ exit 1
178
+ }
179
+ }
180
+
181
+ Write-Host ""
182
+
183
+ # Install skills for each detected tool
184
+ $TOTAL_INSTALLED = 0
185
+ $TOTAL_FAILED = 0
186
+ $TOTAL_SKIPPED = 0
187
+
188
+ foreach ($toolId in $DETECTED_TOOLS) {
189
+ $toolName = Get-ToolName $toolId
190
+ Write-Host "=========================================="
191
+ Write-Host "Installing for: $toolName"
192
+ Write-Host "=========================================="
193
+
194
+ $skillsDir = Get-ToolDir $toolId
195
+
196
+ # Create skills directory if it doesn't exist
197
+ if (-not (Test-Path $skillsDir)) {
198
+ Write-Host "Creating directory: $skillsDir"
199
+ try {
200
+ New-Item -ItemType Directory -Path $skillsDir -Force | Out-Null
201
+ Write-Host "✓ Directory created" -ForegroundColor Green
202
+ } catch {
203
+ Write-Host "✗ Failed to create directory" -ForegroundColor Red
204
+ Write-Host ""
205
+ $TOTAL_SKIPPED += $SKILLS.Count
206
+ continue
207
+ }
208
+ } else {
209
+ Write-Host "Directory exists: $skillsDir"
210
+ }
211
+
212
+ Write-Host ""
213
+
214
+ # Install each skill
215
+ foreach ($skill in $SKILLS) {
216
+ $sourceFile = Join-Path (Join-Path $SKILLS_SOURCE $skill) "SKILL.md"
217
+ $targetFile = Join-Path $skillsDir "$skill.md"
218
+
219
+ # Remove existing file or symlink
220
+ if (Test-Path $targetFile) {
221
+ Remove-Item $targetFile -Force
222
+ }
223
+
224
+ try {
225
+ if ($METHOD -eq "symlink") {
226
+ # Create symlink (requires admin on Windows)
227
+ New-Item -ItemType SymbolicLink -Path $targetFile -Target $sourceFile -Force | Out-Null
228
+ Write-Host "✓ Symlinked: $skill.md" -ForegroundColor Green
229
+ $TOTAL_INSTALLED++
230
+ } else {
231
+ # Copy file
232
+ Copy-Item $sourceFile -Destination $targetFile -Force
233
+ Write-Host "✓ Copied: $skill.md" -ForegroundColor Green
234
+ $TOTAL_INSTALLED++
235
+ }
236
+ } catch {
237
+ Write-Host "✗ Failed to install: $skill.md - $($_.Exception.Message)" -ForegroundColor Red
238
+ $TOTAL_FAILED++
239
+ }
240
+ }
241
+
242
+ Write-Host ""
243
+ }
244
+
245
+ # Installation Summary
246
+ Write-Host "=========================================="
247
+ Write-Host "Installation Summary"
248
+ Write-Host "=========================================="
249
+ Write-Host ""
250
+ Write-Host "Tools configured: $($DETECTED_TOOLS.Count)" -ForegroundColor Blue
251
+ Write-Host "Skills installed: $TOTAL_INSTALLED" -ForegroundColor Green
252
+ if ($TOTAL_FAILED -gt 0) {
253
+ Write-Host "Failed: $TOTAL_FAILED" -ForegroundColor Red
254
+ }
255
+ if ($TOTAL_SKIPPED -gt 0) {
256
+ Write-Host "Skipped: $TOTAL_SKIPPED" -ForegroundColor Yellow
257
+ }
258
+ Write-Host "Installation method: $METHOD"
259
+ Write-Host ""
260
+
261
+ # List installation locations
262
+ Write-Host "Skills installed to:"
263
+ foreach ($toolId in $DETECTED_TOOLS) {
264
+ $toolName = Get-ToolName $toolId
265
+ $toolDir = Get-ToolDir $toolId
266
+ if ((Test-Path $toolDir) -and ((Get-ChildItem -Path $toolDir -Filter "*.md" -ErrorAction SilentlyContinue).Count -gt 0)) {
267
+ $count = (Get-ChildItem -Path $toolDir -Filter "*.md").Count
268
+ Write-Host " ✓ $toolName`: $toolDir ($count skills)" -ForegroundColor Green
269
+ }
270
+ }
271
+
272
+ Write-Host ""
273
+
274
+ # Verify installation
275
+ $EXPECTED_TOTAL = $DETECTED_TOOLS.Count * $SKILLS.Count
276
+ if ($TOTAL_INSTALLED -eq $EXPECTED_TOTAL) {
277
+ Write-Host "✓ All skills installed successfully!" -ForegroundColor Green
278
+ } else {
279
+ Write-Host "⚠ Some skills failed to install." -ForegroundColor Yellow
280
+ Write-Host "Expected: $EXPECTED_TOTAL, Installed: $TOTAL_INSTALLED"
281
+ }
282
+
283
+ Write-Host ""
284
+
285
+ # List available skills
286
+ Write-Host "=========================================="
287
+ Write-Host "Available Skills"
288
+ Write-Host "=========================================="
289
+ Write-Host ""
290
+ foreach ($skill in $SKILLS) {
291
+ Write-Host " • $skill"
292
+ }
293
+ Write-Host ""
294
+
295
+ # Next Steps
296
+ Write-Host "=========================================="
297
+ Write-Host "Next Steps"
298
+ Write-Host "=========================================="
299
+ Write-Host ""
300
+ Write-Host "1. Restart your AI tool to load the new skills" -ForegroundColor Yellow
301
+ Write-Host ""
302
+ Write-Host "2. Verify skills are loaded:"
303
+ foreach ($toolId in $DETECTED_TOOLS) {
304
+ $toolName = Get-ToolName $toolId
305
+ Write-Host " $toolName (check available commands/skills)" -ForegroundColor Green
306
+ }
307
+ Write-Host ""
308
+ Write-Host "3. Try your first skill:"
309
+ Write-Host " /slm-status or /slm-remember `"test`"" -ForegroundColor Green
310
+ Write-Host ""
311
+ Write-Host "4. Read skill documentation:"
312
+ Write-Host " Each skill has detailed docs in: $SKILLS_SOURCE\<skill-name>\SKILL.md"
313
+ Write-Host ""
314
+
315
+ if ($METHOD -eq "copy") {
316
+ Write-Host "Note: Using copies. To update skills:"
317
+ Write-Host " cd $REPO_DIR"
318
+ Write-Host " git pull"
319
+ Write-Host " .\install-skills.ps1"
320
+ Write-Host ""
321
+ }
322
+
323
+ Write-Host "=========================================="
324
+ Write-Host ""
325
+ Write-Host "✓ Universal skills installation complete!" -ForegroundColor Green
326
+ Write-Host ""
327
+ Write-Host "Skills installed for:"
328
+ foreach ($toolId in $DETECTED_TOOLS) {
329
+ Write-Host " • $(Get-ToolName $toolId)"
330
+ }
331
+ Write-Host ""
332
+ Write-Host "Remember: Skills are OPTIONAL convenience wrappers."
333
+ Write-Host "SuperLocalMemory V2 works standalone via terminal commands."
334
+ Write-Host ""
@@ -15,7 +15,7 @@ param(
15
15
 
16
16
  $ErrorActionPreference = "Stop"
17
17
 
18
- $INSTALL_DIR = Join-Path $env:USERPROFILE ".claude-memory"
18
+ $INSTALL_DIR = if ($env:SL_MEMORY_PATH) { $env:SL_MEMORY_PATH } else { Join-Path $env:USERPROFILE ".claude-memory" }
19
19
  $REPO_DIR = Split-Path -Parent $MyInvocation.MyCommand.Path
20
20
 
21
21
  # Auto-detect non-interactive environment
@@ -122,6 +122,35 @@ if (Test-Path $uiServerPath) {
122
122
  Write-Host "OK UI server copied" -ForegroundColor Green
123
123
  }
124
124
 
125
+ # Copy security middleware (required by ui_server.py)
126
+ $securityMiddlewarePath = Join-Path $REPO_DIR "security_middleware.py"
127
+ if (Test-Path $securityMiddlewarePath) {
128
+ Copy-Item -Path $securityMiddlewarePath -Destination $INSTALL_DIR -Force
129
+ Write-Host "OK Security middleware copied" -ForegroundColor Green
130
+ }
131
+
132
+ # Copy routes (required by ui_server.py)
133
+ $routesDir = Join-Path $REPO_DIR "routes"
134
+ $installRoutesDir = Join-Path $INSTALL_DIR "routes"
135
+ if (Test-Path $routesDir) {
136
+ if (-not (Test-Path $installRoutesDir)) {
137
+ New-Item -ItemType Directory -Path $installRoutesDir -Force | Out-Null
138
+ }
139
+ Copy-Item -Path (Join-Path $routesDir "*") -Destination $installRoutesDir -Recurse -Force
140
+ Write-Host "OK Routes copied" -ForegroundColor Green
141
+ }
142
+
143
+ # Copy UI assets (required by ui_server.py)
144
+ $uiDir = Join-Path $REPO_DIR "ui"
145
+ $installUiDir = Join-Path $INSTALL_DIR "ui"
146
+ if (Test-Path $uiDir) {
147
+ if (-not (Test-Path $installUiDir)) {
148
+ New-Item -ItemType Directory -Path $installUiDir -Force | Out-Null
149
+ }
150
+ Copy-Item -Path (Join-Path $uiDir "*") -Destination $installUiDir -Recurse -Force
151
+ Write-Host "OK UI assets copied" -ForegroundColor Green
152
+ }
153
+
125
154
  # Copy MCP server
126
155
  $mcpServerPath = Join-Path $REPO_DIR "mcp_server.py"
127
156
  if (Test-Path $mcpServerPath) {
@@ -169,8 +198,9 @@ if (Test-Path $setupValidatorPath) {
169
198
  # Fallback: create basic database
170
199
  & python -c @"
171
200
  import sqlite3
201
+ import os
172
202
  from pathlib import Path
173
- db_path = Path.home() / '.claude-memory' / 'memory.db'
203
+ db_path = Path(os.environ.get('SL_MEMORY_PATH') or str(Path.home() / '.claude-memory')) / 'memory.db'
174
204
  conn = sqlite3.connect(db_path)
175
205
  cursor = conn.cursor()
176
206
  cursor.execute('''CREATE TABLE IF NOT EXISTS memories (
@@ -228,8 +258,9 @@ Write-Host "Initializing advanced features..."
228
258
  # Add sample memories if database is empty (for first-time users)
229
259
  $memoryCount = & python -c @"
230
260
  import sqlite3
261
+ import os
231
262
  from pathlib import Path
232
- db_path = Path.home() / '.claude-memory' / 'memory.db'
263
+ db_path = Path(os.environ.get('SL_MEMORY_PATH') or str(Path.home() / '.claude-memory')) / 'memory.db'
233
264
  conn = sqlite3.connect(db_path)
234
265
  cursor = conn.cursor()
235
266
  cursor.execute('SELECT COUNT(*) FROM memories')
@@ -261,8 +292,9 @@ try {
261
292
  & python "$INSTALL_DIR\pattern_learner.py" update 2>$null | Out-Null
262
293
  $patternCount = & python -c @"
263
294
  import sqlite3
295
+ import os
264
296
  from pathlib import Path
265
- db_path = Path.home() / '.claude-memory' / 'memory.db'
297
+ db_path = Path(os.environ.get('SL_MEMORY_PATH') or str(Path.home() / '.claude-memory')) / 'memory.db'
266
298
  conn = sqlite3.connect(db_path)
267
299
  cursor = conn.cursor()
268
300
  cursor.execute('SELECT COUNT(*) FROM identity_patterns')
@@ -8,7 +8,7 @@
8
8
 
9
9
  set -e
10
10
 
11
- INSTALL_DIR="${HOME}/.claude-memory"
11
+ INSTALL_DIR="${SL_MEMORY_PATH:-${HOME}/.claude-memory}"
12
12
  REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
13
13
 
14
14
  # Parse command line arguments
@@ -214,6 +214,11 @@ if [ -f "${REPO_DIR}/ui_server.py" ]; then
214
214
  echo "✓ UI server copied"
215
215
  fi
216
216
 
217
+ if [ -f "${REPO_DIR}/security_middleware.py" ]; then
218
+ cp "${REPO_DIR}/security_middleware.py" "${INSTALL_DIR}/"
219
+ echo "✓ Security middleware copied"
220
+ fi
221
+
217
222
  if [ -d "${REPO_DIR}/ui" ]; then
218
223
  mkdir -p "${INSTALL_DIR}/ui/js"
219
224
  cp "${REPO_DIR}/ui/index.html" "${INSTALL_DIR}/ui/" 2>/dev/null || true
@@ -258,8 +263,7 @@ echo "✓ Directories created"
258
263
  if [ ! -f "${INSTALL_DIR}/audit.db" ]; then
259
264
  python3 -c "
260
265
  import sqlite3
261
- from pathlib import Path
262
- audit_path = Path.home() / '.claude-memory' / 'audit.db'
266
+ audit_path = '${INSTALL_DIR}/audit.db'
263
267
  conn = sqlite3.connect(audit_path)
264
268
  cursor = conn.cursor()
265
269
  cursor.execute('''CREATE TABLE IF NOT EXISTS audit_events (
@@ -298,8 +302,7 @@ else
298
302
  # Fallback: create basic tables
299
303
  python3 -c "
300
304
  import sqlite3
301
- from pathlib import Path
302
- db_path = Path.home() / '.claude-memory' / 'memory.db'
305
+ db_path = '${INSTALL_DIR}/memory.db'
303
306
  conn = sqlite3.connect(db_path)
304
307
  cursor = conn.cursor()
305
308
  cursor.execute('''CREATE TABLE IF NOT EXISTS memories (
@@ -399,8 +402,7 @@ echo "Initializing advanced features..."
399
402
  # Add sample memories if database is empty (for first-time users)
400
403
  MEMORY_COUNT=$(python3 -c "
401
404
  import sqlite3
402
- from pathlib import Path
403
- db_path = Path.home() / '.claude-memory' / 'memory.db'
405
+ db_path = '${INSTALL_DIR}/memory.db'
404
406
  conn = sqlite3.connect(db_path)
405
407
  cursor = conn.cursor()
406
408
  cursor.execute('SELECT COUNT(*) FROM memories')
@@ -428,8 +430,7 @@ echo "○ Learning patterns..."
428
430
  if python3 "${INSTALL_DIR}/pattern_learner.py" update > /dev/null 2>&1; then
429
431
  PATTERN_COUNT=$(python3 -c "
430
432
  import sqlite3
431
- from pathlib import Path
432
- db_path = Path.home() / '.claude-memory' / 'memory.db'
433
+ db_path = '${INSTALL_DIR}/memory.db'
433
434
  conn = sqlite3.connect(db_path)
434
435
  cursor = conn.cursor()
435
436
  cursor.execute('SELECT COUNT(*) FROM identity_patterns')
@@ -486,8 +487,8 @@ else
486
487
  fi
487
488
 
488
489
  # Check if PATH already configured
489
- PATH_EXPORT="export PATH=\"\${HOME}/.claude-memory/bin:\${PATH}\""
490
- if grep -q ".claude-memory/bin" "${SHELL_CONFIG}" 2>/dev/null; then
490
+ PATH_EXPORT="export PATH=\"${INSTALL_DIR}/bin:\${PATH}\""
491
+ if grep -Fq -- "${INSTALL_DIR}/bin" "${SHELL_CONFIG}" 2>/dev/null; then
491
492
  echo "○ PATH already configured in ${SHELL_CONFIG}"
492
493
  else
493
494
  # Add PATH export to shell config
@@ -498,7 +499,7 @@ else
498
499
  fi
499
500
 
500
501
  # Add to current session PATH
501
- export PATH="${HOME}/.claude-memory/bin:${PATH}"
502
+ export PATH="${INSTALL_DIR}/bin:${PATH}"
502
503
  echo "✓ Commands available in current session"
503
504
 
504
505
  # ============================================================================
@@ -932,7 +933,7 @@ case "$INSTALL_CHOICE" in
932
933
  echo " pip3 install -r ${REPO_DIR}/requirements-search.txt"
933
934
  echo ""
934
935
  echo "Start Web Dashboard:"
935
- echo " python3 ~/.claude-memory/ui_server.py"
936
+ echo " python3 ${INSTALL_DIR}/ui_server.py"
936
937
  echo " Then open: http://localhost:8000"
937
938
  ;;
938
939
  esac
@@ -42,8 +42,8 @@ console.log('🌍 Global installation detected. Running system setup...\n');
42
42
  // Find the package root (where install.sh/install.ps1 lives)
43
43
  const packageRoot = path.join(__dirname, '..');
44
44
  const installScript = os.platform() === 'win32'
45
- ? path.join(packageRoot, 'install.ps1')
46
- : path.join(packageRoot, 'install.sh');
45
+ ? path.join(packageRoot, 'scripts', 'install.ps1')
46
+ : path.join(packageRoot, 'scripts', 'install.sh');
47
47
 
48
48
  // Check if install script exists
49
49
  if (!fs.existsSync(installScript)) {
@@ -0,0 +1,52 @@
1
+ # ============================================================================
2
+ # SuperLocalMemory - Dashboard Startup Script (PowerShell)
3
+ # Starts the web dashboard on http://localhost:8765
4
+ # Copyright (c) 2026 Varun Pratap Bhardwaj
5
+ # ============================================================================
6
+
7
+ $ErrorActionPreference = "Stop"
8
+
9
+ $SCRIPT_DIR = Split-Path -Parent $MyInvocation.MyCommand.Path
10
+ Set-Location $SCRIPT_DIR
11
+
12
+ Write-Host "=================================================================="
13
+ Write-Host " SuperLocalMemory - Dashboard "
14
+ Write-Host " by Varun Pratap Bhardwaj "
15
+ Write-Host "=================================================================="
16
+ Write-Host ""
17
+
18
+ # Check if Python is available
19
+ try {
20
+ $pythonVersion = & python --version 2>&1
21
+ Write-Host "Python: $pythonVersion"
22
+ } catch {
23
+ Write-Host "ERROR: Python not found in PATH" -ForegroundColor Red
24
+ Write-Host "Install Python 3.8+ from https://www.python.org/downloads/" -ForegroundColor Yellow
25
+ exit 1
26
+ }
27
+
28
+ # Check if FastAPI is installed
29
+ try {
30
+ & python -c "import fastapi" 2>$null
31
+ } catch {
32
+ Write-Host "WARNING: FastAPI not installed (optional dependency)" -ForegroundColor Yellow
33
+ Write-Host ""
34
+ Write-Host "To use the dashboard, install web dependencies:"
35
+ Write-Host " pip install -r requirements-ui.txt"
36
+ Write-Host ""
37
+ Write-Host "Or install all features:"
38
+ Write-Host " pip install -r requirements-full.txt"
39
+ Write-Host ""
40
+ exit 1
41
+ }
42
+
43
+ Write-Host "Starting dashboard server..." -ForegroundColor Green
44
+ Write-Host ""
45
+ Write-Host " Dashboard: http://localhost:8765"
46
+ Write-Host " API Docs: http://localhost:8765/docs"
47
+ Write-Host ""
48
+ Write-Host "Press Ctrl+C to stop"
49
+ Write-Host ""
50
+
51
+ # Start server
52
+ & python ui_server.py
@@ -0,0 +1,41 @@
1
+ #!/bin/bash
2
+ # ============================================================================
3
+ # SuperLocalMemory - Dashboard Startup Script
4
+ # Starts the web dashboard on http://localhost:8765
5
+ # Copyright (c) 2026 Varun Pratap Bhardwaj
6
+ # ============================================================================
7
+
8
+ set -e
9
+
10
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11
+ cd "$SCRIPT_DIR"
12
+
13
+ echo "╔══════════════════════════════════════════════════════════════╗"
14
+ echo "║ SuperLocalMemory - Dashboard ║"
15
+ echo "║ by Varun Pratap Bhardwaj ║"
16
+ echo "╚══════════════════════════════════════════════════════════════╝"
17
+ echo ""
18
+
19
+ # Check if FastAPI is installed
20
+ if ! python3 -c "import fastapi" 2>/dev/null; then
21
+ echo "⚠️ FastAPI not installed (optional dependency)"
22
+ echo ""
23
+ echo "To use the dashboard, install web dependencies:"
24
+ echo " pip3 install -r requirements-ui.txt"
25
+ echo ""
26
+ echo "Or install all features:"
27
+ echo " pip3 install -r requirements-full.txt"
28
+ echo ""
29
+ exit 1
30
+ fi
31
+
32
+ echo "🚀 Starting dashboard server..."
33
+ echo ""
34
+ echo " Dashboard: http://localhost:8765"
35
+ echo " API Docs: http://localhost:8765/docs"
36
+ echo ""
37
+ echo "Press Ctrl+C to stop"
38
+ echo ""
39
+
40
+ # Start server
41
+ python3 ui_server.py