brainlayer 1.3.0__tar.gz → 1.4.1__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 (872) hide show
  1. {brainlayer-1.3.0 → brainlayer-1.4.1}/.gitignore +3 -0
  2. {brainlayer-1.3.0 → brainlayer-1.4.1}/PKG-INFO +1 -1
  3. {brainlayer-1.3.0 → brainlayer-1.4.1}/pyproject.toml +11 -1
  4. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/brainlayer-env-run.sh +64 -5
  5. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.drain.plist +3 -7
  6. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.enrichment.plist +3 -1
  7. brainlayer-1.4.1/scripts/launchd/com.brainlayer.hotlane-brainbar.plist +74 -0
  8. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/install.sh +132 -39
  9. {brainlayer-1.3.0 → brainlayer-1.4.1}/server.json +2 -2
  10. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/__init__.py +1 -1
  11. brainlayer-1.4.1/src/brainlayer/alarm.py +115 -0
  12. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/cli/__init__.py +947 -90
  13. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/cloud_backfill.py +262 -47
  14. brainlayer-1.4.1/src/brainlayer/data/agents_registry.yaml +146 -0
  15. brainlayer-1.4.1/src/brainlayer/data/sandbox_seeds/skill-eval-baseline.json +29 -0
  16. brainlayer-1.4.1/src/brainlayer/deploy_drift.py +291 -0
  17. brainlayer-1.4.1/src/brainlayer/doctor.py +534 -0
  18. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/drain.py +219 -33
  19. brainlayer-1.4.1/src/brainlayer/drain_liveness.py +169 -0
  20. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/enrichment_controller.py +244 -15
  21. brainlayer-1.4.1/src/brainlayer/fallback_replay.py +581 -0
  22. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/health_check.py +45 -26
  23. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/index_new.py +1 -1
  24. brainlayer-1.4.1/src/brainlayer/launchd_primitive.py +238 -0
  25. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/maintenance.py +29 -3
  26. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/mcp/__init__.py +4 -1
  27. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/mcp/_format.py +3 -3
  28. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/mcp/search_handler.py +8 -9
  29. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/mcp/store_handler.py +46 -8
  30. brainlayer-1.4.1/src/brainlayer/mcp_stdio_bridge.py +486 -0
  31. brainlayer-1.4.1/src/brainlayer/memory_types.py +13 -0
  32. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/classify.py +2 -28
  33. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/reembed_backfill.py +1 -1
  34. brainlayer-1.4.1/src/brainlayer/sandbox_db.py +363 -0
  35. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/store.py +2 -2
  36. brainlayer-1.4.1/src/brainlayer/system_prompt_guard.py +30 -0
  37. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/vector_store.py +19 -3
  38. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/watcher.py +95 -16
  39. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/watcher_bridge.py +30 -1
  40. brainlayer-1.3.0/.claude-plugin/marketplace.json +0 -13
  41. brainlayer-1.3.0/.claude.local.md.example +0 -21
  42. brainlayer-1.3.0/.gitattributes +0 -2
  43. brainlayer-1.3.0/.githooks/pre-push +0 -38
  44. brainlayer-1.3.0/.github/workflows/ci.yml +0 -113
  45. brainlayer-1.3.0/.github/workflows/docs.yml +0 -32
  46. brainlayer-1.3.0/.github/workflows/publish.yml +0 -20
  47. brainlayer-1.3.0/.mcp.json.example +0 -19
  48. brainlayer-1.3.0/AGENTS.md +0 -43
  49. brainlayer-1.3.0/BUGBOT_ACTION_ITEMS.md +0 -377
  50. brainlayer-1.3.0/BUGBOT_CRITICAL_ISSUES.md +0 -226
  51. brainlayer-1.3.0/BUGBOT_FINAL_STATUS.md +0 -155
  52. brainlayer-1.3.0/BUGBOT_PR_COMMENT_HELPER_FAST_PROFILE.md +0 -161
  53. brainlayer-1.3.0/BUGBOT_REREVIEW_P2_KG_CLEANUP.md +0 -478
  54. brainlayer-1.3.0/BUGBOT_REVIEW.md +0 -477
  55. brainlayer-1.3.0/BUGBOT_REVIEW_352.md +0 -256
  56. brainlayer-1.3.0/BUGBOT_REVIEW_BRAINBAR_HELPER_FAST_PROFILE.md +0 -596
  57. brainlayer-1.3.0/BUGBOT_REVIEW_DEFLAKE_AGENT_PROFILES.md +0 -194
  58. brainlayer-1.3.0/BUGBOT_REVIEW_FINDINGS.md +0 -191
  59. brainlayer-1.3.0/BUGBOT_REVIEW_FIX_PYTHON_CI.md +0 -279
  60. brainlayer-1.3.0/BUGBOT_REVIEW_FTS_RECALL.md +0 -273
  61. brainlayer-1.3.0/BUGBOT_REVIEW_HOOKS_FAIL_LOUD.md +0 -240
  62. brainlayer-1.3.0/BUGBOT_REVIEW_P2_KG_CLEANUP.md +0 -274
  63. brainlayer-1.3.0/BUGBOT_REVIEW_P6B.md +0 -243
  64. brainlayer-1.3.0/BUGBOT_REVIEW_QUICK_CAPTURE.md +0 -271
  65. brainlayer-1.3.0/BUGBOT_REVIEW_QUICK_CAPTURE_UX_FIX.md +0 -442
  66. brainlayer-1.3.0/BUGBOT_REVIEW_RESTORE_CAPTURE_ACTIONS.md +0 -797
  67. brainlayer-1.3.0/BUGBOT_REVIEW_SUMMARY.md +0 -146
  68. brainlayer-1.3.0/BUGBOT_SUMMARY.md +0 -76
  69. brainlayer-1.3.0/BUGBOT_SUMMARY_HELPER_FAST_PROFILE.md +0 -233
  70. brainlayer-1.3.0/CHANGELOG.md +0 -57
  71. brainlayer-1.3.0/CLAUDE.md +0 -142
  72. brainlayer-1.3.0/CODEOWNERS +0 -1
  73. brainlayer-1.3.0/CONTRIBUTING.md +0 -116
  74. brainlayer-1.3.0/SLICE-B-BRIEF.md +0 -29
  75. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-after-productionprompt-hybrid-taxonomy-combined.jsonl +0 -50
  76. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-after-productionprompt-hybrid-taxonomy-retry1.jsonl +0 -5
  77. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-after-productionprompt-hybrid-taxonomy.jsonl +0 -50
  78. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-before-oldprompt-validation-off.jsonl +0 -50
  79. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-combined-summary.json +0 -118
  80. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-combined.jsonl +0 -50
  81. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-retry1-summary.json +0 -109
  82. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-retry1.jsonl +0 -1
  83. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-summary.json +0 -109
  84. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash.jsonl +0 -50
  85. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/recommended-36k-batch-backfill-plan.md +0 -70
  86. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/selection-after-retry1.jsonl +0 -5
  87. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/selection-cloudsafe-pilot50.jsonl +0 -50
  88. brainlayer-1.3.0/artifacts/flex-hybrid-taxonomy-2026-06-16/selection-judge-retry1.jsonl +0 -1
  89. brainlayer-1.3.0/brain-bar/.gitignore +0 -4
  90. brainlayer-1.3.0/brain-bar/Package.resolved +0 -15
  91. brainlayer-1.3.0/brain-bar/Package.swift +0 -63
  92. brainlayer-1.3.0/brain-bar/Scripts/brainbar_stdio_adapter.py +0 -94
  93. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarApp.swift +0 -299
  94. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarAppSupport.swift +0 -206
  95. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarCommandBar.swift +0 -491
  96. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarDashboardPanelController.swift +0 -158
  97. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarInstanceLock.swift +0 -66
  98. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarProcessControl.swift +0 -33
  99. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarRuntime.swift +0 -64
  100. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarServer.swift +0 -1038
  101. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarSettingsActions.swift +0 -72
  102. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarSettingsView.swift +0 -399
  103. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarStatusPopoverController.swift +0 -140
  104. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarURLAction.swift +0 -20
  105. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarWindowRootView.swift +0 -2789
  106. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBarWindowState.swift +0 -448
  107. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBusClient.swift +0 -170
  108. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainBusEvent.swift +0 -203
  109. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainDatabase.swift +0 -5644
  110. brainlayer-1.3.0/brain-bar/Sources/BrainBar/BrainLayerConfig.swift +0 -480
  111. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Dashboard/AgentActivityMonitor.swift +0 -297
  112. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Dashboard/BrainBarDashboardFixture.swift +0 -99
  113. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Dashboard/BrainBarLivePulse.swift +0 -27
  114. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Dashboard/DaemonHealthMonitor.swift +0 -82
  115. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Dashboard/DashboardMetricFormatter.swift +0 -126
  116. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Dashboard/PipelineState.swift +0 -684
  117. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Dashboard/SparklineRenderer.swift +0 -1259
  118. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Dashboard/StatsCollector.swift +0 -602
  119. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Dashboard/StatusPopoverView.swift +0 -620
  120. brainlayer-1.3.0/brain-bar/Sources/BrainBar/DegradationState.swift +0 -28
  121. brainlayer-1.3.0/brain-bar/Sources/BrainBar/DesignTokens.swift +0 -184
  122. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Formatters.swift +0 -411
  123. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Formatting/TextFormatter.swift +0 -288
  124. brainlayer-1.3.0/brain-bar/Sources/BrainBar/HotkeyManager.swift +0 -350
  125. brainlayer-1.3.0/brain-bar/Sources/BrainBar/HotkeyRouteStatus.swift +0 -25
  126. brainlayer-1.3.0/brain-bar/Sources/BrainBar/HybridSearchHelperClient.swift +0 -597
  127. brainlayer-1.3.0/brain-bar/Sources/BrainBar/InjectionContinuation.swift +0 -50
  128. brainlayer-1.3.0/brain-bar/Sources/BrainBar/InjectionEvent.swift +0 -370
  129. brainlayer-1.3.0/brain-bar/Sources/BrainBar/InjectionFeedView.swift +0 -956
  130. brainlayer-1.3.0/brain-bar/Sources/BrainBar/InjectionPresentation.swift +0 -467
  131. brainlayer-1.3.0/brain-bar/Sources/BrainBar/InjectionStore.swift +0 -308
  132. brainlayer-1.3.0/brain-bar/Sources/BrainBar/InjectionSummaryView.swift +0 -37
  133. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/EntityCache.swift +0 -105
  134. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGAtlasLayout.swift +0 -148
  135. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGAtlasMode.swift +0 -85
  136. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGAtlasPresentation.swift +0 -166
  137. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGCanvasView.swift +0 -494
  138. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGEdge.swift +0 -9
  139. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGEdgeView.swift +0 -37
  140. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGNode.swift +0 -55
  141. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGNodeView.swift +0 -51
  142. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGRelationPresentation.swift +0 -40
  143. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGSidebarView.swift +0 -556
  144. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGSimulationController.swift +0 -67
  145. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGViewModel.swift +0 -639
  146. brainlayer-1.3.0/brain-bar/Sources/BrainBar/KnowledgeGraph/ScrollWheelZoomView.swift +0 -35
  147. brainlayer-1.3.0/brain-bar/Sources/BrainBar/MCPFraming.swift +0 -165
  148. brainlayer-1.3.0/brain-bar/Sources/BrainBar/MCPRouter.swift +0 -1410
  149. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Models/DigestResult.swift +0 -60
  150. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Models/EntityCard.swift +0 -150
  151. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Models/KGSearchResult.swift +0 -20
  152. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Models/KGTemporalDate.swift +0 -50
  153. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Models/SearchResult.swift +0 -161
  154. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Models/StatsResult.swift +0 -19
  155. brainlayer-1.3.0/brain-bar/Sources/BrainBar/QuickCaptureController.swift +0 -134
  156. brainlayer-1.3.0/brain-bar/Sources/BrainBar/QuickCapturePanel.swift +0 -1178
  157. brainlayer-1.3.0/brain-bar/Sources/BrainBar/QuickCapturePanelState.swift +0 -37
  158. brainlayer-1.3.0/brain-bar/Sources/BrainBar/SearchFilters.swift +0 -36
  159. brainlayer-1.3.0/brain-bar/Sources/BrainBar/SearchPanelController.swift +0 -251
  160. brainlayer-1.3.0/brain-bar/Sources/BrainBar/SearchProfileLogger.swift +0 -65
  161. brainlayer-1.3.0/brain-bar/Sources/BrainBar/SearchQueryActor.swift +0 -57
  162. brainlayer-1.3.0/brain-bar/Sources/BrainBar/SearchViewModel.swift +0 -83
  163. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Views/Components/ChunkConversationSheet.swift +0 -150
  164. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Views/Components/SearchResultCard.swift +0 -98
  165. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Views/Components/SearchResultsList.swift +0 -56
  166. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Views/Components/WrappingPillLayout.swift +0 -96
  167. brainlayer-1.3.0/brain-bar/Sources/BrainBar/Views/ExpirationPill.swift +0 -31
  168. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarCommandBar.swift +0 -1
  169. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarDaemonMain.swift +0 -28
  170. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarDashboardPanelController.swift +0 -1
  171. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarInstanceLock.swift +0 -1
  172. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarProcessControl.swift +0 -33
  173. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarRuntime.swift +0 -1
  174. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarServer.swift +0 -1
  175. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarSettingsActions.swift +0 -1
  176. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarStatusPopoverController.swift +0 -1
  177. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarURLAction.swift +0 -1
  178. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarWindowRootView.swift +0 -1
  179. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBarWindowState.swift +0 -1
  180. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBusClient.swift +0 -1
  181. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainBusEvent.swift +0 -1
  182. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/BrainDatabase.swift +0 -1
  183. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Dashboard/AgentActivityMonitor.swift +0 -1
  184. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Dashboard/BrainBarLivePulse.swift +0 -1
  185. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Dashboard/DaemonHealthMonitor.swift +0 -1
  186. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Dashboard/DashboardMetricFormatter.swift +0 -1
  187. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Dashboard/PipelineState.swift +0 -1
  188. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Dashboard/SparklineRenderer.swift +0 -1
  189. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Dashboard/StatsCollector.swift +0 -1
  190. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Dashboard/StatusPopoverView.swift +0 -1
  191. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/DegradationState.swift +0 -1
  192. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/DesignTokens.swift +0 -1
  193. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Formatters.swift +0 -1
  194. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Formatting/TextFormatter.swift +0 -1
  195. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/HotkeyManager.swift +0 -1
  196. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/HotkeyRouteStatus.swift +0 -1
  197. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/HybridSearchHelperClient.swift +0 -1
  198. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/InjectionContinuation.swift +0 -1
  199. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/InjectionEvent.swift +0 -1
  200. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/InjectionFeedView.swift +0 -1
  201. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/InjectionPresentation.swift +0 -1
  202. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/InjectionStore.swift +0 -1
  203. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/InjectionSummaryView.swift +0 -1
  204. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/EntityCache.swift +0 -1
  205. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGAtlasLayout.swift +0 -1
  206. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGAtlasMode.swift +0 -1
  207. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGAtlasPresentation.swift +0 -1
  208. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGCanvasView.swift +0 -1
  209. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGEdge.swift +0 -1
  210. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGEdgeView.swift +0 -1
  211. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGNode.swift +0 -1
  212. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGNodeView.swift +0 -1
  213. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGRelationPresentation.swift +0 -1
  214. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGSidebarView.swift +0 -1
  215. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGSimulationController.swift +0 -1
  216. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGViewModel.swift +0 -1
  217. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/ScrollWheelZoomView.swift +0 -1
  218. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/MCPFraming.swift +0 -1
  219. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/MCPRouter.swift +0 -1
  220. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Models/DigestResult.swift +0 -1
  221. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Models/EntityCard.swift +0 -1
  222. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Models/KGSearchResult.swift +0 -1
  223. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Models/KGTemporalDate.swift +0 -1
  224. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Models/SearchResult.swift +0 -1
  225. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Models/StatsResult.swift +0 -1
  226. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/QuickCaptureController.swift +0 -1
  227. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/QuickCapturePanel.swift +0 -1
  228. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/QuickCapturePanelState.swift +0 -1
  229. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/SearchFilters.swift +0 -1
  230. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/SearchPanelController.swift +0 -1
  231. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/SearchProfileLogger.swift +0 -65
  232. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/SearchQueryActor.swift +0 -1
  233. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/SearchViewModel.swift +0 -1
  234. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Views/Components/ChunkConversationSheet.swift +0 -1
  235. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Views/Components/SearchResultCard.swift +0 -1
  236. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Views/Components/SearchResultsList.swift +0 -1
  237. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Views/Components/WrappingPillLayout.swift +0 -1
  238. brainlayer-1.3.0/brain-bar/Sources/BrainBarDaemon/Views/ExpirationPill.swift +0 -1
  239. brainlayer-1.3.0/brain-bar/Sources/BrainBarLifecycle/BrainBarLifecycleWatchdog.swift +0 -256
  240. brainlayer-1.3.0/brain-bar/Sources/BrainBarLifecycle/BrainBarRestartHandoff.swift +0 -50
  241. brainlayer-1.3.0/brain-bar/Tests/BrainBarDaemonTests/BrainBarDaemonLaunchModeTests.swift +0 -118
  242. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/AgentActivityMonitorTests.swift +0 -197
  243. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarDashboardPanelControllerTests.swift +0 -106
  244. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarDashboardSnapshotTests.swift +0 -169
  245. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarReliabilityTests.swift +0 -377
  246. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarRuntimeWiringTests.swift +0 -86
  247. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarSettingsSnapshotTests.swift +0 -91
  248. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarSettingsViewModelTests.swift +0 -49
  249. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarStartupRecoveryTests.swift +0 -192
  250. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarStatusPopoverControllerTests.swift +0 -77
  251. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarUXLogicTests.swift +0 -425
  252. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarWindowRootViewVectorDetailLayoutTests.swift +0 -46
  253. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBarWindowStateTests.swift +0 -389
  254. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainBusEventHubTests.swift +0 -93
  255. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainDatabaseWindowedBucketsTests.swift +0 -184
  256. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/BrainLayerConfigTests.swift +0 -131
  257. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/ChunkConversationTests.swift +0 -100
  258. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/DashboardRedesignSnapshotTests.swift +0 -147
  259. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/DashboardTests.swift +0 -2092
  260. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/DatabaseTests.swift +0 -2039
  261. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/DegradationStateTests.swift +0 -336
  262. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/DesignTokensTests.swift +0 -75
  263. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/FormattersTests.swift +0 -374
  264. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/HybridSearchHelperClientTests.swift +0 -371
  265. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/InjectionContinuationTests.swift +0 -92
  266. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/InjectionConversationSelectionTests.swift +0 -26
  267. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/InjectionEventTests.swift +0 -322
  268. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/InjectionPresentationTests.swift +0 -574
  269. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/InjectionStoreTests.swift +0 -325
  270. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/KGAtlasLayoutTests.swift +0 -82
  271. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/KGAtlasPresentationTests.swift +0 -265
  272. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/KGBadgeConsistencyTests.swift +0 -42
  273. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/KGExpirationRenderingTests.swift +0 -144
  274. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/KGSidebarSynopsisTests.swift +0 -50
  275. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/KnowledgeGraphTests.swift +0 -1843
  276. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/MCPFramingTests.swift +0 -145
  277. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/MCPRouterTests.swift +0 -2533
  278. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/PopoverTabTests.swift +0 -214
  279. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/QuickCaptureConversationTests.swift +0 -60
  280. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/QuickCapturePanelTests.swift +0 -833
  281. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/QuickCaptureTests.swift +0 -415
  282. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/RENDER_VERIFICATION.md +0 -78
  283. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/RecordingHybridSearchClient.swift +0 -68
  284. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/SearchFiltersTests.swift +0 -42
  285. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/SearchPanelControllerTests.swift +0 -38
  286. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/SearchQueryActorTests.swift +0 -121
  287. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/SearchResultPresentationTests.swift +0 -38
  288. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/SearchViewModelTests.swift +0 -130
  289. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/SocketIntegrationTests.swift +0 -1110
  290. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/SparklineRendererIconTests.swift +0 -44
  291. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/SparklineSnapshotTests.swift +0 -170
  292. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/StabilityFixTests.swift +0 -157
  293. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/StatsCollectorTests.swift +0 -102
  294. brainlayer-1.3.0/brain-bar/Tests/BrainBarTests/TextFormatterParityTests.swift +0 -309
  295. brainlayer-1.3.0/brain-bar/build-app.sh +0 -679
  296. brainlayer-1.3.0/brain-bar/bundle/Info.plist +0 -37
  297. brainlayer-1.3.0/brain-bar/bundle/com.brainlayer.brainbar-daemon.plist +0 -24
  298. brainlayer-1.3.0/brain-bar/bundle/com.brainlayer.brainbar.plist +0 -38
  299. brainlayer-1.3.0/brain-bar/karabiner/brainbar-f4.json +0 -73
  300. brainlayer-1.3.0/bugbot-review-notes.md +0 -159
  301. brainlayer-1.3.0/bugbot_pr_comment.md +0 -76
  302. brainlayer-1.3.0/contracts/engine-ui-contract.md +0 -75
  303. brainlayer-1.3.0/contracts/entity-types.yaml +0 -162
  304. brainlayer-1.3.0/docs/abcde-experiment-isolation.md +0 -28
  305. brainlayer-1.3.0/docs/adr/0000-template.md +0 -29
  306. brainlayer-1.3.0/docs/adr/0001-sqlite-vec-over-dedicated-vector-db.md +0 -59
  307. brainlayer-1.3.0/docs/adr/0002-reciprocal-rank-fusion-for-hybrid-search.md +0 -68
  308. brainlayer-1.3.0/docs/arbitration.md +0 -19
  309. brainlayer-1.3.0/docs/architecture/MODULE-MAP.md +0 -47
  310. brainlayer-1.3.0/docs/architecture.md +0 -140
  311. brainlayer-1.3.0/docs/archive/chat-based-analysis-design.md +0 -149
  312. brainlayer-1.3.0/docs/archive/chat-tags-example.yaml +0 -14
  313. brainlayer-1.3.0/docs/archive/communication-analysis.md +0 -413
  314. brainlayer-1.3.0/docs/archive/hierarchical-clustering-deep-research.md +0 -508
  315. brainlayer-1.3.0/docs/archive/hierarchical-clustering-research.txt +0 -181
  316. brainlayer-1.3.0/docs/archive/research-chat-based-analysis.md +0 -146
  317. brainlayer-1.3.0/docs/archive/research-prompt-embeddings.md +0 -44
  318. brainlayer-1.3.0/docs/assets/logo.svg +0 -75
  319. brainlayer-1.3.0/docs/backup-strategy.md +0 -132
  320. brainlayer-1.3.0/docs/configuration.md +0 -166
  321. brainlayer-1.3.0/docs/contributing.md +0 -10
  322. brainlayer-1.3.0/docs/data-locations.md +0 -126
  323. brainlayer-1.3.0/docs/embedding-setup.md +0 -22
  324. brainlayer-1.3.0/docs/enrichment-provider-agnostic-design.md +0 -52
  325. brainlayer-1.3.0/docs/enrichment-runbook.md +0 -177
  326. brainlayer-1.3.0/docs/enrichment.md +0 -102
  327. brainlayer-1.3.0/docs/index.md +0 -65
  328. brainlayer-1.3.0/docs/kg-spec.md +0 -58
  329. brainlayer-1.3.0/docs/local-models-guide.md +0 -160
  330. brainlayer-1.3.0/docs/mcp-config.md +0 -40
  331. brainlayer-1.3.0/docs/mcp-tools.md +0 -165
  332. brainlayer-1.3.0/docs/operations/brainlayer-health-check.md +0 -38
  333. brainlayer-1.3.0/docs/orqi-batch-contract.md +0 -73
  334. brainlayer-1.3.0/docs/plans/2026-02-25-phase-3-brain-digest.md +0 -51
  335. brainlayer-1.3.0/docs/plans/2026-02-25-phase-6-sentiment.md +0 -414
  336. brainlayer-1.3.0/docs/plans/2026-03-30-enrichment-launchagent.md +0 -85
  337. brainlayer-1.3.0/docs/plans/2026-03-31-phase2-search-window-design.md +0 -128
  338. brainlayer-1.3.0/docs/plans/2026-03-31-phase2-search-window.md +0 -221
  339. brainlayer-1.3.0/docs/plans/2026-04-05-p1a-fts5-health.md +0 -129
  340. brainlayer-1.3.0/docs/plans/2026-04-05-p1b-eval-framework.md +0 -135
  341. brainlayer-1.3.0/docs/plans/2026-04-18-brainbar-dashboard-flow-collab.md +0 -38
  342. brainlayer-1.3.0/docs/plans/2026-04-18-brainbar-dashboard-flow.md +0 -206
  343. brainlayer-1.3.0/docs/plans/2026-04-18-brainbar-injections-graph-hybrid.md +0 -132
  344. brainlayer-1.3.0/docs/plans/2026-06-01-db-shrink-fts5-dedup.md +0 -44
  345. brainlayer-1.3.0/docs/plans/2026-06-02-phoenix-eval-integration.md +0 -172
  346. brainlayer-1.3.0/docs/plans/2026-06-14-reembed-unvectored-backlog.md +0 -61
  347. brainlayer-1.3.0/docs/quickstart.md +0 -129
  348. brainlayer-1.3.0/docs/research/launch-readiness-audit.md +0 -232
  349. brainlayer-1.3.0/docs/research/session-enrichment/README.md +0 -43
  350. brainlayer-1.3.0/docs/research/session-enrichment/auto-extracting-learnings.md +0 -98
  351. brainlayer-1.3.0/docs/research/session-enrichment/brainstore-write-tools.md +0 -33
  352. brainlayer-1.3.0/docs/research/session-enrichment/cli-ux-patterns.md +0 -261
  353. brainlayer-1.3.0/docs/research/session-enrichment/conversation-reconstruction.md +0 -80
  354. brainlayer-1.3.0/docs/research/session-enrichment/prompts.md +0 -197
  355. brainlayer-1.3.0/docs/research/session-enrichment/session-enrichment-architecture.md +0 -277
  356. brainlayer-1.3.0/docs/roadmap.md +0 -32
  357. brainlayer-1.3.0/docs/showcase-claude-collab-discovery.md +0 -102
  358. brainlayer-1.3.0/docs/stylesheets/extra.css +0 -299
  359. brainlayer-1.3.0/extensions/brainlayer-plugin/.claude-plugin/plugin.json +0 -9
  360. brainlayer-1.3.0/extensions/brainlayer-plugin/.gitignore +0 -1
  361. brainlayer-1.3.0/extensions/brainlayer-plugin/.mcp.json +0 -11
  362. brainlayer-1.3.0/extensions/brainlayer-plugin/hooks/hooks.json +0 -53
  363. brainlayer-1.3.0/extensions/brainlayer-plugin/hooks/session-start.sh +0 -4
  364. brainlayer-1.3.0/extensions/brainlayer-plugin/hooks/session-stop.sh +0 -4
  365. brainlayer-1.3.0/extensions/brainlayer-plugin/hooks/tool-error.sh +0 -4
  366. brainlayer-1.3.0/extensions/brainlayer-plugin/hooks/tool-observe.sh +0 -4
  367. brainlayer-1.3.0/extensions/brainlayer-plugin/scripts/brainbar-hook.py +0 -264
  368. brainlayer-1.3.0/extensions/brainlayer-plugin/scripts/queue-flusher.py +0 -97
  369. brainlayer-1.3.0/extensions/brainlayer-plugin/skills/memory/SKILL.md +0 -14
  370. brainlayer-1.3.0/findings.md +0 -253
  371. brainlayer-1.3.0/greptile.json +0 -33
  372. brainlayer-1.3.0/hooks/brainbar-postcompact.py +0 -75
  373. brainlayer-1.3.0/hooks/brainbar-prompt-capture.py +0 -37
  374. brainlayer-1.3.0/hooks/brainbar-stop-index.py +0 -145
  375. brainlayer-1.3.0/hooks/brainlayer-prompt-search.py +0 -1361
  376. brainlayer-1.3.0/hooks/brainlayer-session-start.py +0 -336
  377. brainlayer-1.3.0/hooks/dedup_coordination.py +0 -186
  378. brainlayer-1.3.0/hooks/post-commit.py +0 -82
  379. brainlayer-1.3.0/hooks/session-cleanup.py +0 -174
  380. brainlayer-1.3.0/landing/index.html +0 -1611
  381. brainlayer-1.3.0/landing/logos/brainlayer.svg +0 -75
  382. brainlayer-1.3.0/landing/logos/claude.svg +0 -1
  383. brainlayer-1.3.0/landing/logos/cursor.svg +0 -12
  384. brainlayer-1.3.0/landing/logos/gemini.svg +0 -1
  385. brainlayer-1.3.0/landing/logos/kiro.svg +0 -11
  386. brainlayer-1.3.0/landing/logos/openai.svg +0 -1
  387. brainlayer-1.3.0/landing/logos/vscode.svg +0 -1
  388. brainlayer-1.3.0/landing/logos/zed.svg +0 -1
  389. brainlayer-1.3.0/launchd/com.brainlayer.jsonl-backup.plist +0 -50
  390. brainlayer-1.3.0/launchd/com.brainlayer.watch.plist +0 -59
  391. brainlayer-1.3.0/launchd/install-newsyslog.sh +0 -65
  392. brainlayer-1.3.0/launchd/newsyslog.d/README.md +0 -31
  393. brainlayer-1.3.0/launchd/newsyslog.d/brainlayer.conf +0 -16
  394. brainlayer-1.3.0/macroscope.md +0 -31
  395. brainlayer-1.3.0/migrations/002_decay_columns.sql +0 -9
  396. brainlayer-1.3.0/migrations/003_raw_entities_json.sql +0 -1
  397. brainlayer-1.3.0/migrations/004_enrich_status.sql +0 -22
  398. brainlayer-1.3.0/mkdocs.yml +0 -66
  399. brainlayer-1.3.0/overrides/main.html +0 -30
  400. brainlayer-1.3.0/prd-json/index.json +0 -13
  401. brainlayer-1.3.0/prd-json/stories/BUG-005.json +0 -31
  402. brainlayer-1.3.0/prd-json/stories/MP-003.json +0 -35
  403. brainlayer-1.3.0/prd-json/stories/MP-004.json +0 -43
  404. brainlayer-1.3.0/prd-json/stories/US-001.json +0 -35
  405. brainlayer-1.3.0/prd-json/stories/US-002.json +0 -39
  406. brainlayer-1.3.0/progress.txt +0 -57
  407. brainlayer-1.3.0/results/abcde_n893_summary.json +0 -60
  408. brainlayer-1.3.0/results/abcde_n893_summary.md +0 -33
  409. brainlayer-1.3.0/scripts/__init__.py +0 -1
  410. brainlayer-1.3.0/scripts/abcde_report.py +0 -301
  411. brainlayer-1.3.0/scripts/backfill-context.py +0 -103
  412. brainlayer-1.3.0/scripts/backfill-created-at.py +0 -314
  413. brainlayer-1.3.0/scripts/backfill-metadata.py +0 -143
  414. brainlayer-1.3.0/scripts/backfill_chunk_origin_provenance.py +0 -62
  415. brainlayer-1.3.0/scripts/backfill_content_class.py +0 -225
  416. brainlayer-1.3.0/scripts/backfill_data/.gitignore +0 -3
  417. brainlayer-1.3.0/scripts/backfill_decay.py +0 -21
  418. brainlayer-1.3.0/scripts/backfill_dedupe.py +0 -7
  419. brainlayer-1.3.0/scripts/backfill_kg_promotion.py +0 -15
  420. brainlayer-1.3.0/scripts/backfill_orchestrate.sh +0 -88
  421. brainlayer-1.3.0/scripts/batch_submit_paced.py +0 -106
  422. brainlayer-1.3.0/scripts/braintrust_ingest.py +0 -354
  423. brainlayer-1.3.0/scripts/build_qrels.py +0 -150
  424. brainlayer-1.3.0/scripts/calibrate_importance.py +0 -70
  425. brainlayer-1.3.0/scripts/classify-all.py +0 -142
  426. brainlayer-1.3.0/scripts/cleanup-profanity-chunks.py +0 -196
  427. brainlayer-1.3.0/scripts/cleanup_stale_mcp.py +0 -179
  428. brainlayer-1.3.0/scripts/cloud_backfill.py +0 -22
  429. brainlayer-1.3.0/scripts/cloud_stream.py +0 -412
  430. brainlayer-1.3.0/scripts/db_shrink_eval.py +0 -186
  431. brainlayer-1.3.0/scripts/db_shrink_migrate.py +0 -7
  432. brainlayer-1.3.0/scripts/dedup_entities.py +0 -223
  433. brainlayer-1.3.0/scripts/diarize_episodes.py +0 -408
  434. brainlayer-1.3.0/scripts/drain_daemon.py +0 -17
  435. brainlayer-1.3.0/scripts/enrich_recent.py +0 -189
  436. brainlayer-1.3.0/scripts/enrichment_backfill.py +0 -185
  437. brainlayer-1.3.0/scripts/enrichment_llm_judge.py +0 -14
  438. brainlayer-1.3.0/scripts/enrichment_pilot.py +0 -420
  439. brainlayer-1.3.0/scripts/enrichment_quality_benchmark.py +0 -14
  440. brainlayer-1.3.0/scripts/export_lexical_defense_snapshot.py +0 -58
  441. brainlayer-1.3.0/scripts/generate-fixtures.sh +0 -193
  442. brainlayer-1.3.0/scripts/generate_abcde_variants.py +0 -195
  443. brainlayer-1.3.0/scripts/generate_style_card.py +0 -128
  444. brainlayer-1.3.0/scripts/hot_currentness_benchmark.py +0 -619
  445. brainlayer-1.3.0/scripts/hotlane_brainbar_daemon.py +0 -245
  446. brainlayer-1.3.0/scripts/index_youtube.py +0 -810
  447. brainlayer-1.3.0/scripts/install-karabiner-rule.sh +0 -65
  448. brainlayer-1.3.0/scripts/kg_backfill.py +0 -88
  449. brainlayer-1.3.0/scripts/kg_cleanup.py +0 -327
  450. brainlayer-1.3.0/scripts/kg_cleanup_apply.py +0 -273
  451. brainlayer-1.3.0/scripts/kg_cleanup_dryrun.py +0 -246
  452. brainlayer-1.3.0/scripts/kg_dedup.py +0 -170
  453. brainlayer-1.3.0/scripts/kg_entity_dedup.py +0 -1010
  454. brainlayer-1.3.0/scripts/kg_entity_judge.py +0 -78
  455. brainlayer-1.3.0/scripts/kg_flag_batch.py +0 -160
  456. brainlayer-1.3.0/scripts/kg_p2_crosstype_cleanup.py +0 -565
  457. brainlayer-1.3.0/scripts/kg_p2_safe_cleanup.py +0 -347
  458. brainlayer-1.3.0/scripts/kg_rebuild.py +0 -363
  459. brainlayer-1.3.0/scripts/kg_review_session.py +0 -73
  460. brainlayer-1.3.0/scripts/kg_session_finish.py +0 -12
  461. brainlayer-1.3.0/scripts/kg_session_harvest.py +0 -12
  462. brainlayer-1.3.0/scripts/label-chunks.py +0 -272
  463. brainlayer-1.3.0/scripts/maintenance/brainlayer_maintenance.py +0 -17
  464. brainlayer-1.3.0/scripts/merge_queue.py +0 -65
  465. brainlayer-1.3.0/scripts/mine_corrections.py +0 -38
  466. brainlayer-1.3.0/scripts/mine_failed_queries.py +0 -245
  467. brainlayer-1.3.0/scripts/mine_frustrations.py +0 -77
  468. brainlayer-1.3.0/scripts/monitor_batch_reenrichment.py +0 -142
  469. brainlayer-1.3.0/scripts/p0_longitudinal_count.py +0 -104
  470. brainlayer-1.3.0/scripts/phase-boundaries.py +0 -86
  471. brainlayer-1.3.0/scripts/pre-label.py +0 -217
  472. brainlayer-1.3.0/scripts/promote_tag_entities.py +0 -42
  473. brainlayer-1.3.0/scripts/purge_orphaned_vectors.py +0 -167
  474. brainlayer-1.3.0/scripts/quarantine_noise.py +0 -435
  475. brainlayer-1.3.0/scripts/rebuild_vec0_tables.py +0 -295
  476. brainlayer-1.3.0/scripts/reembed_bge_m3.py +0 -162
  477. brainlayer-1.3.0/scripts/reembed_bgem3.py +0 -293
  478. brainlayer-1.3.0/scripts/replay_brain_store_fallbacks.py +0 -108
  479. brainlayer-1.3.0/scripts/resimhash_dedupe.py +0 -21
  480. brainlayer-1.3.0/scripts/run-second-analysis-after-first.sh +0 -31
  481. brainlayer-1.3.0/scripts/run_abcde_enrich.py +0 -170
  482. brainlayer-1.3.0/scripts/run_benchmark.py +0 -92
  483. brainlayer-1.3.0/scripts/run_decay_job.py +0 -47
  484. brainlayer-1.3.0/scripts/run_evals.py +0 -95
  485. brainlayer-1.3.0/scripts/run_tests.sh +0 -313
  486. brainlayer-1.3.0/scripts/scope-config.py +0 -100
  487. brainlayer-1.3.0/scripts/score_entity_health.py +0 -322
  488. brainlayer-1.3.0/scripts/seed_agent_profiles.py +0 -36
  489. brainlayer-1.3.0/scripts/seed_aliases.py +0 -67
  490. brainlayer-1.3.0/scripts/smoke/README.md +0 -1
  491. brainlayer-1.3.0/scripts/smoke/firstturn-brainlayer-smoke.sh +0 -83
  492. brainlayer-1.3.0/scripts/smoke/repogolem_mcp_transport_smoke.py +0 -134
  493. brainlayer-1.3.0/scripts/tombstone_singleton_tags.py +0 -53
  494. brainlayer-1.3.0/scripts/train-setfit.py +0 -161
  495. brainlayer-1.3.0/scripts/verify_hebrew_search.py +0 -95
  496. brainlayer-1.3.0/scripts/vertex_poll_import.py +0 -279
  497. brainlayer-1.3.0/scripts/wal_checkpoint.py +0 -65
  498. brainlayer-1.3.0/src/brainlayer/fallback_replay.py +0 -233
  499. brainlayer-1.3.0/tests/BrainBarWindowRootView.test.swift +0 -19
  500. brainlayer-1.3.0/tests/__init__.py +0 -1
  501. brainlayer-1.3.0/tests/conftest.py +0 -90
  502. brainlayer-1.3.0/tests/eval/phoenix_gate/test_phoenix_gate.py +0 -352
  503. brainlayer-1.3.0/tests/eval_baselines.json +0 -280
  504. brainlayer-1.3.0/tests/eval_mcp_brainlayer.json +0 -1335
  505. brainlayer-1.3.0/tests/eval_pr3_relevance_qrels.json +0 -68
  506. brainlayer-1.3.0/tests/eval_qrels.json +0 -1533
  507. brainlayer-1.3.0/tests/fixtures/README.md +0 -6
  508. brainlayer-1.3.0/tests/fixtures/stale_index_query.json +0 -5239
  509. brainlayer-1.3.0/tests/mock_mcp/__init__.py +0 -30
  510. brainlayer-1.3.0/tests/mock_mcp/assertions.py +0 -101
  511. brainlayer-1.3.0/tests/mock_mcp/base.py +0 -156
  512. brainlayer-1.3.0/tests/mock_mcp/mock_brainlayer.py +0 -184
  513. brainlayer-1.3.0/tests/mock_mcp/mock_github.py +0 -223
  514. brainlayer-1.3.0/tests/mock_mcp/mock_voicelayer.py +0 -81
  515. brainlayer-1.3.0/tests/regression/__init__.py +0 -1
  516. brainlayer-1.3.0/tests/regression/_stale_index_fixture.py +0 -112
  517. brainlayer-1.3.0/tests/regression/test_drift_detection.py +0 -147
  518. brainlayer-1.3.0/tests/regression/test_fts5_determinism.sh +0 -50
  519. brainlayer-1.3.0/tests/stale_index_query.test.ts +0 -134
  520. brainlayer-1.3.0/tests/test_3tool_aliases.py +0 -493
  521. brainlayer-1.3.0/tests/test_6pm_entity_upgrades.py +0 -505
  522. brainlayer-1.3.0/tests/test_abcde_enrich_runner.py +0 -352
  523. brainlayer-1.3.0/tests/test_abcde_report.py +0 -84
  524. brainlayer-1.3.0/tests/test_abcde_variants.py +0 -151
  525. brainlayer-1.3.0/tests/test_adaptive_injection.py +0 -257
  526. brainlayer-1.3.0/tests/test_agent_profiles.py +0 -316
  527. brainlayer-1.3.0/tests/test_arbitration.py +0 -930
  528. brainlayer-1.3.0/tests/test_atomic_brick_schema.py +0 -430
  529. brainlayer-1.3.0/tests/test_audit_recursion_filter.py +0 -716
  530. brainlayer-1.3.0/tests/test_audit_search_quality.py +0 -188
  531. brainlayer-1.3.0/tests/test_auto_enrich.py +0 -415
  532. brainlayer-1.3.0/tests/test_backup_daily.py +0 -722
  533. brainlayer-1.3.0/tests/test_batch_extraction.py +0 -251
  534. brainlayer-1.3.0/tests/test_batch_reenrichment_setup.py +0 -74
  535. brainlayer-1.3.0/tests/test_behavioral_pr_loop.py +0 -421
  536. brainlayer-1.3.0/tests/test_bitemporal_phase1.py +0 -214
  537. brainlayer-1.3.0/tests/test_brain_graph_compat.py +0 -40
  538. brainlayer-1.3.0/tests/test_brain_tags.py +0 -270
  539. brainlayer-1.3.0/tests/test_brainbar_build_app_guards.py +0 -966
  540. brainlayer-1.3.0/tests/test_brainbar_helper_fast_profile.py +0 -169
  541. brainlayer-1.3.0/tests/test_brainbar_hybrid_helper.py +0 -223
  542. brainlayer-1.3.0/tests/test_brainstore.py +0 -602
  543. brainlayer-1.3.0/tests/test_braintrust_ingest.py +0 -196
  544. brainlayer-1.3.0/tests/test_calibrate_importance.py +0 -266
  545. brainlayer-1.3.0/tests/test_chat_list.py +0 -27
  546. brainlayer-1.3.0/tests/test_chunk.py +0 -110
  547. brainlayer-1.3.0/tests/test_chunk_lifecycle.py +0 -403
  548. brainlayer-1.3.0/tests/test_chunk_origin_provenance.py +0 -312
  549. brainlayer-1.3.0/tests/test_chunker.py +0 -91
  550. brainlayer-1.3.0/tests/test_classify.py +0 -165
  551. brainlayer-1.3.0/tests/test_cleanup_profanity_chunks.py +0 -198
  552. brainlayer-1.3.0/tests/test_cli_direct_sqlite.py +0 -261
  553. brainlayer-1.3.0/tests/test_cli_enrich.py +0 -302
  554. brainlayer-1.3.0/tests/test_cli_launchd_mode_a.py +0 -126
  555. brainlayer-1.3.0/tests/test_cli_provenance.py +0 -35
  556. brainlayer-1.3.0/tests/test_cloud_backfill.py +0 -616
  557. brainlayer-1.3.0/tests/test_code_intelligence.py +0 -872
  558. brainlayer-1.3.0/tests/test_concurrent_enrichment.py +0 -86
  559. brainlayer-1.3.0/tests/test_conditional_hooks.py +0 -863
  560. brainlayer-1.3.0/tests/test_consumer_scoping.py +0 -1113
  561. brainlayer-1.3.0/tests/test_content_class.py +0 -448
  562. brainlayer-1.3.0/tests/test_context_pipeline.py +0 -556
  563. brainlayer-1.3.0/tests/test_correction_detection_gate.py +0 -113
  564. brainlayer-1.3.0/tests/test_correction_judge.py +0 -86
  565. brainlayer-1.3.0/tests/test_correction_mining.py +0 -160
  566. brainlayer-1.3.0/tests/test_dashboard.py +0 -61
  567. brainlayer-1.3.0/tests/test_db_lock_resilience.py +0 -125
  568. brainlayer-1.3.0/tests/test_db_shrink.py +0 -335
  569. brainlayer-1.3.0/tests/test_decay.py +0 -436
  570. brainlayer-1.3.0/tests/test_dedup_coordination.py +0 -235
  571. brainlayer-1.3.0/tests/test_dedupe.py +0 -765
  572. brainlayer-1.3.0/tests/test_deferred_embedding.py +0 -754
  573. brainlayer-1.3.0/tests/test_deferred_mcp_provenance_guard.py +0 -113
  574. brainlayer-1.3.0/tests/test_dev_dependencies.py +0 -12
  575. brainlayer-1.3.0/tests/test_digest_connect.py +0 -420
  576. brainlayer-1.3.0/tests/test_digest_enrichment.py +0 -11
  577. brainlayer-1.3.0/tests/test_digest_pipeline_v2.py +0 -815
  578. brainlayer-1.3.0/tests/test_drain_health.py +0 -24
  579. brainlayer-1.3.0/tests/test_embedding_truncation.py +0 -207
  580. brainlayer-1.3.0/tests/test_engine.py +0 -416
  581. brainlayer-1.3.0/tests/test_engine_package_boundary.py +0 -41
  582. brainlayer-1.3.0/tests/test_enrich_defaults.py +0 -28
  583. brainlayer-1.3.0/tests/test_enrich_supervisor.py +0 -290
  584. brainlayer-1.3.0/tests/test_enrichment_bounded_commit.py +0 -231
  585. brainlayer-1.3.0/tests/test_enrichment_controller.py +0 -1654
  586. brainlayer-1.3.0/tests/test_enrichment_data_integrity.py +0 -155
  587. brainlayer-1.3.0/tests/test_enrichment_entity_schema.py +0 -347
  588. brainlayer-1.3.0/tests/test_enrichment_fallback.py +0 -137
  589. brainlayer-1.3.0/tests/test_enrichment_flex_integration.py +0 -95
  590. brainlayer-1.3.0/tests/test_enrichment_gold.py +0 -125
  591. brainlayer-1.3.0/tests/test_enrichment_graders.py +0 -235
  592. brainlayer-1.3.0/tests/test_enrichment_judge.py +0 -219
  593. brainlayer-1.3.0/tests/test_enrichment_llm_judge.py +0 -99
  594. brainlayer-1.3.0/tests/test_enrichment_quality_benchmark.py +0 -181
  595. brainlayer-1.3.0/tests/test_enrichment_reliability.py +0 -427
  596. brainlayer-1.3.0/tests/test_enrichment_threshold.py +0 -26
  597. brainlayer-1.3.0/tests/test_enrichment_tiers.py +0 -225
  598. brainlayer-1.3.0/tests/test_enrichment_tiers_agent_sources.py +0 -33
  599. brainlayer-1.3.0/tests/test_enrichment_v2.py +0 -439
  600. brainlayer-1.3.0/tests/test_entity_contracts.py +0 -552
  601. brainlayer-1.3.0/tests/test_entity_dedup.py +0 -456
  602. brainlayer-1.3.0/tests/test_entity_extraction.py +0 -421
  603. brainlayer-1.3.0/tests/test_entity_fact_correction_judge.py +0 -163
  604. brainlayer-1.3.0/tests/test_entity_parent_relations.py +0 -242
  605. brainlayer-1.3.0/tests/test_entity_type_gate.py +0 -111
  606. brainlayer-1.3.0/tests/test_entity_type_sync.py +0 -234
  607. brainlayer-1.3.0/tests/test_eval_baselines.py +0 -1100
  608. brainlayer-1.3.0/tests/test_eval_framework.py +0 -436
  609. brainlayer-1.3.0/tests/test_experiment_store.py +0 -178
  610. brainlayer-1.3.0/tests/test_extract_markdown.py +0 -235
  611. brainlayer-1.3.0/tests/test_fallback_replay.py +0 -299
  612. brainlayer-1.3.0/tests/test_follow_up_rewrite.py +0 -199
  613. brainlayer-1.3.0/tests/test_frustration_mining.py +0 -177
  614. brainlayer-1.3.0/tests/test_fts5_health.py +0 -170
  615. brainlayer-1.3.0/tests/test_git_learning.py +0 -247
  616. brainlayer-1.3.0/tests/test_groq_backend.py +0 -212
  617. brainlayer-1.3.0/tests/test_groq_rate_limit.py +0 -115
  618. brainlayer-1.3.0/tests/test_hebrew_alias.py +0 -181
  619. brainlayer-1.3.0/tests/test_hook_slim.py +0 -165
  620. brainlayer-1.3.0/tests/test_hot_currentness_benchmark.py +0 -266
  621. brainlayer-1.3.0/tests/test_hotlane_brainbar_daemon.py +0 -331
  622. brainlayer-1.3.0/tests/test_hybrid_helper_contract.py +0 -174
  623. brainlayer-1.3.0/tests/test_hybrid_search.py +0 -842
  624. brainlayer-1.3.0/tests/test_hybrid_search_decay.py +0 -189
  625. brainlayer-1.3.0/tests/test_ingest_codex.py +0 -435
  626. brainlayer-1.3.0/tests/test_ingest_guard.py +0 -541
  627. brainlayer-1.3.0/tests/test_installable_build.py +0 -502
  628. brainlayer-1.3.0/tests/test_isolation_proof_harness.py +0 -73
  629. brainlayer-1.3.0/tests/test_issue_type.py +0 -213
  630. brainlayer-1.3.0/tests/test_jsonl_backup.py +0 -284
  631. brainlayer-1.3.0/tests/test_jsonl_watcher.py +0 -756
  632. brainlayer-1.3.0/tests/test_kg_boost_reconnect.py +0 -149
  633. brainlayer-1.3.0/tests/test_kg_cleanup.py +0 -347
  634. brainlayer-1.3.0/tests/test_kg_entity_dedup.py +0 -697
  635. brainlayer-1.3.0/tests/test_kg_extraction.py +0 -345
  636. brainlayer-1.3.0/tests/test_kg_hybrid_retrieval.py +0 -246
  637. brainlayer-1.3.0/tests/test_kg_judge.py +0 -659
  638. brainlayer-1.3.0/tests/test_kg_p2_crosstype_cleanup.py +0 -123
  639. brainlayer-1.3.0/tests/test_kg_p2_safe_cleanup.py +0 -59
  640. brainlayer-1.3.0/tests/test_kg_promotion.py +0 -467
  641. brainlayer-1.3.0/tests/test_kg_quality.py +0 -472
  642. brainlayer-1.3.0/tests/test_kg_rebuild.py +0 -311
  643. brainlayer-1.3.0/tests/test_kg_relations.py +0 -69
  644. brainlayer-1.3.0/tests/test_kg_review_session.py +0 -610
  645. brainlayer-1.3.0/tests/test_kg_schema.py +0 -657
  646. brainlayer-1.3.0/tests/test_kg_session_finish.py +0 -347
  647. brainlayer-1.3.0/tests/test_kg_session_harvest.py +0 -595
  648. brainlayer-1.3.0/tests/test_kg_standard.py +0 -476
  649. brainlayer-1.3.0/tests/test_launchd_hygiene.py +0 -341
  650. brainlayer-1.3.0/tests/test_lexical_defense.py +0 -52
  651. brainlayer-1.3.0/tests/test_lifecycle.py +0 -398
  652. brainlayer-1.3.0/tests/test_maintenance_routine.py +0 -442
  653. brainlayer-1.3.0/tests/test_mcp_digest_modes.py +0 -91
  654. brainlayer-1.3.0/tests/test_mcp_format.py +0 -449
  655. brainlayer-1.3.0/tests/test_mcp_input_schema_limits.py +0 -71
  656. brainlayer-1.3.0/tests/test_mcp_labeled_field_output.py +0 -227
  657. brainlayer-1.3.0/tests/test_mcp_lazy_startup.py +0 -185
  658. brainlayer-1.3.0/tests/test_mcp_socket_config_templates.py +0 -35
  659. brainlayer-1.3.0/tests/test_mcp_timeout.py +0 -17
  660. brainlayer-1.3.0/tests/test_mcp_warm_route.py +0 -377
  661. brainlayer-1.3.0/tests/test_mine_queries.py +0 -180
  662. brainlayer-1.3.0/tests/test_mlx_health_recovery.py +0 -121
  663. brainlayer-1.3.0/tests/test_mmr_default_off.py +0 -169
  664. brainlayer-1.3.0/tests/test_ner_eval.py +0 -394
  665. brainlayer-1.3.0/tests/test_newsyslog_config.py +0 -87
  666. brainlayer-1.3.0/tests/test_normalize_project.py +0 -58
  667. brainlayer-1.3.0/tests/test_p0_longitudinal_count.py +0 -103
  668. brainlayer-1.3.0/tests/test_parent_death.py +0 -107
  669. brainlayer-1.3.0/tests/test_paths.py +0 -38
  670. brainlayer-1.3.0/tests/test_phase2.py +0 -292
  671. brainlayer-1.3.0/tests/test_phase2_plugin_manifest.py +0 -90
  672. brainlayer-1.3.0/tests/test_phase2_plugin_queue.py +0 -226
  673. brainlayer-1.3.0/tests/test_phase3_digest.py +0 -789
  674. brainlayer-1.3.0/tests/test_phase3_qa.py +0 -388
  675. brainlayer-1.3.0/tests/test_phase5.py +0 -332
  676. brainlayer-1.3.0/tests/test_phase6_critical.py +0 -441
  677. brainlayer-1.3.0/tests/test_phase6_sentiment.py +0 -270
  678. brainlayer-1.3.0/tests/test_post_commit_hook.py +0 -163
  679. brainlayer-1.3.0/tests/test_precompact_chunk_origin.py +0 -987
  680. brainlayer-1.3.0/tests/test_prompt_classification.py +0 -224
  681. brainlayer-1.3.0/tests/test_provenance.py +0 -479
  682. brainlayer-1.3.0/tests/test_provenance_autosupersede.py +0 -647
  683. brainlayer-1.3.0/tests/test_provenance_integration.py +0 -2119
  684. brainlayer-1.3.0/tests/test_quarantine_noise.py +0 -198
  685. brainlayer-1.3.0/tests/test_queue_merge.py +0 -153
  686. brainlayer-1.3.0/tests/test_rate_limiter.py +0 -52
  687. brainlayer-1.3.0/tests/test_realtime_hooks.py +0 -246
  688. brainlayer-1.3.0/tests/test_recent_enrichment.py +0 -37
  689. brainlayer-1.3.0/tests/test_reembed_backfill.py +0 -267
  690. brainlayer-1.3.0/tests/test_reembed_bgem3.py +0 -245
  691. brainlayer-1.3.0/tests/test_release_version_sync.py +0 -22
  692. brainlayer-1.3.0/tests/test_run_tests_script.py +0 -423
  693. brainlayer-1.3.0/tests/test_sanitize.py +0 -463
  694. brainlayer-1.3.0/tests/test_search_alias_expansion.py +0 -149
  695. brainlayer-1.3.0/tests/test_search_chunk_id.py +0 -229
  696. brainlayer-1.3.0/tests/test_search_exact_chunk_id.py +0 -367
  697. brainlayer-1.3.0/tests/test_search_filter_params.py +0 -813
  698. brainlayer-1.3.0/tests/test_search_gaps.py +0 -313
  699. brainlayer-1.3.0/tests/test_search_handler.py +0 -671
  700. brainlayer-1.3.0/tests/test_search_profile.py +0 -158
  701. brainlayer-1.3.0/tests/test_search_quality.py +0 -552
  702. brainlayer-1.3.0/tests/test_search_routing.py +0 -164
  703. brainlayer-1.3.0/tests/test_search_trigram_fts.py +0 -118
  704. brainlayer-1.3.0/tests/test_search_validation.py +0 -518
  705. brainlayer-1.3.0/tests/test_semantic_style.py +0 -315
  706. brainlayer-1.3.0/tests/test_session_enrichment.py +0 -673
  707. brainlayer-1.3.0/tests/test_session_enrichment_candidates.py +0 -217
  708. brainlayer-1.3.0/tests/test_smart_search_entity_dedup.py +0 -400
  709. brainlayer-1.3.0/tests/test_stability_health_check.py +0 -475
  710. brainlayer-1.3.0/tests/test_stale_index_fixture.py +0 -16
  711. brainlayer-1.3.0/tests/test_stop_hook_created_at.py +0 -48
  712. brainlayer-1.3.0/tests/test_storage.py +0 -62
  713. brainlayer-1.3.0/tests/test_store_handler.py +0 -1093
  714. brainlayer-1.3.0/tests/test_tag_entity_promotion.py +0 -143
  715. brainlayer-1.3.0/tests/test_telemetry.py +0 -177
  716. brainlayer-1.3.0/tests/test_think_recall_integration.py +0 -279
  717. brainlayer-1.3.0/tests/test_tool_annotations.py +0 -147
  718. brainlayer-1.3.0/tests/test_tool_description_quality.py +0 -41
  719. brainlayer-1.3.0/tests/test_transport_replay_attribution.py +0 -298
  720. brainlayer-1.3.0/tests/test_truncation.py +0 -52
  721. brainlayer-1.3.0/tests/test_vector_store.py +0 -148
  722. brainlayer-1.3.0/tests/test_vector_store_pragma_tuning.py +0 -126
  723. brainlayer-1.3.0/tests/test_vector_store_readonly.py +0 -236
  724. brainlayer-1.3.0/tests/test_vector_store_schema_flags.py +0 -24
  725. brainlayer-1.3.0/tests/test_wal_checkpoint_module.py +0 -28
  726. brainlayer-1.3.0/tests/test_watcher_bridge.py +0 -577
  727. brainlayer-1.3.0/tests/test_wizard.py +0 -101
  728. brainlayer-1.3.0/tests/test_write_queue.py +0 -1643
  729. brainlayer-1.3.0/tests/test_write_resilience_under_load.py +0 -169
  730. brainlayer-1.3.0/tests/test_writer_pidfile_mutex.py +0 -764
  731. {brainlayer-1.3.0 → brainlayer-1.4.1}/LICENSE +0 -0
  732. {brainlayer-1.3.0 → brainlayer-1.4.1}/README.md +0 -0
  733. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/backup-daily.sh +0 -0
  734. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/brainlayer.env.example +0 -0
  735. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.backup-daily.plist +0 -0
  736. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.decay.plist +0 -0
  737. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.health-check.plist +0 -0
  738. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.index.plist +0 -0
  739. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.jsonl-backup.plist +0 -0
  740. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.maintenance-nightly.plist +0 -0
  741. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.maintenance-weekly.plist +0 -0
  742. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.repair-fts.plist +0 -0
  743. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.wal-checkpoint.plist +0 -0
  744. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/com.brainlayer.watch.plist +0 -0
  745. {brainlayer-1.3.0 → brainlayer-1.4.1}/scripts/launchd/jsonl-backup.sh +0 -0
  746. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/_helpers.py +0 -0
  747. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/agent_profiles.py +0 -0
  748. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/backup_daily.py +0 -0
  749. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/bitemporal.py +0 -0
  750. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/brainbar_hybrid_helper.py +0 -0
  751. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/calibrate.py +0 -0
  752. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/chunk_origin.py +0 -0
  753. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/chunk_origin_backfill.py +0 -0
  754. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/classify.py +0 -0
  755. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/claude_paths.py +0 -0
  756. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/cli/wizard.py +0 -0
  757. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/cli_new.py +0 -0
  758. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/clustering.py +0 -0
  759. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/config.py +0 -0
  760. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/content_class.py +0 -0
  761. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/correction_judge.py +0 -0
  762. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/db_shrink.py +0 -0
  763. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/decay.py +0 -0
  764. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/decay_backfill.py +0 -0
  765. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/decay_job.py +0 -0
  766. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/dedupe.py +0 -0
  767. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/embeddings.py +0 -0
  768. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/engine.py +0 -0
  769. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/__init__.py +0 -0
  770. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/abcde_enrich_runner.py +0 -0
  771. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/abcde_variants.py +0 -0
  772. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/abcde_variants.yaml +0 -0
  773. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/benchmark.py +0 -0
  774. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/enrichment_gold.py +0 -0
  775. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/enrichment_graders.py +0 -0
  776. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/enrichment_judge.py +0 -0
  777. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/enrichment_llm_judge.py +0 -0
  778. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/enrichment_quality_benchmark.py +0 -0
  779. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/experiment_store.py +0 -0
  780. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/fixtures/README.md +0 -0
  781. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/labeling/enrichment-labeler.html +0 -0
  782. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/phoenix_gate/__init__.py +0 -0
  783. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/phoenix_gate/__main__.py +0 -0
  784. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/phoenix_gate/baseline_store.py +0 -0
  785. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/phoenix_gate/cli.py +0 -0
  786. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/phoenix_gate/models.py +0 -0
  787. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/phoenix_gate/phoenix_client.py +0 -0
  788. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/phoenix_gate/regression_gate.py +0 -0
  789. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/eval/phoenix_gate/triggers.py +0 -0
  790. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/git_learning.py +0 -0
  791. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/hooks/__init__.py +0 -0
  792. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/hooks/indexer.py +0 -0
  793. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/ingest/__init__.py +0 -0
  794. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/ingest/codex.py +0 -0
  795. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/ingest_guard.py +0 -0
  796. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/isolation_proof.py +0 -0
  797. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/jsonl_backup.py +0 -0
  798. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/kg/__init__.py +0 -0
  799. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/kg_cleanup.py +0 -0
  800. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/kg_judge.py +0 -0
  801. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/kg_promotion.py +0 -0
  802. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/kg_repo.py +0 -0
  803. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/kg_review_session.py +0 -0
  804. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/kg_session_finish.py +0 -0
  805. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/kg_session_harvest.py +0 -0
  806. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/lexical_defense.py +0 -0
  807. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/lexical_defense_dictionary.json +0 -0
  808. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/mcp/_shared.py +0 -0
  809. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/mcp/enrich_handler.py +0 -0
  810. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/mcp/entity_handler.py +0 -0
  811. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/mcp/tags_handler.py +0 -0
  812. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/migrate.py +0 -0
  813. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/parent_death.py +0 -0
  814. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/paths.py +0 -0
  815. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/phonetic.py +0 -0
  816. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/__init__.py +0 -0
  817. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/agent_enrichment.py +0 -0
  818. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/analyze_communication.py +0 -0
  819. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/batch_extraction.py +0 -0
  820. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/brain_graph.py +0 -0
  821. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/chat_tags.py +0 -0
  822. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/chunk.py +0 -0
  823. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/cluster_sampling.py +0 -0
  824. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/code_intelligence.py +0 -0
  825. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/correction_detection.py +0 -0
  826. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/correction_mining.py +0 -0
  827. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/digest.py +0 -0
  828. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/enrichment.py +0 -0
  829. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/enrichment_tiers.py +0 -0
  830. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/entity_extraction.py +0 -0
  831. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/entity_resolution.py +0 -0
  832. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/extract.py +0 -0
  833. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/extract_claude_desktop.py +0 -0
  834. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/extract_corrections.py +0 -0
  835. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/extract_markdown.py +0 -0
  836. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/extract_whatsapp.py +0 -0
  837. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/frustration_mining.py +0 -0
  838. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/git_overlay.py +0 -0
  839. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/kg_extraction.py +0 -0
  840. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/kg_extraction_groq.py +0 -0
  841. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/longitudinal_analyzer.py +0 -0
  842. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/obsidian_export.py +0 -0
  843. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/operation_grouping.py +0 -0
  844. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/plan_linking.py +0 -0
  845. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/rate_limiter.py +0 -0
  846. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/sanitize.py +0 -0
  847. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/semantic_style.py +0 -0
  848. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/sentiment.py +0 -0
  849. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/session_enrichment.py +0 -0
  850. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/style_embed.py +0 -0
  851. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/style_index.py +0 -0
  852. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/tag_entity_promotion.py +0 -0
  853. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/temporal_chains.py +0 -0
  854. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/time_batcher.py +0 -0
  855. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/unified_timeline.py +0 -0
  856. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/pipeline/write_queue.py +0 -0
  857. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/provenance.py +0 -0
  858. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/provenance_autosupersede.py +0 -0
  859. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/provenance_integration.py +0 -0
  860. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/queue_io.py +0 -0
  861. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/queue_merge.py +0 -0
  862. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/scoping.py +0 -0
  863. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/search_profile.py +0 -0
  864. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/search_repo.py +0 -0
  865. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/session_repo.py +0 -0
  866. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/setup.py +0 -0
  867. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/storage.py +0 -0
  868. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/tag_normalization.py +0 -0
  869. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/taxonomy.json +0 -0
  870. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/telemetry.py +0 -0
  871. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/types.py +0 -0
  872. {brainlayer-1.3.0 → brainlayer-1.4.1}/src/brainlayer/wal_checkpoint.py +0 -0
