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,207 @@
1
+ #!/bin/bash
2
+ # ============================================================================
3
+ # SuperLocalMemory V2 - NPM Package Testing Script
4
+ # Copyright (c) 2026 Varun Pratap Bhardwaj
5
+ # Licensed under MIT License
6
+ # Repository: https://github.com/varun369/SuperLocalMemoryV2
7
+ # ============================================================================
8
+ #
9
+ # Tests the NPM package locally before publishing
10
+ # Run this BEFORE npm publish
11
+ #
12
+
13
+ set -e
14
+
15
+ REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
16
+
17
+ echo "╔══════════════════════════════════════════════════════════════╗"
18
+ echo "║ SuperLocalMemory V2 - NPM Package Test ║"
19
+ echo "║ by Varun Pratap Bhardwaj ║"
20
+ echo "╚══════════════════════════════════════════════════════════════╝"
21
+ echo ""
22
+
23
+ # Step 1: Validate package.json
24
+ echo "📋 Step 1: Validating package.json..."
25
+ if [ ! -f "$REPO_DIR/package.json" ]; then
26
+ echo "❌ Error: package.json not found"
27
+ exit 1
28
+ fi
29
+
30
+ # Check version
31
+ VERSION=$(node -e "console.log(require('$REPO_DIR/package.json').version)")
32
+ echo " Version: $VERSION"
33
+
34
+ # Check required fields
35
+ node -e "
36
+ const pkg = require('$REPO_DIR/package.json');
37
+ const required = ['name', 'version', 'description', 'author', 'license', 'repository', 'bin'];
38
+ const missing = required.filter(f => !pkg[f]);
39
+ if (missing.length > 0) {
40
+ console.error('❌ Missing required fields:', missing.join(', '));
41
+ process.exit(1);
42
+ }
43
+ console.log(' ✓ All required fields present');
44
+ "
45
+
46
+ # Step 2: Check file structure
47
+ echo ""
48
+ echo "📁 Step 2: Checking file structure..."
49
+
50
+ REQUIRED_FILES=(
51
+ "bin/slm-npm"
52
+ "scripts/postinstall.js"
53
+ "scripts/preuninstall.js"
54
+ "src/memory_store_v2.py"
55
+ "mcp_server.py"
56
+ "install.sh"
57
+ "install.ps1"
58
+ "README.md"
59
+ "LICENSE"
60
+ "ATTRIBUTION.md"
61
+ )
62
+
63
+ for file in "${REQUIRED_FILES[@]}"; do
64
+ if [ ! -f "$REPO_DIR/$file" ]; then
65
+ echo " ❌ Missing: $file"
66
+ exit 1
67
+ fi
68
+ done
69
+ echo " ✓ All required files present"
70
+
71
+ # Step 3: Test npm pack
72
+ echo ""
73
+ echo "📦 Step 3: Testing npm pack..."
74
+ cd "$REPO_DIR"
75
+ rm -f superlocalmemory-*.tgz
76
+ npm pack --quiet
77
+ TARBALL=$(ls superlocalmemory-*.tgz 2>/dev/null | head -1)
78
+
79
+ if [ -z "$TARBALL" ]; then
80
+ echo " ❌ npm pack failed"
81
+ exit 1
82
+ fi
83
+
84
+ SIZE=$(du -h "$TARBALL" | cut -f1)
85
+ echo " ✓ Package created: $TARBALL ($SIZE)"
86
+
87
+ # Check package size
88
+ SIZE_KB=$(du -k "$TARBALL" | cut -f1)
89
+ if [ "$SIZE_KB" -gt 1024 ]; then
90
+ echo " ⚠️ Warning: Package size is large (${SIZE}). Target: <500KB"
91
+ else
92
+ echo " ✓ Package size OK: $SIZE"
93
+ fi
94
+
95
+ # Step 4: Inspect package contents
96
+ echo ""
97
+ echo "🔍 Step 4: Inspecting package contents..."
98
+ echo " Files included:"
99
+ tar -tzf "$TARBALL" | head -20
100
+ FILE_COUNT=$(tar -tzf "$TARBALL" | wc -l)
101
+ echo " ... ($FILE_COUNT total files)"
102
+
103
+ # Check for unwanted files
104
+ UNWANTED=("*.pyc" "*.db" ".git" "test_*.py" "wiki-content")
105
+ for pattern in "${UNWANTED[@]}"; do
106
+ if tar -tzf "$TARBALL" | grep -q "$pattern"; then
107
+ echo " ⚠️ Warning: Found unwanted files matching: $pattern"
108
+ fi
109
+ done
110
+ echo " ✓ No obvious unwanted files found"
111
+
112
+ # Step 5: Test npm link (local install)
113
+ echo ""
114
+ echo "🔗 Step 5: Testing npm link (local install)..."
115
+
116
+ # Unlink if already linked
117
+ npm unlink -g superlocalmemory 2>/dev/null || true
118
+
119
+ # Link
120
+ if npm link --quiet; then
121
+ echo " ✓ npm link successful"
122
+ else
123
+ echo " ❌ npm link failed"
124
+ exit 1
125
+ fi
126
+
127
+ # Step 6: Test CLI command
128
+ echo ""
129
+ echo "🧪 Step 6: Testing CLI command..."
130
+
131
+ if command -v slm &> /dev/null; then
132
+ echo " ✓ slm command found"
133
+
134
+ # Test version
135
+ if slm --version &> /dev/null; then
136
+ echo " ✓ slm --version works"
137
+ else
138
+ echo " ⚠️ slm --version failed (might be OK if not installed yet)"
139
+ fi
140
+
141
+ # Test help
142
+ if slm --help &> /dev/null; then
143
+ echo " ✓ slm --help works"
144
+ else
145
+ echo " ⚠️ slm --help failed"
146
+ fi
147
+ else
148
+ echo " ⚠️ slm command not found (expected for first install)"
149
+ echo " This is OK - postinstall will set it up"
150
+ fi
151
+
152
+ # Step 7: Validate scripts
153
+ echo ""
154
+ echo "🔧 Step 7: Validating scripts..."
155
+
156
+ # Check postinstall.js
157
+ if node "$REPO_DIR/scripts/postinstall.js" --help &> /dev/null; then
158
+ echo " ✓ postinstall.js is valid Node.js"
159
+ else
160
+ echo " ⚠️ postinstall.js might have issues"
161
+ fi
162
+
163
+ # Check executables
164
+ if [ -x "$REPO_DIR/bin/slm-npm" ]; then
165
+ echo " ✓ bin/slm-npm is executable"
166
+ else
167
+ echo " ❌ bin/slm-npm is not executable"
168
+ echo " Run: chmod +x $REPO_DIR/bin/slm-npm"
169
+ exit 1
170
+ fi
171
+
172
+ # Step 8: Final summary
173
+ echo ""
174
+ echo "╔══════════════════════════════════════════════════════════════╗"
175
+ echo "║ Test Summary ║"
176
+ echo "╚══════════════════════════════════════════════════════════════╝"
177
+ echo ""
178
+ echo "✅ Package structure: OK"
179
+ echo "✅ File validation: OK"
180
+ echo "✅ npm pack: OK ($SIZE)"
181
+ echo "✅ npm link: OK"
182
+ echo "✅ Scripts valid: OK"
183
+ echo ""
184
+ echo "📦 Package ready for testing!"
185
+ echo ""
186
+ echo "Next steps:"
187
+ echo "1. Test manual install:"
188
+ echo " npm install -g ./$TARBALL"
189
+ echo " slm status"
190
+ echo " npm uninstall -g superlocalmemory"
191
+ echo ""
192
+ echo "2. Test on Docker (recommended):"
193
+ echo " docker run -it --rm -v \$(pwd):/app node:18 bash"
194
+ echo " cd /app"
195
+ echo " npm install -g ./$TARBALL"
196
+ echo " slm status"
197
+ echo ""
198
+ echo "3. When ready to publish:"
199
+ echo " npm login"
200
+ echo " npm publish"
201
+ echo ""
202
+ echo "Full guide: NPM-PUBLISHING-GUIDE.md"
203
+ echo ""
204
+
205
+ # Cleanup
206
+ rm -f "$TARBALL"
207
+ echo "🧹 Cleaned up test tarball"
@@ -0,0 +1,294 @@
1
+ # ============================================================================
2
+ # SuperLocalMemory - Installation Verification Script (PowerShell)
3
+ # Copyright (c) 2026 Varun Pratap Bhardwaj
4
+ # Licensed under MIT License
5
+ # ============================================================================
6
+
7
+ $ErrorActionPreference = "Continue"
8
+
9
+ $INSTALL_DIR = Join-Path $env:USERPROFILE ".claude-memory"
10
+
11
+ # Print banner
12
+ Write-Host ""
13
+ Write-Host "=================================================================="
14
+ Write-Host " SuperLocalMemory - Installation Verification "
15
+ Write-Host " by Varun Pratap Bhardwaj "
16
+ Write-Host "=================================================================="
17
+ Write-Host ""
18
+
19
+ # Track status
20
+ $CORE_OK = $true
21
+ $SEARCH_OK = $false
22
+ $UI_OK = $false
23
+ $ERRORS = @()
24
+
25
+ # ============================================================================
26
+ # CORE INSTALLATION CHECK
27
+ # ============================================================================
28
+
29
+ Write-Host "================================================================"
30
+ Write-Host "1. Core Installation"
31
+ Write-Host "================================================================"
32
+ Write-Host ""
33
+
34
+ # Check Python version
35
+ Write-Host -NoNewline "Python 3.8+ "
36
+ try {
37
+ $pythonVersion = & python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" 2>&1
38
+ $pythonMajor = & python -c "import sys; print(sys.version_info.major)" 2>&1
39
+ $pythonMinor = & python -c "import sys; print(sys.version_info.minor)" 2>&1
40
+
41
+ if ([int]$pythonMajor -lt 3 -or ([int]$pythonMajor -eq 3 -and [int]$pythonMinor -lt 8)) {
42
+ Write-Host "FAIL (found $pythonVersion)" -ForegroundColor Red
43
+ $CORE_OK = $false
44
+ $ERRORS += "Python 3.8+ required"
45
+ } else {
46
+ Write-Host "OK (v$pythonVersion)" -ForegroundColor Green
47
+ }
48
+ } catch {
49
+ Write-Host "FAIL (Python not found)" -ForegroundColor Red
50
+ $CORE_OK = $false
51
+ $ERRORS += "Python not installed"
52
+ }
53
+
54
+ # Check installation directory
55
+ Write-Host -NoNewline "Installation directory "
56
+ if (Test-Path $INSTALL_DIR) {
57
+ Write-Host "OK ($INSTALL_DIR)" -ForegroundColor Green
58
+ } else {
59
+ Write-Host "FAIL (not found)" -ForegroundColor Red
60
+ $CORE_OK = $false
61
+ $ERRORS += "Installation directory missing"
62
+ }
63
+
64
+ # Check core files
65
+ Write-Host -NoNewline "Core scripts "
66
+ $coreFiles = @("memory_store_v2.py", "graph_engine.py", "pattern_learner.py")
67
+ $missingFiles = @()
68
+ foreach ($file in $coreFiles) {
69
+ $filePath = Join-Path $INSTALL_DIR $file
70
+ if (-not (Test-Path $filePath)) {
71
+ $missingFiles += $file
72
+ }
73
+ }
74
+
75
+ if ($missingFiles.Count -eq 0) {
76
+ Write-Host "OK" -ForegroundColor Green
77
+ } else {
78
+ Write-Host "FAIL (missing: $($missingFiles -join ', '))" -ForegroundColor Red
79
+ $CORE_OK = $false
80
+ $ERRORS += "Core scripts missing"
81
+ }
82
+
83
+ # Check CLI wrappers
84
+ Write-Host -NoNewline "CLI wrappers "
85
+ $binDir = Join-Path $INSTALL_DIR "bin"
86
+ if (Test-Path $binDir) {
87
+ Write-Host "OK" -ForegroundColor Green
88
+ } else {
89
+ Write-Host "FAIL" -ForegroundColor Red
90
+ $CORE_OK = $false
91
+ $ERRORS += "CLI wrappers missing"
92
+ }
93
+
94
+ # Check PATH configuration
95
+ Write-Host -NoNewline "PATH configuration "
96
+ $userPath = [Environment]::GetEnvironmentVariable("PATH", "User")
97
+ if ($userPath -like "*$binDir*") {
98
+ Write-Host "OK (commands globally available)" -ForegroundColor Green
99
+ } else {
100
+ Write-Host "WARNING (not in PATH)" -ForegroundColor Yellow
101
+ $ERRORS += "PATH not configured - add manually or re-run installer"
102
+ }
103
+
104
+ # Check database
105
+ Write-Host -NoNewline "Database "
106
+ $dbPath = Join-Path $INSTALL_DIR "memory.db"
107
+ if (Test-Path $dbPath) {
108
+ $dbSize = [math]::Round((Get-Item $dbPath).Length / 1KB, 2)
109
+ Write-Host "OK ($dbSize KB)" -ForegroundColor Green
110
+ } else {
111
+ Write-Host "NOT CREATED (will be created on first use)" -ForegroundColor Yellow
112
+ }
113
+
114
+ # Check config
115
+ Write-Host -NoNewline "Configuration "
116
+ $configPath = Join-Path $INSTALL_DIR "config.json"
117
+ if (Test-Path $configPath) {
118
+ Write-Host "OK" -ForegroundColor Green
119
+ } else {
120
+ Write-Host "WARNING (using defaults)" -ForegroundColor Yellow
121
+ }
122
+
123
+ Write-Host ""
124
+
125
+ # ============================================================================
126
+ # OPTIONAL FEATURES CHECK
127
+ # ============================================================================
128
+
129
+ Write-Host "================================================================"
130
+ Write-Host "2. Optional Features"
131
+ Write-Host "================================================================"
132
+ Write-Host ""
133
+
134
+ # Advanced Search
135
+ Write-Host -NoNewline "Advanced Search "
136
+ try {
137
+ & python -c "import sentence_transformers; import hnswlib" 2>$null
138
+ Write-Host "ENABLED" -ForegroundColor Green
139
+ $SEARCH_OK = $true
140
+ } catch {
141
+ Write-Host "DISABLED" -ForegroundColor Yellow
142
+ Write-Host " Install: pip install -r requirements-search.txt"
143
+ }
144
+
145
+ # Web Dashboard
146
+ Write-Host -NoNewline "Web Dashboard "
147
+ try {
148
+ & python -c "import fastapi; import uvicorn" 2>$null
149
+ Write-Host "ENABLED" -ForegroundColor Green
150
+ $UI_OK = $true
151
+ $apiServerPath = Join-Path $INSTALL_DIR "api_server.py"
152
+ if (Test-Path $apiServerPath) {
153
+ Write-Host " Start: python $apiServerPath"
154
+ Write-Host " URL: http://127.0.0.1:8000"
155
+ }
156
+ } catch {
157
+ Write-Host "DISABLED" -ForegroundColor Yellow
158
+ Write-Host " Install: pip install -r requirements-ui.txt"
159
+ }
160
+
161
+ Write-Host ""
162
+
163
+ # ============================================================================
164
+ # PERFORMANCE QUICK TEST
165
+ # ============================================================================
166
+
167
+ if ($CORE_OK) {
168
+ Write-Host "================================================================"
169
+ Write-Host "3. Performance Quick Test"
170
+ Write-Host "================================================================"
171
+ Write-Host ""
172
+
173
+ # Test memory store initialization
174
+ Write-Host -NoNewline "Memory store init "
175
+ try {
176
+ & python -c "import sys; sys.path.insert(0, '$INSTALL_DIR'); from memory_store_v2 import MemoryStoreV2; store = MemoryStoreV2()" 2>$null
177
+ Write-Host "OK" -ForegroundColor Green
178
+ } catch {
179
+ Write-Host "FAIL" -ForegroundColor Red
180
+ $ERRORS += "Memory store initialization failed"
181
+ }
182
+
183
+ # Test database query
184
+ Write-Host -NoNewline "Database query "
185
+ $startTime = Get-Date
186
+ try {
187
+ & python -c "import sys; sys.path.insert(0, '$INSTALL_DIR'); from memory_store_v2 import MemoryStoreV2; store = MemoryStoreV2(); list(store.list_all(limit=1))" 2>$null
188
+ $endTime = Get-Date
189
+ $duration = [math]::Round(($endTime - $startTime).TotalMilliseconds, 0)
190
+ Write-Host "OK ($duration ms)" -ForegroundColor Green
191
+ } catch {
192
+ Write-Host "FAIL" -ForegroundColor Red
193
+ $ERRORS += "Database query failed"
194
+ }
195
+
196
+ Write-Host ""
197
+ }
198
+
199
+ # ============================================================================
200
+ # SUMMARY
201
+ # ============================================================================
202
+
203
+ Write-Host "================================================================"
204
+ Write-Host "4. Summary"
205
+ Write-Host "================================================================"
206
+ Write-Host ""
207
+
208
+ if ($CORE_OK) {
209
+ Write-Host "Core Installation: WORKING" -ForegroundColor Green
210
+ } else {
211
+ Write-Host "Core Installation: FAILED" -ForegroundColor Red
212
+ }
213
+
214
+ if ($SEARCH_OK) {
215
+ Write-Host "Advanced Search: ENABLED" -ForegroundColor Green
216
+ } else {
217
+ Write-Host "Advanced Search: DISABLED (optional)" -ForegroundColor Yellow
218
+ }
219
+
220
+ if ($UI_OK) {
221
+ Write-Host "Web Dashboard: ENABLED" -ForegroundColor Green
222
+ } else {
223
+ Write-Host "Web Dashboard: DISABLED (optional)" -ForegroundColor Yellow
224
+ }
225
+
226
+ Write-Host ""
227
+
228
+ # Feature Status
229
+ Write-Host "Feature Status:"
230
+ if ($CORE_OK) {
231
+ Write-Host " - Basic CLI commands: Available" -ForegroundColor Green
232
+ Write-Host " - MCP Server: Available" -ForegroundColor Green
233
+ Write-Host " - Skills: Available" -ForegroundColor Green
234
+ } else {
235
+ Write-Host " - Basic CLI commands: Not available" -ForegroundColor Red
236
+ Write-Host " - MCP Server: Not available" -ForegroundColor Red
237
+ Write-Host " - Skills: Not available" -ForegroundColor Red
238
+ }
239
+
240
+ if ($SEARCH_OK) {
241
+ Write-Host " - Semantic Search: Enabled" -ForegroundColor Green
242
+ } else {
243
+ Write-Host " - Semantic Search: Disabled" -ForegroundColor Yellow
244
+ }
245
+
246
+ if ($UI_OK) {
247
+ Write-Host " - Web Interface: Enabled" -ForegroundColor Green
248
+ } else {
249
+ Write-Host " - Web Interface: Disabled" -ForegroundColor Yellow
250
+ }
251
+
252
+ Write-Host ""
253
+
254
+ # Errors
255
+ if ($ERRORS.Count -gt 0) {
256
+ Write-Host "Errors detected:" -ForegroundColor Yellow
257
+ foreach ($error in $ERRORS) {
258
+ Write-Host " - $error"
259
+ }
260
+ Write-Host ""
261
+ }
262
+
263
+ # Next Steps
264
+ Write-Host "Next Steps:"
265
+ Write-Host ""
266
+
267
+ if ($CORE_OK) {
268
+ Write-Host " Try it now:"
269
+ Write-Host " python $INSTALL_DIR\memory_store_v2.py"
270
+ Write-Host ""
271
+
272
+ if (-not $SEARCH_OK -and -not $UI_OK) {
273
+ Write-Host " Install optional features:"
274
+ Write-Host " pip install -r requirements-search.txt # Advanced search"
275
+ Write-Host " pip install -r requirements-ui.txt # Web dashboard"
276
+ Write-Host " pip install -r requirements-full.txt # Everything"
277
+ Write-Host ""
278
+ }
279
+ } else {
280
+ Write-Host " Fix installation issues:"
281
+ Write-Host " Run: .\install.ps1"
282
+ Write-Host ""
283
+ }
284
+
285
+ # Exit code
286
+ if ($CORE_OK) {
287
+ Write-Host "Installation verification PASSED" -ForegroundColor Green
288
+ Write-Host ""
289
+ exit 0
290
+ } else {
291
+ Write-Host "Installation verification FAILED" -ForegroundColor Red
292
+ Write-Host ""
293
+ exit 1
294
+ }