brainlayer 1.5.71__tar.gz → 1.5.72__tar.gz
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.
- {brainlayer-1.5.71 → brainlayer-1.5.72}/PKG-INFO +1 -1
- {brainlayer-1.5.71 → brainlayer-1.5.72}/pyproject.toml +1 -1
- {brainlayer-1.5.71 → brainlayer-1.5.72}/server.json +2 -2
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/__init__.py +1 -1
- brainlayer-1.5.72/src/brainlayer/_build.py +1 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/spotlight.py +48 -1
- brainlayer-1.5.71/src/brainlayer/_build.py +0 -1
- {brainlayer-1.5.71 → brainlayer-1.5.72}/.gitignore +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/LICENSE +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/README.md +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/hotlane_brainbar_daemon.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/backup-daily.sh +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/brainlayer-env-run.sh +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/brainlayer.env.example +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.backup-daily.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.daemon.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.decay.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.drain.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.health-check.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.hotlane-brainbar.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.index.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.jsonl-backup.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.log-cap.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.maintenance-nightly.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.maintenance-weekly.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.maintenance.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.observability.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.p0-counter.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.repair-fts.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.t3-ingest.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.throughput-watchdog.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.tier0-watchdog.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.wal-checkpoint.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.watch.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.etanhey.brainlayer-fleet-watchdog.plist +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/fleet-watchdog.sh +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/install.sh +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/jsonl-backup.sh +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/throughput-watchdog.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/release-verify-signatures.sh +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/tier0-watchdog.sh +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/__main__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/_helpers.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/agent_profiles.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/agent_provenance.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/alarm.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/archive_collapse.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/archive_lifecycle.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/backup_daily.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/backup_retention_invariant.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/badge_state.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/bitemporal.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/brainbar_activation.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/brainbar_auto_activation.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/brainbar_hybrid_helper.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/brainbar_identity.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/cachedelete_purge.swift +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/calibrate.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/chunk_origin.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/chunk_origin_backfill.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/chunk_origin_wipe.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/chunk_write.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/classify.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/claude_paths.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/cli/__init__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/cli/wizard.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/cli_jobs.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/cli_new.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/cloud_backfill.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/clustering.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/component_jobs.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/config.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/consolidation_plan.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/content_class.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/correction_judge.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/data/agents_registry.yaml +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/data/sandbox_seeds/skill-eval-baseline.json +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/db_shrink.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/decay.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/decay_backfill.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/decay_job.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/dedupe.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/dedupe_merge.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/deploy_drift.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/doctor.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/drain.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/drain_liveness.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/drive_credentials.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/embeddings.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/engine.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/enrichment_replay.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/__init__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/abcde_enrich_runner.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/abcde_variants.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/abcde_variants.yaml +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/benchmark.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/enrichment_gold.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/enrichment_graders.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/enrichment_judge.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/enrichment_llm_judge.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/enrichment_quality_benchmark.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/experiment_store.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/fixtures/README.md +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/labeling/enrichment-labeler.html +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/phoenix_gate/__init__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/phoenix_gate/__main__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/phoenix_gate/baseline_store.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/phoenix_gate/cli.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/phoenix_gate/models.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/phoenix_gate/phoenix_client.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/phoenix_gate/regression_gate.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/phoenix_gate/triggers.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/pilot_artifact_report.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/fallback_replay.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/git_learning.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/health_check.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/hook_python.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/hooks/__init__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/hooks/indexer.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/import_sweep.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/index_admission.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/index_budget.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/index_completeness.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/index_new.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/index_watchdog.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/ingest/__init__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/ingest/codex.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/ingest/t3.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/ingest_denylist.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/ingest_guard.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/isolation_proof.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/job_alerts.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/job_lifecycle_health.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/jobs.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/jsonl_backup.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/kg/__init__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/kg_cleanup.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/kg_judge.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/kg_promotion.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/kg_repo.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/kg_review_session.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/kg_session_finish.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/kg_session_harvest.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/launchd_consolidation.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/launchd_install.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/launchd_primitive.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/launchd_revert.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/lexical_defense.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/lexical_defense_dictionary.json +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/log_cap.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/maintenance.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/maintenance_calendar.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/maintenance_control.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp/__init__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp/_format.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp/_shared.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp/enrich_handler.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp/entity_handler.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp/palette.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp/search_handler.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp/store_handler.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp/tags_handler.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp_socket_config.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/mcp_stdio_bridge.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/memory_types.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/migrate.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/migration_custody.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/migration_journal.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/migration_runtime.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/notification_policy.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/observability_backup.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/observability_surface.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/observability_transport.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/p0_longitudinal_count.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/parent_death.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/paths.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pause.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/phonetic.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/__init__.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/agent_enrichment.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/analyze_communication.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/batch_extraction.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/brain_graph.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/chat_tags.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/chunk.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/classify.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/cloud_scrub.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/cluster_sampling.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/code_intelligence.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/correction_detection.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/correction_mining.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/digest.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/enrichment_prompts.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/enrichment_results.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/enrichment_tiers.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/entity_extraction.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/entity_resolution.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/extract.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/extract_claude_desktop.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/extract_corrections.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/extract_markdown.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/extract_whatsapp.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/frustration_mining.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/git_overlay.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/kg_extraction.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/kg_extraction_groq.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/longitudinal_analyzer.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/obsidian_export.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/operation_grouping.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/plan_linking.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/rate_limiter.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/relation_backfill.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/relation_verification.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/sanitize.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/secret_scrub.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/semantic_style.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/sentiment.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/session_history.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/style_embed.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/style_index.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/tag_entity_promotion.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/temporal_chains.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/time_batcher.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/unified_timeline.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/pipeline/write_queue.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/provenance.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/provenance_autosupersede.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/provenance_integration.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/queue_io.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/queue_merge.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/reembed_backfill.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/retired_services.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/runtime_store.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/sandbox_db.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/scoping.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/scrub_at_rest.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/search_fanout.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/search_profile.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/search_repo.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/service_supervisor.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/session_repo.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/setup.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/socket_hygiene.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/source_class_migration.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/storage.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/store.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/supervisor_adapters.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/supervisor_child.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/supervisor_guard.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/supervisor_jobs.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/system_prompt_guard.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/t3_linkage_alarm.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/t3_provenance.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/t3_sources.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/tag_normalization.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/taxonomy.json +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/telemetry.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/timestamp_iso.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/types.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/vector_store.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/wal_checkpoint.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/watcher.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/watcher_bridge.py +0 -0
- {brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/writer_telemetry.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: brainlayer
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.72
|
|
4
4
|
Summary: Persistent local memory for AI agents — 16 BrainBar MCP tools, semantic search, knowledge graph, SQLite
|
|
5
5
|
Project-URL: Homepage, https://brainlayer.etanheyman.com
|
|
6
6
|
Project-URL: Repository, https://github.com/EtanHey/brainlayer
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.etanhey/brainlayer",
|
|
4
4
|
"title": "BrainLayer",
|
|
5
5
|
"description": "Persistent local memory for AI agents \u2014 semantic search, knowledge graph, and 16 BrainBar MCP tools with ToolAnnotations over SQLite.",
|
|
6
|
-
"version": "1.5.
|
|
6
|
+
"version": "1.5.72",
|
|
7
7
|
"websiteUrl": "https://brainlayer.etanheyman.com",
|
|
8
8
|
"repository": {
|
|
9
9
|
"url": "https://github.com/EtanHey/brainlayer",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"registryType": "pypi",
|
|
15
15
|
"registryBaseUrl": "https://pypi.org",
|
|
16
16
|
"identifier": "brainlayer",
|
|
17
|
-
"version": "1.5.
|
|
17
|
+
"version": "1.5.72",
|
|
18
18
|
"runtimeHint": "pipx",
|
|
19
19
|
"transport": {
|
|
20
20
|
"type": "stdio"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
__version__ = "1.5.
|
|
5
|
+
__version__ = "1.5.72"
|
|
6
6
|
# Git sha the distributed package was built from; stamped by the release build, None in a source tree.
|
|
7
7
|
# scripts/sprint_gate.py reads it in "keg" mode to prove the served package is the code under test.
|
|
8
8
|
# No runtime `str | None` annotation: launchd/install.sh imports this under /usr/bin/python3 (3.9).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
BUILD_SHA = "bfd456ed149a3b573153318a684f8e4fbc6babb8"
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Lightweight Spotlight exclusion layout preflight."""
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
|
+
import stat
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
from typing import Callable, Optional, Tuple
|
|
6
7
|
|
|
@@ -26,7 +27,6 @@ _UNSUPPORTED_RUNTIME_PATH_OVERRIDES = (
|
|
|
26
27
|
"BRAINLAYER_DRAIN_LOG_PATH",
|
|
27
28
|
"BRAINLAYER_ENRICH_COST_DIR",
|
|
28
29
|
"BRAINLAYER_JSONL_BACKUP_LOG_PATH",
|
|
29
|
-
"BRAINLAYER_JSONL_BACKUP_STAGING_DIR",
|
|
30
30
|
"BRAINLAYER_JSONL_BACKUP_STATE_PATH",
|
|
31
31
|
"BRAINLAYER_LOG_DIR",
|
|
32
32
|
"BRAINLAYER_OFFSETS_PATH",
|
|
@@ -87,6 +87,52 @@ def _validate_disjoint_roots(roots: Tuple[Path, ...]) -> None:
|
|
|
87
87
|
raise RuntimeError(f"Spotlight exclusion roots must not overlap: {other} and {root}")
|
|
88
88
|
|
|
89
89
|
|
|
90
|
+
def _validate_jsonl_staging_override(
|
|
91
|
+
env_file: Optional[Path], data_roots: Tuple[Path, ...], *, ismount: Callable[[Path], bool]
|
|
92
|
+
) -> None:
|
|
93
|
+
from .config import configured_brainlayer_env_value
|
|
94
|
+
|
|
95
|
+
name = "BRAINLAYER_JSONL_BACKUP_STAGING_DIR"
|
|
96
|
+
configured = configured_brainlayer_env_value(name, env_file) if env_file is not None else None
|
|
97
|
+
# Validate both launchd's selected file and the current CLI's process-first value.
|
|
98
|
+
for value in dict.fromkeys((configured, os.environ.get(name, configured))):
|
|
99
|
+
if value in (None, ""):
|
|
100
|
+
continue
|
|
101
|
+
stage = Path(value)
|
|
102
|
+
if not stage.is_absolute() or ".." in stage.parts:
|
|
103
|
+
raise RuntimeError(f"{name} must be an absolute path without parent traversal: {stage}")
|
|
104
|
+
root = next(
|
|
105
|
+
(root for root in data_roots if root / "jsonl-backups" in stage.parents),
|
|
106
|
+
None,
|
|
107
|
+
)
|
|
108
|
+
if root is None:
|
|
109
|
+
raise RuntimeError(f"{name} must be a dedicated descendant of a managed jsonl-backups directory: {stage}")
|
|
110
|
+
for component in (*reversed(stage.parents), stage):
|
|
111
|
+
try:
|
|
112
|
+
info = component.lstat()
|
|
113
|
+
except FileNotFoundError:
|
|
114
|
+
continue
|
|
115
|
+
if not stat.S_ISDIR(info.st_mode):
|
|
116
|
+
raise RuntimeError(f"{name} ancestor must be a directory, never a symbolic link: {component}")
|
|
117
|
+
if info.st_uid not in (0, os.geteuid()) or info.st_mode & 0o022:
|
|
118
|
+
raise RuntimeError(f"{name} has an unsafe ancestor owner or mode: {component}")
|
|
119
|
+
if (component == root or root in component.parents) and ismount(component):
|
|
120
|
+
raise RuntimeError(f"{name} must not cross a mount boundary: {component}")
|
|
121
|
+
if component == stage and (info.st_uid != os.geteuid() or info.st_mode & 0o077):
|
|
122
|
+
raise RuntimeError(f"{name} must be a private directory owned by the current user: {stage}")
|
|
123
|
+
marker = root / SPOTLIGHT_EXCLUSION_MARKER
|
|
124
|
+
try:
|
|
125
|
+
marker_info = marker.lstat()
|
|
126
|
+
except FileNotFoundError as exc:
|
|
127
|
+
raise RuntimeError(f"{name} requires a marker-backed managed data root: {root}") from exc
|
|
128
|
+
if (
|
|
129
|
+
not stat.S_ISREG(marker_info.st_mode)
|
|
130
|
+
or marker_info.st_uid not in (0, os.geteuid())
|
|
131
|
+
or marker_info.st_mode & 0o022
|
|
132
|
+
):
|
|
133
|
+
raise RuntimeError(f"{name} requires a safe regular exclusion marker: {marker}")
|
|
134
|
+
|
|
135
|
+
|
|
90
136
|
def _ensure_spotlight_excluded_root(root: Path, children: Tuple[str, ...] = ()) -> Path:
|
|
91
137
|
resolved = root.expanduser()
|
|
92
138
|
resolved.mkdir(parents=True, exist_ok=True)
|
|
@@ -145,6 +191,7 @@ def ensure_spotlight_excluded_layout(
|
|
|
145
191
|
if root.is_dir() and not marker.is_file() and next(root.iterdir(), None) is not None:
|
|
146
192
|
raise RuntimeError(f"existing runtime tree {root} requires the Spotlight exclusion migration runbook")
|
|
147
193
|
|
|
194
|
+
_validate_jsonl_staging_override(env_file, tuple(resolved_roots[: len(data_roots)]), ismount=ismount_fn)
|
|
148
195
|
data_root_count = len(data_roots)
|
|
149
196
|
return (
|
|
150
197
|
*(_ensure_spotlight_excluded_root(root, _DATA_CHILDREN) for root in resolved_roots[:data_root_count]),
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
BUILD_SHA = "bdd90a907a55d35bba00b0618e2458dd21249c2d"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.hotlane-brainbar.plist
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.maintenance-nightly.plist
RENAMED
|
File without changes
|
{brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.maintenance-weekly.plist
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.brainlayer.throughput-watchdog.plist
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainlayer-1.5.71 → brainlayer-1.5.72}/scripts/launchd/com.etanhey.brainlayer-fleet-watchdog.plist
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/data/sandbox_seeds/skill-eval-baseline.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainlayer-1.5.71 → brainlayer-1.5.72}/src/brainlayer/eval/labeling/enrichment-labeler.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|