superlocalmemory 4.1.13 → 4.1.14
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/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +48 -0
- package/README.md +3 -3
- package/package.json +1 -8
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/CLAUDE.md +3 -3
- package/plugin/agents/slm-governance-advisor.md +1 -1
- package/plugin/agents/slm-loop-runner.md +1 -1
- package/plugin/agents/slm-memory-advisor.md +1 -1
- package/plugin/agents/slm-optimize-advisor.md +1 -1
- package/plugin/requirements.txt +1 -1
- package/plugin/skills/slm-cache/SKILL.md +1 -1
- package/plugin/skills/slm-compress/SKILL.md +1 -1
- package/plugin/skills/slm-governance/SKILL.md +1 -1
- package/plugin/skills/slm-graph/SKILL.md +1 -1
- package/plugin/skills/slm-loop/SKILL.md +1 -1
- package/plugin/skills/slm-mesh/SKILL.md +1 -1
- package/plugin/skills/slm-profile/SKILL.md +1 -1
- package/plugin/skills/slm-recall/SKILL.md +1 -1
- package/plugin/skills/slm-remember/SKILL.md +1 -1
- package/plugin/skills/slm-scope/SKILL.md +1 -1
- package/plugin/skills/slm-session/SKILL.md +1 -1
- package/plugin/skills/slm-status/SKILL.md +1 -1
- package/plugin-src/agents/slm-memory-advisor.md +1 -1
- package/plugin-src/agents/slm-optimize-advisor.md +1 -1
- package/plugin-src/rules/AGENTS.md +1 -1
- package/plugin-src/skills/slm-cache/SKILL.md +1 -1
- package/plugin-src/skills/slm-compress/SKILL.md +1 -1
- package/plugin-src/skills/slm-governance/SKILL.md +1 -1
- package/plugin-src/skills/slm-graph/SKILL.md +1 -1
- package/plugin-src/skills/slm-loop/SKILL.md +1 -1
- package/plugin-src/skills/slm-mesh/SKILL.md +1 -1
- package/plugin-src/skills/slm-profile/SKILL.md +1 -1
- package/plugin-src/skills/slm-recall/SKILL.md +1 -1
- package/plugin-src/skills/slm-remember/SKILL.md +1 -1
- package/plugin-src/skills/slm-scope/SKILL.md +1 -1
- package/plugin-src/skills/slm-session/SKILL.md +1 -1
- package/plugin-src/skills/slm-status/SKILL.md +1 -1
- package/scripts/postinstall.js +71 -2
- package/pyproject.toml +0 -250
- package/src/superlocalmemory/__init__.py +0 -82
- package/src/superlocalmemory/access/__init__.py +0 -3
- package/src/superlocalmemory/access/rbac.py +0 -575
- package/src/superlocalmemory/attribution/__init__.py +0 -9
- package/src/superlocalmemory/attribution/signer.py +0 -173
- package/src/superlocalmemory/attribution/watermark.py +0 -189
- package/src/superlocalmemory/brain/__init__.py +0 -5
- package/src/superlocalmemory/brain/truth.py +0 -418
- package/src/superlocalmemory/cli/__init__.py +0 -5
- package/src/superlocalmemory/cli/__main__.py +0 -17
- package/src/superlocalmemory/cli/_lazy_init.py +0 -115
- package/src/superlocalmemory/cli/cache_cmd.py +0 -198
- package/src/superlocalmemory/cli/commands.py +0 -4710
- package/src/superlocalmemory/cli/compress_cmd.py +0 -151
- package/src/superlocalmemory/cli/context_commands.py +0 -193
- package/src/superlocalmemory/cli/daemon.py +0 -909
- package/src/superlocalmemory/cli/db_migrate.py +0 -150
- package/src/superlocalmemory/cli/diagnostics_cmd.py +0 -101
- package/src/superlocalmemory/cli/escape_hatch.py +0 -220
- package/src/superlocalmemory/cli/evidence_cmd.py +0 -103
- package/src/superlocalmemory/cli/gdpr_cmd.py +0 -792
- package/src/superlocalmemory/cli/gdpr_io.py +0 -109
- package/src/superlocalmemory/cli/help_cmd.py +0 -197
- package/src/superlocalmemory/cli/host_upgrades.py +0 -189
- package/src/superlocalmemory/cli/ingest_cmd.py +0 -327
- package/src/superlocalmemory/cli/json_output.py +0 -81
- package/src/superlocalmemory/cli/loop_cmd.py +0 -187
- package/src/superlocalmemory/cli/main.py +0 -1145
- package/src/superlocalmemory/cli/mesh_cmd.py +0 -38
- package/src/superlocalmemory/cli/migrate_cmd.py +0 -55
- package/src/superlocalmemory/cli/ops_cmd.py +0 -281
- package/src/superlocalmemory/cli/optimize_cmd.py +0 -179
- package/src/superlocalmemory/cli/optimize_constants.py +0 -31
- package/src/superlocalmemory/cli/pending_store.py +0 -296
- package/src/superlocalmemory/cli/proxy_cmd.py +0 -108
- package/src/superlocalmemory/cli/scale_engine_cmd.py +0 -56
- package/src/superlocalmemory/cli/service_installer.py +0 -373
- package/src/superlocalmemory/cli/setup_wizard.py +0 -1162
- package/src/superlocalmemory/cli/summary_cmd.py +0 -215
- package/src/superlocalmemory/cli/version_banner.py +0 -202
- package/src/superlocalmemory/cli/wizard_v3426_options.py +0 -129
- package/src/superlocalmemory/code_graph/__init__.py +0 -46
- package/src/superlocalmemory/code_graph/blast_radius.py +0 -177
- package/src/superlocalmemory/code_graph/bridge/__init__.py +0 -36
- package/src/superlocalmemory/code_graph/bridge/entity_resolver.py +0 -490
- package/src/superlocalmemory/code_graph/bridge/event_listeners.py +0 -206
- package/src/superlocalmemory/code_graph/bridge/fact_enricher.py +0 -159
- package/src/superlocalmemory/code_graph/bridge/hebbian_linker.py +0 -170
- package/src/superlocalmemory/code_graph/bridge/maintenance.py +0 -220
- package/src/superlocalmemory/code_graph/bridge/temporal_checker.py +0 -152
- package/src/superlocalmemory/code_graph/changes.py +0 -363
- package/src/superlocalmemory/code_graph/communities.py +0 -299
- package/src/superlocalmemory/code_graph/config.py +0 -154
- package/src/superlocalmemory/code_graph/database.py +0 -526
- package/src/superlocalmemory/code_graph/extractors/__init__.py +0 -95
- package/src/superlocalmemory/code_graph/extractors/python.py +0 -413
- package/src/superlocalmemory/code_graph/extractors/typescript.py +0 -556
- package/src/superlocalmemory/code_graph/flows.py +0 -350
- package/src/superlocalmemory/code_graph/git_hooks.py +0 -226
- package/src/superlocalmemory/code_graph/graph_engine.py +0 -295
- package/src/superlocalmemory/code_graph/graph_store.py +0 -335
- package/src/superlocalmemory/code_graph/incremental.py +0 -200
- package/src/superlocalmemory/code_graph/models.py +0 -130
- package/src/superlocalmemory/code_graph/parser.py +0 -687
- package/src/superlocalmemory/code_graph/resolver.py +0 -321
- package/src/superlocalmemory/code_graph/search.py +0 -460
- package/src/superlocalmemory/code_graph/service.py +0 -95
- package/src/superlocalmemory/code_graph/watcher.py +0 -207
- package/src/superlocalmemory/compliance/__init__.py +0 -0
- package/src/superlocalmemory/compliance/abac.py +0 -204
- package/src/superlocalmemory/compliance/audit.py +0 -385
- package/src/superlocalmemory/compliance/eu_ai_act.py +0 -101
- package/src/superlocalmemory/compliance/gdpr.py +0 -1479
- package/src/superlocalmemory/compliance/lifecycle.py +0 -158
- package/src/superlocalmemory/compliance/retention.py +0 -415
- package/src/superlocalmemory/compliance/scheduler.py +0 -217
- package/src/superlocalmemory/contracts/__init__.py +0 -1
- package/src/superlocalmemory/contracts/schemas/agent-experience-v1.schema.json +0 -92
- package/src/superlocalmemory/contracts/schemas/agent-integration-contract-v2.schema.json +0 -46
- package/src/superlocalmemory/contracts/schemas/cognitive-turn-receipt-v1.schema.json +0 -59
- package/src/superlocalmemory/contracts/v402.py +0 -62
- package/src/superlocalmemory/core/__init__.py +0 -0
- package/src/superlocalmemory/core/actor_context.py +0 -166
- package/src/superlocalmemory/core/admission.py +0 -769
- package/src/superlocalmemory/core/backend_orchestrator.py +0 -637
- package/src/superlocalmemory/core/block_hygiene.py +0 -147
- package/src/superlocalmemory/core/community_summary.py +0 -267
- package/src/superlocalmemory/core/component_healer.py +0 -144
- package/src/superlocalmemory/core/component_registry.py +0 -514
- package/src/superlocalmemory/core/config.py +0 -2204
- package/src/superlocalmemory/core/consolidation_engine.py +0 -983
- package/src/superlocalmemory/core/context_cache.py +0 -574
- package/src/superlocalmemory/core/derivation_lineage.py +0 -246
- package/src/superlocalmemory/core/embedding_worker.py +0 -208
- package/src/superlocalmemory/core/embeddings.py +0 -1052
- package/src/superlocalmemory/core/engine.py +0 -1395
- package/src/superlocalmemory/core/engine_capabilities.py +0 -24
- package/src/superlocalmemory/core/engine_ingestion.py +0 -983
- package/src/superlocalmemory/core/engine_lock.py +0 -75
- package/src/superlocalmemory/core/engine_wiring.py +0 -776
- package/src/superlocalmemory/core/entity_community.py +0 -178
- package/src/superlocalmemory/core/error_envelope.py +0 -60
- package/src/superlocalmemory/core/evidence_bundle.py +0 -528
- package/src/superlocalmemory/core/fact_consolidator.py +0 -812
- package/src/superlocalmemory/core/file_lock.py +0 -92
- package/src/superlocalmemory/core/graph_analyzer.py +0 -456
- package/src/superlocalmemory/core/graph_metrics.py +0 -597
- package/src/superlocalmemory/core/graph_pruner.py +0 -939
- package/src/superlocalmemory/core/health_monitor.py +0 -338
- package/src/superlocalmemory/core/hooks.py +0 -65
- package/src/superlocalmemory/core/ingest_gate.py +0 -133
- package/src/superlocalmemory/core/ingest_policy.py +0 -38
- package/src/superlocalmemory/core/ingestion_command.py +0 -1042
- package/src/superlocalmemory/core/injection.py +0 -434
- package/src/superlocalmemory/core/install_detector.py +0 -131
- package/src/superlocalmemory/core/key_expander.py +0 -138
- package/src/superlocalmemory/core/lifecycle_state.py +0 -153
- package/src/superlocalmemory/core/maintenance.py +0 -777
- package/src/superlocalmemory/core/maintenance_scheduler.py +0 -507
- package/src/superlocalmemory/core/materialization_control.py +0 -20
- package/src/superlocalmemory/core/mcp_embedder_proxy.py +0 -89
- package/src/superlocalmemory/core/memory_health.py +0 -266
- package/src/superlocalmemory/core/mode_capability.py +0 -111
- package/src/superlocalmemory/core/modes.py +0 -168
- package/src/superlocalmemory/core/mutations.py +0 -688
- package/src/superlocalmemory/core/ollama_embedder.py +0 -266
- package/src/superlocalmemory/core/ollama_validator.py +0 -315
- package/src/superlocalmemory/core/operation_policy.py +0 -92
- package/src/superlocalmemory/core/operation_policy_registry.py +0 -542
- package/src/superlocalmemory/core/operation_request.py +0 -127
- package/src/superlocalmemory/core/ops_remediation.py +0 -542
- package/src/superlocalmemory/core/pii.py +0 -105
- package/src/superlocalmemory/core/platform_utils.py +0 -138
- package/src/superlocalmemory/core/profiles.py +0 -234
- package/src/superlocalmemory/core/progressive_abstraction.py +0 -208
- package/src/superlocalmemory/core/projection_drain.py +0 -380
- package/src/superlocalmemory/core/queue_consumer.py +0 -168
- package/src/superlocalmemory/core/ram_lock.py +0 -160
- package/src/superlocalmemory/core/rate_limit.py +0 -151
- package/src/superlocalmemory/core/recall_gate.py +0 -95
- package/src/superlocalmemory/core/recall_pipeline.py +0 -1337
- package/src/superlocalmemory/core/recall_queue.py +0 -377
- package/src/superlocalmemory/core/recall_worker.py +0 -414
- package/src/superlocalmemory/core/registry.py +0 -121
- package/src/superlocalmemory/core/remember_admission.py +0 -161
- package/src/superlocalmemory/core/remember_runtime.py +0 -1190
- package/src/superlocalmemory/core/remote_mode.py +0 -214
- package/src/superlocalmemory/core/reranker_worker.py +0 -338
- package/src/superlocalmemory/core/safe_fs.py +0 -108
- package/src/superlocalmemory/core/scale_autopromote.py +0 -196
- package/src/superlocalmemory/core/scale_engine.py +0 -915
- package/src/superlocalmemory/core/score_contract.py +0 -82
- package/src/superlocalmemory/core/security_primitives.py +0 -672
- package/src/superlocalmemory/core/session_identity.py +0 -98
- package/src/superlocalmemory/core/shadow_router.py +0 -319
- package/src/superlocalmemory/core/slm_disabled.py +0 -85
- package/src/superlocalmemory/core/status_contract.py +0 -108
- package/src/superlocalmemory/core/store_pipeline.py +0 -1404
- package/src/superlocalmemory/core/summarizer.py +0 -200
- package/src/superlocalmemory/core/tier_manager.py +0 -461
- package/src/superlocalmemory/core/topic_signature.py +0 -156
- package/src/superlocalmemory/core/transactions/__init__.py +0 -78
- package/src/superlocalmemory/core/transactions/concrete_owners.py +0 -604
- package/src/superlocalmemory/core/transactions/erasure.py +0 -825
- package/src/superlocalmemory/core/transactions/manifest.py +0 -255
- package/src/superlocalmemory/core/transactions/manifest_key.py +0 -155
- package/src/superlocalmemory/core/transactions/obligations.py +0 -272
- package/src/superlocalmemory/core/transactions/owners.py +0 -114
- package/src/superlocalmemory/core/transactions/reconciler.py +0 -285
- package/src/superlocalmemory/core/transactions/service.py +0 -330
- package/src/superlocalmemory/core/worker_pool.py +0 -377
- package/src/superlocalmemory/core/working_memory.py +0 -288
- package/src/superlocalmemory/dynamics/__init__.py +0 -0
- package/src/superlocalmemory/dynamics/activation_guided_quantization.py +0 -374
- package/src/superlocalmemory/dynamics/eap_scheduler.py +0 -294
- package/src/superlocalmemory/dynamics/ebbinghaus_langevin_coupling.py +0 -171
- package/src/superlocalmemory/dynamics/fisher_langevin_coupling.py +0 -227
- package/src/superlocalmemory/encoding/__init__.py +0 -0
- package/src/superlocalmemory/encoding/auto_linker.py +0 -308
- package/src/superlocalmemory/encoding/cognitive_consolidator.py +0 -899
- package/src/superlocalmemory/encoding/consolidator.py +0 -472
- package/src/superlocalmemory/encoding/context_generator.py +0 -175
- package/src/superlocalmemory/encoding/emotional.py +0 -189
- package/src/superlocalmemory/encoding/entity_reflexion.py +0 -200
- package/src/superlocalmemory/encoding/entity_resolver.py +0 -687
- package/src/superlocalmemory/encoding/entropy_gate.py +0 -101
- package/src/superlocalmemory/encoding/fact_extractor.py +0 -877
- package/src/superlocalmemory/encoding/foresight.py +0 -93
- package/src/superlocalmemory/encoding/graph_builder.py +0 -346
- package/src/superlocalmemory/encoding/observation_builder.py +0 -177
- package/src/superlocalmemory/encoding/prospective_markers.py +0 -262
- package/src/superlocalmemory/encoding/scene_builder.py +0 -410
- package/src/superlocalmemory/encoding/signal_inference.py +0 -90
- package/src/superlocalmemory/encoding/temporal_parser.py +0 -432
- package/src/superlocalmemory/encoding/temporal_validator.py +0 -572
- package/src/superlocalmemory/encoding/type_router.py +0 -237
- package/src/superlocalmemory/evaluation/__init__.py +0 -13
- package/src/superlocalmemory/evaluation/calibration.py +0 -308
- package/src/superlocalmemory/evolution/__init__.py +0 -29
- package/src/superlocalmemory/evolution/blind_verifier.py +0 -122
- package/src/superlocalmemory/evolution/budget.py +0 -356
- package/src/superlocalmemory/evolution/evolution_store.py +0 -619
- package/src/superlocalmemory/evolution/llm_dispatch.py +0 -559
- package/src/superlocalmemory/evolution/model_selection.py +0 -175
- package/src/superlocalmemory/evolution/mutation_generator.py +0 -226
- package/src/superlocalmemory/evolution/skill_activator.py +0 -270
- package/src/superlocalmemory/evolution/skill_evolver.py +0 -928
- package/src/superlocalmemory/evolution/triggers.py +0 -376
- package/src/superlocalmemory/evolution/types.py +0 -114
- package/src/superlocalmemory/graph/__init__.py +0 -9
- package/src/superlocalmemory/graph/cozo_adjacency.py +0 -122
- package/src/superlocalmemory/graph/cozo_backend.py +0 -751
- package/src/superlocalmemory/hooks/__init__.py +0 -3
- package/src/superlocalmemory/hooks/_outcome_common.py +0 -523
- package/src/superlocalmemory/hooks/adapter_base.py +0 -347
- package/src/superlocalmemory/hooks/antigravity_adapter.py +0 -171
- package/src/superlocalmemory/hooks/auto_capture.py +0 -133
- package/src/superlocalmemory/hooks/auto_invoker.py +0 -521
- package/src/superlocalmemory/hooks/auto_parameterize.py +0 -147
- package/src/superlocalmemory/hooks/auto_recall.py +0 -191
- package/src/superlocalmemory/hooks/auto_recall_hook.py +0 -251
- package/src/superlocalmemory/hooks/before_web_hook.py +0 -131
- package/src/superlocalmemory/hooks/claude_code_hooks.py +0 -637
- package/src/superlocalmemory/hooks/codex_assets.py +0 -251
- package/src/superlocalmemory/hooks/codex_hooks.py +0 -186
- package/src/superlocalmemory/hooks/context_payload.py +0 -311
- package/src/superlocalmemory/hooks/copilot_adapter.py +0 -208
- package/src/superlocalmemory/hooks/cross_platform_connector.py +0 -90
- package/src/superlocalmemory/hooks/cursor_adapter.py +0 -173
- package/src/superlocalmemory/hooks/hook_daemon.py +0 -295
- package/src/superlocalmemory/hooks/hook_handlers.py +0 -822
- package/src/superlocalmemory/hooks/ide_connector.py +0 -246
- package/src/superlocalmemory/hooks/memory_protocol.py +0 -158
- package/src/superlocalmemory/hooks/portable_kit.py +0 -755
- package/src/superlocalmemory/hooks/post_tool_async_hook.py +0 -183
- package/src/superlocalmemory/hooks/post_tool_outcome_hook.py +0 -351
- package/src/superlocalmemory/hooks/prewarm_auth.py +0 -187
- package/src/superlocalmemory/hooks/rules_engine.py +0 -99
- package/src/superlocalmemory/hooks/session_registry.py +0 -330
- package/src/superlocalmemory/hooks/stop_outcome_hook.py +0 -138
- package/src/superlocalmemory/hooks/sync_loop.py +0 -114
- package/src/superlocalmemory/hooks/topic_shift_hook.py +0 -302
- package/src/superlocalmemory/hooks/user_prompt_hook.py +0 -131
- package/src/superlocalmemory/hooks/user_prompt_rehash_hook.py +0 -210
- package/src/superlocalmemory/infra/__init__.py +0 -3
- package/src/superlocalmemory/infra/auth_middleware.py +0 -145
- package/src/superlocalmemory/infra/backup.py +0 -974
- package/src/superlocalmemory/infra/backup_obligations.py +0 -423
- package/src/superlocalmemory/infra/cache_manager.py +0 -267
- package/src/superlocalmemory/infra/cloud_backup.py +0 -788
- package/src/superlocalmemory/infra/daemon_identity.py +0 -300
- package/src/superlocalmemory/infra/data_root.py +0 -238
- package/src/superlocalmemory/infra/event_bus.py +0 -637
- package/src/superlocalmemory/infra/local_diagnostics.py +0 -327
- package/src/superlocalmemory/infra/pid_manager.py +0 -193
- package/src/superlocalmemory/infra/process_identity.py +0 -180
- package/src/superlocalmemory/infra/process_reaper.py +0 -624
- package/src/superlocalmemory/infra/rate_limiter.py +0 -228
- package/src/superlocalmemory/infra/self_heal.py +0 -401
- package/src/superlocalmemory/infra/version_integrity.py +0 -229
- package/src/superlocalmemory/ingestion/__init__.py +0 -13
- package/src/superlocalmemory/ingestion/adapter_manager.py +0 -255
- package/src/superlocalmemory/ingestion/base_adapter.py +0 -171
- package/src/superlocalmemory/ingestion/calendar_adapter.py +0 -349
- package/src/superlocalmemory/ingestion/credentials.py +0 -125
- package/src/superlocalmemory/ingestion/gmail_adapter.py +0 -378
- package/src/superlocalmemory/ingestion/parsers.py +0 -100
- package/src/superlocalmemory/ingestion/transcript_adapter.py +0 -161
- package/src/superlocalmemory/integrations/__init__.py +0 -1
- package/src/superlocalmemory/integrations/bounded_loops_mcp.py +0 -431
- package/src/superlocalmemory/integrations/bounded_loops_v051.py +0 -236
- package/src/superlocalmemory/learning/__init__.py +0 -0
- package/src/superlocalmemory/learning/adaptive.py +0 -172
- package/src/superlocalmemory/learning/arm_catalog.py +0 -97
- package/src/superlocalmemory/learning/assertion_miner.py +0 -403
- package/src/superlocalmemory/learning/bandit.py +0 -654
- package/src/superlocalmemory/learning/bandit_cache.py +0 -131
- package/src/superlocalmemory/learning/behavioral.py +0 -542
- package/src/superlocalmemory/learning/bootstrap.py +0 -298
- package/src/superlocalmemory/learning/consolidation_cycle.py +0 -398
- package/src/superlocalmemory/learning/consolidation_quantization_worker.py +0 -115
- package/src/superlocalmemory/learning/consolidation_worker.py +0 -261
- package/src/superlocalmemory/learning/cross_project.py +0 -408
- package/src/superlocalmemory/learning/database.py +0 -698
- package/src/superlocalmemory/learning/dedup_hnsw.py +0 -413
- package/src/superlocalmemory/learning/engagement.py +0 -487
- package/src/superlocalmemory/learning/engagement_features.py +0 -279
- package/src/superlocalmemory/learning/ensemble.py +0 -309
- package/src/superlocalmemory/learning/entity_compiler.py +0 -356
- package/src/superlocalmemory/learning/fact_outcome_joins.py +0 -207
- package/src/superlocalmemory/learning/features.py +0 -138
- package/src/superlocalmemory/learning/feedback.py +0 -724
- package/src/superlocalmemory/learning/forgetting_scheduler.py +0 -375
- package/src/superlocalmemory/learning/hnsw_dedup.py +0 -69
- package/src/superlocalmemory/learning/labeler.py +0 -85
- package/src/superlocalmemory/learning/legacy_migration.py +0 -316
- package/src/superlocalmemory/learning/lightgbm_subprocess.py +0 -236
- package/src/superlocalmemory/learning/memory_merge.py +0 -175
- package/src/superlocalmemory/learning/model_cache.py +0 -267
- package/src/superlocalmemory/learning/model_rollback.py +0 -281
- package/src/superlocalmemory/learning/outcome_queue.py +0 -306
- package/src/superlocalmemory/learning/outcomes.py +0 -286
- package/src/superlocalmemory/learning/pattern_miner.py +0 -465
- package/src/superlocalmemory/learning/pattern_miner_constants.py +0 -90
- package/src/superlocalmemory/learning/pcos.py +0 -291
- package/src/superlocalmemory/learning/project_context.py +0 -366
- package/src/superlocalmemory/learning/propensity.py +0 -131
- package/src/superlocalmemory/learning/ranker.py +0 -300
- package/src/superlocalmemory/learning/ranker_common.py +0 -163
- package/src/superlocalmemory/learning/ranker_retrain_legacy.py +0 -210
- package/src/superlocalmemory/learning/ranker_retrain_online.py +0 -423
- package/src/superlocalmemory/learning/reward.py +0 -888
- package/src/superlocalmemory/learning/reward_archive.py +0 -223
- package/src/superlocalmemory/learning/reward_boost.py +0 -211
- package/src/superlocalmemory/learning/reward_from_outcomes.py +0 -365
- package/src/superlocalmemory/learning/reward_model.py +0 -144
- package/src/superlocalmemory/learning/reward_proxy.py +0 -578
- package/src/superlocalmemory/learning/shadow_test.py +0 -524
- package/src/superlocalmemory/learning/signal_kinds.py +0 -79
- package/src/superlocalmemory/learning/signal_worker.py +0 -268
- package/src/superlocalmemory/learning/signals.py +0 -646
- package/src/superlocalmemory/learning/skill_performance_miner.py +0 -422
- package/src/superlocalmemory/learning/source_quality.py +0 -828
- package/src/superlocalmemory/learning/trigram_index.py +0 -548
- package/src/superlocalmemory/learning/workflows.py +0 -309
- package/src/superlocalmemory/llm/__init__.py +0 -0
- package/src/superlocalmemory/llm/backbone.py +0 -364
- package/src/superlocalmemory/loops/__init__.py +0 -58
- package/src/superlocalmemory/loops/budget.py +0 -58
- package/src/superlocalmemory/loops/engine.py +0 -174
- package/src/superlocalmemory/loops/ledger.py +0 -298
- package/src/superlocalmemory/loops/models.py +0 -152
- package/src/superlocalmemory/loops/rules.py +0 -52
- package/src/superlocalmemory/math/__init__.py +0 -0
- package/src/superlocalmemory/math/ebbinghaus.py +0 -352
- package/src/superlocalmemory/math/fisher.py +0 -356
- package/src/superlocalmemory/math/fisher_quantized.py +0 -255
- package/src/superlocalmemory/math/hopfield.py +0 -282
- package/src/superlocalmemory/math/langevin.py +0 -411
- package/src/superlocalmemory/math/polar_quant.py +0 -414
- package/src/superlocalmemory/math/qjl.py +0 -115
- package/src/superlocalmemory/math/sheaf.py +0 -261
- package/src/superlocalmemory/math/turbo_quant.py +0 -318
- package/src/superlocalmemory/mcp/__init__.py +0 -0
- package/src/superlocalmemory/mcp/_daemon_proxy.py +0 -203
- package/src/superlocalmemory/mcp/_pool_adapter.py +0 -181
- package/src/superlocalmemory/mcp/_stdin_guard.py +0 -60
- package/src/superlocalmemory/mcp/agent_context.py +0 -115
- package/src/superlocalmemory/mcp/cli_fallback.py +0 -602
- package/src/superlocalmemory/mcp/http_transport.py +0 -85
- package/src/superlocalmemory/mcp/profiles.py +0 -154
- package/src/superlocalmemory/mcp/resources.py +0 -281
- package/src/superlocalmemory/mcp/server.py +0 -480
- package/src/superlocalmemory/mcp/session_binding.py +0 -98
- package/src/superlocalmemory/mcp/shared.py +0 -112
- package/src/superlocalmemory/mcp/tools.py +0 -18
- package/src/superlocalmemory/mcp/tools_active.py +0 -958
- package/src/superlocalmemory/mcp/tools_brain.py +0 -298
- package/src/superlocalmemory/mcp/tools_code_graph.py +0 -1717
- package/src/superlocalmemory/mcp/tools_context.py +0 -239
- package/src/superlocalmemory/mcp/tools_core.py +0 -1112
- package/src/superlocalmemory/mcp/tools_evolution.py +0 -343
- package/src/superlocalmemory/mcp/tools_learning.py +0 -393
- package/src/superlocalmemory/mcp/tools_loops.py +0 -345
- package/src/superlocalmemory/mcp/tools_mesh.py +0 -429
- package/src/superlocalmemory/mcp/tools_ops.py +0 -115
- package/src/superlocalmemory/mcp/tools_optimize.py +0 -322
- package/src/superlocalmemory/mcp/tools_summaries.py +0 -147
- package/src/superlocalmemory/mcp/tools_v28.py +0 -292
- package/src/superlocalmemory/mcp/tools_v3.py +0 -398
- package/src/superlocalmemory/mcp/tools_v33.py +0 -507
- package/src/superlocalmemory/mesh/__init__.py +0 -12
- package/src/superlocalmemory/mesh/broker.py +0 -812
- package/src/superlocalmemory/mesh/broker_security.py +0 -470
- package/src/superlocalmemory/mesh/discovery.py +0 -365
- package/src/superlocalmemory/mesh/lock_protocol.py +0 -313
- package/src/superlocalmemory/mesh/node_identity.py +0 -97
- package/src/superlocalmemory/mesh/outbox_remote.py +0 -429
- package/src/superlocalmemory/mesh/remote_sync.py +0 -829
- package/src/superlocalmemory/mesh/state_sync.py +0 -286
- package/src/superlocalmemory/migrations/__init__.py +0 -5
- package/src/superlocalmemory/migrations/v3_4_25_to_v3_4_26.py +0 -144
- package/src/superlocalmemory/optimize/NOTICE +0 -6
- package/src/superlocalmemory/optimize/__init__.py +0 -0
- package/src/superlocalmemory/optimize/adapters/__init__.py +0 -68
- package/src/superlocalmemory/optimize/adapters/_agent_registry.py +0 -120
- package/src/superlocalmemory/optimize/adapters/anthropic_adapter.py +0 -112
- package/src/superlocalmemory/optimize/adapters/openai_adapter.py +0 -122
- package/src/superlocalmemory/optimize/adapters/wrap.py +0 -228
- package/src/superlocalmemory/optimize/cache/__init__.py +0 -31
- package/src/superlocalmemory/optimize/cache/boundary_store.py +0 -488
- package/src/superlocalmemory/optimize/cache/centroid_store.py +0 -199
- package/src/superlocalmemory/optimize/cache/context_key.py +0 -67
- package/src/superlocalmemory/optimize/cache/exact.py +0 -88
- package/src/superlocalmemory/optimize/cache/invalidation.py +0 -36
- package/src/superlocalmemory/optimize/cache/key_builder.py +0 -111
- package/src/superlocalmemory/optimize/cache/manager.py +0 -737
- package/src/superlocalmemory/optimize/cache/semantic.py +0 -637
- package/src/superlocalmemory/optimize/cache/stampede.py +0 -50
- package/src/superlocalmemory/optimize/compress/__init__.py +0 -17
- package/src/superlocalmemory/optimize/compress/align.py +0 -159
- package/src/superlocalmemory/optimize/compress/ccr.py +0 -116
- package/src/superlocalmemory/optimize/compress/prose_llmlingua.py +0 -71
- package/src/superlocalmemory/optimize/compress/router.py +0 -667
- package/src/superlocalmemory/optimize/config/__init__.py +0 -56
- package/src/superlocalmemory/optimize/config/defaults.py +0 -43
- package/src/superlocalmemory/optimize/config/schema.py +0 -327
- package/src/superlocalmemory/optimize/config/store.py +0 -270
- package/src/superlocalmemory/optimize/metrics/__init__.py +0 -8
- package/src/superlocalmemory/optimize/metrics/counters.py +0 -155
- package/src/superlocalmemory/optimize/metrics/estimator.py +0 -87
- package/src/superlocalmemory/optimize/metrics/exporters.py +0 -77
- package/src/superlocalmemory/optimize/metrics/persistence.py +0 -115
- package/src/superlocalmemory/optimize/proxy/__init__.py +0 -28
- package/src/superlocalmemory/optimize/proxy/_helpers.py +0 -730
- package/src/superlocalmemory/optimize/proxy/anthropic_surface.py +0 -375
- package/src/superlocalmemory/optimize/proxy/capture.py +0 -550
- package/src/superlocalmemory/optimize/proxy/gemini_surface.py +0 -528
- package/src/superlocalmemory/optimize/proxy/lifecycle.py +0 -126
- package/src/superlocalmemory/optimize/proxy/openai_surface.py +0 -465
- package/src/superlocalmemory/optimize/proxy/server.py +0 -199
- package/src/superlocalmemory/optimize/proxy/vertex_surface.py +0 -246
- package/src/superlocalmemory/optimize/storage/__init__.py +0 -0
- package/src/superlocalmemory/optimize/storage/db.py +0 -1185
- package/src/superlocalmemory/optimize/storage/schema.py +0 -205
- package/src/superlocalmemory/parameterization/__init__.py +0 -47
- package/src/superlocalmemory/parameterization/cross_project.py +0 -12
- package/src/superlocalmemory/parameterization/pattern_extractor.py +0 -584
- package/src/superlocalmemory/parameterization/pii_filter.py +0 -106
- package/src/superlocalmemory/parameterization/prompt_injector.py +0 -219
- package/src/superlocalmemory/parameterization/prompt_lifecycle.py +0 -281
- package/src/superlocalmemory/parameterization/soft_prompt_generator.py +0 -542
- package/src/superlocalmemory/parameterization/workflow_miner.py +0 -17
- package/src/superlocalmemory/reliability/__init__.py +0 -45
- package/src/superlocalmemory/reliability/join_liveness.py +0 -301
- package/src/superlocalmemory/reliability/prior_distance.py +0 -243
- package/src/superlocalmemory/retrieval/__init__.py +0 -0
- package/src/superlocalmemory/retrieval/agentic.py +0 -367
- package/src/superlocalmemory/retrieval/ann_index.py +0 -235
- package/src/superlocalmemory/retrieval/bm25_channel.py +0 -451
- package/src/superlocalmemory/retrieval/bridge_discovery.py +0 -253
- package/src/superlocalmemory/retrieval/channel_registry.py +0 -154
- package/src/superlocalmemory/retrieval/channel_status.py +0 -117
- package/src/superlocalmemory/retrieval/engine.py +0 -1615
- package/src/superlocalmemory/retrieval/entity_channel.py +0 -994
- package/src/superlocalmemory/retrieval/forgetting_filter.py +0 -160
- package/src/superlocalmemory/retrieval/fusion.py +0 -81
- package/src/superlocalmemory/retrieval/graph_adjacency.py +0 -219
- package/src/superlocalmemory/retrieval/hopfield_channel.py +0 -465
- package/src/superlocalmemory/retrieval/profile_channel.py +0 -105
- package/src/superlocalmemory/retrieval/quantization_aware_search.py +0 -147
- package/src/superlocalmemory/retrieval/remote_reranker.py +0 -758
- package/src/superlocalmemory/retrieval/reranker.py +0 -674
- package/src/superlocalmemory/retrieval/scope_policy.py +0 -126
- package/src/superlocalmemory/retrieval/semantic_channel.py +0 -638
- package/src/superlocalmemory/retrieval/spreading.py +0 -288
- package/src/superlocalmemory/retrieval/spreading_activation.py +0 -616
- package/src/superlocalmemory/retrieval/strategy.py +0 -248
- package/src/superlocalmemory/retrieval/temporal_channel.py +0 -433
- package/src/superlocalmemory/retrieval/temporal_frame.py +0 -102
- package/src/superlocalmemory/retrieval/temporal_utils.py +0 -122
- package/src/superlocalmemory/retrieval/temporal_validity_filter.py +0 -499
- package/src/superlocalmemory/retrieval/time_window.py +0 -181
- package/src/superlocalmemory/retrieval/vector_store.py +0 -863
- package/src/superlocalmemory/server/__init__.py +0 -1
- package/src/superlocalmemory/server/api.py +0 -310
- package/src/superlocalmemory/server/asset_versions.py +0 -171
- package/src/superlocalmemory/server/bandit_loops.py +0 -158
- package/src/superlocalmemory/server/config_file.py +0 -90
- package/src/superlocalmemory/server/consolidation_runner.py +0 -140
- package/src/superlocalmemory/server/egress_policy.py +0 -258
- package/src/superlocalmemory/server/loopback.py +0 -85
- package/src/superlocalmemory/server/middleware/__init__.py +0 -11
- package/src/superlocalmemory/server/middleware/security_headers.py +0 -144
- package/src/superlocalmemory/server/origin.py +0 -55
- package/src/superlocalmemory/server/profile_runtime.py +0 -515
- package/src/superlocalmemory/server/rbac_enforce.py +0 -194
- package/src/superlocalmemory/server/recall_health.py +0 -343
- package/src/superlocalmemory/server/recall_serializer.py +0 -320
- package/src/superlocalmemory/server/route_mutations.py +0 -104
- package/src/superlocalmemory/server/routes/__init__.py +0 -4
- package/src/superlocalmemory/server/routes/abstraction.py +0 -314
- package/src/superlocalmemory/server/routes/adapters.py +0 -63
- package/src/superlocalmemory/server/routes/agents.py +0 -303
- package/src/superlocalmemory/server/routes/backup.py +0 -869
- package/src/superlocalmemory/server/routes/behavioral.py +0 -659
- package/src/superlocalmemory/server/routes/brain.py +0 -1892
- package/src/superlocalmemory/server/routes/chat.py +0 -393
- package/src/superlocalmemory/server/routes/compliance.py +0 -533
- package/src/superlocalmemory/server/routes/config_api.py +0 -703
- package/src/superlocalmemory/server/routes/data_io.py +0 -329
- package/src/superlocalmemory/server/routes/entity.py +0 -237
- package/src/superlocalmemory/server/routes/events.py +0 -214
- package/src/superlocalmemory/server/routes/evolution.py +0 -510
- package/src/superlocalmemory/server/routes/helpers.py +0 -499
- package/src/superlocalmemory/server/routes/ingest.py +0 -137
- package/src/superlocalmemory/server/routes/insights.py +0 -366
- package/src/superlocalmemory/server/routes/learning.py +0 -834
- package/src/superlocalmemory/server/routes/learning_telemetry.py +0 -154
- package/src/superlocalmemory/server/routes/lifecycle.py +0 -184
- package/src/superlocalmemory/server/routes/memories.py +0 -1661
- package/src/superlocalmemory/server/routes/mesh.py +0 -517
- package/src/superlocalmemory/server/routes/mesh_lock.py +0 -54
- package/src/superlocalmemory/server/routes/mesh_state.py +0 -63
- package/src/superlocalmemory/server/routes/optimize.py +0 -197
- package/src/superlocalmemory/server/routes/prewarm.py +0 -173
- package/src/superlocalmemory/server/routes/profiles.py +0 -292
- package/src/superlocalmemory/server/routes/ratelimit.py +0 -132
- package/src/superlocalmemory/server/routes/rbac.py +0 -366
- package/src/superlocalmemory/server/routes/stats.py +0 -385
- package/src/superlocalmemory/server/routes/tiers.py +0 -222
- package/src/superlocalmemory/server/routes/timeline.py +0 -258
- package/src/superlocalmemory/server/routes/token.py +0 -90
- package/src/superlocalmemory/server/routes/v3_api.py +0 -3023
- package/src/superlocalmemory/server/routes/ws.py +0 -171
- package/src/superlocalmemory/server/security_middleware.py +0 -89
- package/src/superlocalmemory/server/ui.py +0 -354
- package/src/superlocalmemory/server/unified_daemon.py +0 -6326
- package/src/superlocalmemory/server/write_identity.py +0 -195
- package/src/superlocalmemory/storage/__init__.py +0 -0
- package/src/superlocalmemory/storage/_migration_internals.py +0 -638
- package/src/superlocalmemory/storage/_schema_version.py +0 -174
- package/src/superlocalmemory/storage/access_log.py +0 -170
- package/src/superlocalmemory/storage/admission_codec.py +0 -129
- package/src/superlocalmemory/storage/admission_journal.py +0 -843
- package/src/superlocalmemory/storage/agent_experience.py +0 -546
- package/src/superlocalmemory/storage/backup.py +0 -531
- package/src/superlocalmemory/storage/correction_cases.py +0 -670
- package/src/superlocalmemory/storage/database.py +0 -3180
- package/src/superlocalmemory/storage/deferred_writes.py +0 -209
- package/src/superlocalmemory/storage/embedding_codec.py +0 -200
- package/src/superlocalmemory/storage/embedding_migrator.py +0 -672
- package/src/superlocalmemory/storage/erasure_fence.py +0 -45
- package/src/superlocalmemory/storage/execution_learning.py +0 -285
- package/src/superlocalmemory/storage/external_evidence.py +0 -359
- package/src/superlocalmemory/storage/generation_fence.py +0 -63
- package/src/superlocalmemory/storage/lineage_retention.py +0 -236
- package/src/superlocalmemory/storage/logical_edges.py +0 -86
- package/src/superlocalmemory/storage/memory_write.py +0 -115
- package/src/superlocalmemory/storage/migration_runner.py +0 -895
- package/src/superlocalmemory/storage/migration_v33.py +0 -140
- package/src/superlocalmemory/storage/migrations/M001_add_signal_features_columns.py +0 -67
- package/src/superlocalmemory/storage/migrations/M002_model_state_history.py +0 -107
- package/src/superlocalmemory/storage/migrations/M003_migration_log.py +0 -38
- package/src/superlocalmemory/storage/migrations/M004_cross_platform_sync_log.py +0 -46
- package/src/superlocalmemory/storage/migrations/M005_bandit_tables.py +0 -75
- package/src/superlocalmemory/storage/migrations/M006_action_outcomes_reward.py +0 -75
- package/src/superlocalmemory/storage/migrations/M007_pending_outcomes.py +0 -63
- package/src/superlocalmemory/storage/migrations/M009_model_lineage.py +0 -94
- package/src/superlocalmemory/storage/migrations/M010_evolution_config.py +0 -80
- package/src/superlocalmemory/storage/migrations/M011_archive_and_merge.py +0 -87
- package/src/superlocalmemory/storage/migrations/M012_shadow_observations.py +0 -72
- package/src/superlocalmemory/storage/migrations/M013_bi_temporal_columns.py +0 -55
- package/src/superlocalmemory/storage/migrations/M014_v345_scale_ready.py +0 -45
- package/src/superlocalmemory/storage/migrations/M015_add_pinned_column.py +0 -58
- package/src/superlocalmemory/storage/migrations/M016_add_scope_support.py +0 -120
- package/src/superlocalmemory/storage/migrations/M017_ccq_scope_column.py +0 -79
- package/src/superlocalmemory/storage/migrations/M018_ingestion_operations.py +0 -120
- package/src/superlocalmemory/storage/migrations/M019_derivation_lineage.py +0 -54
- package/src/superlocalmemory/storage/migrations/M020_model_state_integrity.py +0 -52
- package/src/superlocalmemory/storage/migrations/M021_ingestion_log_profile.py +0 -108
- package/src/superlocalmemory/storage/migrations/M022_entity_aliases_profile.py +0 -86
- package/src/superlocalmemory/storage/migrations/M023_mesh_profile_isolation.py +0 -194
- package/src/superlocalmemory/storage/migrations/M024_rbac_users_roles.py +0 -87
- package/src/superlocalmemory/storage/migrations/M025_perf_indexes.py +0 -90
- package/src/superlocalmemory/storage/migrations/M026_rbac_memberships_fk.py +0 -136
- package/src/superlocalmemory/storage/migrations/M027_transferable_patterns_profile.py +0 -163
- package/src/superlocalmemory/storage/migrations/M028_fact_entity_associations.py +0 -305
- package/src/superlocalmemory/storage/migrations/M029_behavioral_history_indexes.py +0 -137
- package/src/superlocalmemory/storage/migrations/M030_entity_explorer_indexes.py +0 -93
- package/src/superlocalmemory/storage/migrations/M031_dead_letter_operations.py +0 -80
- package/src/superlocalmemory/storage/migrations/M032_write_coordinator_admission.py +0 -188
- package/src/superlocalmemory/storage/migrations/M033_projection_transactions.py +0 -148
- package/src/superlocalmemory/storage/migrations/M034_obligation_integrity.py +0 -58
- package/src/superlocalmemory/storage/migrations/M035_erasure_receipts.py +0 -113
- package/src/superlocalmemory/storage/migrations/M036_vector_row_map.py +0 -107
- package/src/superlocalmemory/storage/migrations/M037_manifest_hmac_version.py +0 -162
- package/src/superlocalmemory/storage/migrations/M038_learning_feedback_channel.py +0 -77
- package/src/superlocalmemory/storage/migrations/M039_scene_fact_members.py +0 -137
- package/src/superlocalmemory/storage/migrations/M040_agent_experience_receipts.py +0 -254
- package/src/superlocalmemory/storage/migrations/M041_external_evidence_receipts.py +0 -189
- package/src/superlocalmemory/storage/migrations/M042_correction_case_ledger.py +0 -245
- package/src/superlocalmemory/storage/migrations/M043_quarantine_display_summaries.py +0 -512
- package/src/superlocalmemory/storage/migrations/M044_play_carries_its_own_evidence.py +0 -127
- package/src/superlocalmemory/storage/migrations/M045_fact_outcome_score.py +0 -158
- package/src/superlocalmemory/storage/migrations/M046_prospective_memory_has_its_own_name.py +0 -620
- package/src/superlocalmemory/storage/migrations/M047_fisher_vectors_are_stored_like_every_other_vector.py +0 -306
- package/src/superlocalmemory/storage/migrations/M048_upcoming_holds_only_what_is_upcoming.py +0 -229
- package/src/superlocalmemory/storage/migrations/M049_a_schema_version_marker_is_one_row.py +0 -201
- package/src/superlocalmemory/storage/migrations/M050_execution_learning_v2.py +0 -70
- package/src/superlocalmemory/storage/migrations/__init__.py +0 -103
- package/src/superlocalmemory/storage/migrations.py +0 -333
- package/src/superlocalmemory/storage/models.py +0 -500
- package/src/superlocalmemory/storage/projection_outbox.py +0 -346
- package/src/superlocalmemory/storage/quantized_store.py +0 -280
- package/src/superlocalmemory/storage/read_connection.py +0 -115
- package/src/superlocalmemory/storage/retention_policy.py +0 -860
- package/src/superlocalmemory/storage/schema.py +0 -1108
- package/src/superlocalmemory/storage/schema_code_graph.py +0 -282
- package/src/superlocalmemory/storage/schema_v32.py +0 -382
- package/src/superlocalmemory/storage/schema_v3410.py +0 -159
- package/src/superlocalmemory/storage/schema_v3411.py +0 -149
- package/src/superlocalmemory/storage/schema_v343.py +0 -315
- package/src/superlocalmemory/storage/schema_v345.py +0 -109
- package/src/superlocalmemory/storage/schema_v347.py +0 -140
- package/src/superlocalmemory/storage/sqlite_vectors.py +0 -169
- package/src/superlocalmemory/storage/v2_migrator.py +0 -466
- package/src/superlocalmemory/storage/write_coordinator.py +0 -949
- package/src/superlocalmemory/storage/write_lock.py +0 -88
- package/src/superlocalmemory/summaries/__init__.py +0 -37
- package/src/superlocalmemory/summaries/base.py +0 -267
- package/src/superlocalmemory/summaries/daily_reflection.py +0 -340
- package/src/superlocalmemory/summaries/non_answer.py +0 -223
- package/src/superlocalmemory/summaries/project_work_log.py +0 -440
- package/src/superlocalmemory/summaries/session_summary.py +0 -311
- package/src/superlocalmemory/trust/__init__.py +0 -0
- package/src/superlocalmemory/trust/gate.py +0 -171
- package/src/superlocalmemory/trust/provenance.py +0 -124
- package/src/superlocalmemory/trust/scorer.py +0 -413
- package/src/superlocalmemory/trust/signals.py +0 -153
- package/src/superlocalmemory/ui/assets/slm-icon-white.svg +0 -64
- package/src/superlocalmemory/ui/assets/slm-icon.svg +0 -36
- package/src/superlocalmemory/ui/css/brain.css +0 -409
- package/src/superlocalmemory/ui/css/design-system.css +0 -696
- package/src/superlocalmemory/ui/css/legacy-dashboard.css +0 -663
- package/src/superlocalmemory/ui/css/neural-glass.css +0 -1599
- package/src/superlocalmemory/ui/css/od-bridge.css +0 -158
- package/src/superlocalmemory/ui/favicon.svg +0 -36
- package/src/superlocalmemory/ui/index.html +0 -1638
- package/src/superlocalmemory/ui/js/agents.js +0 -192
- package/src/superlocalmemory/ui/js/auto-settings.js +0 -624
- package/src/superlocalmemory/ui/js/brain.js +0 -1400
- package/src/superlocalmemory/ui/js/clusters.js +0 -326
- package/src/superlocalmemory/ui/js/compliance.js +0 -307
- package/src/superlocalmemory/ui/js/core.js +0 -566
- package/src/superlocalmemory/ui/js/dashboard.js +0 -503
- package/src/superlocalmemory/ui/js/event-delegation.js +0 -113
- package/src/superlocalmemory/ui/js/events.js +0 -178
- package/src/superlocalmemory/ui/js/fact-detail.js +0 -142
- package/src/superlocalmemory/ui/js/feedback.js +0 -339
- package/src/superlocalmemory/ui/js/graph-event-bus.js +0 -83
- package/src/superlocalmemory/ui/js/graph-filters.js +0 -220
- package/src/superlocalmemory/ui/js/graph-ui.js +0 -214
- package/src/superlocalmemory/ui/js/ide-status.js +0 -115
- package/src/superlocalmemory/ui/js/init.js +0 -54
- package/src/superlocalmemory/ui/js/knowledge-graph.js +0 -945
- package/src/superlocalmemory/ui/js/lifecycle.js +0 -387
- package/src/superlocalmemory/ui/js/math-health.js +0 -114
- package/src/superlocalmemory/ui/js/memories.js +0 -394
- package/src/superlocalmemory/ui/js/memory-chat.js +0 -371
- package/src/superlocalmemory/ui/js/memory-timeline.js +0 -265
- package/src/superlocalmemory/ui/js/modal.js +0 -733
- package/src/superlocalmemory/ui/js/ng-entities.js +0 -298
- package/src/superlocalmemory/ui/js/ng-health.js +0 -208
- package/src/superlocalmemory/ui/js/ng-ingestion.js +0 -203
- package/src/superlocalmemory/ui/js/ng-mesh.js +0 -374
- package/src/superlocalmemory/ui/js/ng-shell.js +0 -524
- package/src/superlocalmemory/ui/js/ng-skills.js +0 -663
- package/src/superlocalmemory/ui/js/od-agents.js +0 -588
- package/src/superlocalmemory/ui/js/od-auth-gate.js +0 -257
- package/src/superlocalmemory/ui/js/od-backup.js +0 -878
- package/src/superlocalmemory/ui/js/od-boundedloops.js +0 -324
- package/src/superlocalmemory/ui/js/od-brain.js +0 -1095
- package/src/superlocalmemory/ui/js/od-compliance-ext.js +0 -301
- package/src/superlocalmemory/ui/js/od-components.js +0 -147
- package/src/superlocalmemory/ui/js/od-entities.js +0 -622
- package/src/superlocalmemory/ui/js/od-graph.js +0 -776
- package/src/superlocalmemory/ui/js/od-health.js +0 -579
- package/src/superlocalmemory/ui/js/od-mcp.js +0 -508
- package/src/superlocalmemory/ui/js/od-memories.js +0 -1499
- package/src/superlocalmemory/ui/js/od-mesh.js +0 -645
- package/src/superlocalmemory/ui/js/od-operations.js +0 -1268
- package/src/superlocalmemory/ui/js/od-ops-health.js +0 -417
- package/src/superlocalmemory/ui/js/od-optimize.js +0 -828
- package/src/superlocalmemory/ui/js/od-settings.js +0 -1275
- package/src/superlocalmemory/ui/js/od-shell.js +0 -819
- package/src/superlocalmemory/ui/js/od-skills.js +0 -600
- package/src/superlocalmemory/ui/js/od-team.js +0 -265
- package/src/superlocalmemory/ui/js/optimize.js +0 -191
- package/src/superlocalmemory/ui/js/profiles.js +0 -362
- package/src/superlocalmemory/ui/js/quick-actions.js +0 -334
- package/src/superlocalmemory/ui/js/recall-lab.js +0 -373
- package/src/superlocalmemory/ui/js/search.js +0 -86
- package/src/superlocalmemory/ui/js/settings.js +0 -556
- package/src/superlocalmemory/ui/js/timeline.js +0 -62
- package/src/superlocalmemory/ui/js/trust-dashboard.js +0 -225
- package/src/superlocalmemory/ui/vendor/bootstrap-icons/bootstrap-icons.css +0 -2018
- package/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff +0 -0
- package/src/superlocalmemory/ui/vendor/bootstrap-icons/fonts/bootstrap-icons.woff2 +0 -0
- package/src/superlocalmemory/ui/vendor/bootstrap.bundle.min.js +0 -7
- package/src/superlocalmemory/ui/vendor/bootstrap.min.css +0 -6
- package/src/superlocalmemory/ui/vendor/d3.v7.min.js +0 -2
- package/src/superlocalmemory/ui/vendor/graphology-library.min.js +0 -2
- package/src/superlocalmemory/ui/vendor/graphology.umd.min.js +0 -2
- package/src/superlocalmemory/ui/vendor/inter-ui/inter-variable.min.css +0 -8
- package/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable-Italic.woff2 +0 -0
- package/src/superlocalmemory/ui/vendor/inter-ui/variable/InterVariable.woff2 +0 -0
- package/src/superlocalmemory/ui/vendor/sigma.min.js +0 -1
- package/src/superlocalmemory/vector/__init__.py +0 -9
- package/src/superlocalmemory/vector/lancedb_backend.py +0 -366
|
@@ -1,466 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
|
|
2
|
-
# Licensed under AGPL-3.0-or-later - see LICENSE file
|
|
3
|
-
# Part of SuperLocalMemory V3 | https://qualixar.com | https://varunpratap.com
|
|
4
|
-
|
|
5
|
-
"""V2 to V3 database migration.
|
|
6
|
-
|
|
7
|
-
Detects V2 installations, backs up data, extends schema with V3 tables,
|
|
8
|
-
and creates backward-compatible symlinks.
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
from __future__ import annotations
|
|
12
|
-
|
|
13
|
-
import logging
|
|
14
|
-
import shutil
|
|
15
|
-
import sqlite3
|
|
16
|
-
import sys
|
|
17
|
-
from datetime import datetime, UTC
|
|
18
|
-
from pathlib import Path
|
|
19
|
-
|
|
20
|
-
from superlocalmemory.infra.data_root import DynamicStatePath, canonical_data_root
|
|
21
|
-
|
|
22
|
-
logger = logging.getLogger(__name__)
|
|
23
|
-
|
|
24
|
-
V2_BASE = Path.home() / ".claude-memory"
|
|
25
|
-
V3_BASE = DynamicStatePath()
|
|
26
|
-
V2_DB_NAME = "memory.db"
|
|
27
|
-
BACKUP_NAME = "memory-v2-backup.db"
|
|
28
|
-
|
|
29
|
-
# V3 tables to add during migration
|
|
30
|
-
V3_TABLES_SQL = [
|
|
31
|
-
"""CREATE TABLE IF NOT EXISTS semantic_facts (
|
|
32
|
-
fact_id TEXT PRIMARY KEY,
|
|
33
|
-
memory_id TEXT,
|
|
34
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
35
|
-
content TEXT NOT NULL,
|
|
36
|
-
fact_type TEXT DEFAULT 'world',
|
|
37
|
-
confidence REAL DEFAULT 0.7,
|
|
38
|
-
speaker TEXT DEFAULT '',
|
|
39
|
-
embedding BLOB,
|
|
40
|
-
fisher_mean BLOB,
|
|
41
|
-
fisher_variance BLOB,
|
|
42
|
-
access_count INTEGER DEFAULT 0,
|
|
43
|
-
observation_date TEXT,
|
|
44
|
-
referenced_date TEXT,
|
|
45
|
-
interval_start TEXT,
|
|
46
|
-
interval_end TEXT,
|
|
47
|
-
canonical_entities TEXT DEFAULT '[]',
|
|
48
|
-
created_at TEXT,
|
|
49
|
-
updated_at TEXT
|
|
50
|
-
)""",
|
|
51
|
-
"""CREATE TABLE IF NOT EXISTS kg_nodes (
|
|
52
|
-
node_id TEXT PRIMARY KEY,
|
|
53
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
54
|
-
entity_name TEXT NOT NULL,
|
|
55
|
-
entity_type TEXT DEFAULT 'unknown',
|
|
56
|
-
aliases TEXT DEFAULT '[]',
|
|
57
|
-
fact_count INTEGER DEFAULT 0,
|
|
58
|
-
created_at TEXT
|
|
59
|
-
)""",
|
|
60
|
-
"""CREATE TABLE IF NOT EXISTS memory_edges (
|
|
61
|
-
edge_id TEXT PRIMARY KEY,
|
|
62
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
63
|
-
source_id TEXT NOT NULL,
|
|
64
|
-
target_id TEXT NOT NULL,
|
|
65
|
-
edge_type TEXT DEFAULT 'semantic',
|
|
66
|
-
weight REAL DEFAULT 1.0,
|
|
67
|
-
created_at TEXT
|
|
68
|
-
)""",
|
|
69
|
-
"""CREATE TABLE IF NOT EXISTS memory_scenes (
|
|
70
|
-
scene_id TEXT PRIMARY KEY,
|
|
71
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
72
|
-
label TEXT DEFAULT '',
|
|
73
|
-
fact_ids TEXT DEFAULT '[]',
|
|
74
|
-
created_at TEXT
|
|
75
|
-
)""",
|
|
76
|
-
"""CREATE TABLE IF NOT EXISTS bm25_tokens (
|
|
77
|
-
fact_id TEXT NOT NULL,
|
|
78
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
79
|
-
tokens TEXT NOT NULL,
|
|
80
|
-
doc_length INTEGER DEFAULT 0,
|
|
81
|
-
PRIMARY KEY (fact_id, profile_id)
|
|
82
|
-
)""",
|
|
83
|
-
"""CREATE TABLE IF NOT EXISTS temporal_events (
|
|
84
|
-
event_id TEXT PRIMARY KEY,
|
|
85
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
86
|
-
entity_id TEXT,
|
|
87
|
-
fact_id TEXT,
|
|
88
|
-
observation_date TEXT,
|
|
89
|
-
referenced_date TEXT,
|
|
90
|
-
interval_start TEXT,
|
|
91
|
-
interval_end TEXT,
|
|
92
|
-
description TEXT DEFAULT ''
|
|
93
|
-
)""",
|
|
94
|
-
"""CREATE TABLE IF NOT EXISTS memory_observations (
|
|
95
|
-
obs_id TEXT PRIMARY KEY,
|
|
96
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
97
|
-
entity_id TEXT NOT NULL,
|
|
98
|
-
observation TEXT NOT NULL,
|
|
99
|
-
source_fact_id TEXT,
|
|
100
|
-
created_at TEXT
|
|
101
|
-
)""",
|
|
102
|
-
"""CREATE TABLE IF NOT EXISTS contradictions (
|
|
103
|
-
contradiction_id TEXT PRIMARY KEY,
|
|
104
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
105
|
-
fact_id_a TEXT NOT NULL,
|
|
106
|
-
fact_id_b TEXT NOT NULL,
|
|
107
|
-
severity REAL DEFAULT 0.5,
|
|
108
|
-
resolved INTEGER DEFAULT 0,
|
|
109
|
-
created_at TEXT
|
|
110
|
-
)""",
|
|
111
|
-
"""CREATE TABLE IF NOT EXISTS langevin_state (
|
|
112
|
-
fact_id TEXT PRIMARY KEY,
|
|
113
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
114
|
-
position REAL DEFAULT 0.5,
|
|
115
|
-
velocity REAL DEFAULT 0.0,
|
|
116
|
-
updated_at TEXT
|
|
117
|
-
)""",
|
|
118
|
-
"""CREATE TABLE IF NOT EXISTS sheaf_sections (
|
|
119
|
-
section_id TEXT PRIMARY KEY,
|
|
120
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
121
|
-
fact_id TEXT NOT NULL,
|
|
122
|
-
section_data BLOB,
|
|
123
|
-
created_at TEXT
|
|
124
|
-
)""",
|
|
125
|
-
"""CREATE TABLE IF NOT EXISTS v3_config (
|
|
126
|
-
key TEXT PRIMARY KEY,
|
|
127
|
-
value TEXT NOT NULL,
|
|
128
|
-
updated_at TEXT
|
|
129
|
-
)""",
|
|
130
|
-
]
|
|
131
|
-
|
|
132
|
-
# Indexes for V3 tables
|
|
133
|
-
V3_INDEXES_SQL = [
|
|
134
|
-
"CREATE INDEX IF NOT EXISTS idx_facts_profile ON semantic_facts(profile_id)",
|
|
135
|
-
"CREATE INDEX IF NOT EXISTS idx_facts_memory ON semantic_facts(memory_id)",
|
|
136
|
-
"CREATE INDEX IF NOT EXISTS idx_nodes_profile ON kg_nodes(profile_id)",
|
|
137
|
-
"CREATE INDEX IF NOT EXISTS idx_edges_source ON memory_edges(source_id)",
|
|
138
|
-
"CREATE INDEX IF NOT EXISTS idx_edges_target ON memory_edges(target_id)",
|
|
139
|
-
"CREATE INDEX IF NOT EXISTS idx_scenes_profile ON memory_scenes(profile_id)",
|
|
140
|
-
"CREATE INDEX IF NOT EXISTS idx_temporal_entity ON temporal_events(entity_id)",
|
|
141
|
-
"CREATE INDEX IF NOT EXISTS idx_observations_entity ON memory_observations(entity_id)",
|
|
142
|
-
]
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
class V2Migrator:
|
|
146
|
-
"""Migrate V2 database to V3 schema."""
|
|
147
|
-
|
|
148
|
-
def __init__(self, home: Path | None = None, v3_base: Path | None = None):
|
|
149
|
-
self._home = home or Path.home()
|
|
150
|
-
self._v2_base = self._home / ".claude-memory"
|
|
151
|
-
self._v3_base = Path(v3_base) if v3_base is not None else canonical_data_root()
|
|
152
|
-
self._v2_db = self._v2_base / V2_DB_NAME
|
|
153
|
-
self._v3_db = self._v3_base / V2_DB_NAME
|
|
154
|
-
self._backup_db = self._v3_base / BACKUP_NAME
|
|
155
|
-
|
|
156
|
-
def detect_v2(self) -> bool:
|
|
157
|
-
"""Check if a V2 installation exists.
|
|
158
|
-
|
|
159
|
-
Returns False if .claude-memory is a symlink (already migrated).
|
|
160
|
-
"""
|
|
161
|
-
if self._v2_base.is_symlink():
|
|
162
|
-
return False
|
|
163
|
-
return self._v2_db.exists() and self._v2_db.is_file()
|
|
164
|
-
|
|
165
|
-
def is_already_migrated(self) -> bool:
|
|
166
|
-
"""Check if migration has already been performed.
|
|
167
|
-
|
|
168
|
-
Detects migration by:
|
|
169
|
-
1. .claude-memory is a symlink to .superlocalmemory (definitive)
|
|
170
|
-
2. V3 schema tables exist in the V3 database
|
|
171
|
-
"""
|
|
172
|
-
if self._v2_base.is_symlink():
|
|
173
|
-
return True
|
|
174
|
-
if not self._v3_db.exists():
|
|
175
|
-
return False
|
|
176
|
-
try:
|
|
177
|
-
conn = sqlite3.connect(str(self._v3_db))
|
|
178
|
-
try:
|
|
179
|
-
tables = {r[0] for r in conn.execute(
|
|
180
|
-
"SELECT name FROM sqlite_master WHERE type='table'"
|
|
181
|
-
).fetchall()}
|
|
182
|
-
# Check for actual V3 schema tables (not old migration markers)
|
|
183
|
-
return "atomic_facts" in tables and "canonical_entities" in tables
|
|
184
|
-
finally:
|
|
185
|
-
conn.close()
|
|
186
|
-
except Exception:
|
|
187
|
-
return False
|
|
188
|
-
|
|
189
|
-
def get_v2_stats(self) -> dict:
|
|
190
|
-
"""Get statistics about the V2 database."""
|
|
191
|
-
if not self.detect_v2():
|
|
192
|
-
return {"exists": False}
|
|
193
|
-
conn = None
|
|
194
|
-
try:
|
|
195
|
-
conn = sqlite3.connect(str(self._v2_db))
|
|
196
|
-
memory_count = conn.execute("SELECT COUNT(*) FROM memories").fetchone()[0]
|
|
197
|
-
tables = [r[0] for r in conn.execute(
|
|
198
|
-
"SELECT name FROM sqlite_master WHERE type='table'"
|
|
199
|
-
).fetchall()]
|
|
200
|
-
# Check for profiles
|
|
201
|
-
profile_count = 1
|
|
202
|
-
try:
|
|
203
|
-
profiles = conn.execute(
|
|
204
|
-
"SELECT DISTINCT profile FROM memories WHERE profile IS NOT NULL"
|
|
205
|
-
).fetchall()
|
|
206
|
-
profile_count = max(len(profiles), 1)
|
|
207
|
-
except Exception:
|
|
208
|
-
pass
|
|
209
|
-
return {
|
|
210
|
-
"exists": True,
|
|
211
|
-
"memory_count": memory_count,
|
|
212
|
-
"profile_count": profile_count,
|
|
213
|
-
"table_count": len(tables),
|
|
214
|
-
"db_path": str(self._v2_db),
|
|
215
|
-
"db_size_mb": round(self._v2_db.stat().st_size / 1024 / 1024, 2),
|
|
216
|
-
}
|
|
217
|
-
except Exception as exc:
|
|
218
|
-
return {"exists": True, "error": str(exc)}
|
|
219
|
-
finally:
|
|
220
|
-
if conn is not None:
|
|
221
|
-
conn.close()
|
|
222
|
-
|
|
223
|
-
def migrate(self) -> dict:
|
|
224
|
-
"""Run the full V2 to V3 migration.
|
|
225
|
-
|
|
226
|
-
Steps:
|
|
227
|
-
1. Create V3 directory
|
|
228
|
-
2. Backup V2 database
|
|
229
|
-
3. Copy database to V3 location
|
|
230
|
-
4. Extend schema with V3 tables
|
|
231
|
-
5. Create symlink for backward compat
|
|
232
|
-
6. Mark migration complete
|
|
233
|
-
|
|
234
|
-
Returns dict with migration stats.
|
|
235
|
-
"""
|
|
236
|
-
if self.is_already_migrated():
|
|
237
|
-
return {"success": True, "message": "Already migrated"}
|
|
238
|
-
|
|
239
|
-
if not self.detect_v2():
|
|
240
|
-
return {"success": False, "error": "No V2 installation found"}
|
|
241
|
-
|
|
242
|
-
stats = {"steps": []}
|
|
243
|
-
|
|
244
|
-
try:
|
|
245
|
-
# Step 1: Create V3 directory
|
|
246
|
-
self._v3_base.mkdir(parents=True, exist_ok=True)
|
|
247
|
-
(self._v3_base / "embeddings").mkdir(exist_ok=True)
|
|
248
|
-
(self._v3_base / "models").mkdir(exist_ok=True)
|
|
249
|
-
stats["steps"].append("Created V3 directory")
|
|
250
|
-
|
|
251
|
-
# Step 2: Backup
|
|
252
|
-
shutil.copy2(str(self._v2_db), str(self._backup_db))
|
|
253
|
-
stats["steps"].append(f"Backed up to {self._backup_db}")
|
|
254
|
-
|
|
255
|
-
# Step 3: Copy to V3 location
|
|
256
|
-
shutil.copy2(str(self._v2_db), str(self._v3_db))
|
|
257
|
-
stats["steps"].append("Copied database to V3 location")
|
|
258
|
-
|
|
259
|
-
# Step 4: Extend schema + alter V2 tables for V3 compatibility
|
|
260
|
-
conn = sqlite3.connect(str(self._v3_db))
|
|
261
|
-
|
|
262
|
-
# Add missing V3 columns to V2 memories table
|
|
263
|
-
existing_cols = {r[1] for r in conn.execute("PRAGMA table_info(memories)").fetchall()}
|
|
264
|
-
v3_columns = [
|
|
265
|
-
("profile_id", 'TEXT DEFAULT "default"'),
|
|
266
|
-
("memory_id", "TEXT"),
|
|
267
|
-
("session_id", 'TEXT DEFAULT ""'),
|
|
268
|
-
("speaker", 'TEXT DEFAULT ""'),
|
|
269
|
-
("role", 'TEXT DEFAULT "user"'),
|
|
270
|
-
("session_date", "TEXT"),
|
|
271
|
-
("metadata_json", 'TEXT DEFAULT "{}"'),
|
|
272
|
-
]
|
|
273
|
-
for col, coltype in v3_columns:
|
|
274
|
-
if col not in existing_cols:
|
|
275
|
-
conn.execute(f"ALTER TABLE memories ADD COLUMN {col} {coltype}")
|
|
276
|
-
# Backfill V3 columns from V2 data
|
|
277
|
-
conn.execute('UPDATE memories SET profile_id = COALESCE(profile, "default") WHERE profile_id IS NULL')
|
|
278
|
-
conn.execute("UPDATE memories SET memory_id = 'v2_' || CAST(id AS TEXT) WHERE memory_id IS NULL")
|
|
279
|
-
# Create unique index on memory_id so V3 FKs work
|
|
280
|
-
try:
|
|
281
|
-
conn.execute("CREATE UNIQUE INDEX IF NOT EXISTS idx_memories_memory_id ON memories (memory_id)")
|
|
282
|
-
except Exception:
|
|
283
|
-
pass
|
|
284
|
-
# Disable FK enforcement for migrated DBs (V2 schema is incompatible)
|
|
285
|
-
conn.execute("PRAGMA foreign_keys=OFF")
|
|
286
|
-
|
|
287
|
-
# Drop ALL triggers before renaming tables.
|
|
288
|
-
# ALTER TABLE RENAME auto-updates trigger bodies but corrupts
|
|
289
|
-
# FTS5 delete-command column names, causing:
|
|
290
|
-
# "table _v2_bak_*_fts has no column named *_fts"
|
|
291
|
-
v2_triggers = [r[0] for r in conn.execute(
|
|
292
|
-
"SELECT name FROM sqlite_master WHERE type='trigger'"
|
|
293
|
-
).fetchall()]
|
|
294
|
-
for trigger in v2_triggers:
|
|
295
|
-
try:
|
|
296
|
-
conn.execute(f'DROP TRIGGER IF EXISTS "{trigger}"')
|
|
297
|
-
except Exception:
|
|
298
|
-
pass
|
|
299
|
-
|
|
300
|
-
# Rename ALL tables with incompatible schemas (V2 + old alpha)
|
|
301
|
-
# User data is in 'memories' table (already upgraded above)
|
|
302
|
-
# Everything else is computed/derived and will be recreated by V3
|
|
303
|
-
all_existing = {r[0] for r in conn.execute(
|
|
304
|
-
"SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE '_v2_bak_%'"
|
|
305
|
-
).fetchall()}
|
|
306
|
-
# Keep only: memories (upgraded), profiles, schema_version, v3_config, sqlite_sequence
|
|
307
|
-
keep_tables = {"memories", "profiles", "schema_version", "v3_config", "sqlite_sequence"}
|
|
308
|
-
v2_conflicting = [t for t in all_existing if t not in keep_tables and not t.startswith("_")]
|
|
309
|
-
for table in v2_conflicting:
|
|
310
|
-
try:
|
|
311
|
-
conn.execute(f'ALTER TABLE "{table}" RENAME TO "_v2_bak_{table}"')
|
|
312
|
-
except Exception:
|
|
313
|
-
pass # Table may not exist
|
|
314
|
-
|
|
315
|
-
conn.commit()
|
|
316
|
-
|
|
317
|
-
# Use the FULL V3 schema (not the partial V3_TABLES_SQL)
|
|
318
|
-
from superlocalmemory.storage import schema
|
|
319
|
-
schema.create_all_tables(conn)
|
|
320
|
-
conn.commit()
|
|
321
|
-
# Mark migration in config table
|
|
322
|
-
try:
|
|
323
|
-
conn.execute(
|
|
324
|
-
"INSERT OR REPLACE INTO config (key, value, updated_at) VALUES (?, ?, ?)",
|
|
325
|
-
("migration_date", datetime.now(UTC).isoformat(), datetime.now(UTC).isoformat()),
|
|
326
|
-
)
|
|
327
|
-
conn.execute(
|
|
328
|
-
"INSERT OR REPLACE INTO config (key, value, updated_at) VALUES (?, ?, ?)",
|
|
329
|
-
("migration_version", "3.0.0", datetime.now(UTC).isoformat()),
|
|
330
|
-
)
|
|
331
|
-
conn.commit()
|
|
332
|
-
except Exception:
|
|
333
|
-
pass # Schema handles this on engine init
|
|
334
|
-
# Step 4b: Convert V2 memories → V3 atomic_facts
|
|
335
|
-
try:
|
|
336
|
-
now = datetime.now(UTC).isoformat()
|
|
337
|
-
rows = conn.execute("SELECT memory_id, profile_id, content, created_at FROM memories").fetchall()
|
|
338
|
-
converted = 0
|
|
339
|
-
for row in rows:
|
|
340
|
-
mid, pid, content, created = row[0], row[1], row[2], row[3]
|
|
341
|
-
if not content or not content.strip():
|
|
342
|
-
continue
|
|
343
|
-
fid = f"v2_fact_{mid}"
|
|
344
|
-
conn.execute(
|
|
345
|
-
"INSERT OR IGNORE INTO atomic_facts "
|
|
346
|
-
"(fact_id, memory_id, profile_id, content, fact_type, "
|
|
347
|
-
" entities_json, canonical_entities_json, confidence, importance, "
|
|
348
|
-
" evidence_count, access_count, source_turn_ids_json, session_id, "
|
|
349
|
-
" lifecycle, emotional_valence, emotional_arousal, signal_type, created_at) "
|
|
350
|
-
"VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",
|
|
351
|
-
(fid, mid, pid or "default", content, "factual",
|
|
352
|
-
"[]", "[]", 0.8, 0.5, 1, 0, "[]", "",
|
|
353
|
-
"active", 0.0, 0.0, "factual", created or now),
|
|
354
|
-
)
|
|
355
|
-
converted += 1
|
|
356
|
-
conn.commit()
|
|
357
|
-
stats["steps"].append(f"Converted {converted} V2 memories to V3 facts")
|
|
358
|
-
except Exception as exc:
|
|
359
|
-
stats["steps"].append(f"V2 conversion partial: {exc}")
|
|
360
|
-
|
|
361
|
-
# Step 4c: Create views for V2 dashboard compatibility
|
|
362
|
-
try:
|
|
363
|
-
v2_views = {
|
|
364
|
-
"graph_nodes": "_v2_bak_graph_nodes",
|
|
365
|
-
"graph_clusters": "_v2_bak_graph_clusters",
|
|
366
|
-
"sessions": "_v2_bak_sessions",
|
|
367
|
-
"memory_events": "_v2_bak_memory_events",
|
|
368
|
-
"identity_patterns": "_v2_bak_identity_patterns",
|
|
369
|
-
"pattern_examples": "_v2_bak_pattern_examples",
|
|
370
|
-
"creator_metadata": "_v2_bak_creator_metadata",
|
|
371
|
-
"agent_registry": "_v2_bak_agent_registry",
|
|
372
|
-
}
|
|
373
|
-
view_count = 0
|
|
374
|
-
for view_name, source in v2_views.items():
|
|
375
|
-
try:
|
|
376
|
-
conn.execute(f'SELECT 1 FROM "{source}" LIMIT 1')
|
|
377
|
-
conn.execute(f'DROP VIEW IF EXISTS "{view_name}"')
|
|
378
|
-
conn.execute(f'CREATE VIEW "{view_name}" AS SELECT * FROM "{source}"')
|
|
379
|
-
view_count += 1
|
|
380
|
-
except Exception:
|
|
381
|
-
pass
|
|
382
|
-
conn.commit()
|
|
383
|
-
stats["steps"].append(f"Created {view_count} V2 compatibility views")
|
|
384
|
-
except Exception:
|
|
385
|
-
pass
|
|
386
|
-
|
|
387
|
-
conn.close()
|
|
388
|
-
stats["steps"].append("Created V3 schema")
|
|
389
|
-
|
|
390
|
-
# Step 5: Symlink (only if .claude-memory is not already a symlink)
|
|
391
|
-
if not self._v2_base.is_symlink():
|
|
392
|
-
# Rename original to .claude-memory-v2-original
|
|
393
|
-
original_backup = self._home / ".claude-memory-v2-original"
|
|
394
|
-
if not original_backup.exists():
|
|
395
|
-
self._v2_base.rename(original_backup)
|
|
396
|
-
try:
|
|
397
|
-
if sys.platform == "win32":
|
|
398
|
-
# On Windows, symlinks require admin privileges.
|
|
399
|
-
# Use a directory junction instead (works without elevation).
|
|
400
|
-
import subprocess
|
|
401
|
-
subprocess.run(
|
|
402
|
-
["cmd", "/c", "mklink", "/J",
|
|
403
|
-
str(self._v2_base), str(self._v3_base)],
|
|
404
|
-
check=True, capture_output=True,
|
|
405
|
-
)
|
|
406
|
-
else:
|
|
407
|
-
self._v2_base.symlink_to(self._v3_base)
|
|
408
|
-
stats["steps"].append(
|
|
409
|
-
"Created symlink: .claude-memory -> .superlocalmemory"
|
|
410
|
-
)
|
|
411
|
-
except (OSError, subprocess.CalledProcessError) as exc:
|
|
412
|
-
logger.warning(
|
|
413
|
-
"Could not create symlink/junction: %s. "
|
|
414
|
-
"V2 backward compatibility link skipped.", exc,
|
|
415
|
-
)
|
|
416
|
-
stats["steps"].append(
|
|
417
|
-
f"Symlink skipped (OS error: {exc})"
|
|
418
|
-
)
|
|
419
|
-
else:
|
|
420
|
-
stats["steps"].append("Symlink skipped (backup dir already exists)")
|
|
421
|
-
else:
|
|
422
|
-
stats["steps"].append("Symlink already exists")
|
|
423
|
-
|
|
424
|
-
stats["success"] = True
|
|
425
|
-
stats["v3_db"] = str(self._v3_db)
|
|
426
|
-
stats["backup_db"] = str(self._backup_db)
|
|
427
|
-
|
|
428
|
-
except Exception as exc:
|
|
429
|
-
stats["success"] = False
|
|
430
|
-
stats["error"] = str(exc)
|
|
431
|
-
logger.error("Migration failed: %s", exc)
|
|
432
|
-
|
|
433
|
-
return stats
|
|
434
|
-
|
|
435
|
-
def rollback(self) -> dict:
|
|
436
|
-
"""Rollback migration -- restore V2 state.
|
|
437
|
-
|
|
438
|
-
Returns dict with rollback stats.
|
|
439
|
-
"""
|
|
440
|
-
stats = {"steps": []}
|
|
441
|
-
|
|
442
|
-
try:
|
|
443
|
-
# Remove symlink
|
|
444
|
-
if self._v2_base.is_symlink():
|
|
445
|
-
self._v2_base.unlink()
|
|
446
|
-
stats["steps"].append("Removed symlink")
|
|
447
|
-
|
|
448
|
-
# Restore original V2 directory
|
|
449
|
-
original_backup = self._home / ".claude-memory-v2-original"
|
|
450
|
-
if original_backup.exists():
|
|
451
|
-
if not self._v2_base.exists():
|
|
452
|
-
original_backup.rename(self._v2_base)
|
|
453
|
-
stats["steps"].append("Restored original .claude-memory")
|
|
454
|
-
elif self._backup_db.exists():
|
|
455
|
-
# Restore from backup
|
|
456
|
-
self._v2_base.mkdir(parents=True, exist_ok=True)
|
|
457
|
-
shutil.copy2(str(self._backup_db), str(self._v2_db))
|
|
458
|
-
stats["steps"].append("Restored database from backup")
|
|
459
|
-
|
|
460
|
-
stats["success"] = True
|
|
461
|
-
|
|
462
|
-
except Exception as exc:
|
|
463
|
-
stats["success"] = False
|
|
464
|
-
stats["error"] = str(exc)
|
|
465
|
-
|
|
466
|
-
return stats
|