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,514 +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
|
-
"""Central component / dependency capability registry (v3.8.2).
|
|
6
|
-
|
|
7
|
-
Single source of truth for "what SLM needs, and whether it is present" —
|
|
8
|
-
consumed by the self-heal thread (``server.unified_daemon._self_heal``),
|
|
9
|
-
``slm doctor``, the ``GET /api/v3/components`` route, and the dashboard
|
|
10
|
-
System-Health panel.
|
|
11
|
-
|
|
12
|
-
Design principles
|
|
13
|
-
-----------------
|
|
14
|
-
* **Cheap, side-effect-free probes.** Probing NEVER loads torch into this
|
|
15
|
-
process and NEVER downloads anything: it uses import-spec checks, a
|
|
16
|
-
HuggingFace-cache lookup, and a short Ollama HTTP ping. Repair (model
|
|
17
|
-
download / pip install) is the self-heal thread's job — see
|
|
18
|
-
``core.component_healer`` and ``unified_daemon._self_heal`` Step 0/0.5.
|
|
19
|
-
* **Honest, actionable reporting.** Every component carries a status plus,
|
|
20
|
-
when missing, a plain-language fix command and whether SLM can auto-fix
|
|
21
|
-
it (``auto_fixable``). A non-technical user reads the report; the daemon
|
|
22
|
-
acts on ``auto_fixable`` items on their behalf.
|
|
23
|
-
* **Live repair visibility.** A tiny thread-safe transient overlay lets the
|
|
24
|
-
self-heal thread mark a component ``retrying`` while a download/install is
|
|
25
|
-
in flight, so the dashboard shows progress. Overlays are advisory and are
|
|
26
|
-
cleared as soon as a fresh probe confirms the component is present.
|
|
27
|
-
* **Immutability.** :class:`Component` is a frozen dataclass; snapshots
|
|
28
|
-
return freshly-built lists/dicts and are never mutated in place.
|
|
29
|
-
"""
|
|
30
|
-
|
|
31
|
-
from __future__ import annotations
|
|
32
|
-
|
|
33
|
-
import importlib.util
|
|
34
|
-
import threading
|
|
35
|
-
import time
|
|
36
|
-
from dataclasses import dataclass, replace
|
|
37
|
-
from pathlib import Path
|
|
38
|
-
from typing import Any
|
|
39
|
-
|
|
40
|
-
# --------------------------------------------------------------------------
|
|
41
|
-
# Status + category vocabulary
|
|
42
|
-
# --------------------------------------------------------------------------
|
|
43
|
-
|
|
44
|
-
STATUS_OK = "ok" # present and usable
|
|
45
|
-
STATUS_MISSING = "missing" # absent — recall/feature degraded until fixed
|
|
46
|
-
STATUS_DEGRADED = "degraded" # present but not fully functional / unverifiable
|
|
47
|
-
STATUS_RETRYING = "retrying" # self-heal is actively downloading/installing
|
|
48
|
-
|
|
49
|
-
CATEGORY_REQUIRED = "required" # core recall breaks without it
|
|
50
|
-
CATEGORY_RECOMMENDED = "recommended" # semantic quality degrades without it
|
|
51
|
-
CATEGORY_OPTIONAL = "optional" # only used by an opt-in feature
|
|
52
|
-
|
|
53
|
-
# Model repo ids — kept in sync with cli.setup_wizard (single definition here
|
|
54
|
-
# would be ideal, but importing the wizard pulls its CLI surface; these three
|
|
55
|
-
# strings are stable and asserted equal by tests).
|
|
56
|
-
_EMBED_MODEL = "nomic-ai/nomic-embed-text-v1.5"
|
|
57
|
-
_RERANKER_MODEL = "cross-encoder/ms-marco-MiniLM-L-12-v2"
|
|
58
|
-
_COMPRESSOR_MODEL = "microsoft/llmlingua-2-xlm-roberta-large-meetingbank"
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
@dataclass(frozen=True)
|
|
62
|
-
class Component:
|
|
63
|
-
"""One capability SLM depends on, and its current health.
|
|
64
|
-
|
|
65
|
-
Frozen: probes build new instances; the transient overlay uses
|
|
66
|
-
:func:`dataclasses.replace` to derive a modified copy rather than
|
|
67
|
-
mutating shared state.
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
key: str
|
|
71
|
-
label: str
|
|
72
|
-
category: str
|
|
73
|
-
status: str
|
|
74
|
-
detail: str = ""
|
|
75
|
-
fix_cmd: str = ""
|
|
76
|
-
auto_fixable: bool = False
|
|
77
|
-
last_checked: float = 0.0
|
|
78
|
-
|
|
79
|
-
def as_dict(self) -> dict[str, Any]:
|
|
80
|
-
return {
|
|
81
|
-
"key": self.key,
|
|
82
|
-
"label": self.label,
|
|
83
|
-
"category": self.category,
|
|
84
|
-
"status": self.status,
|
|
85
|
-
"detail": self.detail,
|
|
86
|
-
"fix_cmd": self.fix_cmd,
|
|
87
|
-
"auto_fixable": self.auto_fixable,
|
|
88
|
-
"last_checked": self.last_checked,
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
# --------------------------------------------------------------------------
|
|
93
|
-
# Environment helpers
|
|
94
|
-
# --------------------------------------------------------------------------
|
|
95
|
-
|
|
96
|
-
def pip_is_user_writable() -> bool:
|
|
97
|
-
"""True when a plain ``pip install`` into this interpreter is expected to
|
|
98
|
-
succeed — i.e. the interpreter is NOT PEP-668 externally-managed.
|
|
99
|
-
|
|
100
|
-
Mirrors the doctor's PEP-668 check. Used to decide whether SLM may
|
|
101
|
-
auto-``pip install`` a pure-python component (sqlite-vec) on the user's
|
|
102
|
-
behalf, or must instead hand them a pipx/uv fix command.
|
|
103
|
-
"""
|
|
104
|
-
try:
|
|
105
|
-
import sysconfig
|
|
106
|
-
|
|
107
|
-
stdlib = sysconfig.get_path("stdlib")
|
|
108
|
-
if not stdlib:
|
|
109
|
-
return True
|
|
110
|
-
return not (Path(stdlib) / "EXTERNALLY-MANAGED").exists()
|
|
111
|
-
except Exception:
|
|
112
|
-
# Unknown → be conservative and do NOT auto-install.
|
|
113
|
-
return False
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
def _module_present(module: str) -> bool:
|
|
117
|
-
"""True if ``module`` can be imported, WITHOUT importing it.
|
|
118
|
-
|
|
119
|
-
``find_spec`` only resolves the loader; it never executes the module, so
|
|
120
|
-
this stays cheap and never pulls torch/lancedb/etc. into the daemon.
|
|
121
|
-
"""
|
|
122
|
-
try:
|
|
123
|
-
return importlib.util.find_spec(module) is not None
|
|
124
|
-
except Exception:
|
|
125
|
-
# A broken/partial install can raise inside find_spec — treat as absent.
|
|
126
|
-
return False
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
def _hf_model_cached(repo_id: str) -> bool | None:
|
|
130
|
-
"""Heuristic: is ``repo_id`` already in the local HuggingFace cache?
|
|
131
|
-
|
|
132
|
-
Returns True/False, or None when it cannot be determined (huggingface_hub
|
|
133
|
-
not installed). Checks for the model's ``config.json`` — present for every
|
|
134
|
-
HF model — without loading torch/sentence-transformers. This is a fast
|
|
135
|
-
presence heuristic; the authoritative load-test lives in the healer's real
|
|
136
|
-
download call, which no-ops when the model is genuinely present.
|
|
137
|
-
"""
|
|
138
|
-
try:
|
|
139
|
-
from huggingface_hub import try_to_load_from_cache
|
|
140
|
-
except Exception:
|
|
141
|
-
return None
|
|
142
|
-
try:
|
|
143
|
-
hit = try_to_load_from_cache(repo_id, "config.json")
|
|
144
|
-
except Exception:
|
|
145
|
-
return None
|
|
146
|
-
# try_to_load_from_cache returns a filesystem path (str) only when the file
|
|
147
|
-
# is cached; None when unknown, or a _CACHED_NO_EXIST sentinel object when
|
|
148
|
-
# known-absent. Testing for str is version-proof across huggingface_hub
|
|
149
|
-
# releases (the sentinel's import location has moved between versions).
|
|
150
|
-
return isinstance(hit, str)
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
def _embedding_is_remote(config: Any) -> bool:
|
|
154
|
-
"""True when embeddings come from a remote endpoint (no local model needed).
|
|
155
|
-
|
|
156
|
-
Delegates to the wizard's canonical detector; conservative False on any
|
|
157
|
-
import/attribute error so a local embedder is still probed.
|
|
158
|
-
"""
|
|
159
|
-
try:
|
|
160
|
-
from superlocalmemory.cli.setup_wizard import _embedding_is_remote as _r
|
|
161
|
-
|
|
162
|
-
return bool(_r(config))
|
|
163
|
-
except Exception:
|
|
164
|
-
return False
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
def _reranker_is_remote(config: Any) -> bool:
|
|
168
|
-
"""True when reranking is served by a remote endpoint (v3.8.12, #105).
|
|
169
|
-
|
|
170
|
-
Same shape as ``_embedding_is_remote``: conservative False on any
|
|
171
|
-
import/attribute error so a local reranker is still probed.
|
|
172
|
-
"""
|
|
173
|
-
try:
|
|
174
|
-
from superlocalmemory.cli.setup_wizard import _reranker_is_remote as _r
|
|
175
|
-
|
|
176
|
-
return bool(_r(config))
|
|
177
|
-
except Exception:
|
|
178
|
-
return False
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
# --------------------------------------------------------------------------
|
|
182
|
-
# Individual probes — each returns a Component (never raises)
|
|
183
|
-
# --------------------------------------------------------------------------
|
|
184
|
-
|
|
185
|
-
def probe_python() -> Component:
|
|
186
|
-
import sys
|
|
187
|
-
|
|
188
|
-
v = sys.version_info
|
|
189
|
-
ok = v >= (3, 11)
|
|
190
|
-
return Component(
|
|
191
|
-
key="python",
|
|
192
|
-
label="Python runtime",
|
|
193
|
-
category=CATEGORY_REQUIRED,
|
|
194
|
-
status=STATUS_OK if ok else STATUS_MISSING,
|
|
195
|
-
detail=f"{v.major}.{v.minor}.{v.micro}" + ("" if ok else " (need >= 3.11)"),
|
|
196
|
-
fix_cmd="" if ok else "Install Python 3.11+ from https://python.org/downloads/",
|
|
197
|
-
auto_fixable=False,
|
|
198
|
-
last_checked=time.time(),
|
|
199
|
-
)
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
def probe_search_deps() -> Component:
|
|
203
|
-
"""sentence-transformers / torch / scikit-learn — semantic recall channel."""
|
|
204
|
-
missing = [m for m in ("sentence_transformers", "torch", "sklearn")
|
|
205
|
-
if not _module_present(m)]
|
|
206
|
-
ok = not missing
|
|
207
|
-
return Component(
|
|
208
|
-
key="search_deps",
|
|
209
|
-
label="Semantic search dependencies",
|
|
210
|
-
category=CATEGORY_RECOMMENDED,
|
|
211
|
-
status=STATUS_OK if ok else STATUS_MISSING,
|
|
212
|
-
detail="sentence-transformers, torch, scikit-learn"
|
|
213
|
-
if ok else "missing: " + ", ".join(missing),
|
|
214
|
-
fix_cmd="" if ok else "pip install 'superlocalmemory[search]'",
|
|
215
|
-
# NOT background-auto-installed: torch is ~2GB — a silent multi-GB
|
|
216
|
-
# download is a surprise the user must consent to. Fix command guides
|
|
217
|
-
# them; the daemon does not pull it unasked.
|
|
218
|
-
auto_fixable=False,
|
|
219
|
-
last_checked=time.time(),
|
|
220
|
-
)
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
def _probe_hf_model(key: str, label: str, repo_id: str, *,
|
|
224
|
-
category: str, auto_fixable: bool,
|
|
225
|
-
fix_cmd: str) -> Component:
|
|
226
|
-
cached = _hf_model_cached(repo_id)
|
|
227
|
-
if cached is True:
|
|
228
|
-
status, detail, fix = STATUS_OK, repo_id, ""
|
|
229
|
-
elif cached is False:
|
|
230
|
-
status, detail, fix = STATUS_MISSING, f"{repo_id} not in local cache", fix_cmd
|
|
231
|
-
else:
|
|
232
|
-
# huggingface_hub unavailable → can't verify; report degraded, not a
|
|
233
|
-
# false "missing" alarm.
|
|
234
|
-
status, detail, fix = (
|
|
235
|
-
STATUS_DEGRADED, "cannot verify (huggingface_hub unavailable)", "",
|
|
236
|
-
)
|
|
237
|
-
# Downloading model weights only helps when the runtime that loads them
|
|
238
|
-
# (sentence-transformers/torch) is already present. If search deps are
|
|
239
|
-
# missing, the fix is to install those first — not to pull weights.
|
|
240
|
-
can_auto = (
|
|
241
|
-
auto_fixable
|
|
242
|
-
and status == STATUS_MISSING
|
|
243
|
-
and _module_present("sentence_transformers")
|
|
244
|
-
)
|
|
245
|
-
return Component(
|
|
246
|
-
key=key, label=label, category=category,
|
|
247
|
-
status=status, detail=detail, fix_cmd=fix,
|
|
248
|
-
auto_fixable=can_auto,
|
|
249
|
-
last_checked=time.time(),
|
|
250
|
-
)
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
def probe_embedder_model(config: Any = None) -> Component:
|
|
254
|
-
if config is not None and _embedding_is_remote(config):
|
|
255
|
-
return Component(
|
|
256
|
-
key="embedder_model", label="Embedding model",
|
|
257
|
-
category=CATEGORY_REQUIRED, status=STATUS_OK,
|
|
258
|
-
detail="remote embedding endpoint (no local model required)",
|
|
259
|
-
last_checked=time.time(),
|
|
260
|
-
)
|
|
261
|
-
return _probe_hf_model(
|
|
262
|
-
"embedder_model", "Embedding model", _EMBED_MODEL,
|
|
263
|
-
category=CATEGORY_REQUIRED, auto_fixable=True,
|
|
264
|
-
fix_cmd="slm doctor --fix (or: slm warmup)",
|
|
265
|
-
)
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
def probe_reranker_model(config: Any = None) -> Component:
|
|
269
|
-
# Only auto-heal / flag the reranker when the user actually has it enabled.
|
|
270
|
-
enabled = True
|
|
271
|
-
try:
|
|
272
|
-
enabled = bool(getattr(config.retrieval, "use_cross_encoder", True)) \
|
|
273
|
-
if config is not None else True
|
|
274
|
-
except Exception:
|
|
275
|
-
enabled = True
|
|
276
|
-
if enabled and config is not None and _reranker_is_remote(config):
|
|
277
|
-
# v3.8.12 (#105): a remote /v1/rerank endpoint supplies the scores, so
|
|
278
|
-
# the local 130MB English cross-encoder is neither downloaded nor used.
|
|
279
|
-
# Reporting it MISSING would push the operator to "fix" a component the
|
|
280
|
-
# configured runtime never touches.
|
|
281
|
-
return Component(
|
|
282
|
-
key="reranker_model", label="Reranker model",
|
|
283
|
-
category=CATEGORY_RECOMMENDED, status=STATUS_OK,
|
|
284
|
-
detail="remote rerank endpoint (no local model required)",
|
|
285
|
-
last_checked=time.time(),
|
|
286
|
-
)
|
|
287
|
-
comp = _probe_hf_model(
|
|
288
|
-
"reranker_model", "Reranker model", _RERANKER_MODEL,
|
|
289
|
-
category=CATEGORY_RECOMMENDED if enabled else CATEGORY_OPTIONAL,
|
|
290
|
-
auto_fixable=enabled,
|
|
291
|
-
fix_cmd="slm doctor --fix",
|
|
292
|
-
)
|
|
293
|
-
if not enabled:
|
|
294
|
-
# A cached reranker is still inactive when the operator disabled the
|
|
295
|
-
# channel. The dashboard must describe configured runtime state, not
|
|
296
|
-
# machine-specific HuggingFace-cache state.
|
|
297
|
-
return replace(comp, status=STATUS_OK,
|
|
298
|
-
detail="disabled (retrieval.use_cross_encoder=false)",
|
|
299
|
-
fix_cmd="", auto_fixable=False)
|
|
300
|
-
return comp
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
def probe_compressor_model() -> Component:
|
|
304
|
-
"""LLMLingua-2 prose compressor (~560MB).
|
|
305
|
-
|
|
306
|
-
NEVER auto-downloaded by self-heal: it is large and only used by opt-in
|
|
307
|
-
aggressive optimize compression, where it lazy-downloads on first real
|
|
308
|
-
use. Reported as optional so the dashboard shows it without alarm.
|
|
309
|
-
"""
|
|
310
|
-
comp = _probe_hf_model(
|
|
311
|
-
"compressor_model", "Prose compression model", _COMPRESSOR_MODEL,
|
|
312
|
-
category=CATEGORY_OPTIONAL, auto_fixable=False,
|
|
313
|
-
fix_cmd="Downloads automatically on first use of aggressive compression",
|
|
314
|
-
)
|
|
315
|
-
if comp.status == STATUS_MISSING:
|
|
316
|
-
return replace(comp, detail=comp.detail + " (lazy — downloads on first use)")
|
|
317
|
-
return comp
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
def probe_sqlite_vec() -> Component:
|
|
321
|
-
present = _module_present("sqlite_vec")
|
|
322
|
-
writable = pip_is_user_writable()
|
|
323
|
-
if present:
|
|
324
|
-
status, detail, fix, auto = STATUS_OK, "sqlite-vec installed", "", False
|
|
325
|
-
elif writable:
|
|
326
|
-
status, detail, fix, auto = (
|
|
327
|
-
STATUS_MISSING, "sqlite-vec not installed (vector index)",
|
|
328
|
-
"slm doctor --fix (or: pip install sqlite-vec)", True,
|
|
329
|
-
)
|
|
330
|
-
else:
|
|
331
|
-
status, detail, fix, auto = (
|
|
332
|
-
STATUS_MISSING, "sqlite-vec not installed; interpreter externally managed",
|
|
333
|
-
"pipx inject superlocalmemory sqlite-vec (or use a uv/venv install)",
|
|
334
|
-
False,
|
|
335
|
-
)
|
|
336
|
-
return Component(
|
|
337
|
-
key="sqlite_vec", label="Vector index (sqlite-vec)",
|
|
338
|
-
category=CATEGORY_RECOMMENDED, status=status, detail=detail,
|
|
339
|
-
fix_cmd=fix, auto_fixable=auto, last_checked=time.time(),
|
|
340
|
-
)
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
def _probe_optional_pkg(key: str, label: str, module: str, pip_name: str,
|
|
344
|
-
note: str) -> Component:
|
|
345
|
-
present = _module_present(module)
|
|
346
|
-
return Component(
|
|
347
|
-
key=key, label=label, category=CATEGORY_OPTIONAL,
|
|
348
|
-
status=STATUS_OK if present else STATUS_MISSING,
|
|
349
|
-
detail=f"{pip_name} installed" if present else f"{note}",
|
|
350
|
-
fix_cmd="" if present else f"pip install {pip_name}",
|
|
351
|
-
auto_fixable=False, # opt-in scale/feature backends — staged consent.
|
|
352
|
-
last_checked=time.time(),
|
|
353
|
-
)
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
def probe_lancedb() -> Component:
|
|
357
|
-
return _probe_optional_pkg(
|
|
358
|
-
"lancedb", "LanceDB scale backend", "lancedb", "lancedb",
|
|
359
|
-
"not installed (optional large-scale vector backend)",
|
|
360
|
-
)
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
def probe_cozo() -> Component:
|
|
364
|
-
return _probe_optional_pkg(
|
|
365
|
-
"cozo", "CozoDB graph backend", "pycozo", "pycozo",
|
|
366
|
-
"not installed (optional large-scale graph backend)",
|
|
367
|
-
)
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
def probe_llmlingua() -> Component:
|
|
371
|
-
return _probe_optional_pkg(
|
|
372
|
-
"llmlingua", "LLMLingua compressor lib", "llmlingua", "llmlingua",
|
|
373
|
-
"not installed (optional prose compression)",
|
|
374
|
-
)
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
def probe_ollama(config: Any = None) -> Component:
|
|
378
|
-
"""Ollama reachability — only meaningful in Mode B.
|
|
379
|
-
|
|
380
|
-
Never auto-fixed: installing the Ollama binary or pulling a model is a
|
|
381
|
-
surprise network/disk action, so it is always a manual fix command.
|
|
382
|
-
"""
|
|
383
|
-
mode = ""
|
|
384
|
-
api_base = "http://localhost:11434"
|
|
385
|
-
model = ""
|
|
386
|
-
try:
|
|
387
|
-
if config is not None:
|
|
388
|
-
mode = getattr(getattr(config, "mode", None), "value", "") or ""
|
|
389
|
-
api_base = getattr(getattr(config, "llm", None), "api_base", api_base) or api_base
|
|
390
|
-
model = getattr(getattr(config, "llm", None), "model", "") or ""
|
|
391
|
-
except Exception:
|
|
392
|
-
pass
|
|
393
|
-
if mode != "b":
|
|
394
|
-
return Component(
|
|
395
|
-
key="ollama", label="Ollama (local LLM)",
|
|
396
|
-
category=CATEGORY_OPTIONAL, status=STATUS_OK,
|
|
397
|
-
detail="not in use (Mode B only)", last_checked=time.time(),
|
|
398
|
-
)
|
|
399
|
-
try:
|
|
400
|
-
import httpx
|
|
401
|
-
|
|
402
|
-
resp = httpx.get(f"{api_base}/api/tags", timeout=5.0)
|
|
403
|
-
if resp.status_code == 200:
|
|
404
|
-
names = [m.get("name", "").split(":")[0]
|
|
405
|
-
for m in resp.json().get("models", [])]
|
|
406
|
-
if model and model.split(":")[0] not in names:
|
|
407
|
-
return Component(
|
|
408
|
-
key="ollama", label="Ollama (local LLM)",
|
|
409
|
-
category=CATEGORY_RECOMMENDED, status=STATUS_DEGRADED,
|
|
410
|
-
detail=f"running but '{model}' not pulled",
|
|
411
|
-
fix_cmd=f"ollama pull {model}", auto_fixable=False,
|
|
412
|
-
last_checked=time.time(),
|
|
413
|
-
)
|
|
414
|
-
return Component(
|
|
415
|
-
key="ollama", label="Ollama (local LLM)",
|
|
416
|
-
category=CATEGORY_RECOMMENDED, status=STATUS_OK,
|
|
417
|
-
detail=f"running, {len(names)} models", last_checked=time.time(),
|
|
418
|
-
)
|
|
419
|
-
status_detail = f"HTTP {resp.status_code}"
|
|
420
|
-
except Exception:
|
|
421
|
-
status_detail = f"not reachable at {api_base}"
|
|
422
|
-
return Component(
|
|
423
|
-
key="ollama", label="Ollama (local LLM)",
|
|
424
|
-
category=CATEGORY_RECOMMENDED, status=STATUS_MISSING,
|
|
425
|
-
detail=status_detail,
|
|
426
|
-
fix_cmd="Install/start Ollama: https://ollama.com then: brew services start ollama",
|
|
427
|
-
auto_fixable=False, last_checked=time.time(),
|
|
428
|
-
)
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
# --------------------------------------------------------------------------
|
|
432
|
-
# Transient overlay — live self-heal progress
|
|
433
|
-
# --------------------------------------------------------------------------
|
|
434
|
-
|
|
435
|
-
_transient_lock = threading.Lock()
|
|
436
|
-
_transient: dict[str, tuple[str, str]] = {} # key -> (status, detail)
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
def mark_transient(key: str, status: str, detail: str = "") -> None:
|
|
440
|
-
"""Mark a component's live repair state (e.g. RETRYING while downloading)."""
|
|
441
|
-
with _transient_lock:
|
|
442
|
-
_transient[key] = (status, detail)
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
def clear_transient(key: str) -> None:
|
|
446
|
-
with _transient_lock:
|
|
447
|
-
_transient.pop(key, None)
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
def _apply_transient(comp: Component) -> Component:
|
|
451
|
-
with _transient_lock:
|
|
452
|
-
override = _transient.get(comp.key)
|
|
453
|
-
if override is None:
|
|
454
|
-
return comp
|
|
455
|
-
status, detail = override
|
|
456
|
-
# A confirmed-present component supersedes a stale "retrying" marker.
|
|
457
|
-
if comp.status == STATUS_OK:
|
|
458
|
-
return comp
|
|
459
|
-
return replace(comp, status=status, detail=detail or comp.detail)
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
# --------------------------------------------------------------------------
|
|
463
|
-
# Aggregation
|
|
464
|
-
# --------------------------------------------------------------------------
|
|
465
|
-
|
|
466
|
-
def probe_all(config: Any = None) -> list[Component]:
|
|
467
|
-
"""Probe every component once and return a fresh list (transient overlaid)."""
|
|
468
|
-
probes = [
|
|
469
|
-
probe_python(),
|
|
470
|
-
probe_search_deps(),
|
|
471
|
-
probe_embedder_model(config),
|
|
472
|
-
probe_reranker_model(config),
|
|
473
|
-
probe_compressor_model(),
|
|
474
|
-
probe_sqlite_vec(),
|
|
475
|
-
probe_llmlingua(),
|
|
476
|
-
probe_lancedb(),
|
|
477
|
-
probe_cozo(),
|
|
478
|
-
probe_ollama(config),
|
|
479
|
-
]
|
|
480
|
-
return [_apply_transient(c) for c in probes]
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
def auto_fixable_missing(config: Any = None) -> list[Component]:
|
|
484
|
-
"""The subset SLM may repair without asking — drives self-heal + doctor --fix."""
|
|
485
|
-
return [c for c in probe_all(config)
|
|
486
|
-
if c.status == STATUS_MISSING and c.auto_fixable]
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
def snapshot(config: Any = None) -> dict[str, Any]:
|
|
490
|
-
"""Full registry snapshot for /api/v3/components, doctor --json, dashboard."""
|
|
491
|
-
comps = probe_all(config)
|
|
492
|
-
counts = {STATUS_OK: 0, STATUS_MISSING: 0,
|
|
493
|
-
STATUS_DEGRADED: 0, STATUS_RETRYING: 0}
|
|
494
|
-
for c in comps:
|
|
495
|
-
counts[c.status] = counts.get(c.status, 0) + 1
|
|
496
|
-
missing_needed = [c for c in comps
|
|
497
|
-
if c.status == STATUS_MISSING
|
|
498
|
-
and c.category in (CATEGORY_REQUIRED, CATEGORY_RECOMMENDED)]
|
|
499
|
-
healthy = not missing_needed and counts[STATUS_RETRYING] == 0
|
|
500
|
-
return {
|
|
501
|
-
"components": [c.as_dict() for c in comps],
|
|
502
|
-
"summary": {
|
|
503
|
-
"ok": counts[STATUS_OK],
|
|
504
|
-
"missing": counts[STATUS_MISSING],
|
|
505
|
-
"degraded": counts[STATUS_DEGRADED],
|
|
506
|
-
"retrying": counts[STATUS_RETRYING],
|
|
507
|
-
"auto_fixable_missing": sum(
|
|
508
|
-
1 for c in comps
|
|
509
|
-
if c.status == STATUS_MISSING and c.auto_fixable
|
|
510
|
-
),
|
|
511
|
-
"healthy": healthy,
|
|
512
|
-
},
|
|
513
|
-
"generated_at": time.time(),
|
|
514
|
-
}
|