@@ -29,6 +29,9 @@ htmlcov/
29
29
  *.db-wal
30
30
  *.db-shm
31
31
  data/
32
+ !src/brainlayer/data/
33
+ !src/brainlayer/data/sandbox_seeds/
34
+ !src/brainlayer/data/sandbox_seeds/*.json
32
35
 
33
36
  # Secrets
34
37
  .env
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brainlayer
3
- Version: 1.3.0
3
+ Version: 1.4.1
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "brainlayer"
3
- version = "1.3.0"
3
+ version = "1.4.1"
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"
@@ -97,6 +97,7 @@ Issues = "https://github.com/EtanHey/brainlayer/issues"
97
97
  [project.scripts]
98
98
  brainlayer = "brainlayer.cli:app"
99
99
  brainlayer-mcp = "brainlayer.mcp:serve"
100
+ brainlayer-mcp-stdio-bridge = "brainlayer.mcp_stdio_bridge:main"
100
101
 
101
102
  [build-system]
102
103
  requires = ["hatchling"]
@@ -129,6 +130,15 @@ exclude = [
129
130
  ]
130
131
 
131
132
  [tool.hatch.build.targets.sdist]
133
+ only-include = [
134
+ "src/brainlayer",
135
+ "scripts/launchd",
136
+ "README.md",
137
+ "LICENSE",
138
+ "server.json",
139
+ ]
132
140
  exclude = [
141
+ "docs.local/**",
142
+ "brain-bar/docs.local/**",
133
143
  "src/brainlayer/dashboard/**",
134
144
  ]
@@ -3,6 +3,7 @@
3
3
  set -euo pipefail
4
4
 
5
5
  ENV_FILE="${BRAINLAYER_ENV_FILE:-$HOME/.config/brainlayer/brainlayer.env}"
6
+ export PATH="/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$HOME/.local/bin:${PATH:-}"
6
7
 
7
8
  if [ ! -f "$ENV_FILE" ]; then
8
9
  echo "ERROR: BrainLayer env file not found at $ENV_FILE" >&2
@@ -22,10 +23,66 @@ if [ -n "$(find "$ENV_FILE" -prune -perm -0002 -print 2>/dev/null)" ]; then
22
23
  exit 78
23
24
  fi
24
25
 
25
- set -a
26
- # shellcheck disable=SC1090
27
- source "$ENV_FILE"
28
- set +a
26
+ valid_env_key() {
27
+ case "$1" in
28
+ ""|[0-9]*|*[!A-Za-z0-9_]*)
29
+ return 1
30
+ ;;
31
+ *)
32
+ return 0
33
+ ;;
34
+ esac
35
+ }
36
+
37
+ strip_matching_quotes() {
38
+ local value="$1"
39
+ if [[ "$value" == \"*\" && "$value" == *\" ]]; then
40
+ printf '%s' "${value:1:${#value}-2}"
41
+ elif [[ "$value" == \'*\' && "$value" == *\' ]]; then
42
+ printf '%s' "${value:1:${#value}-2}"
43
+ else
44
+ printf '%s' "$value"
45
+ fi
46
+ }
47
+
48
+ load_simple_env_file() {
49
+ local raw_line line key value
50
+ while IFS= read -r raw_line || [ -n "$raw_line" ]; do
51
+ line="${raw_line#"${raw_line%%[![:space:]]*}"}"
52
+ line="${line%"${line##*[![:space:]]}"}"
53
+ case "$line" in
54
+ ""|\#*)
55
+ continue
56
+ ;;
57
+ export\ *)
58
+ line="${line#export }"
59
+ ;;
60
+ esac
61
+ case "$line" in
62
+ *=*) ;;
63
+ *) continue ;;
64
+ esac
65
+ key="${line%%=*}"
66
+ value="${line#*=}"
67
+ key="${key%"${key##*[![:space:]]}"}"
68
+ value="${value#"${value%%[![:space:]]*}"}"
69
+ if ! valid_env_key "$key"; then
70
+ continue
71
+ fi
72
+ case "$value" in
73
+ *'$('*|*'`'*)
74
+ continue
75
+ ;;
76
+ esac
77
+ export "$key=$(strip_matching_quotes "$value")"
78
+ done < "$ENV_FILE"
79
+ }
80
+
81
+ env_file_declares_google_key() {
82
+ grep -Eq '^[[:space:]]*(export[[:space:]]+)?GOOGLE(_GENERATIVE_AI)?_API_KEY[[:space:]]*=' "$ENV_FILE"
83
+ }
84
+
85
+ load_simple_env_file
29
86
 
30
87
  is_false() {
31
88
  case "${1:-}" in
@@ -68,7 +125,9 @@ if [ "${BRAINLAYER_SKIP_DISABLE_GATES:-0}" != "1" ]; then
68
125
  fi
69
126
  fi
70
127
 
71
- if [ "${BRAINLAYER_REQUIRE_GOOGLE_API_KEY:-0}" = "1" ] && [ -z "${GOOGLE_API_KEY:-${GOOGLE_GENERATIVE_AI_API_KEY:-}}" ]; then
128
+ if [ "${BRAINLAYER_REQUIRE_GOOGLE_API_KEY:-0}" = "1" ] \
129
+ && [ -z "${GOOGLE_API_KEY:-${GOOGLE_GENERATIVE_AI_API_KEY:-}}" ] \
130
+ && ! env_file_declares_google_key; then
72
131
  echo "ERROR: GOOGLE_API_KEY not set by $ENV_FILE" >&2
73
132
  exit 78
74
133
  fi
@@ -25,13 +25,9 @@
25
25
  <string>__BRAINLAYER_ENV_FILE__</string>
26
26
  <key>BRAINLAYER_LAUNCHD_SERVICE</key>
27
27
  <string>drain</string>
28
- <!-- Write chunks WITHOUT computing embeddings inside the drain's write
29
- transaction. Inline embedding lengthens the write-lock hold time and,
30
- under multi-writer contention (BrainBar/daemon/hybrid/watcher), starves
31
- the drain on SQLITE_BUSY so the realtime queue backs up. Vectors are
32
- backfilled out-of-band by enrichment/hotlane. (M1/throughput fix.) -->
33
- <key>BRAINLAYER_DRAIN_EMBED</key>
34
- <string>0</string>
28
+ <!-- Production leaves drain embedding enabled. Embeddings are precomputed
29
+ before BEGIN IMMEDIATE, so vector coverage does not depend on hotlane
30
+ liveness and the write-lock window stays bounded. -->
35
31
  </dict>
36
32
  <key>StandardOutPath</key>
37
33
  <string>__HOME__/Library/Logs/brainlayer/drain.out.log</string>
@@ -30,7 +30,9 @@
30
30
  <key>BRAINLAYER_STALL_TIMEOUT</key>
31
31
  <string>300</string>
32
32
  <key>BRAINLAYER_ENRICHMENT_QUEUE_WRITES</key>
33
- <string>0</string>
33
+ <string>1</string>
34
+ <key>BRAINLAYER_ENRICH_IDLE_BACKLOG</key>
35
+ <string>1</string>
34
36
  <key>BRAINLAYER_ENV_FILE</key>
35
37
  <string>__BRAINLAYER_ENV_FILE__</string>
36
38
  <key>BRAINLAYER_REQUIRE_GOOGLE_API_KEY</key>
@@ -0,0 +1,74 @@
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.hotlane-brainbar</string>
7
+ <key>ProgramArguments</key>
8
+ <array>
9
+ <string>__BRAINLAYER_ENV_RUN__</string>
10
+ <string>__BRAINLAYER_PYTHON__</string>
11
+ <string>__BRAINLAYER_DIR__/scripts/hotlane_brainbar_daemon.py</string>
12
+ <string>--interval</string>
13
+ <string>1.0</string>
14
+ <string>--recent-limit</string>
15
+ <string>5</string>
16
+ <string>--backlog-interval</string>
17
+ <string>10.0</string>
18
+ <string>--backlog-batch</string>
19
+ <string>4</string>
20
+ <string>--enrich-interval</string>
21
+ <string>10.0</string>
22
+ <string>--enrich-limit</string>
23
+ <string>0</string>
24
+ <string>--enrich-since-hours</string>
25
+ <string>87600</string>
26
+ </array>
27
+ <key>WorkingDirectory</key>
28
+ <string>__BRAINLAYER_DIR__</string>
29
+ <key>KeepAlive</key>
30
+ <true/>
31
+ <key>StandardOutPath</key>
32
+ <string>__HOME__/Library/Logs/brainlayer/hotlane-brainbar.out.log</string>
33
+ <key>StandardErrorPath</key>
34
+ <string>__HOME__/Library/Logs/brainlayer/hotlane-brainbar.err.log</string>
35
+ <key>EnvironmentVariables</key>
36
+ <dict>
37
+ <key>PATH</key>
38
+ <string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:__HOME__/.local/bin</string>
39
+ <key>PYTHONUNBUFFERED</key>
40
+ <string>1</string>
41
+ <key>BRAINLAYER_ENV_FILE</key>
42
+ <string>__BRAINLAYER_ENV_FILE__</string>
43
+ <key>BRAINLAYER_REQUIRE_GOOGLE_API_KEY</key>
44
+ <string>1</string>
45
+ <key>BRAINLAYER_REPO_ROOT</key>
46
+ <string>__BRAINLAYER_DIR__</string>
47
+ <key>BRAINLAYER_GEMINI_SERVICE_TIER</key>
48
+ <string>flex</string>
49
+ <key>BRAINLAYER_ENRICH_CONCURRENCY</key>
50
+ <string>4</string>
51
+ <key>BRAINLAYER_ENRICH_RATE</key>
52
+ <string>15</string>
53
+ <key>BRAINLAYER_LAUNCHD_SERVICE</key>
54
+ <string>hotlane-brainbar</string>
55
+ </dict>
56
+ <key>RunAtLoad</key>
57
+ <true/>
58
+ <key>ThrottleInterval</key>
59
+ <integer>5</integer>
60
+ <key>Nice</key>
61
+ <integer>10</integer>
62
+ <key>ProcessType</key>
63
+ <string>Background</string>
64
+ <key>ExitTimeOut</key>
65
+ <integer>30</integer>
66
+ <key>LowPriorityIO</key>
67
+ <true/>
68
+ <key>SoftResourceLimits</key>
69
+ <dict>
70
+ <key>NumberOfFiles</key>
71
+ <integer>4096</integer>
72
+ </dict>
73
+ </dict>
74
+ </plist>
@@ -16,19 +16,49 @@
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 hotlane # Install BrainBar hotlane embed/enrich daemon only
19
20
  # ./scripts/launchd/install.sh remove # Unload and remove all
20
21
  set -euo pipefail
21
22
 
22
23
  SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
24
+
25
+ stable_brainlayer_path() {
26
+ local value="${1:-}"
27
+ local prefix
28
+ local after_cellar
29
+ local after_version
30
+
31
+ if [ -z "$value" ]; then
32
+ printf "%s" "$value"
33
+ return 0
34
+ fi
35
+
36
+ case "$value" in
37
+ */Cellar/brainlayer/*)
38
+ prefix="${value%%/Cellar/brainlayer/*}"
39
+ after_cellar="${value#*/Cellar/brainlayer/}"
40
+ after_version="${after_cellar#*/}"
41
+ if [ "$after_version" = "$after_cellar" ]; then
42
+ printf "%s/opt/brainlayer" "$prefix"
43
+ else
44
+ printf "%s/opt/brainlayer/%s" "$prefix" "$after_version"
45
+ fi
46
+ ;;
47
+ *)
48
+ printf "%s" "$value"
49
+ ;;
50
+ esac
51
+ }
52
+
23
53
  LAUNCH_DIR="$HOME/Library/LaunchAgents"
