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,127 @@
1
+ # ============================================================================
2
+ # SuperLocalMemory V2 - Wiki Sync Script (PowerShell)
3
+ # Automatically syncs wiki-content/ to GitHub Wiki repository
4
+ # Copyright (c) 2026 Varun Pratap Bhardwaj
5
+ # ============================================================================
6
+
7
+ param()
8
+
9
+ $ErrorActionPreference = "Stop"
10
+
11
+ # Configuration
12
+ $REPO_DIR = $PSScriptRoot
13
+ $WIKI_CONTENT_DIR = Join-Path $REPO_DIR "wiki-content"
14
+ $WIKI_REPO_DIR = Join-Path $env:TEMP "SuperLocalMemoryV2.wiki"
15
+ $WIKI_REPO_URL = "https://github.com/varun369/SuperLocalMemoryV2.wiki.git"
16
+
17
+ Write-Host "╔══════════════════════════════════════════════════════════════╗"
18
+ Write-Host "║ SuperLocalMemory V2 - Wiki Sync Tool ║"
19
+ Write-Host "║ by Varun Pratap Bhardwaj ║"
20
+ Write-Host "╚══════════════════════════════════════════════════════════════╝"
21
+ Write-Host ""
22
+
23
+ # Check if wiki-content exists
24
+ if (-not (Test-Path $WIKI_CONTENT_DIR)) {
25
+ Write-Host "✗ Error: wiki-content/ directory not found" -ForegroundColor Red
26
+ exit 1
27
+ }
28
+
29
+ # Clone or update wiki repo
30
+ if (Test-Path $WIKI_REPO_DIR) {
31
+ Write-Host "📥 Updating existing wiki repository..."
32
+ Push-Location $WIKI_REPO_DIR
33
+ try {
34
+ $DEFAULT_BRANCH = git symbolic-ref refs/remotes/origin/HEAD 2>$null
35
+ if ($DEFAULT_BRANCH) {
36
+ $DEFAULT_BRANCH = $DEFAULT_BRANCH -replace '^refs/remotes/origin/', ''
37
+ } else {
38
+ $DEFAULT_BRANCH = "master"
39
+ }
40
+ git pull origin $DEFAULT_BRANCH
41
+ } finally {
42
+ Pop-Location
43
+ }
44
+ } else {
45
+ Write-Host "📥 Cloning wiki repository..."
46
+ git clone $WIKI_REPO_URL $WIKI_REPO_DIR
47
+ Set-Location $WIKI_REPO_DIR
48
+ $DEFAULT_BRANCH = git symbolic-ref refs/remotes/origin/HEAD 2>$null
49
+ if ($DEFAULT_BRANCH) {
50
+ $DEFAULT_BRANCH = $DEFAULT_BRANCH -replace '^refs/remotes/origin/', ''
51
+ } else {
52
+ $DEFAULT_BRANCH = "master"
53
+ }
54
+ }
55
+
56
+ # Sync wiki files (PowerShell equivalent of rsync)
57
+ Write-Host ""
58
+ Write-Host "📋 Syncing wiki files..."
59
+
60
+ Push-Location $WIKI_REPO_DIR
61
+ try {
62
+ # Remove old files except .git and excluded files
63
+ $excludeFiles = @("DEPLOYMENT-CHECKLIST.md", "WIKI-UPDATE-SUMMARY.md", "NEW-PAGES-SUMMARY.md", "README.md")
64
+ Get-ChildItem -Path . -Recurse -File | Where-Object {
65
+ $_.Name -notin $excludeFiles -and $_.FullName -notlike "*\.git\*"
66
+ } | Remove-Item -Force
67
+
68
+ # Copy new files from wiki-content
69
+ Get-ChildItem -Path $WIKI_CONTENT_DIR -Recurse -File | Where-Object {
70
+ $_.Name -notin $excludeFiles
71
+ } | ForEach-Object {
72
+ $relativePath = $_.FullName.Substring($WIKI_CONTENT_DIR.Length + 1)
73
+ $targetPath = Join-Path $WIKI_REPO_DIR $relativePath
74
+ $targetDir = Split-Path $targetPath -Parent
75
+ if (-not (Test-Path $targetDir)) {
76
+ New-Item -ItemType Directory -Path $targetDir -Force | Out-Null
77
+ }
78
+ Copy-Item $_.FullName -Destination $targetPath -Force
79
+ }
80
+
81
+ # Remove old naming
82
+ $oldFile = Join-Path $WIKI_REPO_DIR "4-Layer-Architecture.md"
83
+ if (Test-Path $oldFile) {
84
+ Remove-Item $oldFile -Force
85
+ }
86
+
87
+ # Check for changes
88
+ $changes = git status --porcelain
89
+ if (-not $changes) {
90
+ Write-Host "✓ No changes to sync" -ForegroundColor Green
91
+ exit 0
92
+ }
93
+
94
+ # Show what changed
95
+ Write-Host ""
96
+ Write-Host "📝 Changes detected:"
97
+ git status --short
98
+
99
+ # Commit and push
100
+ Write-Host ""
101
+ Write-Host "💾 Committing changes..."
102
+ git add .
103
+
104
+ $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm"
105
+ $commitMessage = @"
106
+ Sync: Update wiki from main repo ($timestamp)
107
+
108
+ Automated sync from wiki-content/ directory
109
+
110
+ Created by: Varun Pratap Bhardwaj
111
+ "@
112
+
113
+ git commit -m $commitMessage
114
+
115
+ Write-Host ""
116
+ Write-Host "📤 Pushing to GitHub Wiki..."
117
+ git push origin $DEFAULT_BRANCH
118
+
119
+ Write-Host ""
120
+ Write-Host "╔══════════════════════════════════════════════════════════════╗"
121
+ Write-Host "║ ✅ Wiki synced successfully! ║"
122
+ Write-Host "║ View at: https://github.com/varun369/SuperLocalMemoryV2/wiki║"
123
+ Write-Host "╚══════════════════════════════════════════════════════════════╝"
124
+
125
+ } finally {
126
+ Pop-Location
127
+ }
@@ -0,0 +1,82 @@
1
+ #!/bin/bash
2
+ # ============================================================================
3
+ # SuperLocalMemory V2 - Wiki Sync Script
4
+ # Automatically syncs wiki-content/ to GitHub Wiki repository
5
+ # Copyright (c) 2026 Varun Pratap Bhardwaj
6
+ # ============================================================================
7
+
8
+ set -e
9
+
10
+ REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)"
11
+ WIKI_CONTENT_DIR="${REPO_DIR}/wiki-content"
12
+ WIKI_REPO_DIR="/tmp/SuperLocalMemoryV2.wiki"
13
+ WIKI_REPO_URL="https://github.com/varun369/SuperLocalMemoryV2.wiki.git"
14
+
15
+ echo "╔══════════════════════════════════════════════════════════════╗"
16
+ echo "║ SuperLocalMemory V2 - Wiki Sync Tool ║"
17
+ echo "║ by Varun Pratap Bhardwaj ║"
18
+ echo "╚══════════════════════════════════════════════════════════════╝"
19
+ echo ""
20
+
21
+ # Check if wiki-content exists
22
+ if [ ! -d "${WIKI_CONTENT_DIR}" ]; then
23
+ echo "✗ Error: wiki-content/ directory not found"
24
+ exit 1
25
+ fi
26
+
27
+ # Clone or update wiki repo
28
+ if [ -d "${WIKI_REPO_DIR}" ]; then
29
+ echo "📥 Updating existing wiki repository..."
30
+ cd "${WIKI_REPO_DIR}"
31
+ DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo "master")
32
+ git pull origin "${DEFAULT_BRANCH}"
33
+ else
34
+ echo "📥 Cloning wiki repository..."
35
+ git clone "${WIKI_REPO_URL}" "${WIKI_REPO_DIR}"
36
+ cd "${WIKI_REPO_DIR}"
37
+ fi
38
+
39
+ # Sync wiki files
40
+ echo ""
41
+ echo "📋 Syncing wiki files..."
42
+ rsync -av --delete \
43
+ --exclude='.git' \
44
+ --exclude='DEPLOYMENT-CHECKLIST.md' \
45
+ --exclude='WIKI-UPDATE-SUMMARY.md' \
46
+ --exclude='NEW-PAGES-SUMMARY.md' \
47
+ --exclude='README.md' \
48
+ "${WIKI_CONTENT_DIR}/" "${WIKI_REPO_DIR}/"
49
+
50
+ # Remove old naming
51
+ rm -f "${WIKI_REPO_DIR}/4-Layer-Architecture.md"
52
+
53
+ # Check for changes
54
+ if [ -z "$(git status --porcelain)" ]; then
55
+ echo "✓ No changes to sync"
56
+ exit 0
57
+ fi
58
+
59
+ # Show what changed
60
+ echo ""
61
+ echo "📝 Changes detected:"
62
+ git status --short
63
+
64
+ # Commit and push
65
+ echo ""
66
+ echo "💾 Committing changes..."
67
+ git add .
68
+ git commit -m "Sync: Update wiki from main repo ($(date '+%Y-%m-%d %H:%M'))
69
+
70
+ Automated sync from wiki-content/ directory
71
+
72
+ Created by: Varun Pratap Bhardwaj"
73
+
74
+ echo ""
75
+ echo "📤 Pushing to GitHub Wiki..."
76
+ git push origin "${DEFAULT_BRANCH:-master}"
77
+
78
+ echo ""
79
+ echo "╔══════════════════════════════════════════════════════════════╗"
80
+ echo "║ ✅ Wiki synced successfully! ║"
81
+ echo "║ View at: https://github.com/varun369/SuperLocalMemoryV2/wiki║"
82
+ echo "╚══════════════════════════════════════════════════════════════╝"
@@ -0,0 +1,161 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # SuperLocalMemory V2 - DMG Testing Script
4
+ #
5
+ # Copyright (c) 2026 Varun Pratap Bhardwaj
6
+ # Solution Architect & Original Creator
7
+ #
8
+ # Licensed under MIT License (see LICENSE file)
9
+ # Repository: https://github.com/varun369/SuperLocalMemoryV2
10
+ #
11
+ # ATTRIBUTION REQUIRED: This notice must be preserved in all copies.
12
+ #
13
+
14
+ set -e
15
+
16
+ # Colors
17
+ RED='\033[0;31m'
18
+ GREEN='\033[0;32m'
19
+ YELLOW='\033[1;33m'
20
+ BLUE='\033[0;34m'
21
+ NC='\033[0m'
22
+
23
+ log_info() {
24
+ echo -e "${BLUE}[TEST]${NC} $1"
25
+ }
26
+
27
+ log_success() {
28
+ echo -e "${GREEN}[PASS]${NC} $1"
29
+ }
30
+
31
+ log_error() {
32
+ echo -e "${RED}[FAIL]${NC} $1"
33
+ }
34
+
35
+ DMG_FILE="SuperLocalMemory-v2.1.0-macos.dmg"
36
+
37
+ if [ ! -f "${DMG_FILE}" ]; then
38
+ log_error "DMG file not found: ${DMG_FILE}"
39
+ exit 1
40
+ fi
41
+
42
+ log_info "Testing DMG: ${DMG_FILE}"
43
+ echo ""
44
+
45
+ # Test 1: DMG Integrity
46
+ log_info "Test 1: Checking DMG integrity..."
47
+ if hdiutil verify "${DMG_FILE}" 2>&1 | grep -q "verified"; then
48
+ log_success "DMG integrity check passed"
49
+ else
50
+ log_error "DMG integrity check failed"
51
+ exit 1
52
+ fi
53
+
54
+ # Test 2: Mount DMG
55
+ log_info "Test 2: Mounting DMG..."
56
+ MOUNT_OUTPUT=$(hdiutil attach "${DMG_FILE}" -nobrowse -readonly)
57
+ MOUNT_POINT=$(echo "$MOUNT_OUTPUT" | grep -E '/Volumes/' | awk '{print $3}')
58
+
59
+ if [ -z "$MOUNT_POINT" ]; then
60
+ log_error "Failed to mount DMG"
61
+ exit 1
62
+ fi
63
+
64
+ log_success "DMG mounted at: $MOUNT_POINT"
65
+
66
+ # Test 3: Verify Contents
67
+ log_info "Test 3: Checking DMG contents..."
68
+
69
+ REQUIRED_FILES=(
70
+ "SuperLocalMemory/install.sh"
71
+ "SuperLocalMemory/src"
72
+ "SuperLocalMemory/bin"
73
+ "SuperLocalMemory/configs"
74
+ "SuperLocalMemory/skills"
75
+ "SuperLocalMemory/mcp_server.py"
76
+ "SuperLocalMemory/README.md"
77
+ "SuperLocalMemory/LICENSE"
78
+ "SuperLocalMemory/ATTRIBUTION.md"
79
+ "SuperLocalMemory/README-INSTALLATION.txt"
80
+ "SuperLocalMemory/INSTALL"
81
+ "Applications"
82
+ )
83
+
84
+ ALL_PRESENT=true
85
+ for item in "${REQUIRED_FILES[@]}"; do
86
+ if [ -e "${MOUNT_POINT}/${item}" ]; then
87
+ log_success " ✓ ${item}"
88
+ else
89
+ log_error " ✗ ${item} (MISSING)"
90
+ ALL_PRESENT=false
91
+ fi
92
+ done
93
+
94
+ if [ "$ALL_PRESENT" = false ]; then
95
+ log_error "Some required files are missing"
96
+ hdiutil detach "${MOUNT_POINT}" -quiet
97
+ exit 1
98
+ fi
99
+
100
+ # Test 4: Check installer script
101
+ log_info "Test 4: Checking installer script..."
102
+ if [ -x "${MOUNT_POINT}/SuperLocalMemory/install.sh" ]; then
103
+ log_success "install.sh is executable"
104
+ else
105
+ log_error "install.sh is not executable"
106
+ hdiutil detach "${MOUNT_POINT}" -quiet
107
+ exit 1
108
+ fi
109
+
110
+ # Test 5: Check Applications symlink
111
+ log_info "Test 5: Checking Applications symlink..."
112
+ if [ -L "${MOUNT_POINT}/Applications" ]; then
113
+ TARGET=$(readlink "${MOUNT_POINT}/Applications")
114
+ if [ "$TARGET" = "/Applications" ]; then
115
+ log_success "Applications symlink is correct"
116
+ else
117
+ log_error "Applications symlink points to wrong location: $TARGET"
118
+ fi
119
+ else
120
+ log_error "Applications symlink not found"
121
+ fi
122
+
123
+ # Test 6: Check file sizes
124
+ log_info "Test 6: Checking file sizes..."
125
+ INSTALLER_SIZE=$(du -sh "${MOUNT_POINT}/SuperLocalMemory" | awk '{print $1}')
126
+ log_success "Installer size: ${INSTALLER_SIZE}"
127
+
128
+ # Test 7: Verify attribution
129
+ log_info "Test 7: Checking attribution headers..."
130
+ if grep -q "Varun Pratap Bhardwaj" "${MOUNT_POINT}/SuperLocalMemory/src/memory_store_v2.py"; then
131
+ log_success "Attribution headers present"
132
+ else
133
+ log_error "Attribution headers missing"
134
+ fi
135
+
136
+ # Test 8: Check INSTALL wrapper
137
+ log_info "Test 8: Checking INSTALL wrapper..."
138
+ if [ -x "${MOUNT_POINT}/SuperLocalMemory/INSTALL" ]; then
139
+ log_success "INSTALL wrapper is executable"
140
+ else
141
+ log_error "INSTALL wrapper is not executable"
142
+ fi
143
+
144
+ # Cleanup
145
+ log_info "Unmounting DMG..."
146
+ hdiutil detach "${MOUNT_POINT}" -quiet
147
+ log_success "DMG unmounted"
148
+
149
+ echo ""
150
+ echo "============================================================================"
151
+ log_success "ALL TESTS PASSED!"
152
+ echo "============================================================================"
153
+ echo ""
154
+ echo "DMG is ready for distribution."
155
+ echo ""
156
+ echo "To test installation:"
157
+ echo " 1. Open ${DMG_FILE}"
158
+ echo " 2. Double-click INSTALL"
159
+ echo " 3. Follow prompts"
160
+ echo " 4. Run: slm status"
161
+ echo ""
@@ -0,0 +1,252 @@
1
+ # ============================================================================
2
+ # SuperLocalMemory V2 - NPM Package Testing Script (PowerShell)
3
+ # Copyright (c) 2026 Varun Pratap Bhardwaj
4
+ # Licensed under MIT License
5
+ # Repository: https://github.com/varun369/SuperLocalMemoryV2
6
+ # ============================================================================
7
+ #
8
+ # Tests the NPM package locally before publishing
9
+ # Run this BEFORE npm publish
10
+ #
11
+
12
+ param()
13
+
14
+ $ErrorActionPreference = "Stop"
15
+
16
+ $REPO_DIR = $PSScriptRoot
17
+
18
+ Write-Host "╔══════════════════════════════════════════════════════════════╗"
19
+ Write-Host "║ SuperLocalMemory V2 - NPM Package Test ║"
20
+ Write-Host "║ by Varun Pratap Bhardwaj ║"
21
+ Write-Host "╚══════════════════════════════════════════════════════════════╝"
22
+ Write-Host ""
23
+
24
+ # Step 1: Validate package.json
25
+ Write-Host "📋 Step 1: Validating package.json..."
26
+ $packageJsonPath = Join-Path $REPO_DIR "package.json"
27
+ if (-not (Test-Path $packageJsonPath)) {
28
+ Write-Host "❌ Error: package.json not found" -ForegroundColor Red
29
+ exit 1
30
+ }
31
+
32
+ # Check version
33
+ $packageJson = Get-Content $packageJsonPath | ConvertFrom-Json
34
+ $VERSION = $packageJson.version
35
+ Write-Host " Version: $VERSION"
36
+
37
+ # Check required fields
38
+ $required = @("name", "version", "description", "author", "license", "repository", "bin")
39
+ $missing = @()
40
+ foreach ($field in $required) {
41
+ if (-not $packageJson.$field) {
42
+ $missing += $field
43
+ }
44
+ }
45
+
46
+ if ($missing.Count -gt 0) {
47
+ Write-Host "❌ Missing required fields: $($missing -join ', ')" -ForegroundColor Red
48
+ exit 1
49
+ }
50
+ Write-Host " ✓ All required fields present"
51
+
52
+ # Step 2: Check file structure
53
+ Write-Host ""
54
+ Write-Host "📁 Step 2: Checking file structure..."
55
+
56
+ $REQUIRED_FILES = @(
57
+ "bin\slm-npm",
58
+ "scripts\postinstall.js",
59
+ "scripts\preuninstall.js",
60
+ "src\memory_store_v2.py",
61
+ "mcp_server.py",
62
+ "install.sh",
63
+ "install.ps1",
64
+ "README.md",
65
+ "LICENSE",
66
+ "ATTRIBUTION.md"
67
+ )
68
+
69
+ $allPresent = $true
70
+ foreach ($file in $REQUIRED_FILES) {
71
+ $filePath = Join-Path $REPO_DIR $file
72
+ if (-not (Test-Path $filePath)) {
73
+ Write-Host " ❌ Missing: $file" -ForegroundColor Red
74
+ $allPresent = $false
75
+ }
76
+ }
77
+
78
+ if (-not $allPresent) {
79
+ exit 1
80
+ }
81
+ Write-Host " ✓ All required files present"
82
+
83
+ # Step 3: Test npm pack
84
+ Write-Host ""
85
+ Write-Host "📦 Step 3: Testing npm pack..."
86
+ Push-Location $REPO_DIR
87
+ try {
88
+ # Remove old tarballs
89
+ Get-ChildItem -Filter "superlocalmemory-*.tgz" | Remove-Item -Force -ErrorAction SilentlyContinue
90
+
91
+ # Create tarball
92
+ $packOutput = npm pack --quiet 2>&1
93
+ $TARBALL = Get-ChildItem -Filter "superlocalmemory-*.tgz" | Select-Object -First 1
94
+
95
+ if (-not $TARBALL) {
96
+ Write-Host " ❌ npm pack failed" -ForegroundColor Red
97
+ exit 1
98
+ }
99
+
100
+ $SIZE = [math]::Round((Get-Item $TARBALL.FullName).Length / 1MB, 2)
101
+ Write-Host " ✓ Package created: $($TARBALL.Name) ($SIZE MB)"
102
+
103
+ # Check package size
104
+ if ($SIZE -gt 1) {
105
+ Write-Host " ⚠️ Warning: Package size is large ($SIZE MB). Target: <0.5MB" -ForegroundColor Yellow
106
+ } else {
107
+ Write-Host " ✓ Package size OK: $SIZE MB"
108
+ }
109
+
110
+ # Step 4: Inspect package contents
111
+ Write-Host ""
112
+ Write-Host "🔍 Step 4: Inspecting package contents..."
113
+ Write-Host " Files included:"
114
+
115
+ # Extract tarball contents list (using tar if available, otherwise show warning)
116
+ try {
117
+ $tarContents = tar -tzf $TARBALL.FullName 2>$null | Select-Object -First 20
118
+ $tarContents | ForEach-Object { Write-Host " $_" }
119
+ $fileCount = (tar -tzf $TARBALL.FullName 2>$null | Measure-Object).Count
120
+ Write-Host " ... ($fileCount total files)"
121
+
122
+ # Check for unwanted files
123
+ $UNWANTED = @("*.pyc", "*.db", ".git", "test_*.py", "wiki-content")
124
+ $foundUnwanted = $false
125
+ foreach ($pattern in $UNWANTED) {
126
+ $found = tar -tzf $TARBALL.FullName 2>$null | Select-String -Pattern $pattern
127
+ if ($found) {
128
+ Write-Host " ⚠️ Warning: Found unwanted files matching: $pattern" -ForegroundColor Yellow
129
+ $foundUnwanted = $true
130
+ }
131
+ }
132
+ if (-not $foundUnwanted) {
133
+ Write-Host " ✓ No obvious unwanted files found"
134
+ }
135
+ } catch {
136
+ Write-Host " ⚠️ Could not inspect tarball contents (tar not available)" -ForegroundColor Yellow
137
+ }
138
+
139
+ # Step 5: Test npm link (local install)
140
+ Write-Host ""
141
+ Write-Host "🔗 Step 5: Testing npm link (local install)..."
142
+
143
+ # Unlink if already linked
144
+ npm unlink -g superlocalmemory 2>$null
145
+
146
+ # Link
147
+ $linkResult = npm link --quiet 2>&1
148
+ if ($LASTEXITCODE -eq 0) {
149
+ Write-Host " ✓ npm link successful"
150
+ } else {
151
+ Write-Host " ❌ npm link failed" -ForegroundColor Red
152
+ Write-Host " $linkResult"
153
+ exit 1
154
+ }
155
+
156
+ # Step 6: Test CLI command
157
+ Write-Host ""
158
+ Write-Host "🧪 Step 6: Testing CLI command..."
159
+
160
+ $slmCommand = Get-Command slm -ErrorAction SilentlyContinue
161
+ if ($slmCommand) {
162
+ Write-Host " ✓ slm command found"
163
+
164
+ # Test version
165
+ try {
166
+ slm --version 2>&1 | Out-Null
167
+ if ($LASTEXITCODE -eq 0) {
168
+ Write-Host " ✓ slm --version works"
169
+ } else {
170
+ Write-Host " ⚠️ slm --version failed (might be OK if not installed yet)" -ForegroundColor Yellow
171
+ }
172
+ } catch {
173
+ Write-Host " ⚠️ slm --version failed" -ForegroundColor Yellow
174
+ }
175
+
176
+ # Test help
177
+ try {
178
+ slm --help 2>&1 | Out-Null
179
+ if ($LASTEXITCODE -eq 0) {
180
+ Write-Host " ✓ slm --help works"
181
+ } else {
182
+ Write-Host " ⚠️ slm --help failed" -ForegroundColor Yellow
183
+ }
184
+ } catch {
185
+ Write-Host " ⚠️ slm --help failed" -ForegroundColor Yellow
186
+ }
187
+ } else {
188
+ Write-Host " ⚠️ slm command not found (expected for first install)" -ForegroundColor Yellow
189
+ Write-Host " This is OK - postinstall will set it up"
190
+ }
191
+
192
+ # Step 7: Validate scripts
193
+ Write-Host ""
194
+ Write-Host "🔧 Step 7: Validating scripts..."
195
+
196
+ # Check postinstall.js
197
+ try {
198
+ node (Join-Path $REPO_DIR "scripts\postinstall.js") --help 2>&1 | Out-Null
199
+ Write-Host " ✓ postinstall.js is valid Node.js"
200
+ } catch {
201
+ Write-Host " ⚠️ postinstall.js might have issues" -ForegroundColor Yellow
202
+ }
203
+
204
+ # Check executables (Windows doesn't need execute bit)
205
+ $slmNpmPath = Join-Path $REPO_DIR "bin\slm-npm"
206
+ if (Test-Path $slmNpmPath) {
207
+ Write-Host " ✓ bin\slm-npm exists"
208
+ } else {
209
+ Write-Host " ❌ bin\slm-npm not found" -ForegroundColor Red
210
+ exit 1
211
+ }
212
+
213
+ # Step 8: Final summary
214
+ Write-Host ""
215
+ Write-Host "╔══════════════════════════════════════════════════════════════╗"
216
+ Write-Host "║ Test Summary ║"
217
+ Write-Host "╚══════════════════════════════════════════════════════════════╝"
218
+ Write-Host ""
219
+ Write-Host "✅ Package structure: OK"
220
+ Write-Host "✅ File validation: OK"
221
+ Write-Host "✅ npm pack: OK ($SIZE MB)"
222
+ Write-Host "✅ npm link: OK"
223
+ Write-Host "✅ Scripts valid: OK"
224
+ Write-Host ""
225
+ Write-Host "📦 Package ready for testing!"
226
+ Write-Host ""
227
+ Write-Host "Next steps:"
228
+ Write-Host "1. Test manual install:"
229
+ Write-Host " npm install -g .\$($TARBALL.Name)"
230
+ Write-Host " slm status"
231
+ Write-Host " npm uninstall -g superlocalmemory"
232
+ Write-Host ""
233
+ Write-Host "2. Test on Docker (recommended):"
234
+ Write-Host " docker run -it --rm -v ${PWD}:/app node:18 bash"
235
+ Write-Host " cd /app"
236
+ Write-Host " npm install -g ./$($TARBALL.Name)"
237
+ Write-Host " slm status"
238
+ Write-Host ""
239
+ Write-Host "3. When ready to publish:"
240
+ Write-Host " npm login"
241
+ Write-Host " npm publish"
242
+ Write-Host ""
243
+ Write-Host "Full guide: NPM-PUBLISHING-GUIDE.md"
244
+ Write-Host ""
245
+
246
+ # Cleanup
247
+ Remove-Item $TARBALL.FullName -Force
248
+ Write-Host "🧹 Cleaned up test tarball"
249
+
250
+ } finally {
251
+ Pop-Location
252
+ }