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