brainlayer 1.0.0__tar.gz → 1.2.0__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.2.0/.claude-plugin/marketplace.json +13 -0
- brainlayer-1.2.0/.claude.local.md.example +21 -0
- brainlayer-1.2.0/.gitattributes +2 -0
- brainlayer-1.2.0/.githooks/pre-push +38 -0
- brainlayer-1.2.0/.github/workflows/ci.yml +113 -0
- brainlayer-1.2.0/.gitignore +84 -0
- brainlayer-1.2.0/.mcp.json.example +19 -0
- brainlayer-1.2.0/AGENTS.md +43 -0
- brainlayer-1.2.0/BUGBOT_ACTION_ITEMS.md +377 -0
- brainlayer-1.2.0/BUGBOT_CRITICAL_ISSUES.md +226 -0
- brainlayer-1.2.0/BUGBOT_FINAL_STATUS.md +155 -0
- brainlayer-1.2.0/BUGBOT_PR_COMMENT_HELPER_FAST_PROFILE.md +161 -0
- brainlayer-1.2.0/BUGBOT_REREVIEW_P2_KG_CLEANUP.md +478 -0
- brainlayer-1.2.0/BUGBOT_REVIEW.md +477 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_352.md +256 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_BRAINBAR_HELPER_FAST_PROFILE.md +596 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_DEFLAKE_AGENT_PROFILES.md +194 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_FINDINGS.md +191 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_FIX_PYTHON_CI.md +279 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_FTS_RECALL.md +273 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_HOOKS_FAIL_LOUD.md +240 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_P2_KG_CLEANUP.md +274 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_P6B.md +243 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_QUICK_CAPTURE.md +271 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_QUICK_CAPTURE_UX_FIX.md +442 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_RESTORE_CAPTURE_ACTIONS.md +797 -0
- brainlayer-1.2.0/BUGBOT_REVIEW_SUMMARY.md +146 -0
- brainlayer-1.2.0/BUGBOT_SUMMARY.md +76 -0
- brainlayer-1.2.0/BUGBOT_SUMMARY_HELPER_FAST_PROFILE.md +233 -0
- brainlayer-1.2.0/CHANGELOG.md +57 -0
- brainlayer-1.2.0/CLAUDE.md +142 -0
- brainlayer-1.2.0/CODEOWNERS +1 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/CONTRIBUTING.md +18 -2
- brainlayer-1.2.0/PKG-INFO +389 -0
- brainlayer-1.2.0/README.md +318 -0
- brainlayer-1.2.0/SLICE-B-BRIEF.md +29 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-after-productionprompt-hybrid-taxonomy-combined.jsonl +50 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-after-productionprompt-hybrid-taxonomy-retry1.jsonl +5 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-after-productionprompt-hybrid-taxonomy.jsonl +50 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/flex-before-oldprompt-validation-off.jsonl +50 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-combined-summary.json +118 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-combined.jsonl +50 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-retry1-summary.json +109 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-retry1.jsonl +1 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash-summary.json +109 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/judge-after-hybrid-vs-before-gemini-flash.jsonl +50 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/recommended-36k-batch-backfill-plan.md +70 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/selection-after-retry1.jsonl +5 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/selection-cloudsafe-pilot50.jsonl +50 -0
- brainlayer-1.2.0/artifacts/flex-hybrid-taxonomy-2026-06-16/selection-judge-retry1.jsonl +1 -0
- brainlayer-1.2.0/brain-bar/.gitignore +4 -0
- brainlayer-1.2.0/brain-bar/Package.resolved +15 -0
- brainlayer-1.2.0/brain-bar/Package.swift +60 -0
- brainlayer-1.2.0/brain-bar/Scripts/brainbar_stdio_adapter.py +94 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarApp.swift +299 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarAppSupport.swift +206 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarCommandBar.swift +491 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarDashboardPanelController.swift +65 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarInstanceLock.swift +66 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarProcessControl.swift +33 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarRuntime.swift +64 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarServer.swift +1038 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarSettingsActions.swift +9 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarSettingsView.swift +399 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarStatusPopoverController.swift +137 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarURLAction.swift +20 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarWindowRootView.swift +1508 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBarWindowState.swift +448 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBusClient.swift +170 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainBusEvent.swift +203 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainDatabase.swift +5271 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/BrainLayerConfig.swift +480 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Dashboard/AgentActivityMonitor.swift +198 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Dashboard/BrainBarLivePulse.swift +27 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Dashboard/DaemonHealthMonitor.swift +82 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Dashboard/DashboardMetricFormatter.swift +118 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Dashboard/PipelineState.swift +574 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Dashboard/SparklineRenderer.swift +405 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Dashboard/StatsCollector.swift +500 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Dashboard/StatusPopoverView.swift +620 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/DegradationState.swift +28 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/DesignTokens.swift +168 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Formatters.swift +411 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Formatting/TextFormatter.swift +280 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/HotkeyManager.swift +350 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/HotkeyRouteStatus.swift +25 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/HybridSearchHelperClient.swift +570 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/InjectionContinuation.swift +50 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/InjectionEvent.swift +370 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/InjectionFeedView.swift +940 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/InjectionPresentation.swift +467 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/InjectionStore.swift +308 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/InjectionSummaryView.swift +37 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/EntityCache.swift +105 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGAtlasLayout.swift +148 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGAtlasMode.swift +85 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGAtlasPresentation.swift +166 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGCanvasView.swift +494 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGEdge.swift +9 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGEdgeView.swift +37 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGNode.swift +55 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGNodeView.swift +51 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGRelationPresentation.swift +40 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGSidebarView.swift +556 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGSimulationController.swift +67 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/KGViewModel.swift +639 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/KnowledgeGraph/ScrollWheelZoomView.swift +35 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/MCPFraming.swift +165 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/MCPRouter.swift +1369 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Models/DigestResult.swift +60 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Models/EntityCard.swift +150 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Models/KGSearchResult.swift +20 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Models/KGTemporalDate.swift +50 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Models/SearchResult.swift +161 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Models/StatsResult.swift +19 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/QuickCaptureController.swift +134 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/QuickCapturePanel.swift +1178 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/QuickCapturePanelState.swift +37 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/SearchFilters.swift +36 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/SearchPanelController.swift +251 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/SearchProfileLogger.swift +65 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/SearchQueryActor.swift +57 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/SearchViewModel.swift +83 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Views/Components/ChunkConversationSheet.swift +150 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Views/Components/SearchResultCard.swift +98 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Views/Components/SearchResultsList.swift +56 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Views/Components/WrappingPillLayout.swift +96 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBar/Views/ExpirationPill.swift +31 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarCommandBar.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarDaemonMain.swift +28 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarDashboardPanelController.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarInstanceLock.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarProcessControl.swift +33 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarRuntime.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarServer.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarSettingsActions.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarStatusPopoverController.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarURLAction.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarWindowRootView.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBarWindowState.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBusClient.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainBusEvent.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/BrainDatabase.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Dashboard/AgentActivityMonitor.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Dashboard/BrainBarLivePulse.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Dashboard/DaemonHealthMonitor.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Dashboard/DashboardMetricFormatter.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Dashboard/PipelineState.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Dashboard/SparklineRenderer.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Dashboard/StatsCollector.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Dashboard/StatusPopoverView.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/DegradationState.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/DesignTokens.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Formatters.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Formatting/TextFormatter.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/HotkeyManager.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/HotkeyRouteStatus.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/HybridSearchHelperClient.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/InjectionContinuation.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/InjectionEvent.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/InjectionFeedView.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/InjectionPresentation.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/InjectionStore.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/InjectionSummaryView.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/EntityCache.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGAtlasLayout.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGAtlasMode.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGAtlasPresentation.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGCanvasView.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGEdge.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGEdgeView.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGNode.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGNodeView.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGRelationPresentation.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGSidebarView.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGSimulationController.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/KGViewModel.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/KnowledgeGraph/ScrollWheelZoomView.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/MCPFraming.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/MCPRouter.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Models/DigestResult.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Models/EntityCard.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Models/KGSearchResult.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Models/KGTemporalDate.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Models/SearchResult.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Models/StatsResult.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/QuickCaptureController.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/QuickCapturePanel.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/QuickCapturePanelState.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/SearchFilters.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/SearchPanelController.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/SearchProfileLogger.swift +65 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/SearchQueryActor.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/SearchViewModel.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Views/Components/ChunkConversationSheet.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Views/Components/SearchResultCard.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Views/Components/SearchResultsList.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Views/Components/WrappingPillLayout.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarDaemon/Views/ExpirationPill.swift +1 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarLifecycle/BrainBarLifecycleWatchdog.swift +256 -0
- brainlayer-1.2.0/brain-bar/Sources/BrainBarLifecycle/BrainBarRestartHandoff.swift +50 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarDaemonTests/BrainBarDaemonLaunchModeTests.swift +118 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/AgentActivityMonitorTests.swift +58 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBarDashboardPanelControllerTests.swift +101 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBarReliabilityTests.swift +377 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBarRuntimeWiringTests.swift +86 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBarSettingsSnapshotTests.swift +91 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBarSettingsViewModelTests.swift +49 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBarStartupRecoveryTests.swift +192 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBarStatusPopoverControllerTests.swift +77 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBarUXLogicTests.swift +425 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBarWindowStateTests.swift +389 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainBusEventHubTests.swift +93 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/BrainLayerConfigTests.swift +131 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/ChunkConversationTests.swift +100 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/DashboardTests.swift +1597 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/DatabaseTests.swift +1886 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/DegradationStateTests.swift +336 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/DesignTokensTests.swift +75 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/FormattersTests.swift +374 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/HybridSearchHelperClientTests.swift +339 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/InjectionContinuationTests.swift +92 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/InjectionConversationSelectionTests.swift +26 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/InjectionEventTests.swift +322 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/InjectionPresentationTests.swift +574 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/InjectionStoreTests.swift +325 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/KGAtlasLayoutTests.swift +82 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/KGAtlasPresentationTests.swift +265 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/KGBadgeConsistencyTests.swift +42 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/KGExpirationRenderingTests.swift +144 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/KGSidebarSynopsisTests.swift +50 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/KnowledgeGraphTests.swift +1843 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/MCPFramingTests.swift +145 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/MCPRouterTests.swift +2366 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/PopoverTabTests.swift +214 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/QuickCaptureConversationTests.swift +60 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/QuickCapturePanelTests.swift +833 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/QuickCaptureTests.swift +415 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/RecordingHybridSearchClient.swift +68 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/SearchFiltersTests.swift +42 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/SearchPanelControllerTests.swift +38 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/SearchQueryActorTests.swift +121 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/SearchResultPresentationTests.swift +38 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/SearchViewModelTests.swift +130 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/SocketIntegrationTests.swift +1110 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/StabilityFixTests.swift +157 -0
- brainlayer-1.2.0/brain-bar/Tests/BrainBarTests/TextFormatterParityTests.swift +253 -0
- brainlayer-1.2.0/brain-bar/build-app.sh +679 -0
- brainlayer-1.2.0/brain-bar/bundle/Info.plist +37 -0
- brainlayer-1.2.0/brain-bar/bundle/com.brainlayer.brainbar-daemon.plist +24 -0
- brainlayer-1.2.0/brain-bar/bundle/com.brainlayer.brainbar.plist +38 -0
- brainlayer-1.2.0/brain-bar/karabiner/brainbar-f4.json +73 -0
- brainlayer-1.2.0/bugbot-review-notes.md +159 -0
- brainlayer-1.2.0/bugbot_pr_comment.md +76 -0
- brainlayer-1.2.0/contracts/engine-ui-contract.md +75 -0
- brainlayer-1.2.0/contracts/entity-types.yaml +162 -0
- brainlayer-1.2.0/docs/abcde-experiment-isolation.md +28 -0
- brainlayer-1.2.0/docs/adr/0000-template.md +29 -0
- brainlayer-1.2.0/docs/adr/0001-sqlite-vec-over-dedicated-vector-db.md +59 -0
- brainlayer-1.2.0/docs/adr/0002-reciprocal-rank-fusion-for-hybrid-search.md +68 -0
- brainlayer-1.2.0/docs/arbitration.md +19 -0
- brainlayer-1.2.0/docs/architecture/MODULE-MAP.md +47 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/architecture.md +5 -6
- brainlayer-1.2.0/docs/assets/logo.svg +75 -0
- brainlayer-1.2.0/docs/backup-strategy.md +132 -0
- brainlayer-1.2.0/docs/configuration.md +166 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/data-locations.md +3 -12
- brainlayer-1.2.0/docs/enrichment-provider-agnostic-design.md +52 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/enrichment-runbook.md +4 -6
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/index.md +11 -8
- brainlayer-1.2.0/docs/kg-spec.md +58 -0
- brainlayer-1.2.0/docs/mcp-config.md +40 -0
- brainlayer-1.2.0/docs/mcp-tools.md +165 -0
- brainlayer-1.2.0/docs/orqi-batch-contract.md +73 -0
- brainlayer-1.2.0/docs/plans/2026-02-25-phase-3-brain-digest.md +51 -0
- brainlayer-1.2.0/docs/plans/2026-02-25-phase-6-sentiment.md +414 -0
- brainlayer-1.2.0/docs/plans/2026-03-30-enrichment-launchagent.md +85 -0
- brainlayer-1.2.0/docs/plans/2026-03-31-phase2-search-window-design.md +128 -0
- brainlayer-1.2.0/docs/plans/2026-03-31-phase2-search-window.md +221 -0
- brainlayer-1.2.0/docs/plans/2026-04-05-p1a-fts5-health.md +129 -0
- brainlayer-1.2.0/docs/plans/2026-04-05-p1b-eval-framework.md +135 -0
- brainlayer-1.2.0/docs/plans/2026-04-18-brainbar-dashboard-flow-collab.md +38 -0
- brainlayer-1.2.0/docs/plans/2026-04-18-brainbar-dashboard-flow.md +206 -0
- brainlayer-1.2.0/docs/plans/2026-04-18-brainbar-injections-graph-hybrid.md +132 -0
- brainlayer-1.2.0/docs/plans/2026-06-01-db-shrink-fts5-dedup.md +44 -0
- brainlayer-1.2.0/docs/plans/2026-06-02-phoenix-eval-integration.md +172 -0
- brainlayer-1.2.0/docs/plans/2026-06-14-reembed-unvectored-backlog.md +61 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/quickstart.md +25 -24
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/research/launch-readiness-audit.md +2 -2
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/research/session-enrichment/README.md +2 -2
- brainlayer-1.2.0/docs/research/session-enrichment/brainstore-write-tools.md +33 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/research/session-enrichment/prompts.md +3 -3
- brainlayer-1.2.0/docs/roadmap.md +32 -0
- brainlayer-1.2.0/docs/stylesheets/extra.css +299 -0
- brainlayer-1.2.0/eval_results/abcde_results_summary.md +13 -0
- brainlayer-1.2.0/eval_results/db-shrink-2026-06-01.json +116 -0
- brainlayer-1.2.0/eval_results/kg-phase1-dryrun-2026-06-05.json +2883 -0
- brainlayer-1.2.0/eval_results/kg-phase1-flag-batch-2026-06-05.json +21978 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/.claude-plugin/plugin.json +9 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/.gitignore +1 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/.mcp.json +11 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/hooks/hooks.json +53 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/hooks/session-start.sh +4 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/hooks/session-stop.sh +4 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/hooks/tool-error.sh +4 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/hooks/tool-observe.sh +4 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/scripts/brainbar-hook.py +264 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/scripts/queue-flusher.py +97 -0
- brainlayer-1.2.0/extensions/brainlayer-plugin/skills/memory/SKILL.md +14 -0
- brainlayer-1.2.0/findings.md +253 -0
- brainlayer-1.2.0/greptile.json +33 -0
- brainlayer-1.2.0/hooks/brainbar-postcompact.py +75 -0
- brainlayer-1.2.0/hooks/brainbar-prompt-capture.py +37 -0
- brainlayer-1.2.0/hooks/brainbar-stop-index.py +145 -0
- brainlayer-1.2.0/hooks/brainlayer-prompt-search.py +1326 -0
- brainlayer-1.2.0/hooks/brainlayer-session-start.py +336 -0
- brainlayer-1.2.0/hooks/dedup_coordination.py +186 -0
- brainlayer-1.2.0/hooks/post-commit.py +82 -0
- brainlayer-1.2.0/hooks/session-cleanup.py +174 -0
- brainlayer-1.2.0/landing/index.html +1611 -0
- brainlayer-1.2.0/landing/logos/claude.svg +1 -0
- brainlayer-1.2.0/landing/logos/cursor.svg +12 -0
- brainlayer-1.2.0/landing/logos/gemini.svg +1 -0
- brainlayer-1.2.0/landing/logos/kiro.svg +11 -0
- brainlayer-1.2.0/landing/logos/openai.svg +1 -0
- brainlayer-1.2.0/landing/logos/vscode.svg +1 -0
- brainlayer-1.2.0/landing/logos/zed.svg +1 -0
- brainlayer-1.2.0/launchd/com.brainlayer.jsonl-backup.plist +50 -0
- brainlayer-1.2.0/launchd/com.brainlayer.watch.plist +59 -0
- brainlayer-1.2.0/launchd/install-newsyslog.sh +65 -0
- brainlayer-1.2.0/launchd/newsyslog.d/README.md +31 -0
- brainlayer-1.2.0/launchd/newsyslog.d/brainlayer.conf +16 -0
- brainlayer-1.2.0/macroscope.md +31 -0
- brainlayer-1.2.0/migrations/002_decay_columns.sql +9 -0
- brainlayer-1.2.0/migrations/003_raw_entities_json.sql +1 -0
- brainlayer-1.2.0/migrations/004_enrich_status.sql +22 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/mkdocs.yml +8 -0
- brainlayer-1.2.0/overrides/main.html +30 -0
- brainlayer-1.2.0/prd-json/index.json +13 -0
- brainlayer-1.2.0/prd-json/stories/BUG-005.json +31 -0
- brainlayer-1.2.0/prd-json/stories/MP-003.json +35 -0
- brainlayer-1.2.0/prd-json/stories/MP-004.json +43 -0
- brainlayer-1.2.0/prd-json/stories/US-001.json +35 -0
- brainlayer-1.2.0/prd-json/stories/US-002.json +39 -0
- brainlayer-1.2.0/progress.txt +57 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/pyproject.toml +42 -15
- brainlayer-1.2.0/results/abcde_n893_summary.json +60 -0
- brainlayer-1.2.0/results/abcde_n893_summary.md +33 -0
- brainlayer-1.2.0/scripts/__init__.py +1 -0
- brainlayer-1.2.0/scripts/abcde_report.py +301 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/backfill-context.py +2 -1
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/backfill-metadata.py +2 -1
- brainlayer-1.2.0/scripts/backfill_chunk_origin_provenance.py +62 -0
- brainlayer-1.2.0/scripts/backfill_content_class.py +225 -0
- brainlayer-1.2.0/scripts/backfill_decay.py +21 -0
- brainlayer-1.2.0/scripts/backfill_dedupe.py +7 -0
- brainlayer-1.2.0/scripts/backfill_kg_promotion.py +15 -0
- brainlayer-1.2.0/scripts/backfill_orchestrate.sh +88 -0
- brainlayer-1.2.0/scripts/batch_submit_paced.py +106 -0
- brainlayer-1.2.0/scripts/build_qrels.py +150 -0
- brainlayer-1.2.0/scripts/calibrate_importance.py +70 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/classify-all.py +2 -1
- brainlayer-1.2.0/scripts/cleanup-profanity-chunks.py +196 -0
- brainlayer-1.2.0/scripts/cleanup_stale_mcp.py +179 -0
- brainlayer-1.2.0/scripts/cloud_backfill.py +22 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/cloud_stream.py +2 -1
- brainlayer-1.2.0/scripts/dedup_entities.py +223 -0
- brainlayer-1.2.0/scripts/diarize_episodes.py +408 -0
- brainlayer-1.2.0/scripts/drain_daemon.py +17 -0
- brainlayer-1.2.0/scripts/enrich_recent.py +189 -0
- brainlayer-1.2.0/scripts/enrichment_backfill.py +185 -0
- brainlayer-1.2.0/scripts/enrichment_llm_judge.py +14 -0
- brainlayer-1.2.0/scripts/enrichment_pilot.py +420 -0
- brainlayer-1.2.0/scripts/enrichment_quality_benchmark.py +14 -0
- brainlayer-1.2.0/scripts/export_lexical_defense_snapshot.py +58 -0
- brainlayer-1.2.0/scripts/generate-fixtures.sh +193 -0
- brainlayer-1.2.0/scripts/generate_abcde_variants.py +195 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/generate_style_card.py +2 -8
- brainlayer-1.2.0/scripts/hot_currentness_benchmark.py +619 -0
- brainlayer-1.2.0/scripts/hotlane_brainbar_daemon.py +208 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/index_youtube.py +116 -2
- brainlayer-1.2.0/scripts/install-karabiner-rule.sh +65 -0
- brainlayer-1.2.0/scripts/kg_backfill.py +88 -0
- brainlayer-1.2.0/scripts/kg_cleanup.py +327 -0
- brainlayer-1.2.0/scripts/kg_cleanup_apply.py +273 -0
- brainlayer-1.2.0/scripts/kg_cleanup_dryrun.py +246 -0
- brainlayer-1.2.0/scripts/kg_dedup.py +170 -0
- brainlayer-1.2.0/scripts/kg_entity_dedup.py +1010 -0
- brainlayer-1.2.0/scripts/kg_entity_judge.py +78 -0
- brainlayer-1.2.0/scripts/kg_flag_batch.py +160 -0
- brainlayer-1.2.0/scripts/kg_p2_crosstype_cleanup.py +565 -0
- brainlayer-1.2.0/scripts/kg_p2_safe_cleanup.py +347 -0
- brainlayer-1.2.0/scripts/kg_rebuild.py +363 -0
- brainlayer-1.2.0/scripts/kg_review_session.py +73 -0
- brainlayer-1.2.0/scripts/kg_session_finish.py +12 -0
- brainlayer-1.2.0/scripts/kg_session_harvest.py +12 -0
- brainlayer-1.2.0/scripts/launchd/backup-daily.sh +16 -0
- brainlayer-1.2.0/scripts/launchd/brainlayer-env-run.sh +76 -0
- brainlayer-1.2.0/scripts/launchd/brainlayer.env.example +41 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.backup-daily.plist +52 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.decay.plist +54 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.drain.plist +58 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.enrichment.plist +61 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.index.plist +51 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.jsonl-backup.plist +52 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.maintenance-nightly.plist +55 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.maintenance-weekly.plist +57 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.repair-fts.plist +53 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.wal-checkpoint.plist +55 -0
- brainlayer-1.2.0/scripts/launchd/com.brainlayer.watch.plist +58 -0
- brainlayer-1.2.0/scripts/launchd/install.sh +296 -0
- brainlayer-1.2.0/scripts/launchd/jsonl-backup.sh +14 -0
- brainlayer-1.2.0/scripts/maintenance/brainlayer_maintenance.py +17 -0
- brainlayer-1.2.0/scripts/merge_queue.py +65 -0
- brainlayer-1.2.0/scripts/mine_corrections.py +38 -0
- brainlayer-1.2.0/scripts/mine_failed_queries.py +245 -0
- brainlayer-1.2.0/scripts/mine_frustrations.py +77 -0
- brainlayer-1.2.0/scripts/monitor_batch_reenrichment.py +142 -0
- brainlayer-1.2.0/scripts/p0_longitudinal_count.py +104 -0
- brainlayer-1.2.0/scripts/phase-boundaries.py +86 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/pre-label.py +2 -1
- brainlayer-1.2.0/scripts/promote_tag_entities.py +42 -0
- brainlayer-1.2.0/scripts/purge_orphaned_vectors.py +167 -0
- brainlayer-1.2.0/scripts/quarantine_noise.py +435 -0
- brainlayer-1.2.0/scripts/rebuild_vec0_tables.py +295 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/reembed_bge_m3.py +5 -1
- brainlayer-1.2.0/scripts/reembed_bgem3.py +293 -0
- brainlayer-1.2.0/scripts/replay_brain_store_fallbacks.py +108 -0
- brainlayer-1.2.0/scripts/resimhash_dedupe.py +21 -0
- brainlayer-1.2.0/scripts/run_abcde_enrich.py +170 -0
- brainlayer-1.2.0/scripts/run_benchmark.py +92 -0
- brainlayer-1.2.0/scripts/run_decay_job.py +47 -0
- brainlayer-1.2.0/scripts/run_evals.py +95 -0
- brainlayer-1.2.0/scripts/run_tests.sh +313 -0
- brainlayer-1.2.0/scripts/scope-config.py +100 -0
- brainlayer-1.2.0/scripts/score_entity_health.py +322 -0
- brainlayer-1.2.0/scripts/seed_agent_profiles.py +36 -0
- brainlayer-1.2.0/scripts/seed_aliases.py +67 -0
- brainlayer-1.2.0/scripts/smoke/README.md +1 -0
- brainlayer-1.2.0/scripts/smoke/firstturn-brainlayer-smoke.sh +83 -0
- brainlayer-1.2.0/scripts/smoke/repogolem_mcp_transport_smoke.py +134 -0
- brainlayer-1.2.0/scripts/tombstone_singleton_tags.py +53 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/verify_hebrew_search.py +5 -1
- brainlayer-1.2.0/scripts/wal_checkpoint.py +65 -0
- brainlayer-1.2.0/server.json +44 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/__init__.py +1 -1
- brainlayer-1.2.0/src/brainlayer/_helpers.py +80 -0
- brainlayer-1.2.0/src/brainlayer/agent_profiles.py +140 -0
- brainlayer-1.2.0/src/brainlayer/backup_daily.py +790 -0
- brainlayer-1.2.0/src/brainlayer/bitemporal.py +183 -0
- brainlayer-1.2.0/src/brainlayer/brainbar_hybrid_helper.py +275 -0
- brainlayer-1.2.0/src/brainlayer/calibrate.py +304 -0
- brainlayer-1.2.0/src/brainlayer/chunk_origin.py +64 -0
- brainlayer-1.2.0/src/brainlayer/chunk_origin_backfill.py +193 -0
- brainlayer-1.2.0/src/brainlayer/classify.py +75 -0
- brainlayer-1.2.0/src/brainlayer/claude_paths.py +17 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/cli/__init__.py +1046 -41
- brainlayer-1.2.0/src/brainlayer/cli/wizard.py +277 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/cli_new.py +99 -19
- brainlayer-1.2.0/src/brainlayer/cloud_backfill.py +1296 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/clustering.py +3 -2
- brainlayer-1.2.0/src/brainlayer/config.py +159 -0
- brainlayer-1.2.0/src/brainlayer/content_class.py +274 -0
- brainlayer-1.2.0/src/brainlayer/correction_judge.py +171 -0
- brainlayer-1.2.0/src/brainlayer/decay.py +27 -0
- brainlayer-1.2.0/src/brainlayer/decay_backfill.py +90 -0
- brainlayer-1.2.0/src/brainlayer/decay_job.py +163 -0
- brainlayer-1.2.0/src/brainlayer/dedupe.py +1181 -0
- brainlayer-1.2.0/src/brainlayer/drain.py +1196 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/embeddings.py +48 -17
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/engine.py +15 -0
- brainlayer-1.2.0/src/brainlayer/enrichment_controller.py +1768 -0
- brainlayer-1.2.0/src/brainlayer/eval/__init__.py +77 -0
- brainlayer-1.2.0/src/brainlayer/eval/abcde_enrich_runner.py +479 -0
- brainlayer-1.2.0/src/brainlayer/eval/abcde_variants.py +134 -0
- brainlayer-1.2.0/src/brainlayer/eval/abcde_variants.yaml +323 -0
- brainlayer-1.2.0/src/brainlayer/eval/benchmark.py +469 -0
- brainlayer-1.2.0/src/brainlayer/eval/enrichment_gold.py +291 -0
- brainlayer-1.2.0/src/brainlayer/eval/enrichment_graders.py +494 -0
- brainlayer-1.2.0/src/brainlayer/eval/enrichment_judge.py +441 -0
- brainlayer-1.2.0/src/brainlayer/eval/enrichment_llm_judge.py +365 -0
- brainlayer-1.2.0/src/brainlayer/eval/enrichment_quality_benchmark.py +784 -0
- brainlayer-1.2.0/src/brainlayer/eval/experiment_store.py +321 -0
- brainlayer-1.2.0/src/brainlayer/eval/fixtures/README.md +8 -0
- brainlayer-1.2.0/src/brainlayer/eval/labeling/enrichment-labeler.html +318 -0
- brainlayer-1.2.0/src/brainlayer/eval/phoenix_gate/__init__.py +14 -0
- brainlayer-1.2.0/src/brainlayer/eval/phoenix_gate/__main__.py +3 -0
- brainlayer-1.2.0/src/brainlayer/eval/phoenix_gate/baseline_store.py +140 -0
- brainlayer-1.2.0/src/brainlayer/eval/phoenix_gate/cli.py +73 -0
- brainlayer-1.2.0/src/brainlayer/eval/phoenix_gate/models.py +127 -0
- brainlayer-1.2.0/src/brainlayer/eval/phoenix_gate/phoenix_client.py +215 -0
- brainlayer-1.2.0/src/brainlayer/eval/phoenix_gate/regression_gate.py +89 -0
- brainlayer-1.2.0/src/brainlayer/eval/phoenix_gate/triggers.py +54 -0
- brainlayer-1.2.0/src/brainlayer/fallback_replay.py +233 -0
- brainlayer-1.2.0/src/brainlayer/git_learning.py +265 -0
- brainlayer-1.2.0/src/brainlayer/hooks/__init__.py +0 -0
- brainlayer-1.2.0/src/brainlayer/hooks/indexer.py +286 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/index_new.py +32 -4
- brainlayer-1.2.0/src/brainlayer/ingest/__init__.py +1 -0
- brainlayer-1.2.0/src/brainlayer/ingest/codex.py +538 -0
- brainlayer-1.2.0/src/brainlayer/ingest_guard.py +119 -0
- brainlayer-1.2.0/src/brainlayer/isolation_proof.py +312 -0
- brainlayer-1.2.0/src/brainlayer/jsonl_backup.py +360 -0
- brainlayer-1.2.0/src/brainlayer/kg/__init__.py +63 -0
- brainlayer-1.2.0/src/brainlayer/kg_cleanup.py +321 -0
- brainlayer-1.2.0/src/brainlayer/kg_judge.py +767 -0
- brainlayer-1.2.0/src/brainlayer/kg_promotion.py +423 -0
- brainlayer-1.2.0/src/brainlayer/kg_repo.py +1565 -0
- brainlayer-1.2.0/src/brainlayer/kg_review_session.py +583 -0
- brainlayer-1.2.0/src/brainlayer/kg_session_finish.py +341 -0
- brainlayer-1.2.0/src/brainlayer/kg_session_harvest.py +553 -0
- brainlayer-1.2.0/src/brainlayer/lexical_defense.py +134 -0
- brainlayer-1.2.0/src/brainlayer/lexical_defense_dictionary.json +246 -0
- brainlayer-1.2.0/src/brainlayer/maintenance.py +598 -0
- brainlayer-1.2.0/src/brainlayer/mcp/__init__.py +1677 -0
- brainlayer-1.2.0/src/brainlayer/mcp/_format.py +373 -0
- brainlayer-1.2.0/src/brainlayer/mcp/_shared.py +470 -0
- brainlayer-1.2.0/src/brainlayer/mcp/enrich_handler.py +129 -0
- brainlayer-1.2.0/src/brainlayer/mcp/entity_handler.py +194 -0
- brainlayer-1.2.0/src/brainlayer/mcp/search_handler.py +2302 -0
- brainlayer-1.2.0/src/brainlayer/mcp/store_handler.py +792 -0
- brainlayer-1.2.0/src/brainlayer/mcp/tags_handler.py +214 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/migrate.py +3 -2
- brainlayer-1.2.0/src/brainlayer/parent_death.py +56 -0
- brainlayer-1.2.0/src/brainlayer/paths.py +28 -0
- brainlayer-1.2.0/src/brainlayer/phonetic.py +93 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/agent_enrichment.py +188 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/batch_extraction.py +183 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/brain_graph.py +357 -37
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/classify.py +85 -5
- brainlayer-1.2.0/src/brainlayer/pipeline/code_intelligence.py +712 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/correction_detection.py +232 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/correction_mining.py +435 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/digest.py +1049 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/enrichment.py +1506 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/enrichment_tiers.py +138 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/entity_extraction.py +764 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/entity_resolution.py +389 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/frustration_mining.py +261 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/git_overlay.py +6 -6
- brainlayer-1.2.0/src/brainlayer/pipeline/kg_extraction.py +447 -0
- brainlayer-1.2.0/src/brainlayer/pipeline/kg_extraction_groq.py +247 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/operation_grouping.py +1 -2
- brainlayer-1.2.0/src/brainlayer/pipeline/rate_limiter.py +37 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/semantic_style.py +16 -5
- brainlayer-1.2.0/src/brainlayer/pipeline/sentiment.py +243 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/session_enrichment.py +5 -3
- brainlayer-1.2.0/src/brainlayer/pipeline/tag_entity_promotion.py +230 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/unified_timeline.py +1 -2
- brainlayer-1.2.0/src/brainlayer/pipeline/write_queue.py +99 -0
- brainlayer-1.2.0/src/brainlayer/provenance.py +393 -0
- brainlayer-1.2.0/src/brainlayer/provenance_autosupersede.py +383 -0
- brainlayer-1.2.0/src/brainlayer/provenance_integration.py +896 -0
- brainlayer-1.2.0/src/brainlayer/queue_io.py +212 -0
- brainlayer-1.2.0/src/brainlayer/queue_merge.py +100 -0
- brainlayer-1.2.0/src/brainlayer/reembed_backfill.py +316 -0
- brainlayer-1.2.0/src/brainlayer/scoping.py +343 -0
- brainlayer-1.2.0/src/brainlayer/search_profile.py +62 -0
- brainlayer-1.2.0/src/brainlayer/search_repo.py +2551 -0
- brainlayer-1.2.0/src/brainlayer/session_repo.py +1135 -0
- brainlayer-1.2.0/src/brainlayer/setup.py +112 -0
- brainlayer-1.2.0/src/brainlayer/store.py +536 -0
- brainlayer-1.2.0/src/brainlayer/tag_normalization.py +336 -0
- brainlayer-1.2.0/src/brainlayer/telemetry.py +213 -0
- brainlayer-1.2.0/src/brainlayer/types.py +280 -0
- brainlayer-1.2.0/src/brainlayer/vector_store.py +2414 -0
- brainlayer-1.2.0/src/brainlayer/wal_checkpoint.py +72 -0
- brainlayer-1.2.0/src/brainlayer/watcher.py +724 -0
- brainlayer-1.2.0/src/brainlayer/watcher_bridge.py +443 -0
- brainlayer-1.2.0/tests/conftest.py +90 -0
- brainlayer-1.2.0/tests/eval/phoenix_gate/test_phoenix_gate.py +352 -0
- brainlayer-1.2.0/tests/eval_baselines.json +280 -0
- brainlayer-1.2.0/tests/eval_mcp_brainlayer.json +1335 -0
- brainlayer-1.2.0/tests/eval_pr3_relevance_qrels.json +68 -0
- brainlayer-1.2.0/tests/eval_qrels.json +1533 -0
- brainlayer-1.2.0/tests/fixtures/README.md +6 -0
- brainlayer-1.2.0/tests/fixtures/stale_index_query.json +5239 -0
- brainlayer-1.2.0/tests/mock_mcp/__init__.py +30 -0
- brainlayer-1.2.0/tests/mock_mcp/assertions.py +101 -0
- brainlayer-1.2.0/tests/mock_mcp/base.py +156 -0
- brainlayer-1.2.0/tests/mock_mcp/mock_brainlayer.py +184 -0
- brainlayer-1.2.0/tests/mock_mcp/mock_github.py +223 -0
- brainlayer-1.2.0/tests/mock_mcp/mock_voicelayer.py +81 -0
- brainlayer-1.2.0/tests/regression/__init__.py +1 -0
- brainlayer-1.2.0/tests/regression/_stale_index_fixture.py +112 -0
- brainlayer-1.2.0/tests/regression/test_drift_detection.py +147 -0
- brainlayer-1.2.0/tests/regression/test_fts5_determinism.sh +50 -0
- brainlayer-1.2.0/tests/stale_index_query.test.ts +134 -0
- brainlayer-1.2.0/tests/test_3tool_aliases.py +469 -0
- brainlayer-1.2.0/tests/test_6pm_entity_upgrades.py +505 -0
- brainlayer-1.2.0/tests/test_abcde_enrich_runner.py +352 -0
- brainlayer-1.2.0/tests/test_abcde_report.py +84 -0
- brainlayer-1.2.0/tests/test_abcde_variants.py +151 -0
- brainlayer-1.2.0/tests/test_adaptive_injection.py +214 -0
- brainlayer-1.2.0/tests/test_agent_profiles.py +316 -0
- brainlayer-1.2.0/tests/test_arbitration.py +883 -0
- brainlayer-1.2.0/tests/test_atomic_brick_schema.py +430 -0
- brainlayer-1.2.0/tests/test_audit_recursion_filter.py +716 -0
- brainlayer-1.2.0/tests/test_audit_search_quality.py +188 -0
- brainlayer-1.2.0/tests/test_auto_enrich.py +415 -0
- brainlayer-1.2.0/tests/test_backup_daily.py +722 -0
- brainlayer-1.2.0/tests/test_batch_extraction.py +251 -0
- brainlayer-1.2.0/tests/test_batch_reenrichment_setup.py +74 -0
- brainlayer-1.2.0/tests/test_behavioral_pr_loop.py +421 -0
- brainlayer-1.2.0/tests/test_bitemporal_phase1.py +214 -0
- brainlayer-1.2.0/tests/test_brain_graph_compat.py +40 -0
- brainlayer-1.2.0/tests/test_brain_tags.py +270 -0
- brainlayer-1.2.0/tests/test_brainbar_build_app_guards.py +966 -0
- brainlayer-1.2.0/tests/test_brainbar_helper_fast_profile.py +169 -0
- brainlayer-1.2.0/tests/test_brainbar_hybrid_helper.py +223 -0
- brainlayer-1.2.0/tests/test_brainstore.py +602 -0
- brainlayer-1.2.0/tests/test_calibrate_importance.py +266 -0
- brainlayer-1.2.0/tests/test_chunk_lifecycle.py +403 -0
- brainlayer-1.2.0/tests/test_chunk_origin_provenance.py +312 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_classify.py +28 -0
- brainlayer-1.2.0/tests/test_cleanup_profanity_chunks.py +198 -0
- brainlayer-1.2.0/tests/test_cli_direct_sqlite.py +261 -0
- brainlayer-1.2.0/tests/test_cli_enrich.py +302 -0
- brainlayer-1.2.0/tests/test_cli_provenance.py +35 -0
- brainlayer-1.2.0/tests/test_cloud_backfill.py +557 -0
- brainlayer-1.2.0/tests/test_code_intelligence.py +872 -0
- brainlayer-1.2.0/tests/test_concurrent_enrichment.py +86 -0
- brainlayer-1.2.0/tests/test_conditional_hooks.py +863 -0
- brainlayer-1.2.0/tests/test_consumer_scoping.py +1113 -0
- brainlayer-1.2.0/tests/test_content_class.py +448 -0
- brainlayer-1.2.0/tests/test_context_pipeline.py +556 -0
- brainlayer-1.2.0/tests/test_correction_detection_gate.py +113 -0
- brainlayer-1.2.0/tests/test_correction_judge.py +86 -0
- brainlayer-1.2.0/tests/test_correction_mining.py +160 -0
- brainlayer-1.2.0/tests/test_db_lock_resilience.py +125 -0
- brainlayer-1.2.0/tests/test_decay.py +436 -0
- brainlayer-1.2.0/tests/test_dedup_coordination.py +235 -0
- brainlayer-1.2.0/tests/test_dedupe.py +765 -0
- brainlayer-1.2.0/tests/test_deferred_embedding.py +681 -0
- brainlayer-1.2.0/tests/test_deferred_mcp_provenance_guard.py +113 -0
- brainlayer-1.2.0/tests/test_dev_dependencies.py +12 -0
- brainlayer-1.2.0/tests/test_digest_connect.py +420 -0
- brainlayer-1.2.0/tests/test_digest_enrichment.py +11 -0
- brainlayer-1.2.0/tests/test_digest_pipeline_v2.py +815 -0
- brainlayer-1.2.0/tests/test_embedding_truncation.py +207 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_engine.py +2 -2
- brainlayer-1.2.0/tests/test_engine_package_boundary.py +41 -0
- brainlayer-1.2.0/tests/test_enrich_defaults.py +28 -0
- brainlayer-1.2.0/tests/test_enrich_supervisor.py +290 -0
- brainlayer-1.2.0/tests/test_enrichment_bounded_commit.py +231 -0
- brainlayer-1.2.0/tests/test_enrichment_controller.py +1654 -0
- brainlayer-1.2.0/tests/test_enrichment_data_integrity.py +155 -0
- brainlayer-1.2.0/tests/test_enrichment_entity_schema.py +347 -0
- brainlayer-1.2.0/tests/test_enrichment_fallback.py +137 -0
- brainlayer-1.2.0/tests/test_enrichment_flex_integration.py +95 -0
- brainlayer-1.2.0/tests/test_enrichment_gold.py +125 -0
- brainlayer-1.2.0/tests/test_enrichment_graders.py +235 -0
- brainlayer-1.2.0/tests/test_enrichment_judge.py +219 -0
- brainlayer-1.2.0/tests/test_enrichment_llm_judge.py +99 -0
- brainlayer-1.2.0/tests/test_enrichment_quality_benchmark.py +181 -0
- brainlayer-1.2.0/tests/test_enrichment_reliability.py +427 -0
- brainlayer-1.2.0/tests/test_enrichment_tiers.py +225 -0
- brainlayer-1.2.0/tests/test_enrichment_tiers_agent_sources.py +33 -0
- brainlayer-1.2.0/tests/test_enrichment_v2.py +439 -0
- brainlayer-1.2.0/tests/test_entity_contracts.py +552 -0
- brainlayer-1.2.0/tests/test_entity_dedup.py +456 -0
- brainlayer-1.2.0/tests/test_entity_extraction.py +421 -0
- brainlayer-1.2.0/tests/test_entity_fact_correction_judge.py +163 -0
- brainlayer-1.2.0/tests/test_entity_parent_relations.py +242 -0
- brainlayer-1.2.0/tests/test_entity_type_gate.py +111 -0
- brainlayer-1.2.0/tests/test_entity_type_sync.py +234 -0
- brainlayer-1.2.0/tests/test_eval_baselines.py +1100 -0
- brainlayer-1.2.0/tests/test_eval_framework.py +436 -0
- brainlayer-1.2.0/tests/test_experiment_store.py +178 -0
- brainlayer-1.2.0/tests/test_fallback_replay.py +299 -0
- brainlayer-1.2.0/tests/test_follow_up_rewrite.py +199 -0
- brainlayer-1.2.0/tests/test_frustration_mining.py +177 -0
- brainlayer-1.2.0/tests/test_fts5_health.py +170 -0
- brainlayer-1.2.0/tests/test_git_learning.py +247 -0
- brainlayer-1.2.0/tests/test_groq_backend.py +212 -0
- brainlayer-1.2.0/tests/test_groq_rate_limit.py +115 -0
- brainlayer-1.2.0/tests/test_hebrew_alias.py +181 -0
- brainlayer-1.2.0/tests/test_hook_slim.py +165 -0
- brainlayer-1.2.0/tests/test_hot_currentness_benchmark.py +266 -0
- brainlayer-1.2.0/tests/test_hotlane_brainbar_daemon.py +139 -0
- brainlayer-1.2.0/tests/test_hybrid_helper_contract.py +174 -0
- brainlayer-1.2.0/tests/test_hybrid_search.py +825 -0
- brainlayer-1.2.0/tests/test_hybrid_search_decay.py +189 -0
- brainlayer-1.2.0/tests/test_ingest_codex.py +435 -0
- brainlayer-1.2.0/tests/test_ingest_guard.py +541 -0
- brainlayer-1.2.0/tests/test_installable_build.py +502 -0
- brainlayer-1.2.0/tests/test_isolation_proof_harness.py +73 -0
- brainlayer-1.2.0/tests/test_issue_type.py +213 -0
- brainlayer-1.2.0/tests/test_jsonl_backup.py +284 -0
- brainlayer-1.2.0/tests/test_jsonl_watcher.py +677 -0
- brainlayer-1.2.0/tests/test_kg_boost_reconnect.py +149 -0
- brainlayer-1.2.0/tests/test_kg_cleanup.py +347 -0
- brainlayer-1.2.0/tests/test_kg_entity_dedup.py +697 -0
- brainlayer-1.2.0/tests/test_kg_extraction.py +345 -0
- brainlayer-1.2.0/tests/test_kg_hybrid_retrieval.py +246 -0
- brainlayer-1.2.0/tests/test_kg_judge.py +659 -0
- brainlayer-1.2.0/tests/test_kg_p2_crosstype_cleanup.py +123 -0
- brainlayer-1.2.0/tests/test_kg_p2_safe_cleanup.py +59 -0
- brainlayer-1.2.0/tests/test_kg_promotion.py +467 -0
- brainlayer-1.2.0/tests/test_kg_quality.py +472 -0
- brainlayer-1.2.0/tests/test_kg_rebuild.py +311 -0
- brainlayer-1.2.0/tests/test_kg_relations.py +69 -0
- brainlayer-1.2.0/tests/test_kg_review_session.py +610 -0
- brainlayer-1.2.0/tests/test_kg_schema.py +657 -0
- brainlayer-1.2.0/tests/test_kg_session_finish.py +347 -0
- brainlayer-1.2.0/tests/test_kg_session_harvest.py +595 -0
- brainlayer-1.2.0/tests/test_kg_standard.py +476 -0
- brainlayer-1.2.0/tests/test_launchd_hygiene.py +319 -0
- brainlayer-1.2.0/tests/test_lexical_defense.py +52 -0
- brainlayer-1.2.0/tests/test_lifecycle.py +398 -0
- brainlayer-1.2.0/tests/test_maintenance_routine.py +442 -0
- brainlayer-1.2.0/tests/test_mcp_digest_modes.py +91 -0
- brainlayer-1.2.0/tests/test_mcp_format.py +435 -0
- brainlayer-1.2.0/tests/test_mcp_input_schema_limits.py +71 -0
- brainlayer-1.2.0/tests/test_mcp_labeled_field_output.py +227 -0
- brainlayer-1.2.0/tests/test_mcp_lazy_startup.py +185 -0
- brainlayer-1.2.0/tests/test_mcp_socket_config_templates.py +35 -0
- brainlayer-1.2.0/tests/test_mcp_timeout.py +17 -0
- brainlayer-1.2.0/tests/test_mcp_warm_route.py +377 -0
- brainlayer-1.2.0/tests/test_mine_queries.py +180 -0
- brainlayer-1.2.0/tests/test_mlx_health_recovery.py +121 -0
- brainlayer-1.2.0/tests/test_mmr_default_off.py +169 -0
- brainlayer-1.2.0/tests/test_ner_eval.py +394 -0
- brainlayer-1.2.0/tests/test_newsyslog_config.py +87 -0
- brainlayer-1.2.0/tests/test_p0_longitudinal_count.py +103 -0
- brainlayer-1.2.0/tests/test_parent_death.py +107 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_paths.py +1 -16
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_phase2.py +5 -2
- brainlayer-1.2.0/tests/test_phase2_plugin_manifest.py +90 -0
- brainlayer-1.2.0/tests/test_phase2_plugin_queue.py +226 -0
- brainlayer-1.2.0/tests/test_phase3_digest.py +789 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_phase3_qa.py +9 -19
- brainlayer-1.2.0/tests/test_phase5.py +332 -0
- brainlayer-1.2.0/tests/test_phase6_critical.py +441 -0
- brainlayer-1.2.0/tests/test_phase6_sentiment.py +270 -0
- brainlayer-1.2.0/tests/test_post_commit_hook.py +163 -0
- brainlayer-1.2.0/tests/test_precompact_chunk_origin.py +987 -0
- brainlayer-1.2.0/tests/test_prompt_classification.py +224 -0
- brainlayer-1.2.0/tests/test_provenance.py +479 -0
- brainlayer-1.2.0/tests/test_provenance_autosupersede.py +647 -0
- brainlayer-1.2.0/tests/test_provenance_integration.py +2119 -0
- brainlayer-1.2.0/tests/test_quarantine_noise.py +198 -0
- brainlayer-1.2.0/tests/test_queue_merge.py +153 -0
- brainlayer-1.2.0/tests/test_rate_limiter.py +52 -0
- brainlayer-1.2.0/tests/test_realtime_hooks.py +246 -0
- brainlayer-1.2.0/tests/test_recent_enrichment.py +37 -0
- brainlayer-1.2.0/tests/test_reembed_backfill.py +267 -0
- brainlayer-1.2.0/tests/test_reembed_bgem3.py +245 -0
- brainlayer-1.2.0/tests/test_release_version_sync.py +22 -0
- brainlayer-1.2.0/tests/test_run_tests_script.py +423 -0
- brainlayer-1.2.0/tests/test_search_alias_expansion.py +149 -0
- brainlayer-1.2.0/tests/test_search_chunk_id.py +175 -0
- brainlayer-1.2.0/tests/test_search_exact_chunk_id.py +367 -0
- brainlayer-1.2.0/tests/test_search_filter_params.py +781 -0
- brainlayer-1.2.0/tests/test_search_gaps.py +313 -0
- brainlayer-1.2.0/tests/test_search_handler.py +247 -0
- brainlayer-1.2.0/tests/test_search_profile.py +158 -0
- brainlayer-1.2.0/tests/test_search_quality.py +552 -0
- brainlayer-1.2.0/tests/test_search_routing.py +164 -0
- brainlayer-1.2.0/tests/test_search_trigram_fts.py +118 -0
- brainlayer-1.2.0/tests/test_search_validation.py +518 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_session_enrichment.py +31 -0
- brainlayer-1.2.0/tests/test_session_enrichment_candidates.py +217 -0
- brainlayer-1.2.0/tests/test_smart_search_entity_dedup.py +400 -0
- brainlayer-1.2.0/tests/test_stale_index_fixture.py +16 -0
- brainlayer-1.2.0/tests/test_stop_hook_created_at.py +48 -0
- brainlayer-1.2.0/tests/test_store_handler.py +313 -0
- brainlayer-1.2.0/tests/test_tag_entity_promotion.py +143 -0
- brainlayer-1.2.0/tests/test_telemetry.py +177 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_think_recall_integration.py +13 -18
- brainlayer-1.2.0/tests/test_tool_annotations.py +147 -0
- brainlayer-1.2.0/tests/test_tool_description_quality.py +41 -0
- brainlayer-1.2.0/tests/test_transport_replay_attribution.py +298 -0
- brainlayer-1.2.0/tests/test_truncation.py +52 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_vector_store.py +1 -1
- brainlayer-1.2.0/tests/test_vector_store_pragma_tuning.py +126 -0
- brainlayer-1.2.0/tests/test_vector_store_readonly.py +236 -0
- brainlayer-1.2.0/tests/test_vector_store_schema_flags.py +24 -0
- brainlayer-1.2.0/tests/test_wal_checkpoint_module.py +28 -0
- brainlayer-1.2.0/tests/test_watcher_bridge.py +506 -0
- brainlayer-1.2.0/tests/test_wizard.py +101 -0
- brainlayer-1.2.0/tests/test_write_queue.py +1445 -0
- brainlayer-1.2.0/tests/test_write_resilience_under_load.py +169 -0
- brainlayer-1.2.0/tests/test_writer_pidfile_mutex.py +764 -0
- brainlayer-1.0.0/.github/workflows/ci.yml +0 -55
- brainlayer-1.0.0/.gitignore +0 -55
- brainlayer-1.0.0/CHANGELOG.md +0 -19
- brainlayer-1.0.0/CLAUDE.md +0 -456
- brainlayer-1.0.0/PKG-INFO +0 -313
- brainlayer-1.0.0/README.md +0 -255
- brainlayer-1.0.0/docs/configuration.md +0 -64
- brainlayer-1.0.0/docs/mcp-config.md +0 -42
- brainlayer-1.0.0/docs/mcp-tools.md +0 -206
- brainlayer-1.0.0/docs/research/session-enrichment/brainstore-write-tools.md +0 -33
- brainlayer-1.0.0/docs/stylesheets/extra.css +0 -37
- brainlayer-1.0.0/scripts/cloud_backfill.py +0 -757
- brainlayer-1.0.0/scripts/launchd/com.brainlayer.enrich.plist +0 -45
- brainlayer-1.0.0/scripts/launchd/com.brainlayer.index.plist +0 -36
- brainlayer-1.0.0/scripts/launchd/install.sh +0 -82
- brainlayer-1.0.0/scripts/test_extraction.py +0 -126
- brainlayer-1.0.0/server.json +0 -32
- brainlayer-1.0.0/src/brainlayer/cli/wizard.py +0 -132
- brainlayer-1.0.0/src/brainlayer/client.py +0 -164
- brainlayer-1.0.0/src/brainlayer/daemon.py +0 -1105
- brainlayer-1.0.0/src/brainlayer/dashboard/README.md +0 -129
- brainlayer-1.0.0/src/brainlayer/dashboard/__init__.py +0 -5
- brainlayer-1.0.0/src/brainlayer/dashboard/app.py +0 -151
- brainlayer-1.0.0/src/brainlayer/dashboard/search.py +0 -229
- brainlayer-1.0.0/src/brainlayer/dashboard/views.py +0 -230
- brainlayer-1.0.0/src/brainlayer/mcp/__init__.py +0 -1558
- brainlayer-1.0.0/src/brainlayer/paths.py +0 -43
- brainlayer-1.0.0/src/brainlayer/pipeline/enrichment.py +0 -810
- brainlayer-1.0.0/src/brainlayer/store.py +0 -155
- brainlayer-1.0.0/src/brainlayer/vector_store.py +0 -1891
- brainlayer-1.0.0/tests/conftest.py +0 -15
- brainlayer-1.0.0/tests/test_brainstore.py +0 -321
- brainlayer-1.0.0/tests/test_wizard.py +0 -25
- {brainlayer-1.0.0 → brainlayer-1.2.0}/.github/workflows/docs.yml +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/.github/workflows/publish.yml +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/LICENSE +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/archive/chat-based-analysis-design.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/archive/chat-tags-example.yaml +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/archive/communication-analysis.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/archive/hierarchical-clustering-deep-research.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/archive/hierarchical-clustering-research.txt +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/archive/research-chat-based-analysis.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/archive/research-prompt-embeddings.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/contributing.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/embedding-setup.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/enrichment.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/local-models-guide.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/research/session-enrichment/auto-extracting-learnings.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/research/session-enrichment/cli-ux-patterns.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/research/session-enrichment/conversation-reconstruction.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/research/session-enrichment/session-enrichment-architecture.md +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/docs/showcase-claude-collab-discovery.md +0 -0
- /brainlayer-1.0.0/docs/assets/logo.svg → /brainlayer-1.2.0/landing/logos/brainlayer.svg +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/backfill-created-at.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/backfill_data/.gitignore +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/label-chunks.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/run-second-analysis-after-first.sh +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/train-setfit.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/scripts/vertex_poll_import.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/__init__.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/analyze_communication.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/chat_tags.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/chunk.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/cluster_sampling.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/extract.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/extract_claude_desktop.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/extract_corrections.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/extract_markdown.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/extract_whatsapp.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/longitudinal_analyzer.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/obsidian_export.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/plan_linking.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/sanitize.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/style_embed.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/style_index.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/temporal_chains.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/pipeline/time_batcher.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/storage.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/src/brainlayer/taxonomy.json +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/__init__.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_chat_list.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_chunk.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_chunker.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_dashboard.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_enrichment_threshold.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_extract_markdown.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_normalize_project.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_sanitize.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_semantic_style.py +0 -0
- {brainlayer-1.0.0 → brainlayer-1.2.0}/tests/test_storage.py +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# .claude.local.md — Machine-Specific Config
|
|
2
|
+
# Copy to .claude.local.md and customize for your machine.
|
|
3
|
+
# This file is gitignored — safe for local paths, ports, and overrides.
|
|
4
|
+
|
|
5
|
+
## Local Paths
|
|
6
|
+
# - Repo: /Users/YOURUSERNAME/Gits/brainlayer
|
|
7
|
+
# - Python venv: /Users/YOURUSERNAME/Gits/brainlayer/.venv
|
|
8
|
+
# - BrainLayer DB: /Users/YOURUSERNAME/Library/Application Support/BrainBar/brainlayer.db
|
|
9
|
+
|
|
10
|
+
## BrainBar Daemon
|
|
11
|
+
# - Socket: /tmp/brainbar.sock
|
|
12
|
+
# - App: /Users/YOURUSERNAME/Applications/BrainBar.app
|
|
13
|
+
|
|
14
|
+
## Enrichment Config
|
|
15
|
+
# - BRAINLAYER_ENRICH_BACKEND: mlx (default on Apple Silicon) or ollama
|
|
16
|
+
# - Auto-enrich on brain_store uses Gemini Flash Lite (separate from backend)
|
|
17
|
+
# - Gemini API key location: 1Password vault "development"
|
|
18
|
+
|
|
19
|
+
## Dev Flags
|
|
20
|
+
# - debug_mode: false
|
|
21
|
+
# - test_db_path: /tmp/brainlayer-test.db
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Pre-push hook — regression harness gate
|
|
3
|
+
#
|
|
4
|
+
# NOT FRICTION — discipline. The 5-day regression cycle in this repo
|
|
5
|
+
# exists because past pushes bypassed checks. This hook stops that.
|
|
6
|
+
#
|
|
7
|
+
# DO NOT BYPASS:
|
|
8
|
+
# git push --no-verify ← sneaks past the hook
|
|
9
|
+
# chmod -x .githooks/pre-push ← disables it
|
|
10
|
+
#
|
|
11
|
+
# DO NOT SILENCE FAILURES:
|
|
12
|
+
# A failing test = a real bug. The Zero-RMS Hang recurred Apr 2 → Apr 27
|
|
13
|
+
# because symptomatic fixes shipped without root-cause coverage.
|
|
14
|
+
# Treat each failure as CRITICAL REVIEW TIME.
|
|
15
|
+
|
|
16
|
+
set -uo pipefail
|
|
17
|
+
[ ! -f scripts/run_tests.sh ] && { echo "⚠️ no scripts/run_tests.sh — skipping"; exit 0; }
|
|
18
|
+
BRAINLAYER_PREPUSH=1 bash scripts/run_tests.sh
|
|
19
|
+
exit_status=$?
|
|
20
|
+
|
|
21
|
+
if [ $exit_status -ne 0 ]; then
|
|
22
|
+
cat <<'BANNER'
|
|
23
|
+
|
|
24
|
+
🛑 PUSH BLOCKED — regression harness failed.
|
|
25
|
+
|
|
26
|
+
This is a real regression. DO NOT bypass with --no-verify or silence the test.
|
|
27
|
+
1. Read the failure carefully
|
|
28
|
+
2. Reproduce locally
|
|
29
|
+
3. Fix the underlying bug
|
|
30
|
+
4. If the test IS wrong, separate PR with rationale
|
|
31
|
+
|
|
32
|
+
The 5-day regression cycle exists because past pushes bypassed checks.
|
|
33
|
+
|
|
34
|
+
BANNER
|
|
35
|
+
exit $exit_status
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
exit 0
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- uses: actions/setup-python@v5
|
|
19
|
+
with:
|
|
20
|
+
python-version: ${{ matrix.python-version }}
|
|
21
|
+
|
|
22
|
+
- name: Free runner disk
|
|
23
|
+
run: |
|
|
24
|
+
df -h
|
|
25
|
+
sudo rm -rf /usr/local/lib/android /usr/share/dotnet /opt/ghc /opt/hostedtoolcache/CodeQL || true
|
|
26
|
+
df -h
|
|
27
|
+
|
|
28
|
+
- name: Cache pip
|
|
29
|
+
uses: actions/cache@v4
|
|
30
|
+
with:
|
|
31
|
+
path: ~/.cache/pip
|
|
32
|
+
key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}
|
|
33
|
+
restore-keys: ${{ runner.os }}-pip-${{ matrix.python-version }}-
|
|
34
|
+
|
|
35
|
+
- name: Cache Hugging Face models
|
|
36
|
+
uses: actions/cache@v4
|
|
37
|
+
with:
|
|
38
|
+
path: ~/.cache/huggingface
|
|
39
|
+
key: ${{ runner.os }}-hf-bge-large-en-v1.5-bge-m3
|
|
40
|
+
|
|
41
|
+
- name: Install
|
|
42
|
+
run: pip install -e ".[dev]"
|
|
43
|
+
|
|
44
|
+
- name: Warm Hugging Face model cache
|
|
45
|
+
run: |
|
|
46
|
+
python - <<'PY'
|
|
47
|
+
import time
|
|
48
|
+
|
|
49
|
+
from huggingface_hub import snapshot_download
|
|
50
|
+
|
|
51
|
+
model_ids = ["BAAI/bge-large-en-v1.5", "BAAI/bge-m3"]
|
|
52
|
+
delays = [5, 15, 30]
|
|
53
|
+
|
|
54
|
+
for model_id in model_ids:
|
|
55
|
+
for attempt in range(1, len(delays) + 2):
|
|
56
|
+
try:
|
|
57
|
+
snapshot_download(repo_id=model_id)
|
|
58
|
+
print(f"Warmed Hugging Face cache for {model_id}")
|
|
59
|
+
break
|
|
60
|
+
except Exception as exc:
|
|
61
|
+
if attempt == len(delays) + 1:
|
|
62
|
+
print(f"::warning::Unable to warm Hugging Face cache for {model_id}: {exc!r}")
|
|
63
|
+
break
|
|
64
|
+
delay = delays[attempt - 1]
|
|
65
|
+
print(f"Unable to warm Hugging Face cache for {model_id} on attempt {attempt}; retrying in {delay}s: {exc!r}")
|
|
66
|
+
time.sleep(delay)
|
|
67
|
+
PY
|
|
68
|
+
|
|
69
|
+
- name: Unit tests
|
|
70
|
+
env:
|
|
71
|
+
HF_HUB_OFFLINE: "1"
|
|
72
|
+
TRANSFORMERS_OFFLINE: "1"
|
|
73
|
+
run: >
|
|
74
|
+
pytest tests/ -v --tb=short -m "not integration and not live" -x
|
|
75
|
+
--ignore=tests/test_eval_framework.py
|
|
76
|
+
--ignore=tests/test_follow_up_rewrite.py
|
|
77
|
+
--ignore=tests/test_prompt_classification.py
|
|
78
|
+
|
|
79
|
+
- name: Isolated eval and hook routing tests
|
|
80
|
+
env:
|
|
81
|
+
HF_HUB_OFFLINE: "1"
|
|
82
|
+
TRANSFORMERS_OFFLINE: "1"
|
|
83
|
+
run: >
|
|
84
|
+
pytest
|
|
85
|
+
tests/test_eval_framework.py
|
|
86
|
+
tests/test_follow_up_rewrite.py
|
|
87
|
+
tests/test_prompt_classification.py
|
|
88
|
+
-v --tb=short -x
|
|
89
|
+
|
|
90
|
+
- name: MCP tool registration
|
|
91
|
+
env:
|
|
92
|
+
HF_HUB_OFFLINE: "1"
|
|
93
|
+
TRANSFORMERS_OFFLINE: "1"
|
|
94
|
+
run: pytest tests/test_think_recall_integration.py::TestMCPToolCount -v --tb=short
|
|
95
|
+
|
|
96
|
+
lint:
|
|
97
|
+
runs-on: ubuntu-latest
|
|
98
|
+
steps:
|
|
99
|
+
- uses: actions/checkout@v4
|
|
100
|
+
|
|
101
|
+
- uses: actions/setup-python@v5
|
|
102
|
+
with:
|
|
103
|
+
python-version: "3.13"
|
|
104
|
+
|
|
105
|
+
- name: Cache pip
|
|
106
|
+
uses: actions/cache@v4
|
|
107
|
+
with:
|
|
108
|
+
path: ~/.cache/pip
|
|
109
|
+
key: ${{ runner.os }}-pip-lint-${{ hashFiles('pyproject.toml') }}
|
|
110
|
+
|
|
111
|
+
- run: pip install ruff
|
|
112
|
+
- run: ruff check src/ tests/
|
|
113
|
+
- run: ruff format --check src/ tests/
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.so
|
|
6
|
+
.venv/
|
|
7
|
+
venv/
|
|
8
|
+
env/
|
|
9
|
+
|
|
10
|
+
# Build
|
|
11
|
+
dist/
|
|
12
|
+
build/
|
|
13
|
+
*.egg-info/
|
|
14
|
+
*.egg
|
|
15
|
+
# MkDocs build output (not our Next.js site/ directory)
|
|
16
|
+
docs/site/
|
|
17
|
+
site/node_modules/
|
|
18
|
+
site/.next/
|
|
19
|
+
|
|
20
|
+
# Testing
|
|
21
|
+
.pytest_cache/
|
|
22
|
+
.ruff_cache/
|
|
23
|
+
htmlcov/
|
|
24
|
+
.coverage
|
|
25
|
+
.tox/
|
|
26
|
+
|
|
27
|
+
# Data
|
|
28
|
+
*.db
|
|
29
|
+
*.db-wal
|
|
30
|
+
*.db-shm
|
|
31
|
+
data/
|
|
32
|
+
|
|
33
|
+
# Secrets
|
|
34
|
+
.env
|
|
35
|
+
.env.local
|
|
36
|
+
.env.*.local
|
|
37
|
+
|
|
38
|
+
# IDE
|
|
39
|
+
.idea/
|
|
40
|
+
.vscode/
|
|
41
|
+
*.swp
|
|
42
|
+
*.swo
|
|
43
|
+
*~
|
|
44
|
+
|
|
45
|
+
# Local working files (audit logs, prompts, scratch)
|
|
46
|
+
.tmp-*
|
|
47
|
+
grill*/
|
|
48
|
+
docs.local/
|
|
49
|
+
|
|
50
|
+
# Internal planning docs (contain cross-repo references)
|
|
51
|
+
docs/plan/
|
|
52
|
+
|
|
53
|
+
# OS
|
|
54
|
+
.DS_Store
|
|
55
|
+
Thumbs.db
|
|
56
|
+
|
|
57
|
+
# Lock files (reproducible installs handled via pyproject.toml)
|
|
58
|
+
uv.lock
|
|
59
|
+
|
|
60
|
+
# Claude scratchpad
|
|
61
|
+
claude.scratchpad.md
|
|
62
|
+
|
|
63
|
+
# MCP config (contains secrets)
|
|
64
|
+
.mcp.json
|
|
65
|
+
.mcp.json.bak
|
|
66
|
+
!extensions/brainlayer-plugin/.mcp.json
|
|
67
|
+
|
|
68
|
+
# Claude Code project settings
|
|
69
|
+
.claude/
|
|
70
|
+
|
|
71
|
+
# Local eval outputs (tracked baselines remain tracked)
|
|
72
|
+
tests/eval_results/
|
|
73
|
+
|
|
74
|
+
# Raw enriched eval rows contain PERSONAL chunk content — NEVER commit (privacy).
|
|
75
|
+
# Aggregate metrics go in results/ instead; raw rows archived to Brain Drive.
|
|
76
|
+
eval_results/*.jsonl
|
|
77
|
+
|
|
78
|
+
# Progress trackers (ephemeral)
|
|
79
|
+
scripts/.kg_rebuild_progress.json
|
|
80
|
+
|
|
81
|
+
# Machine-local Claude config
|
|
82
|
+
.claude.local.md
|
|
83
|
+
.vercel
|
|
84
|
+
site/
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Run: ~/Gits/orchestrator/scripts/mcp-setup.sh ~/Gits/brainlayer",
|
|
3
|
+
"_comment2": "brainlayer-socat: BrainBar daemon on Unix socket (replaces 9 Python processes)",
|
|
4
|
+
"mcpServers": {
|
|
5
|
+
"brainlayer": {
|
|
6
|
+
"command": "socat",
|
|
7
|
+
"args": ["STDIO", "UNIX-CONNECT:/tmp/brainbar.sock"]
|
|
8
|
+
},
|
|
9
|
+
"voicelayer": {
|
|
10
|
+
"command": "voicelayer-mcp"
|
|
11
|
+
},
|
|
12
|
+
"cmux": {
|
|
13
|
+
"command": "node",
|
|
14
|
+
"args": [
|
|
15
|
+
"/Users/etanheyman/Gits/orchestrator/tools/cmux-mcp/dist/index.js"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# BrainLayer Agent Notes
|
|
2
|
+
|
|
3
|
+
BrainLayer is the memory layer for the entire ecosystem. If it breaks, every golem degrades into a vanilla LLM with no durable recall.
|
|
4
|
+
|
|
5
|
+
## Review Guidelines
|
|
6
|
+
- Treat retrieval correctness, write safety, and MCP stability as critical-path concerns.
|
|
7
|
+
- Prefer finding regressions in search quality, lock handling, and tool contracts before style or refactor nits.
|
|
8
|
+
- Flag risky DB or concurrency changes explicitly. Do not hand-wave lock behavior.
|
|
9
|
+
|
|
10
|
+
## Key Paths
|
|
11
|
+
- `src/brainlayer/`
|
|
12
|
+
- `scripts/`
|
|
13
|
+
- `tests/`
|
|
14
|
+
|
|
15
|
+
## Database
|
|
16
|
+
- Canonical DB: `~/.local/share/brainlayer/brainlayer.db`
|
|
17
|
+
|
|
18
|
+
## MCP Tools
|
|
19
|
+
- `brain_search`
|
|
20
|
+
- `brain_store`
|
|
21
|
+
- `brain_recall`
|
|
22
|
+
- `brain_expand`
|
|
23
|
+
- `brain_digest`
|
|
24
|
+
- `brain_entity`
|
|
25
|
+
- `brain_update`
|
|
26
|
+
- `brain_tags`
|
|
27
|
+
|
|
28
|
+
## Concurrency Rules
|
|
29
|
+
- One write at a time.
|
|
30
|
+
- Reads are safe.
|
|
31
|
+
- `brain_digest` is write-heavy; do not run it in parallel with other MCP work.
|
|
32
|
+
|
|
33
|
+
## Tests
|
|
34
|
+
- Run `pytest` before claiming behavior changed safely.
|
|
35
|
+
- Current suite size: 929 tests.
|
|
36
|
+
|
|
37
|
+
## PR Workflow
|
|
38
|
+
- Request `@codex review`.
|
|
39
|
+
- Request `@cursor` and `@bugbot` review.
|
|
40
|
+
|
|
41
|
+
## Known Issues
|
|
42
|
+
- DB locking during enrichment.
|
|
43
|
+
- WAL can grow to 4.7GB.
|