24
54
  LOG_DIR="$HOME/Library/Logs"
25
55
  BRAINLAYER_LOG_DIR="$HOME/.local/share/brainlayer/logs"
26
56
  BRAINLAYER_LIB_DIR="$HOME/.local/lib/brainlayer"
27
- BRAINLAYER_DIR="$(cd "$SCRIPT_DIR/../.." && pwd)"
28
- BRAINLAYER_LAUNCHD_DIR="${BRAINLAYER_LAUNCHD_DIR:-$SCRIPT_DIR}"
29
- BRAINLAYER_BIN="${BRAINLAYER_BIN:-$(which brainlayer 2>/dev/null || echo "$HOME/.local/bin/brainlayer")}"
30
- PYTHON_BIN="${PYTHON_BIN:-$(command -v python3)}"
31
- BRAINLAYER_PYTHON="${BRAINLAYER_PYTHON:-$PYTHON_BIN}"
57
+ BRAINLAYER_DIR="$(stable_brainlayer_path "$(cd "$SCRIPT_DIR/../.." && pwd)")"
58
+ BRAINLAYER_LAUNCHD_DIR="$(stable_brainlayer_path "${BRAINLAYER_LAUNCHD_DIR:-$SCRIPT_DIR}")"
59
+ BRAINLAYER_BIN="$(stable_brainlayer_path "${BRAINLAYER_BIN:-$(which brainlayer 2>/dev/null || echo "$HOME/.local/bin/brainlayer")}")"
60
+ PYTHON_BIN="$(stable_brainlayer_path "${PYTHON_BIN:-$(command -v python3)}")"
61
+ BRAINLAYER_PYTHON="$(stable_brainlayer_path "${BRAINLAYER_PYTHON:-$PYTHON_BIN}")"
32
62
  BRAINLAYER_ENV_FILE="${BRAINLAYER_ENV_FILE:-$HOME/.config/brainlayer/brainlayer.env}"
