brainlayer 1.4.3__tar.gz → 1.4.4__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.
Files changed (195) hide show
  1. {brainlayer-1.4.3 → brainlayer-1.4.4}/PKG-INFO +2 -1
  2. {brainlayer-1.4.3 → brainlayer-1.4.4}/pyproject.toml +7 -2
  3. brainlayer-1.4.4/scripts/launchd/com.brainlayer.throughput-watchdog.plist +47 -0
  4. brainlayer-1.4.4/scripts/launchd/com.brainlayer.tier0-watchdog.plist +45 -0
  5. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/install.sh +119 -1
  6. brainlayer-1.4.4/scripts/launchd/throughput-watchdog.py +629 -0
  7. brainlayer-1.4.4/scripts/tier0-watchdog.sh +220 -0
  8. {brainlayer-1.4.3 → brainlayer-1.4.4}/server.json +2 -2
  9. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/__init__.py +1 -1
  10. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/agent_provenance.py +1 -1
  11. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/backup_daily.py +4 -2
  12. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/cli/__init__.py +107 -35
  13. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/cli_new.py +15 -15
  14. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/cloud_backfill.py +6 -4
  15. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/doctor.py +12 -5
  16. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/drain.py +57 -3
  17. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/engine.py +5 -0
  18. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/enrichment_controller.py +42 -3
  19. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/health_check.py +301 -74
  20. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/index_new.py +8 -3
  21. brainlayer-1.4.4/src/brainlayer/ingest_denylist.py +167 -0
  22. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/mcp/__init__.py +32 -3
  23. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/mcp/_format.py +6 -1
  24. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/mcp/_shared.py +4 -16
  25. brainlayer-1.4.4/src/brainlayer/mcp/palette.py +71 -0
  26. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/mcp/search_handler.py +122 -5
  27. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/mcp/store_handler.py +8 -5
  28. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/migrate.py +16 -12
  29. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/enrichment.py +5 -4
  30. brainlayer-1.4.4/src/brainlayer/runtime_store.py +494 -0
  31. brainlayer-1.4.4/src/brainlayer/search_fanout.py +167 -0
  32. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/search_repo.py +78 -19
  33. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/store.py +29 -5
  34. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/vector_store.py +87 -23
  35. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/watcher.py +346 -6
  36. brainlayer-1.4.4/src/brainlayer/writer_telemetry.py +645 -0
  37. brainlayer-1.4.3/src/brainlayer/ingest_denylist.py +0 -64
  38. {brainlayer-1.4.3 → brainlayer-1.4.4}/.gitignore +0 -0
  39. {brainlayer-1.4.3 → brainlayer-1.4.4}/LICENSE +0 -0
  40. {brainlayer-1.4.3 → brainlayer-1.4.4}/README.md +0 -0
  41. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/backup-daily.sh +0 -0
  42. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/brainlayer-env-run.sh +0 -0
  43. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/brainlayer.env.example +0 -0
  44. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.backup-daily.plist +0 -0
  45. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.decay.plist +0 -0
  46. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.drain.plist +0 -0
  47. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.enrichment.plist +0 -0
  48. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.health-check.plist +0 -0
  49. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.hotlane-brainbar.plist +0 -0
  50. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.index.plist +0 -0
  51. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.jsonl-backup.plist +0 -0
  52. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.maintenance-nightly.plist +0 -0
  53. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.maintenance-weekly.plist +0 -0
  54. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.p0-counter.plist +0 -0
  55. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.repair-fts.plist +0 -0
  56. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.wal-checkpoint.plist +0 -0
  57. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/com.brainlayer.watch.plist +0 -0
  58. {brainlayer-1.4.3 → brainlayer-1.4.4}/scripts/launchd/jsonl-backup.sh +0 -0
  59. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/_helpers.py +0 -0
  60. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/agent_profiles.py +0 -0
  61. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/alarm.py +0 -0
  62. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/bitemporal.py +0 -0
  63. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/brainbar_hybrid_helper.py +0 -0
  64. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/calibrate.py +0 -0
  65. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/chunk_origin.py +0 -0
  66. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/chunk_origin_backfill.py +0 -0
  67. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/classify.py +0 -0
  68. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/claude_paths.py +0 -0
  69. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/cli/wizard.py +0 -0
  70. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/clustering.py +0 -0
  71. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/config.py +0 -0
  72. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/content_class.py +0 -0
  73. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/correction_judge.py +0 -0
  74. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/data/agents_registry.yaml +0 -0
  75. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/data/sandbox_seeds/skill-eval-baseline.json +0 -0
  76. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/db_shrink.py +0 -0
  77. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/decay.py +0 -0
  78. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/decay_backfill.py +0 -0
  79. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/decay_job.py +0 -0
  80. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/dedupe.py +0 -0
  81. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/deploy_drift.py +0 -0
  82. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/drain_liveness.py +0 -0
  83. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/embeddings.py +0 -0
  84. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/__init__.py +0 -0
  85. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/abcde_enrich_runner.py +0 -0
  86. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/abcde_variants.py +0 -0
  87. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/abcde_variants.yaml +0 -0
  88. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/benchmark.py +0 -0
  89. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/enrichment_gold.py +0 -0
  90. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/enrichment_graders.py +0 -0
  91. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/enrichment_judge.py +0 -0
  92. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/enrichment_llm_judge.py +0 -0
  93. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/enrichment_quality_benchmark.py +0 -0
  94. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/experiment_store.py +0 -0
  95. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/fixtures/README.md +0 -0
  96. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/labeling/enrichment-labeler.html +0 -0
  97. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/phoenix_gate/__init__.py +0 -0
  98. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/phoenix_gate/__main__.py +0 -0
  99. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/phoenix_gate/baseline_store.py +0 -0
  100. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/phoenix_gate/cli.py +0 -0
  101. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/phoenix_gate/models.py +0 -0
  102. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/phoenix_gate/phoenix_client.py +0 -0
  103. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/phoenix_gate/regression_gate.py +0 -0
  104. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/eval/phoenix_gate/triggers.py +0 -0
  105. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/fallback_replay.py +0 -0
  106. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/git_learning.py +0 -0
  107. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/hooks/__init__.py +0 -0
  108. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/hooks/indexer.py +0 -0
  109. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/ingest/__init__.py +0 -0
  110. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/ingest/codex.py +0 -0
  111. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/ingest_guard.py +0 -0
  112. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/isolation_proof.py +0 -0
  113. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/jsonl_backup.py +0 -0
  114. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/kg/__init__.py +0 -0
  115. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/kg_cleanup.py +0 -0
  116. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/kg_judge.py +0 -0
  117. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/kg_promotion.py +0 -0
  118. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/kg_repo.py +0 -0
  119. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/kg_review_session.py +0 -0
  120. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/kg_session_finish.py +0 -0
  121. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/kg_session_harvest.py +0 -0
  122. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/launchd_primitive.py +0 -0
  123. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/lexical_defense.py +0 -0
  124. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/lexical_defense_dictionary.json +0 -0
  125. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/maintenance.py +0 -0
  126. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/mcp/enrich_handler.py +0 -0
  127. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/mcp/entity_handler.py +0 -0
  128. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/mcp/tags_handler.py +0 -0
  129. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/mcp_stdio_bridge.py +0 -0
  130. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/memory_types.py +0 -0
  131. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/p0_longitudinal_count.py +0 -0
  132. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/parent_death.py +0 -0
  133. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/paths.py +0 -0
  134. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/phonetic.py +0 -0
  135. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/__init__.py +0 -0
  136. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/agent_enrichment.py +0 -0
  137. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/analyze_communication.py +0 -0
  138. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/batch_extraction.py +0 -0
  139. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/brain_graph.py +0 -0
  140. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/chat_tags.py +0 -0
  141. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/chunk.py +0 -0
  142. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/classify.py +0 -0
  143. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/cluster_sampling.py +0 -0
  144. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/code_intelligence.py +0 -0
  145. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/correction_detection.py +0 -0
  146. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/correction_mining.py +0 -0
  147. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/digest.py +0 -0
  148. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/enrichment_tiers.py +0 -0
  149. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/entity_extraction.py +0 -0
  150. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/entity_resolution.py +0 -0
  151. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/extract.py +0 -0
  152. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/extract_claude_desktop.py +0 -0
  153. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/extract_corrections.py +0 -0
  154. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/extract_markdown.py +0 -0
  155. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/extract_whatsapp.py +0 -0
  156. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/frustration_mining.py +0 -0
  157. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/git_overlay.py +0 -0
  158. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/kg_extraction.py +0 -0
  159. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/kg_extraction_groq.py +0 -0
  160. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/longitudinal_analyzer.py +0 -0
  161. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/obsidian_export.py +0 -0
  162. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/operation_grouping.py +0 -0
  163. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/plan_linking.py +0 -0
  164. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/rate_limiter.py +0 -0
  165. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/sanitize.py +0 -0
  166. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/secret_scrub.py +0 -0
  167. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/semantic_style.py +0 -0
  168. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/sentiment.py +0 -0
  169. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/session_enrichment.py +0 -0
  170. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/style_embed.py +0 -0
  171. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/style_index.py +0 -0
  172. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/tag_entity_promotion.py +0 -0
  173. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/temporal_chains.py +0 -0
  174. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/time_batcher.py +0 -0
  175. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/unified_timeline.py +0 -0
  176. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/pipeline/write_queue.py +0 -0
  177. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/provenance.py +0 -0
  178. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/provenance_autosupersede.py +0 -0
  179. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/provenance_integration.py +0 -0
  180. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/queue_io.py +0 -0
  181. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/queue_merge.py +0 -0
  182. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/reembed_backfill.py +0 -0
  183. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/sandbox_db.py +0 -0
  184. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/scoping.py +0 -0
  185. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/search_profile.py +0 -0
  186. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/session_repo.py +0 -0
  187. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/setup.py +0 -0
  188. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/storage.py +0 -0
  189. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/system_prompt_guard.py +0 -0
  190. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/tag_normalization.py +0 -0
  191. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/taxonomy.json +0 -0
  192. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/telemetry.py +0 -0
  193. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/types.py +0 -0
  194. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/wal_checkpoint.py +0 -0
  195. {brainlayer-1.4.3 → brainlayer-1.4.4}/src/brainlayer/watcher_bridge.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brainlayer
