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,188 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
|
|
2
|
-
# Licensed under AGPL-3.0-or-later - see LICENSE file
|
|
3
|
-
|
|
4
|
-
"""M032 — durable, append-only receipts for canonical write commands.
|
|
5
|
-
|
|
6
|
-
The receipt ledger is profile-isolated at the client idempotency boundary.
|
|
7
|
-
``command_id`` and ``journal_id`` remain globally durable identifiers; a
|
|
8
|
-
client-supplied idempotency key is unique only with its target profile. An
|
|
9
|
-
operation id is a projection label (for example, ``update:<fact_id>``), not a
|
|
10
|
-
durable command identifier, so it is deliberately indexed but not unique.
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
from __future__ import annotations
|
|
14
|
-
|
|
15
|
-
import sqlite3
|
|
16
|
-
|
|
17
|
-
NAME = "M032_write_coordinator_admission"
|
|
18
|
-
DB_TARGET = "memory"
|
|
19
|
-
|
|
20
|
-
DDL = """
|
|
21
|
-
CREATE TABLE IF NOT EXISTS write_commits (
|
|
22
|
-
commit_sequence INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
23
|
-
command_id TEXT NOT NULL UNIQUE,
|
|
24
|
-
journal_id TEXT NOT NULL UNIQUE,
|
|
25
|
-
command_kind TEXT NOT NULL,
|
|
26
|
-
request_hash TEXT NOT NULL,
|
|
27
|
-
profile_id TEXT NOT NULL,
|
|
28
|
-
idempotency_key TEXT NOT NULL,
|
|
29
|
-
operation_id TEXT NOT NULL,
|
|
30
|
-
receipt_json TEXT NOT NULL,
|
|
31
|
-
committed_at REAL NOT NULL,
|
|
32
|
-
UNIQUE(profile_id, idempotency_key)
|
|
33
|
-
);
|
|
34
|
-
CREATE INDEX IF NOT EXISTS idx_write_commits_committed_at
|
|
35
|
-
ON write_commits (committed_at);
|
|
36
|
-
CREATE INDEX IF NOT EXISTS idx_write_commits_operation_id
|
|
37
|
-
ON write_commits (operation_id);
|
|
38
|
-
CREATE TRIGGER IF NOT EXISTS trg_write_commits_immutable_update
|
|
39
|
-
BEFORE UPDATE ON write_commits
|
|
40
|
-
BEGIN
|
|
41
|
-
SELECT RAISE(ABORT, 'write_commits receipts are immutable');
|
|
42
|
-
END;
|
|
43
|
-
CREATE TRIGGER IF NOT EXISTS trg_write_commits_immutable_delete
|
|
44
|
-
BEFORE DELETE ON write_commits
|
|
45
|
-
BEGIN
|
|
46
|
-
SELECT RAISE(ABORT, 'write_commits receipts are immutable');
|
|
47
|
-
END;
|
|
48
|
-
"""
|
|
49
|
-
|
|
50
|
-
_CREATE_TABLE = DDL.split(";", 1)[0]
|
|
51
|
-
_CREATE_COMMITTED_AT_INDEX = (
|
|
52
|
-
"CREATE INDEX IF NOT EXISTS idx_write_commits_committed_at "
|
|
53
|
-
"ON write_commits (committed_at)"
|
|
54
|
-
)
|
|
55
|
-
_CREATE_OPERATION_ID_INDEX = (
|
|
56
|
-
"CREATE INDEX IF NOT EXISTS idx_write_commits_operation_id "
|
|
57
|
-
"ON write_commits (operation_id)"
|
|
58
|
-
)
|
|
59
|
-
_CREATE_UPDATE_TRIGGER = """
|
|
60
|
-
CREATE TRIGGER IF NOT EXISTS trg_write_commits_immutable_update
|
|
61
|
-
BEFORE UPDATE ON write_commits
|
|
62
|
-
BEGIN
|
|
63
|
-
SELECT RAISE(ABORT, 'write_commits receipts are immutable');
|
|
64
|
-
END
|
|
65
|
-
"""
|
|
66
|
-
_CREATE_DELETE_TRIGGER = """
|
|
67
|
-
CREATE TRIGGER IF NOT EXISTS trg_write_commits_immutable_delete
|
|
68
|
-
BEFORE DELETE ON write_commits
|
|
69
|
-
BEGIN
|
|
70
|
-
SELECT RAISE(ABORT, 'write_commits receipts are immutable');
|
|
71
|
-
END
|
|
72
|
-
"""
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def apply(conn: sqlite3.Connection) -> None:
|
|
76
|
-
"""Create or safely upgrade the profile-scoped append-only receipt ledger."""
|
|
77
|
-
if verify(conn):
|
|
78
|
-
return
|
|
79
|
-
if not _table_exists(conn):
|
|
80
|
-
_create_current_schema(conn)
|
|
81
|
-
return
|
|
82
|
-
_rebuild_legacy_schema(conn)
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
def repair(conn: sqlite3.Connection) -> None:
|
|
86
|
-
"""Repair a completed provisional M032 in developer/test databases."""
|
|
87
|
-
apply(conn)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
91
|
-
"""Return true only when the full profile-safe ledger contract exists."""
|
|
92
|
-
if not _table_exists(conn):
|
|
93
|
-
return False
|
|
94
|
-
columns = {row[1] for row in conn.execute("PRAGMA table_info(write_commits)").fetchall()}
|
|
95
|
-
required = {
|
|
96
|
-
"commit_sequence",
|
|
97
|
-
"command_id",
|
|
98
|
-
"journal_id",
|
|
99
|
-
"command_kind",
|
|
100
|
-
"request_hash",
|
|
101
|
-
"profile_id",
|
|
102
|
-
"idempotency_key",
|
|
103
|
-
"operation_id",
|
|
104
|
-
"receipt_json",
|
|
105
|
-
"committed_at",
|
|
106
|
-
}
|
|
107
|
-
if not required <= columns:
|
|
108
|
-
return False
|
|
109
|
-
if not _has_unique_index(conn, ("command_id",)):
|
|
110
|
-
return False
|
|
111
|
-
if not _has_unique_index(conn, ("journal_id",)):
|
|
112
|
-
return False
|
|
113
|
-
if not _has_unique_index(conn, ("profile_id", "idempotency_key")):
|
|
114
|
-
return False
|
|
115
|
-
if _has_unique_index(conn, ("idempotency_key",)):
|
|
116
|
-
return False
|
|
117
|
-
if _has_unique_index(conn, ("operation_id",)):
|
|
118
|
-
return False
|
|
119
|
-
object_names = {
|
|
120
|
-
row[0]
|
|
121
|
-
for row in conn.execute(
|
|
122
|
-
"SELECT name FROM sqlite_master WHERE name IN (?, ?, ?, ?)",
|
|
123
|
-
(
|
|
124
|
-
"idx_write_commits_committed_at",
|
|
125
|
-
"idx_write_commits_operation_id",
|
|
126
|
-
"trg_write_commits_immutable_update",
|
|
127
|
-
"trg_write_commits_immutable_delete",
|
|
128
|
-
),
|
|
129
|
-
).fetchall()
|
|
130
|
-
}
|
|
131
|
-
return object_names == {
|
|
132
|
-
"idx_write_commits_committed_at",
|
|
133
|
-
"idx_write_commits_operation_id",
|
|
134
|
-
"trg_write_commits_immutable_update",
|
|
135
|
-
"trg_write_commits_immutable_delete",
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
def _table_exists(conn: sqlite3.Connection) -> bool:
|
|
140
|
-
return conn.execute(
|
|
141
|
-
"SELECT 1 FROM sqlite_master WHERE type='table' AND name='write_commits'"
|
|
142
|
-
).fetchone() is not None
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
def _has_unique_index(conn: sqlite3.Connection, columns: tuple[str, ...]) -> bool:
|
|
146
|
-
for index in conn.execute("PRAGMA index_list(write_commits)").fetchall():
|
|
147
|
-
if not index[2]:
|
|
148
|
-
continue
|
|
149
|
-
index_columns = tuple(
|
|
150
|
-
row[2] for row in conn.execute(f"PRAGMA index_info({index[1]})").fetchall()
|
|
151
|
-
)
|
|
152
|
-
if index_columns == columns:
|
|
153
|
-
return True
|
|
154
|
-
return False
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
def _create_current_schema(conn: sqlite3.Connection) -> None:
|
|
158
|
-
conn.execute(_CREATE_TABLE)
|
|
159
|
-
conn.execute(_CREATE_COMMITTED_AT_INDEX)
|
|
160
|
-
conn.execute(_CREATE_OPERATION_ID_INDEX)
|
|
161
|
-
conn.execute(_CREATE_UPDATE_TRIGGER)
|
|
162
|
-
conn.execute(_CREATE_DELETE_TRIGGER)
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
def _rebuild_legacy_schema(conn: sqlite3.Connection) -> None:
|
|
166
|
-
"""Rebuild only M032's own standalone table under one savepoint."""
|
|
167
|
-
conn.execute("SAVEPOINT m032_profile_scoped_idempotency")
|
|
168
|
-
try:
|
|
169
|
-
conn.execute("DROP TRIGGER IF EXISTS trg_write_commits_immutable_update")
|
|
170
|
-
conn.execute("DROP TRIGGER IF EXISTS trg_write_commits_immutable_delete")
|
|
171
|
-
conn.execute("ALTER TABLE write_commits RENAME TO write_commits_legacy")
|
|
172
|
-
conn.execute("DROP INDEX IF EXISTS idx_write_commits_committed_at")
|
|
173
|
-
conn.execute("DROP INDEX IF EXISTS idx_write_commits_operation_id")
|
|
174
|
-
_create_current_schema(conn)
|
|
175
|
-
conn.execute(
|
|
176
|
-
"INSERT INTO write_commits("
|
|
177
|
-
"commit_sequence, command_id, journal_id, command_kind, request_hash, "
|
|
178
|
-
"profile_id, idempotency_key, operation_id, receipt_json, committed_at"
|
|
179
|
-
") SELECT commit_sequence, command_id, journal_id, command_kind, request_hash, "
|
|
180
|
-
"profile_id, idempotency_key, operation_id, receipt_json, committed_at "
|
|
181
|
-
"FROM write_commits_legacy"
|
|
182
|
-
)
|
|
183
|
-
conn.execute("DROP TABLE write_commits_legacy")
|
|
184
|
-
except BaseException:
|
|
185
|
-
conn.execute("ROLLBACK TO m032_profile_scoped_idempotency")
|
|
186
|
-
conn.execute("RELEASE m032_profile_scoped_idempotency")
|
|
187
|
-
raise
|
|
188
|
-
conn.execute("RELEASE m032_profile_scoped_idempotency")
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
|
|
2
|
-
# Licensed under AGPL-3.0-or-later - see LICENSE file
|
|
3
|
-
|
|
4
|
-
from __future__ import annotations
|
|
5
|
-
|
|
6
|
-
import sqlite3
|
|
7
|
-
|
|
8
|
-
NAME = "M033_projection_transactions"
|
|
9
|
-
DB_TARGET = "memory"
|
|
10
|
-
|
|
11
|
-
DDL = """
|
|
12
|
-
CREATE TABLE IF NOT EXISTS projection_obligations (
|
|
13
|
-
obligation_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
14
|
-
operation_id TEXT NOT NULL,
|
|
15
|
-
profile_id TEXT NOT NULL,
|
|
16
|
-
owner TEXT NOT NULL,
|
|
17
|
-
kind TEXT NOT NULL CHECK (kind IN ('apply', 'erase')),
|
|
18
|
-
subject_id TEXT NOT NULL,
|
|
19
|
-
revision INTEGER NOT NULL DEFAULT 0,
|
|
20
|
-
state TEXT NOT NULL DEFAULT 'pending' CHECK (
|
|
21
|
-
state IN (
|
|
22
|
-
'pending', 'applied', 'verified',
|
|
23
|
-
'failed', 'compensated', 'erased'
|
|
24
|
-
)
|
|
25
|
-
),
|
|
26
|
-
checksum TEXT,
|
|
27
|
-
detail TEXT,
|
|
28
|
-
attempts INTEGER NOT NULL DEFAULT 0,
|
|
29
|
-
created_at REAL NOT NULL,
|
|
30
|
-
updated_at REAL NOT NULL,
|
|
31
|
-
UNIQUE (operation_id, owner, kind)
|
|
32
|
-
);
|
|
33
|
-
CREATE INDEX IF NOT EXISTS idx_projection_obligations_operation
|
|
34
|
-
ON projection_obligations (operation_id);
|
|
35
|
-
CREATE INDEX IF NOT EXISTS idx_projection_obligations_profile_state
|
|
36
|
-
ON projection_obligations (profile_id, state);
|
|
37
|
-
CREATE INDEX IF NOT EXISTS idx_projection_obligations_state_updated
|
|
38
|
-
ON projection_obligations (state, updated_at);
|
|
39
|
-
CREATE TABLE IF NOT EXISTS completion_manifests (
|
|
40
|
-
operation_id TEXT PRIMARY KEY,
|
|
41
|
-
profile_id TEXT NOT NULL,
|
|
42
|
-
state TEXT NOT NULL CHECK (
|
|
43
|
-
state IN ('COMPLETE', 'DEGRADED', 'FAILED')
|
|
44
|
-
),
|
|
45
|
-
all_met INTEGER NOT NULL DEFAULT 0 CHECK (all_met IN (0, 1)),
|
|
46
|
-
obligation_count INTEGER NOT NULL DEFAULT 0,
|
|
47
|
-
owner_evidence_json TEXT NOT NULL,
|
|
48
|
-
manifest_hash TEXT NOT NULL,
|
|
49
|
-
created_at REAL NOT NULL,
|
|
50
|
-
updated_at REAL NOT NULL
|
|
51
|
-
);
|
|
52
|
-
CREATE INDEX IF NOT EXISTS idx_completion_manifests_profile_state
|
|
53
|
-
ON completion_manifests (profile_id, state);
|
|
54
|
-
"""
|
|
55
|
-
|
|
56
|
-
_REQUIRED_OBLIGATION_COLUMNS = frozenset({
|
|
57
|
-
"obligation_id",
|
|
58
|
-
"operation_id",
|
|
59
|
-
"profile_id",
|
|
60
|
-
"owner",
|
|
61
|
-
"kind",
|
|
62
|
-
"subject_id",
|
|
63
|
-
"revision",
|
|
64
|
-
"state",
|
|
65
|
-
"checksum",
|
|
66
|
-
"detail",
|
|
67
|
-
"attempts",
|
|
68
|
-
"created_at",
|
|
69
|
-
"updated_at",
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
_REQUIRED_MANIFEST_COLUMNS = frozenset({
|
|
73
|
-
"operation_id",
|
|
74
|
-
"profile_id",
|
|
75
|
-
"state",
|
|
76
|
-
"all_met",
|
|
77
|
-
"obligation_count",
|
|
78
|
-
"owner_evidence_json",
|
|
79
|
-
"manifest_hash",
|
|
80
|
-
"created_at",
|
|
81
|
-
"updated_at",
|
|
82
|
-
})
|
|
83
|
-
|
|
84
|
-
_REQUIRED_OBJECTS = frozenset({
|
|
85
|
-
"projection_obligations",
|
|
86
|
-
"completion_manifests",
|
|
87
|
-
"idx_projection_obligations_operation",
|
|
88
|
-
"idx_projection_obligations_profile_state",
|
|
89
|
-
"idx_projection_obligations_state_updated",
|
|
90
|
-
"idx_completion_manifests_profile_state",
|
|
91
|
-
})
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
def apply(conn: sqlite3.Connection) -> None:
|
|
95
|
-
if verify(conn):
|
|
96
|
-
return
|
|
97
|
-
conn.executescript(DDL)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
def repair(conn: sqlite3.Connection) -> None:
|
|
101
|
-
apply(conn)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
105
|
-
if not _table_exists(conn, "projection_obligations"):
|
|
106
|
-
return False
|
|
107
|
-
if not _table_exists(conn, "completion_manifests"):
|
|
108
|
-
return False
|
|
109
|
-
if not _REQUIRED_OBLIGATION_COLUMNS <= _columns(conn, "projection_obligations"):
|
|
110
|
-
return False
|
|
111
|
-
if not _REQUIRED_MANIFEST_COLUMNS <= _columns(conn, "completion_manifests"):
|
|
112
|
-
return False
|
|
113
|
-
if not _has_unique_index(conn, "projection_obligations", ("operation_id", "owner", "kind")):
|
|
114
|
-
return False
|
|
115
|
-
present = {
|
|
116
|
-
row[0]
|
|
117
|
-
for row in conn.execute(
|
|
118
|
-
"SELECT name FROM sqlite_master WHERE name IN "
|
|
119
|
-
"(?, ?, ?, ?, ?, ?)",
|
|
120
|
-
tuple(sorted(_REQUIRED_OBJECTS)),
|
|
121
|
-
).fetchall()
|
|
122
|
-
}
|
|
123
|
-
return _REQUIRED_OBJECTS <= present
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
def _table_exists(conn: sqlite3.Connection, name: str) -> bool:
|
|
127
|
-
return conn.execute(
|
|
128
|
-
"SELECT 1 FROM sqlite_master WHERE type='table' AND name=?",
|
|
129
|
-
(name,),
|
|
130
|
-
).fetchone() is not None
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
def _columns(conn: sqlite3.Connection, table: str) -> set[str]:
|
|
134
|
-
return {row[1] for row in conn.execute(f"PRAGMA table_info({table})").fetchall()}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
def _has_unique_index(
|
|
138
|
-
conn: sqlite3.Connection, table: str, columns: tuple[str, ...],
|
|
139
|
-
) -> bool:
|
|
140
|
-
for index in conn.execute(f"PRAGMA index_list({table})").fetchall():
|
|
141
|
-
if not index[2]:
|
|
142
|
-
continue
|
|
143
|
-
index_columns = tuple(
|
|
144
|
-
row[2] for row in conn.execute(f"PRAGMA index_info({index[1]})").fetchall()
|
|
145
|
-
)
|
|
146
|
-
if index_columns == columns:
|
|
147
|
-
return True
|
|
148
|
-
return False
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
|
|
2
|
-
# Licensed under AGPL-3.0-or-later - see LICENSE file
|
|
3
|
-
|
|
4
|
-
from __future__ import annotations
|
|
5
|
-
|
|
6
|
-
import sqlite3
|
|
7
|
-
|
|
8
|
-
NAME = "M034_obligation_integrity"
|
|
9
|
-
DB_TARGET = "memory"
|
|
10
|
-
|
|
11
|
-
DDL = """
|
|
12
|
-
ALTER TABLE projection_obligations ADD COLUMN context_digest TEXT;
|
|
13
|
-
ALTER TABLE projection_obligations ADD COLUMN verify_attempts INTEGER NOT NULL DEFAULT 0;
|
|
14
|
-
ALTER TABLE projection_obligations ADD COLUMN last_verified_at REAL;
|
|
15
|
-
"""
|
|
16
|
-
|
|
17
|
-
_ADDED_COLUMNS = {
|
|
18
|
-
"context_digest": "ALTER TABLE projection_obligations ADD COLUMN context_digest TEXT",
|
|
19
|
-
"verify_attempts": (
|
|
20
|
-
"ALTER TABLE projection_obligations "
|
|
21
|
-
"ADD COLUMN verify_attempts INTEGER NOT NULL DEFAULT 0"
|
|
22
|
-
),
|
|
23
|
-
"last_verified_at": (
|
|
24
|
-
"ALTER TABLE projection_obligations ADD COLUMN last_verified_at REAL"
|
|
25
|
-
),
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def apply(conn: sqlite3.Connection) -> None:
|
|
30
|
-
if not _table_exists(conn):
|
|
31
|
-
return
|
|
32
|
-
existing = _columns(conn)
|
|
33
|
-
for column, statement in _ADDED_COLUMNS.items():
|
|
34
|
-
if column not in existing:
|
|
35
|
-
conn.execute(statement)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def repair(conn: sqlite3.Connection) -> None:
|
|
39
|
-
apply(conn)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
43
|
-
if not _table_exists(conn):
|
|
44
|
-
return False
|
|
45
|
-
return set(_ADDED_COLUMNS) <= _columns(conn)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
def _table_exists(conn: sqlite3.Connection) -> bool:
|
|
49
|
-
return conn.execute(
|
|
50
|
-
"SELECT 1 FROM sqlite_master WHERE type='table' AND name='projection_obligations'"
|
|
51
|
-
).fetchone() is not None
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def _columns(conn: sqlite3.Connection) -> set[str]:
|
|
55
|
-
return {
|
|
56
|
-
row[1]
|
|
57
|
-
for row in conn.execute("PRAGMA table_info(projection_obligations)").fetchall()
|
|
58
|
-
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
|
|
2
|
-
# Licensed under AGPL-3.0-or-later - see LICENSE file
|
|
3
|
-
|
|
4
|
-
from __future__ import annotations
|
|
5
|
-
|
|
6
|
-
import sqlite3
|
|
7
|
-
|
|
8
|
-
NAME = "M035_erasure_receipts"
|
|
9
|
-
DB_TARGET = "memory"
|
|
10
|
-
|
|
11
|
-
DDL = """
|
|
12
|
-
CREATE TABLE IF NOT EXISTS erasure_receipts (
|
|
13
|
-
erasure_id TEXT PRIMARY KEY,
|
|
14
|
-
profile_id TEXT NOT NULL,
|
|
15
|
-
subject_type TEXT NOT NULL CHECK (
|
|
16
|
-
subject_type IN ('fact', 'entity', 'profile')
|
|
17
|
-
),
|
|
18
|
-
subject_id TEXT NOT NULL,
|
|
19
|
-
requested_by TEXT NOT NULL DEFAULT '',
|
|
20
|
-
fact_count INTEGER NOT NULL DEFAULT 0,
|
|
21
|
-
state TEXT NOT NULL CHECK (state IN ('COMPLETE', 'FAILED')),
|
|
22
|
-
all_erased INTEGER NOT NULL DEFAULT 0 CHECK (all_erased IN (0, 1)),
|
|
23
|
-
owner_evidence_json TEXT NOT NULL DEFAULT '[]',
|
|
24
|
-
audit_hash TEXT NOT NULL,
|
|
25
|
-
requested_at REAL NOT NULL,
|
|
26
|
-
completed_at REAL NOT NULL
|
|
27
|
-
);
|
|
28
|
-
CREATE INDEX IF NOT EXISTS idx_erasure_receipts_profile
|
|
29
|
-
ON erasure_receipts (profile_id);
|
|
30
|
-
CREATE INDEX IF NOT EXISTS idx_erasure_receipts_state
|
|
31
|
-
ON erasure_receipts (state);
|
|
32
|
-
CREATE TABLE IF NOT EXISTS projection_tombstones (
|
|
33
|
-
profile_id TEXT NOT NULL,
|
|
34
|
-
fact_id TEXT NOT NULL,
|
|
35
|
-
erasure_id TEXT NOT NULL,
|
|
36
|
-
memory_id TEXT,
|
|
37
|
-
created_at REAL NOT NULL,
|
|
38
|
-
PRIMARY KEY (profile_id, fact_id)
|
|
39
|
-
);
|
|
40
|
-
CREATE INDEX IF NOT EXISTS idx_projection_tombstones_fact
|
|
41
|
-
ON projection_tombstones (fact_id);
|
|
42
|
-
"""
|
|
43
|
-
|
|
44
|
-
_REQUIRED_RECEIPT_COLUMNS = frozenset({
|
|
45
|
-
"erasure_id",
|
|
46
|
-
"profile_id",
|
|
47
|
-
"subject_type",
|
|
48
|
-
"subject_id",
|
|
49
|
-
"requested_by",
|
|
50
|
-
"fact_count",
|
|
51
|
-
"state",
|
|
52
|
-
"all_erased",
|
|
53
|
-
"owner_evidence_json",
|
|
54
|
-
"audit_hash",
|
|
55
|
-
"requested_at",
|
|
56
|
-
"completed_at",
|
|
57
|
-
})
|
|
58
|
-
|
|
59
|
-
_REQUIRED_TOMBSTONE_COLUMNS = frozenset({
|
|
60
|
-
"profile_id",
|
|
61
|
-
"fact_id",
|
|
62
|
-
"erasure_id",
|
|
63
|
-
"memory_id",
|
|
64
|
-
"created_at",
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
_REQUIRED_OBJECTS = frozenset({
|
|
68
|
-
"erasure_receipts",
|
|
69
|
-
"projection_tombstones",
|
|
70
|
-
"idx_erasure_receipts_profile",
|
|
71
|
-
"idx_erasure_receipts_state",
|
|
72
|
-
"idx_projection_tombstones_fact",
|
|
73
|
-
})
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def apply(conn: sqlite3.Connection) -> None:
|
|
77
|
-
if verify(conn):
|
|
78
|
-
return
|
|
79
|
-
conn.executescript(DDL)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
def repair(conn: sqlite3.Connection) -> None:
|
|
83
|
-
apply(conn)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
87
|
-
if not _table_exists(conn, "erasure_receipts"):
|
|
88
|
-
return False
|
|
89
|
-
if not _table_exists(conn, "projection_tombstones"):
|
|
90
|
-
return False
|
|
91
|
-
if not _REQUIRED_RECEIPT_COLUMNS <= _columns(conn, "erasure_receipts"):
|
|
92
|
-
return False
|
|
93
|
-
if not _REQUIRED_TOMBSTONE_COLUMNS <= _columns(conn, "projection_tombstones"):
|
|
94
|
-
return False
|
|
95
|
-
present = {
|
|
96
|
-
row[0]
|
|
97
|
-
for row in conn.execute(
|
|
98
|
-
"SELECT name FROM sqlite_master WHERE name IN (?, ?, ?, ?, ?)",
|
|
99
|
-
tuple(sorted(_REQUIRED_OBJECTS)),
|
|
100
|
-
).fetchall()
|
|
101
|
-
}
|
|
102
|
-
return _REQUIRED_OBJECTS <= present
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
def _table_exists(conn: sqlite3.Connection, name: str) -> bool:
|
|
106
|
-
return conn.execute(
|
|
107
|
-
"SELECT 1 FROM sqlite_master WHERE type='table' AND name=?",
|
|
108
|
-
(name,),
|
|
109
|
-
).fetchone() is not None
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
def _columns(conn: sqlite3.Connection, table: str) -> set[str]:
|
|
113
|
-
return {row[1] for row in conn.execute(f"PRAGMA table_info({table})").fetchall()}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2026 Varun Pratap Bhardwaj / Qualixar
|
|
2
|
-
# Licensed under AGPL-3.0-or-later - see LICENSE file
|
|
3
|
-
|
|
4
|
-
from __future__ import annotations
|
|
5
|
-
|
|
6
|
-
import sqlite3
|
|
7
|
-
|
|
8
|
-
NAME = "M036_vector_row_map"
|
|
9
|
-
DB_TARGET = "memory"
|
|
10
|
-
|
|
11
|
-
DDL = """
|
|
12
|
-
CREATE TABLE IF NOT EXISTS vector_row_map (
|
|
13
|
-
fact_id TEXT NOT NULL,
|
|
14
|
-
profile_id TEXT NOT NULL,
|
|
15
|
-
vec_rowid INTEGER NOT NULL,
|
|
16
|
-
PRIMARY KEY (fact_id)
|
|
17
|
-
);
|
|
18
|
-
CREATE INDEX IF NOT EXISTS idx_vector_row_map_profile
|
|
19
|
-
ON vector_row_map (profile_id);
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
_REQUIRED_COLUMNS = frozenset({"fact_id", "profile_id", "vec_rowid"})
|
|
23
|
-
|
|
24
|
-
_REQUIRED_OBJECTS = frozenset({
|
|
25
|
-
"vector_row_map",
|
|
26
|
-
"idx_vector_row_map_profile",
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
def apply(conn: sqlite3.Connection) -> None:
|
|
31
|
-
_reconcile(conn)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
def repair(conn: sqlite3.Connection) -> None:
|
|
35
|
-
_reconcile(conn)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def _reconcile(conn: sqlite3.Connection) -> None:
|
|
39
|
-
_rebuild_if_malformed(conn)
|
|
40
|
-
conn.executescript(DDL)
|
|
41
|
-
_backfill(conn)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def _rebuild_if_malformed(conn: sqlite3.Connection) -> None:
|
|
45
|
-
if not _table_exists(conn, "vector_row_map"):
|
|
46
|
-
return
|
|
47
|
-
if _REQUIRED_COLUMNS <= _columns(conn, "vector_row_map"):
|
|
48
|
-
return
|
|
49
|
-
conn.execute("DROP TABLE vector_row_map")
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def _backfill(conn: sqlite3.Connection) -> None:
|
|
53
|
-
if not _table_exists(conn, "embedding_metadata"):
|
|
54
|
-
return
|
|
55
|
-
if not {"fact_id", "profile_id", "vec_rowid"} <= _columns(conn, "embedding_metadata"):
|
|
56
|
-
return
|
|
57
|
-
conn.execute(
|
|
58
|
-
"INSERT INTO vector_row_map (fact_id, profile_id, vec_rowid) "
|
|
59
|
-
"SELECT em.fact_id, em.profile_id, em.vec_rowid FROM embedding_metadata em "
|
|
60
|
-
"WHERE em.fact_id IS NOT NULL AND em.vec_rowid IS NOT NULL "
|
|
61
|
-
"AND NOT EXISTS ("
|
|
62
|
-
"SELECT 1 FROM vector_row_map vrm WHERE vrm.fact_id = em.fact_id"
|
|
63
|
-
")"
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
def verify(conn: sqlite3.Connection) -> bool:
|
|
68
|
-
if not _table_exists(conn, "vector_row_map"):
|
|
69
|
-
return False
|
|
70
|
-
if not _REQUIRED_COLUMNS <= _columns(conn, "vector_row_map"):
|
|
71
|
-
return False
|
|
72
|
-
present = {
|
|
73
|
-
row[0]
|
|
74
|
-
for row in conn.execute(
|
|
75
|
-
"SELECT name FROM sqlite_master WHERE name IN (?, ?)",
|
|
76
|
-
tuple(sorted(_REQUIRED_OBJECTS)),
|
|
77
|
-
).fetchall()
|
|
78
|
-
}
|
|
79
|
-
if not _REQUIRED_OBJECTS <= present:
|
|
80
|
-
return False
|
|
81
|
-
return _backfill_complete(conn)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def _backfill_complete(conn: sqlite3.Connection) -> bool:
|
|
85
|
-
if not _table_exists(conn, "embedding_metadata"):
|
|
86
|
-
return True
|
|
87
|
-
if not {"fact_id", "vec_rowid"} <= _columns(conn, "embedding_metadata"):
|
|
88
|
-
return True
|
|
89
|
-
uncovered = conn.execute(
|
|
90
|
-
"SELECT 1 FROM embedding_metadata em "
|
|
91
|
-
"WHERE em.fact_id IS NOT NULL AND em.vec_rowid IS NOT NULL "
|
|
92
|
-
"AND NOT EXISTS ("
|
|
93
|
-
"SELECT 1 FROM vector_row_map vrm WHERE vrm.fact_id = em.fact_id"
|
|
94
|
-
") LIMIT 1"
|
|
95
|
-
).fetchone()
|
|
96
|
-
return uncovered is None
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
def _table_exists(conn: sqlite3.Connection, name: str) -> bool:
|
|
100
|
-
return conn.execute(
|
|
101
|
-
"SELECT 1 FROM sqlite_master WHERE type='table' AND name=?",
|
|
102
|
-
(name,),
|
|
103
|
-
).fetchone() is not None
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
def _columns(conn: sqlite3.Connection, table: str) -> set[str]:
|
|
107
|
-
return {row[1] for row in conn.execute(f"PRAGMA table_info({table})").fetchall()}
|