33
63
  BRAINLAYER_ENV_RUN="$BRAINLAYER_LIB_DIR/brainlayer-env-run.sh"
34
64
 
@@ -56,7 +86,7 @@ install_env_runner() {
56
86
  return 1
57
87
  fi
58
88
 
59
- install -m 0755 "$src" "$BRAINLAYER_ENV_RUN"
89
+ install -m 0755 "$src" "$BRAINLAYER_ENV_RUN" || return 1
60
90
  echo "Installed: $BRAINLAYER_ENV_RUN"
61
91
  }
62
92
 
@@ -107,10 +137,33 @@ load_plist() {
107
137
  local name="$1"
108
138
  local dst="$LAUNCH_DIR/com.brainlayer.${name}.plist"
109
139
  local label="com.brainlayer.${name}"
110
- launchctl enable "gui/$UID/$label"
140
+ local enable_error=""
141
+ local retry_enable_after_bootstrap=0
111
142
  launchctl bootout "gui/$UID/$label" 2>/dev/null || true
112
- launchctl bootstrap "gui/$UID" "$dst"
113
- launchctl print "gui/$UID/$label" >/dev/null
143
+ if ! enable_error="$(launchctl enable "gui/$UID/$label" 2>&1)"; then
144
+ if printf "%s" "$enable_error" | grep -qi "could not find service"; then
145
+ echo "WARN: launchctl enable could not find $label before bootstrap; retrying after bootstrap" >&2
146
+ retry_enable_after_bootstrap=1
147
+ else
148
+ printf "%s\n" "$enable_error" >&2
149
+ echo "ERROR: launchctl enable failed for $label" >&2
150
+ return 1
151
+ fi
152
+ fi
153
+ if ! launchctl bootstrap "gui/$UID" "$dst"; then
154
+ echo "ERROR: launchctl bootstrap failed for $label" >&2
155
+ return 1
156
+ fi
157
+ if [ "$retry_enable_after_bootstrap" -ne 0 ]; then
158
+ if ! launchctl enable "gui/$UID/$label"; then
159
+ echo "ERROR: launchctl enable failed for $label after bootstrap" >&2
160
+ return 1
161
+ fi
162
+ fi
163
+ if ! launchctl print "gui/$UID/$label" >/dev/null; then
164
+ echo "ERROR: launchctl print failed for $label after bootstrap" >&2
165
+ return 1
166
+ fi
114
167
  echo " Loaded: com.brainlayer.${name}"
115
168
  }
