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.
- package/CHANGELOG.md +11 -0
- package/LICENSE +9 -1
- package/NOTICE +63 -0
- package/README.md +165 -480
- package/bin/slm +17 -449
- package/bin/slm-npm +2 -2
- package/bin/slm.bat +4 -2
- package/conftest.py +5 -0
- package/docs/api-reference.md +284 -0
- package/docs/architecture.md +149 -0
- package/docs/auto-memory.md +150 -0
- package/docs/cli-reference.md +276 -0
- package/docs/compliance.md +191 -0
- package/docs/configuration.md +182 -0
- package/docs/getting-started.md +102 -0
- package/docs/ide-setup.md +261 -0
- package/docs/mcp-tools.md +220 -0
- package/docs/migration-from-v2.md +170 -0
- package/docs/profiles.md +173 -0
- package/docs/troubleshooting.md +310 -0
- package/{configs → ide/configs}/antigravity-mcp.json +3 -3
- package/ide/configs/chatgpt-desktop-mcp.json +16 -0
- package/{configs → ide/configs}/claude-desktop-mcp.json +3 -3
- package/{configs → ide/configs}/codex-mcp.toml +4 -4
- package/{configs → ide/configs}/continue-mcp.yaml +4 -3
- package/{configs → ide/configs}/continue-skills.yaml +6 -6
- package/ide/configs/cursor-mcp.json +15 -0
- package/{configs → ide/configs}/gemini-cli-mcp.json +2 -2
- package/{configs → ide/configs}/jetbrains-mcp.json +2 -2
- package/{configs → ide/configs}/opencode-mcp.json +2 -2
- package/{configs → ide/configs}/perplexity-mcp.json +2 -2
- package/{configs → ide/configs}/vscode-copilot-mcp.json +2 -2
- package/{configs → ide/configs}/windsurf-mcp.json +3 -3
- package/{configs → ide/configs}/zed-mcp.json +2 -2
- package/{hooks → ide/hooks}/context-hook.js +9 -20
- package/ide/hooks/memory-list-skill.js +70 -0
- package/ide/hooks/memory-profile-skill.js +101 -0
- package/ide/hooks/memory-recall-skill.js +62 -0
- package/ide/hooks/memory-remember-skill.js +68 -0
- package/ide/hooks/memory-reset-skill.js +160 -0
- package/{hooks → ide/hooks}/post-recall-hook.js +2 -2
- package/ide/integrations/langchain/README.md +106 -0
- package/ide/integrations/langchain/langchain_superlocalmemory/__init__.py +9 -0
- package/ide/integrations/langchain/langchain_superlocalmemory/chat_message_history.py +201 -0
- package/ide/integrations/langchain/pyproject.toml +38 -0
- package/{src/learning → ide/integrations/langchain}/tests/__init__.py +1 -0
- package/ide/integrations/langchain/tests/test_chat_message_history.py +215 -0
- package/ide/integrations/langchain/tests/test_security.py +117 -0
- package/ide/integrations/llamaindex/README.md +81 -0
- package/ide/integrations/llamaindex/llama_index/storage/chat_store/superlocalmemory/__init__.py +9 -0
- package/ide/integrations/llamaindex/llama_index/storage/chat_store/superlocalmemory/base.py +316 -0
- package/ide/integrations/llamaindex/pyproject.toml +43 -0
- package/{src/lifecycle → ide/integrations/llamaindex}/tests/__init__.py +1 -2
- package/ide/integrations/llamaindex/tests/test_chat_store.py +294 -0
- package/ide/integrations/llamaindex/tests/test_security.py +241 -0
- package/{skills → ide/skills}/slm-build-graph/SKILL.md +6 -6
- package/{skills → ide/skills}/slm-list-recent/SKILL.md +5 -5
- package/{skills → ide/skills}/slm-recall/SKILL.md +5 -5
- package/{skills → ide/skills}/slm-remember/SKILL.md +6 -6
- package/{skills → ide/skills}/slm-show-patterns/SKILL.md +7 -7
- package/{skills → ide/skills}/slm-status/SKILL.md +9 -9
- package/{skills → ide/skills}/slm-switch-profile/SKILL.md +9 -9
- package/package.json +13 -22
- package/pyproject.toml +85 -0
- package/scripts/build-dmg.sh +417 -0
- package/scripts/install-skills.ps1 +334 -0
- package/{install.ps1 → scripts/install.ps1} +36 -4
- package/{install.sh → scripts/install.sh} +14 -13
- package/scripts/postinstall.js +2 -2
- package/scripts/start-dashboard.ps1 +52 -0
- package/scripts/start-dashboard.sh +41 -0
- package/scripts/sync-wiki.ps1 +127 -0
- package/scripts/sync-wiki.sh +82 -0
- package/scripts/test-dmg.sh +161 -0
- package/scripts/test-npm-package.ps1 +252 -0
- package/scripts/test-npm-package.sh +207 -0
- package/scripts/verify-install.ps1 +294 -0
- package/scripts/verify-install.sh +266 -0
- package/src/superlocalmemory/__init__.py +0 -0
- package/src/superlocalmemory/attribution/__init__.py +9 -0
- package/src/superlocalmemory/attribution/mathematical_dna.py +235 -0
- package/src/superlocalmemory/attribution/signer.py +153 -0
- package/src/superlocalmemory/attribution/watermark.py +189 -0
- package/src/superlocalmemory/cli/__init__.py +5 -0
- package/src/superlocalmemory/cli/commands.py +245 -0
- package/src/superlocalmemory/cli/main.py +89 -0
- package/src/superlocalmemory/cli/migrate_cmd.py +55 -0
- package/src/superlocalmemory/cli/post_install.py +99 -0
- package/src/superlocalmemory/cli/setup_wizard.py +129 -0
- package/src/superlocalmemory/compliance/__init__.py +0 -0
- package/src/superlocalmemory/compliance/abac.py +204 -0
- package/src/superlocalmemory/compliance/audit.py +314 -0
- package/src/superlocalmemory/compliance/eu_ai_act.py +131 -0
- package/src/superlocalmemory/compliance/gdpr.py +294 -0
- package/src/superlocalmemory/compliance/lifecycle.py +158 -0
- package/src/superlocalmemory/compliance/retention.py +232 -0
- package/src/superlocalmemory/compliance/scheduler.py +148 -0
- package/src/superlocalmemory/core/__init__.py +0 -0
- package/src/superlocalmemory/core/config.py +391 -0
- package/src/superlocalmemory/core/embeddings.py +293 -0
- package/src/superlocalmemory/core/engine.py +701 -0
- package/src/superlocalmemory/core/hooks.py +65 -0
- package/src/superlocalmemory/core/maintenance.py +172 -0
- package/src/superlocalmemory/core/modes.py +140 -0
- package/src/superlocalmemory/core/profiles.py +234 -0
- package/src/superlocalmemory/core/registry.py +117 -0
- package/src/superlocalmemory/dynamics/__init__.py +0 -0
- package/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +223 -0
- package/src/superlocalmemory/encoding/__init__.py +0 -0
- package/src/superlocalmemory/encoding/consolidator.py +485 -0
- package/src/superlocalmemory/encoding/emotional.py +125 -0
- package/src/superlocalmemory/encoding/entity_resolver.py +525 -0
- package/src/superlocalmemory/encoding/entropy_gate.py +104 -0
- package/src/superlocalmemory/encoding/fact_extractor.py +775 -0
- package/src/superlocalmemory/encoding/foresight.py +91 -0
- package/src/superlocalmemory/encoding/graph_builder.py +302 -0
- package/src/superlocalmemory/encoding/observation_builder.py +160 -0
- package/src/superlocalmemory/encoding/scene_builder.py +183 -0
- package/src/superlocalmemory/encoding/signal_inference.py +90 -0
- package/src/superlocalmemory/encoding/temporal_parser.py +426 -0
- package/src/superlocalmemory/encoding/type_router.py +235 -0
- package/src/superlocalmemory/hooks/__init__.py +3 -0
- package/src/superlocalmemory/hooks/auto_capture.py +111 -0
- package/src/superlocalmemory/hooks/auto_recall.py +93 -0
- package/src/superlocalmemory/hooks/ide_connector.py +204 -0
- package/src/superlocalmemory/hooks/rules_engine.py +99 -0
- package/src/superlocalmemory/infra/__init__.py +3 -0
- package/src/superlocalmemory/infra/auth_middleware.py +82 -0
- package/src/superlocalmemory/infra/backup.py +317 -0
- package/src/superlocalmemory/infra/cache_manager.py +267 -0
- package/src/superlocalmemory/infra/event_bus.py +381 -0
- package/src/superlocalmemory/infra/rate_limiter.py +135 -0
- package/src/{webhook_dispatcher.py → superlocalmemory/infra/webhook_dispatcher.py} +104 -101
- package/src/superlocalmemory/learning/__init__.py +0 -0
- package/src/superlocalmemory/learning/adaptive.py +172 -0
- package/src/superlocalmemory/learning/behavioral.py +490 -0
- package/src/superlocalmemory/learning/behavioral_listener.py +94 -0
- package/src/superlocalmemory/learning/bootstrap.py +298 -0
- package/src/superlocalmemory/learning/cross_project.py +399 -0
- package/src/superlocalmemory/learning/database.py +376 -0
- package/src/superlocalmemory/learning/engagement.py +323 -0
- package/src/superlocalmemory/learning/features.py +138 -0
- package/src/superlocalmemory/learning/feedback.py +316 -0
- package/src/superlocalmemory/learning/outcomes.py +255 -0
- package/src/superlocalmemory/learning/project_context.py +366 -0
- package/src/superlocalmemory/learning/ranker.py +155 -0
- package/src/superlocalmemory/learning/source_quality.py +303 -0
- package/src/superlocalmemory/learning/workflows.py +309 -0
- package/src/superlocalmemory/llm/__init__.py +0 -0
- package/src/superlocalmemory/llm/backbone.py +316 -0
- package/src/superlocalmemory/math/__init__.py +0 -0
- package/src/superlocalmemory/math/fisher.py +356 -0
- package/src/superlocalmemory/math/langevin.py +398 -0
- package/src/superlocalmemory/math/sheaf.py +257 -0
- package/src/superlocalmemory/mcp/__init__.py +0 -0
- package/src/superlocalmemory/mcp/resources.py +245 -0
- package/src/superlocalmemory/mcp/server.py +61 -0
- package/src/superlocalmemory/mcp/tools.py +18 -0
- package/src/superlocalmemory/mcp/tools_core.py +305 -0
- package/src/superlocalmemory/mcp/tools_v28.py +223 -0
- package/src/superlocalmemory/mcp/tools_v3.py +286 -0
- package/src/superlocalmemory/retrieval/__init__.py +0 -0
- package/src/superlocalmemory/retrieval/agentic.py +295 -0
- package/src/superlocalmemory/retrieval/ann_index.py +223 -0
- package/src/superlocalmemory/retrieval/bm25_channel.py +185 -0
- package/src/superlocalmemory/retrieval/bridge_discovery.py +170 -0
- package/src/superlocalmemory/retrieval/engine.py +390 -0
- package/src/superlocalmemory/retrieval/entity_channel.py +179 -0
- package/src/superlocalmemory/retrieval/fusion.py +78 -0
- package/src/superlocalmemory/retrieval/profile_channel.py +105 -0
- package/src/superlocalmemory/retrieval/reranker.py +154 -0
- package/src/superlocalmemory/retrieval/semantic_channel.py +232 -0
- package/src/superlocalmemory/retrieval/strategy.py +96 -0
- package/src/superlocalmemory/retrieval/temporal_channel.py +175 -0
- package/src/superlocalmemory/server/__init__.py +1 -0
- package/src/superlocalmemory/server/api.py +248 -0
- package/src/superlocalmemory/server/routes/__init__.py +4 -0
- package/src/superlocalmemory/server/routes/agents.py +107 -0
- package/src/superlocalmemory/server/routes/backup.py +91 -0
- package/src/superlocalmemory/server/routes/behavioral.py +127 -0
- package/src/superlocalmemory/server/routes/compliance.py +160 -0
- package/src/superlocalmemory/server/routes/data_io.py +188 -0
- package/src/superlocalmemory/server/routes/events.py +183 -0
- package/src/superlocalmemory/server/routes/helpers.py +85 -0
- package/src/superlocalmemory/server/routes/learning.py +273 -0
- package/src/superlocalmemory/server/routes/lifecycle.py +116 -0
- package/src/superlocalmemory/server/routes/memories.py +399 -0
- package/src/superlocalmemory/server/routes/profiles.py +219 -0
- package/src/superlocalmemory/server/routes/stats.py +346 -0
- package/src/superlocalmemory/server/routes/v3_api.py +365 -0
- package/src/superlocalmemory/server/routes/ws.py +82 -0
- package/src/superlocalmemory/server/security_middleware.py +57 -0
- package/src/superlocalmemory/server/ui.py +245 -0
- package/src/superlocalmemory/storage/__init__.py +0 -0
- package/src/superlocalmemory/storage/access_control.py +182 -0
- package/src/superlocalmemory/storage/database.py +594 -0
- package/src/superlocalmemory/storage/migrations.py +303 -0
- package/src/superlocalmemory/storage/models.py +406 -0
- package/src/superlocalmemory/storage/schema.py +726 -0
- package/src/superlocalmemory/storage/v2_migrator.py +317 -0
- package/src/superlocalmemory/trust/__init__.py +0 -0
- package/src/superlocalmemory/trust/gate.py +130 -0
- package/src/superlocalmemory/trust/provenance.py +124 -0
- package/src/superlocalmemory/trust/scorer.py +347 -0
- package/src/superlocalmemory/trust/signals.py +153 -0
- package/ui/index.html +278 -5
- package/ui/js/auto-settings.js +70 -0
- package/ui/js/dashboard.js +90 -0
- package/ui/js/fact-detail.js +92 -0
- package/ui/js/feedback.js +2 -2
- package/ui/js/ide-status.js +102 -0
- package/ui/js/math-health.js +98 -0
- package/ui/js/recall-lab.js +127 -0
- package/ui/js/settings.js +2 -2
- package/ui/js/trust-dashboard.js +73 -0
- package/api_server.py +0 -724
- package/bin/aider-smart +0 -72
- package/bin/superlocalmemoryv2-learning +0 -4
- package/bin/superlocalmemoryv2-list +0 -3
- package/bin/superlocalmemoryv2-patterns +0 -4
- package/bin/superlocalmemoryv2-profile +0 -3
- package/bin/superlocalmemoryv2-recall +0 -3
- package/bin/superlocalmemoryv2-remember +0 -3
- package/bin/superlocalmemoryv2-reset +0 -3
- package/bin/superlocalmemoryv2-status +0 -3
- package/configs/chatgpt-desktop-mcp.json +0 -16
- package/configs/cursor-mcp.json +0 -15
- package/docs/SECURITY-QUICK-REFERENCE.md +0 -214
- package/hooks/memory-list-skill.js +0 -139
- package/hooks/memory-profile-skill.js +0 -273
- package/hooks/memory-recall-skill.js +0 -114
- package/hooks/memory-remember-skill.js +0 -127
- package/hooks/memory-reset-skill.js +0 -274
- package/mcp_server.py +0 -1800
- package/requirements-core.txt +0 -22
- package/requirements-learning.txt +0 -12
- package/requirements.txt +0 -12
- package/src/agent_registry.py +0 -411
- package/src/auth_middleware.py +0 -61
- package/src/auto_backup.py +0 -459
- package/src/behavioral/__init__.py +0 -49
- package/src/behavioral/behavioral_listener.py +0 -203
- package/src/behavioral/behavioral_patterns.py +0 -275
- package/src/behavioral/cross_project_transfer.py +0 -206
- package/src/behavioral/outcome_inference.py +0 -194
- package/src/behavioral/outcome_tracker.py +0 -193
- package/src/behavioral/tests/__init__.py +0 -4
- package/src/behavioral/tests/test_behavioral_integration.py +0 -108
- package/src/behavioral/tests/test_behavioral_patterns.py +0 -150
- package/src/behavioral/tests/test_cross_project_transfer.py +0 -142
- package/src/behavioral/tests/test_mcp_behavioral.py +0 -139
- package/src/behavioral/tests/test_mcp_report_outcome.py +0 -117
- package/src/behavioral/tests/test_outcome_inference.py +0 -107
- package/src/behavioral/tests/test_outcome_tracker.py +0 -96
- package/src/cache_manager.py +0 -518
- package/src/compliance/__init__.py +0 -48
- package/src/compliance/abac_engine.py +0 -149
- package/src/compliance/abac_middleware.py +0 -116
- package/src/compliance/audit_db.py +0 -215
- package/src/compliance/audit_logger.py +0 -148
- package/src/compliance/retention_manager.py +0 -289
- package/src/compliance/retention_scheduler.py +0 -186
- package/src/compliance/tests/__init__.py +0 -4
- package/src/compliance/tests/test_abac_enforcement.py +0 -95
- package/src/compliance/tests/test_abac_engine.py +0 -124
- package/src/compliance/tests/test_abac_mcp_integration.py +0 -118
- package/src/compliance/tests/test_audit_db.py +0 -123
- package/src/compliance/tests/test_audit_logger.py +0 -98
- package/src/compliance/tests/test_mcp_audit.py +0 -128
- package/src/compliance/tests/test_mcp_retention_policy.py +0 -125
- package/src/compliance/tests/test_retention_manager.py +0 -131
- package/src/compliance/tests/test_retention_scheduler.py +0 -99
- package/src/compression/__init__.py +0 -25
- package/src/compression/cli.py +0 -150
- package/src/compression/cold_storage.py +0 -217
- package/src/compression/config.py +0 -72
- package/src/compression/orchestrator.py +0 -133
- package/src/compression/tier2_compressor.py +0 -228
- package/src/compression/tier3_compressor.py +0 -153
- package/src/compression/tier_classifier.py +0 -148
- package/src/db_connection_manager.py +0 -536
- package/src/embedding_engine.py +0 -63
- package/src/embeddings/__init__.py +0 -47
- package/src/embeddings/cache.py +0 -70
- package/src/embeddings/cli.py +0 -113
- package/src/embeddings/constants.py +0 -47
- package/src/embeddings/database.py +0 -91
- package/src/embeddings/engine.py +0 -247
- package/src/embeddings/model_loader.py +0 -145
- package/src/event_bus.py +0 -562
- package/src/graph/__init__.py +0 -36
- package/src/graph/build_helpers.py +0 -74
- package/src/graph/cli.py +0 -87
- package/src/graph/cluster_builder.py +0 -188
- package/src/graph/cluster_summary.py +0 -148
- package/src/graph/constants.py +0 -47
- package/src/graph/edge_builder.py +0 -162
- package/src/graph/entity_extractor.py +0 -95
- package/src/graph/graph_core.py +0 -226
- package/src/graph/graph_search.py +0 -231
- package/src/graph/hierarchical.py +0 -207
- package/src/graph/schema.py +0 -99
- package/src/graph_engine.py +0 -52
- package/src/hnsw_index.py +0 -628
- package/src/hybrid_search.py +0 -46
- package/src/learning/__init__.py +0 -217
- package/src/learning/adaptive_ranker.py +0 -682
- package/src/learning/bootstrap/__init__.py +0 -69
- package/src/learning/bootstrap/constants.py +0 -93
- package/src/learning/bootstrap/db_queries.py +0 -316
- package/src/learning/bootstrap/sampling.py +0 -82
- package/src/learning/bootstrap/text_utils.py +0 -71
- package/src/learning/cross_project_aggregator.py +0 -857
- package/src/learning/db/__init__.py +0 -40
- package/src/learning/db/constants.py +0 -44
- package/src/learning/db/schema.py +0 -279
- package/src/learning/engagement_tracker.py +0 -628
- package/src/learning/feature_extractor.py +0 -708
- package/src/learning/feedback_collector.py +0 -806
- package/src/learning/learning_db.py +0 -915
- package/src/learning/project_context_manager.py +0 -572
- package/src/learning/ranking/__init__.py +0 -33
- package/src/learning/ranking/constants.py +0 -84
- package/src/learning/ranking/helpers.py +0 -278
- package/src/learning/source_quality_scorer.py +0 -676
- package/src/learning/synthetic_bootstrap.py +0 -755
- package/src/learning/tests/test_adaptive_ranker.py +0 -325
- package/src/learning/tests/test_adaptive_ranker_v28.py +0 -60
- package/src/learning/tests/test_aggregator.py +0 -306
- package/src/learning/tests/test_auto_retrain_v28.py +0 -35
- package/src/learning/tests/test_e2e_ranking_v28.py +0 -82
- package/src/learning/tests/test_feature_extractor_v28.py +0 -93
- package/src/learning/tests/test_feedback_collector.py +0 -294
- package/src/learning/tests/test_learning_db.py +0 -602
- package/src/learning/tests/test_learning_db_v28.py +0 -110
- package/src/learning/tests/test_learning_init_v28.py +0 -48
- package/src/learning/tests/test_outcome_signals.py +0 -48
- package/src/learning/tests/test_project_context.py +0 -292
- package/src/learning/tests/test_schema_migration.py +0 -319
- package/src/learning/tests/test_signal_inference.py +0 -397
- package/src/learning/tests/test_source_quality.py +0 -351
- package/src/learning/tests/test_synthetic_bootstrap.py +0 -429
- package/src/learning/tests/test_workflow_miner.py +0 -318
- package/src/learning/workflow_pattern_miner.py +0 -655
- package/src/lifecycle/__init__.py +0 -54
- package/src/lifecycle/bounded_growth.py +0 -239
- package/src/lifecycle/compaction_engine.py +0 -226
- package/src/lifecycle/lifecycle_engine.py +0 -355
- package/src/lifecycle/lifecycle_evaluator.py +0 -257
- package/src/lifecycle/lifecycle_scheduler.py +0 -130
- package/src/lifecycle/retention_policy.py +0 -285
- package/src/lifecycle/tests/test_bounded_growth.py +0 -193
- package/src/lifecycle/tests/test_compaction.py +0 -179
- package/src/lifecycle/tests/test_lifecycle_engine.py +0 -137
- package/src/lifecycle/tests/test_lifecycle_evaluation.py +0 -177
- package/src/lifecycle/tests/test_lifecycle_scheduler.py +0 -127
- package/src/lifecycle/tests/test_lifecycle_search.py +0 -109
- package/src/lifecycle/tests/test_mcp_compact.py +0 -149
- package/src/lifecycle/tests/test_mcp_lifecycle_status.py +0 -114
- package/src/lifecycle/tests/test_retention_policy.py +0 -162
- package/src/mcp_tools_v28.py +0 -281
- package/src/memory/__init__.py +0 -36
- package/src/memory/cli.py +0 -205
- package/src/memory/constants.py +0 -39
- package/src/memory/helpers.py +0 -28
- package/src/memory/schema.py +0 -166
- package/src/memory-profiles.py +0 -595
- package/src/memory-reset.py +0 -491
- package/src/memory_compression.py +0 -989
- package/src/memory_store_v2.py +0 -1155
- package/src/migrate_v1_to_v2.py +0 -629
- package/src/pattern_learner.py +0 -34
- package/src/patterns/__init__.py +0 -24
- package/src/patterns/analyzers.py +0 -251
- package/src/patterns/learner.py +0 -271
- package/src/patterns/scoring.py +0 -171
- package/src/patterns/store.py +0 -225
- package/src/patterns/terminology.py +0 -140
- package/src/provenance_tracker.py +0 -312
- package/src/qualixar_attribution.py +0 -139
- package/src/qualixar_watermark.py +0 -78
- package/src/query_optimizer.py +0 -511
- package/src/rate_limiter.py +0 -83
- package/src/search/__init__.py +0 -20
- package/src/search/cli.py +0 -77
- package/src/search/constants.py +0 -26
- package/src/search/engine.py +0 -241
- package/src/search/fusion.py +0 -122
- package/src/search/index_loader.py +0 -114
- package/src/search/methods.py +0 -162
- package/src/search_engine_v2.py +0 -401
- package/src/setup_validator.py +0 -482
- package/src/subscription_manager.py +0 -391
- package/src/tree/__init__.py +0 -59
- package/src/tree/builder.py +0 -185
- package/src/tree/nodes.py +0 -202
- package/src/tree/queries.py +0 -257
- package/src/tree/schema.py +0 -80
- package/src/tree_manager.py +0 -19
- package/src/trust/__init__.py +0 -45
- package/src/trust/constants.py +0 -66
- package/src/trust/queries.py +0 -157
- package/src/trust/schema.py +0 -95
- package/src/trust/scorer.py +0 -299
- package/src/trust/signals.py +0 -95
- package/src/trust_scorer.py +0 -44
- package/ui/app.js +0 -1588
- package/ui/js/graph-cytoscape-monolithic-backup.js +0 -1168
- package/ui/js/graph-cytoscape.js +0 -1168
- package/ui/js/graph-d3-backup.js +0 -32
- package/ui/js/graph.js +0 -32
- package/ui_server.py +0 -266
- /package/docs/{ACCESSIBILITY.md → v2-archive/ACCESSIBILITY.md} +0 -0
- /package/docs/{ARCHITECTURE.md → v2-archive/ARCHITECTURE.md} +0 -0
- /package/docs/{CLI-COMMANDS-REFERENCE.md → v2-archive/CLI-COMMANDS-REFERENCE.md} +0 -0
- /package/docs/{COMPRESSION-README.md → v2-archive/COMPRESSION-README.md} +0 -0
- /package/docs/{FRAMEWORK-INTEGRATIONS.md → v2-archive/FRAMEWORK-INTEGRATIONS.md} +0 -0
- /package/docs/{MCP-MANUAL-SETUP.md → v2-archive/MCP-MANUAL-SETUP.md} +0 -0
- /package/docs/{MCP-TROUBLESHOOTING.md → v2-archive/MCP-TROUBLESHOOTING.md} +0 -0
- /package/docs/{PATTERN-LEARNING.md → v2-archive/PATTERN-LEARNING.md} +0 -0
- /package/docs/{PROFILES-GUIDE.md → v2-archive/PROFILES-GUIDE.md} +0 -0
- /package/docs/{RESET-GUIDE.md → v2-archive/RESET-GUIDE.md} +0 -0
- /package/docs/{SEARCH-ENGINE-V2.2.0.md → v2-archive/SEARCH-ENGINE-V2.2.0.md} +0 -0
- /package/docs/{SEARCH-INTEGRATION-GUIDE.md → v2-archive/SEARCH-INTEGRATION-GUIDE.md} +0 -0
- /package/docs/{UI-SERVER.md → v2-archive/UI-SERVER.md} +0 -0
- /package/docs/{UNIVERSAL-INTEGRATION.md → v2-archive/UNIVERSAL-INTEGRATION.md} +0 -0
- /package/docs/{V2.2.0-OPTIONAL-SEARCH.md → v2-archive/V2.2.0-OPTIONAL-SEARCH.md} +0 -0
- /package/docs/{WINDOWS-INSTALL-README.txt → v2-archive/WINDOWS-INSTALL-README.txt} +0 -0
- /package/docs/{WINDOWS-POST-INSTALL.txt → v2-archive/WINDOWS-POST-INSTALL.txt} +0 -0
- /package/docs/{example_graph_usage.py → v2-archive/example_graph_usage.py} +0 -0
- /package/{completions → ide/completions}/slm.bash +0 -0
- /package/{completions → ide/completions}/slm.zsh +0 -0
- /package/{configs → ide/configs}/cody-commands.json +0 -0
- /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
|
+
}
|