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,152 +0,0 @@
|
|
|
1
|
-
"""Immutable value types for SuperLocalMemory bounded loops.
|
|
2
|
-
|
|
3
|
-
A *bounded loop* is an agent loop that terminates when an independent gate
|
|
4
|
-
passes — never when the agent claims it is finished. This module holds the
|
|
5
|
-
pure data types the loop engine reasons over.
|
|
6
|
-
|
|
7
|
-
Design rules (kept deliberately strict):
|
|
8
|
-
* Standard-library imports only. No I/O, no framework, no side effects.
|
|
9
|
-
* Every dataclass is ``frozen=True`` — any attribute mutation raises
|
|
10
|
-
``TypeError`` at runtime, so a lap result cannot be rewritten after the
|
|
11
|
-
gate has judged it.
|
|
12
|
-
* Timestamps are ISO-8601 strings supplied by the engine's clock, never
|
|
13
|
-
produced here with ``datetime.now()``.
|
|
14
|
-
|
|
15
|
-
This is SuperLocalMemory's own realization of the bounded-loop concept; the
|
|
16
|
-
loop-control discipline it encodes (gate-verified termination, enforced
|
|
17
|
-
bounds, an advisory-only agent claim) is a general practice, reimplemented
|
|
18
|
-
here against SLM's durable memory rather than a flat file.
|
|
19
|
-
"""
|
|
20
|
-
|
|
21
|
-
from __future__ import annotations
|
|
22
|
-
|
|
23
|
-
from dataclasses import dataclass, field
|
|
24
|
-
from enum import Enum
|
|
25
|
-
from typing import Any, Optional
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class Rung(str, Enum):
|
|
29
|
-
"""Autonomy rung governing how much a human stays in the loop.
|
|
30
|
-
|
|
31
|
-
``L1`` report — a human reads every verdict; the loop still exits on
|
|
32
|
-
a passing gate but nothing is auto-approved.
|
|
33
|
-
``L2`` assisted — the agent acts but pauses for human approval before a
|
|
34
|
-
passing gate is accepted as DONE.
|
|
35
|
-
``L3`` unattended — the agent acts autonomously; approval is derived from
|
|
36
|
-
the bounds alone.
|
|
37
|
-
|
|
38
|
-
Subclassing ``(str, Enum)`` makes ``Rung.L2 == "L2"`` true and
|
|
39
|
-
``Rung("L2")`` reconstruct the member, so a rung round-trips through JSON
|
|
40
|
-
or a CLI argument without a hand-written lookup table.
|
|
41
|
-
"""
|
|
42
|
-
|
|
43
|
-
L1 = "L1"
|
|
44
|
-
L2 = "L2"
|
|
45
|
-
L3 = "L3"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
class Status(str, Enum):
|
|
49
|
-
"""Terminal status of a bounded-loop run.
|
|
50
|
-
|
|
51
|
-
``DONE`` — the gate passed and approval was granted or not required.
|
|
52
|
-
``HALT`` — a safety bound tripped (iteration cap, no progress, budget).
|
|
53
|
-
``PAUSE`` — the gate passed but required approval was not granted.
|
|
54
|
-
``KILLED`` — an external kill switch tripped between laps.
|
|
55
|
-
``ERROR`` — the runner or gate raised before a verdict was produced.
|
|
56
|
-
"""
|
|
57
|
-
|
|
58
|
-
DONE = "DONE"
|
|
59
|
-
HALT = "HALT"
|
|
60
|
-
PAUSE = "PAUSE"
|
|
61
|
-
KILLED = "KILLED"
|
|
62
|
-
ERROR = "ERROR"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
@dataclass(frozen=True)
|
|
66
|
-
class Bounds:
|
|
67
|
-
"""The safety envelope a loop runs inside.
|
|
68
|
-
|
|
69
|
-
``max_iterations`` hard cap on laps; required and must be >= 1.
|
|
70
|
-
``no_progress_window`` consecutive no-change laps that trigger a HALT.
|
|
71
|
-
``max_tokens`` cumulative token budget across laps, or ``None``.
|
|
72
|
-
``max_wallclock_s`` wall-clock ceiling in seconds, or ``None``.
|
|
73
|
-
``require_approval`` ``True``/``False`` forces the approval posture;
|
|
74
|
-
``None`` derives it from the rung (L1 -> no
|
|
75
|
-
approval, L2/L3 -> approval required).
|
|
76
|
-
"""
|
|
77
|
-
|
|
78
|
-
max_iterations: int
|
|
79
|
-
no_progress_window: int = 3
|
|
80
|
-
max_tokens: Optional[int] = None
|
|
81
|
-
max_wallclock_s: Optional[float] = None
|
|
82
|
-
require_approval: Optional[bool] = None
|
|
83
|
-
|
|
84
|
-
def __post_init__(self) -> None:
|
|
85
|
-
if self.max_iterations < 1:
|
|
86
|
-
raise ValueError("max_iterations must be >= 1")
|
|
87
|
-
if self.no_progress_window < 0:
|
|
88
|
-
raise ValueError("no_progress_window must be >= 0")
|
|
89
|
-
if self.max_tokens is not None and self.max_tokens < 0:
|
|
90
|
-
raise ValueError("max_tokens must be >= 0 when set")
|
|
91
|
-
if self.max_wallclock_s is not None and self.max_wallclock_s < 0:
|
|
92
|
-
raise ValueError("max_wallclock_s must be >= 0 when set")
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
@dataclass(frozen=True)
|
|
96
|
-
class Verdict:
|
|
97
|
-
"""The independent gate's judgement of a single lap.
|
|
98
|
-
|
|
99
|
-
``passed`` True only when the gate mechanically confirmed the goal.
|
|
100
|
-
``detail`` human-readable one-line summary (required, non-empty).
|
|
101
|
-
``evidence`` structured gate output (counts, tails, diffs). Defaults to a
|
|
102
|
-
fresh dict per instance via ``default_factory`` so verdicts do
|
|
103
|
-
not share one mutable dict.
|
|
104
|
-
|
|
105
|
-
``passed=True`` is necessary but not sufficient for the loop to exit; the
|
|
106
|
-
engine still consults the approval rung.
|
|
107
|
-
"""
|
|
108
|
-
|
|
109
|
-
passed: bool
|
|
110
|
-
detail: str
|
|
111
|
-
evidence: dict[str, Any] = field(default_factory=dict)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
@dataclass(frozen=True)
|
|
115
|
-
class LapResult:
|
|
116
|
-
"""What the runner reports after proposing one lap of work.
|
|
117
|
-
|
|
118
|
-
``changed`` True if the runner altered the workspace/state.
|
|
119
|
-
``agent_claimed_done`` the agent's own "I am finished" signal. Recorded for
|
|
120
|
-
audit and **never** used to terminate the loop — the
|
|
121
|
-
gate is the sole authority.
|
|
122
|
-
``tokens`` tokens spent this lap (0 when unknown).
|
|
123
|
-
``log`` short runner log for the lap.
|
|
124
|
-
"""
|
|
125
|
-
|
|
126
|
-
changed: bool
|
|
127
|
-
agent_claimed_done: bool = False
|
|
128
|
-
tokens: int = 0
|
|
129
|
-
log: str = ""
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
@dataclass(frozen=True)
|
|
133
|
-
class Outcome:
|
|
134
|
-
"""The final result of a bounded-loop run.
|
|
135
|
-
|
|
136
|
-
``status`` terminal status.
|
|
137
|
-
``reason`` short machine-friendly explanation ("gate-passed",
|
|
138
|
-
"no-progress", "max-iterations", "awaiting-approval",
|
|
139
|
-
"killed", or a gate/runner error string).
|
|
140
|
-
``laps`` number of laps executed at termination.
|
|
141
|
-
``run_id`` identifier used to locate this run's ledger in SLM memory.
|
|
142
|
-
"""
|
|
143
|
-
|
|
144
|
-
status: Status
|
|
145
|
-
reason: str
|
|
146
|
-
laps: int
|
|
147
|
-
run_id: str
|
|
148
|
-
|
|
149
|
-
@property
|
|
150
|
-
def ok(self) -> bool:
|
|
151
|
-
"""True only for a DONE outcome — the single success state."""
|
|
152
|
-
return self.status is Status.DONE
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"""Pure decision predicates for the bounded-loop engine.
|
|
2
|
-
|
|
3
|
-
Every function here is a pure function of its arguments: same inputs give the
|
|
4
|
-
same output, and nothing is mutated. The engine calls these to decide whether
|
|
5
|
-
to stop, halt, or keep going; adapters never call them directly.
|
|
6
|
-
|
|
7
|
-
Imports are limited to the standard library and the loop models.
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
from __future__ import annotations
|
|
11
|
-
|
|
12
|
-
from typing import Sequence
|
|
13
|
-
|
|
14
|
-
from superlocalmemory.loops.models import Bounds, Rung, Verdict
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def stop_condition_met(verdict: Verdict) -> bool:
|
|
18
|
-
"""Return True when the gate verdict means the loop may exit.
|
|
19
|
-
|
|
20
|
-
The rule is deliberately conservative: a loop is eligible to finish only
|
|
21
|
-
when the independent gate reports ``passed``. The agent's own opinion is
|
|
22
|
-
never consulted here — it is not even an argument.
|
|
23
|
-
"""
|
|
24
|
-
return verdict.passed
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
def no_progress(lap_changes: Sequence[bool], window: int) -> bool:
|
|
28
|
-
"""Return True when the last ``window`` laps all made no change.
|
|
29
|
-
|
|
30
|
-
``lap_changes`` is the ordered history of each lap's ``changed`` flag,
|
|
31
|
-
most-recent last. A window of ``0`` disables the check (a spinning agent
|
|
32
|
-
is then bounded only by the iteration cap). Fewer laps than the window
|
|
33
|
-
means "not enough evidence yet" and returns False.
|
|
34
|
-
"""
|
|
35
|
-
if window <= 0:
|
|
36
|
-
return False
|
|
37
|
-
tail = lap_changes[-window:]
|
|
38
|
-
if len(tail) < window:
|
|
39
|
-
return False
|
|
40
|
-
return all(changed is False for changed in tail)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def rung_requires_approval(rung: Rung, bounds: Bounds) -> bool:
|
|
44
|
-
"""Return True when a human must approve a passing gate before DONE.
|
|
45
|
-
|
|
46
|
-
An explicit ``bounds.require_approval`` wins outright. When it is ``None``
|
|
47
|
-
the posture is derived from the rung: L1 exits without approval, while
|
|
48
|
-
L2 and L3 require it.
|
|
49
|
-
"""
|
|
50
|
-
if bounds.require_approval is not None:
|
|
51
|
-
return bounds.require_approval
|
|
52
|
-
return rung in (Rung.L2, Rung.L3)
|
|
File without changes
|
|
@@ -1,352 +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
|
-
"""Ebbinghaus forgetting curve — memory strength and retention.
|
|
6
|
-
|
|
7
|
-
Implements the classic Ebbinghaus retention formula:
|
|
8
|
-
|
|
9
|
-
R(t) = e^(-t/S)
|
|
10
|
-
|
|
11
|
-
where:
|
|
12
|
-
R = retention score in [0, 1]
|
|
13
|
-
t = hours since last access
|
|
14
|
-
S = memory strength (composite of access, importance, confirmations, emotion)
|
|
15
|
-
|
|
16
|
-
Memory strength formula (ACT-R inspired):
|
|
17
|
-
|
|
18
|
-
S = alpha * log(1 + access_count)
|
|
19
|
-
+ beta * importance
|
|
20
|
-
+ gamma * confirmation_count
|
|
21
|
-
+ delta * emotional_salience
|
|
22
|
-
|
|
23
|
-
Lifecycle zones are derived from retention score:
|
|
24
|
-
active (R > 0.8) -> weight 1.0
|
|
25
|
-
warm (R > 0.5) -> weight 0.7
|
|
26
|
-
cold (R > 0.2) -> weight 0.3
|
|
27
|
-
archive (R > 0.05) -> weight 0.0
|
|
28
|
-
forgotten (R <= 0.05) -> weight 0.0
|
|
29
|
-
|
|
30
|
-
References:
|
|
31
|
-
Ebbinghaus H (1885). Memory: A Contribution to Experimental Psychology.
|
|
32
|
-
Anderson J R & Lebiere C (1998). The Atomic Components of Thought. ACT-R.
|
|
33
|
-
Zhong W et al. (2024). MemoryBank: Enhancing Large Language Models with
|
|
34
|
-
Long-Term Memory. AAAI 2024.
|
|
35
|
-
|
|
36
|
-
Part of Qualixar | Author: Varun Pratap Bhardwaj
|
|
37
|
-
License: AGPL-3.0-or-later
|
|
38
|
-
"""
|
|
39
|
-
|
|
40
|
-
from __future__ import annotations
|
|
41
|
-
|
|
42
|
-
import logging
|
|
43
|
-
import math
|
|
44
|
-
from dataclasses import dataclass
|
|
45
|
-
from datetime import UTC, datetime
|
|
46
|
-
from typing import TYPE_CHECKING, TypedDict
|
|
47
|
-
|
|
48
|
-
if TYPE_CHECKING:
|
|
49
|
-
from superlocalmemory.storage.database import DatabaseManager
|
|
50
|
-
|
|
51
|
-
from superlocalmemory.core.config import ForgettingConfig
|
|
52
|
-
|
|
53
|
-
logger = logging.getLogger(__name__)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
# ---------------------------------------------------------------------------
|
|
57
|
-
# Data types
|
|
58
|
-
# ---------------------------------------------------------------------------
|
|
59
|
-
|
|
60
|
-
@dataclass(frozen=True)
|
|
61
|
-
class MemoryStrength:
|
|
62
|
-
"""Computed strength for a single memory."""
|
|
63
|
-
|
|
64
|
-
fact_id: str
|
|
65
|
-
strength: float # S(m) in [S_MIN, S_MAX]
|
|
66
|
-
access_component: float # alpha * log(1 + access_count)
|
|
67
|
-
importance_component: float # beta * importance
|
|
68
|
-
confirmation_component: float # gamma * confirmation_count
|
|
69
|
-
emotional_component: float # delta * emotional_salience
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
class FactRetentionInput(TypedDict):
|
|
73
|
-
"""Input dict for batch retention computation. All keys are required."""
|
|
74
|
-
|
|
75
|
-
fact_id: str
|
|
76
|
-
access_count: int
|
|
77
|
-
importance: float # PageRank score from fact_importance
|
|
78
|
-
confirmation_count: int # Mapped from atomic_facts.evidence_count
|
|
79
|
-
emotional_salience: float # Mapped from atomic_facts.emotional_valence
|
|
80
|
-
last_accessed_at: str # ISO 8601 datetime string
|
|
81
|
-
trust_score: float # Source trust in [0, 1]. Default 1.0.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
# ---------------------------------------------------------------------------
|
|
85
|
-
# Lifecycle zone weights
|
|
86
|
-
# ---------------------------------------------------------------------------
|
|
87
|
-
|
|
88
|
-
_ZONE_WEIGHTS: dict[str, float] = {
|
|
89
|
-
"active": 1.0,
|
|
90
|
-
"warm": 0.7,
|
|
91
|
-
"cold": 0.3,
|
|
92
|
-
"archive": 0.0,
|
|
93
|
-
"forgotten": 0.0,
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
# ---------------------------------------------------------------------------
|
|
98
|
-
# EbbinghausCurve
|
|
99
|
-
# ---------------------------------------------------------------------------
|
|
100
|
-
|
|
101
|
-
class EbbinghausCurve:
|
|
102
|
-
"""Ebbinghaus forgetting curve with configurable strength formula.
|
|
103
|
-
|
|
104
|
-
Provides retention computation, memory strength calculation,
|
|
105
|
-
spaced repetition updates, lifecycle zone classification, and
|
|
106
|
-
batch processing for the forgetting scheduler.
|
|
107
|
-
"""
|
|
108
|
-
|
|
109
|
-
__slots__ = ("_config",)
|
|
110
|
-
|
|
111
|
-
def __init__(self, config: ForgettingConfig) -> None:
|
|
112
|
-
self._config = config
|
|
113
|
-
|
|
114
|
-
def retention(self, hours_since_access: float, strength: float) -> float:
|
|
115
|
-
"""Compute Ebbinghaus retention R(t) = e^(-t/S).
|
|
116
|
-
|
|
117
|
-
Args:
|
|
118
|
-
hours_since_access: Hours since last access. Negative treated as fresh.
|
|
119
|
-
strength: Memory strength S. Floored at min_strength.
|
|
120
|
-
|
|
121
|
-
Returns:
|
|
122
|
-
Retention score in [0.0, 1.0]. Never NaN, never Inf.
|
|
123
|
-
"""
|
|
124
|
-
# HR-02: Validate negative time
|
|
125
|
-
if hours_since_access < 0:
|
|
126
|
-
return 1.0
|
|
127
|
-
|
|
128
|
-
# HR-03: Floor strength
|
|
129
|
-
s = max(self._config.min_strength, strength)
|
|
130
|
-
|
|
131
|
-
# Compute decay rate and retention
|
|
132
|
-
lambda_ = 1.0 / s
|
|
133
|
-
r = math.exp(-lambda_ * hours_since_access)
|
|
134
|
-
|
|
135
|
-
# NaN/Inf guard (A-MED-02) — MUST come before clamp
|
|
136
|
-
if math.isnan(r) or math.isinf(r):
|
|
137
|
-
logger.warning(
|
|
138
|
-
"retention(): NaN/Inf detected (lambda_=%f, t=%f), returning 0.0",
|
|
139
|
-
lambda_, hours_since_access,
|
|
140
|
-
)
|
|
141
|
-
return 0.0
|
|
142
|
-
|
|
143
|
-
# HR-02: Clamp to [0.0, 1.0]
|
|
144
|
-
return max(0.0, min(1.0, r))
|
|
145
|
-
|
|
146
|
-
def trust_modulated_retention(
|
|
147
|
-
self,
|
|
148
|
-
hours_since_access: float,
|
|
149
|
-
strength: float,
|
|
150
|
-
trust_score: float = 1.0,
|
|
151
|
-
) -> float:
|
|
152
|
-
"""Compute trust-weighted Ebbinghaus retention.
|
|
153
|
-
|
|
154
|
-
lambda_eff = lambda * (1 + kappa * (1 - trust))
|
|
155
|
-
|
|
156
|
-
Low-trust memories decay faster. When trust=1.0, identical to
|
|
157
|
-
standard retention. When trust=0.0, decay rate is (1+kappa)x faster.
|
|
158
|
-
|
|
159
|
-
Paper 3, Section 5.5: Trust-Weighted Forgetting.
|
|
160
|
-
|
|
161
|
-
Args:
|
|
162
|
-
hours_since_access: Hours since last access.
|
|
163
|
-
strength: Memory strength S.
|
|
164
|
-
trust_score: Source trust in [0, 1]. Default 1.0 (fully trusted).
|
|
165
|
-
|
|
166
|
-
Returns:
|
|
167
|
-
Retention score in [0.0, 1.0].
|
|
168
|
-
"""
|
|
169
|
-
if hours_since_access < 0:
|
|
170
|
-
return 1.0
|
|
171
|
-
|
|
172
|
-
s = max(self._config.min_strength, strength)
|
|
173
|
-
tau = max(0.0, min(1.0, trust_score))
|
|
174
|
-
kappa = self._config.trust_kappa
|
|
175
|
-
|
|
176
|
-
# Trust-modulated decay rate
|
|
177
|
-
lambda_base = 1.0 / s
|
|
178
|
-
lambda_eff = lambda_base * (1.0 + kappa * (1.0 - tau))
|
|
179
|
-
|
|
180
|
-
r = math.exp(-lambda_eff * hours_since_access)
|
|
181
|
-
|
|
182
|
-
if math.isnan(r) or math.isinf(r):
|
|
183
|
-
return 0.0
|
|
184
|
-
|
|
185
|
-
return max(0.0, min(1.0, r))
|
|
186
|
-
|
|
187
|
-
def memory_strength(
|
|
188
|
-
self,
|
|
189
|
-
access_count: int,
|
|
190
|
-
importance: float,
|
|
191
|
-
confirmation_count: int,
|
|
192
|
-
emotional_salience: float,
|
|
193
|
-
) -> float:
|
|
194
|
-
"""Compute composite memory strength S(m).
|
|
195
|
-
|
|
196
|
-
S = alpha * log(1 + access_count)
|
|
197
|
-
+ beta * importance
|
|
198
|
-
+ gamma * confirmation_count
|
|
199
|
-
+ delta * emotional_salience
|
|
200
|
-
|
|
201
|
-
Args:
|
|
202
|
-
access_count: Number of times memory was accessed.
|
|
203
|
-
importance: PageRank importance score.
|
|
204
|
-
confirmation_count: Number of confirmations/evidence.
|
|
205
|
-
emotional_salience: Emotional strength [-1, 1].
|
|
206
|
-
|
|
207
|
-
Returns:
|
|
208
|
-
Clamped strength in [min_strength, max_strength].
|
|
209
|
-
"""
|
|
210
|
-
cfg = self._config
|
|
211
|
-
a = cfg.alpha * math.log(1.0 + access_count)
|
|
212
|
-
b = cfg.beta * importance
|
|
213
|
-
c = cfg.gamma * confirmation_count
|
|
214
|
-
d = cfg.delta * emotional_salience
|
|
215
|
-
s = a + b + c + d
|
|
216
|
-
|
|
217
|
-
# HR-03: Clamp to bounds
|
|
218
|
-
return max(cfg.min_strength, min(cfg.max_strength, s))
|
|
219
|
-
|
|
220
|
-
def compute_strength(
|
|
221
|
-
self,
|
|
222
|
-
fact_id: str,
|
|
223
|
-
access_count: int,
|
|
224
|
-
importance: float,
|
|
225
|
-
confirmation_count: int,
|
|
226
|
-
emotional_salience: float,
|
|
227
|
-
) -> MemoryStrength:
|
|
228
|
-
"""Compute MemoryStrength dataclass for a single fact.
|
|
229
|
-
|
|
230
|
-
Returns:
|
|
231
|
-
MemoryStrength with all component scores.
|
|
232
|
-
"""
|
|
233
|
-
cfg = self._config
|
|
234
|
-
a = cfg.alpha * math.log(1.0 + access_count)
|
|
235
|
-
b = cfg.beta * importance
|
|
236
|
-
c = cfg.gamma * confirmation_count
|
|
237
|
-
d = cfg.delta * emotional_salience
|
|
238
|
-
s = a + b + c + d
|
|
239
|
-
s = max(cfg.min_strength, min(cfg.max_strength, s))
|
|
240
|
-
|
|
241
|
-
return MemoryStrength(
|
|
242
|
-
fact_id=fact_id,
|
|
243
|
-
strength=s,
|
|
244
|
-
access_component=a,
|
|
245
|
-
importance_component=b,
|
|
246
|
-
confirmation_component=c,
|
|
247
|
-
emotional_component=d,
|
|
248
|
-
)
|
|
249
|
-
|
|
250
|
-
def spaced_repetition_update(
|
|
251
|
-
self, current_strength: float, hours_since_last_access: float,
|
|
252
|
-
) -> float:
|
|
253
|
-
"""Boost strength on re-access (spaced repetition effect).
|
|
254
|
-
|
|
255
|
-
Longer gaps between accesses produce larger boosts — this is the
|
|
256
|
-
spacing effect from cognitive science.
|
|
257
|
-
|
|
258
|
-
HR-07: Only INCREASES strength, never decreases.
|
|
259
|
-
|
|
260
|
-
Args:
|
|
261
|
-
current_strength: Current memory strength.
|
|
262
|
-
hours_since_last_access: Hours since last access.
|
|
263
|
-
|
|
264
|
-
Returns:
|
|
265
|
-
Updated strength, clamped to [min_strength, max_strength].
|
|
266
|
-
"""
|
|
267
|
-
cfg = self._config
|
|
268
|
-
interval = math.log(1.0 + hours_since_last_access / 24.0)
|
|
269
|
-
boost = cfg.learning_rate * interval
|
|
270
|
-
s_new = current_strength + boost
|
|
271
|
-
|
|
272
|
-
# HR-03: Clamp
|
|
273
|
-
return max(cfg.min_strength, min(cfg.max_strength, s_new))
|
|
274
|
-
|
|
275
|
-
def lifecycle_zone(self, retention_score: float) -> str:
|
|
276
|
-
"""Classify retention score into lifecycle zone.
|
|
277
|
-
|
|
278
|
-
Args:
|
|
279
|
-
retention_score: R in [0, 1].
|
|
280
|
-
|
|
281
|
-
Returns:
|
|
282
|
-
One of: 'active', 'warm', 'cold', 'archive', 'forgotten'.
|
|
283
|
-
"""
|
|
284
|
-
if retention_score > 0.8:
|
|
285
|
-
return "active"
|
|
286
|
-
if retention_score > 0.5:
|
|
287
|
-
return "warm"
|
|
288
|
-
if retention_score > self._config.archive_threshold:
|
|
289
|
-
return "cold"
|
|
290
|
-
if retention_score > self._config.forget_threshold:
|
|
291
|
-
return "archive"
|
|
292
|
-
return "forgotten"
|
|
293
|
-
|
|
294
|
-
def lifecycle_weight(self, zone: str) -> float:
|
|
295
|
-
"""Get retrieval weight for a lifecycle zone.
|
|
296
|
-
|
|
297
|
-
Args:
|
|
298
|
-
zone: Lifecycle zone name.
|
|
299
|
-
|
|
300
|
-
Returns:
|
|
301
|
-
Weight in [0.0, 1.0].
|
|
302
|
-
"""
|
|
303
|
-
return _ZONE_WEIGHTS.get(zone, 0.0)
|
|
304
|
-
|
|
305
|
-
def batch_compute_retention(
|
|
306
|
-
self, facts: list[FactRetentionInput],
|
|
307
|
-
) -> list[dict]:
|
|
308
|
-
"""Compute retention for a batch of facts.
|
|
309
|
-
|
|
310
|
-
Args:
|
|
311
|
-
facts: List of FactRetentionInput dicts.
|
|
312
|
-
|
|
313
|
-
Returns:
|
|
314
|
-
List of dicts with fact_id, retention, strength, zone.
|
|
315
|
-
"""
|
|
316
|
-
now = datetime.now(UTC)
|
|
317
|
-
results: list[dict] = []
|
|
318
|
-
|
|
319
|
-
for fact in facts:
|
|
320
|
-
access_count = fact["access_count"]
|
|
321
|
-
importance = fact["importance"]
|
|
322
|
-
confirmation_count = fact["confirmation_count"]
|
|
323
|
-
emotional_salience = fact["emotional_salience"]
|
|
324
|
-
last_accessed_at = fact["last_accessed_at"]
|
|
325
|
-
|
|
326
|
-
# Compute hours since last access
|
|
327
|
-
try:
|
|
328
|
-
last_dt = datetime.fromisoformat(last_accessed_at)
|
|
329
|
-
# Ensure timezone-aware
|
|
330
|
-
if last_dt.tzinfo is None:
|
|
331
|
-
last_dt = last_dt.replace(tzinfo=UTC)
|
|
332
|
-
hours_since = (now - last_dt).total_seconds() / 3600.0
|
|
333
|
-
except (ValueError, TypeError):
|
|
334
|
-
hours_since = 0.0
|
|
335
|
-
|
|
336
|
-
strength = self.memory_strength(
|
|
337
|
-
access_count, importance, confirmation_count, emotional_salience,
|
|
338
|
-
)
|
|
339
|
-
trust = fact.get("trust_score", 1.0)
|
|
340
|
-
ret = self.trust_modulated_retention(hours_since, strength, trust)
|
|
341
|
-
zone = self.lifecycle_zone(ret)
|
|
342
|
-
|
|
343
|
-
results.append({
|
|
344
|
-
"fact_id": fact["fact_id"],
|
|
345
|
-
"retention": ret,
|
|
346
|
-
"strength": strength,
|
|
347
|
-
"zone": zone,
|
|
348
|
-
"access_count": access_count,
|
|
349
|
-
"last_accessed_at": last_accessed_at,
|
|
350
|
-
})
|
|
351
|
-
|
|
352
|
-
return results
|