3
- Version: 1.4.3
3
+ Version: 1.4.4
4
4
  Summary: Persistent memory MCP server for AI agents — 13 tools, semantic search, knowledge graph, on-device SQLite
5
5
  Project-URL: Homepage, https://brainlayer.etanheyman.com
6
6
  Project-URL: Repository, https://github.com/EtanHey/brainlayer
@@ -54,6 +54,7 @@ Requires-Dist: pytest>=7.0.0; extra == 'dev'
54
54
  Requires-Dist: ruff>=0.1.0; extra == 'dev'
55
55
  Requires-Dist: scikit-learn<1.6; extra == 'dev'
56
56
  Requires-Dist: setuptools<81,>=70.0.0; extra == 'dev'
57
+ Requires-Dist: tiktoken>=0.7.0; extra == 'dev'
57
58
  Requires-Dist: umap-learn>=0.5.0; extra == 'dev'
58
59
  Provides-Extra: docs
59
60
  Requires-Dist: mkdocs-material>=9.5.0; extra == 'docs'
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "brainlayer"
3
- version = "1.4.3"
3
+ version = "1.4.4"
4
4
  description = "Persistent memory MCP server for AI agents — 13 tools, semantic search, knowledge graph, on-device SQLite"
5
5
  license = {text = "Apache-2.0"}
