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,94 +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.4.22 — LLD-00 §1.3 + LLD-10
|
|
4
|
-
|
|
5
|
-
"""M009 — learning_model_state lineage columns (learning.db).
|
|
6
|
-
|
|
7
|
-
LLD-10 online retrain + shadow test + auto-rollback needs to track
|
|
8
|
-
three models concurrently: the live active model, the previously
|
|
9
|
-
active (for rollback), and a candidate under A/B shadow validation.
|
|
10
|
-
|
|
11
|
-
This migration extends ``learning_model_state`` (created by M002) with
|
|
12
|
-
six additive columns and two partial unique indexes that enforce
|
|
13
|
-
single-active + single-candidate per profile. All additive — no
|
|
14
|
-
existing behaviour changes.
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
from __future__ import annotations
|
|
18
|
-
|
|
19
|
-
import sqlite3
|
|
20
|
-
|
|
21
|
-
NAME = "M009_model_lineage"
|
|
22
|
-
DB_TARGET = "learning"
|
|
23
|
-
|
|
24
|
-
_REQUIRED_COLS = frozenset({
|
|
25
|
-
"is_previous", "is_rollback", "is_candidate",
|
|
26
|
-
"shadow_results_json", "promoted_at", "rollback_reason",
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
# Column definitions in application order: name → SQLite type fragment.
|
|
30
|
-
_COLUMN_ADDITIONS: tuple[tuple[str, str], ...] = (
|
|
31
|
-
("is_previous", "INTEGER DEFAULT 0"),
|
|
32
|
-
("is_rollback", "INTEGER DEFAULT 0"),
|
|
33
|
-
("is_candidate", "INTEGER DEFAULT 0"),
|
|
34
|
-
("shadow_results_json", "TEXT"),
|
|
35
|
-
("promoted_at", "TEXT"),
|
|
36
|
-
("rollback_reason", "TEXT"),
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def apply(conn: sqlite3.Connection) -> None:
|
|
41
|
-
"""Idempotent, column-by-column ALTER for crash-safe recovery.
|
|
42
|
-
|
|
43
|
-
Each column is only added when absent, so any committed prefix from a
|
|
44
|
-
prior interrupted run is handled transparently. Indexes use the standard
|
|
45
|
-
IF NOT EXISTS guard. Callers must not call commit/rollback — the runner
|
|
46
|
-
owns the transaction boundary.
|
|
47
|
-
"""
|
|
48
|
-
existing_cols: set[str] = {
|
|
49
|
-
r[1]
|
|
50
|
-
for r in conn.execute(
|
|
51
|
-
"PRAGMA table_info(learning_model_state)"
|
|
52
|
-
).fetchall()
|
|
53
|
-
}
|
|
54
|
-
for col_name, col_def in _COLUMN_ADDITIONS:
|
|
55
|
-
if col_name not in existing_cols:
|
|
56
|
-
conn.execute(
|
|
57
|
-
f"ALTER TABLE learning_model_state ADD COLUMN {col_name} {col_def}"
|
|
58
|
-
)
|
|
59
|
-
# Partial-index creation: IF NOT EXISTS guards idempotency.
|
|
60
|
-
conn.execute(
|
|
61
|
-
"CREATE UNIQUE INDEX IF NOT EXISTS idx_model_active_one "
|
|
62
|
-
"ON learning_model_state(profile_id) WHERE is_active=1"
|
|
63
|
-
)
|
|
64
|
-
conn.execute(
|
|
65
|
-
"CREATE UNIQUE INDEX IF NOT EXISTS idx_model_candidate_one "
|
|
66
|
-
"ON learning_model_state(profile_id) WHERE is_candidate=1"
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
71
|
-
try:
|
|
72
|
-
cols = {
|
|
73
|
-
r[1]
|
|
74
|
-
for r in conn.execute(
|
|
75
|
-
"PRAGMA table_info(learning_model_state)"
|
|
76
|
-
).fetchall()
|
|
77
|
-
}
|
|
78
|
-
except sqlite3.Error:
|
|
79
|
-
return False
|
|
80
|
-
return _REQUIRED_COLS.issubset(cols)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
DDL = """
|
|
84
|
-
ALTER TABLE learning_model_state ADD COLUMN is_previous INTEGER DEFAULT 0;
|
|
85
|
-
ALTER TABLE learning_model_state ADD COLUMN is_rollback INTEGER DEFAULT 0;
|
|
86
|
-
ALTER TABLE learning_model_state ADD COLUMN is_candidate INTEGER DEFAULT 0;
|
|
87
|
-
ALTER TABLE learning_model_state ADD COLUMN shadow_results_json TEXT;
|
|
88
|
-
ALTER TABLE learning_model_state ADD COLUMN promoted_at TEXT;
|
|
89
|
-
ALTER TABLE learning_model_state ADD COLUMN rollback_reason TEXT;
|
|
90
|
-
CREATE UNIQUE INDEX IF NOT EXISTS idx_model_active_one
|
|
91
|
-
ON learning_model_state(profile_id) WHERE is_active=1;
|
|
92
|
-
CREATE UNIQUE INDEX IF NOT EXISTS idx_model_candidate_one
|
|
93
|
-
ON learning_model_state(profile_id) WHERE is_candidate=1;
|
|
94
|
-
"""
|
|
@@ -1,80 +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.4.22 — LLD-00 §1.6 + LLD-11
|
|
4
|
-
|
|
5
|
-
"""M010 — evolution_config + evolution_llm_cost_log tables (learning.db).
|
|
6
|
-
|
|
7
|
-
LLD-11 skill evolution is opt-in by default (MASTER-PLAN D3). This
|
|
8
|
-
migration creates the two tables the evolution subsystem needs:
|
|
9
|
-
|
|
10
|
-
- ``evolution_config`` — per-profile feature flag + LLM backend choice.
|
|
11
|
-
The default row is created lazily by the installer; this migration
|
|
12
|
-
only creates the table so the installer's INSERT can land.
|
|
13
|
-
- ``evolution_llm_cost_log`` — every LLM call the evolution cycle makes
|
|
14
|
-
is logged here so the cost-accounting widget on the dashboard can
|
|
15
|
-
report tokens + USD spend.
|
|
16
|
-
|
|
17
|
-
Target DB: learning.db. Additive only.
|
|
18
|
-
|
|
19
|
-
SEC-L2 — ``cost_usd`` is IEEE-754 REAL (double). This loses precision
|
|
20
|
-
when summing thousands of sub-cent rows (rounding drift < 0.5 ¢ per
|
|
21
|
-
10k rows in practice). The schema is additive and therefore locked
|
|
22
|
-
for v3.4.22 — dashboards MUST compute aggregate cost as
|
|
23
|
-
``SUM(cost_usd)`` with explicit ``ROUND(x, 4)`` at display time, and
|
|
24
|
-
MUST NOT branch on sub-cent equality. A follow-on migration is
|
|
25
|
-
scheduled to switch the column to INTEGER millicents (see FINAL
|
|
26
|
-
board). The ``cost_usd >= 0`` non-negativity invariant is enforced
|
|
27
|
-
application-side by ``evolution.llm_dispatch._log_cost``.
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
from __future__ import annotations
|
|
31
|
-
|
|
32
|
-
import sqlite3
|
|
33
|
-
|
|
34
|
-
NAME = "M010_evolution_config"
|
|
35
|
-
DB_TARGET = "learning"
|
|
36
|
-
|
|
37
|
-
_REQUIRED_TABLES = frozenset({"evolution_config", "evolution_llm_cost_log"})
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
41
|
-
try:
|
|
42
|
-
names = {
|
|
43
|
-
r[0]
|
|
44
|
-
for r in conn.execute(
|
|
45
|
-
"SELECT name FROM sqlite_master WHERE type='table'"
|
|
46
|
-
).fetchall()
|
|
47
|
-
}
|
|
48
|
-
except sqlite3.Error:
|
|
49
|
-
return False
|
|
50
|
-
return _REQUIRED_TABLES.issubset(names)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
def repair(conn: sqlite3.Connection) -> None:
|
|
54
|
-
"""Restore additive Skill Evolution tables without replaying other migrations."""
|
|
55
|
-
conn.executescript(DDL)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
DDL = """
|
|
59
|
-
CREATE TABLE IF NOT EXISTS evolution_config (
|
|
60
|
-
profile_id TEXT PRIMARY KEY,
|
|
61
|
-
enabled INTEGER NOT NULL DEFAULT 0,
|
|
62
|
-
llm_backend TEXT NOT NULL DEFAULT 'haiku',
|
|
63
|
-
llm_model TEXT NOT NULL DEFAULT 'claude-haiku-4-5',
|
|
64
|
-
last_cycle_at TEXT,
|
|
65
|
-
cycles_this_week INTEGER NOT NULL DEFAULT 0,
|
|
66
|
-
disabled_until TEXT
|
|
67
|
-
);
|
|
68
|
-
CREATE TABLE IF NOT EXISTS evolution_llm_cost_log (
|
|
69
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
70
|
-
profile_id TEXT NOT NULL,
|
|
71
|
-
ts TEXT NOT NULL,
|
|
72
|
-
model TEXT NOT NULL,
|
|
73
|
-
tokens_in INTEGER NOT NULL DEFAULT 0,
|
|
74
|
-
tokens_out INTEGER NOT NULL DEFAULT 0,
|
|
75
|
-
cost_usd REAL NOT NULL DEFAULT 0.0,
|
|
76
|
-
cycle_id TEXT
|
|
77
|
-
);
|
|
78
|
-
CREATE INDEX IF NOT EXISTS idx_cost_profile_ts
|
|
79
|
-
ON evolution_llm_cost_log(profile_id, ts);
|
|
80
|
-
"""
|
|
@@ -1,87 +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.4.22 — LLD-00 §1.4 + LLD-12
|
|
4
|
-
|
|
5
|
-
"""M011 — archive + merge log (memory.db, DEFERRED).
|
|
6
|
-
|
|
7
|
-
LLD-12 real consolidation uses hnswlib to find near-duplicate atomic
|
|
8
|
-
facts, then archives or merges them reversibly. This migration:
|
|
9
|
-
|
|
10
|
-
- Extends ``atomic_facts`` with four lifecycle columns:
|
|
11
|
-
* ``archive_status`` — 'live' | 'archived' | 'merged'
|
|
12
|
-
* ``archive_reason`` — tag explaining why (cosine_dup, reward_gate, ...)
|
|
13
|
-
* ``merged_into`` — fact_id of the canonical survivor when merged
|
|
14
|
-
* ``retrieval_prior`` — reward-derived boost factor used by ranker
|
|
15
|
-
- Creates ``memory_archive`` — payload-preserving archive table.
|
|
16
|
-
Consolidation NEVER deletes from atomic_facts; it only flips status
|
|
17
|
-
and writes a payload snapshot here.
|
|
18
|
-
- Creates ``memory_merge_log`` — merge decisions are reversible via
|
|
19
|
-
``slm memory unmerge <merge_id>``. Records the canonical + duplicate
|
|
20
|
-
fact_ids plus the cosine + jaccard scores that drove the merge.
|
|
21
|
-
|
|
22
|
-
Deferred like M006 — ``atomic_facts`` is bootstrapped at engine init,
|
|
23
|
-
not by the migration runner. DEFERRED_MIGRATIONS runs after
|
|
24
|
-
``MemoryEngine.initialize()``.
|
|
25
|
-
"""
|
|
26
|
-
|
|
27
|
-
from __future__ import annotations
|
|
28
|
-
|
|
29
|
-
import sqlite3
|
|
30
|
-
|
|
31
|
-
NAME = "M011_archive_and_merge"
|
|
32
|
-
DB_TARGET = "memory"
|
|
33
|
-
|
|
34
|
-
_REQUIRED_ATOMIC = frozenset({
|
|
35
|
-
"archive_status", "archive_reason", "merged_into", "retrieval_prior",
|
|
36
|
-
})
|
|
37
|
-
_REQUIRED_TABLES = frozenset({"memory_archive", "memory_merge_log"})
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
41
|
-
try:
|
|
42
|
-
atomic_cols = {
|
|
43
|
-
r[1]
|
|
44
|
-
for r in conn.execute(
|
|
45
|
-
"PRAGMA table_info(atomic_facts)"
|
|
46
|
-
).fetchall()
|
|
47
|
-
}
|
|
48
|
-
names = {
|
|
49
|
-
r[0]
|
|
50
|
-
for r in conn.execute(
|
|
51
|
-
"SELECT name FROM sqlite_master WHERE type='table'"
|
|
52
|
-
).fetchall()
|
|
53
|
-
}
|
|
54
|
-
except sqlite3.Error:
|
|
55
|
-
return False
|
|
56
|
-
return _REQUIRED_ATOMIC.issubset(atomic_cols) and _REQUIRED_TABLES.issubset(names)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
DDL = """
|
|
60
|
-
ALTER TABLE atomic_facts ADD COLUMN archive_status TEXT DEFAULT 'live';
|
|
61
|
-
ALTER TABLE atomic_facts ADD COLUMN archive_reason TEXT;
|
|
62
|
-
ALTER TABLE atomic_facts ADD COLUMN merged_into TEXT;
|
|
63
|
-
ALTER TABLE atomic_facts ADD COLUMN retrieval_prior REAL DEFAULT 0.0;
|
|
64
|
-
|
|
65
|
-
CREATE TABLE IF NOT EXISTS memory_archive (
|
|
66
|
-
archive_id TEXT PRIMARY KEY,
|
|
67
|
-
fact_id TEXT NOT NULL,
|
|
68
|
-
profile_id TEXT NOT NULL,
|
|
69
|
-
payload_json TEXT NOT NULL,
|
|
70
|
-
archived_at TEXT NOT NULL,
|
|
71
|
-
reason TEXT NOT NULL
|
|
72
|
-
);
|
|
73
|
-
CREATE INDEX IF NOT EXISTS idx_archive_profile
|
|
74
|
-
ON memory_archive(profile_id, archived_at);
|
|
75
|
-
|
|
76
|
-
CREATE TABLE IF NOT EXISTS memory_merge_log (
|
|
77
|
-
merge_id TEXT PRIMARY KEY,
|
|
78
|
-
profile_id TEXT NOT NULL,
|
|
79
|
-
canonical_fact_id TEXT NOT NULL,
|
|
80
|
-
merged_fact_id TEXT NOT NULL,
|
|
81
|
-
cosine_sim REAL,
|
|
82
|
-
entity_jaccard REAL,
|
|
83
|
-
merged_at TEXT NOT NULL,
|
|
84
|
-
reversible INTEGER DEFAULT 1
|
|
85
|
-
);
|
|
86
|
-
CREATE INDEX IF NOT EXISTS idx_merge_profile ON memory_merge_log(profile_id);
|
|
87
|
-
"""
|
|
@@ -1,72 +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.4.22
|
|
4
|
-
|
|
5
|
-
"""M012 — shadow_observations table (learning.db).
|
|
6
|
-
|
|
7
|
-
Persists the paired NDCG@10 observations accumulated by
|
|
8
|
-
``ShadowTest`` so a daemon restart during an in-flight shadow test
|
|
9
|
-
does NOT throw away the 6-hour observation window. Without this
|
|
10
|
-
table the candidate_id was re-attached on restart (Stage 9 W4
|
|
11
|
-
H-ARC-01) but the observation list restarted from zero.
|
|
12
|
-
|
|
13
|
-
Schema (additive only; no existing tables touched):
|
|
14
|
-
|
|
15
|
-
shadow_observations(
|
|
16
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
17
|
-
profile_id TEXT NOT NULL,
|
|
18
|
-
candidate_id INTEGER NOT NULL,
|
|
19
|
-
query_id TEXT NOT NULL,
|
|
20
|
-
arm TEXT NOT NULL CHECK (arm IN ('active','candidate')),
|
|
21
|
-
ndcg_at_10 REAL NOT NULL,
|
|
22
|
-
recorded_at TEXT NOT NULL,
|
|
23
|
-
UNIQUE(candidate_id, query_id, arm)
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
The ``UNIQUE(candidate_id, query_id, arm)`` constraint means a
|
|
27
|
-
query_id is scored at most once per arm per candidate — if the
|
|
28
|
-
daemon crashes mid-write and restarts, re-ingesting the same
|
|
29
|
-
observation is an INSERT-OR-IGNORE no-op.
|
|
30
|
-
|
|
31
|
-
Author: Varun Pratap Bhardwaj / Qualixar
|
|
32
|
-
"""
|
|
33
|
-
|
|
34
|
-
from __future__ import annotations
|
|
35
|
-
|
|
36
|
-
import sqlite3
|
|
37
|
-
|
|
38
|
-
NAME = "M012_shadow_observations"
|
|
39
|
-
DB_TARGET = "learning"
|
|
40
|
-
|
|
41
|
-
_REQUIRED_TABLES = frozenset({"shadow_observations"})
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
45
|
-
try:
|
|
46
|
-
names = {
|
|
47
|
-
r[0]
|
|
48
|
-
for r in conn.execute(
|
|
49
|
-
"SELECT name FROM sqlite_master WHERE type='table'"
|
|
50
|
-
).fetchall()
|
|
51
|
-
}
|
|
52
|
-
except sqlite3.Error:
|
|
53
|
-
return False
|
|
54
|
-
return _REQUIRED_TABLES.issubset(names)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
DDL = """
|
|
58
|
-
CREATE TABLE IF NOT EXISTS shadow_observations (
|
|
59
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
60
|
-
profile_id TEXT NOT NULL,
|
|
61
|
-
candidate_id INTEGER NOT NULL,
|
|
62
|
-
query_id TEXT NOT NULL,
|
|
63
|
-
arm TEXT NOT NULL,
|
|
64
|
-
ndcg_at_10 REAL NOT NULL,
|
|
65
|
-
recorded_at TEXT NOT NULL,
|
|
66
|
-
UNIQUE(candidate_id, query_id, arm)
|
|
67
|
-
);
|
|
68
|
-
CREATE INDEX IF NOT EXISTS idx_shadow_obs_candidate
|
|
69
|
-
ON shadow_observations(candidate_id, recorded_at);
|
|
70
|
-
CREATE INDEX IF NOT EXISTS idx_shadow_obs_profile
|
|
71
|
-
ON shadow_observations(profile_id, recorded_at);
|
|
72
|
-
"""
|
|
@@ -1,55 +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.4.22
|
|
4
|
-
|
|
5
|
-
"""M013 — bi-temporal columns on ``atomic_facts`` (memory.db, deferred).
|
|
6
|
-
|
|
7
|
-
Adds two NULLable columns that let SLM capture fact validity windows
|
|
8
|
-
WITHOUT changing the retrieval path today. Wiring the retrieval
|
|
9
|
-
consumer is a later-cycle item; what we ship in v3.4.22 is the
|
|
10
|
-
data-capture surface so existing user memories start accumulating
|
|
11
|
-
temporal metadata on every new fact.
|
|
12
|
-
|
|
13
|
-
Columns (both nullable, no default so existing rows stay NULL):
|
|
14
|
-
|
|
15
|
-
valid_from TEXT — ISO-8601 instant from which the fact is
|
|
16
|
-
considered valid. NULL ⇒ "valid since
|
|
17
|
-
creation" (the current default semantics).
|
|
18
|
-
valid_until TEXT — ISO-8601 instant after which the fact is
|
|
19
|
-
considered superseded. NULL ⇒ still valid.
|
|
20
|
-
|
|
21
|
-
Deferred like M006 and M011 because ``atomic_facts`` is bootstrapped
|
|
22
|
-
at engine init, not at migration time. Daemon lifespan calls
|
|
23
|
-
``apply_deferred`` right after engine init so these columns materialise
|
|
24
|
-
on first boot after upgrade.
|
|
25
|
-
|
|
26
|
-
Author: Varun Pratap Bhardwaj / Qualixar
|
|
27
|
-
"""
|
|
28
|
-
|
|
29
|
-
from __future__ import annotations
|
|
30
|
-
|
|
31
|
-
import sqlite3
|
|
32
|
-
|
|
33
|
-
NAME = "M013_bi_temporal_columns"
|
|
34
|
-
DB_TARGET = "memory"
|
|
35
|
-
|
|
36
|
-
_REQUIRED_COLS = frozenset({"valid_from", "valid_until"})
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
40
|
-
try:
|
|
41
|
-
cols = {
|
|
42
|
-
r[1]
|
|
43
|
-
for r in conn.execute(
|
|
44
|
-
"PRAGMA table_info(atomic_facts)"
|
|
45
|
-
).fetchall()
|
|
46
|
-
}
|
|
47
|
-
except sqlite3.Error:
|
|
48
|
-
return False
|
|
49
|
-
return _REQUIRED_COLS.issubset(cols)
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
DDL = """
|
|
53
|
-
ALTER TABLE atomic_facts ADD COLUMN valid_from TEXT;
|
|
54
|
-
ALTER TABLE atomic_facts ADD COLUMN valid_until TEXT;
|
|
55
|
-
"""
|
|
@@ -1,45 +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.4.5 — Scale-Ready
|
|
4
|
-
|
|
5
|
-
"""M014 — v3.4.5 Scale-Ready schema extensions (memory.db).
|
|
6
|
-
|
|
7
|
-
Adds:
|
|
8
|
-
- atomic_facts.access_count_30d: rolling 30-day access window
|
|
9
|
-
- idx_graph_edges_source_id / idx_graph_edges_target_id: bulk import perf (F-20)
|
|
10
|
-
|
|
11
|
-
Idempotent: ALTER TABLE ADD COLUMN with DEFAULT, CREATE INDEX IF NOT EXISTS.
|
|
12
|
-
Verify checks for access_count_30d column presence on atomic_facts.
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
from __future__ import annotations
|
|
16
|
-
|
|
17
|
-
import sqlite3
|
|
18
|
-
|
|
19
|
-
NAME = "M014_v345_scale_ready"
|
|
20
|
-
DB_TARGET = "memory"
|
|
21
|
-
|
|
22
|
-
_REQUIRED_COLS = frozenset({"access_count_30d"})
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
26
|
-
try:
|
|
27
|
-
cols = {
|
|
28
|
-
r[1]
|
|
29
|
-
for r in conn.execute(
|
|
30
|
-
"PRAGMA table_info(atomic_facts)"
|
|
31
|
-
).fetchall()
|
|
32
|
-
}
|
|
33
|
-
except sqlite3.Error:
|
|
34
|
-
return False
|
|
35
|
-
return _REQUIRED_COLS.issubset(cols)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
DDL = """
|
|
39
|
-
ALTER TABLE atomic_facts ADD COLUMN access_count_30d INTEGER DEFAULT 0;
|
|
40
|
-
|
|
41
|
-
CREATE INDEX IF NOT EXISTS idx_graph_edges_source_id
|
|
42
|
-
ON graph_edges(source_id);
|
|
43
|
-
CREATE INDEX IF NOT EXISTS idx_graph_edges_target_id
|
|
44
|
-
ON graph_edges(target_id);
|
|
45
|
-
"""
|
|
@@ -1,58 +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.4.65 — Context Injection v2
|
|
4
|
-
|
|
5
|
-
"""M015 — add `pinned` column to atomic_facts (v3.4.65, core-memory explicit pins).
|
|
6
|
-
|
|
7
|
-
Additive only — ALTER TABLE ADD COLUMN, default 0. No data loss, no type
|
|
8
|
-
changes. Idempotent via verify() + migration_log. Mirrors M001 pattern.
|
|
9
|
-
|
|
10
|
-
Backward-compat: old code that doesn't know about the column simply gets
|
|
11
|
-
DEFAULT 0 on SELECT *, which is the safe "not-pinned" state.
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
from __future__ import annotations
|
|
15
|
-
|
|
16
|
-
import sqlite3
|
|
17
|
-
|
|
18
|
-
NAME = "M015_add_pinned_column"
|
|
19
|
-
DB_TARGET = "memory"
|
|
20
|
-
|
|
21
|
-
_REQUIRED_COLS = frozenset({"pinned"})
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
25
|
-
try:
|
|
26
|
-
cols = {r[1] for r in conn.execute(
|
|
27
|
-
"PRAGMA table_info(atomic_facts)"
|
|
28
|
-
).fetchall()}
|
|
29
|
-
except sqlite3.Error:
|
|
30
|
-
return False
|
|
31
|
-
return _REQUIRED_COLS <= cols
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
DDL = """
|
|
35
|
-
BEGIN IMMEDIATE;
|
|
36
|
-
ALTER TABLE atomic_facts ADD COLUMN pinned INTEGER NOT NULL DEFAULT 0;
|
|
37
|
-
CREATE INDEX IF NOT EXISTS idx_facts_pinned
|
|
38
|
-
ON atomic_facts(profile_id, pinned);
|
|
39
|
-
COMMIT;
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def apply(conn: sqlite3.Connection) -> None:
|
|
44
|
-
"""Apply M015 safely when a fresh schema already contains ``pinned``.
|
|
45
|
-
|
|
46
|
-
New installations are created from the current base schema, whereas
|
|
47
|
-
upgrades need the additive ALTER. SQLite has no ``ADD COLUMN IF NOT
|
|
48
|
-
EXISTS``, so the old static migration failed on fresh databases.
|
|
49
|
-
"""
|
|
50
|
-
cols = {row[1] for row in conn.execute("PRAGMA table_info(atomic_facts)")}
|
|
51
|
-
if "pinned" not in cols:
|
|
52
|
-
conn.execute(
|
|
53
|
-
"ALTER TABLE atomic_facts ADD COLUMN pinned INTEGER NOT NULL DEFAULT 0"
|
|
54
|
-
)
|
|
55
|
-
conn.execute(
|
|
56
|
-
"CREATE INDEX IF NOT EXISTS idx_facts_pinned "
|
|
57
|
-
"ON atomic_facts(profile_id, pinned)"
|
|
58
|
-
)
|
|
@@ -1,120 +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.6.15
|
|
4
|
-
|
|
5
|
-
"""M016 — scope and shared_with columns on core tables (memory.db, deferred).
|
|
6
|
-
|
|
7
|
-
Adds two columns to each of the 5 core tables for multi-scope memory support:
|
|
8
|
-
|
|
9
|
-
scope TEXT NOT NULL DEFAULT 'personal' — personal | global
|
|
10
|
-
shared_with TEXT — JSON array of profile_ids
|
|
11
|
-
|
|
12
|
-
Existing data retains scope='personal' (backward compatible). Indexes on
|
|
13
|
-
``scope`` and ``(profile_id, scope)`` speed up scope-filtered queries and are
|
|
14
|
-
created HERE (not in schema.create_all_tables) so an upgrading DB whose tables
|
|
15
|
-
predate the scope column doesn't hit "no such column: scope" when the boot-time
|
|
16
|
-
index DDL runs before this migration.
|
|
17
|
-
|
|
18
|
-
Applied via a conditional apply(conn) rather than static DDL because SQLite has
|
|
19
|
-
no ``ADD COLUMN IF NOT EXISTS``: a static ALTER fails on a fresh install (the
|
|
20
|
-
column already exists from create_all_tables) and on a deferred boot where a
|
|
21
|
-
table isn't created yet. apply() guards every step so it is idempotent and
|
|
22
|
-
tolerant of partial/missing tables.
|
|
23
|
-
|
|
24
|
-
Deferred like M006, M011, and M013 because the core tables are bootstrapped
|
|
25
|
-
at engine init, not at migration time. Daemon lifespan calls ``apply_deferred``
|
|
26
|
-
right after engine init so these columns materialise on first boot after upgrade.
|
|
27
|
-
|
|
28
|
-
Author: Varun Pratap Bhardwaj / Qualixar
|
|
29
|
-
"""
|
|
30
|
-
|
|
31
|
-
from __future__ import annotations
|
|
32
|
-
|
|
33
|
-
import sqlite3
|
|
34
|
-
|
|
35
|
-
NAME = "M016_add_scope_support"
|
|
36
|
-
DB_TARGET = "memory"
|
|
37
|
-
|
|
38
|
-
TABLES = [
|
|
39
|
-
"memories",
|
|
40
|
-
"atomic_facts",
|
|
41
|
-
"canonical_entities",
|
|
42
|
-
"graph_edges",
|
|
43
|
-
"temporal_events",
|
|
44
|
-
]
|
|
45
|
-
|
|
46
|
-
# Retained for the migration log's drift hash and as documentation of intent.
|
|
47
|
-
# apply() below is the authoritative, idempotent executor.
|
|
48
|
-
DDL = ";".join(
|
|
49
|
-
[f"ALTER TABLE {t} ADD COLUMN scope TEXT NOT NULL DEFAULT 'personal'" for t in TABLES]
|
|
50
|
-
+ [f"ALTER TABLE {t} ADD COLUMN shared_with TEXT" for t in TABLES]
|
|
51
|
-
+ [f"CREATE INDEX IF NOT EXISTS idx_{t}_scope ON {t}(scope)" for t in TABLES]
|
|
52
|
-
+ [
|
|
53
|
-
f"CREATE INDEX IF NOT EXISTS idx_{t}_profile_scope ON {t}(profile_id, scope)"
|
|
54
|
-
for t in TABLES
|
|
55
|
-
]
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def _table_exists(conn: sqlite3.Connection, table: str) -> bool:
|
|
60
|
-
return conn.execute(
|
|
61
|
-
"SELECT 1 FROM sqlite_master WHERE type='table' AND name=?", (table,)
|
|
62
|
-
).fetchone() is not None
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def _column_names(conn: sqlite3.Connection, table: str) -> set[str]:
|
|
66
|
-
return {r[1] for r in conn.execute(f"PRAGMA table_info({table})").fetchall()}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
def apply(conn: sqlite3.Connection) -> None:
|
|
70
|
-
"""Idempotently add scope/shared_with columns + indexes to every core table.
|
|
71
|
-
|
|
72
|
-
Per table: skip if the table doesn't exist yet; add each column only if
|
|
73
|
-
missing (SQLite has no ADD COLUMN IF NOT EXISTS); create indexes with
|
|
74
|
-
IF NOT EXISTS. Safe to run on fresh installs (columns already present),
|
|
75
|
-
upgrades (columns missing), and partial/repeat applies.
|
|
76
|
-
"""
|
|
77
|
-
for t in TABLES:
|
|
78
|
-
if not _table_exists(conn, t):
|
|
79
|
-
continue
|
|
80
|
-
cols = _column_names(conn, t)
|
|
81
|
-
if "scope" not in cols:
|
|
82
|
-
conn.execute(
|
|
83
|
-
f"ALTER TABLE {t} ADD COLUMN scope TEXT NOT NULL DEFAULT 'personal'"
|
|
84
|
-
)
|
|
85
|
-
if "shared_with" not in cols:
|
|
86
|
-
conn.execute(f"ALTER TABLE {t} ADD COLUMN shared_with TEXT")
|
|
87
|
-
conn.execute(f"CREATE INDEX IF NOT EXISTS idx_{t}_scope ON {t}(scope)")
|
|
88
|
-
conn.execute(
|
|
89
|
-
f"CREATE INDEX IF NOT EXISTS idx_{t}_profile_scope ON {t}(profile_id, scope)"
|
|
90
|
-
)
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
94
|
-
"""Applied only when atomic_facts has the scope column AND its scope index.
|
|
95
|
-
|
|
96
|
-
Checking the index (not just the column) ensures apply() still runs on a
|
|
97
|
-
fresh install where create_all_tables created the column but not the index.
|
|
98
|
-
"""
|
|
99
|
-
# v3.6.15: verify EVERY core table apply() touches — not just atomic_facts.
|
|
100
|
-
# A partial apply (scope added to atomic_facts but not the other tables) must
|
|
101
|
-
# NOT false-pass, or M016 is marked done and the remaining tables are left
|
|
102
|
-
# permanently without the scope column. Absent tables are skipped, matching
|
|
103
|
-
# apply()'s own skip-missing-table contract.
|
|
104
|
-
for t in TABLES:
|
|
105
|
-
try:
|
|
106
|
-
info = conn.execute(f"PRAGMA table_info({t})").fetchall()
|
|
107
|
-
except sqlite3.Error:
|
|
108
|
-
return False
|
|
109
|
-
if not info:
|
|
110
|
-
continue # table absent on this DB — apply() skips it too
|
|
111
|
-
cols = {r[1] for r in info}
|
|
112
|
-
if "scope" not in cols:
|
|
113
|
-
return False
|
|
114
|
-
idx = conn.execute(
|
|
115
|
-
"SELECT 1 FROM sqlite_master WHERE type='index' AND name=?",
|
|
116
|
-
(f"idx_{t}_scope",),
|
|
117
|
-
).fetchone()
|
|
118
|
-
if idx is None:
|
|
119
|
-
return False
|
|
120
|
-
return True
|