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