6
6
  readme = "README.md"
@@ -82,6 +82,7 @@ dev = [
82
82
  "ruff>=0.1.0",
83
83
  "scikit-learn<1.6",
84
84
  "setuptools>=70.0.0,<81",
85
+ "tiktoken>=0.7.0",
85
86
  "umap-learn>=0.5.0",
86
87
  ]
87
88
  docs = [
@@ -124,15 +125,19 @@ markers = [
124
125
 
125
126
  [tool.hatch.build.targets.wheel]
126
127
  packages = ["src/brainlayer"]
127
- force-include = {"scripts/launchd" = "brainlayer/launchd"}
128
128
  exclude = [
129
129
  "src/brainlayer/dashboard",
130
130
  ]
131
131
 
132
+ [tool.hatch.build.targets.wheel.force-include]
133
+ "scripts/launchd" = "brainlayer/launchd"
134
+ "scripts/tier0-watchdog.sh" = "brainlayer/launchd/tier0-watchdog.sh"
135
+
132
136
  [tool.hatch.build.targets.sdist]
133
137
  only-include = [
134
138
  "src/brainlayer",
135
139
  "scripts/launchd",
140
+ "scripts/tier0-watchdog.sh",
136
141
  "README.md",
137
142
  "LICENSE",
138
143
  "server.json",
@@ -0,0 +1,47 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>Label</key>
6
+ <string>com.brainlayer.throughput-watchdog</string>
7
+ <key>ProgramArguments</key>
8
+ <array>
9
+ <string>__BRAINLAYER_ENV_RUN__</string>
10
+ <string>__PYTHON_BIN__</string>
11
+ <string>__THROUGHPUT_WATCHDOG_SCRIPT__</string>
12
+ <string>--json</string>
13
+ </array>
14
+ <key>EnvironmentVariables</key>
15
+ <dict>
16
+ <key>HOME</key>
17
+ <string>__HOME__</string>
18
+ <key>BRAINLAYER_ENV_FILE</key>
19
+ <string>__BRAINLAYER_ENV_FILE__</string>
20
+ <key>BRAINLAYER_LAUNCHD_SERVICE</key>
21
+ <string>watch</string>
22
+ <key>PATH</key>
23
+ <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
24
+ </dict>
25
+ <key>RunAtLoad</key>
26
+ <true/>
27
+ <key>StartInterval</key>
28
+ <integer>60</integer>
29
+ <key>ProcessType</key>
30
+ <string>Background</string>
31
+ <key>Nice</key>
32
+ <integer>10</integer>
33
+ <key>LowPriorityIO</key>
34
+ <true/>
35
+ <key>ExitTimeOut</key>
36
+ <integer>30</integer>
37
+ <key>SoftResourceLimits</key>
38
+ <dict>
39
+ <key>NumberOfFiles</key>
40
+ <integer>4096</integer>
41
+ </dict>
42
+ <key>StandardOutPath</key>
43
+ <string>__HOME__/Library/Logs/brainlayer/throughput-watchdog.out.log</string>
44
+ <key>StandardErrorPath</key>
45
+ <string>__HOME__/Library/Logs/brainlayer/throughput-watchdog.err.log</string>
46
+ </dict>
47
+ </plist>
@@ -0,0 +1,45 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>Label</key>
6
+ <string>com.brainlayer.tier0-watchdog</string>
7
+ <key>ProgramArguments</key>
8
+ <array>
9
+ <string>/bin/sh</string>
10
+ <string>__TIER0_WATCHDOG_SCRIPT__</string>
11
+ </array>
12
+ <key>EnvironmentVariables</key>
13
+ <dict>
14
+ <key>HOME</key>
15
+ <string>__HOME__</string>
16
+ <key>PATH</key>
17
+ <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
18
+ <key>TIER0_ALERT_STATE_PATH</key>
19
+ <string>__HOME__/.local/share/brainlayer/tier0-watchdog-alert-state</string>
20
+ <key>TIER0_REPEAT_ALERT_SECONDS</key>
21
+ <string>1800</string>
22
+ <key>TIER0_STALE_SECONDS</key>
23
+ <string>900</string>
24
+ </dict>
25
+ <key>StandardOutPath</key>
26
+ <string>__HOME__/Library/Logs/brainlayer/tier0-watchdog.out.log</string>
27
+ <key>StandardErrorPath</key>
28
+ <string>__HOME__/Library/Logs/brainlayer/tier0-watchdog.err.log</string>
29
+ <key>StartInterval</key>
30
+ <integer>300</integer>
31
+ <key>RunAtLoad</key>
32
+ <true/>
33
+ <key>Nice</key>
34
+ <integer>10</integer>
35
+ <key>ProcessType</key>
36
+ <string>Background</string>
37
+ <key>ExitTimeOut</key>
38
+ <integer>15</integer>
39
+ <key>SoftResourceLimits</key>
40
+ <dict>
41
+ <key>NumberOfFiles</key>
42
+ <integer>4096</integer>
43
+ </dict>
44
+ </dict>
45
+ </plist>
@@ -16,6 +16,8 @@
16
16
  # ./scripts/launchd/install.sh jsonl-backup # Install daily JSONL backup only
17
17
  # ./scripts/launchd/install.sh maintenance # Install recurring maintenance jobs
18
18
  # ./scripts/launchd/install.sh health-check # Install stability health check only
19
+ # ./scripts/launchd/install.sh tier0-watchdog # Install /bin/sh meta-watchdog only
20
+ # ./scripts/launchd/install.sh throughput-watchdog # Install watcher throughput watchdog only
19
21
  # ./scripts/launchd/install.sh hotlane # Install BrainBar hotlane embed/enrich daemon only
20
22
  # ./scripts/launchd/install.sh p0-counter # Install daily P0 longitudinal counter only
21
23
  # ./scripts/launchd/install.sh remove # Unload and remove all
@@ -62,6 +64,8 @@ PYTHON_BIN="$(stable_brainlayer_path "${PYTHON_BIN:-$(command -v python3)}")"
62
64
  BRAINLAYER_PYTHON="$(stable_brainlayer_path "${BRAINLAYER_PYTHON:-$PYTHON_BIN}")"
63
65
  BRAINLAYER_ENV_FILE="${BRAINLAYER_ENV_FILE:-$HOME/.config/brainlayer/brainlayer.env}"
64
66
  BRAINLAYER_ENV_RUN="$BRAINLAYER_LIB_DIR/brainlayer-env-run.sh"
67
+ TIER0_WATCHDOG_DST="$BRAINLAYER_LIB_DIR/tier0-watchdog.sh"
68
+ THROUGHPUT_WATCHDOG_DST="$BRAINLAYER_LIB_DIR/throughput-watchdog.py"
65
69
 
66
70
  if [ -z "$PYTHON_BIN" ]; then
67
71
  echo "ERROR: python3 not found in PATH"
@@ -266,6 +270,104 @@ install_jsonl_backup_script() {
266
270
  echo "Installed: $dst"
267
271
  }
268
272
 
273
+ install_tier0_watchdog() {
274
+ local script_src="$SCRIPT_DIR/tier0-watchdog.sh"
275
+ local plist_src="$SCRIPT_DIR/com.brainlayer.tier0-watchdog.plist"
276
+ local plist_dst="$LAUNCH_DIR/com.brainlayer.tier0-watchdog.plist"
277
+ local escaped_home
278
+ local escaped_tier0_watchdog_dst
279
+
280
+ if [ ! -f "$script_src" ]; then
281
+ script_src="$SCRIPT_DIR/../tier0-watchdog.sh"
282
+ fi
283
+ if [ ! -f "$script_src" ]; then
284
+ echo "ERROR: tier0-watchdog.sh not found beside or above $SCRIPT_DIR"
285
+ return 1
286
+ fi
287
+ if [ ! -f "$plist_src" ]; then
288
+ echo "ERROR: $plist_src not found"
289
+ return 1
290
+ fi
291
+
292
+ escaped_home="$(
293
+ printf '%s' "$HOME" \
294
+ | sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/[\\&|]/\\&/g'
295
+ )" || return 1
296
+ escaped_tier0_watchdog_dst="$(
297
+ printf '%s' "$TIER0_WATCHDOG_DST" \
298
+ | sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/[\\&|]/\\&/g'
299
+ )" || return 1
300
+
301
+ install -m 0755 "$script_src" "$TIER0_WATCHDOG_DST" || return 1
302
+ sed \
303
+ -e "s|__HOME__|$escaped_home|g" \
304
+ -e "s|__TIER0_WATCHDOG_SCRIPT__|$escaped_tier0_watchdog_dst|g" \
305
+ "$plist_src" > "$plist_dst" || return 1
306
+
307
+ echo "Installed: $TIER0_WATCHDOG_DST"
308
+ echo "Installed: $plist_dst"
309
+ echo " Logs: $LOG_DIR/ and $BRAINLAYER_LOG_DIR/"
310
+ load_plist tier0-watchdog
311
+ }
312
+
313
+ install_throughput_watchdog() {
314
+ local script_src="$SCRIPT_DIR/throughput-watchdog.py"
315
+ local plist_src="$SCRIPT_DIR/com.brainlayer.throughput-watchdog.plist"
316
+ local plist_dst="$LAUNCH_DIR/com.brainlayer.throughput-watchdog.plist"
317
+ local escaped_env_file
318
+ local escaped_env_run
319
+ local escaped_home
320
+ local escaped_python_bin
321
+ local escaped_watchdog_dst
322
+
323
+ if [ ! -f "$script_src" ]; then
324
+ echo "ERROR: throughput-watchdog.py not found in $SCRIPT_DIR"
325
+ return 1
326
+ fi
327
+ if [ ! -f "$plist_src" ]; then
328
+ echo "ERROR: $plist_src not found"
329
+ return 1
330
+ fi
331
+
332
+ install_env_runner || return 1
333
+ verify_config_file || return 1
334
+
335
+ escaped_home="$(
336
+ printf '%s' "$HOME" \
337
+ | sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/[\\&|]/\\&/g'
338
+ )" || return 1
339
+ escaped_env_file="$(
340
+ printf '%s' "$BRAINLAYER_ENV_FILE" \
341
+ | sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/[\\&|]/\\&/g'
342
+ )" || return 1
343
+ escaped_env_run="$(
344
+ printf '%s' "$BRAINLAYER_ENV_RUN" \
345
+ | sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/[\\&|]/\\&/g'
346
+ )" || return 1
347
+ escaped_watchdog_dst="$(
348
+ printf '%s' "$THROUGHPUT_WATCHDOG_DST" \
349
+ | sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/[\\&|]/\\&/g'
350
+ )" || return 1
351
+ escaped_python_bin="$(
352
+ printf '%s' "$PYTHON_BIN" \
353
+ | sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g' -e 's/[\\&|]/\\&/g'
354
+ )" || return 1
355
+
356
+ install -m 0755 "$script_src" "$THROUGHPUT_WATCHDOG_DST" || return 1
357
+ sed \
358
+ -e "s|__HOME__|$escaped_home|g" \
359
+ -e "s|__BRAINLAYER_ENV_FILE__|$escaped_env_file|g" \
360
+ -e "s|__BRAINLAYER_ENV_RUN__|$escaped_env_run|g" \
361
+ -e "s|__PYTHON_BIN__|$escaped_python_bin|g" \
362
+ -e "s|__THROUGHPUT_WATCHDOG_SCRIPT__|$escaped_watchdog_dst|g" \
363
+ "$plist_src" > "$plist_dst" || return 1
364
+
365
+ echo "Installed: $THROUGHPUT_WATCHDOG_DST"
366
+ echo "Installed: $plist_dst"
367
+ echo " Logs: $LOG_DIR/ and $BRAINLAYER_LOG_DIR/"
368
+ load_plist throughput-watchdog
369
+ }
370
+
269
371
  remove_plist() {
270
372
  local name="$1"
271
373
  local dst="$LAUNCH_DIR/com.brainlayer.${name}.plist"
@@ -327,6 +429,12 @@ case "${1:-all}" in
327
429
  health-check)
