brainlayer 1.4.0__tar.gz → 1.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {brainlayer-1.4.0 → brainlayer-1.4.2}/.gitignore +3 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/PKG-INFO +1 -1
- {brainlayer-1.4.0 → brainlayer-1.4.2}/pyproject.toml +11 -1
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.hotlane-brainbar.plist +1 -1
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/install.sh +125 -39
- {brainlayer-1.4.0 → brainlayer-1.4.2}/server.json +2 -2
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/__init__.py +1 -1
- brainlayer-1.4.2/src/brainlayer/alarm.py +115 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/cli/__init__.py +713 -88
- brainlayer-1.4.2/src/brainlayer/data/agents_registry.yaml +146 -0
- brainlayer-1.4.2/src/brainlayer/data/sandbox_seeds/skill-eval-baseline.json +29 -0
- brainlayer-1.4.2/src/brainlayer/deploy_drift.py +291 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/doctor.py +213 -63
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/drain.py +157 -6
- brainlayer-1.4.2/src/brainlayer/drain_liveness.py +169 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/enrichment_controller.py +132 -12
- brainlayer-1.4.2/src/brainlayer/fallback_replay.py +581 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/health_check.py +12 -24
- brainlayer-1.4.2/src/brainlayer/launchd_primitive.py +238 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/maintenance.py +29 -3
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/mcp/__init__.py +4 -1
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/mcp/_format.py +3 -3
- brainlayer-1.4.2/src/brainlayer/mcp_stdio_bridge.py +486 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/reembed_backfill.py +1 -1
- brainlayer-1.4.2/src/brainlayer/sandbox_db.py +363 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/vector_store.py +14 -1
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/watcher.py +95 -16
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/watcher_bridge.py +30 -1
- brainlayer-1.4.0/.claude-plugin/marketplace.json +0 -13
- brainlayer-1.4.0/.claude.local.md.example +0 -21
- brainlayer-1.4.0/.gitattributes +0 -2
- brainlayer-1.4.0/.githooks/pre-push +0 -38
- brainlayer-1.4.0/.github/workflows/ci.yml +0 -119
- brainlayer-1.4.0/.github/workflows/docs.yml +0 -32
- brainlayer-1.4.0/.github/workflows/publish.yml +0 -20
- brainlayer-1.4.0/.mcp.json.example +0 -19
- brainlayer-1.4.0/AGENTS.md +0 -43
- brainlayer-1.4.0/BUGBOT_ACTION_ITEMS.md +0 -377
- brainlayer-1.4.0/BUGBOT_CRITICAL_ISSUES.md +0 -226
- brainlayer-1.4.0/BUGBOT_FINAL_STATUS.md +0 -155
- brainlayer-1.4.0/BUGBOT_PR_COMMENT_HELPER_FAST_PROFILE.md +0 -161
- brainlayer-1.4.0/BUGBOT_REREVIEW_P2_KG_CLEANUP.md +0 -478
- brainlayer-1.4.0/BUGBOT_REVIEW.md +0 -477
- brainlayer-1.4.0/BUGBOT_REVIEW_352.md +0 -256
- brainlayer-1.4.0/BUGBOT_REVIEW_BRAINBAR_HELPER_FAST_PROFILE.md +0 -596
- brainlayer-1.4.0/BUGBOT_REVIEW_DEFLAKE_AGENT_PROFILES.md +0 -194
- brainlayer-1.4.0/BUGBOT_REVIEW_FINDINGS.md +0 -191
- brainlayer-1.4.0/BUGBOT_REVIEW_FIX_PYTHON_CI.md +0 -279
- brainlayer-1.4.0/BUGBOT_REVIEW_FTS_RECALL.md +0 -273
- brainlayer-1.4.0/BUGBOT_REVIEW_HOOKS_FAIL_LOUD.md +0 -240
- brainlayer-1.4.0/BUGBOT_REVIEW_P2_KG_CLEANUP.md +0 -274
- brainlayer-1.4.0/BUGBOT_REVIEW_P6B.md +0 -243
- brainlayer-1.4.0/BUGBOT_REVIEW_QUICK_CAPTURE.md +0 -271
- brainlayer-1.4.0/BUGBOT_REVIEW_QUICK_CAPTURE_UX_FIX.md +0 -442
- brainlayer-1.4.0/BUGBOT_REVIEW_RESTORE_CAPTURE_ACTIONS.md +0 -797
- brainlayer-1.4.0/BUGBOT_REVIEW_SUMMARY.md +0 -146
- brainlayer-1.4.0/BUGBOT_SUMMARY.md +0 -76
- brainlayer-1.4.0/BUGBOT_SUMMARY_HELPER_FAST_PROFILE.md +0 -233
- brainlayer-1.4.0/CHANGELOG.md +0 -57
- brainlayer-1.4.0/CLAUDE.md +0 -142
- brainlayer-1.4.0/CODEOWNERS +0 -1
- brainlayer-1.4.0/CONTRIBUTING.md +0 -116
- brainlayer-1.4.0/SLICE-B-BRIEF.md +0 -29
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-after-productionprompt-hybrid-taxonomy-combined.jsonl +0 -50
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-after-productionprompt-hybrid-taxonomy-retry1.jsonl +0 -5
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-after-productionprompt-hybrid-taxonomy.jsonl +0 -50
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-before-oldprompt-validation-off.jsonl +0 -50
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-combined-summary.json +0 -118
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-combined.jsonl +0 -50
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-retry1-summary.json +0 -109
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-retry1.jsonl +0 -1
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-summary.json +0 -109
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash.jsonl +0 -50
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/recommended-36k-batch-backfill-plan.md +0 -70
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/selection-after-retry1.jsonl +0 -5
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/selection-cloudsafe-pilot50.jsonl +0 -50
- brainlayer-1.4.0/artifacts/flex-hybrid-taxonomy-2026-06-16/selection-judge-retry1.jsonl +0 -1
- brainlayer-1.4.0/brain-bar/.gitignore +0 -4
- brainlayer-1.4.0/brain-bar/Package.resolved +0 -15
- brainlayer-1.4.0/brain-bar/Package.swift +0 -63
- brainlayer-1.4.0/brain-bar/Scripts/brainbar_stdio_adapter.py +0 -94
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarApp.swift +0 -299
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarAppSupport.swift +0 -206
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarCommandBar.swift +0 -491
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarDashboardPanelController.swift +0 -158
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarInstanceLock.swift +0 -66
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarProcessControl.swift +0 -33
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarRuntime.swift +0 -64
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarServer.swift +0 -1071
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarSettingsActions.swift +0 -72
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarSettingsView.swift +0 -399
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarStatusPopoverController.swift +0 -140
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarURLAction.swift +0 -20
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarWindowRootView.swift +0 -2789
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBarWindowState.swift +0 -448
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBusClient.swift +0 -170
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainBusEvent.swift +0 -203
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainDatabase.swift +0 -5644
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/BrainLayerConfig.swift +0 -480
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Dashboard/AgentActivityMonitor.swift +0 -297
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Dashboard/BrainBarDashboardFixture.swift +0 -99
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Dashboard/BrainBarLivePulse.swift +0 -27
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Dashboard/DaemonHealthMonitor.swift +0 -82
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Dashboard/DashboardMetricFormatter.swift +0 -126
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Dashboard/PipelineState.swift +0 -684
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Dashboard/SparklineRenderer.swift +0 -1259
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Dashboard/StatsCollector.swift +0 -602
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Dashboard/StatusPopoverView.swift +0 -620
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/DegradationState.swift +0 -28
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/DesignTokens.swift +0 -184
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Formatters.swift +0 -411
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Formatting/TextFormatter.swift +0 -288
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/HotkeyManager.swift +0 -350
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/HotkeyRouteStatus.swift +0 -25
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/HybridSearchHelperClient.swift +0 -597
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/InjectionContinuation.swift +0 -50
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/InjectionEvent.swift +0 -370
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/InjectionFeedView.swift +0 -956
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/InjectionPresentation.swift +0 -467
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/InjectionStore.swift +0 -308
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/InjectionSummaryView.swift +0 -37
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/EntityCache.swift +0 -105
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGAtlasLayout.swift +0 -148
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGAtlasMode.swift +0 -85
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGAtlasPresentation.swift +0 -166
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGCanvasView.swift +0 -494
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGEdge.swift +0 -9
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGEdgeView.swift +0 -37
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGNode.swift +0 -55
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGNodeView.swift +0 -51
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGRelationPresentation.swift +0 -40
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGSidebarView.swift +0 -556
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGSimulationController.swift +0 -67
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGViewModel.swift +0 -639
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/KnowledgeGraph/ScrollWheelZoomView.swift +0 -35
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/MCPFraming.swift +0 -165
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/MCPRouter.swift +0 -1415
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Models/DigestResult.swift +0 -60
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Models/EntityCard.swift +0 -150
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Models/KGSearchResult.swift +0 -20
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Models/KGTemporalDate.swift +0 -50
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Models/SearchResult.swift +0 -161
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Models/StatsResult.swift +0 -19
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/QuickCaptureController.swift +0 -134
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/QuickCapturePanel.swift +0 -1178
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/QuickCapturePanelState.swift +0 -37
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/SearchFilters.swift +0 -36
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/SearchPanelController.swift +0 -251
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/SearchProfileLogger.swift +0 -65
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/SearchQueryActor.swift +0 -57
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/SearchViewModel.swift +0 -83
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Views/Components/ChunkConversationSheet.swift +0 -150
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Views/Components/SearchResultCard.swift +0 -98
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Views/Components/SearchResultsList.swift +0 -56
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Views/Components/WrappingPillLayout.swift +0 -96
- brainlayer-1.4.0/brain-bar/Sources/BrainBar/Views/ExpirationPill.swift +0 -31
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarCommandBar.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarDaemonMain.swift +0 -28
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarDashboardPanelController.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarInstanceLock.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarProcessControl.swift +0 -33
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarRuntime.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarServer.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarSettingsActions.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarStatusPopoverController.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarURLAction.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarWindowRootView.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBarWindowState.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBusClient.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainBusEvent.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/BrainDatabase.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Dashboard/AgentActivityMonitor.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Dashboard/BrainBarLivePulse.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Dashboard/DaemonHealthMonitor.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Dashboard/DashboardMetricFormatter.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Dashboard/PipelineState.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Dashboard/SparklineRenderer.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Dashboard/StatsCollector.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Dashboard/StatusPopoverView.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/DegradationState.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/DesignTokens.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Formatters.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Formatting/TextFormatter.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/HotkeyManager.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/HotkeyRouteStatus.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/HybridSearchHelperClient.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/InjectionContinuation.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/InjectionEvent.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/InjectionFeedView.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/InjectionPresentation.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/InjectionStore.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/InjectionSummaryView.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/EntityCache.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGAtlasLayout.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGAtlasMode.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGAtlasPresentation.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGCanvasView.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGEdge.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGEdgeView.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGNode.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGNodeView.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGRelationPresentation.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGSidebarView.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGSimulationController.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGViewModel.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/ScrollWheelZoomView.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/MCPFraming.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/MCPRouter.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Models/DigestResult.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Models/EntityCard.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Models/KGSearchResult.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Models/KGTemporalDate.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Models/SearchResult.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Models/StatsResult.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/QuickCaptureController.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/QuickCapturePanel.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/QuickCapturePanelState.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/SearchFilters.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/SearchPanelController.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/SearchProfileLogger.swift +0 -65
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/SearchQueryActor.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/SearchViewModel.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Views/Components/ChunkConversationSheet.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Views/Components/SearchResultCard.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Views/Components/SearchResultsList.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Views/Components/WrappingPillLayout.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarDaemon/Views/ExpirationPill.swift +0 -1
- brainlayer-1.4.0/brain-bar/Sources/BrainBarLifecycle/BrainBarLifecycleWatchdog.swift +0 -256
- brainlayer-1.4.0/brain-bar/Sources/BrainBarLifecycle/BrainBarRestartHandoff.swift +0 -50
- brainlayer-1.4.0/brain-bar/Tests/BrainBarDaemonTests/BrainBarDaemonLaunchModeTests.swift +0 -118
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/AgentActivityMonitorTests.swift +0 -197
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarDashboardPanelControllerTests.swift +0 -106
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarDashboardSnapshotTests.swift +0 -169
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarReliabilityTests.swift +0 -377
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarRuntimeWiringTests.swift +0 -86
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarSettingsSnapshotTests.swift +0 -91
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarSettingsViewModelTests.swift +0 -49
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarStartupRecoveryTests.swift +0 -192
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarStatusPopoverControllerTests.swift +0 -77
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarUXLogicTests.swift +0 -425
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarWindowRootViewVectorDetailLayoutTests.swift +0 -46
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBarWindowStateTests.swift +0 -389
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainBusEventHubTests.swift +0 -93
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainDatabaseWindowedBucketsTests.swift +0 -184
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/BrainLayerConfigTests.swift +0 -131
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/ChunkConversationTests.swift +0 -100
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/DashboardRedesignSnapshotTests.swift +0 -147
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/DashboardTests.swift +0 -2092
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/DatabaseTests.swift +0 -2039
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/DegradationStateTests.swift +0 -336
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/DesignTokensTests.swift +0 -75
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/FormattersTests.swift +0 -374
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/HybridSearchHelperClientTests.swift +0 -371
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/InjectionContinuationTests.swift +0 -92
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/InjectionConversationSelectionTests.swift +0 -26
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/InjectionEventTests.swift +0 -322
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/InjectionPresentationTests.swift +0 -574
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/InjectionStoreTests.swift +0 -325
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/KGAtlasLayoutTests.swift +0 -82
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/KGAtlasPresentationTests.swift +0 -265
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/KGBadgeConsistencyTests.swift +0 -42
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/KGExpirationRenderingTests.swift +0 -144
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/KGSidebarSynopsisTests.swift +0 -50
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/KnowledgeGraphTests.swift +0 -1843
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/MCPFramingTests.swift +0 -145
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/MCPRouterTests.swift +0 -2533
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/PopoverTabTests.swift +0 -214
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/QuickCaptureConversationTests.swift +0 -60
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/QuickCapturePanelTests.swift +0 -833
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/QuickCaptureTests.swift +0 -415
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/RENDER_VERIFICATION.md +0 -78
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/RecordingHybridSearchClient.swift +0 -68
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/SearchFiltersTests.swift +0 -42
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/SearchPanelControllerTests.swift +0 -38
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/SearchQueryActorTests.swift +0 -121
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/SearchResultPresentationTests.swift +0 -38
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/SearchViewModelTests.swift +0 -130
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/SocketIntegrationTests.swift +0 -1110
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/SparklineRendererIconTests.swift +0 -44
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/SparklineSnapshotTests.swift +0 -170
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/StabilityFixTests.swift +0 -157
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/StatsCollectorTests.swift +0 -102
- brainlayer-1.4.0/brain-bar/Tests/BrainBarTests/TextFormatterParityTests.swift +0 -309
- brainlayer-1.4.0/brain-bar/build-app.sh +0 -679
- brainlayer-1.4.0/brain-bar/bundle/Info.plist +0 -37
- brainlayer-1.4.0/brain-bar/bundle/com.brainlayer.brainbar-daemon.plist +0 -24
- brainlayer-1.4.0/brain-bar/bundle/com.brainlayer.brainbar.plist +0 -38
- brainlayer-1.4.0/brain-bar/karabiner/brainbar-f4.json +0 -73
- brainlayer-1.4.0/bugbot-review-notes.md +0 -159
- brainlayer-1.4.0/bugbot_pr_comment.md +0 -76
- brainlayer-1.4.0/contracts/engine-ui-contract.md +0 -75
- brainlayer-1.4.0/contracts/entity-types.yaml +0 -162
- brainlayer-1.4.0/docs/abcde-experiment-isolation.md +0 -28
- brainlayer-1.4.0/docs/adr/0000-template.md +0 -29
- brainlayer-1.4.0/docs/adr/0001-sqlite-vec-over-dedicated-vector-db.md +0 -59
- brainlayer-1.4.0/docs/adr/0002-reciprocal-rank-fusion-for-hybrid-search.md +0 -68
- brainlayer-1.4.0/docs/arbitration.md +0 -19
- brainlayer-1.4.0/docs/architecture/MODULE-MAP.md +0 -47
- brainlayer-1.4.0/docs/architecture.md +0 -140
- brainlayer-1.4.0/docs/archive/chat-based-analysis-design.md +0 -149
- brainlayer-1.4.0/docs/archive/chat-tags-example.yaml +0 -14
- brainlayer-1.4.0/docs/archive/communication-analysis.md +0 -413
- brainlayer-1.4.0/docs/archive/hierarchical-clustering-deep-research.md +0 -508
- brainlayer-1.4.0/docs/archive/hierarchical-clustering-research.txt +0 -181
- brainlayer-1.4.0/docs/archive/research-chat-based-analysis.md +0 -146
- brainlayer-1.4.0/docs/archive/research-prompt-embeddings.md +0 -44
- brainlayer-1.4.0/docs/assets/logo.svg +0 -75
- brainlayer-1.4.0/docs/backup-strategy.md +0 -132
- brainlayer-1.4.0/docs/brew-layer-conformance.md +0 -66
- brainlayer-1.4.0/docs/configuration.md +0 -166
- brainlayer-1.4.0/docs/contributing.md +0 -10
- brainlayer-1.4.0/docs/data-locations.md +0 -126
- brainlayer-1.4.0/docs/embedding-setup.md +0 -22
- brainlayer-1.4.0/docs/enrichment-provider-agnostic-design.md +0 -52
- brainlayer-1.4.0/docs/enrichment-runbook.md +0 -177
- brainlayer-1.4.0/docs/enrichment.md +0 -102
- brainlayer-1.4.0/docs/index.md +0 -65
- brainlayer-1.4.0/docs/kg-spec.md +0 -58
- brainlayer-1.4.0/docs/local-models-guide.md +0 -160
- brainlayer-1.4.0/docs/mcp-config.md +0 -40
- brainlayer-1.4.0/docs/mcp-tools.md +0 -165
- brainlayer-1.4.0/docs/operations/brainlayer-health-check.md +0 -38
- brainlayer-1.4.0/docs/orqi-batch-contract.md +0 -73
- brainlayer-1.4.0/docs/plans/2026-02-25-phase-3-brain-digest.md +0 -51
- brainlayer-1.4.0/docs/plans/2026-02-25-phase-6-sentiment.md +0 -414
- brainlayer-1.4.0/docs/plans/2026-03-30-enrichment-launchagent.md +0 -85
- brainlayer-1.4.0/docs/plans/2026-03-31-phase2-search-window-design.md +0 -128
- brainlayer-1.4.0/docs/plans/2026-03-31-phase2-search-window.md +0 -221
- brainlayer-1.4.0/docs/plans/2026-04-05-p1a-fts5-health.md +0 -129
- brainlayer-1.4.0/docs/plans/2026-04-05-p1b-eval-framework.md +0 -135
- brainlayer-1.4.0/docs/plans/2026-04-18-brainbar-dashboard-flow-collab.md +0 -38
- brainlayer-1.4.0/docs/plans/2026-04-18-brainbar-dashboard-flow.md +0 -206
- brainlayer-1.4.0/docs/plans/2026-04-18-brainbar-injections-graph-hybrid.md +0 -132
- brainlayer-1.4.0/docs/plans/2026-06-01-db-shrink-fts5-dedup.md +0 -44
- brainlayer-1.4.0/docs/plans/2026-06-02-phoenix-eval-integration.md +0 -172
- brainlayer-1.4.0/docs/plans/2026-06-14-reembed-unvectored-backlog.md +0 -61
- brainlayer-1.4.0/docs/quickstart.md +0 -129
- brainlayer-1.4.0/docs/research/launch-readiness-audit.md +0 -232
- brainlayer-1.4.0/docs/research/session-enrichment/README.md +0 -43
- brainlayer-1.4.0/docs/research/session-enrichment/auto-extracting-learnings.md +0 -98
- brainlayer-1.4.0/docs/research/session-enrichment/brainstore-write-tools.md +0 -33
- brainlayer-1.4.0/docs/research/session-enrichment/cli-ux-patterns.md +0 -261
- brainlayer-1.4.0/docs/research/session-enrichment/conversation-reconstruction.md +0 -80
- brainlayer-1.4.0/docs/research/session-enrichment/prompts.md +0 -197
- brainlayer-1.4.0/docs/research/session-enrichment/session-enrichment-architecture.md +0 -277
- brainlayer-1.4.0/docs/roadmap.md +0 -32
- brainlayer-1.4.0/docs/showcase-claude-collab-discovery.md +0 -102
- brainlayer-1.4.0/docs/stylesheets/extra.css +0 -299
- brainlayer-1.4.0/extensions/brainlayer-plugin/.claude-plugin/plugin.json +0 -9
- brainlayer-1.4.0/extensions/brainlayer-plugin/.gitignore +0 -1
- brainlayer-1.4.0/extensions/brainlayer-plugin/.mcp.json +0 -11
- brainlayer-1.4.0/extensions/brainlayer-plugin/hooks/hooks.json +0 -53
- brainlayer-1.4.0/extensions/brainlayer-plugin/hooks/session-start.sh +0 -4
- brainlayer-1.4.0/extensions/brainlayer-plugin/hooks/session-stop.sh +0 -4
- brainlayer-1.4.0/extensions/brainlayer-plugin/hooks/tool-error.sh +0 -4
- brainlayer-1.4.0/extensions/brainlayer-plugin/hooks/tool-observe.sh +0 -4
- brainlayer-1.4.0/extensions/brainlayer-plugin/scripts/brainbar-hook.py +0 -264
- brainlayer-1.4.0/extensions/brainlayer-plugin/scripts/queue-flusher.py +0 -97
- brainlayer-1.4.0/extensions/brainlayer-plugin/skills/memory/SKILL.md +0 -14
- brainlayer-1.4.0/findings.md +0 -253
- brainlayer-1.4.0/greptile.json +0 -33
- brainlayer-1.4.0/hooks/brainbar-postcompact.py +0 -75
- brainlayer-1.4.0/hooks/brainbar-prompt-capture.py +0 -37
- brainlayer-1.4.0/hooks/brainbar-stop-index.py +0 -145
- brainlayer-1.4.0/hooks/brainlayer-prompt-search.py +0 -1361
- brainlayer-1.4.0/hooks/brainlayer-session-start.py +0 -336
- brainlayer-1.4.0/hooks/dedup_coordination.py +0 -186
- brainlayer-1.4.0/hooks/post-commit.py +0 -82
- brainlayer-1.4.0/hooks/session-cleanup.py +0 -174
- brainlayer-1.4.0/landing/index.html +0 -1611
- brainlayer-1.4.0/landing/logos/brainlayer.svg +0 -75
- brainlayer-1.4.0/landing/logos/claude.svg +0 -1
- brainlayer-1.4.0/landing/logos/cursor.svg +0 -12
- brainlayer-1.4.0/landing/logos/gemini.svg +0 -1
- brainlayer-1.4.0/landing/logos/kiro.svg +0 -11
- brainlayer-1.4.0/landing/logos/openai.svg +0 -1
- brainlayer-1.4.0/landing/logos/vscode.svg +0 -1
- brainlayer-1.4.0/landing/logos/zed.svg +0 -1
- brainlayer-1.4.0/launchd/com.brainlayer.jsonl-backup.plist +0 -50
- brainlayer-1.4.0/launchd/com.brainlayer.watch.plist +0 -59
- brainlayer-1.4.0/launchd/install-newsyslog.sh +0 -65
- brainlayer-1.4.0/launchd/newsyslog.d/README.md +0 -31
- brainlayer-1.4.0/launchd/newsyslog.d/brainlayer.conf +0 -16
- brainlayer-1.4.0/macroscope.md +0 -31
- brainlayer-1.4.0/migrations/002_decay_columns.sql +0 -9
- brainlayer-1.4.0/migrations/003_raw_entities_json.sql +0 -1
- brainlayer-1.4.0/migrations/004_enrich_status.sql +0 -22
- brainlayer-1.4.0/mkdocs.yml +0 -66
- brainlayer-1.4.0/overrides/main.html +0 -30
- brainlayer-1.4.0/prd-json/index.json +0 -13
- brainlayer-1.4.0/prd-json/stories/BUG-005.json +0 -31
- brainlayer-1.4.0/prd-json/stories/MP-003.json +0 -35
- brainlayer-1.4.0/prd-json/stories/MP-004.json +0 -43
- brainlayer-1.4.0/prd-json/stories/US-001.json +0 -35
- brainlayer-1.4.0/prd-json/stories/US-002.json +0 -39
- brainlayer-1.4.0/progress.txt +0 -57
- brainlayer-1.4.0/results/abcde_n893_summary.json +0 -60
- brainlayer-1.4.0/results/abcde_n893_summary.md +0 -33
- brainlayer-1.4.0/scripts/__init__.py +0 -1
- brainlayer-1.4.0/scripts/abcde_report.py +0 -301
- brainlayer-1.4.0/scripts/backfill-context.py +0 -103
- brainlayer-1.4.0/scripts/backfill-created-at.py +0 -314
- brainlayer-1.4.0/scripts/backfill-metadata.py +0 -143
- brainlayer-1.4.0/scripts/backfill_chunk_origin_provenance.py +0 -62
- brainlayer-1.4.0/scripts/backfill_content_class.py +0 -225
- brainlayer-1.4.0/scripts/backfill_data/.gitignore +0 -3
- brainlayer-1.4.0/scripts/backfill_decay.py +0 -21
- brainlayer-1.4.0/scripts/backfill_dedupe.py +0 -7
- brainlayer-1.4.0/scripts/backfill_kg_promotion.py +0 -15
- brainlayer-1.4.0/scripts/backfill_orchestrate.sh +0 -88
- brainlayer-1.4.0/scripts/batch_submit_paced.py +0 -106
- brainlayer-1.4.0/scripts/braintrust_ingest.py +0 -354
- brainlayer-1.4.0/scripts/build_qrels.py +0 -150
- brainlayer-1.4.0/scripts/calibrate_importance.py +0 -70
- brainlayer-1.4.0/scripts/classify-all.py +0 -142
- brainlayer-1.4.0/scripts/cleanup-profanity-chunks.py +0 -196
- brainlayer-1.4.0/scripts/cleanup_stale_mcp.py +0 -179
- brainlayer-1.4.0/scripts/cloud_backfill.py +0 -22
- brainlayer-1.4.0/scripts/cloud_stream.py +0 -412
- brainlayer-1.4.0/scripts/db_shrink_eval.py +0 -186
- brainlayer-1.4.0/scripts/db_shrink_migrate.py +0 -7
- brainlayer-1.4.0/scripts/dedup_entities.py +0 -223
- brainlayer-1.4.0/scripts/diarize_episodes.py +0 -408
- brainlayer-1.4.0/scripts/drain_daemon.py +0 -17
- brainlayer-1.4.0/scripts/enrich_recent.py +0 -189
- brainlayer-1.4.0/scripts/enrichment_backfill.py +0 -185
- brainlayer-1.4.0/scripts/enrichment_llm_judge.py +0 -14
- brainlayer-1.4.0/scripts/enrichment_pilot.py +0 -420
- brainlayer-1.4.0/scripts/enrichment_quality_benchmark.py +0 -14
- brainlayer-1.4.0/scripts/export_lexical_defense_snapshot.py +0 -58
- brainlayer-1.4.0/scripts/generate-fixtures.sh +0 -193
- brainlayer-1.4.0/scripts/generate_abcde_variants.py +0 -195
- brainlayer-1.4.0/scripts/generate_style_card.py +0 -128
- brainlayer-1.4.0/scripts/hot_currentness_benchmark.py +0 -619
- brainlayer-1.4.0/scripts/hotlane_brainbar_daemon.py +0 -260
- brainlayer-1.4.0/scripts/index_youtube.py +0 -810
- brainlayer-1.4.0/scripts/install-karabiner-rule.sh +0 -65
- brainlayer-1.4.0/scripts/kg_backfill.py +0 -88
- brainlayer-1.4.0/scripts/kg_cleanup.py +0 -327
- brainlayer-1.4.0/scripts/kg_cleanup_apply.py +0 -273
- brainlayer-1.4.0/scripts/kg_cleanup_dryrun.py +0 -246
- brainlayer-1.4.0/scripts/kg_dedup.py +0 -170
- brainlayer-1.4.0/scripts/kg_entity_dedup.py +0 -1010
- brainlayer-1.4.0/scripts/kg_entity_judge.py +0 -78
- brainlayer-1.4.0/scripts/kg_flag_batch.py +0 -160
- brainlayer-1.4.0/scripts/kg_p2_crosstype_cleanup.py +0 -565
- brainlayer-1.4.0/scripts/kg_p2_safe_cleanup.py +0 -347
- brainlayer-1.4.0/scripts/kg_rebuild.py +0 -363
- brainlayer-1.4.0/scripts/kg_review_session.py +0 -73
- brainlayer-1.4.0/scripts/kg_session_finish.py +0 -12
- brainlayer-1.4.0/scripts/kg_session_harvest.py +0 -12
- brainlayer-1.4.0/scripts/label-chunks.py +0 -272
- brainlayer-1.4.0/scripts/maintenance/brainlayer_maintenance.py +0 -17
- brainlayer-1.4.0/scripts/merge_queue.py +0 -65
- brainlayer-1.4.0/scripts/mine_corrections.py +0 -38
- brainlayer-1.4.0/scripts/mine_failed_queries.py +0 -245
- brainlayer-1.4.0/scripts/mine_frustrations.py +0 -77
- brainlayer-1.4.0/scripts/monitor_batch_reenrichment.py +0 -142
- brainlayer-1.4.0/scripts/p0_longitudinal_count.py +0 -104
- brainlayer-1.4.0/scripts/phase-boundaries.py +0 -86
- brainlayer-1.4.0/scripts/pre-label.py +0 -217
- brainlayer-1.4.0/scripts/promote_tag_entities.py +0 -42
- brainlayer-1.4.0/scripts/purge_orphaned_vectors.py +0 -167
- brainlayer-1.4.0/scripts/quarantine_noise.py +0 -435
- brainlayer-1.4.0/scripts/rebuild_vec0_tables.py +0 -295
- brainlayer-1.4.0/scripts/reembed_backfill_loop.py +0 -363
- brainlayer-1.4.0/scripts/reembed_bge_m3.py +0 -162
- brainlayer-1.4.0/scripts/reembed_bgem3.py +0 -293
- brainlayer-1.4.0/scripts/replay_brain_store_fallbacks.py +0 -108
- brainlayer-1.4.0/scripts/resimhash_dedupe.py +0 -21
- brainlayer-1.4.0/scripts/run-second-analysis-after-first.sh +0 -31
- brainlayer-1.4.0/scripts/run_abcde_enrich.py +0 -170
- brainlayer-1.4.0/scripts/run_benchmark.py +0 -92
- brainlayer-1.4.0/scripts/run_decay_job.py +0 -47
- brainlayer-1.4.0/scripts/run_evals.py +0 -95
- brainlayer-1.4.0/scripts/run_tests.sh +0 -313
- brainlayer-1.4.0/scripts/scope-config.py +0 -100
- brainlayer-1.4.0/scripts/score_entity_health.py +0 -322
- brainlayer-1.4.0/scripts/seed_agent_profiles.py +0 -36
- brainlayer-1.4.0/scripts/seed_aliases.py +0 -67
- brainlayer-1.4.0/scripts/smoke/README.md +0 -1
- brainlayer-1.4.0/scripts/smoke/firstturn-brainlayer-smoke.sh +0 -83
- brainlayer-1.4.0/scripts/smoke/repogolem_mcp_transport_smoke.py +0 -134
- brainlayer-1.4.0/scripts/tombstone_singleton_tags.py +0 -53
- brainlayer-1.4.0/scripts/train-setfit.py +0 -161
- brainlayer-1.4.0/scripts/verify_hebrew_search.py +0 -95
- brainlayer-1.4.0/scripts/vertex_poll_import.py +0 -279
- brainlayer-1.4.0/scripts/wal_checkpoint.py +0 -65
- brainlayer-1.4.0/src/brainlayer/fallback_replay.py +0 -233
- brainlayer-1.4.0/tests/BrainBarWindowRootView.test.swift +0 -19
- brainlayer-1.4.0/tests/__init__.py +0 -1
- brainlayer-1.4.0/tests/conftest.py +0 -90
- brainlayer-1.4.0/tests/eval/phoenix_gate/test_phoenix_gate.py +0 -352
- brainlayer-1.4.0/tests/eval_baselines.json +0 -280
- brainlayer-1.4.0/tests/eval_mcp_brainlayer.json +0 -1335
- brainlayer-1.4.0/tests/eval_pr3_relevance_qrels.json +0 -68
- brainlayer-1.4.0/tests/eval_qrels.json +0 -1533
- brainlayer-1.4.0/tests/fixtures/README.md +0 -6
- brainlayer-1.4.0/tests/fixtures/stale_index_query.json +0 -5239
- brainlayer-1.4.0/tests/mock_mcp/__init__.py +0 -30
- brainlayer-1.4.0/tests/mock_mcp/assertions.py +0 -101
- brainlayer-1.4.0/tests/mock_mcp/base.py +0 -156
- brainlayer-1.4.0/tests/mock_mcp/mock_brainlayer.py +0 -184
- brainlayer-1.4.0/tests/mock_mcp/mock_github.py +0 -223
- brainlayer-1.4.0/tests/mock_mcp/mock_voicelayer.py +0 -81
- brainlayer-1.4.0/tests/regression/__init__.py +0 -1
- brainlayer-1.4.0/tests/regression/_stale_index_fixture.py +0 -112
- brainlayer-1.4.0/tests/regression/test_drift_detection.py +0 -147
- brainlayer-1.4.0/tests/regression/test_fts5_determinism.sh +0 -50
- brainlayer-1.4.0/tests/stale_index_query.test.ts +0 -134
- brainlayer-1.4.0/tests/test_3tool_aliases.py +0 -493
- brainlayer-1.4.0/tests/test_6pm_entity_upgrades.py +0 -505
- brainlayer-1.4.0/tests/test_abcde_enrich_runner.py +0 -352
- brainlayer-1.4.0/tests/test_abcde_report.py +0 -84
- brainlayer-1.4.0/tests/test_abcde_variants.py +0 -151
- brainlayer-1.4.0/tests/test_adaptive_injection.py +0 -257
- brainlayer-1.4.0/tests/test_agent_profiles.py +0 -316
- brainlayer-1.4.0/tests/test_arbitration.py +0 -1188
- brainlayer-1.4.0/tests/test_atomic_brick_schema.py +0 -430
- brainlayer-1.4.0/tests/test_audit_recursion_filter.py +0 -716
- brainlayer-1.4.0/tests/test_audit_search_quality.py +0 -188
- brainlayer-1.4.0/tests/test_auto_enrich.py +0 -415
- brainlayer-1.4.0/tests/test_backup_daily.py +0 -722
- brainlayer-1.4.0/tests/test_batch_extraction.py +0 -251
- brainlayer-1.4.0/tests/test_batch_reenrichment_setup.py +0 -74
- brainlayer-1.4.0/tests/test_behavioral_pr_loop.py +0 -421
- brainlayer-1.4.0/tests/test_bitemporal_phase1.py +0 -214
- brainlayer-1.4.0/tests/test_brain_graph_compat.py +0 -40
- brainlayer-1.4.0/tests/test_brain_tags.py +0 -270
- brainlayer-1.4.0/tests/test_brainbar_build_app_guards.py +0 -966
- brainlayer-1.4.0/tests/test_brainbar_helper_fast_profile.py +0 -169
- brainlayer-1.4.0/tests/test_brainbar_hybrid_helper.py +0 -223
- brainlayer-1.4.0/tests/test_brainstore.py +0 -602
- brainlayer-1.4.0/tests/test_braintrust_ingest.py +0 -196
- brainlayer-1.4.0/tests/test_calibrate_importance.py +0 -266
- brainlayer-1.4.0/tests/test_chat_list.py +0 -27
- brainlayer-1.4.0/tests/test_chunk.py +0 -110
- brainlayer-1.4.0/tests/test_chunk_lifecycle.py +0 -403
- brainlayer-1.4.0/tests/test_chunk_origin_provenance.py +0 -312
- brainlayer-1.4.0/tests/test_chunker.py +0 -91
- brainlayer-1.4.0/tests/test_classify.py +0 -165
- brainlayer-1.4.0/tests/test_cleanup_profanity_chunks.py +0 -198
- brainlayer-1.4.0/tests/test_cli_direct_sqlite.py +0 -261
- brainlayer-1.4.0/tests/test_cli_enrich.py +0 -338
- brainlayer-1.4.0/tests/test_cli_launchd_mode_a.py +0 -132
- brainlayer-1.4.0/tests/test_cli_provenance.py +0 -35
- brainlayer-1.4.0/tests/test_cloud_backfill.py +0 -781
- brainlayer-1.4.0/tests/test_code_intelligence.py +0 -872
- brainlayer-1.4.0/tests/test_concurrent_enrichment.py +0 -86
- brainlayer-1.4.0/tests/test_conditional_hooks.py +0 -863
- brainlayer-1.4.0/tests/test_consumer_scoping.py +0 -1113
- brainlayer-1.4.0/tests/test_content_class.py +0 -448
- brainlayer-1.4.0/tests/test_context_pipeline.py +0 -556
- brainlayer-1.4.0/tests/test_correction_detection_gate.py +0 -113
- brainlayer-1.4.0/tests/test_correction_judge.py +0 -86
- brainlayer-1.4.0/tests/test_correction_mining.py +0 -160
- brainlayer-1.4.0/tests/test_dashboard.py +0 -61
- brainlayer-1.4.0/tests/test_db_lock_resilience.py +0 -125
- brainlayer-1.4.0/tests/test_db_shrink.py +0 -335
- brainlayer-1.4.0/tests/test_decay.py +0 -436
- brainlayer-1.4.0/tests/test_dedup_coordination.py +0 -235
- brainlayer-1.4.0/tests/test_dedupe.py +0 -765
- brainlayer-1.4.0/tests/test_deferred_embedding.py +0 -837
- brainlayer-1.4.0/tests/test_deferred_mcp_provenance_guard.py +0 -113
- brainlayer-1.4.0/tests/test_dev_dependencies.py +0 -12
- brainlayer-1.4.0/tests/test_digest_connect.py +0 -420
- brainlayer-1.4.0/tests/test_digest_enrichment.py +0 -11
- brainlayer-1.4.0/tests/test_digest_pipeline_v2.py +0 -815
- brainlayer-1.4.0/tests/test_doctor.py +0 -211
- brainlayer-1.4.0/tests/test_drain_health.py +0 -24
- brainlayer-1.4.0/tests/test_embedding_truncation.py +0 -207
- brainlayer-1.4.0/tests/test_engine.py +0 -416
- brainlayer-1.4.0/tests/test_engine_package_boundary.py +0 -41
- brainlayer-1.4.0/tests/test_enrich_defaults.py +0 -28
- brainlayer-1.4.0/tests/test_enrich_supervisor.py +0 -439
- brainlayer-1.4.0/tests/test_enrichment_bounded_commit.py +0 -231
- brainlayer-1.4.0/tests/test_enrichment_controller.py +0 -1654
- brainlayer-1.4.0/tests/test_enrichment_data_integrity.py +0 -155
- brainlayer-1.4.0/tests/test_enrichment_entity_schema.py +0 -347
- brainlayer-1.4.0/tests/test_enrichment_fallback.py +0 -137
- brainlayer-1.4.0/tests/test_enrichment_flex_integration.py +0 -96
- brainlayer-1.4.0/tests/test_enrichment_gold.py +0 -125
- brainlayer-1.4.0/tests/test_enrichment_graders.py +0 -235
- brainlayer-1.4.0/tests/test_enrichment_judge.py +0 -219
- brainlayer-1.4.0/tests/test_enrichment_llm_judge.py +0 -99
- brainlayer-1.4.0/tests/test_enrichment_quality_benchmark.py +0 -181
- brainlayer-1.4.0/tests/test_enrichment_reliability.py +0 -427
- brainlayer-1.4.0/tests/test_enrichment_threshold.py +0 -26
- brainlayer-1.4.0/tests/test_enrichment_tiers.py +0 -225
- brainlayer-1.4.0/tests/test_enrichment_tiers_agent_sources.py +0 -33
- brainlayer-1.4.0/tests/test_enrichment_v2.py +0 -439
- brainlayer-1.4.0/tests/test_entity_contracts.py +0 -552
- brainlayer-1.4.0/tests/test_entity_dedup.py +0 -456
- brainlayer-1.4.0/tests/test_entity_extraction.py +0 -421
- brainlayer-1.4.0/tests/test_entity_fact_correction_judge.py +0 -163
- brainlayer-1.4.0/tests/test_entity_parent_relations.py +0 -242
- brainlayer-1.4.0/tests/test_entity_type_gate.py +0 -111
- brainlayer-1.4.0/tests/test_entity_type_sync.py +0 -234
- brainlayer-1.4.0/tests/test_eval_baselines.py +0 -1100
- brainlayer-1.4.0/tests/test_eval_framework.py +0 -436
- brainlayer-1.4.0/tests/test_experiment_store.py +0 -178
- brainlayer-1.4.0/tests/test_extract_markdown.py +0 -235
- brainlayer-1.4.0/tests/test_fallback_replay.py +0 -299
- brainlayer-1.4.0/tests/test_follow_up_rewrite.py +0 -199
- brainlayer-1.4.0/tests/test_frustration_mining.py +0 -177
- brainlayer-1.4.0/tests/test_fts5_health.py +0 -170
- brainlayer-1.4.0/tests/test_git_learning.py +0 -247
- brainlayer-1.4.0/tests/test_groq_backend.py +0 -212
- brainlayer-1.4.0/tests/test_groq_rate_limit.py +0 -115
- brainlayer-1.4.0/tests/test_hebrew_alias.py +0 -181
- brainlayer-1.4.0/tests/test_hook_slim.py +0 -165
- brainlayer-1.4.0/tests/test_hot_currentness_benchmark.py +0 -266
- brainlayer-1.4.0/tests/test_hotlane_brainbar_daemon.py +0 -405
- brainlayer-1.4.0/tests/test_hybrid_helper_contract.py +0 -176
- brainlayer-1.4.0/tests/test_hybrid_search.py +0 -842
- brainlayer-1.4.0/tests/test_hybrid_search_decay.py +0 -189
- brainlayer-1.4.0/tests/test_ingest_codex.py +0 -435
- brainlayer-1.4.0/tests/test_ingest_guard.py +0 -541
- brainlayer-1.4.0/tests/test_installable_build.py +0 -525
- brainlayer-1.4.0/tests/test_isolation_proof_harness.py +0 -73
- brainlayer-1.4.0/tests/test_issue_type.py +0 -213
- brainlayer-1.4.0/tests/test_jsonl_backup.py +0 -284
- brainlayer-1.4.0/tests/test_jsonl_watcher.py +0 -756
- brainlayer-1.4.0/tests/test_kg_boost_reconnect.py +0 -149
- brainlayer-1.4.0/tests/test_kg_cleanup.py +0 -347
- brainlayer-1.4.0/tests/test_kg_entity_dedup.py +0 -697
- brainlayer-1.4.0/tests/test_kg_extraction.py +0 -345
- brainlayer-1.4.0/tests/test_kg_hybrid_retrieval.py +0 -246
- brainlayer-1.4.0/tests/test_kg_judge.py +0 -659
- brainlayer-1.4.0/tests/test_kg_p2_crosstype_cleanup.py +0 -123
- brainlayer-1.4.0/tests/test_kg_p2_safe_cleanup.py +0 -59
- brainlayer-1.4.0/tests/test_kg_promotion.py +0 -467
- brainlayer-1.4.0/tests/test_kg_quality.py +0 -472
- brainlayer-1.4.0/tests/test_kg_rebuild.py +0 -311
- brainlayer-1.4.0/tests/test_kg_relations.py +0 -69
- brainlayer-1.4.0/tests/test_kg_review_session.py +0 -610
- brainlayer-1.4.0/tests/test_kg_schema.py +0 -657
- brainlayer-1.4.0/tests/test_kg_session_finish.py +0 -347
- brainlayer-1.4.0/tests/test_kg_session_harvest.py +0 -595
- brainlayer-1.4.0/tests/test_kg_standard.py +0 -476
- brainlayer-1.4.0/tests/test_launchd_hygiene.py +0 -425
- brainlayer-1.4.0/tests/test_lexical_defense.py +0 -52
- brainlayer-1.4.0/tests/test_lifecycle.py +0 -398
- brainlayer-1.4.0/tests/test_maintenance_routine.py +0 -442
- brainlayer-1.4.0/tests/test_mcp_digest_modes.py +0 -91
- brainlayer-1.4.0/tests/test_mcp_format.py +0 -449
- brainlayer-1.4.0/tests/test_mcp_input_schema_limits.py +0 -71
- brainlayer-1.4.0/tests/test_mcp_labeled_field_output.py +0 -227
- brainlayer-1.4.0/tests/test_mcp_lazy_startup.py +0 -185
- brainlayer-1.4.0/tests/test_mcp_socket_config_templates.py +0 -35
- brainlayer-1.4.0/tests/test_mcp_timeout.py +0 -17
- brainlayer-1.4.0/tests/test_mcp_warm_route.py +0 -377
- brainlayer-1.4.0/tests/test_mine_queries.py +0 -180
- brainlayer-1.4.0/tests/test_mlx_health_recovery.py +0 -121
- brainlayer-1.4.0/tests/test_mmr_default_off.py +0 -169
- brainlayer-1.4.0/tests/test_ner_eval.py +0 -394
- brainlayer-1.4.0/tests/test_newsyslog_config.py +0 -87
- brainlayer-1.4.0/tests/test_normalize_project.py +0 -58
- brainlayer-1.4.0/tests/test_p0_longitudinal_count.py +0 -103
- brainlayer-1.4.0/tests/test_parent_death.py +0 -107
- brainlayer-1.4.0/tests/test_paths.py +0 -38
- brainlayer-1.4.0/tests/test_phase2.py +0 -292
- brainlayer-1.4.0/tests/test_phase2_plugin_manifest.py +0 -90
- brainlayer-1.4.0/tests/test_phase2_plugin_queue.py +0 -226
- brainlayer-1.4.0/tests/test_phase3_digest.py +0 -789
- brainlayer-1.4.0/tests/test_phase3_qa.py +0 -388
- brainlayer-1.4.0/tests/test_phase5.py +0 -332
- brainlayer-1.4.0/tests/test_phase6_critical.py +0 -441
- brainlayer-1.4.0/tests/test_phase6_sentiment.py +0 -270
- brainlayer-1.4.0/tests/test_post_commit_hook.py +0 -163
- brainlayer-1.4.0/tests/test_precompact_chunk_origin.py +0 -987
- brainlayer-1.4.0/tests/test_prompt_classification.py +0 -224
- brainlayer-1.4.0/tests/test_provenance.py +0 -479
- brainlayer-1.4.0/tests/test_provenance_autosupersede.py +0 -647
- brainlayer-1.4.0/tests/test_provenance_integration.py +0 -2119
- brainlayer-1.4.0/tests/test_quarantine_noise.py +0 -198
- brainlayer-1.4.0/tests/test_queue_merge.py +0 -153
- brainlayer-1.4.0/tests/test_rate_limiter.py +0 -52
- brainlayer-1.4.0/tests/test_realtime_hooks.py +0 -246
- brainlayer-1.4.0/tests/test_recent_enrichment.py +0 -37
- brainlayer-1.4.0/tests/test_reembed_backfill.py +0 -267
- brainlayer-1.4.0/tests/test_reembed_bgem3.py +0 -245
- brainlayer-1.4.0/tests/test_release_version_sync.py +0 -22
- brainlayer-1.4.0/tests/test_run_tests_script.py +0 -423
- brainlayer-1.4.0/tests/test_sanitize.py +0 -463
- brainlayer-1.4.0/tests/test_search_alias_expansion.py +0 -149
- brainlayer-1.4.0/tests/test_search_chunk_id.py +0 -229
- brainlayer-1.4.0/tests/test_search_exact_chunk_id.py +0 -367
- brainlayer-1.4.0/tests/test_search_filter_params.py +0 -813
- brainlayer-1.4.0/tests/test_search_gaps.py +0 -313
- brainlayer-1.4.0/tests/test_search_handler.py +0 -672
- brainlayer-1.4.0/tests/test_search_profile.py +0 -181
- brainlayer-1.4.0/tests/test_search_quality.py +0 -552
- brainlayer-1.4.0/tests/test_search_routing.py +0 -164
- brainlayer-1.4.0/tests/test_search_trigram_fts.py +0 -118
- brainlayer-1.4.0/tests/test_search_validation.py +0 -518
- brainlayer-1.4.0/tests/test_semantic_style.py +0 -315
- brainlayer-1.4.0/tests/test_session_enrichment.py +0 -673
- brainlayer-1.4.0/tests/test_session_enrichment_candidates.py +0 -217
- brainlayer-1.4.0/tests/test_smart_search_entity_dedup.py +0 -400
- brainlayer-1.4.0/tests/test_stability_health_check.py +0 -534
- brainlayer-1.4.0/tests/test_stale_index_fixture.py +0 -16
- brainlayer-1.4.0/tests/test_stop_hook_created_at.py +0 -48
- brainlayer-1.4.0/tests/test_storage.py +0 -62
- brainlayer-1.4.0/tests/test_store_handler.py +0 -1179
- brainlayer-1.4.0/tests/test_tag_entity_promotion.py +0 -143
- brainlayer-1.4.0/tests/test_telemetry.py +0 -177
- brainlayer-1.4.0/tests/test_think_recall_integration.py +0 -279
- brainlayer-1.4.0/tests/test_tool_annotations.py +0 -147
- brainlayer-1.4.0/tests/test_tool_description_quality.py +0 -41
- brainlayer-1.4.0/tests/test_transport_replay_attribution.py +0 -298
- brainlayer-1.4.0/tests/test_truncation.py +0 -52
- brainlayer-1.4.0/tests/test_vector_store.py +0 -148
- brainlayer-1.4.0/tests/test_vector_store_pragma_tuning.py +0 -126
- brainlayer-1.4.0/tests/test_vector_store_readonly.py +0 -236
- brainlayer-1.4.0/tests/test_vector_store_schema_flags.py +0 -24
- brainlayer-1.4.0/tests/test_wal_checkpoint_module.py +0 -28
- brainlayer-1.4.0/tests/test_watcher_bridge.py +0 -577
- brainlayer-1.4.0/tests/test_wizard.py +0 -101
- brainlayer-1.4.0/tests/test_write_queue.py +0 -1746
- brainlayer-1.4.0/tests/test_write_resilience_under_load.py +0 -171
- brainlayer-1.4.0/tests/test_writer_pidfile_mutex.py +0 -764
- {brainlayer-1.4.0 → brainlayer-1.4.2}/LICENSE +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/README.md +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/backup-daily.sh +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/brainlayer-env-run.sh +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/brainlayer.env.example +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.backup-daily.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.decay.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.drain.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.enrichment.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.health-check.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.index.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.jsonl-backup.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.maintenance-nightly.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.maintenance-weekly.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.repair-fts.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.wal-checkpoint.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/com.brainlayer.watch.plist +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/scripts/launchd/jsonl-backup.sh +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/_helpers.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/agent_profiles.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/backup_daily.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/bitemporal.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/brainbar_hybrid_helper.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/calibrate.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/chunk_origin.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/chunk_origin_backfill.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/classify.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/claude_paths.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/cli/wizard.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/cli_new.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/cloud_backfill.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/clustering.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/config.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/content_class.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/correction_judge.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/db_shrink.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/decay.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/decay_backfill.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/decay_job.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/dedupe.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/embeddings.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/engine.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/__init__.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/abcde_enrich_runner.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/abcde_variants.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/abcde_variants.yaml +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/benchmark.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/enrichment_gold.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/enrichment_graders.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/enrichment_judge.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/enrichment_llm_judge.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/enrichment_quality_benchmark.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/experiment_store.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/fixtures/README.md +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/labeling/enrichment-labeler.html +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/phoenix_gate/__init__.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/phoenix_gate/__main__.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/phoenix_gate/baseline_store.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/phoenix_gate/cli.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/phoenix_gate/models.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/phoenix_gate/phoenix_client.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/phoenix_gate/regression_gate.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/eval/phoenix_gate/triggers.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/git_learning.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/hooks/__init__.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/hooks/indexer.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/index_new.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/ingest/__init__.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/ingest/codex.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/ingest_guard.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/isolation_proof.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/jsonl_backup.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/kg/__init__.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/kg_cleanup.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/kg_judge.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/kg_promotion.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/kg_repo.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/kg_review_session.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/kg_session_finish.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/kg_session_harvest.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/lexical_defense.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/lexical_defense_dictionary.json +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/mcp/_shared.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/mcp/enrich_handler.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/mcp/entity_handler.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/mcp/search_handler.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/mcp/store_handler.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/mcp/tags_handler.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/memory_types.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/migrate.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/parent_death.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/paths.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/phonetic.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/__init__.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/agent_enrichment.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/analyze_communication.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/batch_extraction.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/brain_graph.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/chat_tags.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/chunk.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/classify.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/cluster_sampling.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/code_intelligence.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/correction_detection.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/correction_mining.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/digest.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/enrichment.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/enrichment_tiers.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/entity_extraction.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/entity_resolution.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/extract.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/extract_claude_desktop.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/extract_corrections.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/extract_markdown.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/extract_whatsapp.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/frustration_mining.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/git_overlay.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/kg_extraction.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/kg_extraction_groq.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/longitudinal_analyzer.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/obsidian_export.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/operation_grouping.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/plan_linking.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/rate_limiter.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/sanitize.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/semantic_style.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/sentiment.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/session_enrichment.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/style_embed.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/style_index.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/tag_entity_promotion.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/temporal_chains.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/time_batcher.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/unified_timeline.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/pipeline/write_queue.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/provenance.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/provenance_autosupersede.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/provenance_integration.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/queue_io.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/queue_merge.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/scoping.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/search_profile.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/search_repo.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/session_repo.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/setup.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/storage.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/store.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/system_prompt_guard.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/tag_normalization.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/taxonomy.json +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/telemetry.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/types.py +0 -0
- {brainlayer-1.4.0 → brainlayer-1.4.2}/src/brainlayer/wal_checkpoint.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: brainlayer
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.2
|
|
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.
|
|
3
|
+
version = "1.4.2"
|
|
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
|
]
|
|
@@ -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
|
-
|
|
140
|
+
local enable_error=""
|
|
141
|
+
local retry_enable_after_bootstrap=0
|
|
112
142
|
launchctl bootout "gui/$UID/$label" 2>/dev/null || true
|
|
113
|
-
launchctl
|
|
114
|
-
|
|
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
|
-
|
|
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
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
install_plist
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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.
|
|
6
|
+
"version": "1.4.2",
|
|
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.
|
|
17
|
+
"version": "1.4.2",
|
|
18
18
|
"runtimeHint": "pipx",
|
|
19
19
|
"transport": {
|
|
20
20
|
"type": "stdio"
|
|
@@ -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
|