superlocalmemory 2.8.6 → 3.0.1
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/LICENSE +9 -1
- package/NOTICE +63 -0
- package/README.md +165 -480
- package/bin/slm +17 -449
- package/bin/slm-npm +62 -48
- 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/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/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 -1808
- 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 -286
- /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
- /package/{install.ps1 → scripts/install.ps1} +0 -0
- /package/{install.sh → scripts/install.sh} +0 -0
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
# Copyright (c) 2026 SuperLocalMemory (superlocalmemory.com)
|
|
4
|
+
"""SuperLocalMemory V2 - LlamaIndex Chat Store Security Tests
|
|
5
|
+
|
|
6
|
+
Security-focused tests: SQL injection, XSS, oversized payloads, null bytes,
|
|
7
|
+
and other adversarial inputs that a production chat store must handle safely.
|
|
8
|
+
"""
|
|
9
|
+
import os
|
|
10
|
+
import sys
|
|
11
|
+
import tempfile
|
|
12
|
+
|
|
13
|
+
import pytest
|
|
14
|
+
|
|
15
|
+
# Ensure the SLM source tree is importable for tests
|
|
16
|
+
_SLM_SRC = os.path.join(
|
|
17
|
+
os.path.dirname(__file__), os.pardir, os.pardir, os.pardir, "src"
|
|
18
|
+
)
|
|
19
|
+
_SLM_SRC = os.path.abspath(_SLM_SRC)
|
|
20
|
+
if _SLM_SRC not in sys.path:
|
|
21
|
+
sys.path.insert(0, _SLM_SRC)
|
|
22
|
+
|
|
23
|
+
from llama_index.core.base.llms.types import ChatMessage, MessageRole
|
|
24
|
+
from llama_index.storage.chat_store.superlocalmemory import SuperLocalMemoryChatStore
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# ---------------------------------------------------------------------------
|
|
28
|
+
# Fixtures
|
|
29
|
+
# ---------------------------------------------------------------------------
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@pytest.fixture
|
|
33
|
+
def tmp_db():
|
|
34
|
+
with tempfile.TemporaryDirectory() as d:
|
|
35
|
+
yield os.path.join(d, "test_security.db")
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@pytest.fixture
|
|
39
|
+
def store(tmp_db):
|
|
40
|
+
return SuperLocalMemoryChatStore(db_path=tmp_db)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
# ---------------------------------------------------------------------------
|
|
44
|
+
# SQL Injection Tests
|
|
45
|
+
# ---------------------------------------------------------------------------
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class TestSQLInjection:
|
|
49
|
+
"""Verify that SQL injection attempts in keys and content are harmless."""
|
|
50
|
+
|
|
51
|
+
SQL_PAYLOADS = [
|
|
52
|
+
"'; DROP TABLE memories; --",
|
|
53
|
+
"' OR '1'='1",
|
|
54
|
+
"'; DELETE FROM memories WHERE '1'='1",
|
|
55
|
+
"1; SELECT * FROM memories --",
|
|
56
|
+
"Robert'); DROP TABLE memories;--",
|
|
57
|
+
"' UNION SELECT * FROM memories --",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
def test_sql_injection_in_key(self, store):
|
|
61
|
+
"""SQL injection attempts in the session key must not corrupt the store."""
|
|
62
|
+
for payload in self.SQL_PAYLOADS:
|
|
63
|
+
msg = ChatMessage(role=MessageRole.USER, content="safe content")
|
|
64
|
+
store.add_message(payload, msg)
|
|
65
|
+
|
|
66
|
+
# The store should still function — retrieve the message back
|
|
67
|
+
msgs = store.get_messages(payload)
|
|
68
|
+
assert len(msgs) == 1
|
|
69
|
+
assert msgs[0].content == "safe content"
|
|
70
|
+
|
|
71
|
+
# Clean up
|
|
72
|
+
store.delete_messages(payload)
|
|
73
|
+
|
|
74
|
+
def test_sql_injection_in_content(self, store):
|
|
75
|
+
"""SQL injection attempts in message content must be stored literally."""
|
|
76
|
+
for payload in self.SQL_PAYLOADS:
|
|
77
|
+
msg = ChatMessage(role=MessageRole.USER, content=payload)
|
|
78
|
+
store.add_message("safe-key", msg)
|
|
79
|
+
|
|
80
|
+
msgs = store.get_messages("safe-key")
|
|
81
|
+
assert len(msgs) == len(self.SQL_PAYLOADS)
|
|
82
|
+
|
|
83
|
+
# Verify content is stored literally, not executed
|
|
84
|
+
for i, payload in enumerate(self.SQL_PAYLOADS):
|
|
85
|
+
assert msgs[i].content == payload
|
|
86
|
+
|
|
87
|
+
# Clean up
|
|
88
|
+
store.delete_messages("safe-key")
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
# ---------------------------------------------------------------------------
|
|
92
|
+
# XSS Tests
|
|
93
|
+
# ---------------------------------------------------------------------------
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class TestXSS:
|
|
97
|
+
"""Verify that XSS payloads in content are stored literally (not executed)."""
|
|
98
|
+
|
|
99
|
+
XSS_PAYLOADS = [
|
|
100
|
+
"<script>alert('xss')</script>",
|
|
101
|
+
'<img src=x onerror=alert(1)>',
|
|
102
|
+
"javascript:alert(document.cookie)",
|
|
103
|
+
"<svg/onload=alert('xss')>",
|
|
104
|
+
'"><script>alert(String.fromCharCode(88,83,83))</script>',
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
def test_xss_in_content(self, store):
|
|
108
|
+
"""XSS payloads must be stored and retrieved as literal strings."""
|
|
109
|
+
for payload in self.XSS_PAYLOADS:
|
|
110
|
+
msg = ChatMessage(role=MessageRole.USER, content=payload)
|
|
111
|
+
store.add_message("xss-key", msg)
|
|
112
|
+
|
|
113
|
+
msgs = store.get_messages("xss-key")
|
|
114
|
+
assert len(msgs) == len(self.XSS_PAYLOADS)
|
|
115
|
+
|
|
116
|
+
for i, payload in enumerate(self.XSS_PAYLOADS):
|
|
117
|
+
assert msgs[i].content == payload
|
|
118
|
+
|
|
119
|
+
store.delete_messages("xss-key")
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
# ---------------------------------------------------------------------------
|
|
123
|
+
# Oversized Content Tests
|
|
124
|
+
# ---------------------------------------------------------------------------
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class TestOversizedContent:
|
|
128
|
+
"""Verify that oversized payloads are handled without crashing."""
|
|
129
|
+
|
|
130
|
+
def test_oversized_content_1mb(self, store):
|
|
131
|
+
"""A 1MB message should be rejected by MemoryStoreV2's validation."""
|
|
132
|
+
huge = "A" * 1_000_001 # Just over the 1MB limit
|
|
133
|
+
msg = ChatMessage(role=MessageRole.USER, content=huge)
|
|
134
|
+
|
|
135
|
+
# MemoryStoreV2 raises ValueError for content > 1MB
|
|
136
|
+
with pytest.raises((ValueError, Exception)):
|
|
137
|
+
store.add_message("huge-key", msg)
|
|
138
|
+
|
|
139
|
+
def test_large_but_valid_content(self, store):
|
|
140
|
+
"""A 500KB message should be stored successfully (under 1MB limit)."""
|
|
141
|
+
large = "B" * 500_000
|
|
142
|
+
msg = ChatMessage(role=MessageRole.USER, content=large)
|
|
143
|
+
store.add_message("large-key", msg)
|
|
144
|
+
|
|
145
|
+
msgs = store.get_messages("large-key")
|
|
146
|
+
assert len(msgs) == 1
|
|
147
|
+
assert len(msgs[0].content) == 500_000
|
|
148
|
+
|
|
149
|
+
store.delete_messages("large-key")
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
# ---------------------------------------------------------------------------
|
|
153
|
+
# Edge Case Key Tests
|
|
154
|
+
# ---------------------------------------------------------------------------
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
class TestEdgeCaseKeys:
|
|
158
|
+
"""Verify safe handling of unusual session key values."""
|
|
159
|
+
|
|
160
|
+
def test_empty_key(self, store):
|
|
161
|
+
"""An empty string key should still work (tags allow empty strings)."""
|
|
162
|
+
msg = ChatMessage(role=MessageRole.USER, content="empty key test")
|
|
163
|
+
store.add_message("", msg)
|
|
164
|
+
|
|
165
|
+
msgs = store.get_messages("")
|
|
166
|
+
assert len(msgs) == 1
|
|
167
|
+
assert msgs[0].content == "empty key test"
|
|
168
|
+
|
|
169
|
+
store.delete_messages("")
|
|
170
|
+
|
|
171
|
+
def test_null_bytes_in_key(self, store):
|
|
172
|
+
"""Null bytes in a key should be handled without crash."""
|
|
173
|
+
key_with_null = "key\x00with\x00nulls"
|
|
174
|
+
msg = ChatMessage(role=MessageRole.USER, content="null byte key")
|
|
175
|
+
store.add_message(key_with_null, msg)
|
|
176
|
+
|
|
177
|
+
msgs = store.get_messages(key_with_null)
|
|
178
|
+
assert len(msgs) == 1
|
|
179
|
+
assert msgs[0].content == "null byte key"
|
|
180
|
+
|
|
181
|
+
store.delete_messages(key_with_null)
|
|
182
|
+
|
|
183
|
+
def test_very_long_key(self, store):
|
|
184
|
+
"""A very long key (1000 chars) should work."""
|
|
185
|
+
long_key = "k" * 1000
|
|
186
|
+
msg = ChatMessage(role=MessageRole.USER, content="long key test")
|
|
187
|
+
store.add_message(long_key, msg)
|
|
188
|
+
|
|
189
|
+
msgs = store.get_messages(long_key)
|
|
190
|
+
assert len(msgs) == 1
|
|
191
|
+
|
|
192
|
+
store.delete_messages(long_key)
|
|
193
|
+
|
|
194
|
+
def test_special_characters_in_key(self, store):
|
|
195
|
+
"""Keys with special characters should work."""
|
|
196
|
+
special_keys = [
|
|
197
|
+
"user@example.com",
|
|
198
|
+
"path/to/session",
|
|
199
|
+
"key with spaces",
|
|
200
|
+
"key-with-dashes_and_underscores",
|
|
201
|
+
"unicode-key",
|
|
202
|
+
]
|
|
203
|
+
for key in special_keys:
|
|
204
|
+
store.add_message(
|
|
205
|
+
key, ChatMessage(role=MessageRole.USER, content=f"test {key}")
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
for key in special_keys:
|
|
209
|
+
msgs = store.get_messages(key)
|
|
210
|
+
assert len(msgs) == 1, f"Failed for key: {key}"
|
|
211
|
+
|
|
212
|
+
# Verify all keys are discoverable
|
|
213
|
+
all_keys = store.get_keys()
|
|
214
|
+
for key in special_keys:
|
|
215
|
+
assert key in all_keys, f"Key '{key}' not found in get_keys()"
|
|
216
|
+
|
|
217
|
+
for key in special_keys:
|
|
218
|
+
store.delete_messages(key)
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
# ---------------------------------------------------------------------------
|
|
222
|
+
# Null / None Content Tests
|
|
223
|
+
# ---------------------------------------------------------------------------
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
class TestNullContent:
|
|
227
|
+
"""Verify that null bytes and None-like content are handled safely."""
|
|
228
|
+
|
|
229
|
+
def test_null_bytes_in_content(self, store):
|
|
230
|
+
"""Null bytes in content should be stored and retrieved literally."""
|
|
231
|
+
content_with_null = "before\x00after"
|
|
232
|
+
msg = ChatMessage(role=MessageRole.USER, content=content_with_null)
|
|
233
|
+
store.add_message("null-content-key", msg)
|
|
234
|
+
|
|
235
|
+
msgs = store.get_messages("null-content-key")
|
|
236
|
+
assert len(msgs) == 1
|
|
237
|
+
# The content may or may not preserve null bytes depending on SQLite/JSON
|
|
238
|
+
# The key requirement is that it doesn't crash
|
|
239
|
+
assert msgs[0].content is not None
|
|
240
|
+
|
|
241
|
+
store.delete_messages("null-content-key")
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slm-build-graph
|
|
3
3
|
description: Build or rebuild the knowledge graph from existing memories using TF-IDF entity extraction and Leiden clustering. Use when search results seem poor, after bulk imports, or to optimize performance. Automatically discovers relationships between memories and creates topic clusters.
|
|
4
|
-
version: "
|
|
4
|
+
version: "3.0.0"
|
|
5
5
|
license: MIT
|
|
6
|
-
compatibility: "Requires SuperLocalMemory
|
|
6
|
+
compatibility: "Requires SuperLocalMemory V3 installed at ~/.superlocalmemory/, optional dependencies: python-igraph, leidenalg"
|
|
7
7
|
attribution:
|
|
8
8
|
creator: Varun Pratap Bhardwaj
|
|
9
9
|
role: Solution Architect & Original Creator
|
|
10
|
-
project: SuperLocalMemory
|
|
10
|
+
project: SuperLocalMemory V3
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# SuperLocalMemory: Build Knowledge Graph
|
|
@@ -315,7 +315,7 @@ slm build-graph --verbose
|
|
|
315
315
|
slm build-graph # No --clustering flag
|
|
316
316
|
|
|
317
317
|
# Check disk space
|
|
318
|
-
df -h ~/.
|
|
318
|
+
df -h ~/.superlocalmemory/
|
|
319
319
|
```
|
|
320
320
|
|
|
321
321
|
### "Edges seem wrong"
|
|
@@ -416,8 +416,8 @@ Each profile has separate graph
|
|
|
416
416
|
---
|
|
417
417
|
|
|
418
418
|
**Created by:** [Varun Pratap Bhardwaj](https://github.com/varun369) (Solution Architect)
|
|
419
|
-
**Project:** SuperLocalMemory
|
|
419
|
+
**Project:** SuperLocalMemory V3
|
|
420
420
|
**License:** MIT (see [LICENSE](../../LICENSE))
|
|
421
|
-
**Repository:** https://github.com/
|
|
421
|
+
**Repository:** https://github.com/qualixar/superlocalmemory
|
|
422
422
|
|
|
423
423
|
*Open source doesn't mean removing credit. Attribution must be preserved per MIT License terms.*
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slm-list-recent
|
|
3
3
|
description: List most recent memories in chronological order. Use when the user wants to see what was recently saved, review recent conversations, check what they worked on today, or browse memory history. Shows memories sorted by creation time (newest first).
|
|
4
|
-
version: "
|
|
4
|
+
version: "3.0.0"
|
|
5
5
|
license: MIT
|
|
6
|
-
compatibility: "Requires SuperLocalMemory
|
|
6
|
+
compatibility: "Requires SuperLocalMemory V3 installed at ~/.superlocalmemory/"
|
|
7
7
|
attribution:
|
|
8
8
|
creator: Varun Pratap Bhardwaj
|
|
9
9
|
role: Solution Architect & Original Creator
|
|
10
|
-
project: SuperLocalMemory
|
|
10
|
+
project: SuperLocalMemory V3
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# SuperLocalMemory: List Recent
|
|
@@ -341,8 +341,8 @@ date
|
|
|
341
341
|
---
|
|
342
342
|
|
|
343
343
|
**Created by:** [Varun Pratap Bhardwaj](https://github.com/varun369) (Solution Architect)
|
|
344
|
-
**Project:** SuperLocalMemory
|
|
344
|
+
**Project:** SuperLocalMemory V3
|
|
345
345
|
**License:** MIT (see [LICENSE](../../LICENSE))
|
|
346
|
-
**Repository:** https://github.com/
|
|
346
|
+
**Repository:** https://github.com/qualixar/superlocalmemory
|
|
347
347
|
|
|
348
348
|
*Open source doesn't mean removing credit. Attribution must be preserved per MIT License terms.*
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slm-recall
|
|
3
3
|
description: Search and retrieve memories using semantic similarity, knowledge graph relationships, and full-text search. Use when the user asks to recall information, search memories, find past decisions, or query stored knowledge. Returns ranked results with relevance scores.
|
|
4
|
-
version: "
|
|
4
|
+
version: "3.0.0"
|
|
5
5
|
license: MIT
|
|
6
|
-
compatibility: "Requires SuperLocalMemory
|
|
6
|
+
compatibility: "Requires SuperLocalMemory V3 installed at ~/.superlocalmemory/"
|
|
7
7
|
attribution:
|
|
8
8
|
creator: Varun Pratap Bhardwaj
|
|
9
9
|
role: Solution Architect & Original Creator
|
|
10
|
-
project: SuperLocalMemory
|
|
10
|
+
project: SuperLocalMemory V3
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# SuperLocalMemory: Recall
|
|
@@ -319,8 +319,8 @@ slm recall "query" --format csv
|
|
|
319
319
|
---
|
|
320
320
|
|
|
321
321
|
**Created by:** [Varun Pratap Bhardwaj](https://github.com/varun369) (Solution Architect)
|
|
322
|
-
**Project:** SuperLocalMemory
|
|
322
|
+
**Project:** SuperLocalMemory V3
|
|
323
323
|
**License:** MIT (see [LICENSE](../../LICENSE))
|
|
324
|
-
**Repository:** https://github.com/
|
|
324
|
+
**Repository:** https://github.com/qualixar/superlocalmemory
|
|
325
325
|
|
|
326
326
|
*Open source doesn't mean removing credit. Attribution must be preserved per MIT License terms.*
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slm-remember
|
|
3
3
|
description: Save content to SuperLocalMemory with intelligent indexing and knowledge graph integration. Use when the user wants to remember information, save context, store coding decisions, or persist knowledge for future sessions. Automatically indexes, graphs, and learns patterns.
|
|
4
|
-
version: "
|
|
4
|
+
version: "3.0.0"
|
|
5
5
|
license: MIT
|
|
6
|
-
compatibility: "Requires SuperLocalMemory
|
|
6
|
+
compatibility: "Requires SuperLocalMemory V3 installed at ~/.superlocalmemory/"
|
|
7
7
|
attribution:
|
|
8
8
|
creator: Varun Pratap Bhardwaj
|
|
9
9
|
role: Solution Architect & Original Creator
|
|
10
|
-
project: SuperLocalMemory
|
|
10
|
+
project: SuperLocalMemory V3
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# SuperLocalMemory: Remember
|
|
@@ -88,7 +88,7 @@ Next steps:
|
|
|
88
88
|
|
|
89
89
|
## What Happens Behind the Scenes
|
|
90
90
|
|
|
91
|
-
1. **Content Storage:** Saved to SQLite (`~/.
|
|
91
|
+
1. **Content Storage:** Saved to SQLite (`~/.superlocalmemory/memory.db`)
|
|
92
92
|
2. **Semantic Indexing:** TF-IDF vectors generated for similarity search
|
|
93
93
|
3. **Knowledge Graph:** Entities extracted and nodes/edges created
|
|
94
94
|
4. **Pattern Learning:** Analyzes content for coding preferences (frameworks, style, testing)
|
|
@@ -187,8 +187,8 @@ slm remember "Commit: $commit_msg (${commit_hash:0:7})" \
|
|
|
187
187
|
---
|
|
188
188
|
|
|
189
189
|
**Created by:** [Varun Pratap Bhardwaj](https://github.com/varun369) (Solution Architect)
|
|
190
|
-
**Project:** SuperLocalMemory
|
|
190
|
+
**Project:** SuperLocalMemory V3
|
|
191
191
|
**License:** MIT (see [LICENSE](../../LICENSE))
|
|
192
|
-
**Repository:** https://github.com/
|
|
192
|
+
**Repository:** https://github.com/qualixar/superlocalmemory
|
|
193
193
|
|
|
194
194
|
*Open source doesn't mean removing credit. Attribution must be preserved per MIT License terms.*
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slm-show-patterns
|
|
3
3
|
description: Show what SuperLocalMemory has learned about your preferences, workflow patterns, and project context. Use when the user asks "what have you learned about me?" or wants to see their coding identity patterns. Shows tech preferences, workflow sequences, and engagement health.
|
|
4
|
-
version: "
|
|
4
|
+
version: "3.0.0"
|
|
5
5
|
license: MIT
|
|
6
|
-
compatibility: "Requires SuperLocalMemory
|
|
6
|
+
compatibility: "Requires SuperLocalMemory V3 with learning features"
|
|
7
7
|
attribution:
|
|
8
8
|
creator: Varun Pratap Bhardwaj
|
|
9
9
|
role: Solution Architect & Original Creator
|
|
10
|
-
project: SuperLocalMemory
|
|
10
|
+
project: SuperLocalMemory V3
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# SuperLocalMemory: Show Patterns
|
|
@@ -60,7 +60,7 @@ $ slm learning status
|
|
|
60
60
|
|
|
61
61
|
**Output:**
|
|
62
62
|
```
|
|
63
|
-
SuperLocalMemory
|
|
63
|
+
SuperLocalMemory V3 -- Learning System Status
|
|
64
64
|
==================================================
|
|
65
65
|
LightGBM: installed (4.5.0)
|
|
66
66
|
SciPy: installed (1.14.1)
|
|
@@ -196,7 +196,7 @@ slm engagement
|
|
|
196
196
|
|
|
197
197
|
## Requirements
|
|
198
198
|
|
|
199
|
-
- SuperLocalMemory
|
|
199
|
+
- SuperLocalMemory V3.7+
|
|
200
200
|
- Optional: `lightgbm` and `scipy` for ML-powered ranking
|
|
201
201
|
- Works without optional deps (uses rule-based ranking as fallback)
|
|
202
202
|
|
|
@@ -217,8 +217,8 @@ slm engagement
|
|
|
217
217
|
---
|
|
218
218
|
|
|
219
219
|
**Created by:** [Varun Pratap Bhardwaj](https://github.com/varun369) (Solution Architect)
|
|
220
|
-
**Project:** SuperLocalMemory
|
|
220
|
+
**Project:** SuperLocalMemory V3
|
|
221
221
|
**License:** MIT (see [LICENSE](../../LICENSE))
|
|
222
|
-
**Repository:** https://github.com/
|
|
222
|
+
**Repository:** https://github.com/qualixar/superlocalmemory
|
|
223
223
|
|
|
224
224
|
*Open source doesn't mean removing credit. Attribution must be preserved per MIT License terms.*
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slm-status
|
|
3
3
|
description: Check SuperLocalMemory system status, health, and statistics. Use when the user wants to know memory count, graph stats, patterns learned, database health, or system diagnostics. Shows comprehensive system health dashboard.
|
|
4
|
-
version: "
|
|
4
|
+
version: "3.0.0"
|
|
5
5
|
license: MIT
|
|
6
|
-
compatibility: "Requires SuperLocalMemory
|
|
6
|
+
compatibility: "Requires SuperLocalMemory V3 installed at ~/.superlocalmemory/"
|
|
7
7
|
attribution:
|
|
8
8
|
creator: Varun Pratap Bhardwaj
|
|
9
9
|
role: Solution Architect & Original Creator
|
|
10
|
-
project: SuperLocalMemory
|
|
10
|
+
project: SuperLocalMemory V3
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# SuperLocalMemory: Status
|
|
@@ -30,7 +30,7 @@ $ slm status
|
|
|
30
30
|
**Output:**
|
|
31
31
|
```
|
|
32
32
|
╔══════════════════════════════════════════════════════╗
|
|
33
|
-
║ SuperLocalMemory
|
|
33
|
+
║ SuperLocalMemory V3 - System Status ║
|
|
34
34
|
╚══════════════════════════════════════════════════════╝
|
|
35
35
|
|
|
36
36
|
📊 Memory Statistics
|
|
@@ -63,7 +63,7 @@ $ slm status
|
|
|
63
63
|
Last Used: 2026-02-07 14:23
|
|
64
64
|
|
|
65
65
|
⚙️ System Info
|
|
66
|
-
Install Path: ~/.
|
|
66
|
+
Install Path: ~/.superlocalmemory
|
|
67
67
|
Database: memory.db
|
|
68
68
|
Python Version: 3.11.7
|
|
69
69
|
SQLite Version: 3.43.2
|
|
@@ -264,7 +264,7 @@ slm status --format json > status.json
|
|
|
264
264
|
**Solution:**
|
|
265
265
|
```bash
|
|
266
266
|
# Check for locks
|
|
267
|
-
lsof ~/.
|
|
267
|
+
lsof ~/.superlocalmemory/memory.db
|
|
268
268
|
|
|
269
269
|
# Kill hanging processes
|
|
270
270
|
killall python3
|
|
@@ -279,7 +279,7 @@ slm status
|
|
|
279
279
|
**Solution:**
|
|
280
280
|
```bash
|
|
281
281
|
# Restore from backup
|
|
282
|
-
cp ~/.
|
|
282
|
+
cp ~/.superlocalmemory/backups/memory.db.backup.* ~/.superlocalmemory/memory.db
|
|
283
283
|
|
|
284
284
|
# Verify
|
|
285
285
|
slm status --check-integrity
|
|
@@ -356,8 +356,8 @@ slm build-graph
|
|
|
356
356
|
---
|
|
357
357
|
|
|
358
358
|
**Created by:** [Varun Pratap Bhardwaj](https://github.com/varun369) (Solution Architect)
|
|
359
|
-
**Project:** SuperLocalMemory
|
|
359
|
+
**Project:** SuperLocalMemory V3
|
|
360
360
|
**License:** MIT (see [LICENSE](../../LICENSE))
|
|
361
|
-
**Repository:** https://github.com/
|
|
361
|
+
**Repository:** https://github.com/qualixar/superlocalmemory
|
|
362
362
|
|
|
363
363
|
*Open source doesn't mean removing credit. Attribution must be preserved per MIT License terms.*
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: slm-switch-profile
|
|
3
3
|
description: Switch between memory profiles for context isolation and management. Use when the user wants to change profile context, separate work/personal memories, or manage multiple independent memory spaces. Each profile has its own database, graph, and patterns.
|
|
4
|
-
version: "
|
|
4
|
+
version: "3.0.0"
|
|
5
5
|
license: MIT
|
|
6
|
-
compatibility: "Requires SuperLocalMemory
|
|
6
|
+
compatibility: "Requires SuperLocalMemory V3 installed at ~/.superlocalmemory/"
|
|
7
7
|
attribution:
|
|
8
8
|
creator: Varun Pratap Bhardwaj
|
|
9
9
|
role: Solution Architect & Original Creator
|
|
10
|
-
project: SuperLocalMemory
|
|
10
|
+
project: SuperLocalMemory V3
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# SuperLocalMemory: Switch Profile
|
|
@@ -69,7 +69,7 @@ $ slm switch-profile client-acme --create
|
|
|
69
69
|
🆕 Creating new profile: client-acme
|
|
70
70
|
|
|
71
71
|
Profile created successfully!
|
|
72
|
-
Location: ~/.
|
|
72
|
+
Location: ~/.superlocalmemory/profiles/client-acme/
|
|
73
73
|
Database: memory.db (empty)
|
|
74
74
|
Status: Active
|
|
75
75
|
|
|
@@ -216,7 +216,7 @@ slm import-profile team-shared/work-profile.db --name work
|
|
|
216
216
|
|
|
217
217
|
**1. Profile Structure:**
|
|
218
218
|
```
|
|
219
|
-
~/.
|
|
219
|
+
~/.superlocalmemory/
|
|
220
220
|
├── memory.db ← Current active profile (symlink)
|
|
221
221
|
├── profiles/
|
|
222
222
|
│ ├── default/
|
|
@@ -239,7 +239,7 @@ $ slm switch-profile work
|
|
|
239
239
|
- **Step 4:** Notify user to restart AI tools
|
|
240
240
|
|
|
241
241
|
**3. AI Tools Read:**
|
|
242
|
-
- MCP server reads `~/.
|
|
242
|
+
- MCP server reads `~/.superlocalmemory/memory.db`
|
|
243
243
|
- Symlink automatically points to active profile
|
|
244
244
|
- Transparent to AI tools
|
|
245
245
|
|
|
@@ -280,7 +280,7 @@ slm switch-profile client-a --create
|
|
|
280
280
|
|
|
281
281
|
**Backup profile:**
|
|
282
282
|
```bash
|
|
283
|
-
cp -r ~/.
|
|
283
|
+
cp -r ~/.superlocalmemory/profiles/work ~/.superlocalmemory/backups/work-2026-02-07
|
|
284
284
|
```
|
|
285
285
|
|
|
286
286
|
**Delete profile:**
|
|
@@ -435,8 +435,8 @@ slm list-profiles
|
|
|
435
435
|
---
|
|
436
436
|
|
|
437
437
|
**Created by:** [Varun Pratap Bhardwaj](https://github.com/varun369) (Solution Architect)
|
|
438
|
-
**Project:** SuperLocalMemory
|
|
438
|
+
**Project:** SuperLocalMemory V3
|
|
439
439
|
**License:** MIT (see [LICENSE](../../LICENSE))
|
|
440
|
-
**Repository:** https://github.com/
|
|
440
|
+
**Repository:** https://github.com/qualixar/superlocalmemory
|
|
441
441
|
|
|
442
442
|
*Open source doesn't mean removing credit. Attribution must be preserved per MIT License terms.*
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "superlocalmemory",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.0.1",
|
|
4
|
+
"description": "Information-geometric agent memory with mathematical guarantees. 4-channel retrieval, Fisher-Rao similarity, zero-LLM mode, EU AI Act compliant. Works with Claude, Cursor, Windsurf, and 17+ AI tools.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai-memory",
|
|
7
7
|
"claude-ai",
|
|
@@ -29,17 +29,17 @@
|
|
|
29
29
|
"author": {
|
|
30
30
|
"name": "Varun Pratap Bhardwaj",
|
|
31
31
|
"email": "admin@superlocalmemory.com",
|
|
32
|
-
"url": "https://
|
|
32
|
+
"url": "https://varunpratap.com"
|
|
33
33
|
},
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"repository": {
|
|
36
36
|
"type": "git",
|
|
37
|
-
"url": "https://github.com/
|
|
37
|
+
"url": "https://github.com/qualixar/superlocalmemory.git"
|
|
38
38
|
},
|
|
39
39
|
"homepage": "https://superlocalmemory.com",
|
|
40
|
-
"mcpName": "io.github.
|
|
40
|
+
"mcpName": "io.github.qualixar/superlocalmemory",
|
|
41
41
|
"bugs": {
|
|
42
|
-
"url": "https://github.com/
|
|
42
|
+
"url": "https://github.com/qualixar/superlocalmemory/issues"
|
|
43
43
|
},
|
|
44
44
|
"bin": {
|
|
45
45
|
"slm": "./bin/slm-npm",
|
|
@@ -63,26 +63,17 @@
|
|
|
63
63
|
"files": [
|
|
64
64
|
"bin/",
|
|
65
65
|
"src/",
|
|
66
|
-
"
|
|
67
|
-
"configs/",
|
|
68
|
-
"skills/",
|
|
69
|
-
"completions/",
|
|
66
|
+
"ide/",
|
|
70
67
|
"scripts/",
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
68
|
+
"ui/",
|
|
69
|
+
"docs/",
|
|
70
|
+
"pyproject.toml",
|
|
71
|
+
"conftest.py",
|
|
75
72
|
"README.md",
|
|
76
73
|
"LICENSE",
|
|
74
|
+
"NOTICE",
|
|
77
75
|
"ATTRIBUTION.md",
|
|
78
|
-
"CHANGELOG.md"
|
|
79
|
-
"docs/",
|
|
80
|
-
"requirements.txt",
|
|
81
|
-
"requirements-core.txt",
|
|
82
|
-
"requirements-learning.txt",
|
|
83
|
-
"ui/",
|
|
84
|
-
"ui_server.py",
|
|
85
|
-
"api_server.py"
|
|
76
|
+
"CHANGELOG.md"
|
|
86
77
|
],
|
|
87
78
|
"preferGlobal": true,
|
|
88
79
|
"funding": {
|