328
430
  install_plist health-check
329
431
  ;;
432
+ tier0|tier0-watchdog)
433
+ install_tier0_watchdog
434
+ ;;
435
+ throughput-watchdog)
436
+ install_throughput_watchdog
437
+ ;;
330
438
  hotlane|hotlane-brainbar)
331
439
  verify_gemini_env_file
332
440
  install_plist hotlane-brainbar
@@ -364,6 +472,12 @@ case "${1:-all}" in
364
472
  if ! install_many maintenance-nightly maintenance-weekly health-check p0-counter; then
365
473
  failures=1
366
474
  fi
475
+ if ! install_tier0_watchdog; then
476
+ failures=1
477
+ fi
478
+ if ! install_throughput_watchdog; then
479
+ failures=1
480
+ fi
367
481
  # Remove old enrich plist only after the replacement enrichment service loads.
368
482
  if [ "$enrichment_ok" -eq 1 ]; then
369
483
  remove_plist enrich 2>/dev/null || true
@@ -386,13 +500,17 @@ case "${1:-all}" in
386
500
  remove_plist maintenance-nightly 2>/dev/null || true
387
501
  remove_plist maintenance-weekly 2>/dev/null || true
388
502
  remove_plist health-check 2>/dev/null || true
503
+ remove_plist tier0-watchdog 2>/dev/null || true
504
+ remove_plist throughput-watchdog 2>/dev/null || true
389
505
  remove_plist hotlane-brainbar 2>/dev/null || true
390
506
  remove_plist p0-counter 2>/dev/null || true
391
507
  rm -f "$BRAINLAYER_LIB_DIR/backup-daily.sh"
392
508
  rm -f "$BRAINLAYER_LIB_DIR/jsonl-backup.sh"
509
+ rm -f "$TIER0_WATCHDOG_DST"
510
+ rm -f "$THROUGHPUT_WATCHDOG_DST"
393
511
  ;;
394
512
  *)
395
- echo "Usage: $0 [index|watch|enrich|enrichment|decay|drain|hotlane|repair-fts|load [name]|unload [name]|checkpoint|backup|jsonl-backup|maintenance|maintenance-nightly|maintenance-weekly|health-check|p0-counter|all|remove]"
513
+ echo "Usage: $0 [index|watch|enrich|enrichment|decay|drain|hotlane|repair-fts|load [name]|unload [name]|checkpoint|backup|jsonl-backup|maintenance|maintenance-nightly|maintenance-weekly|health-check|tier0-watchdog|throughput-watchdog|p0-counter|all|remove]"
396
514
  exit 1
397
515
  ;;
398
516
  esac