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,356 +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
|
-
"""Fisher-Rao geodesic metric with Bayesian variance update.
|
|
6
|
-
|
|
7
|
-
Information-geometric similarity on the statistical manifold of diagonal
|
|
8
|
-
Gaussians. Two embeddings with the same mean but different uncertainty
|
|
9
|
-
have zero cosine distance but nonzero Fisher distance --- this is the
|
|
10
|
-
core insight that differentiates Fisher-Rao from cosine similarity.
|
|
11
|
-
|
|
12
|
-
Geodesic distance (Atkinson & Mitchell 1981, Pinele et al. 2020):
|
|
13
|
-
|
|
14
|
-
Univariate component i:
|
|
15
|
-
delta_i = ((mu1_i - mu2_i)^2 + 2*(sigma1_i - sigma2_i)^2)
|
|
16
|
-
/ (4 * sigma1_i * sigma2_i)
|
|
17
|
-
d_i = sqrt(2) * arccosh(1 + delta_i)
|
|
18
|
-
|
|
19
|
-
Diagonal multivariate (product-manifold decomposition):
|
|
20
|
-
d_FR(p, q) = sqrt( sum_i d_i^2 )
|
|
21
|
-
|
|
22
|
-
Bayesian variance update (added in v3.5):
|
|
23
|
-
|
|
24
|
-
V1 bug: query always received UNIFORM variance, so Fisher degenerated
|
|
25
|
-
to a monotonic transform of cosine. FIX: every fact maintains its own
|
|
26
|
-
variance vector that narrows on each observation.
|
|
27
|
-
|
|
28
|
-
new_var_i = 1 / (1/old_var_i + 1/obs_var_i)
|
|
29
|
-
|
|
30
|
-
Multiple consistent observations reduce variance, increasing confidence.
|
|
31
|
-
This gives Fisher-Rao a genuine ranking advantage over cosine: well-
|
|
32
|
-
confirmed memories have tighter distributions and score higher when the
|
|
33
|
-
query matches.
|
|
34
|
-
|
|
35
|
-
References:
|
|
36
|
-
Rao C R (1945). Information and the accuracy attainable in the
|
|
37
|
-
estimation of statistical parameters. Bull. Calcutta Math. Soc.
|
|
38
|
-
Atkinson C & Mitchell A (1981). Rao's distance measure.
|
|
39
|
-
Sankhya: The Indian Journal of Statistics, Series A.
|
|
40
|
-
Pinele J, Strapasson J E & Costa S I R (2020). The Fisher-Rao
|
|
41
|
-
distance between multivariate normal distributions: special
|
|
42
|
-
cases, bounds and applications. Entropy 22(4):404.
|
|
43
|
-
|
|
44
|
-
Part of Qualixar | Author: Varun Pratap Bhardwaj
|
|
45
|
-
License: AGPL-3.0-or-later
|
|
46
|
-
"""
|
|
47
|
-
|
|
48
|
-
from __future__ import annotations
|
|
49
|
-
|
|
50
|
-
import math
|
|
51
|
-
|
|
52
|
-
import numpy as np
|
|
53
|
-
|
|
54
|
-
# ---------------------------------------------------------------------------
|
|
55
|
-
# Constants
|
|
56
|
-
# ---------------------------------------------------------------------------
|
|
57
|
-
|
|
58
|
-
_VARIANCE_FLOOR: float = 0.05 # Minimum per-dimension variance (40x dynamic range)
|
|
59
|
-
_VARIANCE_CEIL: float = 2.0 # Maximum per-dimension variance (initial uncertainty)
|
|
60
|
-
_DEFAULT_TEMPERATURE: float = 15.0
|
|
61
|
-
_SMALL_DELTA_THRESHOLD: float = 1e-7
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
# ---------------------------------------------------------------------------
|
|
65
|
-
# Public API
|
|
66
|
-
# ---------------------------------------------------------------------------
|
|
67
|
-
|
|
68
|
-
class FisherRaoMetric:
|
|
69
|
-
"""Fisher-Rao geodesic metric with Bayesian variance tracking.
|
|
70
|
-
|
|
71
|
-
Each fact is modelled as a diagonal Gaussian N(mu, diag(sigma^2)).
|
|
72
|
-
Distance is the Fisher-Rao geodesic on this statistical manifold.
|
|
73
|
-
Variance starts high (uncertain) and NARROWS on repeated access via
|
|
74
|
-
Bayesian update, giving well-confirmed memories a ranking advantage.
|
|
75
|
-
|
|
76
|
-
Attributes:
|
|
77
|
-
temperature: Softmax scaling for similarity conversion.
|
|
78
|
-
"""
|
|
79
|
-
|
|
80
|
-
__slots__ = ("temperature",)
|
|
81
|
-
|
|
82
|
-
def __init__(self, temperature: float = _DEFAULT_TEMPERATURE) -> None:
|
|
83
|
-
if temperature <= 0:
|
|
84
|
-
raise ValueError(f"temperature must be positive, got {temperature}")
|
|
85
|
-
self.temperature = temperature
|
|
86
|
-
|
|
87
|
-
# ------------------------------------------------------------------
|
|
88
|
-
# Parameter derivation
|
|
89
|
-
# ------------------------------------------------------------------
|
|
90
|
-
|
|
91
|
-
def compute_params(
|
|
92
|
-
self,
|
|
93
|
-
embedding: list[float],
|
|
94
|
-
) -> tuple[list[float], list[float]]:
|
|
95
|
-
"""Derive Fisher parameters (mean, variance) from a raw embedding.
|
|
96
|
-
|
|
97
|
-
Mean is the L2-normalised embedding. Variance is content-derived
|
|
98
|
-
and *heterogeneous*: dimensions with strong signal get low variance,
|
|
99
|
-
weak-signal dimensions get high variance.
|
|
100
|
-
|
|
101
|
-
Mapping: ``var_i = CEIL - (CEIL - FLOOR) * |normed_i| / max_abs``
|
|
102
|
-
Strong signal (large |normed_i|) -> low variance (high confidence).
|
|
103
|
-
|
|
104
|
-
Args:
|
|
105
|
-
embedding: Raw embedding vector, any dimensionality.
|
|
106
|
-
|
|
107
|
-
Returns:
|
|
108
|
-
(mean, variance) as plain Python lists, same length as input.
|
|
109
|
-
"""
|
|
110
|
-
arr = np.asarray(embedding, dtype=np.float64)
|
|
111
|
-
norm = np.linalg.norm(arr)
|
|
112
|
-
if norm < 1e-12:
|
|
113
|
-
mean = np.zeros_like(arr)
|
|
114
|
-
variance = np.full_like(arr, _VARIANCE_CEIL)
|
|
115
|
-
return mean.tolist(), variance.tolist()
|
|
116
|
-
|
|
117
|
-
mean = arr / norm
|
|
118
|
-
|
|
119
|
-
abs_vals = np.abs(mean)
|
|
120
|
-
max_abs = float(np.max(abs_vals))
|
|
121
|
-
if max_abs < 1e-12:
|
|
122
|
-
max_abs = 1.0
|
|
123
|
-
|
|
124
|
-
normalised_signal = abs_vals / max_abs # in [0, 1]
|
|
125
|
-
variance = _VARIANCE_CEIL - (_VARIANCE_CEIL - _VARIANCE_FLOOR) * normalised_signal
|
|
126
|
-
variance = np.clip(variance, _VARIANCE_FLOOR, _VARIANCE_CEIL)
|
|
127
|
-
|
|
128
|
-
return mean.tolist(), variance.tolist()
|
|
129
|
-
|
|
130
|
-
# ------------------------------------------------------------------
|
|
131
|
-
# Geodesic distance
|
|
132
|
-
# ------------------------------------------------------------------
|
|
133
|
-
|
|
134
|
-
def distance(
|
|
135
|
-
self,
|
|
136
|
-
mean_a: list[float],
|
|
137
|
-
var_a: list[float],
|
|
138
|
-
mean_b: list[float],
|
|
139
|
-
var_b: list[float],
|
|
140
|
-
) -> float:
|
|
141
|
-
"""Exact Fisher-Rao geodesic distance between diagonal Gaussians.
|
|
142
|
-
|
|
143
|
-
Uses Atkinson & Mitchell (1981) per-component closed form with
|
|
144
|
-
Pinele et al. (2020) product-manifold decomposition.
|
|
145
|
-
|
|
146
|
-
Args:
|
|
147
|
-
mean_a: Mean of distribution A.
|
|
148
|
-
var_a: Per-dimension variance of A (strictly positive).
|
|
149
|
-
mean_b: Mean of distribution B.
|
|
150
|
-
var_b: Per-dimension variance of B (strictly positive).
|
|
151
|
-
|
|
152
|
-
Returns:
|
|
153
|
-
Non-negative geodesic distance.
|
|
154
|
-
|
|
155
|
-
Raises:
|
|
156
|
-
ValueError: On NaN, non-positive variance, or length mismatch.
|
|
157
|
-
"""
|
|
158
|
-
mu1 = np.asarray(mean_a, dtype=np.float64)
|
|
159
|
-
sig1 = np.asarray(var_a, dtype=np.float64)
|
|
160
|
-
mu2 = np.asarray(mean_b, dtype=np.float64)
|
|
161
|
-
sig2 = np.asarray(var_b, dtype=np.float64)
|
|
162
|
-
|
|
163
|
-
_validate(mu1, sig1, mu2, sig2)
|
|
164
|
-
|
|
165
|
-
# Per-component: delta_i = ((mu1-mu2)^2 + 2*(sigma1-sigma2)^2) / (4*s1*s2)
|
|
166
|
-
mu_diff_sq = (mu1 - mu2) ** 2
|
|
167
|
-
sig_diff_sq = (sig1 - sig2) ** 2
|
|
168
|
-
product = sig1 * sig2
|
|
169
|
-
|
|
170
|
-
delta = (mu_diff_sq + 2.0 * sig_diff_sq) / (4.0 * product)
|
|
171
|
-
|
|
172
|
-
# Per-component squared distance: 2 * arccosh(1 + delta_i)^2
|
|
173
|
-
acosh_vals = _stable_arccosh_1p_vec(delta)
|
|
174
|
-
total_dist_sq = float(np.sum(2.0 * acosh_vals ** 2))
|
|
175
|
-
|
|
176
|
-
return math.sqrt(max(total_dist_sq, 0.0))
|
|
177
|
-
|
|
178
|
-
# ------------------------------------------------------------------
|
|
179
|
-
# Similarity (exponential kernel)
|
|
180
|
-
# ------------------------------------------------------------------
|
|
181
|
-
|
|
182
|
-
def similarity(
|
|
183
|
-
self,
|
|
184
|
-
mean_a: list[float],
|
|
185
|
-
var_a: list[float],
|
|
186
|
-
mean_b: list[float],
|
|
187
|
-
var_b: list[float],
|
|
188
|
-
) -> float:
|
|
189
|
-
"""Convert Fisher-Rao distance to similarity in [0, 1].
|
|
190
|
-
|
|
191
|
-
sim = exp(-distance / temperature)
|
|
192
|
-
|
|
193
|
-
Args:
|
|
194
|
-
mean_a: Mean of distribution A.
|
|
195
|
-
var_a: Per-dimension variance of A.
|
|
196
|
-
mean_b: Mean of distribution B.
|
|
197
|
-
var_b: Per-dimension variance of B.
|
|
198
|
-
|
|
199
|
-
Returns:
|
|
200
|
-
Similarity in [0, 1]. 1 = identical, 0 = maximally different.
|
|
201
|
-
"""
|
|
202
|
-
d = self.distance(mean_a, var_a, mean_b, var_b)
|
|
203
|
-
return float(np.exp(-d / self.temperature))
|
|
204
|
-
|
|
205
|
-
# ------------------------------------------------------------------
|
|
206
|
-
# Bayesian variance update (THE key V1 fix)
|
|
207
|
-
# ------------------------------------------------------------------
|
|
208
|
-
|
|
209
|
-
def bayesian_update(
|
|
210
|
-
self,
|
|
211
|
-
old_var: list[float],
|
|
212
|
-
observation_var: list[float],
|
|
213
|
-
) -> list[float]:
|
|
214
|
-
"""Bayesian precision-additive variance update.
|
|
215
|
-
|
|
216
|
-
Each observation tightens the posterior variance:
|
|
217
|
-
|
|
218
|
-
1/new_var_i = 1/old_var_i + 1/obs_var_i
|
|
219
|
-
|
|
220
|
-
This is the standard conjugate update for a Gaussian likelihood
|
|
221
|
-
with known mean and unknown precision. After *k* observations
|
|
222
|
-
with identical variance sigma^2:
|
|
223
|
-
|
|
224
|
-
var_k = sigma^2 / k
|
|
225
|
-
|
|
226
|
-
So variance shrinks as 1/k --- giving well-confirmed memories
|
|
227
|
-
significantly tighter distributions and higher Fisher similarity
|
|
228
|
-
to matching queries.
|
|
229
|
-
|
|
230
|
-
Args:
|
|
231
|
-
old_var: Current per-dimension variance.
|
|
232
|
-
observation_var: Variance of the new observation (derived from
|
|
233
|
-
the embedding of the confirming content).
|
|
234
|
-
|
|
235
|
-
Returns:
|
|
236
|
-
Updated variance (strictly within [FLOOR, CEIL]).
|
|
237
|
-
"""
|
|
238
|
-
old = np.asarray(old_var, dtype=np.float64)
|
|
239
|
-
obs = np.asarray(observation_var, dtype=np.float64)
|
|
240
|
-
|
|
241
|
-
if old.shape != obs.shape:
|
|
242
|
-
raise ValueError(
|
|
243
|
-
f"Variance shape mismatch: {old.shape} vs {obs.shape}"
|
|
244
|
-
)
|
|
245
|
-
|
|
246
|
-
# Clamp inputs to valid range before update
|
|
247
|
-
old = np.clip(old, _VARIANCE_FLOOR, _VARIANCE_CEIL)
|
|
248
|
-
obs = np.clip(obs, _VARIANCE_FLOOR, _VARIANCE_CEIL)
|
|
249
|
-
|
|
250
|
-
# Precision-additive update: 1/new = 1/old + 1/obs
|
|
251
|
-
new_precision = (1.0 / old) + (1.0 / obs)
|
|
252
|
-
new_var = 1.0 / new_precision
|
|
253
|
-
|
|
254
|
-
new_var = np.clip(new_var, _VARIANCE_FLOOR, _VARIANCE_CEIL)
|
|
255
|
-
return new_var.tolist()
|
|
256
|
-
|
|
257
|
-
# ------------------------------------------------------------------
|
|
258
|
-
# Adaptive temperature
|
|
259
|
-
# ------------------------------------------------------------------
|
|
260
|
-
|
|
261
|
-
def adaptive_temperature(
|
|
262
|
-
self,
|
|
263
|
-
variances: list[list[float]],
|
|
264
|
-
) -> float:
|
|
265
|
-
"""Compute data-driven temperature from corpus variance statistics.
|
|
266
|
-
|
|
267
|
-
Instead of a fixed temperature, adapt to the actual spread of
|
|
268
|
-
variances in the memory store. High average variance (uncertain
|
|
269
|
-
corpus) -> higher temperature (softer discrimination). Low average
|
|
270
|
-
variance (well-confirmed corpus) -> lower temperature (sharper).
|
|
271
|
-
|
|
272
|
-
Formula:
|
|
273
|
-
T = base_T * (1 + avg_variance) / 2
|
|
274
|
-
|
|
275
|
-
This ensures T stays close to base_T when avg_variance ~ 1.0
|
|
276
|
-
(the typical midpoint) and scales proportionally.
|
|
277
|
-
|
|
278
|
-
Args:
|
|
279
|
-
variances: List of per-fact variance vectors.
|
|
280
|
-
|
|
281
|
-
Returns:
|
|
282
|
-
Adapted temperature (always positive).
|
|
283
|
-
"""
|
|
284
|
-
if not variances:
|
|
285
|
-
return self.temperature
|
|
286
|
-
|
|
287
|
-
all_vars = np.array(variances, dtype=np.float64)
|
|
288
|
-
avg = float(np.mean(all_vars))
|
|
289
|
-
|
|
290
|
-
adapted = self.temperature * (1.0 + avg) / 2.0
|
|
291
|
-
return max(adapted, 0.1) # floor to prevent division issues
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
# ---------------------------------------------------------------------------
|
|
295
|
-
# Validation
|
|
296
|
-
# ---------------------------------------------------------------------------
|
|
297
|
-
|
|
298
|
-
def _validate(
|
|
299
|
-
mu1: np.ndarray,
|
|
300
|
-
sig1: np.ndarray,
|
|
301
|
-
mu2: np.ndarray,
|
|
302
|
-
sig2: np.ndarray,
|
|
303
|
-
) -> None:
|
|
304
|
-
"""Validate Fisher metric inputs."""
|
|
305
|
-
for name, arr in [("mu1", mu1), ("sig1", sig1), ("mu2", mu2), ("sig2", sig2)]:
|
|
306
|
-
if np.any(np.isnan(arr)):
|
|
307
|
-
raise ValueError(f"{name} contains NaN")
|
|
308
|
-
|
|
309
|
-
if mu1.shape != mu2.shape:
|
|
310
|
-
raise ValueError(f"Mean shape mismatch: {mu1.shape} vs {mu2.shape}")
|
|
311
|
-
if sig1.shape != sig2.shape:
|
|
312
|
-
raise ValueError(f"Sigma shape mismatch: {sig1.shape} vs {sig2.shape}")
|
|
313
|
-
if mu1.shape[0] != sig1.shape[0]:
|
|
314
|
-
raise ValueError(
|
|
315
|
-
f"Mean/sigma length mismatch: {mu1.shape[0]} vs {sig1.shape[0]}"
|
|
316
|
-
)
|
|
317
|
-
|
|
318
|
-
if np.any(sig1 <= 0):
|
|
319
|
-
raise ValueError("sig1 must be strictly positive")
|
|
320
|
-
if np.any(sig2 <= 0):
|
|
321
|
-
raise ValueError("sig2 must be strictly positive")
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
# ---------------------------------------------------------------------------
|
|
325
|
-
# Numerically stable arccosh
|
|
326
|
-
# ---------------------------------------------------------------------------
|
|
327
|
-
|
|
328
|
-
def _stable_arccosh_1p_vec(delta: np.ndarray) -> np.ndarray:
|
|
329
|
-
"""Vectorised stable arccosh(1 + delta).
|
|
330
|
-
|
|
331
|
-
For small delta, uses Taylor expansion to avoid catastrophic
|
|
332
|
-
cancellation: arccosh(1+d) ~ sqrt(2d) * (1 - d/12).
|
|
333
|
-
For larger delta, uses the identity:
|
|
334
|
-
arccosh(1+d) = log(1 + d + sqrt(d*(d+2))).
|
|
335
|
-
|
|
336
|
-
Args:
|
|
337
|
-
delta: Non-negative array.
|
|
338
|
-
|
|
339
|
-
Returns:
|
|
340
|
-
arccosh(1 + delta) element-wise.
|
|
341
|
-
"""
|
|
342
|
-
delta = np.maximum(delta, 0.0)
|
|
343
|
-
result = np.empty_like(delta)
|
|
344
|
-
|
|
345
|
-
small = delta < _SMALL_DELTA_THRESHOLD
|
|
346
|
-
large = ~small
|
|
347
|
-
|
|
348
|
-
if np.any(small):
|
|
349
|
-
d_s = delta[small]
|
|
350
|
-
result[small] = np.sqrt(2.0 * d_s) * (1.0 - d_s / 12.0)
|
|
351
|
-
|
|
352
|
-
if np.any(large):
|
|
353
|
-
d_l = delta[large]
|
|
354
|
-
result[large] = np.log1p(d_l + np.sqrt(d_l * (d_l + 2.0)))
|
|
355
|
-
|
|
356
|
-
return result
|
|
@@ -1,255 +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
|
-
"""Fisher-Rao Quantization-Aware Distance (FRQAD).
|
|
6
|
-
|
|
7
|
-
Novel contribution (98% IP confidence): Fisher-Rao geodesic distance on
|
|
8
|
-
mixed-precision embeddings. Quantized memories naturally rank lower because
|
|
9
|
-
their variance is inflated to model quantization uncertainty.
|
|
10
|
-
|
|
11
|
-
sigma_quant = sigma_base * (32 / bit_width) ^ kappa
|
|
12
|
-
|
|
13
|
-
When both embeddings are float32, FRQAD degrades exactly to standard
|
|
14
|
-
Fisher-Rao --- no regression, pure extension.
|
|
15
|
-
|
|
16
|
-
Mathematical basis:
|
|
17
|
-
- Fisher-Rao geodesic (Atkinson & Mitchell 1981, Pinele et al. 2020)
|
|
18
|
-
- Variance inflation models quantization noise as additional uncertainty
|
|
19
|
-
on the statistical manifold of diagonal Gaussians
|
|
20
|
-
|
|
21
|
-
Part of Qualixar | Author: Varun Pratap Bhardwaj
|
|
22
|
-
License: AGPL-3.0-or-later
|
|
23
|
-
"""
|
|
24
|
-
|
|
25
|
-
from __future__ import annotations
|
|
26
|
-
|
|
27
|
-
import logging
|
|
28
|
-
import math
|
|
29
|
-
from dataclasses import dataclass
|
|
30
|
-
|
|
31
|
-
import numpy as np
|
|
32
|
-
from numpy.typing import NDArray
|
|
33
|
-
|
|
34
|
-
from superlocalmemory.math.fisher import FisherRaoMetric
|
|
35
|
-
|
|
36
|
-
logger = logging.getLogger(__name__)
|
|
37
|
-
|
|
38
|
-
# Valid bit-widths aligned with Phase B/D (no 16-bit format exists).
|
|
39
|
-
_VALID_BIT_WIDTHS: frozenset[int] = frozenset({2, 4, 8, 32})
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
# ---------------------------------------------------------------------------
|
|
43
|
-
# Configuration
|
|
44
|
-
# ---------------------------------------------------------------------------
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
@dataclass(frozen=True)
|
|
48
|
-
class FRQADConfig:
|
|
49
|
-
"""Configuration for FRQAD metric.
|
|
50
|
-
|
|
51
|
-
Attributes:
|
|
52
|
-
kappa: Scaling exponent for variance inflation.
|
|
53
|
-
sigma_quant = sigma_base * (32/bw)^kappa.
|
|
54
|
-
temperature: Softmax temperature for similarity conversion.
|
|
55
|
-
enabled: When False, fall back to base Fisher-Rao.
|
|
56
|
-
variance_floor: Minimum per-dimension variance after inflation.
|
|
57
|
-
variance_ceiling: Maximum per-dimension variance after inflation.
|
|
58
|
-
"""
|
|
59
|
-
|
|
60
|
-
kappa: float = 0.5
|
|
61
|
-
temperature: float = 15.0
|
|
62
|
-
enabled: bool = True
|
|
63
|
-
variance_floor: float = 0.05
|
|
64
|
-
variance_ceiling: float = 10.0
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
# ---------------------------------------------------------------------------
|
|
68
|
-
# FRQAD Metric
|
|
69
|
-
# ---------------------------------------------------------------------------
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
class FRQADMetric:
|
|
73
|
-
"""Fisher-Rao Quantization-Aware Distance metric.
|
|
74
|
-
|
|
75
|
-
Wraps an existing FisherRaoMetric and inflates variance vectors based
|
|
76
|
-
on each embedding's bit-width before computing geodesic distance.
|
|
77
|
-
|
|
78
|
-
Self-consistency property:
|
|
79
|
-
FRQAD(32bit, 32bit) == FisherRao(same pair) within float epsilon.
|
|
80
|
-
"""
|
|
81
|
-
|
|
82
|
-
__slots__ = ("_base", "_config")
|
|
83
|
-
|
|
84
|
-
def __init__(
|
|
85
|
-
self,
|
|
86
|
-
base_metric: FisherRaoMetric,
|
|
87
|
-
config: FRQADConfig,
|
|
88
|
-
) -> None:
|
|
89
|
-
"""Construct FRQAD metric.
|
|
90
|
-
|
|
91
|
-
Args:
|
|
92
|
-
base_metric: Existing Fisher-Rao metric instance.
|
|
93
|
-
config: FRQAD configuration.
|
|
94
|
-
|
|
95
|
-
Raises:
|
|
96
|
-
ValueError: On invalid configuration values.
|
|
97
|
-
"""
|
|
98
|
-
# Validate config ranges (HR-04)
|
|
99
|
-
if not 0.0 <= config.kappa <= 2.0:
|
|
100
|
-
raise ValueError(
|
|
101
|
-
f"kappa must be in [0.0, 2.0], got {config.kappa}"
|
|
102
|
-
)
|
|
103
|
-
if not 1.0 <= config.temperature <= 100.0:
|
|
104
|
-
raise ValueError(
|
|
105
|
-
f"temperature must be in [1.0, 100.0], got {config.temperature}"
|
|
106
|
-
)
|
|
107
|
-
if not 0.001 <= config.variance_floor <= 1.0:
|
|
108
|
-
raise ValueError(
|
|
109
|
-
f"variance_floor must be in [0.001, 1.0], got {config.variance_floor}"
|
|
110
|
-
)
|
|
111
|
-
if not 1.0 <= config.variance_ceiling <= 100.0:
|
|
112
|
-
raise ValueError(
|
|
113
|
-
f"variance_ceiling must be in [1.0, 100.0], got {config.variance_ceiling}"
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
self._base = base_metric
|
|
117
|
-
self._config = config
|
|
118
|
-
|
|
119
|
-
# ------------------------------------------------------------------
|
|
120
|
-
# Quantization variance inflation
|
|
121
|
-
# ------------------------------------------------------------------
|
|
122
|
-
|
|
123
|
-
def quantization_variance(
|
|
124
|
-
self,
|
|
125
|
-
base_variance: NDArray[np.floating],
|
|
126
|
-
bit_width: int,
|
|
127
|
-
) -> NDArray[np.floating]:
|
|
128
|
-
"""Inflate variance to model quantization uncertainty.
|
|
129
|
-
|
|
130
|
-
HR-02: NEVER decreases base variance (scale >= 1.0 since bw <= 32).
|
|
131
|
-
|
|
132
|
-
Args:
|
|
133
|
-
base_variance: Per-dimension variance vector (strictly positive).
|
|
134
|
-
bit_width: Embedding precision in bits.
|
|
135
|
-
|
|
136
|
-
Returns:
|
|
137
|
-
Quantization-aware variance, clamped to [floor, ceiling].
|
|
138
|
-
"""
|
|
139
|
-
if bit_width not in _VALID_BIT_WIDTHS:
|
|
140
|
-
logger.warning(
|
|
141
|
-
"Unknown bit_width %d, treating as 32 (no penalty)", bit_width,
|
|
142
|
-
)
|
|
143
|
-
return np.array(base_variance, dtype=np.float64)
|
|
144
|
-
|
|
145
|
-
if bit_width >= 32:
|
|
146
|
-
return np.array(base_variance, dtype=np.float64)
|
|
147
|
-
|
|
148
|
-
# V3.3.26: MULTIPLICATIVE variance inflation (Paper 3, Equation 2).
|
|
149
|
-
# sigma²_eff = sigma²_obs * (32 / bit_width) ^ kappa
|
|
150
|
-
# When bw=32: scale=1.0 (no change). When bw=4: scale=2.83x (kappa=0.5).
|
|
151
|
-
# This is MORE novel and MORE aggressive than additive Delta²/12.
|
|
152
|
-
scale = (32.0 / bit_width) ** self._config.kappa
|
|
153
|
-
sigma_inflated = np.asarray(base_variance, dtype=np.float64) * scale
|
|
154
|
-
|
|
155
|
-
return np.clip(sigma_inflated, self._config.variance_floor, self._config.variance_ceiling)
|
|
156
|
-
|
|
157
|
-
# ------------------------------------------------------------------
|
|
158
|
-
# Core distance (THE novel contribution)
|
|
159
|
-
# ------------------------------------------------------------------
|
|
160
|
-
|
|
161
|
-
def distance(
|
|
162
|
-
self,
|
|
163
|
-
mu_a: NDArray[np.floating],
|
|
164
|
-
var_a: NDArray[np.floating],
|
|
165
|
-
bw_a: int,
|
|
166
|
-
mu_b: NDArray[np.floating],
|
|
167
|
-
var_b: NDArray[np.floating],
|
|
168
|
-
bw_b: int,
|
|
169
|
-
) -> float:
|
|
170
|
-
"""FRQAD distance between mixed-precision embeddings.
|
|
171
|
-
|
|
172
|
-
Inflates variance based on bit-width, then delegates to the
|
|
173
|
-
standard Fisher-Rao geodesic.
|
|
174
|
-
|
|
175
|
-
Args:
|
|
176
|
-
mu_a: Mean of embedding A.
|
|
177
|
-
var_a: Per-dimension variance of A.
|
|
178
|
-
bw_a: Bit-width of A.
|
|
179
|
-
mu_b: Mean of embedding B.
|
|
180
|
-
var_b: Per-dimension variance of B.
|
|
181
|
-
bw_b: Bit-width of B.
|
|
182
|
-
|
|
183
|
-
Returns:
|
|
184
|
-
Non-negative geodesic distance.
|
|
185
|
-
"""
|
|
186
|
-
if not self._config.enabled:
|
|
187
|
-
return self._base.distance(
|
|
188
|
-
np.asarray(mu_a, dtype=np.float64).tolist(),
|
|
189
|
-
np.asarray(var_a, dtype=np.float64).tolist(),
|
|
190
|
-
np.asarray(mu_b, dtype=np.float64).tolist(),
|
|
191
|
-
np.asarray(var_b, dtype=np.float64).tolist(),
|
|
192
|
-
)
|
|
193
|
-
|
|
194
|
-
var_a_q = self.quantization_variance(var_a, bw_a)
|
|
195
|
-
var_b_q = self.quantization_variance(var_b, bw_b)
|
|
196
|
-
|
|
197
|
-
return self._base.distance(
|
|
198
|
-
np.asarray(mu_a, dtype=np.float64).tolist(),
|
|
199
|
-
var_a_q.tolist(),
|
|
200
|
-
np.asarray(mu_b, dtype=np.float64).tolist(),
|
|
201
|
-
var_b_q.tolist(),
|
|
202
|
-
)
|
|
203
|
-
|
|
204
|
-
# ------------------------------------------------------------------
|
|
205
|
-
# Similarity (exponential kernel)
|
|
206
|
-
# ------------------------------------------------------------------
|
|
207
|
-
|
|
208
|
-
def similarity(
|
|
209
|
-
self,
|
|
210
|
-
mu_a: NDArray[np.floating],
|
|
211
|
-
var_a: NDArray[np.floating],
|
|
212
|
-
bw_a: int,
|
|
213
|
-
mu_b: NDArray[np.floating],
|
|
214
|
-
var_b: NDArray[np.floating],
|
|
215
|
-
bw_b: int,
|
|
216
|
-
) -> float:
|
|
217
|
-
"""Convert FRQAD distance to similarity in [0, 1].
|
|
218
|
-
|
|
219
|
-
sim = clamp(exp(-distance / temperature), 0, 1)
|
|
220
|
-
|
|
221
|
-
HR-03: No NaN, no negative, no > 1.
|
|
222
|
-
"""
|
|
223
|
-
d = self.distance(mu_a, var_a, bw_a, mu_b, var_b, bw_b)
|
|
224
|
-
sim = math.exp(-d / self._config.temperature)
|
|
225
|
-
return max(0.0, min(1.0, sim))
|
|
226
|
-
|
|
227
|
-
# ------------------------------------------------------------------
|
|
228
|
-
# Batch similarity
|
|
229
|
-
# ------------------------------------------------------------------
|
|
230
|
-
|
|
231
|
-
def batch_similarity(
|
|
232
|
-
self,
|
|
233
|
-
query_mu: NDArray[np.floating],
|
|
234
|
-
query_var: NDArray[np.floating],
|
|
235
|
-
query_bw: int,
|
|
236
|
-
candidates: list[tuple[str, NDArray[np.floating], NDArray[np.floating], int]],
|
|
237
|
-
) -> list[tuple[str, float]]:
|
|
238
|
-
"""Score a batch of candidate memories against a query.
|
|
239
|
-
|
|
240
|
-
Args:
|
|
241
|
-
query_mu: Query embedding mean.
|
|
242
|
-
query_var: Query embedding variance.
|
|
243
|
-
query_bw: Query bit-width (typically 32).
|
|
244
|
-
candidates: List of (fact_id, mu, var, bit_width) tuples.
|
|
245
|
-
|
|
246
|
-
Returns:
|
|
247
|
-
List of (fact_id, similarity) sorted descending by score.
|
|
248
|
-
"""
|
|
249
|
-
results: list[tuple[str, float]] = []
|
|
250
|
-
for fact_id, mu, var, bw in candidates:
|
|
251
|
-
sim = self.similarity(query_mu, query_var, query_bw, mu, var, bw)
|
|
252
|
-
results.append((fact_id, sim))
|
|
253
|
-
|
|
254
|
-
results.sort(key=lambda x: x[1], reverse=True)
|
|
255
|
-
return results
|