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
|
@@ -1,273 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Memory Profile CLI Skill
|
|
4
|
-
* Provides memory-profile commands for managing multiple memory contexts
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const { execFile } = require('child_process');
|
|
8
|
-
const { promisify } = require('util');
|
|
9
|
-
const path = require('path');
|
|
10
|
-
const readline = require('readline');
|
|
11
|
-
|
|
12
|
-
const execFileAsync = promisify(execFile);
|
|
13
|
-
|
|
14
|
-
const rl = readline.createInterface({
|
|
15
|
-
input: process.stdin,
|
|
16
|
-
output: process.stdout
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
const question = (query) => new Promise((resolve) => rl.question(query, resolve));
|
|
20
|
-
|
|
21
|
-
async function memoryProfileSkill() {
|
|
22
|
-
const profileScript = path.join(process.env.HOME, '.claude-memory', 'memory-profiles.py');
|
|
23
|
-
const args = process.argv.slice(2); // Get command line arguments
|
|
24
|
-
|
|
25
|
-
// Show help if no args
|
|
26
|
-
if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
|
|
27
|
-
console.log(`
|
|
28
|
-
╔══════════════════════════════════════════════════════════╗
|
|
29
|
-
║ ║
|
|
30
|
-
║ SuperLocalMemory V2 - Profile Management ║
|
|
31
|
-
║ ║
|
|
32
|
-
╚══════════════════════════════════════════════════════════╝
|
|
33
|
-
|
|
34
|
-
Profiles let you maintain separate memory contexts in ONE database:
|
|
35
|
-
• Work vs Personal projects
|
|
36
|
-
• Different clients or teams
|
|
37
|
-
• Experimentation vs Production
|
|
38
|
-
|
|
39
|
-
All profiles share one database. Switching is instant and safe.
|
|
40
|
-
No data copying, no data loss risk.
|
|
41
|
-
|
|
42
|
-
Usage: memory-profile <command> [options]
|
|
43
|
-
|
|
44
|
-
Commands:
|
|
45
|
-
list List all profiles and show active one
|
|
46
|
-
current Show current active profile
|
|
47
|
-
create <name> Create a new empty profile
|
|
48
|
-
switch <name> Switch to a different profile (requires restart)
|
|
49
|
-
delete <name> Delete a profile (with confirmation)
|
|
50
|
-
|
|
51
|
-
Examples:
|
|
52
|
-
memory-profile list
|
|
53
|
-
memory-profile current
|
|
54
|
-
memory-profile create work
|
|
55
|
-
memory-profile switch work
|
|
56
|
-
memory-profile delete old-project
|
|
57
|
-
|
|
58
|
-
Notes:
|
|
59
|
-
• Default profile is always available
|
|
60
|
-
• Switching profiles requires restarting Claude CLI
|
|
61
|
-
• Deleting a profile is permanent (but creates backup)
|
|
62
|
-
`);
|
|
63
|
-
rl.close();
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const command = args[0];
|
|
68
|
-
|
|
69
|
-
// LIST command
|
|
70
|
-
if (command === 'list') {
|
|
71
|
-
try {
|
|
72
|
-
const { stdout } = await execFileAsync('python', [profileScript, 'list']);
|
|
73
|
-
console.log(stdout);
|
|
74
|
-
} catch (error) {
|
|
75
|
-
console.error('❌ Error:', error.message);
|
|
76
|
-
}
|
|
77
|
-
rl.close();
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// CURRENT command
|
|
82
|
-
if (command === 'current') {
|
|
83
|
-
try {
|
|
84
|
-
const { stdout } = await execFileAsync('python', [profileScript, 'current']);
|
|
85
|
-
console.log(stdout);
|
|
86
|
-
} catch (error) {
|
|
87
|
-
console.error('❌ Error:', error.message);
|
|
88
|
-
}
|
|
89
|
-
rl.close();
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// CREATE command
|
|
94
|
-
if (command === 'create') {
|
|
95
|
-
if (args.length < 2) {
|
|
96
|
-
console.log(`
|
|
97
|
-
❌ ERROR: Profile name required
|
|
98
|
-
|
|
99
|
-
Usage: memory-profile create <name> [options]
|
|
100
|
-
|
|
101
|
-
Options:
|
|
102
|
-
--description "text" Profile description
|
|
103
|
-
--from-current Copy current profile's data to new profile
|
|
104
|
-
|
|
105
|
-
Examples:
|
|
106
|
-
memory-profile create work
|
|
107
|
-
memory-profile create work --description "Work projects"
|
|
108
|
-
memory-profile create personal --from-current
|
|
109
|
-
`);
|
|
110
|
-
rl.close();
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
const profileName = args[1];
|
|
115
|
-
const pythonArgs = ['create', profileName];
|
|
116
|
-
|
|
117
|
-
// Check for --description flag
|
|
118
|
-
const descIndex = args.indexOf('--description');
|
|
119
|
-
if (descIndex !== -1 && descIndex + 1 < args.length) {
|
|
120
|
-
pythonArgs.push('--description', args[descIndex + 1]);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Check for --from-current flag
|
|
124
|
-
if (args.includes('--from-current')) {
|
|
125
|
-
pythonArgs.push('--from-current');
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
try {
|
|
129
|
-
const { stdout } = await execFileAsync('python', [profileScript, ...pythonArgs]);
|
|
130
|
-
console.log(stdout);
|
|
131
|
-
} catch (error) {
|
|
132
|
-
console.error('❌ Error:', error.message);
|
|
133
|
-
if (error.stdout) console.log(error.stdout);
|
|
134
|
-
}
|
|
135
|
-
rl.close();
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// SWITCH command
|
|
140
|
-
if (command === 'switch') {
|
|
141
|
-
if (args.length < 2) {
|
|
142
|
-
console.log(`
|
|
143
|
-
❌ ERROR: Profile name required
|
|
144
|
-
|
|
145
|
-
Usage: memory-profile switch <name>
|
|
146
|
-
|
|
147
|
-
Example:
|
|
148
|
-
memory-profile switch work
|
|
149
|
-
|
|
150
|
-
After switching, restart Claude CLI for changes to take effect.
|
|
151
|
-
`);
|
|
152
|
-
rl.close();
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
const profileName = args[1];
|
|
157
|
-
|
|
158
|
-
console.log(`
|
|
159
|
-
╔══════════════════════════════════════════════════════════╗
|
|
160
|
-
║ Profile Switch ║
|
|
161
|
-
╚══════════════════════════════════════════════════════════╝
|
|
162
|
-
|
|
163
|
-
This will switch the active profile to "${profileName}".
|
|
164
|
-
All profiles share one database — switching is instant and safe.
|
|
165
|
-
Your current memories are always preserved.
|
|
166
|
-
`);
|
|
167
|
-
|
|
168
|
-
const answer = await question('Proceed with profile switch? (yes/no): ');
|
|
169
|
-
|
|
170
|
-
if (answer.toLowerCase() === 'yes') {
|
|
171
|
-
try {
|
|
172
|
-
const { stdout } = await execFileAsync('python', [
|
|
173
|
-
profileScript,
|
|
174
|
-
'switch',
|
|
175
|
-
profileName
|
|
176
|
-
]);
|
|
177
|
-
console.log(stdout);
|
|
178
|
-
} catch (error) {
|
|
179
|
-
console.error('❌ Error:', error.message);
|
|
180
|
-
if (error.stdout) console.log(error.stdout);
|
|
181
|
-
}
|
|
182
|
-
} else {
|
|
183
|
-
console.log('\nCancelled. No changes made.');
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
rl.close();
|
|
187
|
-
return;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// DELETE command
|
|
191
|
-
if (command === 'delete') {
|
|
192
|
-
if (args.length < 2) {
|
|
193
|
-
console.log(`
|
|
194
|
-
❌ ERROR: Profile name required
|
|
195
|
-
|
|
196
|
-
Usage: memory-profile delete <name>
|
|
197
|
-
|
|
198
|
-
Example:
|
|
199
|
-
memory-profile delete old-project
|
|
200
|
-
|
|
201
|
-
Cannot delete:
|
|
202
|
-
• The "default" profile
|
|
203
|
-
• The currently active profile
|
|
204
|
-
`);
|
|
205
|
-
rl.close();
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
const profileName = args[1];
|
|
210
|
-
|
|
211
|
-
// Prevent deleting default
|
|
212
|
-
if (profileName === 'default') {
|
|
213
|
-
console.log(`
|
|
214
|
-
❌ ERROR: Cannot delete the default profile
|
|
215
|
-
|
|
216
|
-
The default profile is protected and cannot be deleted.
|
|
217
|
-
`);
|
|
218
|
-
rl.close();
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
console.log(`
|
|
223
|
-
╔══════════════════════════════════════════════════════════╗
|
|
224
|
-
║ ⚠️ DELETE PROFILE WARNING ⚠️ ║
|
|
225
|
-
╚══════════════════════════════════════════════════════════╝
|
|
226
|
-
|
|
227
|
-
This will PERMANENTLY delete profile: "${profileName}"
|
|
228
|
-
|
|
229
|
-
What will be deleted:
|
|
230
|
-
🔴 All memories in this profile
|
|
231
|
-
🔴 Graph data (nodes, edges, clusters)
|
|
232
|
-
🔴 Learned patterns
|
|
233
|
-
🔴 Compressed archives
|
|
234
|
-
|
|
235
|
-
A backup will be created before deletion.
|
|
236
|
-
|
|
237
|
-
`);
|
|
238
|
-
|
|
239
|
-
const answer = await question(`Type the profile name "${profileName}" to confirm: `);
|
|
240
|
-
|
|
241
|
-
if (answer === profileName) {
|
|
242
|
-
try {
|
|
243
|
-
const { stdout } = await execFileAsync('python', [
|
|
244
|
-
profileScript,
|
|
245
|
-
'delete',
|
|
246
|
-
profileName
|
|
247
|
-
]);
|
|
248
|
-
console.log(stdout);
|
|
249
|
-
} catch (error) {
|
|
250
|
-
console.error('❌ Error:', error.message);
|
|
251
|
-
if (error.stdout) console.log(error.stdout);
|
|
252
|
-
}
|
|
253
|
-
} else {
|
|
254
|
-
console.log('\nCancelled. No changes made.');
|
|
255
|
-
console.log(`(You must type exactly "${profileName}" to confirm)`);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
rl.close();
|
|
259
|
-
return;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
// Unknown command
|
|
263
|
-
console.log(`
|
|
264
|
-
❌ Unknown command: ${command}
|
|
265
|
-
|
|
266
|
-
Valid commands: list, current, create, switch, delete
|
|
267
|
-
|
|
268
|
-
Use: memory-profile --help for more information
|
|
269
|
-
`);
|
|
270
|
-
rl.close();
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
memoryProfileSkill();
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Memory Recall CLI Skill
|
|
4
|
-
* Search and retrieve memories with advanced filtering
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const { execFile } = require('child_process');
|
|
8
|
-
const { promisify } = require('util');
|
|
9
|
-
const path = require('path');
|
|
10
|
-
|
|
11
|
-
const execFileAsync = promisify(execFile);
|
|
12
|
-
|
|
13
|
-
async function memoryRecallSkill() {
|
|
14
|
-
const memoryScript = path.join(process.env.HOME, '.claude-memory', 'memory_store_v2.py');
|
|
15
|
-
const args = process.argv.slice(2);
|
|
16
|
-
|
|
17
|
-
// Show help if no args or --help
|
|
18
|
-
if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
|
|
19
|
-
console.log(`
|
|
20
|
-
╔══════════════════════════════════════════════════════════╗
|
|
21
|
-
║ ║
|
|
22
|
-
║ SuperLocalMemory V2 - Recall (Search Memories) ║
|
|
23
|
-
║ ║
|
|
24
|
-
╚══════════════════════════════════════════════════════════╝
|
|
25
|
-
|
|
26
|
-
Search your memory store using semantic search and filters.
|
|
27
|
-
Finds relevant memories using TF-IDF similarity and metadata.
|
|
28
|
-
|
|
29
|
-
Usage: memory-recall <query> [options]
|
|
30
|
-
|
|
31
|
-
Arguments:
|
|
32
|
-
<query> Search query (required)
|
|
33
|
-
|
|
34
|
-
Options:
|
|
35
|
-
--limit <n> Maximum results to return (default: 10)
|
|
36
|
-
--full Show complete content without truncation
|
|
37
|
-
|
|
38
|
-
Examples:
|
|
39
|
-
memory-recall "authentication bug"
|
|
40
|
-
|
|
41
|
-
memory-recall "API configuration" --limit 5
|
|
42
|
-
|
|
43
|
-
memory-recall "security best practices" --full
|
|
44
|
-
|
|
45
|
-
memory-recall "user preferences"
|
|
46
|
-
|
|
47
|
-
Output Format:
|
|
48
|
-
• Ranked by relevance (TF-IDF cosine similarity)
|
|
49
|
-
• Shows: ID, Content, Tags, Importance, Timestamp
|
|
50
|
-
• Higher scores = better matches
|
|
51
|
-
• Smart truncation: full content if <5000 chars, preview if ≥5000 chars
|
|
52
|
-
• Use --full flag to always show complete content
|
|
53
|
-
|
|
54
|
-
Notes:
|
|
55
|
-
• Uses local TF-IDF search (no external APIs)
|
|
56
|
-
• Searches content, summary, and tags
|
|
57
|
-
• Empty query returns recent memories
|
|
58
|
-
• Use quotes for multi-word queries
|
|
59
|
-
`);
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Parse query and options
|
|
64
|
-
let query = null;
|
|
65
|
-
const pythonArgs = ['search'];
|
|
66
|
-
|
|
67
|
-
for (let i = 0; i < args.length; i++) {
|
|
68
|
-
const arg = args[i];
|
|
69
|
-
|
|
70
|
-
if (arg === '--limit' && i + 1 < args.length) {
|
|
71
|
-
// Note: V1 store doesn't support --limit in search, will truncate output instead
|
|
72
|
-
i++; // Skip but don't add to pythonArgs
|
|
73
|
-
} else if (arg === '--full') {
|
|
74
|
-
pythonArgs.push('--full');
|
|
75
|
-
} else if (!arg.startsWith('--') && query === null) {
|
|
76
|
-
query = arg;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// Validate query
|
|
81
|
-
if (!query || query.trim().length === 0) {
|
|
82
|
-
console.log(`
|
|
83
|
-
❌ ERROR: Search query required
|
|
84
|
-
|
|
85
|
-
Usage: memory-recall <query> [options]
|
|
86
|
-
|
|
87
|
-
Example:
|
|
88
|
-
memory-recall "search term" --limit 10
|
|
89
|
-
|
|
90
|
-
Use --help for more information
|
|
91
|
-
`);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// Add query to Python args
|
|
96
|
-
pythonArgs.push(query);
|
|
97
|
-
|
|
98
|
-
try {
|
|
99
|
-
const { stdout, stderr } = await execFileAsync('python3', [memoryScript, ...pythonArgs]);
|
|
100
|
-
|
|
101
|
-
if (stderr) {
|
|
102
|
-
console.error('⚠️ Warning:', stderr);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
console.log(stdout);
|
|
106
|
-
|
|
107
|
-
} catch (error) {
|
|
108
|
-
console.error('❌ Error searching memories:', error.message);
|
|
109
|
-
if (error.stdout) console.log(error.stdout);
|
|
110
|
-
if (error.stderr) console.error(error.stderr);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
memoryRecallSkill();
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Memory Remember CLI Skill
|
|
4
|
-
* Save memories with tags, project context, and importance levels
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
const { execFile } = require('child_process');
|
|
8
|
-
const { promisify } = require('util');
|
|
9
|
-
const path = require('path');
|
|
10
|
-
|
|
11
|
-
const execFileAsync = promisify(execFile);
|
|
12
|
-
|
|
13
|
-
async function memoryRememberSkill() {
|
|
14
|
-
const memoryScript = path.join(process.env.HOME, '.claude-memory', 'memory_store_v2.py');
|
|
15
|
-
const args = process.argv.slice(2);
|
|
16
|
-
|
|
17
|
-
// Show help if no args or --help
|
|
18
|
-
if (args.length === 0 || args[0] === '--help' || args[0] === '-h') {
|
|
19
|
-
console.log(`
|
|
20
|
-
╔══════════════════════════════════════════════════════════╗
|
|
21
|
-
║ ║
|
|
22
|
-
║ SuperLocalMemory V2 - Remember (Save Memory) ║
|
|
23
|
-
║ ║
|
|
24
|
-
╚══════════════════════════════════════════════════════════╝
|
|
25
|
-
|
|
26
|
-
Save important information to your persistent memory store.
|
|
27
|
-
Memories are indexed, searchable, and integrated with graph knowledge.
|
|
28
|
-
|
|
29
|
-
Usage: memory-remember <content> [options]
|
|
30
|
-
|
|
31
|
-
Arguments:
|
|
32
|
-
<content> The memory content to save (required)
|
|
33
|
-
|
|
34
|
-
Options:
|
|
35
|
-
--tags <tag1,tag2> Comma-separated tags for categorization
|
|
36
|
-
--project <path> Project path context
|
|
37
|
-
|
|
38
|
-
Examples:
|
|
39
|
-
memory-remember "API key stored in .env file" --tags security,config
|
|
40
|
-
|
|
41
|
-
memory-remember "User prefers tabs over spaces"
|
|
42
|
-
|
|
43
|
-
memory-remember "Bug in auth.js line 42" --project ~/work/app --tags bug
|
|
44
|
-
|
|
45
|
-
memory-remember "Meeting notes: Q1 launch March 15" --tags meeting,deadline
|
|
46
|
-
|
|
47
|
-
Notes:
|
|
48
|
-
• Content is deduplicated automatically
|
|
49
|
-
• Tags enable fast filtering during recall
|
|
50
|
-
• Project context links memories to codebases
|
|
51
|
-
• Use semantic search to find related memories
|
|
52
|
-
`);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// Parse content (first non-flag argument) and options
|
|
57
|
-
let content = null;
|
|
58
|
-
let tags = null;
|
|
59
|
-
let project = null;
|
|
60
|
-
|
|
61
|
-
let i = 0;
|
|
62
|
-
while (i < args.length) {
|
|
63
|
-
const arg = args[i];
|
|
64
|
-
|
|
65
|
-
if (arg === '--tags' && i + 1 < args.length) {
|
|
66
|
-
tags = args[i + 1];
|
|
67
|
-
i += 2; // Skip flag and value
|
|
68
|
-
} else if (arg === '--project' && i + 1 < args.length) {
|
|
69
|
-
project = args[i + 1];
|
|
70
|
-
i += 2; // Skip flag and value
|
|
71
|
-
} else if (!arg.startsWith('--') && content === null) {
|
|
72
|
-
content = arg;
|
|
73
|
-
i++;
|
|
74
|
-
} else {
|
|
75
|
-
i++;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Validate content
|
|
80
|
-
if (!content || content.trim().length === 0) {
|
|
81
|
-
console.log(`
|
|
82
|
-
❌ ERROR: Memory content required
|
|
83
|
-
|
|
84
|
-
Usage: memory-remember <content> [options]
|
|
85
|
-
|
|
86
|
-
Example:
|
|
87
|
-
memory-remember "Important information here" --tags example
|
|
88
|
-
|
|
89
|
-
Use --help for more information
|
|
90
|
-
`);
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// Build Python command: add <content> [--project <path>] [--tags tag1,tag2]
|
|
95
|
-
const pythonArgs = ['add', content];
|
|
96
|
-
|
|
97
|
-
if (project) {
|
|
98
|
-
pythonArgs.push('--project', project);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
if (tags) {
|
|
102
|
-
pythonArgs.push('--tags', tags);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
try {
|
|
106
|
-
const { stdout, stderr } = await execFileAsync('python3', [memoryScript, ...pythonArgs]);
|
|
107
|
-
|
|
108
|
-
if (stderr) {
|
|
109
|
-
console.error('⚠️ Warning:', stderr);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
console.log(stdout);
|
|
113
|
-
console.log('✅ Memory saved successfully\n');
|
|
114
|
-
|
|
115
|
-
// Show helpful next steps
|
|
116
|
-
console.log('Next steps:');
|
|
117
|
-
console.log(' • Use `memory-recall <query>` to search this memory');
|
|
118
|
-
console.log(' • Use `memory-list` to see recent memories');
|
|
119
|
-
|
|
120
|
-
} catch (error) {
|
|
121
|
-
console.error('❌ Error saving memory:', error.message);
|
|
122
|
-
if (error.stdout) console.log(error.stdout);
|
|
123
|
-
if (error.stderr) console.error(error.stderr);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
memoryRememberSkill();
|