116
169
 
@@ -131,11 +184,11 @@ install_plist() {
131
184
  return 1
132
185
  fi
133
186
 
134
- install_env_runner
135
- verify_config_file
187
+ install_env_runner || return 1
188
+ verify_config_file || return 1
136
189
 
137
190
  if [ "$name" = "enrichment" ] || [ "$name" = "enrich" ]; then
138
- verify_gemini_env_file
191
+ verify_gemini_env_file || return 1
139
192
  fi
140
193
 
141
194
  # Replace placeholders
@@ -149,12 +202,31 @@ install_plist() {
149
202
  -e "s|__REPO_ROOT__|$BRAINLAYER_DIR|g" \
150
203
  -e "s|__BRAINLAYER_ENV_FILE__|$BRAINLAYER_ENV_FILE|g" \
151
204
  -e "s|__BRAINLAYER_ENV_RUN__|$BRAINLAYER_ENV_RUN|g" \
152
- "$src" > "$dst"
205
+ "$src" > "$dst" || return 1
153
206
 
154
207
  echo "Installed: $dst"
155
208
  echo " Logs: $LOG_DIR/ and $BRAINLAYER_LOG_DIR/"
156
209
 
157
- load_plist "$name"
210
+ if ! load_plist "$name"; then
211
+ return 1
212
+ fi
213
+ }
214
+
215
+ install_many() {
216
+ local failures=0
217
+ local name
218
+
219
+ for name in "$@"; do
220
+ if ! install_plist "$name"; then
221
+ echo "ERROR: failed to install/load com.brainlayer.${name}" >&2
222
+ failures=$((failures + 1))
223
+ fi
224
+ done
225
+
226
+ if [ "$failures" -ne 0 ]; then
227
+ echo "ERROR: failed to install/load $failures launchd service(s)" >&2
228
+ return 1
229
+ fi
158
230
  }
159
231
 
160
232
  install_backup_script() {
@@ -167,11 +239,11 @@ install_backup_script() {
167
239
  return 1
168
240
  fi
169
241
 
170
- escaped_brainlayer_dir="$(printf '%s' "$BRAINLAYER_DIR" | sed 's/[\\&|]/\\&/g')"
242
+ escaped_brainlayer_dir="$(printf '%s' "$BRAINLAYER_DIR" | sed 's/[\\&|]/\\&/g')" || return 1
171
243
  sed \
172
244
  -e "s|__BRAINLAYER_DIR_VALUE__|$escaped_brainlayer_dir|g" \
173
- "$src" > "$dst"
174
- chmod 755 "$dst"
245
+ "$src" > "$dst" || return 1
246
+ chmod 755 "$dst" || return 1
175
247
  echo "Installed: $dst"
176
248
  }
177
249
 
@@ -185,11 +257,11 @@ install_jsonl_backup_script() {
185
257
  return 1
186
258
  fi
187
259
 
188
- escaped_brainlayer_dir="$(printf '%s' "$BRAINLAYER_DIR" | sed 's/[\\&|]/\\&/g')"
260
+ escaped_brainlayer_dir="$(printf '%s' "$BRAINLAYER_DIR" | sed 's/[\\&|]/\\&/g')" || return 1
189
261
  sed \
190
262
  -e "s|__BRAINLAYER_DIR_VALUE__|$escaped_brainlayer_dir|g" \
191
- "$src" > "$dst"
192
- chmod 755 "$dst"
263
+ "$src" > "$dst" || return 1
264
+ chmod 755 "$dst" || return 1
193
265
  echo "Installed: $dst"
194
266
  }
195
267
 
@@ -249,32 +321,52 @@ case "${1:-all}" in
249
321
  install_plist maintenance-weekly
250
322
  ;;
251
323
  maintenance)
252
- install_plist maintenance-nightly
253
- install_plist maintenance-weekly
324
+ install_many maintenance-nightly maintenance-weekly
254
325
  ;;
255
326
  health-check)
