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,1145 +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
|
-
"""SuperLocalMemory V3 — CLI entry point.
|
|
6
|
-
|
|
7
|
-
Usage: slm <command> [options]
|
|
8
|
-
|
|
9
|
-
Part of Qualixar | Author: Varun Pratap Bhardwaj
|
|
10
|
-
"""
|
|
11
|
-
|
|
12
|
-
from __future__ import annotations
|
|
13
|
-
|
|
14
|
-
# CRITICAL: Set BEFORE any torch/transformers import to prevent Metal/MPS
|
|
15
|
-
# GPU memory reservation on Apple Silicon. Without this, macOS Activity
|
|
16
|
-
# Monitor shows 3-6 GB for what is actually a 40 MB process.
|
|
17
|
-
import os as _os
|
|
18
|
-
_os.environ.setdefault('PYTORCH_MPS_HIGH_WATERMARK_RATIO', '0.0')
|
|
19
|
-
_os.environ.setdefault('PYTORCH_MPS_MEM_LIMIT', '0')
|
|
20
|
-
_os.environ.setdefault('PYTORCH_ENABLE_MPS_FALLBACK', '1')
|
|
21
|
-
_os.environ.setdefault('TOKENIZERS_PARALLELISM', 'false')
|
|
22
|
-
_os.environ.setdefault('TORCH_DEVICE', 'cpu')
|
|
23
|
-
|
|
24
|
-
import argparse
|
|
25
|
-
import sys
|
|
26
|
-
|
|
27
|
-
from superlocalmemory.core.config import (
|
|
28
|
-
CANONICAL_LIST_LIMIT,
|
|
29
|
-
CANONICAL_RECALL_LIMIT,
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
_HELP_EPILOG = """\
|
|
33
|
-
operating modes:
|
|
34
|
-
Mode A Local Guardian — No model-provider call in the core memory path.
|
|
35
|
-
Optional integrations, backup, and downloads have separate network
|
|
36
|
-
behavior; assess the complete deployment for privacy requirements.
|
|
37
|
-
|
|
38
|
-
Mode B Smart Local — Uses a local Ollama LLM for summarization and
|
|
39
|
-
enrichment. The Ollama endpoint and enabled integrations determine
|
|
40
|
-
the data path. Requires: ollama running with a model pulled.
|
|
41
|
-
|
|
42
|
-
Mode C Full Power — Uses a cloud LLM (OpenAI, Anthropic, etc.) for
|
|
43
|
-
provider-assisted enrichment and retrieval behavior.
|
|
44
|
-
|
|
45
|
-
quick start:
|
|
46
|
-
slm setup Interactive first-time setup
|
|
47
|
-
slm remember "some fact" Store a memory
|
|
48
|
-
slm recall "search query" Semantic search across memories
|
|
49
|
-
slm list -n 20 Show 20 most recent memories
|
|
50
|
-
slm dashboard Open web dashboard at localhost:8765
|
|
51
|
-
|
|
52
|
-
ide integration:
|
|
53
|
-
slm mcp Start MCP server (used by IDEs)
|
|
54
|
-
slm connect Auto-configure all detected IDEs
|
|
55
|
-
slm connect cursor Configure a specific IDE
|
|
56
|
-
|
|
57
|
-
examples:
|
|
58
|
-
slm remember "Project X uses PostgreSQL 16" --tags "project-x,db"
|
|
59
|
-
slm recall "which database does project X use"
|
|
60
|
-
slm list -n 50
|
|
61
|
-
slm mode a Switch to zero-LLM mode
|
|
62
|
-
slm trace "auth flow" Recall with per-channel score breakdown
|
|
63
|
-
slm health Check math layer status
|
|
64
|
-
slm dashboard --port 9000 Dashboard on custom port
|
|
65
|
-
slm recall "query" --json Agent-native JSON output (for scripts, CI/CD)
|
|
66
|
-
|
|
67
|
-
documentation:
|
|
68
|
-
Website: https://superlocalmemory.com
|
|
69
|
-
GitHub: https://github.com/qualixar/superlocalmemory
|
|
70
|
-
Paper: https://arxiv.org/abs/2608.08253
|
|
71
|
-
"""
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
_NO_DAEMON_COMMANDS = {
|
|
75
|
-
"setup", "mode", "provider", "connect", "upgrade-hosts", "migrate", "mcp", "warmup", "hooks", "codex",
|
|
76
|
-
"config", "evolve", "db",
|
|
77
|
-
# v3.4.22 escape hatches — never auto-start the daemon on these.
|
|
78
|
-
"disable", "enable", "clear-cache", "reconfigure", "benchmark",
|
|
79
|
-
"rotate-token",
|
|
80
|
-
"evidence",
|
|
81
|
-
# v4.0.2 receipt summary is a direct read-only learning.db query.
|
|
82
|
-
"brain",
|
|
83
|
-
"diagnostics",
|
|
84
|
-
# LLD-06 — agents launched through wrap start the daemon on demand.
|
|
85
|
-
"wrap",
|
|
86
|
-
# V3.6 Optimize commands that are config read/write only.
|
|
87
|
-
"optimize", "cache", "compress", "help-optimize",
|
|
88
|
-
# Bounded loops use an in-process engine store, not the daemon.
|
|
89
|
-
"loop",
|
|
90
|
-
# v3.8.2 super-help is pure text — never touch the daemon.
|
|
91
|
-
"help",
|
|
92
|
-
# Lifecycle orchestration must run before any global auto-start hook.
|
|
93
|
-
"serve", "restart",
|
|
94
|
-
# V4.0.6: GDPR CLI accesses the DB directly; no daemon required.
|
|
95
|
-
"gdpr",
|
|
96
|
-
# V4.0.7: summaries read memory.db directly and are extractive by default,
|
|
97
|
-
# so they need neither the daemon nor a language model.
|
|
98
|
-
"summary",
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
def _command_requires_daemon(args: argparse.Namespace) -> bool:
|
|
103
|
-
"""Return whether global dispatch should ensure the daemon first.
|
|
104
|
-
|
|
105
|
-
All ``serve`` actions and ``restart`` own daemon inspection or mutation;
|
|
106
|
-
global dispatch must not race or duplicate those handlers.
|
|
107
|
-
"""
|
|
108
|
-
if args.command in _NO_DAEMON_COMMANDS:
|
|
109
|
-
return False
|
|
110
|
-
return True
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
def main() -> None:
|
|
114
|
-
"""Parse CLI arguments and dispatch to command handlers."""
|
|
115
|
-
# Fast path: hook invocations bypass argparse entirely (stdlib only, ~30ms)
|
|
116
|
-
if len(sys.argv) >= 3 and sys.argv[1] == "hook":
|
|
117
|
-
from superlocalmemory.hooks.hook_handlers import handle_hook
|
|
118
|
-
handle_hook(sys.argv[2])
|
|
119
|
-
return
|
|
120
|
-
|
|
121
|
-
# Metadata inspection is activation-free. Package managers, users, and CI
|
|
122
|
-
# must be able to inspect a newly installed executable without creating an
|
|
123
|
-
# SLM data root, config, version marker, daemon, hooks, or models.
|
|
124
|
-
_is_metadata_cmd = (
|
|
125
|
-
len(sys.argv) == 1
|
|
126
|
-
or any(arg in {"-h", "--help"} for arg in sys.argv[1:])
|
|
127
|
-
or (len(sys.argv) == 2 and sys.argv[1] in {"-v", "--version"})
|
|
128
|
-
)
|
|
129
|
-
_is_connect_dry_run = (
|
|
130
|
-
len(sys.argv) >= 2
|
|
131
|
-
and sys.argv[1] == "connect"
|
|
132
|
-
and "--dry-run" in sys.argv[2:]
|
|
133
|
-
)
|
|
134
|
-
_is_host_upgrade_preview = (
|
|
135
|
-
len(sys.argv) >= 2
|
|
136
|
-
and sys.argv[1] == "upgrade-hosts"
|
|
137
|
-
and "--apply" not in sys.argv[2:]
|
|
138
|
-
)
|
|
139
|
-
|
|
140
|
-
# lazy first-run init — runs after hook/mcp fast-paths so stdout
|
|
141
|
-
# is never polluted on those paths (CRIT-3, MCP JSON-RPC purity).
|
|
142
|
-
# Guarded: any failure must not crash the CLI (AC4).
|
|
143
|
-
_is_mcp_cmd = len(sys.argv) >= 2 and sys.argv[1] == "mcp"
|
|
144
|
-
if not _is_mcp_cmd and not _is_metadata_cmd and not _is_connect_dry_run and not _is_host_upgrade_preview:
|
|
145
|
-
try:
|
|
146
|
-
from superlocalmemory.cli._lazy_init import _ensure_initialized
|
|
147
|
-
_ensure_initialized()
|
|
148
|
-
except Exception:
|
|
149
|
-
pass
|
|
150
|
-
|
|
151
|
-
from superlocalmemory.cli.json_output import _get_version
|
|
152
|
-
_ver = _get_version()
|
|
153
|
-
|
|
154
|
-
# v3.6.13 (CRITICAL): the `mcp` stdio transport requires stdout to carry
|
|
155
|
-
# ONLY JSON-RPC. The post-upgrade banner + migration notice below must NEVER
|
|
156
|
-
# run on that path, or the first post-upgrade `slm mcp` launch pollutes
|
|
157
|
-
# stdout and the MCP client (Claude Desktop / Cursor) rejects the stream as
|
|
158
|
-
# "not valid JSON". Skip the whole block for `mcp`; the next human `slm`
|
|
159
|
-
# command emits the banner (to stderr) and writes the version marker.
|
|
160
|
-
_is_mcp_stdio = len(sys.argv) >= 2 and sys.argv[1] == "mcp"
|
|
161
|
-
|
|
162
|
-
# One-time post-upgrade banner — silent for fresh installs and
|
|
163
|
-
# same-version runs. Guarded against I/O errors internally.
|
|
164
|
-
if not _is_mcp_stdio and not _is_metadata_cmd and not _is_connect_dry_run and not _is_host_upgrade_preview:
|
|
165
|
-
from superlocalmemory.cli.version_banner import check_and_emit_upgrade_banner
|
|
166
|
-
if check_and_emit_upgrade_banner(_ver):
|
|
167
|
-
# First post-upgrade invocation: apply the data-dir migration if
|
|
168
|
-
# it's safe. When the previous-version daemon is still running
|
|
169
|
-
# we defer — the next daemon start picks it up.
|
|
170
|
-
try:
|
|
171
|
-
import logging as _logging
|
|
172
|
-
from superlocalmemory.migrations.v3_4_25_to_v3_4_26 import (
|
|
173
|
-
migrate_if_safe as _migrate_if_safe,
|
|
174
|
-
)
|
|
175
|
-
# route through slm_home() so all 3 env aliases are honoured.
|
|
176
|
-
from superlocalmemory.cli._lazy_init import slm_home as _slm_home
|
|
177
|
-
_data = _slm_home()
|
|
178
|
-
_res = _migrate_if_safe(_data)
|
|
179
|
-
if _res.get("status") == "deferred":
|
|
180
|
-
print(
|
|
181
|
-
" note: data migration deferred — the running SLM "
|
|
182
|
-
"daemon will apply it on its next restart.",
|
|
183
|
-
file=sys.stderr,
|
|
184
|
-
)
|
|
185
|
-
except Exception as _mig_exc:
|
|
186
|
-
import logging as _logging
|
|
187
|
-
_logging.getLogger(__name__).warning(
|
|
188
|
-
"v3.4.26 migrate_if_safe failed: %s — run `slm doctor`", _mig_exc,
|
|
189
|
-
)
|
|
190
|
-
print(
|
|
191
|
-
" note: data migration check failed — run `slm doctor` to diagnose.",
|
|
192
|
-
file=sys.stderr,
|
|
193
|
-
)
|
|
194
|
-
|
|
195
|
-
parser = argparse.ArgumentParser(
|
|
196
|
-
prog="slm",
|
|
197
|
-
description=f"SuperLocalMemory V4 ({_ver}) — AI agent memory with mathematical foundations",
|
|
198
|
-
epilog=_HELP_EPILOG,
|
|
199
|
-
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
200
|
-
)
|
|
201
|
-
parser.add_argument(
|
|
202
|
-
"-v", "--version", action="version", version=f"superlocalmemory {_ver}",
|
|
203
|
-
)
|
|
204
|
-
sub = parser.add_subparsers(dest="command", title="commands")
|
|
205
|
-
|
|
206
|
-
# -- Setup & Config ------------------------------------------------
|
|
207
|
-
init_p = sub.add_parser("init", help="One-command setup: mode + hooks + IDE + warmup")
|
|
208
|
-
init_p.add_argument(
|
|
209
|
-
"--force", action="store_true", help="Re-run full setup even if already configured",
|
|
210
|
-
)
|
|
211
|
-
init_p.add_argument(
|
|
212
|
-
"--gate", action="store_true",
|
|
213
|
-
help="Enable PreToolUse gate (experimental — blocks tools until session_init)",
|
|
214
|
-
)
|
|
215
|
-
# non-interactive auto setup (pip post-install, CI, scripts).
|
|
216
|
-
init_p.add_argument(
|
|
217
|
-
"--auto", action="store_true",
|
|
218
|
-
help="Non-interactive setup: mode A + hooks (no TTY required, for CI/scripts)",
|
|
219
|
-
)
|
|
220
|
-
|
|
221
|
-
setup_p = sub.add_parser("setup", help="Interactive first-time setup wizard")
|
|
222
|
-
setup_p.add_argument(
|
|
223
|
-
"--auto", action="store_true",
|
|
224
|
-
help="Non-interactive mode: use defaults (for CI/scripts)",
|
|
225
|
-
)
|
|
226
|
-
|
|
227
|
-
mode_p = sub.add_parser("mode", help="Get or set operating mode (a/b/c)")
|
|
228
|
-
mode_p.add_argument(
|
|
229
|
-
"value", nargs="?", choices=["a", "b", "c", "A", "B", "C"], help="Mode to set",
|
|
230
|
-
)
|
|
231
|
-
mode_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
232
|
-
|
|
233
|
-
provider_p = sub.add_parser("provider", help="Get or set LLM provider for Mode B/C")
|
|
234
|
-
provider_p.add_argument(
|
|
235
|
-
"action", nargs="?", choices=["set"], help="Action",
|
|
236
|
-
)
|
|
237
|
-
provider_p.add_argument(
|
|
238
|
-
"provider", nargs="?",
|
|
239
|
-
choices=["openai", "anthropic", "azure", "ollama", "openrouter"],
|
|
240
|
-
help="Provider to configure; omit to use the interactive selector",
|
|
241
|
-
)
|
|
242
|
-
|
|
243
|
-
connect_p = sub.add_parser("connect", help="Auto-configure a supported IDE integration")
|
|
244
|
-
connect_p.add_argument("ide", nargs="?", help="Specific IDE to configure (e.g. cursor, codex, continue)")
|
|
245
|
-
connect_p.add_argument(
|
|
246
|
-
"--list", action="store_true", help="List all supported IDEs",
|
|
247
|
-
)
|
|
248
|
-
connect_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
249
|
-
# declare missing flags so cmd_connect can read them without getattr fallback
|
|
250
|
-
connect_p.add_argument(
|
|
251
|
-
"--here", action="store_true", default=False,
|
|
252
|
-
help="Write config relative to current working directory (project scope)",
|
|
253
|
-
)
|
|
254
|
-
connect_p.add_argument(
|
|
255
|
-
"--cross-platform", action="store_true", dest="cross_platform", default=False,
|
|
256
|
-
help="Use LLD-05 cross-platform adapter orchestrator",
|
|
257
|
-
)
|
|
258
|
-
connect_p.add_argument(
|
|
259
|
-
"--disable", metavar="ADAPTER", default=None,
|
|
260
|
-
help="Disable a specific cross-platform adapter by name",
|
|
261
|
-
)
|
|
262
|
-
connect_p.add_argument(
|
|
263
|
-
"--profile", metavar="PROFILE", default=None,
|
|
264
|
-
help="Inject SLM_MCP_PROFILE env var into the MCP server block (named profile selection)",
|
|
265
|
-
)
|
|
266
|
-
connect_p.add_argument(
|
|
267
|
-
"--dry-run", action="store_true", dest="dry_run", default=False,
|
|
268
|
-
help="Show what would be written without making changes",
|
|
269
|
-
)
|
|
270
|
-
# Workstream C — transport flexibility (3.8.4)
|
|
271
|
-
connect_p.add_argument(
|
|
272
|
-
"--transport",
|
|
273
|
-
choices=["stdio", "http", "http-mcp-remote"],
|
|
274
|
-
default="stdio",
|
|
275
|
-
dest="transport",
|
|
276
|
-
help=(
|
|
277
|
-
"MCP transport to write into the IDE config. "
|
|
278
|
-
"stdio (default, zero regression) | "
|
|
279
|
-
"http (native Streamable-HTTP, requires SLM daemon) | "
|
|
280
|
-
"http-mcp-remote (stdio bridge via mcp-remote for stdio-only clients)"
|
|
281
|
-
),
|
|
282
|
-
)
|
|
283
|
-
connect_p.add_argument(
|
|
284
|
-
"--port",
|
|
285
|
-
type=int,
|
|
286
|
-
default=8765,
|
|
287
|
-
dest="daemon_port",
|
|
288
|
-
help="SLM daemon port for http/http-mcp-remote transport (default: 8765)",
|
|
289
|
-
)
|
|
290
|
-
connect_p.add_argument(
|
|
291
|
-
"--verify",
|
|
292
|
-
action="store_true",
|
|
293
|
-
default=False,
|
|
294
|
-
dest="verify",
|
|
295
|
-
help=(
|
|
296
|
-
"After writing the config, probe the daemon health endpoint to confirm "
|
|
297
|
-
"the transport is reachable (only meaningful for --transport http)"
|
|
298
|
-
),
|
|
299
|
-
)
|
|
300
|
-
|
|
301
|
-
upgrade_p = sub.add_parser(
|
|
302
|
-
"upgrade-hosts",
|
|
303
|
-
help="Preview or explicitly refresh installed SLM host integrations",
|
|
304
|
-
)
|
|
305
|
-
upgrade_p.add_argument(
|
|
306
|
-
"--host", action="append", dest="hosts", default=[],
|
|
307
|
-
help="Explicit host to refresh (repeatable; for example: codex, cursor)",
|
|
308
|
-
)
|
|
309
|
-
upgrade_p.add_argument(
|
|
310
|
-
"--all-detected", action="store_true", default=False,
|
|
311
|
-
help="Target only hosts that already contain an SLM integration",
|
|
312
|
-
)
|
|
313
|
-
upgrade_p.add_argument(
|
|
314
|
-
"--apply", action="store_true", default=False,
|
|
315
|
-
help="Apply the previewed changes; default is read-only preview",
|
|
316
|
-
)
|
|
317
|
-
|
|
318
|
-
migrate_p = sub.add_parser("migrate", help="Migrate data from V2 to V3 schema")
|
|
319
|
-
migrate_p.add_argument(
|
|
320
|
-
"--rollback", action="store_true", help="Rollback migration",
|
|
321
|
-
)
|
|
322
|
-
|
|
323
|
-
# LLD-06 §7.2 — `slm db migrate` wraps LLD-07's additive schema migrations.
|
|
324
|
-
db_p = sub.add_parser("db", help="Database maintenance commands (v3.4.22)")
|
|
325
|
-
db_sub = db_p.add_subparsers(dest="db_command", title="db subcommands")
|
|
326
|
-
db_mig_p = db_sub.add_parser(
|
|
327
|
-
"migrate",
|
|
328
|
-
help="Apply additive schema migrations (LLD-07)",
|
|
329
|
-
)
|
|
330
|
-
db_mig_p.add_argument(
|
|
331
|
-
"--status", action="store_true",
|
|
332
|
-
help="Print migration status from migration_log; no writes",
|
|
333
|
-
)
|
|
334
|
-
db_mig_p.add_argument(
|
|
335
|
-
"--dry-run", action="store_true",
|
|
336
|
-
help="Report what would change without applying",
|
|
337
|
-
)
|
|
338
|
-
db_scale_p = db_sub.add_parser(
|
|
339
|
-
"scale",
|
|
340
|
-
help="Safely stage and promote optional CozoDB/LanceDB projections",
|
|
341
|
-
)
|
|
342
|
-
db_scale_p.add_argument(
|
|
343
|
-
"scale_action",
|
|
344
|
-
choices=("status", "adopt", "prepare", "verify", "promote", "rollback"),
|
|
345
|
-
help="Lifecycle action. Adopt confirms a detected legacy projection; prepare and verify never mutate active paths.",
|
|
346
|
-
)
|
|
347
|
-
db_scale_p.add_argument("--stage-id", help="Stage identifier required by verify/promote")
|
|
348
|
-
db_scale_p.add_argument("--backup-id", help="Backup identifier required by rollback")
|
|
349
|
-
|
|
350
|
-
db_regraph_p = db_sub.add_parser(
|
|
351
|
-
"regraph",
|
|
352
|
-
help="Re-derive the graph copy of your memories from the store",
|
|
353
|
-
)
|
|
354
|
-
db_regraph_p.add_argument(
|
|
355
|
-
"--check", action="store_true",
|
|
356
|
-
help="Report how far the graph copy has drifted; change nothing",
|
|
357
|
-
)
|
|
358
|
-
db_regraph_p.add_argument(
|
|
359
|
-
"--profile", default="",
|
|
360
|
-
help="Workspace to re-derive. Default: all of them",
|
|
361
|
-
)
|
|
362
|
-
|
|
363
|
-
db_reembed_p = db_sub.add_parser(
|
|
364
|
-
"reembed",
|
|
365
|
-
help="Backfill NULL embeddings (facts never embedded)",
|
|
366
|
-
)
|
|
367
|
-
db_reembed_p.add_argument(
|
|
368
|
-
"--missing-only",
|
|
369
|
-
action="store_true",
|
|
370
|
-
default=True,
|
|
371
|
-
dest="missing_only",
|
|
372
|
-
help="Only embed facts with NULL embedding (default and only mode)",
|
|
373
|
-
)
|
|
374
|
-
db_reembed_p.add_argument(
|
|
375
|
-
"--all-profiles",
|
|
376
|
-
action="store_true",
|
|
377
|
-
default=False,
|
|
378
|
-
dest="all_profiles",
|
|
379
|
-
help="Process all profiles (default: active profile only)",
|
|
380
|
-
)
|
|
381
|
-
db_reembed_p.add_argument(
|
|
382
|
-
"--limit",
|
|
383
|
-
type=int,
|
|
384
|
-
default=None,
|
|
385
|
-
metavar="N",
|
|
386
|
-
help="Maximum facts to embed per run (default: no limit)",
|
|
387
|
-
)
|
|
388
|
-
db_reembed_p.add_argument(
|
|
389
|
-
"--json",
|
|
390
|
-
action="store_true",
|
|
391
|
-
help="Output structured JSON",
|
|
392
|
-
)
|
|
393
|
-
|
|
394
|
-
# -- Mesh inspection (v3.7.9, M-03) --------------------------------
|
|
395
|
-
mesh_p = sub.add_parser("mesh", help="Inspect the local agent mesh (status/peers)")
|
|
396
|
-
mesh_p.add_argument(
|
|
397
|
-
"mesh_action",
|
|
398
|
-
choices=("status", "peers"),
|
|
399
|
-
help="status: broker health + stats; peers: active peer sessions",
|
|
400
|
-
)
|
|
401
|
-
|
|
402
|
-
# -- Memory Operations ---------------------------------------------
|
|
403
|
-
remember_p = sub.add_parser("remember", help="Store a memory (extracts facts, builds graph)")
|
|
404
|
-
remember_p.add_argument("content", help="Content to remember")
|
|
405
|
-
remember_p.add_argument("--tags", default="", help="Comma-separated tags")
|
|
406
|
-
remember_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
407
|
-
remember_p.add_argument(
|
|
408
|
-
"--sync", dest="sync_mode", action="store_true",
|
|
409
|
-
help="Wait for completion (default: async background processing)",
|
|
410
|
-
)
|
|
411
|
-
remember_p.add_argument(
|
|
412
|
-
"--scope", default=None, choices=("personal", "shared", "global"),
|
|
413
|
-
help="Memory scope: personal, shared, or global. Unset uses the "
|
|
414
|
-
"configured default_scope (personal). Shared memory is opt-in.",
|
|
415
|
-
)
|
|
416
|
-
remember_p.add_argument(
|
|
417
|
-
"--shared-with", default=None,
|
|
418
|
-
help="Comma-separated profile IDs for shared scope",
|
|
419
|
-
)
|
|
420
|
-
|
|
421
|
-
# v3.6.12 (parity-3): `search` is an alias of `recall` so the CLI has the
|
|
422
|
-
# same search verb the MCP exposes (handlers dict maps both to cmd_recall).
|
|
423
|
-
recall_p = sub.add_parser("recall", aliases=["search"], help="Multi-channel memory retrieval")
|
|
424
|
-
recall_p.add_argument("query", help="Search query")
|
|
425
|
-
recall_p.add_argument(
|
|
426
|
-
"--limit", type=int, default=CANONICAL_RECALL_LIMIT,
|
|
427
|
-
help=f"Max results (default {CANONICAL_RECALL_LIMIT})",
|
|
428
|
-
)
|
|
429
|
-
recall_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
430
|
-
recall_p.add_argument(
|
|
431
|
-
"--window", default="",
|
|
432
|
-
help="Restrict results to an event-time range: a relative span "
|
|
433
|
-
"(24h, 7d, 30d, 1y) or an explicit range (2026-07-01..2026-07-31). "
|
|
434
|
-
"Default: no time filter.",
|
|
435
|
-
)
|
|
436
|
-
recall_p.add_argument(
|
|
437
|
-
"--as-of", dest="as_of", default="",
|
|
438
|
-
help="Point-in-time recall: an ISO-8601 timestamp "
|
|
439
|
-
"(2026-01-01T00:00:00+00:00) that pins retrieval to a temporal "
|
|
440
|
-
"snapshot. Default: current-state recall.",
|
|
441
|
-
)
|
|
442
|
-
recall_p.add_argument(
|
|
443
|
-
"--known-as-of", dest="known_as_of", default="",
|
|
444
|
-
help="Strict transaction-time boundary: return only facts SLM knew by this ISO-8601 time.",
|
|
445
|
-
)
|
|
446
|
-
recall_p.add_argument(
|
|
447
|
-
"--valid-at", dest="valid_at", default="",
|
|
448
|
-
help="Strict event-time boundary: return only facts valid at this ISO-8601 time.",
|
|
449
|
-
)
|
|
450
|
-
recall_p.add_argument(
|
|
451
|
-
"--include-unknown", action="store_true",
|
|
452
|
-
help="Include pre-4.0.2 facts with unknown temporal provenance in strict time-travel.",
|
|
453
|
-
)
|
|
454
|
-
recall_p.add_argument(
|
|
455
|
-
"--fast", action="store_true",
|
|
456
|
-
help="Force-skip the internal agentic verification round (all six retrieval "
|
|
457
|
-
"channels + reranker still run). This is already the default (client-driven "
|
|
458
|
-
"agentic): SLM returns fast local results + confidence signals and lets the "
|
|
459
|
-
"calling LLM re-query on low confidence. Pass --fast to guarantee the fast "
|
|
460
|
-
"path even where the server is configured for internal agentic.",
|
|
461
|
-
)
|
|
462
|
-
# v3.6.15: shared memory is opt-in. Unset (None) → resolve the configured
|
|
463
|
-
# default (recall_include_global/shared, both False by default). Explicit
|
|
464
|
-
# flags override per-call. default=None on BOTH members of each pair so the
|
|
465
|
-
# store_false's implicit default=True can't sneak back in.
|
|
466
|
-
recall_p.add_argument(
|
|
467
|
-
"--include-global", dest="include_global", action="store_true", default=None,
|
|
468
|
-
help="Include global-scope facts in retrieval (opt-in; default off)",
|
|
469
|
-
)
|
|
470
|
-
recall_p.add_argument(
|
|
471
|
-
"--no-global", dest="include_global", action="store_false", default=None,
|
|
472
|
-
help="Exclude global-scope facts from retrieval",
|
|
473
|
-
)
|
|
474
|
-
recall_p.add_argument(
|
|
475
|
-
"--include-shared", dest="include_shared", action="store_true", default=None,
|
|
476
|
-
help="Include facts shared with this profile (opt-in; default off)",
|
|
477
|
-
)
|
|
478
|
-
recall_p.add_argument(
|
|
479
|
-
"--no-shared", dest="include_shared", action="store_false", default=None,
|
|
480
|
-
help="Exclude shared-scope facts from retrieval",
|
|
481
|
-
)
|
|
482
|
-
# v3.8.2 client-driven agentic: agents parsing --json should ACT on the
|
|
483
|
-
# confidence signals rather than expect a server-side LLM to reformulate.
|
|
484
|
-
recall_p.epilog = (
|
|
485
|
-
"AGENT GUIDANCE (--json): recall returns fast local results plus "
|
|
486
|
-
"confidence signals. If 'no_confident_match' is true or "
|
|
487
|
-
"'answer_confidence' is low, rewrite the query into 1-3 more specific "
|
|
488
|
-
"sub-queries and call recall again before concluding nothing was found. "
|
|
489
|
-
"Confident match -> use it directly."
|
|
490
|
-
)
|
|
491
|
-
|
|
492
|
-
forget_p = sub.add_parser("forget", help="Delete memories matching a query (fuzzy)")
|
|
493
|
-
forget_p.add_argument("query", nargs="?", default=None, help="Query to match for deletion. Optional with --dry-run (previews all memories).")
|
|
494
|
-
forget_p.add_argument("--dry-run", action="store_true", default=False, help="Preview matches without deleting. With no query, previews every memory.")
|
|
495
|
-
forget_p.add_argument("--yes", "-y", action="store_true", help="Skip confirmation prompt")
|
|
496
|
-
forget_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
497
|
-
|
|
498
|
-
delete_p = sub.add_parser("delete", help="Delete a specific memory by ID (precise)")
|
|
499
|
-
delete_p.add_argument("fact_id", help="Exact fact ID to delete")
|
|
500
|
-
delete_p.add_argument("--yes", "-y", action="store_true", help="Skip confirmation")
|
|
501
|
-
delete_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
502
|
-
|
|
503
|
-
update_p = sub.add_parser("update", help="Edit the content of a specific memory by ID")
|
|
504
|
-
update_p.add_argument("fact_id", help="Exact fact ID to update")
|
|
505
|
-
update_p.add_argument("content", help="New content for the memory")
|
|
506
|
-
update_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
507
|
-
|
|
508
|
-
correction_p = sub.add_parser(
|
|
509
|
-
"review-correction", help="Apply, reject, or roll back a reviewed correction case"
|
|
510
|
-
)
|
|
511
|
-
correction_p.add_argument("case_id", help="Correction case ID returned by slm update")
|
|
512
|
-
correction_p.add_argument("action", choices=("apply", "reject", "rollback"))
|
|
513
|
-
correction_p.add_argument("expected_version", type=int, help="Current case version (CAS guard)")
|
|
514
|
-
correction_p.add_argument(
|
|
515
|
-
"--event-valid-until",
|
|
516
|
-
help="Optional reviewer-approved RFC3339 event-time boundary (apply only)",
|
|
517
|
-
)
|
|
518
|
-
correction_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
519
|
-
|
|
520
|
-
list_p = sub.add_parser("list", help="List recent memories chronologically (shows IDs for delete/update)")
|
|
521
|
-
list_p.add_argument(
|
|
522
|
-
"--limit", "-n", type=int, default=CANONICAL_LIST_LIMIT,
|
|
523
|
-
help=f"Number of entries (default {CANONICAL_LIST_LIMIT})",
|
|
524
|
-
)
|
|
525
|
-
list_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
526
|
-
|
|
527
|
-
# -- Diagnostics ---------------------------------------------------
|
|
528
|
-
status_p = sub.add_parser("status", help="System status (mode, profile, DB size)")
|
|
529
|
-
status_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
530
|
-
status_p.add_argument(
|
|
531
|
-
"--verbose", "-v", action="store_true",
|
|
532
|
-
help="Show extended status: migration log, daemon port, disabled marker, last version",
|
|
533
|
-
)
|
|
534
|
-
|
|
535
|
-
health_p = sub.add_parser("health", help="Math layer health (scoring, consistency, and lifecycle layers)")
|
|
536
|
-
health_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
537
|
-
|
|
538
|
-
trace_p = sub.add_parser("trace", help="Recall with per-channel score breakdown")
|
|
539
|
-
trace_p.add_argument("query", help="Search query")
|
|
540
|
-
trace_p.add_argument("--limit", type=int, default=10, help="Max results (default 10)")
|
|
541
|
-
trace_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
542
|
-
|
|
543
|
-
# -- Diagnostics (continued) ----------------------------------------
|
|
544
|
-
doctor_p = sub.add_parser("doctor", help="Pre-flight check: deps, embedding worker, connectivity")
|
|
545
|
-
doctor_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
546
|
-
doctor_p.add_argument(
|
|
547
|
-
"--quick", action="store_true",
|
|
548
|
-
help="Run only the fast checks (deps + config); skip daemon/embedding probes",
|
|
549
|
-
)
|
|
550
|
-
doctor_p.add_argument(
|
|
551
|
-
"--deep", action="store_true",
|
|
552
|
-
help="Read every database page (PRAGMA integrity_check) instead of the "
|
|
553
|
-
"structural check; slow on a large store",
|
|
554
|
-
)
|
|
555
|
-
doctor_p.add_argument(
|
|
556
|
-
"--fix", action="store_true",
|
|
557
|
-
help="Auto-repair fixable components (re-download missing models, "
|
|
558
|
-
"install sqlite-vec) before checking, then report",
|
|
559
|
-
)
|
|
560
|
-
|
|
561
|
-
# v3.8.2 super-help — grouped overview of every command + focused topics.
|
|
562
|
-
help_p = sub.add_parser(
|
|
563
|
-
"help",
|
|
564
|
-
help="Grouped overview of all commands + topics (modes, config, self-heal)",
|
|
565
|
-
)
|
|
566
|
-
help_p.add_argument(
|
|
567
|
-
"topic", nargs="?",
|
|
568
|
-
help="Optional topic: modes | config | self-heal",
|
|
569
|
-
)
|
|
570
|
-
|
|
571
|
-
# LLD-06 §6.6 — `slm wrap <agent> [args...]` activates the Optimize
|
|
572
|
-
# proxy for a specific agent. Supported agents: claude, claude-settings,
|
|
573
|
-
# codex, aider, cline, generic, etc. See optimize.adapters._agent_registry.
|
|
574
|
-
wrap_p = sub.add_parser(
|
|
575
|
-
"wrap",
|
|
576
|
-
help="Activate Optimize proxy for a specific agent (claude, codex, aider, ...)",
|
|
577
|
-
)
|
|
578
|
-
wrap_p.add_argument(
|
|
579
|
-
"--list", action="store_true",
|
|
580
|
-
help="List all registered agents and their mechanisms",
|
|
581
|
-
)
|
|
582
|
-
wrap_p.add_argument(
|
|
583
|
-
"--persistent", action="store_true",
|
|
584
|
-
help="Persist env vars to the agent's config file (~/.claude/settings.json) instead of launching",
|
|
585
|
-
)
|
|
586
|
-
wrap_p.add_argument(
|
|
587
|
-
"--dry-run", action="store_true",
|
|
588
|
-
help="Print the action that would be taken without executing it",
|
|
589
|
-
)
|
|
590
|
-
wrap_p.add_argument("agent", nargs="?", default=None, help="Agent key (run `slm wrap --list` to see all)")
|
|
591
|
-
wrap_p.add_argument("agent_args", nargs=argparse.REMAINDER, help="Args passed to the agent binary")
|
|
592
|
-
|
|
593
|
-
# -- Services ------------------------------------------------------
|
|
594
|
-
sub.add_parser("mcp", help="Start MCP server (stdio transport for IDE integration)")
|
|
595
|
-
sub.add_parser("warmup", help="Pre-download embedding model (~500MB, one-time)")
|
|
596
|
-
|
|
597
|
-
dashboard_p = sub.add_parser("dashboard", help="Open web dashboard")
|
|
598
|
-
dashboard_p.add_argument(
|
|
599
|
-
"--port", type=int, default=8765, help="Port (default 8765)",
|
|
600
|
-
)
|
|
601
|
-
|
|
602
|
-
# V3.3.21: Daemon serve mode
|
|
603
|
-
serve_p = sub.add_parser("serve", help="Start/stop daemon for instant CLI response (~600MB RAM)")
|
|
604
|
-
serve_p.add_argument(
|
|
605
|
-
"action", nargs="?", default="start",
|
|
606
|
-
choices=["start", "stop", "status", "install", "uninstall"],
|
|
607
|
-
help="start (default), stop, status, install (OS service), uninstall",
|
|
608
|
-
)
|
|
609
|
-
|
|
610
|
-
# V3.4.9: Full system restart with health verification
|
|
611
|
-
restart_p = sub.add_parser(
|
|
612
|
-
"restart",
|
|
613
|
-
help="Nuclear restart: kill orphans, clean state, start fresh, verify health",
|
|
614
|
-
)
|
|
615
|
-
restart_p.add_argument(
|
|
616
|
-
"--dashboard", action="store_true",
|
|
617
|
-
help="Open dashboard after restart",
|
|
618
|
-
)
|
|
619
|
-
restart_p.add_argument("--json", action="store_true", help="Output structured JSON")
|
|
620
|
-
|
|
621
|
-
# -- Profiles ------------------------------------------------------
|
|
622
|
-
profile_p = sub.add_parser("profile", help="Profile management (list/switch/create)")
|
|
623
|
-
profile_p.add_argument(
|
|
624
|
-
"action", choices=["list", "switch", "create"], help="Action",
|
|
625
|
-
)
|
|
626
|
-
profile_p.add_argument("name", nargs="?", help="Profile name")
|
|
627
|
-
profile_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
628
|
-
|
|
629
|
-
# -- Active Memory (V3.1) ------------------------------------------
|
|
630
|
-
hooks_p = sub.add_parser("hooks", help="Manage additive Claude Code or Codex hooks")
|
|
631
|
-
hooks_p.add_argument(
|
|
632
|
-
"action", nargs="?", default="status",
|
|
633
|
-
choices=["install", "remove", "status"], help="Action (default: status)",
|
|
634
|
-
)
|
|
635
|
-
hooks_p.add_argument(
|
|
636
|
-
"--gate", action="store_true",
|
|
637
|
-
help="Enable PreToolUse gate (experimental — blocks tools until session_init)",
|
|
638
|
-
)
|
|
639
|
-
hooks_p.add_argument(
|
|
640
|
-
"--agent", choices=["claude", "codex"], default="claude",
|
|
641
|
-
help="Target agent (default: claude)",
|
|
642
|
-
)
|
|
643
|
-
hooks_p.add_argument(
|
|
644
|
-
"--dry-run", action="store_true",
|
|
645
|
-
help="Show whether the additive change is valid without writing files",
|
|
646
|
-
)
|
|
647
|
-
|
|
648
|
-
codex_p = sub.add_parser("codex", help="Install or inspect explicit Codex SLM add-ons")
|
|
649
|
-
codex_p.add_argument("action", nargs="?", default="status", choices=["install", "remove", "status"])
|
|
650
|
-
codex_p.add_argument("--dry-run", action="store_true", help="Validate without writing user files")
|
|
651
|
-
|
|
652
|
-
ctx_p = sub.add_parser("session-context", help="Print session context (for hooks)")
|
|
653
|
-
ctx_p.add_argument("query", nargs="?", default="", help="Optional context query")
|
|
654
|
-
ctx_p.add_argument(
|
|
655
|
-
"--max-age-days", type=int, default=30,
|
|
656
|
-
help="Suppress memories older than N days unless score ≥ 0.7 (default: 30). "
|
|
657
|
-
"Set 0 to disable age filter.",
|
|
658
|
-
)
|
|
659
|
-
ctx_p.add_argument(
|
|
660
|
-
"--full", action="store_true",
|
|
661
|
-
help="Use full engine path (slower, requires Ollama). Default is fast SQLite path.",
|
|
662
|
-
)
|
|
663
|
-
ctx_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
664
|
-
|
|
665
|
-
# #49: local session open/close (for hooks; no model roundtrip)
|
|
666
|
-
session_p = sub.add_parser(
|
|
667
|
-
"session", help="Open/close a session locally (for hooks; no model roundtrip)"
|
|
668
|
-
)
|
|
669
|
-
session_sub = session_p.add_subparsers(dest="session_command", title="session actions")
|
|
670
|
-
sopen_p = session_sub.add_parser("open", help="Warm session context")
|
|
671
|
-
sopen_p.add_argument("--project-path", default="", help="Project path to derive the warm query")
|
|
672
|
-
sopen_p.add_argument("--query", default="", help="Explicit warm query")
|
|
673
|
-
sopen_p.add_argument("--max-results", type=int, default=10, help="Max memories to warm (default 10)")
|
|
674
|
-
sclose_p = session_sub.add_parser(
|
|
675
|
-
"close", help="Close session, create temporal summaries"
|
|
676
|
-
)
|
|
677
|
-
sclose_p.add_argument(
|
|
678
|
-
"--session-id", default="", help="Session to close (default: most recent)"
|
|
679
|
-
)
|
|
680
|
-
|
|
681
|
-
obs_p = sub.add_parser("observe", help="Auto-capture content (pipe or argument)")
|
|
682
|
-
obs_p.add_argument("content", nargs="?", default="", help="Content to evaluate")
|
|
683
|
-
|
|
684
|
-
brain_p = sub.add_parser(
|
|
685
|
-
"brain", help="Show the local, profile-scoped Living Brain evidence summary"
|
|
686
|
-
)
|
|
687
|
-
brain_p.add_argument(
|
|
688
|
-
"action", nargs="?", default="status", choices=["status"],
|
|
689
|
-
help="Read-only Brain action (default: status)",
|
|
690
|
-
)
|
|
691
|
-
brain_p.add_argument("--json", action="store_true", help="Output structured JSON")
|
|
692
|
-
|
|
693
|
-
# -- V3.3 Commands -------------------------------------------------
|
|
694
|
-
decay_p = sub.add_parser("decay", help="Run Ebbinghaus forgetting decay cycle")
|
|
695
|
-
decay_p.add_argument(
|
|
696
|
-
"--dry-run", action="store_true", default=True,
|
|
697
|
-
help="Preview without applying (default)",
|
|
698
|
-
)
|
|
699
|
-
decay_p.add_argument(
|
|
700
|
-
"--execute", dest="dry_run", action="store_false",
|
|
701
|
-
help="Apply zone transitions",
|
|
702
|
-
)
|
|
703
|
-
decay_p.add_argument("--profile", default="", help="Target profile")
|
|
704
|
-
decay_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
705
|
-
|
|
706
|
-
quantize_p = sub.add_parser("quantize", help="Run EAP embedding quantization cycle")
|
|
707
|
-
quantize_p.add_argument(
|
|
708
|
-
"--dry-run", action="store_true", default=True,
|
|
709
|
-
help="Preview without applying (default)",
|
|
710
|
-
)
|
|
711
|
-
quantize_p.add_argument(
|
|
712
|
-
"--execute", dest="dry_run", action="store_false",
|
|
713
|
-
help="Apply precision changes",
|
|
714
|
-
)
|
|
715
|
-
quantize_p.add_argument("--profile", default="", help="Target profile")
|
|
716
|
-
quantize_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
717
|
-
|
|
718
|
-
consolidate_p = sub.add_parser("consolidate", help="Run memory consolidation pipeline")
|
|
719
|
-
consolidate_p.add_argument(
|
|
720
|
-
"--cognitive", action="store_true",
|
|
721
|
-
help="Run CCQ cognitive consolidation",
|
|
722
|
-
)
|
|
723
|
-
consolidate_p.add_argument(
|
|
724
|
-
"--dry-run", action="store_true", default=False,
|
|
725
|
-
help="Preview without applying",
|
|
726
|
-
)
|
|
727
|
-
consolidate_p.add_argument("--profile", default="", help="Target profile")
|
|
728
|
-
consolidate_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
729
|
-
|
|
730
|
-
sp_p = sub.add_parser("soft-prompts", help="List active soft prompts (auto-learned patterns)")
|
|
731
|
-
sp_p.add_argument("--profile", default="", help="Target profile")
|
|
732
|
-
sp_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
733
|
-
|
|
734
|
-
reap_p = sub.add_parser("reap", help="Find and kill orphaned SLM processes")
|
|
735
|
-
reap_p.add_argument(
|
|
736
|
-
"--force", action="store_true",
|
|
737
|
-
help="Kill orphans (default: dry run only)",
|
|
738
|
-
)
|
|
739
|
-
reap_p.add_argument(
|
|
740
|
-
"--all", action="store_true", dest="all",
|
|
741
|
-
help="Kill ALL slm mcp processes regardless of orphan status (use after IDE switch)",
|
|
742
|
-
)
|
|
743
|
-
reap_p.add_argument("--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
744
|
-
|
|
745
|
-
# V3.4.3: Ingestion adapters
|
|
746
|
-
adapters_p = sub.add_parser(
|
|
747
|
-
"adapters",
|
|
748
|
-
help="Manage ingestion adapters (Gmail, Calendar, Transcript)",
|
|
749
|
-
)
|
|
750
|
-
adapters_p.add_argument(
|
|
751
|
-
"rest", nargs="*", default=[],
|
|
752
|
-
help="Subcommand: list, enable, disable, start, stop, status [name]",
|
|
753
|
-
)
|
|
754
|
-
|
|
755
|
-
# V3.4.8: External observation ingestion
|
|
756
|
-
ingest_p = sub.add_parser(
|
|
757
|
-
"ingest",
|
|
758
|
-
help="Import external observations (ECC, JSONL) into SLM learning",
|
|
759
|
-
)
|
|
760
|
-
ingest_p.add_argument(
|
|
761
|
-
"--source", default="ecc",
|
|
762
|
-
choices=["ecc", "jsonl"],
|
|
763
|
-
help="Source type: ecc (Claude Code sessions), jsonl (generic)",
|
|
764
|
-
)
|
|
765
|
-
ingest_p.add_argument(
|
|
766
|
-
"--file", default="",
|
|
767
|
-
help="Specific file to ingest (auto-discovers if not set)",
|
|
768
|
-
)
|
|
769
|
-
ingest_p.add_argument(
|
|
770
|
-
"--dry-run", action="store_true", default=False,
|
|
771
|
-
help="Preview without writing",
|
|
772
|
-
)
|
|
773
|
-
ingest_p.add_argument("--json", action="store_true", help="Output structured JSON")
|
|
774
|
-
|
|
775
|
-
# V3.4.11: Config get/set (dot-notation)
|
|
776
|
-
config_p = sub.add_parser(
|
|
777
|
-
"config",
|
|
778
|
-
help="Get or set config values (e.g. slm config set evolution.enabled true)",
|
|
779
|
-
)
|
|
780
|
-
config_p.add_argument(
|
|
781
|
-
"action", choices=["get", "set"], help="Action: get or set",
|
|
782
|
-
)
|
|
783
|
-
config_p.add_argument("key", help="Config key in dot notation (e.g. evolution.enabled)")
|
|
784
|
-
config_p.add_argument("value", nargs="?", default=None, help="Value to set (for 'set' action)")
|
|
785
|
-
config_p.add_argument("--json", action="store_true", help="Output structured JSON")
|
|
786
|
-
|
|
787
|
-
# V3.4.11: Skill evolution (called from Stop hook, fire-and-forget)
|
|
788
|
-
evolve_p = sub.add_parser(
|
|
789
|
-
"evolve",
|
|
790
|
-
help="Run post-session skill evolution (internal, called by Stop hook)",
|
|
791
|
-
)
|
|
792
|
-
evolve_p.add_argument("--session", default="", help="Session ID to process")
|
|
793
|
-
evolve_p.add_argument("--profile", default="default", help="Profile ID")
|
|
794
|
-
|
|
795
|
-
# v3.4.22 — MASTER-PLAN §8 escape hatches (Stage 8 SB-5).
|
|
796
|
-
disable_p = sub.add_parser(
|
|
797
|
-
"disable",
|
|
798
|
-
help="Disable SLM globally (writes ~/.superlocalmemory/.disabled, stops daemon)",
|
|
799
|
-
)
|
|
800
|
-
disable_p.add_argument(
|
|
801
|
-
"--reason", default="",
|
|
802
|
-
help="Optional reason string written into the marker for audit",
|
|
803
|
-
)
|
|
804
|
-
|
|
805
|
-
sub.add_parser(
|
|
806
|
-
"enable",
|
|
807
|
-
help="Remove the .disabled marker; print command to start daemon",
|
|
808
|
-
)
|
|
809
|
-
|
|
810
|
-
sub.add_parser(
|
|
811
|
-
"clear-cache",
|
|
812
|
-
help="Wipe regenerable caches (memory.db + learning.db are preserved)",
|
|
813
|
-
)
|
|
814
|
-
|
|
815
|
-
recon_p = sub.add_parser(
|
|
816
|
-
"reconfigure",
|
|
817
|
-
help="Re-run the interactive postinstall (changes profile/knobs)",
|
|
818
|
-
)
|
|
819
|
-
recon_p.add_argument(
|
|
820
|
-
"extras", nargs="*", default=[],
|
|
821
|
-
help="Extra flags passed to postinstall-interactive.js",
|
|
822
|
-
)
|
|
823
|
-
|
|
824
|
-
bench_p = sub.add_parser(
|
|
825
|
-
"benchmark",
|
|
826
|
-
help="Run evo-memory benchmark against an isolated tmp DB (never touches user data)",
|
|
827
|
-
)
|
|
828
|
-
bench_p.add_argument(
|
|
829
|
-
"--json", action="store_true",
|
|
830
|
-
help="Emit JSON result instead of human-readable summary",
|
|
831
|
-
)
|
|
832
|
-
|
|
833
|
-
evidence_p = sub.add_parser(
|
|
834
|
-
"evidence",
|
|
835
|
-
help="Export, verify, import, or rebuild versioned memory evidence",
|
|
836
|
-
)
|
|
837
|
-
evidence_sub = evidence_p.add_subparsers(
|
|
838
|
-
dest="evidence_command", title="evidence subcommands",
|
|
839
|
-
)
|
|
840
|
-
evidence_export = evidence_sub.add_parser(
|
|
841
|
-
"export", help="Write a deterministic checksummed JSONL bundle",
|
|
842
|
-
)
|
|
843
|
-
evidence_export.add_argument("destination")
|
|
844
|
-
evidence_export.add_argument("--profile", default="default")
|
|
845
|
-
evidence_export.add_argument("--json", action="store_true")
|
|
846
|
-
evidence_verify = evidence_sub.add_parser(
|
|
847
|
-
"verify", help="Verify checksums and source reconciliation",
|
|
848
|
-
)
|
|
849
|
-
evidence_verify.add_argument("bundle")
|
|
850
|
-
evidence_verify.add_argument("--json", action="store_true")
|
|
851
|
-
evidence_import = evidence_sub.add_parser(
|
|
852
|
-
"import", help="Import relational truth (dry-run unless --execute)",
|
|
853
|
-
)
|
|
854
|
-
evidence_import.add_argument("bundle")
|
|
855
|
-
evidence_import.add_argument("--profile", default="default")
|
|
856
|
-
evidence_import.add_argument("--replace", action="store_true")
|
|
857
|
-
evidence_import.add_argument("--rollback-dir", default=None)
|
|
858
|
-
evidence_import.add_argument("--execute", action="store_true")
|
|
859
|
-
evidence_import.add_argument("--json", action="store_true")
|
|
860
|
-
evidence_rebuild = evidence_sub.add_parser(
|
|
861
|
-
"rebuild", help="Rebuild derived lexical state (dry-run unless --execute)",
|
|
862
|
-
)
|
|
863
|
-
evidence_rebuild.add_argument("--profile", default="default")
|
|
864
|
-
evidence_rebuild.add_argument("--execute", action="store_true")
|
|
865
|
-
evidence_rebuild.add_argument("--json", action="store_true")
|
|
866
|
-
|
|
867
|
-
diagnostics_p = sub.add_parser(
|
|
868
|
-
"diagnostics",
|
|
869
|
-
help="Export bounded local operational aggregates (manual only)",
|
|
870
|
-
)
|
|
871
|
-
diagnostics_sub = diagnostics_p.add_subparsers(
|
|
872
|
-
dest="diagnostics_command", title="diagnostics subcommands",
|
|
873
|
-
)
|
|
874
|
-
diagnostics_export = diagnostics_sub.add_parser(
|
|
875
|
-
"export", help="Write a deterministic content-free JSON report",
|
|
876
|
-
)
|
|
877
|
-
diagnostics_export.add_argument("destination")
|
|
878
|
-
diagnostics_reliability = diagnostics_sub.add_parser(
|
|
879
|
-
"reliability",
|
|
880
|
-
help=(
|
|
881
|
-
"Ask whether wired mechanisms are actually effective: has each "
|
|
882
|
-
"Bayesian learner moved off its prior, and has each schema-guarded "
|
|
883
|
-
"path ever executed against this store"
|
|
884
|
-
),
|
|
885
|
-
)
|
|
886
|
-
diagnostics_reliability.add_argument(
|
|
887
|
-
"--min-observations", type=int, default=None,
|
|
888
|
-
help="Observation floor below which an unmoved posterior is not reported",
|
|
889
|
-
)
|
|
890
|
-
diagnostics_export.add_argument(
|
|
891
|
-
"--json", action="store_true", help="Output structured JSON",
|
|
892
|
-
)
|
|
893
|
-
|
|
894
|
-
# S-M07: install-token rotation.
|
|
895
|
-
sub.add_parser(
|
|
896
|
-
"rotate-token",
|
|
897
|
-
help="Rotate the SLM install token (run `slm restart` afterwards)",
|
|
898
|
-
)
|
|
899
|
-
|
|
900
|
-
# ---- SLM v3.6 Optimize subcommands (additive, never modify above) ----
|
|
901
|
-
|
|
902
|
-
# slm optimize status|on|off|savings
|
|
903
|
-
opt_p = sub.add_parser("optimize", help="Optimize module control (cache + compress)")
|
|
904
|
-
opt_sub = opt_p.add_subparsers(dest="opt_command", title="optimize subcommands")
|
|
905
|
-
opt_sub.add_parser("status", help="Show Optimize status")
|
|
906
|
-
opt_sub.add_parser("on", help="Enable cache + compress")
|
|
907
|
-
opt_sub.add_parser("off", help="Disable cache + compress")
|
|
908
|
-
savings_p = opt_sub.add_parser("savings", help="Token/cost savings report")
|
|
909
|
-
savings_p.add_argument("--since", type=int, default=7, help="Days to look back (default 7)")
|
|
910
|
-
savings_p.add_argument("--provider", default=None,
|
|
911
|
-
choices=["anthropic", "openai", "gemini"],
|
|
912
|
-
help="Filter by provider")
|
|
913
|
-
for _sp in opt_sub.choices.values():
|
|
914
|
-
if not any(a.option_strings == ["--json"] for a in _sp._actions):
|
|
915
|
-
_sp.add_argument("--json", action="store_true",
|
|
916
|
-
help="Output structured JSON (agent-native)")
|
|
917
|
-
|
|
918
|
-
# slm cache status|clear|invalidate|ttl|semantic
|
|
919
|
-
cache_p = sub.add_parser("cache", help="Cache control (TTL, clear, invalidate, semantic)")
|
|
920
|
-
cache_sub = cache_p.add_subparsers(dest="cache_command", title="cache subcommands")
|
|
921
|
-
cache_sub.add_parser("status", help="Show cache state")
|
|
922
|
-
cache_sub.add_parser("clear", help="Delete all entries for tenant")
|
|
923
|
-
cache_inv_p = cache_sub.add_parser("invalidate", help="Delete entries by tag")
|
|
924
|
-
cache_inv_p.add_argument("--tag", required=True, help="Tag string to match")
|
|
925
|
-
cache_ttl_p = cache_sub.add_parser("ttl", help="Set cache TTL in seconds")
|
|
926
|
-
cache_ttl_p.add_argument("--set", dest="ttl_set", type=int, default=None,
|
|
927
|
-
help="Exact-cache TTL (seconds, >0)")
|
|
928
|
-
cache_ttl_p.add_argument("--semantic", dest="ttl_semantic", type=int, default=None,
|
|
929
|
-
help="Semantic-cache TTL (seconds, >0)")
|
|
930
|
-
cache_sem_p = cache_sub.add_parser("semantic", help="Enable/disable semantic cache")
|
|
931
|
-
cache_sem_p.add_argument("semantic_value", choices=["on", "off"], help="on or off")
|
|
932
|
-
for _sp in cache_sub.choices.values():
|
|
933
|
-
if not any(a.option_strings == ["--json"] for a in _sp._actions):
|
|
934
|
-
_sp.add_argument("--json", action="store_true",
|
|
935
|
-
help="Output structured JSON (agent-native)")
|
|
936
|
-
if not any(a.option_strings == ["--tenant"] for a in _sp._actions):
|
|
937
|
-
_sp.add_argument("--tenant", default="default", help="Tenant ID (default: 'default')")
|
|
938
|
-
|
|
939
|
-
# slm compress status|mode|code|prose|ccr
|
|
940
|
-
compress_p = sub.add_parser("compress", help="Compression control (mode, code, prose, CCR)")
|
|
941
|
-
comp_sub = compress_p.add_subparsers(dest="compress_command", title="compress subcommands")
|
|
942
|
-
comp_sub.add_parser("status", help="Show compression state")
|
|
943
|
-
comp_mode_p = comp_sub.add_parser("mode", help="Set compression mode")
|
|
944
|
-
comp_mode_p.add_argument("mode_value", choices=["safe", "aggressive"],
|
|
945
|
-
help="safe (default) or aggressive")
|
|
946
|
-
comp_code_p = comp_sub.add_parser("code", help="Enable/disable code compression")
|
|
947
|
-
comp_code_p.add_argument("code_value", choices=["on", "off"], help="on or off")
|
|
948
|
-
comp_prose_p = comp_sub.add_parser("prose", help="Enable/disable prose compression")
|
|
949
|
-
comp_prose_p.add_argument("prose_value", choices=["on", "off"], help="on or off")
|
|
950
|
-
comp_ccr_p = comp_sub.add_parser("ccr", help="Enable/disable CCR")
|
|
951
|
-
comp_ccr_p.add_argument("ccr_value", choices=["on", "off"], help="on or off")
|
|
952
|
-
comp_align_p = comp_sub.add_parser("align", help="Enable/disable alignment compression")
|
|
953
|
-
comp_align_p.add_argument("align_value", choices=["on", "off"], help="on or off")
|
|
954
|
-
for _sp in comp_sub.choices.values():
|
|
955
|
-
if not any(a.option_strings == ["--json"] for a in _sp._actions):
|
|
956
|
-
_sp.add_argument("--json", action="store_true",
|
|
957
|
-
help="Output structured JSON (agent-native)")
|
|
958
|
-
|
|
959
|
-
# slm proxy
|
|
960
|
-
proxy_p = sub.add_parser("proxy", help="Start SLM optimization proxy (Anthropic + OpenAI)")
|
|
961
|
-
proxy_p.add_argument("--port", type=int, default=8765, help="Port (default: 8765)")
|
|
962
|
-
proxy_p.add_argument("--provider", default="anthropic",
|
|
963
|
-
choices=["anthropic", "openai", "gemini"],
|
|
964
|
-
help="Target provider (default: anthropic)")
|
|
965
|
-
proxy_p.add_argument("--no-compress", action="store_true", dest="no_compress",
|
|
966
|
-
help="Disable compression for this session")
|
|
967
|
-
proxy_p.add_argument("--semantic", action="store_true",
|
|
968
|
-
help="Enable semantic cache for this session")
|
|
969
|
-
proxy_p.add_argument("--json", action="store_true",
|
|
970
|
-
help="Output structured JSON (agent-native)")
|
|
971
|
-
|
|
972
|
-
# slm help-optimize
|
|
973
|
-
help_opt_p = sub.add_parser(
|
|
974
|
-
"help-optimize",
|
|
975
|
-
help="Full Optimize reference: subcommands + agent recipes + safety notes",
|
|
976
|
-
)
|
|
977
|
-
help_opt_p.add_argument(
|
|
978
|
-
"topic", nargs="?", default=None,
|
|
979
|
-
choices=["cache", "compress", "optimize", "proxy", "agents", "safety"],
|
|
980
|
-
help="Topic to display (default: all)",
|
|
981
|
-
)
|
|
982
|
-
help_opt_p.add_argument(
|
|
983
|
-
"--no-pager", action="store_true", dest="no_pager", default=False,
|
|
984
|
-
help="Print to stdout instead of piping through a pager",
|
|
985
|
-
)
|
|
986
|
-
|
|
987
|
-
# ---- end SLM v3.6 Optimize subcommands ----
|
|
988
|
-
|
|
989
|
-
# slm loop demo|history|show — bounded, gate-verified agent loops (v3.8.0)
|
|
990
|
-
loop_p = sub.add_parser(
|
|
991
|
-
"loop",
|
|
992
|
-
help="Bounded loops: gate-verified agent loops with an SLM-backed ledger",
|
|
993
|
-
)
|
|
994
|
-
loop_sub = loop_p.add_subparsers(dest="loop_command", title="loop subcommands")
|
|
995
|
-
loop_demo_p = loop_sub.add_parser(
|
|
996
|
-
"demo", help="Run the keyless convergence demo (proves engine + ledger)")
|
|
997
|
-
loop_demo_p.add_argument(
|
|
998
|
-
"--iterations", type=int, default=10, help="Max iterations (default: 10)")
|
|
999
|
-
loop_hist_p = loop_sub.add_parser("history", help="List recorded loop runs")
|
|
1000
|
-
loop_hist_p.add_argument(
|
|
1001
|
-
"--name", default=None, help="Loop name (default: convergence-demo)")
|
|
1002
|
-
loop_show_p = loop_sub.add_parser("show", help="Show every lap of one run")
|
|
1003
|
-
loop_show_p.add_argument("run_id", help="Run id (from history)")
|
|
1004
|
-
for _sp in loop_sub.choices.values():
|
|
1005
|
-
_sp.add_argument("--json", action="store_true",
|
|
1006
|
-
help="Output structured JSON (agent-native)")
|
|
1007
|
-
|
|
1008
|
-
# V4.0.7: the readable summary layer from issue #113. The generators shipped
|
|
1009
|
-
# in 4.0.6 with no caller; this is the surface that makes them reachable.
|
|
1010
|
-
from superlocalmemory.cli.summary_cmd import register_summary_parser
|
|
1011
|
-
|
|
1012
|
-
register_summary_parser(sub)
|
|
1013
|
-
|
|
1014
|
-
# V4.0.6: GDPR subject-rights CLI (Art.15/17/20)
|
|
1015
|
-
gdpr_p = sub.add_parser(
|
|
1016
|
-
"gdpr",
|
|
1017
|
-
help="GDPR subject rights: status, export (Art.15/20), erase (Art.17), verify",
|
|
1018
|
-
)
|
|
1019
|
-
gdpr_sub = gdpr_p.add_subparsers(dest="gdpr_command", title="gdpr subcommands")
|
|
1020
|
-
|
|
1021
|
-
gdpr_status_p = gdpr_sub.add_parser(
|
|
1022
|
-
"status",
|
|
1023
|
-
help="Compliance posture: receipts, audit events, known gaps (read-only)",
|
|
1024
|
-
)
|
|
1025
|
-
gdpr_status_p.add_argument(
|
|
1026
|
-
"--profile", default=None, metavar="PROFILE",
|
|
1027
|
-
help="Scope to a specific profile (default: report all)",
|
|
1028
|
-
)
|
|
1029
|
-
gdpr_status_p.add_argument(
|
|
1030
|
-
"--json", action="store_true", help="Output structured JSON (agent-native)",
|
|
1031
|
-
)
|
|
1032
|
-
|
|
1033
|
-
gdpr_export_p = gdpr_sub.add_parser(
|
|
1034
|
-
"export",
|
|
1035
|
-
help="Art.15/20 subject access / data portability export",
|
|
1036
|
-
)
|
|
1037
|
-
gdpr_export_p.add_argument(
|
|
1038
|
-
"--profile", required=True, metavar="PROFILE",
|
|
1039
|
-
help="Profile to export (required)",
|
|
1040
|
-
)
|
|
1041
|
-
gdpr_export_p.add_argument(
|
|
1042
|
-
"--output", default=None, metavar="FILE",
|
|
1043
|
-
help="Write export JSON to FILE (default: stdout)",
|
|
1044
|
-
)
|
|
1045
|
-
gdpr_export_p.add_argument(
|
|
1046
|
-
"--json", action="store_true", help="Output structured JSON envelope",
|
|
1047
|
-
)
|
|
1048
|
-
|
|
1049
|
-
gdpr_erase_p = gdpr_sub.add_parser(
|
|
1050
|
-
"erase",
|
|
1051
|
-
help=(
|
|
1052
|
-
"Art.17 right to erasure — IRREVERSIBLE. "
|
|
1053
|
-
"Requires --profile PROFILE AND --yes."
|
|
1054
|
-
),
|
|
1055
|
-
)
|
|
1056
|
-
gdpr_erase_p.add_argument(
|
|
1057
|
-
"--profile", default=None, metavar="PROFILE",
|
|
1058
|
-
help="Profile to erase (required for live erasure)",
|
|
1059
|
-
)
|
|
1060
|
-
gdpr_erase_p.add_argument(
|
|
1061
|
-
"--yes", action="store_true",
|
|
1062
|
-
help="Confirm irreversible erasure (required together with --profile)",
|
|
1063
|
-
)
|
|
1064
|
-
gdpr_erase_p.add_argument(
|
|
1065
|
-
"--dry-run", action="store_true", dest="dry_run",
|
|
1066
|
-
help="Preview what would be erased without deleting anything",
|
|
1067
|
-
)
|
|
1068
|
-
gdpr_erase_p.add_argument(
|
|
1069
|
-
"--json", action="store_true", help="Output structured JSON",
|
|
1070
|
-
)
|
|
1071
|
-
|
|
1072
|
-
gdpr_verify_p = gdpr_sub.add_parser(
|
|
1073
|
-
"verify",
|
|
1074
|
-
help="Verify HMAC integrity of an erasure receipt (exit 0=ok, 1=tampered, 2=not-found)",
|
|
1075
|
-
)
|
|
1076
|
-
gdpr_verify_p.add_argument(
|
|
1077
|
-
"--receipt-id", dest="receipt_id", default=None, metavar="ID",
|
|
1078
|
-
help="Erasure receipt ID to verify",
|
|
1079
|
-
)
|
|
1080
|
-
gdpr_verify_p.add_argument(
|
|
1081
|
-
"--profile", default=None, metavar="PROFILE",
|
|
1082
|
-
help="Scope receipt lookup to a specific profile",
|
|
1083
|
-
)
|
|
1084
|
-
gdpr_verify_p.add_argument(
|
|
1085
|
-
"--json", action="store_true", help="Output structured JSON",
|
|
1086
|
-
)
|
|
1087
|
-
|
|
1088
|
-
# Operational recovery & admin remediation
|
|
1089
|
-
ops_p = sub.add_parser(
|
|
1090
|
-
"ops",
|
|
1091
|
-
help="Operational recovery: list failures, resolve stuck ops, check status",
|
|
1092
|
-
)
|
|
1093
|
-
ops_sub = ops_p.add_subparsers(dest="ops_command", title="ops subcommands")
|
|
1094
|
-
ops_list_p = ops_sub.add_parser(
|
|
1095
|
-
"list", help="List all failed, stuck, or degraded operations (admin)")
|
|
1096
|
-
ops_list_p.add_argument(
|
|
1097
|
-
"--profile", default=None, metavar="PROFILE",
|
|
1098
|
-
help="Filter results to a specific profile (default: all)")
|
|
1099
|
-
ops_list_p.add_argument(
|
|
1100
|
-
"--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
1101
|
-
ops_resolve_p = ops_sub.add_parser(
|
|
1102
|
-
"resolve", help="Admin action: retry / force-reconcile / cancel a stuck op")
|
|
1103
|
-
ops_resolve_p.add_argument("operation_id", help="Operation ID from slm ops list")
|
|
1104
|
-
ops_resolve_p.add_argument(
|
|
1105
|
-
"--action", required=True,
|
|
1106
|
-
choices=["retry", "force_reconcile", "cancel"],
|
|
1107
|
-
help="Remediation action to apply")
|
|
1108
|
-
ops_resolve_p.add_argument(
|
|
1109
|
-
"--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
1110
|
-
ops_status_p = ops_sub.add_parser(
|
|
1111
|
-
"status", help="Quick failure count + writer stall overview")
|
|
1112
|
-
ops_status_p.add_argument(
|
|
1113
|
-
"--json", action="store_true", help="Output structured JSON (agent-native)")
|
|
1114
|
-
|
|
1115
|
-
args = parser.parse_args()
|
|
1116
|
-
|
|
1117
|
-
if not args.command:
|
|
1118
|
-
parser.print_help()
|
|
1119
|
-
sys.exit(0)
|
|
1120
|
-
|
|
1121
|
-
# V3.3.19: Auto-trigger setup wizard on first use
|
|
1122
|
-
if not (
|
|
1123
|
-
(args.command == "connect" and getattr(args, "dry_run", False))
|
|
1124
|
-
or (args.command == "upgrade-hosts" and not getattr(args, "apply", False))
|
|
1125
|
-
):
|
|
1126
|
-
from superlocalmemory.cli.setup_wizard import check_first_use
|
|
1127
|
-
check_first_use(args.command)
|
|
1128
|
-
|
|
1129
|
-
# V3.4.4: Auto-start daemon for all commands that need it.
|
|
1130
|
-
# SLM is always-on — close laptop, reboot, crash: daemon auto-recovers.
|
|
1131
|
-
# Cross-platform: macOS + Windows + Linux.
|
|
1132
|
-
if _command_requires_daemon(args):
|
|
1133
|
-
try:
|
|
1134
|
-
from superlocalmemory.cli.daemon import ensure_daemon
|
|
1135
|
-
ensure_daemon() # Starts daemon if not running; no-op if already up
|
|
1136
|
-
except Exception:
|
|
1137
|
-
pass # Don't block CLI if daemon start fails — commands have fallbacks
|
|
1138
|
-
|
|
1139
|
-
from superlocalmemory.cli.commands import dispatch
|
|
1140
|
-
|
|
1141
|
-
dispatch(args)
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
if __name__ == "__main__":
|
|
1145
|
-
main()
|