superlocalmemory 4.1.13 → 4.1.15
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 +103 -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,296 +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
|
-
"""Pending memory store — zero-loss async remember (Option C).
|
|
6
|
-
|
|
7
|
-
Problem: v3.3.20 async `slm remember` spawns a detached subprocess with
|
|
8
|
-
stderr=DEVNULL. If the embedding worker crashes, the user's data is silently
|
|
9
|
-
lost — they see "Queued for background processing" but the memory never stores.
|
|
10
|
-
|
|
11
|
-
Solution: Store-first, embed-later (Netflix pattern).
|
|
12
|
-
1. INSERT raw content into pending_memories (synchronous, 0.1s, no engine init)
|
|
13
|
-
2. Spawn background subprocess to process (extract facts, embed, build graph)
|
|
14
|
-
3. If background crashes, content survives in pending table
|
|
15
|
-
4. Next engine.initialize() auto-retries pending items
|
|
16
|
-
|
|
17
|
-
Uses a separate `pending.db` file — never touches memory.db directly.
|
|
18
|
-
Stdlib only — no SLM imports (must be fast).
|
|
19
|
-
|
|
20
|
-
Part of Qualixar | Author: Varun Pratap Bhardwaj
|
|
21
|
-
License: AGPL-3.0-or-later
|
|
22
|
-
"""
|
|
23
|
-
|
|
24
|
-
from __future__ import annotations
|
|
25
|
-
|
|
26
|
-
import json
|
|
27
|
-
import sqlite3
|
|
28
|
-
import time
|
|
29
|
-
from pathlib import Path
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def _default_dir() -> Path:
|
|
33
|
-
"""Resolve the pending queue inside the canonical process namespace."""
|
|
34
|
-
from superlocalmemory.infra.data_root import canonical_data_root
|
|
35
|
-
return canonical_data_root()
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
_PENDING_DB = "pending.db"
|
|
39
|
-
_MAX_RETRIES = 3
|
|
40
|
-
_STUCK_DAYS = 7
|
|
41
|
-
_MAX_RETRY_DELAY_SECONDS = 3600
|
|
42
|
-
|
|
43
|
-
# Fix F: hard cap on pending.db retries. After this many failed attempts the
|
|
44
|
-
# item transitions to status='dead_letter' (next_retry_at=NULL) so it is
|
|
45
|
-
# permanently excluded from the work queue. Value chosen to survive transient
|
|
46
|
-
# engine unavailability (12h at 30-min drain intervals) while still providing
|
|
47
|
-
# a definitive signal for genuinely poisoned content.
|
|
48
|
-
_MAX_RETRY_COUNT: int = 20
|
|
49
|
-
|
|
50
|
-
_SCHEMA = """
|
|
51
|
-
CREATE TABLE IF NOT EXISTS pending_memories (
|
|
52
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
53
|
-
profile_id TEXT NOT NULL DEFAULT 'default',
|
|
54
|
-
content TEXT NOT NULL,
|
|
55
|
-
tags TEXT DEFAULT '',
|
|
56
|
-
metadata TEXT DEFAULT '{}',
|
|
57
|
-
created_at TEXT NOT NULL,
|
|
58
|
-
status TEXT NOT NULL DEFAULT 'pending',
|
|
59
|
-
error TEXT DEFAULT NULL,
|
|
60
|
-
retry_count INTEGER DEFAULT 0,
|
|
61
|
-
next_retry_at REAL DEFAULT 0
|
|
62
|
-
);
|
|
63
|
-
"""
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
def _get_db(base_dir: Path | None = None) -> sqlite3.Connection:
|
|
67
|
-
"""Open pending.db with WAL mode. Creates if needed."""
|
|
68
|
-
d = base_dir or _default_dir()
|
|
69
|
-
d.mkdir(parents=True, exist_ok=True)
|
|
70
|
-
db_path = d / _PENDING_DB
|
|
71
|
-
conn = sqlite3.connect(str(db_path), timeout=5)
|
|
72
|
-
conn.execute("PRAGMA journal_mode=WAL")
|
|
73
|
-
# C4: pending queue can hold not-yet-materialized memory content owner-only.
|
|
74
|
-
try:
|
|
75
|
-
from superlocalmemory.core.security_primitives import harden_db_perms
|
|
76
|
-
harden_db_perms(db_path)
|
|
77
|
-
except Exception:
|
|
78
|
-
pass
|
|
79
|
-
conn.execute(_SCHEMA)
|
|
80
|
-
columns = {
|
|
81
|
-
row[1]
|
|
82
|
-
for row in conn.execute("PRAGMA table_info(pending_memories)").fetchall()
|
|
83
|
-
}
|
|
84
|
-
if "next_retry_at" not in columns:
|
|
85
|
-
conn.execute(
|
|
86
|
-
"ALTER TABLE pending_memories ADD COLUMN "
|
|
87
|
-
"next_retry_at REAL DEFAULT 0"
|
|
88
|
-
)
|
|
89
|
-
conn.commit()
|
|
90
|
-
# Per-profile isolation: a queued item must materialize under the profile
|
|
91
|
-
# that was active when it was enqueued — never under whatever profile is
|
|
92
|
-
# active at drain time. Existing rows backfill to 'default'.
|
|
93
|
-
if "profile_id" not in columns:
|
|
94
|
-
conn.execute(
|
|
95
|
-
"ALTER TABLE pending_memories ADD COLUMN "
|
|
96
|
-
"profile_id TEXT NOT NULL DEFAULT 'default'"
|
|
97
|
-
)
|
|
98
|
-
conn.commit()
|
|
99
|
-
# Pre-V3.7 rows were terminally hidden after three failures. Restore them
|
|
100
|
-
# to the retry queue; M018 makes replay idempotent and no raw evidence may
|
|
101
|
-
# remain stranded solely because an older version exhausted its counter.
|
|
102
|
-
conn.execute(
|
|
103
|
-
"UPDATE pending_memories SET status='pending', next_retry_at=0 "
|
|
104
|
-
"WHERE status='failed'"
|
|
105
|
-
)
|
|
106
|
-
conn.commit()
|
|
107
|
-
return conn
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
def store_pending(
|
|
111
|
-
content: str,
|
|
112
|
-
tags: str = "",
|
|
113
|
-
metadata: dict | None = None,
|
|
114
|
-
base_dir: Path | None = None,
|
|
115
|
-
profile_id: str = "default",
|
|
116
|
-
) -> int:
|
|
117
|
-
"""Store content in pending table under a profile. Returns the row ID.
|
|
118
|
-
|
|
119
|
-
``profile_id`` captures the profile active at ENQUEUE time so a later
|
|
120
|
-
profile switch can never redirect this memory to a different profile.
|
|
121
|
-
|
|
122
|
-
This is intentionally FAST — no engine init, no embedding, no model loading.
|
|
123
|
-
Just a raw SQLite INSERT (~0.1s).
|
|
124
|
-
"""
|
|
125
|
-
conn = _get_db(base_dir)
|
|
126
|
-
try:
|
|
127
|
-
cur = conn.execute(
|
|
128
|
-
"INSERT INTO pending_memories "
|
|
129
|
-
"(profile_id, content, tags, metadata, created_at, status) "
|
|
130
|
-
"VALUES (?, ?, ?, ?, ?, 'pending')",
|
|
131
|
-
(profile_id, content, tags, json.dumps(metadata or {}),
|
|
132
|
-
time.strftime("%Y-%m-%dT%H:%M:%S")),
|
|
133
|
-
)
|
|
134
|
-
conn.commit()
|
|
135
|
-
return cur.lastrowid or 0
|
|
136
|
-
finally:
|
|
137
|
-
conn.close()
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
def get_pending(
|
|
141
|
-
base_dir: Path | None = None,
|
|
142
|
-
limit: int = 50,
|
|
143
|
-
profile_id: str | None = None,
|
|
144
|
-
) -> list[dict]:
|
|
145
|
-
"""Get unprocessed pending memories, optionally scoped to one profile.
|
|
146
|
-
|
|
147
|
-
The drain passes ``profile_id`` = its engine's active profile so it only
|
|
148
|
-
ever claims items enqueued under that profile. Items for other profiles
|
|
149
|
-
wait until their profile is active — never materialized under the wrong one.
|
|
150
|
-
"""
|
|
151
|
-
conn = _get_db(base_dir)
|
|
152
|
-
try:
|
|
153
|
-
query = (
|
|
154
|
-
"SELECT id, content, tags, metadata, created_at, retry_count, profile_id "
|
|
155
|
-
"FROM pending_memories WHERE status = 'pending' "
|
|
156
|
-
"AND COALESCE(next_retry_at, 0) <= ?"
|
|
157
|
-
)
|
|
158
|
-
params: list = [time.time()]
|
|
159
|
-
if profile_id is not None:
|
|
160
|
-
query += " AND profile_id = ?"
|
|
161
|
-
params.append(profile_id)
|
|
162
|
-
query += " ORDER BY id ASC LIMIT ?"
|
|
163
|
-
params.append(limit)
|
|
164
|
-
rows = conn.execute(query, params).fetchall()
|
|
165
|
-
return [
|
|
166
|
-
{"id": r[0], "content": r[1], "tags": r[2], "metadata": r[3],
|
|
167
|
-
"created_at": r[4], "retry_count": r[5], "profile_id": r[6]}
|
|
168
|
-
for r in rows
|
|
169
|
-
]
|
|
170
|
-
finally:
|
|
171
|
-
conn.close()
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
def mark_done(row_id: int, base_dir: Path | None = None) -> None:
|
|
175
|
-
"""Mark a pending memory as successfully processed."""
|
|
176
|
-
conn = _get_db(base_dir)
|
|
177
|
-
try:
|
|
178
|
-
conn.execute(
|
|
179
|
-
"UPDATE pending_memories SET status = 'done' WHERE id = ?",
|
|
180
|
-
(row_id,),
|
|
181
|
-
)
|
|
182
|
-
conn.commit()
|
|
183
|
-
finally:
|
|
184
|
-
conn.close()
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
def mark_failed(row_id: int, error: str, base_dir: Path | None = None) -> None:
|
|
188
|
-
"""Mark a pending memory as failed with error message.
|
|
189
|
-
|
|
190
|
-
Fix F: when the retry counter reaches _MAX_RETRY_COUNT the item transitions
|
|
191
|
-
to ``status='dead_letter'`` with ``next_retry_at=NULL``. Dead-lettered
|
|
192
|
-
items are excluded from the work queue (``get_pending`` filters
|
|
193
|
-
``status='pending'``) and are not resurrected by the startup
|
|
194
|
-
``UPDATE…WHERE status='failed'`` sweep (which targets only 'failed', not
|
|
195
|
-
'dead_letter'). This gives operators a stable, inspectable record of
|
|
196
|
-
genuinely poisoned content instead of an infinite retry loop.
|
|
197
|
-
|
|
198
|
-
Below the cap, failures stay pending with bounded exponential backoff;
|
|
199
|
-
M018 idempotency makes repeated replay safe once the canonical operation
|
|
200
|
-
has been created.
|
|
201
|
-
"""
|
|
202
|
-
conn = _get_db(base_dir)
|
|
203
|
-
try:
|
|
204
|
-
row = conn.execute(
|
|
205
|
-
"SELECT retry_count FROM pending_memories WHERE id=?",
|
|
206
|
-
(row_id,),
|
|
207
|
-
).fetchone()
|
|
208
|
-
if row is None:
|
|
209
|
-
return
|
|
210
|
-
next_count = int(row[0] or 0) + 1
|
|
211
|
-
if next_count >= _MAX_RETRY_COUNT:
|
|
212
|
-
# Fix F: permanently exclude from work queue — dead-letter.
|
|
213
|
-
conn.execute(
|
|
214
|
-
"UPDATE pending_memories SET error = ?, "
|
|
215
|
-
"retry_count = retry_count + 1, "
|
|
216
|
-
"status = 'dead_letter', next_retry_at = NULL "
|
|
217
|
-
"WHERE id = ?",
|
|
218
|
-
(error, row_id),
|
|
219
|
-
)
|
|
220
|
-
else:
|
|
221
|
-
delay = 0 if next_count == 1 else min(
|
|
222
|
-
2 ** min(next_count - 1, 12),
|
|
223
|
-
_MAX_RETRY_DELAY_SECONDS,
|
|
224
|
-
)
|
|
225
|
-
conn.execute(
|
|
226
|
-
"UPDATE pending_memories SET error = ?, "
|
|
227
|
-
"retry_count = retry_count + 1, "
|
|
228
|
-
"status = 'pending', next_retry_at = ? "
|
|
229
|
-
"WHERE id = ?",
|
|
230
|
-
(error, time.time() + delay, row_id),
|
|
231
|
-
)
|
|
232
|
-
conn.commit()
|
|
233
|
-
finally:
|
|
234
|
-
conn.close()
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
def pending_count(base_dir: Path | None = None) -> int:
|
|
238
|
-
"""Count unprocessed pending memories."""
|
|
239
|
-
d = base_dir or _default_dir()
|
|
240
|
-
db_path = d / _PENDING_DB
|
|
241
|
-
if not db_path.exists():
|
|
242
|
-
return 0
|
|
243
|
-
conn = sqlite3.connect(str(db_path), timeout=5)
|
|
244
|
-
try:
|
|
245
|
-
return conn.execute(
|
|
246
|
-
"SELECT COUNT(*) FROM pending_memories WHERE status = 'pending'"
|
|
247
|
-
).fetchone()[0]
|
|
248
|
-
except sqlite3.OperationalError:
|
|
249
|
-
return 0
|
|
250
|
-
finally:
|
|
251
|
-
conn.close()
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
def cleanup_done(days: int = 7, base_dir: Path | None = None) -> int:
|
|
255
|
-
"""Remove processed entries older than N days."""
|
|
256
|
-
conn = _get_db(base_dir)
|
|
257
|
-
try:
|
|
258
|
-
cur = conn.execute(
|
|
259
|
-
"DELETE FROM pending_memories WHERE status = 'done' "
|
|
260
|
-
"AND created_at < datetime('now', ?)",
|
|
261
|
-
(f"-{days} days",),
|
|
262
|
-
)
|
|
263
|
-
conn.commit()
|
|
264
|
-
return cur.rowcount
|
|
265
|
-
finally:
|
|
266
|
-
conn.close()
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
def cleanup_stale(base_dir: Path | None = None) -> dict[str, int]:
|
|
270
|
-
"""Sweep stale rows from pending.db. Runs periodically from the daemon.
|
|
271
|
-
|
|
272
|
-
Deletes only completed receipts. Pending and failed raw evidence is retained
|
|
273
|
-
regardless of age so maintenance can never become a data-loss path.
|
|
274
|
-
"""
|
|
275
|
-
conn = _get_db(base_dir)
|
|
276
|
-
try:
|
|
277
|
-
done = conn.execute(
|
|
278
|
-
"DELETE FROM pending_memories WHERE status = 'done' "
|
|
279
|
-
"AND created_at < datetime('now', ?)",
|
|
280
|
-
(f"-{_STUCK_DAYS} days",),
|
|
281
|
-
).rowcount
|
|
282
|
-
retained = conn.execute(
|
|
283
|
-
"SELECT COUNT(*) FROM pending_memories "
|
|
284
|
-
"WHERE status != 'done'"
|
|
285
|
-
).fetchone()[0]
|
|
286
|
-
conn.commit()
|
|
287
|
-
return {
|
|
288
|
-
"done": done,
|
|
289
|
-
"failed_over_retries": 0,
|
|
290
|
-
"stuck_pending": 0,
|
|
291
|
-
"hard_cap_expired": 0,
|
|
292
|
-
"retained_unprocessed": int(retained),
|
|
293
|
-
"total": done,
|
|
294
|
-
}
|
|
295
|
-
finally:
|
|
296
|
-
conn.close()
|
|
@@ -1,108 +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
|
-
"""Handler for ``slm proxy``."""
|
|
6
|
-
|
|
7
|
-
from __future__ import annotations
|
|
8
|
-
|
|
9
|
-
import dataclasses
|
|
10
|
-
import json
|
|
11
|
-
import sys
|
|
12
|
-
from argparse import Namespace
|
|
13
|
-
|
|
14
|
-
_DEFAULT_PORT: int = 8765
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
def _get_store():
|
|
18
|
-
from superlocalmemory.optimize.config.store import ConfigStore
|
|
19
|
-
return ConfigStore()
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def _ensure_running(port: int) -> bool:
|
|
23
|
-
"""Liveness probe: return True if the SLM daemon is responding at *port*.
|
|
24
|
-
|
|
25
|
-
Calls GET /health with a 2-second timeout. The SLM daemon (which also acts
|
|
26
|
-
as the optimize proxy) is the process that answers on :8765; if it responds
|
|
27
|
-
the proxy layer is alive. We do NOT call lifecycle.ensure_proxy_running()
|
|
28
|
-
here because that function reads config via the daemon-internal store
|
|
29
|
-
(get_optimize_config/_store) which is None in a CLI subprocess context.
|
|
30
|
-
"""
|
|
31
|
-
try:
|
|
32
|
-
import urllib.request
|
|
33
|
-
url = f"http://127.0.0.1:{port}/health"
|
|
34
|
-
req = urllib.request.Request(url, method="GET")
|
|
35
|
-
with urllib.request.urlopen(req, timeout=2) as resp:
|
|
36
|
-
return resp.status == 200
|
|
37
|
-
except Exception:
|
|
38
|
-
return False
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
def cmd_proxy(args: Namespace) -> None:
|
|
42
|
-
"""Start the SLM optimization proxy (or report if already running)."""
|
|
43
|
-
use_json = getattr(args, "json", False)
|
|
44
|
-
port = getattr(args, "port", _DEFAULT_PORT)
|
|
45
|
-
provider = getattr(args, "provider", "anthropic")
|
|
46
|
-
no_compress = getattr(args, "no_compress", False)
|
|
47
|
-
semantic = getattr(args, "semantic", False)
|
|
48
|
-
|
|
49
|
-
# CRIT-3 FIX: validate port before any config write
|
|
50
|
-
if not (1024 <= port <= 65535):
|
|
51
|
-
print(f"Error: --port must be 1024–65535, got {port}.", file=sys.stderr)
|
|
52
|
-
sys.exit(1)
|
|
53
|
-
|
|
54
|
-
store = _get_store()
|
|
55
|
-
cfg = store.get()
|
|
56
|
-
|
|
57
|
-
# Build config updates
|
|
58
|
-
providers = dict(cfg.providers) if cfg.providers else {}
|
|
59
|
-
from superlocalmemory.optimize.config.schema import ProviderConfig
|
|
60
|
-
existing = providers.get(provider, ProviderConfig())
|
|
61
|
-
providers[provider] = ProviderConfig(
|
|
62
|
-
enabled=existing.enabled,
|
|
63
|
-
base_url=f"http://localhost:{port}",
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
fields: dict = {"providers": providers, "proxy_enabled": True}
|
|
67
|
-
if no_compress:
|
|
68
|
-
fields["compress_enabled"] = False
|
|
69
|
-
if semantic:
|
|
70
|
-
fields["semantic_enabled"] = True
|
|
71
|
-
|
|
72
|
-
try:
|
|
73
|
-
cfg = dataclasses.replace(cfg, **fields)
|
|
74
|
-
store.save(cfg)
|
|
75
|
-
except (ValueError, OSError) as e:
|
|
76
|
-
print(f"Error writing config: {e}", file=sys.stderr)
|
|
77
|
-
sys.exit(1)
|
|
78
|
-
|
|
79
|
-
running = _ensure_running(port)
|
|
80
|
-
|
|
81
|
-
if use_json:
|
|
82
|
-
data = {
|
|
83
|
-
"status": "running" if running else "failed",
|
|
84
|
-
"port": port,
|
|
85
|
-
"anthropic_url": f"http://localhost:{port}",
|
|
86
|
-
"openai_url": f"http://localhost:{port}/v1",
|
|
87
|
-
"provider": provider,
|
|
88
|
-
"compress": not no_compress,
|
|
89
|
-
"semantic": semantic,
|
|
90
|
-
}
|
|
91
|
-
print(json.dumps(data, indent=2))
|
|
92
|
-
else:
|
|
93
|
-
if running:
|
|
94
|
-
print(f"SLM proxy starting on :{port}...")
|
|
95
|
-
print(f" Anthropic surface: http://localhost:{port}")
|
|
96
|
-
print(f" OpenAI surface: http://localhost:{port}/v1")
|
|
97
|
-
print()
|
|
98
|
-
print(f"Set ANTHROPIC_BASE_URL=http://localhost:{port} before running Claude Code.")
|
|
99
|
-
print("Or run: slm wrap claude")
|
|
100
|
-
print()
|
|
101
|
-
print("Proxy ready.")
|
|
102
|
-
print()
|
|
103
|
-
print("Note: 'slm proxy' enables the proxy independently — it does not")
|
|
104
|
-
print("flip the master optimize switch, so 'slm optimize status' may")
|
|
105
|
-
print("show OFF while the proxy is running.")
|
|
106
|
-
else:
|
|
107
|
-
print("Error: proxy failed to start. Check logs.", file=sys.stderr)
|
|
108
|
-
sys.exit(1)
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"""CLI surface for the staged Scale Engine lifecycle."""
|
|
2
|
-
from __future__ import annotations
|
|
3
|
-
|
|
4
|
-
import json
|
|
5
|
-
from argparse import Namespace
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def cmd_db_scale(args: Namespace) -> int:
|
|
9
|
-
from superlocalmemory.core.config import SLMConfig
|
|
10
|
-
from superlocalmemory.core.scale_engine import ScaleEngineError, ScaleEngineManager
|
|
11
|
-
from superlocalmemory.storage.sqlite_vectors import CanonicalVectorError
|
|
12
|
-
|
|
13
|
-
action = args.scale_action
|
|
14
|
-
# Scale Engine projections are currently canonical-default-profile data.
|
|
15
|
-
# Adoption must not fail merely because the operator is working in another
|
|
16
|
-
# profile, and it must not rewrite that selected profile.
|
|
17
|
-
manager = ScaleEngineManager(
|
|
18
|
-
SLMConfig.load(), profile_id="default" if action == "adopt" else None
|
|
19
|
-
)
|
|
20
|
-
try:
|
|
21
|
-
if action == "status":
|
|
22
|
-
result = manager.status()
|
|
23
|
-
elif action == "adopt":
|
|
24
|
-
result = manager.adopt_legacy_projection()
|
|
25
|
-
if result is None:
|
|
26
|
-
raise ScaleEngineError(
|
|
27
|
-
"no confirmed legacy projection candidate; see `slm db scale status`"
|
|
28
|
-
)
|
|
29
|
-
result = {**result, "restart_required": True}
|
|
30
|
-
elif action == "prepare":
|
|
31
|
-
result = manager.prepare()
|
|
32
|
-
elif action == "verify":
|
|
33
|
-
if not args.stage_id:
|
|
34
|
-
raise ScaleEngineError("verify requires --stage-id (see `slm db scale status`)")
|
|
35
|
-
result = manager.verify(args.stage_id)
|
|
36
|
-
elif action == "promote":
|
|
37
|
-
if not args.stage_id:
|
|
38
|
-
raise ScaleEngineError("promote requires --stage-id (see `slm db scale status`)")
|
|
39
|
-
result = manager.promote(args.stage_id)
|
|
40
|
-
# The running daemon reads scale_engine_state once at startup; the
|
|
41
|
-
# promoted Cozo/Lance backends are only wired in on the next start.
|
|
42
|
-
# Without this flag users see a clean promote and keep hitting
|
|
43
|
-
# SQLite-only silently (no error, no speedup).
|
|
44
|
-
result = {**result, "restart_required": True}
|
|
45
|
-
elif action == "rollback":
|
|
46
|
-
if not args.backup_id:
|
|
47
|
-
raise ScaleEngineError("rollback requires --backup-id (see `slm db scale status`)")
|
|
48
|
-
result = manager.rollback(args.backup_id)
|
|
49
|
-
result = {**result, "restart_required": True}
|
|
50
|
-
else:
|
|
51
|
-
raise ScaleEngineError(f"unknown Scale Engine action: {action}")
|
|
52
|
-
except (ScaleEngineError, CanonicalVectorError) as exc:
|
|
53
|
-
print(f"Scale Engine: {exc}")
|
|
54
|
-
return 1
|
|
55
|
-
print(json.dumps(result, indent=2, sort_keys=True))
|
|
56
|
-
return 0
|