256
327
  install_plist health-check
257
328
  ;;
329
+ hotlane|hotlane-brainbar)
330
+ verify_gemini_env_file
331
+ install_plist hotlane-brainbar
332
+ ;;
258
333
  all)
259
334
  install_env_runner
260
335
  verify_config_file
261
336
  verify_gemini_env_file
262
- install_plist index
263
- install_plist drain
264
- install_plist watch
265
- install_plist enrichment
266
- install_plist decay
267
- install_plist wal-checkpoint
268
- install_plist repair-fts
269
- install_backup_script
270
- install_plist backup-daily
271
- install_jsonl_backup_script
272
- install_plist jsonl-backup
273
- install_plist maintenance-nightly
274
- install_plist maintenance-weekly
275
- install_plist health-check
276
- # Remove old enrich plist if present
277
- remove_plist enrich 2>/dev/null || true
337
+ failures=0
338
+ enrichment_ok=0
339
+ if ! install_many index drain watch hotlane-brainbar; then
340
+ failures=1
341
+ fi
342
+ if install_plist enrichment; then
343
+ enrichment_ok=1
344
+ else
345
+ failures=1
346
+ fi
347
+ if ! install_many decay wal-checkpoint repair-fts; then
348
+ failures=1
349
+ fi
350
+ if ! install_backup_script; then
351
+ failures=1
352
+ elif ! install_many backup-daily; then
353
+ failures=1
354
+ fi
355
+ if ! install_jsonl_backup_script; then
356
+ failures=1
357
+ elif ! install_many jsonl-backup; then
358
+ failures=1
359
+ fi
360
+ if ! install_many maintenance-nightly maintenance-weekly health-check; then
361
+ failures=1
362
+ fi
363
+ # Remove old enrich plist only after the replacement enrichment service loads.
364
+ if [ "$enrichment_ok" -eq 1 ]; then
365
+ remove_plist enrich 2>/dev/null || true
366
+ fi
367
+ if [ "$failures" -ne 0 ]; then
368
+ exit 1
369
+ fi
278
370
  ;;
