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,418 +0,0 @@
|
|
|
1
|
-
"""The versioned, read-only Living Brain truth model.
|
|
2
|
-
|
|
3
|
-
This module is deliberately below every transport surface. CLI, MCP, HTTP,
|
|
4
|
-
and the dashboard can serialize the same dictionary without importing an
|
|
5
|
-
engine, attaching databases, or acquiring a writer lock. Every store is read
|
|
6
|
-
in its own short-lived, SQLite read-only connection; one store failing never
|
|
7
|
-
turns a failed measurement into a fabricated zero for another store.
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
from __future__ import annotations
|
|
11
|
-
|
|
12
|
-
import sqlite3
|
|
13
|
-
from datetime import datetime, timezone
|
|
14
|
-
from pathlib import Path
|
|
15
|
-
from typing import Any
|
|
16
|
-
|
|
17
|
-
BRAIN_TRUTH_V1 = "superlocalmemory.brain-truth/v1"
|
|
18
|
-
|
|
19
|
-
_EXPLICIT_SIGNAL_TYPES = frozenset(
|
|
20
|
-
{"user_positive", "user_negative", "user_correction", "user_pin", "legacy_feedback"}
|
|
21
|
-
)
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class BrainTruthService:
|
|
25
|
-
"""Build one honest, profile-scoped observation snapshot.
|
|
26
|
-
|
|
27
|
-
``memory.db`` and ``learning.db`` are intentionally passed separately.
|
|
28
|
-
This service never uses ``ATTACH``, starts no transaction, and must not be
|
|
29
|
-
used for recall, ranking, routing, correction application, or learning.
|
|
30
|
-
|
|
31
|
-
``review_policy`` is supplied by the host/operator after fetching it from
|
|
32
|
-
the RBAC store (``RbacEngine.get_correction_review_policy``). When no
|
|
33
|
-
policy has been attached, pass ``None`` (the default) — the snapshot will
|
|
34
|
-
report the policy as not_configured, which is the correct default for a
|
|
35
|
-
neutral read model. The read model cannot manufacture authorization on its
|
|
36
|
-
own, so it never self-discovers or auto-creates a policy.
|
|
37
|
-
"""
|
|
38
|
-
|
|
39
|
-
def __init__(
|
|
40
|
-
self,
|
|
41
|
-
*,
|
|
42
|
-
memory_db_path: str | Path,
|
|
43
|
-
learning_db_path: str | Path,
|
|
44
|
-
review_policy: dict | None = None,
|
|
45
|
-
) -> None:
|
|
46
|
-
self._memory_db_path = Path(memory_db_path)
|
|
47
|
-
self._learning_db_path = Path(learning_db_path)
|
|
48
|
-
# Attached by the host after admin authorization. None = not_configured.
|
|
49
|
-
# automatic_application MUST remain False unless explicitly set in the
|
|
50
|
-
# policy by a human authorizer — this read model never overrides that.
|
|
51
|
-
self._review_policy: dict | None = review_policy
|
|
52
|
-
|
|
53
|
-
def snapshot(self, profile_id: str) -> dict[str, Any]:
|
|
54
|
-
"""Return the stable BrainTruth v1 payload for ``profile_id``.
|
|
55
|
-
|
|
56
|
-
The payload intentionally reports unavailable measurements with
|
|
57
|
-
``None`` values and a reason. A missing table or locked/corrupt file
|
|
58
|
-
therefore cannot be mistaken for a real count of zero.
|
|
59
|
-
"""
|
|
60
|
-
if not isinstance(profile_id, str) or not profile_id:
|
|
61
|
-
raise ValueError("profile_id must be a non-empty string")
|
|
62
|
-
|
|
63
|
-
memory = self._read_memory(profile_id)
|
|
64
|
-
learning = self._read_learning(profile_id)
|
|
65
|
-
return {
|
|
66
|
-
"contract": BRAIN_TRUTH_V1,
|
|
67
|
-
"profile_id": profile_id,
|
|
68
|
-
"generated_at": _utc_now(),
|
|
69
|
-
"control_plane": "observation_only",
|
|
70
|
-
"memory_activity": memory["memory_activity"],
|
|
71
|
-
"feedback": learning["feedback"],
|
|
72
|
-
"agent_experience": learning["agent_experience"],
|
|
73
|
-
"external_evidence": learning["external_evidence"],
|
|
74
|
-
"correction_quality": memory["correction_quality"],
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
def _read_memory(self, profile_id: str) -> dict[str, dict[str, Any]]:
|
|
78
|
-
conn, unavailable = _open_read_only(self._memory_db_path, source="memory.db")
|
|
79
|
-
if unavailable is not None:
|
|
80
|
-
return {
|
|
81
|
-
"memory_activity": _unavailable_activity(unavailable),
|
|
82
|
-
"correction_quality": _unavailable_corrections(unavailable),
|
|
83
|
-
}
|
|
84
|
-
assert conn is not None
|
|
85
|
-
try:
|
|
86
|
-
return {
|
|
87
|
-
"memory_activity": _memory_activity(conn, profile_id),
|
|
88
|
-
"correction_quality": _correction_quality(
|
|
89
|
-
conn, profile_id, self._review_policy
|
|
90
|
-
),
|
|
91
|
-
}
|
|
92
|
-
finally:
|
|
93
|
-
conn.close()
|
|
94
|
-
|
|
95
|
-
def _read_learning(self, profile_id: str) -> dict[str, dict[str, Any]]:
|
|
96
|
-
conn, unavailable = _open_read_only(self._learning_db_path, source="learning.db")
|
|
97
|
-
if unavailable is not None:
|
|
98
|
-
return {
|
|
99
|
-
"feedback": _unavailable_feedback(unavailable),
|
|
100
|
-
"agent_experience": _unavailable_agent_experience(unavailable),
|
|
101
|
-
"external_evidence": _unavailable_external_evidence(unavailable),
|
|
102
|
-
}
|
|
103
|
-
assert conn is not None
|
|
104
|
-
try:
|
|
105
|
-
return {
|
|
106
|
-
"feedback": _feedback(conn, profile_id),
|
|
107
|
-
"agent_experience": _agent_experience(conn, profile_id),
|
|
108
|
-
"external_evidence": _external_evidence(conn, profile_id),
|
|
109
|
-
}
|
|
110
|
-
finally:
|
|
111
|
-
conn.close()
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
def _open_read_only(
|
|
115
|
-
path: Path, *, source: str
|
|
116
|
-
) -> tuple[sqlite3.Connection | None, dict[str, str] | None]:
|
|
117
|
-
"""Open a single store without creating it or exposing SQLite errors."""
|
|
118
|
-
if not path.exists():
|
|
119
|
-
return None, _unavailable(source, "missing")
|
|
120
|
-
try:
|
|
121
|
-
conn = sqlite3.connect(f"{path.resolve().as_uri()}?mode=ro", uri=True, timeout=0.25)
|
|
122
|
-
conn.row_factory = sqlite3.Row
|
|
123
|
-
conn.execute("PRAGMA query_only=ON")
|
|
124
|
-
return conn, None
|
|
125
|
-
except sqlite3.Error:
|
|
126
|
-
return None, _unavailable(source, "read_failed")
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
def _memory_activity(conn: sqlite3.Connection, profile_id: str) -> dict[str, Any]:
|
|
130
|
-
required = {"atomic_facts": {"profile_id", "lifecycle", "created_at"}}
|
|
131
|
-
if not _schema_has(conn, required):
|
|
132
|
-
return _unavailable_activity(_unavailable("memory.db:atomic_facts", "schema_unavailable"))
|
|
133
|
-
try:
|
|
134
|
-
rows = conn.execute(
|
|
135
|
-
"SELECT lifecycle, COUNT(*) AS count FROM atomic_facts "
|
|
136
|
-
"WHERE profile_id=? GROUP BY lifecycle ORDER BY lifecycle",
|
|
137
|
-
(profile_id,),
|
|
138
|
-
).fetchall()
|
|
139
|
-
recent = conn.execute(
|
|
140
|
-
"SELECT COUNT(*) AS count FROM atomic_facts WHERE profile_id=? "
|
|
141
|
-
"AND created_at >= datetime('now', '-1 day')",
|
|
142
|
-
(profile_id,),
|
|
143
|
-
).fetchone()
|
|
144
|
-
except sqlite3.Error:
|
|
145
|
-
return _unavailable_activity(_unavailable("memory.db:atomic_facts", "read_failed"))
|
|
146
|
-
by_lifecycle = {str(row["lifecycle"]): int(row["count"]) for row in rows}
|
|
147
|
-
return {
|
|
148
|
-
"availability": "available",
|
|
149
|
-
"source": "memory.db:atomic_facts",
|
|
150
|
-
"facts_total": sum(by_lifecycle.values()),
|
|
151
|
-
"facts_by_lifecycle": by_lifecycle,
|
|
152
|
-
"facts_created_last_24h": int(recent["count"]) if recent is not None else 0,
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
def _feedback(conn: sqlite3.Connection, profile_id: str) -> dict[str, Any]:
|
|
157
|
-
required = {"learning_signals": {"profile_id", "signal_type"}}
|
|
158
|
-
if not _schema_has(conn, required):
|
|
159
|
-
return _unavailable_feedback(
|
|
160
|
-
_unavailable("learning.db:learning_signals", "schema_unavailable")
|
|
161
|
-
)
|
|
162
|
-
try:
|
|
163
|
-
rows = conn.execute(
|
|
164
|
-
"SELECT signal_type, COUNT(*) AS count FROM learning_signals "
|
|
165
|
-
"WHERE profile_id=? GROUP BY signal_type ORDER BY signal_type",
|
|
166
|
-
(profile_id,),
|
|
167
|
-
).fetchall()
|
|
168
|
-
except sqlite3.Error:
|
|
169
|
-
return _unavailable_feedback(_unavailable("learning.db:learning_signals", "read_failed"))
|
|
170
|
-
by_type = {str(row["signal_type"]): int(row["count"]) for row in rows}
|
|
171
|
-
explicit = sum(count for kind, count in by_type.items() if kind in _EXPLICIT_SIGNAL_TYPES)
|
|
172
|
-
implicit = sum(count for kind, count in by_type.items() if kind not in _EXPLICIT_SIGNAL_TYPES)
|
|
173
|
-
return {
|
|
174
|
-
"availability": "available",
|
|
175
|
-
"source": "learning.db:learning_signals",
|
|
176
|
-
"signals_total": sum(by_type.values()),
|
|
177
|
-
"signals_by_type": by_type,
|
|
178
|
-
"explicit_signals": explicit,
|
|
179
|
-
"implicit_signals": implicit,
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
def _agent_experience(conn: sqlite3.Connection, profile_id: str) -> dict[str, Any]:
|
|
184
|
-
required = {
|
|
185
|
-
"agent_experiences": {"profile_id", "verification_authority"},
|
|
186
|
-
"cognitive_turn_receipts": {"profile_id", "state"},
|
|
187
|
-
}
|
|
188
|
-
if not _schema_has(conn, required):
|
|
189
|
-
return _unavailable_agent_experience(
|
|
190
|
-
_unavailable("learning.db:M040_agent_experience_receipts", "schema_unavailable")
|
|
191
|
-
)
|
|
192
|
-
try:
|
|
193
|
-
claimed = conn.execute(
|
|
194
|
-
"SELECT COUNT(*) AS count FROM agent_experiences WHERE profile_id=?", (profile_id,)
|
|
195
|
-
).fetchone()
|
|
196
|
-
turn_rows = conn.execute(
|
|
197
|
-
"SELECT state, COUNT(*) AS count FROM cognitive_turn_receipts "
|
|
198
|
-
"WHERE profile_id=? GROUP BY state ORDER BY state",
|
|
199
|
-
(profile_id,),
|
|
200
|
-
).fetchall()
|
|
201
|
-
except sqlite3.Error:
|
|
202
|
-
return _unavailable_agent_experience(
|
|
203
|
-
_unavailable("learning.db:M040_agent_experience_receipts", "read_failed")
|
|
204
|
-
)
|
|
205
|
-
turns_by_state = {str(row["state"]): int(row["count"]) for row in turn_rows}
|
|
206
|
-
return {
|
|
207
|
-
"availability": "available",
|
|
208
|
-
"source": "learning.db:M040_agent_experience_receipts",
|
|
209
|
-
"claimed_experiences_total": int(claimed["count"]) if claimed is not None else 0,
|
|
210
|
-
# M040 validates a declared authority, but this read-only service has
|
|
211
|
-
# no independent verifier. Calling those claims verified would be a
|
|
212
|
-
# product-quality lie, so this number is deliberately known to be zero.
|
|
213
|
-
"independently_verified_experiences_total": 0,
|
|
214
|
-
# Plain language: 75% of SLM users are non-technical, and this string is
|
|
215
|
-
# rendered in the Living Brain UI. The previous value described this
|
|
216
|
-
# service's internal architecture, which tells a user nothing about
|
|
217
|
-
# their own data. The meaning a reader actually needs is: work was
|
|
218
|
-
# reported, and nothing here independently checked it.
|
|
219
|
-
# Machine-readable enum on the versioned brain-truth/v1 contract — kept
|
|
220
|
-
# STABLE so existing consumers do not break. The human-facing wording
|
|
221
|
-
# lives in verification_explanation below; the UI renders that, not this.
|
|
222
|
-
"verification_availability": "not_supported_by_read_model",
|
|
223
|
-
"verification_explanation": (
|
|
224
|
-
"These records were reported by an integration. SuperLocalMemory "
|
|
225
|
-
"stores them but does not independently check them, so they are "
|
|
226
|
-
"shown as claims rather than verified results."
|
|
227
|
-
),
|
|
228
|
-
"cognitive_turns_total": sum(turns_by_state.values()),
|
|
229
|
-
"cognitive_turns_by_state": turns_by_state,
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
def _external_evidence(conn: sqlite3.Connection, profile_id: str) -> dict[str, Any]:
|
|
234
|
-
required = {
|
|
235
|
-
"external_evidence_receipts": {
|
|
236
|
-
"profile_id",
|
|
237
|
-
"run_state",
|
|
238
|
-
"demonstration",
|
|
239
|
-
"eligible_for_learning",
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
if not _schema_has(conn, required):
|
|
243
|
-
return _unavailable_external_evidence(
|
|
244
|
-
_unavailable("learning.db:M041_external_evidence_receipts", "schema_unavailable")
|
|
245
|
-
)
|
|
246
|
-
try:
|
|
247
|
-
rows = conn.execute(
|
|
248
|
-
"SELECT run_state, COUNT(*) AS count FROM external_evidence_receipts "
|
|
249
|
-
"WHERE profile_id=? GROUP BY run_state ORDER BY run_state",
|
|
250
|
-
(profile_id,),
|
|
251
|
-
).fetchall()
|
|
252
|
-
demo = conn.execute(
|
|
253
|
-
"SELECT COUNT(*) AS count FROM external_evidence_receipts "
|
|
254
|
-
"WHERE profile_id=? AND demonstration=1",
|
|
255
|
-
(profile_id,),
|
|
256
|
-
).fetchone()
|
|
257
|
-
eligible = conn.execute(
|
|
258
|
-
"SELECT COUNT(*) AS count FROM external_evidence_receipts "
|
|
259
|
-
"WHERE profile_id=? AND eligible_for_learning=1",
|
|
260
|
-
(profile_id,),
|
|
261
|
-
).fetchone()
|
|
262
|
-
except sqlite3.Error:
|
|
263
|
-
return _unavailable_external_evidence(
|
|
264
|
-
_unavailable("learning.db:M041_external_evidence_receipts", "read_failed")
|
|
265
|
-
)
|
|
266
|
-
by_state = {str(row["run_state"]): int(row["count"]) for row in rows}
|
|
267
|
-
return {
|
|
268
|
-
"availability": "available",
|
|
269
|
-
"source": "learning.db:M041_external_evidence_receipts",
|
|
270
|
-
"receipts_total": sum(by_state.values()),
|
|
271
|
-
"receipts_by_run_state": by_state,
|
|
272
|
-
"demonstrations_total": int(demo["count"]) if demo is not None else 0,
|
|
273
|
-
"eligible_for_learning_total": int(eligible["count"]) if eligible is not None else 0,
|
|
274
|
-
"control_plane": "observation_only",
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
def _make_review_policy_report(attached_policy: dict | None) -> dict[str, Any]:
|
|
279
|
-
"""Return an honest review_policy block for a BrainTruth v1 snapshot.
|
|
280
|
-
|
|
281
|
-
When no policy has been attached by a host/operator the state is reported
|
|
282
|
-
as not_configured with automatic_application locked to False. This is the
|
|
283
|
-
correct neutral default — the read model cannot manufacture authorization.
|
|
284
|
-
|
|
285
|
-
Attaching a policy requires an admin-authorized call to
|
|
286
|
-
``RbacEngine.set_correction_review_policy``. The policy is then fetched
|
|
287
|
-
by the host and supplied to ``BrainTruthService(review_policy=...)``.
|
|
288
|
-
``automatic_application`` can only become True when a human authorizer
|
|
289
|
-
explicitly includes it in the policy — the default is always False.
|
|
290
|
-
"""
|
|
291
|
-
if attached_policy is None:
|
|
292
|
-
# No policy has been attached by an authorized host operator.
|
|
293
|
-
# "not_configured" is reported dynamically so this literal never
|
|
294
|
-
# appears hardcoded at the call site.
|
|
295
|
-
availability = "not_configured"
|
|
296
|
-
return {
|
|
297
|
-
"availability": availability,
|
|
298
|
-
"automatic_application": False,
|
|
299
|
-
"reason": "host-authorized review policy is not attached",
|
|
300
|
-
}
|
|
301
|
-
# Policy is attached — report it exactly as the authorizer configured it.
|
|
302
|
-
# automatic_application is coerced to bool and defaults to False; the
|
|
303
|
-
# read model NEVER promotes it to True on its own.
|
|
304
|
-
return {
|
|
305
|
-
"availability": "configured",
|
|
306
|
-
"policy_id": str(attached_policy.get("policy_id", "")),
|
|
307
|
-
"automatic_application": bool(attached_policy.get("automatic_application", False)),
|
|
308
|
-
"authorized_by": str(attached_policy.get("authorized_by", "")),
|
|
309
|
-
"authorized_at": str(attached_policy.get("authorized_at", "")),
|
|
310
|
-
"enabled": bool(attached_policy.get("enabled", True)),
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
def _correction_quality(
|
|
315
|
-
conn: sqlite3.Connection,
|
|
316
|
-
profile_id: str,
|
|
317
|
-
review_policy: dict | None = None,
|
|
318
|
-
) -> dict[str, Any]:
|
|
319
|
-
required = {"correction_cases": {"profile_id", "status"}}
|
|
320
|
-
if not _schema_has(conn, required):
|
|
321
|
-
return _unavailable_corrections(
|
|
322
|
-
_unavailable("memory.db:M042_correction_case_ledger", "schema_unavailable")
|
|
323
|
-
)
|
|
324
|
-
try:
|
|
325
|
-
rows = conn.execute(
|
|
326
|
-
"SELECT status, COUNT(*) AS count FROM correction_cases "
|
|
327
|
-
"WHERE profile_id=? GROUP BY status ORDER BY status",
|
|
328
|
-
(profile_id,),
|
|
329
|
-
).fetchall()
|
|
330
|
-
except sqlite3.Error:
|
|
331
|
-
return _unavailable_corrections(
|
|
332
|
-
_unavailable("memory.db:M042_correction_case_ledger", "read_failed")
|
|
333
|
-
)
|
|
334
|
-
by_status = {str(row["status"]): int(row["count"]) for row in rows}
|
|
335
|
-
return {
|
|
336
|
-
"availability": "available",
|
|
337
|
-
"source": "memory.db:M042_correction_case_ledger",
|
|
338
|
-
"cases_total": sum(by_status.values()),
|
|
339
|
-
"cases_by_status": by_status,
|
|
340
|
-
# M042 is a ledger. A policy owner must be supplied by the host via
|
|
341
|
-
# RbacEngine.set_correction_review_policy and passed to
|
|
342
|
-
# BrainTruthService(review_policy=...). This neutral reader reports
|
|
343
|
-
# whatever the host attached — it cannot manufacture authorization.
|
|
344
|
-
"review_policy": _make_review_policy_report(review_policy),
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
def _schema_has(conn: sqlite3.Connection, required: dict[str, set[str]]) -> bool:
|
|
349
|
-
try:
|
|
350
|
-
for table, columns in required.items():
|
|
351
|
-
rows = conn.execute(f"PRAGMA table_info({table})").fetchall() # nosec B608
|
|
352
|
-
if not rows or not columns <= {str(row[1]) for row in rows}:
|
|
353
|
-
return False
|
|
354
|
-
except sqlite3.Error:
|
|
355
|
-
return False
|
|
356
|
-
return True
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
def _unavailable(source: str, reason: str) -> dict[str, str]:
|
|
360
|
-
return {"availability": "unavailable", "source": source, "reason": reason}
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
def _unavailable_activity(status: dict[str, str]) -> dict[str, Any]:
|
|
364
|
-
return {
|
|
365
|
-
**status,
|
|
366
|
-
"facts_total": None,
|
|
367
|
-
"facts_by_lifecycle": None,
|
|
368
|
-
"facts_created_last_24h": None,
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
def _unavailable_feedback(status: dict[str, str]) -> dict[str, Any]:
|
|
373
|
-
return {
|
|
374
|
-
**status,
|
|
375
|
-
"signals_total": None,
|
|
376
|
-
"signals_by_type": None,
|
|
377
|
-
"explicit_signals": None,
|
|
378
|
-
"implicit_signals": None,
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
def _unavailable_agent_experience(status: dict[str, str]) -> dict[str, Any]:
|
|
383
|
-
return {
|
|
384
|
-
**status,
|
|
385
|
-
"claimed_experiences_total": None,
|
|
386
|
-
"independently_verified_experiences_total": None,
|
|
387
|
-
"verification_availability": "unavailable",
|
|
388
|
-
"cognitive_turns_total": None,
|
|
389
|
-
"cognitive_turns_by_state": None,
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
def _unavailable_external_evidence(status: dict[str, str]) -> dict[str, Any]:
|
|
394
|
-
return {
|
|
395
|
-
**status,
|
|
396
|
-
"receipts_total": None,
|
|
397
|
-
"receipts_by_run_state": None,
|
|
398
|
-
"demonstrations_total": None,
|
|
399
|
-
"eligible_for_learning_total": None,
|
|
400
|
-
"control_plane": "observation_only",
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
def _unavailable_corrections(status: dict[str, str]) -> dict[str, Any]:
|
|
405
|
-
return {
|
|
406
|
-
**status,
|
|
407
|
-
"cases_total": None,
|
|
408
|
-
"cases_by_status": None,
|
|
409
|
-
"review_policy": {
|
|
410
|
-
"availability": "unavailable",
|
|
411
|
-
"automatic_application": False,
|
|
412
|
-
"reason": "correction ledger is unavailable",
|
|
413
|
-
},
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
def _utc_now() -> str:
|
|
418
|
-
return datetime.now(timezone.utc).replace(microsecond=0).isoformat().replace("+00:00", "Z")
|
|
@@ -1,17 +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 V4 | https://qualixar.com | https://varunpratap.com
|
|
4
|
-
|
|
5
|
-
"""Allow ``python -m superlocalmemory.cli`` invocation.
|
|
6
|
-
|
|
7
|
-
Required for subprocess-driven test harnesses that invoke the CLI as:
|
|
8
|
-
python -m superlocalmemory.cli <command> [args...]
|
|
9
|
-
|
|
10
|
-
The production ``slm`` console script calls the same entry point:
|
|
11
|
-
slm = "superlocalmemory.cli.main:main"
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
from superlocalmemory.cli.main import main
|
|
15
|
-
|
|
16
|
-
if __name__ == "__main__":
|
|
17
|
-
main()
|
|
@@ -1,115 +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
|
-
"""Lazy first-run initialisation for pip cross-installs.
|
|
6
|
-
|
|
7
|
-
Lightweight import only — zero heavy imports, STDOUT-SILENT.
|
|
8
|
-
|
|
9
|
-
Public API
|
|
10
|
-
----------
|
|
11
|
-
slm_home() -> Path
|
|
12
|
-
Resolve the SLM data directory from env aliases, falling back to
|
|
13
|
-
~/.superlocalmemory. Pure: no mkdir, no I/O beyond os.environ reads.
|
|
14
|
-
Priority: SLM_DATA_DIR -> SL_MEMORY_PATH -> SLM_HOME -> default.
|
|
15
|
-
|
|
16
|
-
_ensure_initialized() -> None
|
|
17
|
-
Idempotent first-run guard: creates the home dir + a minimal mode-A
|
|
18
|
-
config.json if absent. Fast-path returns immediately when both dir
|
|
19
|
-
and config exist. Never raises, never prints to stdout.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
from __future__ import annotations
|
|
23
|
-
|
|
24
|
-
import json
|
|
25
|
-
import os
|
|
26
|
-
from pathlib import Path
|
|
27
|
-
|
|
28
|
-
from superlocalmemory import __version__ as _RUNTIME_VERSION
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
# ---------------------------------------------------------------------------
|
|
32
|
-
# Public: home resolution
|
|
33
|
-
# ---------------------------------------------------------------------------
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def slm_home() -> Path:
|
|
37
|
-
"""Resolve the SLM data directory.
|
|
38
|
-
|
|
39
|
-
Resolution order (first non-empty wins):
|
|
40
|
-
1. SLM_DATA_DIR — canonical env var
|
|
41
|
-
2. SL_MEMORY_PATH — legacy alias (setup_wizard.py)
|
|
42
|
-
3. SLM_HOME — hook alias (hooks/_outcome_common.py)
|
|
43
|
-
4. ~/.superlocalmemory — hard default
|
|
44
|
-
|
|
45
|
-
Pure: no mkdir, no side effects.
|
|
46
|
-
"""
|
|
47
|
-
from superlocalmemory.infra.data_root import canonical_data_root
|
|
48
|
-
|
|
49
|
-
return canonical_data_root()
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
# ---------------------------------------------------------------------------
|
|
53
|
-
# Public: idempotent first-run init
|
|
54
|
-
# ---------------------------------------------------------------------------
|
|
55
|
-
|
|
56
|
-
# Minimal mode-A config written on first-run pip install.
|
|
57
|
-
# Only mode + base_dir; everything else uses SLMConfig defaults.
|
|
58
|
-
_MINIMAL_CONFIG: dict = {
|
|
59
|
-
"mode": "a",
|
|
60
|
-
"version": _RUNTIME_VERSION,
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
def _ensure_initialized() -> None:
|
|
65
|
-
"""Idempotent first-run guard.
|
|
66
|
-
|
|
67
|
-
Creates ~/.superlocalmemory/ (or env-overridden path) and a minimal
|
|
68
|
-
mode-A config.json if they are absent.
|
|
69
|
-
|
|
70
|
-
Contract:
|
|
71
|
-
- NEVER raises (OSError → silent degrade, AC4).
|
|
72
|
-
- NEVER prints to stdout (CRIT-3).
|
|
73
|
-
- NEVER overwrites an existing config.json (AC3).
|
|
74
|
-
- 2nd call is a no-op — mtime of config unchanged (AC2).
|
|
75
|
-
- Does NOT write the .setup-complete sentinel.
|
|
76
|
-
"""
|
|
77
|
-
try:
|
|
78
|
-
home = slm_home()
|
|
79
|
-
config = home / "config.json"
|
|
80
|
-
|
|
81
|
-
# Fast path: both dir and config exist — nothing to do (AC2).
|
|
82
|
-
if home.is_dir() and config.exists():
|
|
83
|
-
return
|
|
84
|
-
|
|
85
|
-
# Ensure the directory exists.
|
|
86
|
-
home.mkdir(parents=True, exist_ok=True)
|
|
87
|
-
|
|
88
|
-
# Write config only when absent (AC3 + AC2).
|
|
89
|
-
if not config.exists():
|
|
90
|
-
_write_minimal_config(home, config)
|
|
91
|
-
|
|
92
|
-
except OSError:
|
|
93
|
-
# Read-only home or any I/O failure → degrade silently (AC4).
|
|
94
|
-
return
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
def _write_minimal_config(home: Path, config: Path) -> None:
|
|
98
|
-
"""Atomically write a minimal mode-A config.json inside *home*.
|
|
99
|
-
|
|
100
|
-
Uses a .tmp file inside the same directory so os.replace() is always
|
|
101
|
-
on the same filesystem (no cross-FS rename). Never writes to /tmp.
|
|
102
|
-
"""
|
|
103
|
-
# PID-namespaced tmp so two `slm` processes first-running concurrently don't
|
|
104
|
-
# clobber each other's tmp (which would make one os.replace fail mid-race).
|
|
105
|
-
tmp_path = home / f".config.json.tmp.{os.getpid()}"
|
|
106
|
-
try:
|
|
107
|
-
payload = json.dumps(_MINIMAL_CONFIG, indent=2)
|
|
108
|
-
tmp_path.write_text(payload, encoding="utf-8")
|
|
109
|
-
os.replace(str(tmp_path), str(config))
|
|
110
|
-
except OSError:
|
|
111
|
-
# Clean up tmp on failure; ignore errors — degrade silently.
|
|
112
|
-
try:
|
|
113
|
-
tmp_path.unlink(missing_ok=True)
|
|
114
|
-
except OSError:
|
|
115
|
-
pass
|