279
371
  remove)
280
372
  remove_plist index
@@ -290,11 +382,12 @@ case "${1:-all}" in
290
382
  remove_plist maintenance-nightly 2>/dev/null || true
291
383
  remove_plist maintenance-weekly 2>/dev/null || true
292
384
  remove_plist health-check 2>/dev/null || true
385
+ remove_plist hotlane-brainbar 2>/dev/null || true
293
386
  rm -f "$BRAINLAYER_LIB_DIR/backup-daily.sh"
294
387
  rm -f "$BRAINLAYER_LIB_DIR/jsonl-backup.sh"
295
388
  ;;
296
389
  *)
297
- echo "Usage: $0 [index|watch|enrich|enrichment|decay|drain|repair-fts|load [name]|unload [name]|checkpoint|backup|jsonl-backup|maintenance|maintenance-nightly|maintenance-weekly|health-check|all|remove]"
390
+ 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|all|remove]"
298
391
  exit 1
299
392
  ;;
300
393
  esac
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.etanhey/brainlayer",
4
4
  "title": "BrainLayer",
5
5
  "description": "Persistent memory for AI agents — local-first semantic search, knowledge graph, and 12 MCP tools with ToolAnnotations. One SQLite file, no cloud, no API keys.",
6
- "version": "1.3.0",
6
+ "version": "1.4.1",
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.3.0",
17
+ "version": "1.4.1",
18
18
  "runtimeHint": "pipx",
19
19
  "transport": {
20
20
  "type": "stdio"
@@ -1,3 +1,3 @@
1
1
  """BrainLayer (זיכרון) - Local knowledge pipeline for Claude Code conversations."""
2
2
 
3
- __version__ = "1.3.0"
3
+ __version__ = "1.4.1"
@@ -0,0 +1,115 @@
1
+ """Loud persistent alarms for never-silent degradation paths."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ import logging
7
+ import sys
8
+ import threading
9
+ from typing import Any, NoReturn
10
+
11
+ logger = logging.getLogger(__name__)
12
+
13
+ ALARM_DATASET = "brainlayer-alarms"
14
+ _TELEMETRY_JOIN_TIMEOUT_S = 0.05
15
+
16
+
17
+ class BrainLayerAlarm(BaseException):
18
+ """Alarm that bypasses broad ``except Exception`` handlers."""
19
+
20
+ def __init__(
21
+ self,
22
+ code: str,
23
+ message: str,
24
+ context: dict[str, Any] | None = None,
25
+ *,
26
+ severity: str = "fatal",
27
+ exit_code: int = 1,
28
+ ) -> None:
29
+ super().__init__(f"{code}: {message}")
30
+ self.code = code
31
+ self.message = message
32
+ self.context = dict(context or {})
33
+ self.severity = severity
34
+ self.exit_code = exit_code
35
+
36
+ @property
37
+ def details(self) -> dict[str, Any]:
38
+ return self.context
39
+
40
+ def to_event(self) -> dict[str, Any]:
41
+ return {
42
+ "_type": "alarm",
43
+ "code": self.code,
44
+ "severity": self.severity,
45
+ "message": self.message,
46
+ "context": self.context,
47
+ "exit_code": self.exit_code,
48
+ }
49
+
50
+ def human_message(self) -> str:
51
+ context = ""
52
+ if self.context:
53
+ context = f" context={json.dumps(self.context, sort_keys=True, default=str)}"
54
+ return f"BRAINLAYER_ALARM {self.code}: {self.message}{context}"
55
+
56
+
57
+ def build_alarm(
58
+ code: str,
59
+ message: str,
60
+ context: dict[str, Any] | None = None,
61
+ *,
62
+ severity: str = "fatal",
63
+ exit_code: int = 1,
64
+ ) -> BrainLayerAlarm:
65
+ return BrainLayerAlarm(code, message, context, severity=severity, exit_code=exit_code)
66
+
67
+
68
+ def emit_alarm(alarm: BrainLayerAlarm) -> bool:
69
+ """Emit local loud alarm output and best-effort non-blocking telemetry.
70
+
71
+ stderr/logging are the guaranteed fatal alarm paths. Axiom telemetry stays
72
+ off the caller thread so a stalled network path cannot delay the alarm raise.
73
+ """
74
+ human_message = alarm.human_message()
75
+ logger.critical(human_message)
76
+ try:
77
+ print(human_message, file=sys.stderr, flush=True)
78
+ except Exception as exc:
79
+ logger.debug("Alarm stderr emit failed: %s", exc)
80
+
81
+ result: dict[str, bool] = {"ok": False}
82
+ event = alarm.to_event()
83
+
84
+ def emit_telemetry() -> None:
85
+ try:
86
+ from .telemetry import emit
87
+
88
+ result["ok"] = emit(ALARM_DATASET, event)
89
+ except Exception as exc:
90
+ logger.debug("Alarm telemetry emit failed: %s", exc)
91
+
92
+ try:
93
+ thread = threading.Thread(target=emit_telemetry, name=f"brainlayer-alarm-{alarm.code}", daemon=True)
94
+ thread.start()
95
+ thread.join(_TELEMETRY_JOIN_TIMEOUT_S)
96
+ if thread.is_alive():
97
+ logger.debug("Alarm telemetry emit still running in background: %s", alarm.code)
98
+ return True
99
+ return result["ok"]
100
+ except Exception as exc:
101
+ logger.debug("Alarm telemetry dispatch failed: %s", exc)
102
+ return False
103
+
104
+
105
+ def raise_alarm(
106
+ code: str,
107
+ message: str,
108
+ context: dict[str, Any] | None = None,
109
+ *,
110
+ severity: str = "fatal",
111
+ exit_code: int = 1,
112
+ ) -> NoReturn:
113
+ alarm = build_alarm(code, message, context, severity=severity, exit_code=exit_code)
114
+ emit_alarm(alarm)
115
+ raise alarm