@polderlabs/bizar 9.0.0 → 10.0.5
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.
- package/bizar-dash/BROWSER_VERIFICATION.md +190 -0
- package/bizar-dash/CHANGELOG.md +452 -0
- package/bizar-dash/CONTROL_SURFACES.md +157 -0
- package/bizar-dash/SETTINGS_AUDIT.md +225 -0
- package/bizar-dash/dist/assets/ActivityFeed-DbZT1TnN.js +11 -0
- package/bizar-dash/dist/assets/ActivityFeed-DbZT1TnN.js.map +1 -0
- package/bizar-dash/dist/assets/ActivityView-DfrBu-ED.js +7 -0
- package/bizar-dash/dist/assets/ActivityView-DfrBu-ED.js.map +1 -0
- package/bizar-dash/dist/assets/AdminView-DSbzp67e.js +11 -0
- package/bizar-dash/dist/assets/AdminView-DSbzp67e.js.map +1 -0
- package/bizar-dash/dist/assets/AgentsView-BaR-e4UO.js +13 -0
- package/bizar-dash/dist/assets/AgentsView-BaR-e4UO.js.map +1 -0
- package/bizar-dash/dist/assets/ArtifactsView-Dddh5NWn.js +6 -0
- package/bizar-dash/dist/assets/ArtifactsView-Dddh5NWn.js.map +1 -0
- package/bizar-dash/dist/assets/AuthView-CcTxahxz.js +16 -0
- package/bizar-dash/dist/assets/AuthView-CcTxahxz.js.map +1 -0
- package/bizar-dash/dist/assets/BackgroundJobsView-DxiSs69H.js +1 -0
- package/bizar-dash/dist/assets/BackgroundJobsView-DxiSs69H.js.map +1 -0
- package/bizar-dash/dist/assets/BackupView-BPS8REBD.js +1 -0
- package/bizar-dash/dist/assets/BackupView-BPS8REBD.js.map +1 -0
- package/bizar-dash/dist/assets/Banner-Bx1hIUM9.js +1 -0
- package/bizar-dash/dist/assets/Banner-Bx1hIUM9.js.map +1 -0
- package/bizar-dash/dist/assets/Card-ZAdgpn3-.js +1 -0
- package/bizar-dash/dist/assets/Card-ZAdgpn3-.js.map +1 -0
- package/bizar-dash/dist/assets/ChatView-CM_mrwom.js +9 -0
- package/bizar-dash/dist/assets/ChatView-CM_mrwom.js.map +1 -0
- package/bizar-dash/dist/assets/Chip-k5K9DYAf.js +1 -0
- package/bizar-dash/dist/assets/Chip-k5K9DYAf.js.map +1 -0
- package/bizar-dash/dist/assets/ClaudeSessionsView-Dq40JNVC.js +1 -0
- package/bizar-dash/dist/assets/ClaudeSessionsView-Dq40JNVC.js.map +1 -0
- package/bizar-dash/dist/assets/ClipboardView-B-TwPtaC.js +1 -0
- package/bizar-dash/dist/assets/ClipboardView-B-TwPtaC.js.map +1 -0
- package/bizar-dash/dist/assets/ConfigView-C_eZMscY.js +1 -0
- package/bizar-dash/dist/assets/ConfigView-C_eZMscY.js.map +1 -0
- package/bizar-dash/dist/assets/DiagnosticsView-Cex6UdD8.js +2 -0
- package/bizar-dash/dist/assets/DiagnosticsView-Cex6UdD8.js.map +1 -0
- package/bizar-dash/dist/assets/DialogsView-DTMRJd0K.js +6 -0
- package/bizar-dash/dist/assets/DialogsView-DTMRJd0K.js.map +1 -0
- package/bizar-dash/dist/assets/DoctorView-BTCUpzXT.js +6 -0
- package/bizar-dash/dist/assets/DoctorView-BTCUpzXT.js.map +1 -0
- package/bizar-dash/dist/assets/EmptyState-DQzo47a_.js +1 -0
- package/bizar-dash/dist/assets/EmptyState-DQzo47a_.js.map +1 -0
- package/bizar-dash/dist/assets/EnvVarsView-Dnap-pmQ.js +8 -0
- package/bizar-dash/dist/assets/EnvVarsView-Dnap-pmQ.js.map +1 -0
- package/bizar-dash/dist/assets/ErrorState-DZYn3VL_.js +6 -0
- package/bizar-dash/dist/assets/ErrorState-DZYn3VL_.js.map +1 -0
- package/bizar-dash/dist/assets/EvalView-B0YgoXpm.js +1 -0
- package/bizar-dash/dist/assets/EvalView-B0YgoXpm.js.map +1 -0
- package/bizar-dash/dist/assets/GoalsView-YEbgpx2i.js +6 -0
- package/bizar-dash/dist/assets/GoalsView-YEbgpx2i.js.map +1 -0
- package/bizar-dash/dist/assets/Grid-CN6IV8NB.js +1 -0
- package/bizar-dash/dist/assets/Grid-CN6IV8NB.js.map +1 -0
- package/bizar-dash/dist/assets/HeadroomView-C_-l8ojG.js +11 -0
- package/bizar-dash/dist/assets/HeadroomView-C_-l8ojG.js.map +1 -0
- package/bizar-dash/dist/assets/HistoryView-BICvR96Y.js +1 -0
- package/bizar-dash/dist/assets/HistoryView-BICvR96Y.js.map +1 -0
- package/bizar-dash/dist/assets/Input-BRHotaQu.js +1 -0
- package/bizar-dash/dist/assets/Input-BRHotaQu.js.map +1 -0
- package/bizar-dash/dist/assets/KanbanCard-BvkJ9Xwg.js +11 -0
- package/bizar-dash/dist/assets/KanbanCard-BvkJ9Xwg.js.map +1 -0
- package/bizar-dash/dist/assets/LibrariesView-BXjfXc-o.js +52 -0
- package/bizar-dash/dist/assets/LibrariesView-BXjfXc-o.js.map +1 -0
- package/bizar-dash/dist/assets/LightRAGView-DKfQd0lo.js +6 -0
- package/bizar-dash/dist/assets/LightRAGView-DKfQd0lo.js.map +1 -0
- package/bizar-dash/dist/assets/ListHeader-DRqP1u_I.js +1 -0
- package/bizar-dash/dist/assets/ListHeader-DRqP1u_I.js.map +1 -0
- package/bizar-dash/dist/assets/MemoryView-DouzHGXp.js +8 -0
- package/bizar-dash/dist/assets/MemoryView-DouzHGXp.js.map +1 -0
- package/bizar-dash/dist/assets/MessageBubble-CIapZ4YY.js +29 -0
- package/bizar-dash/dist/assets/MessageBubble-CIapZ4YY.js.map +1 -0
- package/bizar-dash/dist/assets/MiscView-BqxBRW9r.js +1 -0
- package/bizar-dash/dist/assets/MiscView-BqxBRW9r.js.map +1 -0
- package/bizar-dash/dist/assets/ModsView-B9apzm7l.js +6 -0
- package/bizar-dash/dist/assets/ModsView-B9apzm7l.js.map +1 -0
- package/bizar-dash/dist/assets/NotificationsView-O1BrGRRZ.js +6 -0
- package/bizar-dash/dist/assets/NotificationsView-O1BrGRRZ.js.map +1 -0
- package/bizar-dash/dist/assets/ObsidianView-0_Nc0IwJ.js +1 -0
- package/bizar-dash/dist/assets/ObsidianView-0_Nc0IwJ.js.map +1 -0
- package/bizar-dash/dist/assets/OverviewView-D6WmCxyc.js +1 -0
- package/bizar-dash/dist/assets/OverviewView-D6WmCxyc.js.map +1 -0
- package/bizar-dash/dist/assets/ProgressBar-BXqAmiA8.js +1 -0
- package/bizar-dash/dist/assets/ProgressBar-BXqAmiA8.js.map +1 -0
- package/bizar-dash/dist/assets/ProjectsView-BbHq_OF3.js +11 -0
- package/bizar-dash/dist/assets/ProjectsView-BbHq_OF3.js.map +1 -0
- package/bizar-dash/dist/assets/ProvidersView-dQOPha2i.js +11 -0
- package/bizar-dash/dist/assets/ProvidersView-dQOPha2i.js.map +1 -0
- package/bizar-dash/dist/assets/SchedulesView-DllGEgon.js +1 -0
- package/bizar-dash/dist/assets/SchedulesView-DllGEgon.js.map +1 -0
- package/bizar-dash/dist/assets/Select-xrQ0htmD.js +6 -0
- package/bizar-dash/dist/assets/Select-xrQ0htmD.js.map +1 -0
- package/bizar-dash/dist/assets/SettingsRow-BNSh_paj.js +1 -0
- package/bizar-dash/dist/assets/SettingsRow-BNSh_paj.js.map +1 -0
- package/bizar-dash/dist/assets/SettingsView-B2LyDoxB.js +18 -0
- package/bizar-dash/dist/assets/SettingsView-B2LyDoxB.js.map +1 -0
- package/bizar-dash/dist/assets/Sheet-C-djzbtS.js +1 -0
- package/bizar-dash/dist/assets/Sheet-C-djzbtS.js.map +1 -0
- package/bizar-dash/dist/assets/Slider-DmOSInmR.js +1 -0
- package/bizar-dash/dist/assets/Slider-DmOSInmR.js.map +1 -0
- package/bizar-dash/dist/assets/Sparkline-fGhOoGf0.js +1 -0
- package/bizar-dash/dist/assets/Sparkline-fGhOoGf0.js.map +1 -0
- package/bizar-dash/dist/assets/Switch-D5gPfsKd.js +10 -0
- package/bizar-dash/dist/assets/Switch-D5gPfsKd.js.map +1 -0
- package/bizar-dash/dist/assets/TasksView-Dw4YtwQB.js +1 -0
- package/bizar-dash/dist/assets/TasksView-Dw4YtwQB.js.map +1 -0
- package/bizar-dash/dist/assets/Textarea-Cv1HX9p1.js +1 -0
- package/bizar-dash/dist/assets/Textarea-Cv1HX9p1.js.map +1 -0
- package/bizar-dash/dist/assets/UpdateView-Bj0LzpMs.js +6 -0
- package/bizar-dash/dist/assets/UpdateView-Bj0LzpMs.js.map +1 -0
- package/bizar-dash/dist/assets/UsageView-CE-23yYu.js +1 -0
- package/bizar-dash/dist/assets/UsageView-CE-23yYu.js.map +1 -0
- package/bizar-dash/dist/assets/ViewHeader-2Oyjj9Yt.js +6 -0
- package/bizar-dash/dist/assets/ViewHeader-2Oyjj9Yt.js.map +1 -0
- package/bizar-dash/dist/assets/VoiceView-C3S92MfP.js +1 -0
- package/bizar-dash/dist/assets/VoiceView-C3S92MfP.js.map +1 -0
- package/bizar-dash/dist/assets/brain-B8oDQ4kM.js +6 -0
- package/bizar-dash/dist/assets/brain-B8oDQ4kM.js.map +1 -0
- package/bizar-dash/dist/assets/calendar-C1WTDPNZ.js +6 -0
- package/bizar-dash/dist/assets/calendar-C1WTDPNZ.js.map +1 -0
- package/bizar-dash/dist/assets/chevron-down-DjgW4FtB.js +6 -0
- package/bizar-dash/dist/assets/chevron-down-DjgW4FtB.js.map +1 -0
- package/bizar-dash/dist/assets/circle-COwUk6Jw.js +6 -0
- package/bizar-dash/dist/assets/circle-COwUk6Jw.js.map +1 -0
- package/bizar-dash/dist/assets/circle-alert-D_fRRCnG.js +6 -0
- package/bizar-dash/dist/assets/circle-alert-D_fRRCnG.js.map +1 -0
- package/bizar-dash/dist/assets/circle-check-CYpMZPTO.js +6 -0
- package/bizar-dash/dist/assets/circle-check-CYpMZPTO.js.map +1 -0
- package/bizar-dash/dist/assets/clock-BsVbT1kp.js +6 -0
- package/bizar-dash/dist/assets/clock-BsVbT1kp.js.map +1 -0
- package/bizar-dash/dist/assets/cmdk-DMW_3pWz.js +80 -0
- package/bizar-dash/dist/assets/cmdk-DMW_3pWz.js.map +1 -0
- package/bizar-dash/dist/assets/dnd-kit-DWBZ6HFE.js +5 -0
- package/bizar-dash/dist/assets/dnd-kit-DWBZ6HFE.js.map +1 -0
- package/bizar-dash/dist/assets/download-Cct5qHWG.js +6 -0
- package/bizar-dash/dist/assets/download-Cct5qHWG.js.map +1 -0
- package/bizar-dash/dist/assets/external-link-CKZQsK9X.js +6 -0
- package/bizar-dash/dist/assets/external-link-CKZQsK9X.js.map +1 -0
- package/bizar-dash/dist/assets/file-text-DNFl94X6.js +6 -0
- package/bizar-dash/dist/assets/file-text-DNFl94X6.js.map +1 -0
- package/bizar-dash/dist/assets/git-branch-qmhKTtT0.js +6 -0
- package/bizar-dash/dist/assets/git-branch-qmhKTtT0.js.map +1 -0
- package/bizar-dash/dist/assets/git-pull-request-o7G3ez_L.js +11 -0
- package/bizar-dash/dist/assets/git-pull-request-o7G3ez_L.js.map +1 -0
- package/bizar-dash/dist/assets/index-CRPdftkz.js +1 -0
- package/bizar-dash/dist/assets/index-CRPdftkz.js.map +1 -0
- package/bizar-dash/dist/assets/index-VI2tohpo.js +1 -0
- package/bizar-dash/dist/assets/index-VI2tohpo.js.map +1 -0
- package/bizar-dash/dist/assets/main-zDgXFFYt.js +244 -0
- package/bizar-dash/dist/assets/main-zDgXFFYt.js.map +1 -0
- package/bizar-dash/dist/assets/pause-B_hjj388.js +6 -0
- package/bizar-dash/dist/assets/pause-B_hjj388.js.map +1 -0
- package/bizar-dash/dist/assets/pencil-BQXiRgKu.js +6 -0
- package/bizar-dash/dist/assets/pencil-BQXiRgKu.js.map +1 -0
- package/bizar-dash/dist/assets/play-DF3wgBsQ.js +6 -0
- package/bizar-dash/dist/assets/play-DF3wgBsQ.js.map +1 -0
- package/bizar-dash/dist/assets/plug-DpD127rq.js +6 -0
- package/bizar-dash/dist/assets/plug-DpD127rq.js.map +1 -0
- package/bizar-dash/dist/assets/plus-CbojvfqK.js +6 -0
- package/bizar-dash/dist/assets/plus-CbojvfqK.js.map +1 -0
- package/bizar-dash/dist/assets/power-off-EnQo8iQy.js +6 -0
- package/bizar-dash/dist/assets/power-off-EnQo8iQy.js.map +1 -0
- package/bizar-dash/dist/assets/power-uH0f5Ihr.js +6 -0
- package/bizar-dash/dist/assets/power-uH0f5Ihr.js.map +1 -0
- package/bizar-dash/dist/assets/refresh-ccw-BQ_hQs-U.js +6 -0
- package/bizar-dash/dist/assets/refresh-ccw-BQ_hQs-U.js.map +1 -0
- package/bizar-dash/dist/assets/refresh-cw-CYS8luDH.js +6 -0
- package/bizar-dash/dist/assets/refresh-cw-CYS8luDH.js.map +1 -0
- package/bizar-dash/dist/assets/rotate-ccw-CTVANG1v.js +6 -0
- package/bizar-dash/dist/assets/rotate-ccw-CTVANG1v.js.map +1 -0
- package/bizar-dash/dist/assets/rotate-cw-BSsC5XrT.js +6 -0
- package/bizar-dash/dist/assets/rotate-cw-BSsC5XrT.js.map +1 -0
- package/bizar-dash/dist/assets/save-kxSwq3AI.js +6 -0
- package/bizar-dash/dist/assets/save-kxSwq3AI.js.map +1 -0
- package/bizar-dash/dist/assets/send-DkuyD_Sf.js +6 -0
- package/bizar-dash/dist/assets/send-DkuyD_Sf.js.map +1 -0
- package/bizar-dash/dist/assets/shield-alert-COajyBNI.js +6 -0
- package/bizar-dash/dist/assets/shield-alert-COajyBNI.js.map +1 -0
- package/bizar-dash/dist/assets/trash-2-BzH_id_0.js +6 -0
- package/bizar-dash/dist/assets/trash-2-BzH_id_0.js.map +1 -0
- package/bizar-dash/dist/assets/trending-up-DWgBlnxO.js +6 -0
- package/bizar-dash/dist/assets/trending-up-DWgBlnxO.js.map +1 -0
- package/bizar-dash/dist/assets/triangle-alert-D3wjJjjj.js +6 -0
- package/bizar-dash/dist/assets/triangle-alert-D3wjJjjj.js.map +1 -0
- package/bizar-dash/dist/assets/upload--yQe-28C.js +6 -0
- package/bizar-dash/dist/assets/upload--yQe-28C.js.map +1 -0
- package/bizar-dash/dist/assets/zap-BVpFD6-i.js +6 -0
- package/bizar-dash/dist/assets/zap-BVpFD6-i.js.map +1 -0
- package/bizar-dash/dist/index.html +19 -0
- package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/bizar-dash/src/server/agents-store.mjs +1 -0
- package/bizar-dash/src/server/api.mjs +5 -0
- package/bizar-dash/src/server/claude-runner.mjs +5 -0
- package/bizar-dash/src/server/dialog-store.mjs +84 -2
- package/bizar-dash/src/server/memory-lightrag.mjs +14 -9
- package/bizar-dash/src/server/progress-parser.mjs +13 -1
- package/bizar-dash/src/server/progress-parser.test.mjs +24 -0
- package/bizar-dash/src/server/routes/admin.mjs +163 -0
- package/bizar-dash/src/server/routes/agents-cc.mjs +171 -24
- package/bizar-dash/src/server/routes/agents.mjs +20 -5
- package/bizar-dash/src/server/routes/claude-session-detail.mjs +38 -0
- package/bizar-dash/src/server/routes/dialogs.mjs +31 -0
- package/bizar-dash/src/server/routes/goals.mjs +107 -3
- package/bizar-dash/src/server/routes/overview.mjs +131 -4
- package/bizar-dash/src/server/routes/overview.test.mjs +65 -0
- package/bizar-dash/src/server/routes/providers.mjs +53 -0
- package/bizar-dash/src/server/routes/tasks.mjs +51 -1
- package/bizar-dash/src/server/server.mjs +20 -9
- package/bizar-dash/src/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/bizar-dash/src/web/v8/App.tsx +102 -1
- package/bizar-dash/src/web/v8/__tests__/admin-view.test.tsx +105 -0
- package/bizar-dash/src/web/v8/__tests__/agent-card-metrics.test.tsx +54 -0
- package/bizar-dash/src/web/v8/__tests__/agent-detail-tasks.test.tsx +68 -0
- package/bizar-dash/src/web/v8/__tests__/agent-hierarchy.test.tsx +79 -0
- package/bizar-dash/src/web/v8/__tests__/agents-stuck-banner.test.tsx +142 -0
- package/bizar-dash/src/web/v8/__tests__/artifacts-view.test.tsx +102 -0
- package/bizar-dash/src/web/v8/__tests__/audit-fixes.test.tsx +139 -0
- package/bizar-dash/src/web/v8/__tests__/auth-view.test.tsx +94 -0
- package/bizar-dash/src/web/v8/__tests__/chat-types.test.ts +55 -0
- package/bizar-dash/src/web/v8/__tests__/chat-view.test.tsx +142 -0
- package/bizar-dash/src/web/v8/__tests__/claude-sessions-view.test.tsx +159 -0
- package/bizar-dash/src/web/v8/__tests__/clipboard-view.test.tsx +90 -0
- package/bizar-dash/src/web/v8/__tests__/config-view.test.tsx +111 -0
- package/bizar-dash/src/web/v8/__tests__/dialogs-view.test.tsx +81 -0
- package/bizar-dash/src/web/v8/__tests__/env-vars-view.test.tsx +123 -0
- package/bizar-dash/src/web/v8/__tests__/goals-cc-roundtrip.test.tsx +94 -0
- package/bizar-dash/src/web/v8/__tests__/history-view.test.tsx +96 -0
- package/bizar-dash/src/web/v8/__tests__/lightrag-view.test.tsx +90 -0
- package/bizar-dash/src/web/v8/__tests__/misc-view.test.tsx +79 -0
- package/bizar-dash/src/web/v8/__tests__/mods-view.test.tsx +123 -0
- package/bizar-dash/src/web/v8/__tests__/new-views.test.tsx +177 -0
- package/bizar-dash/src/web/v8/__tests__/obsidian-view.test.tsx +82 -0
- package/bizar-dash/src/web/v8/__tests__/overview-trends.test.tsx +87 -0
- package/bizar-dash/src/web/v8/__tests__/projects-view.test.tsx +134 -0
- package/bizar-dash/src/web/v8/__tests__/providers-view.test.tsx +100 -0
- package/bizar-dash/src/web/v8/__tests__/update-view.test.tsx +89 -0
- package/bizar-dash/src/web/v8/__tests__/voice-view.test.tsx +80 -0
- package/bizar-dash/src/web/v8/data/types.ts +73 -2
- package/bizar-dash/src/web/v8/data/useWebSocket.ts +45 -0
- package/bizar-dash/src/web/v8/shell/Sidebar.tsx +52 -1
- package/bizar-dash/src/web/v8/ui/agents/AgentCard.tsx +96 -15
- package/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +168 -12
- package/bizar-dash/src/web/v8/ui/agents/AgentLiveOutput.tsx +252 -0
- package/bizar-dash/src/web/v8/ui/chat/ChatDrawer.tsx +208 -0
- package/bizar-dash/src/web/v8/ui/chat/EventStream.tsx +83 -0
- package/bizar-dash/src/web/v8/ui/chat/MessageBubble.tsx +174 -0
- package/bizar-dash/src/web/v8/ui/data/ListHeader.tsx +94 -0
- package/bizar-dash/src/web/v8/ui/feedback/ErrorState.tsx +116 -0
- package/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +27 -0
- package/bizar-dash/src/web/v8/ui/index.ts +7 -1
- package/bizar-dash/src/web/v8/ui/tasks/TaskDetail.tsx +313 -0
- package/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +75 -4
- package/bizar-dash/src/web/v8/views/Admin/AdminView.tsx +210 -0
- package/bizar-dash/src/web/v8/views/Agents/AgentHierarchy.tsx +212 -0
- package/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +328 -21
- package/bizar-dash/src/web/v8/views/Artifacts/ArtifactsView.tsx +241 -0
- package/bizar-dash/src/web/v8/views/Auth/AuthView.tsx +175 -0
- package/bizar-dash/src/web/v8/views/BackgroundJobs/BackgroundJobsView.tsx +1 -1
- package/bizar-dash/src/web/v8/views/Backup/BackupView.tsx +204 -0
- package/bizar-dash/src/web/v8/views/Chat/ChatView.tsx +356 -0
- package/bizar-dash/src/web/v8/views/ClaudeSessions/ClaudeSessionDetail.tsx +133 -0
- package/bizar-dash/src/web/v8/views/ClaudeSessions/ClaudeSessionsView.tsx +331 -0
- package/bizar-dash/src/web/v8/views/Clipboard/ClipboardView.tsx +210 -0
- package/bizar-dash/src/web/v8/views/Config/ConfigView.tsx +364 -0
- package/bizar-dash/src/web/v8/views/Diagnostics/DiagnosticsView.tsx +160 -0
- package/bizar-dash/src/web/v8/views/Dialogs/DialogsView.tsx +196 -0
- package/bizar-dash/src/web/v8/views/Doctor/DoctorView.tsx +181 -0
- package/bizar-dash/src/web/v8/views/EnvVars/EnvVarsView.tsx +365 -0
- package/bizar-dash/src/web/v8/views/Eval/EvalView.tsx +278 -0
- package/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +168 -10
- package/bizar-dash/src/web/v8/views/Headroom/HeadroomView.tsx +201 -0
- package/bizar-dash/src/web/v8/views/History/HistoryView.tsx +227 -0
- package/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +13 -3
- package/bizar-dash/src/web/v8/views/LightRAG/LightRAGView.tsx +183 -0
- package/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +30 -3
- package/bizar-dash/src/web/v8/views/Misc/MiscView.tsx +159 -0
- package/bizar-dash/src/web/v8/views/Mods/ModsView.tsx +348 -0
- package/bizar-dash/src/web/v8/views/Notifications/NotificationsView.tsx +178 -0
- package/bizar-dash/src/web/v8/views/Obsidian/ObsidianView.tsx +193 -0
- package/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +114 -11
- package/bizar-dash/src/web/v8/views/Projects/ProjectsView.tsx +253 -0
- package/bizar-dash/src/web/v8/views/Providers/ProvidersView.tsx +371 -0
- package/bizar-dash/src/web/v8/views/Router.tsx +125 -0
- package/bizar-dash/src/web/v8/views/Schedules/SchedulesView.tsx +46 -14
- package/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +322 -29
- package/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +168 -5
- package/bizar-dash/src/web/v8/views/Update/UpdateView.tsx +270 -0
- package/bizar-dash/src/web/v8/views/Usage/UsageView.tsx +210 -0
- package/bizar-dash/src/web/v8/views/Voice/VoiceView.tsx +192 -0
- package/bizar-dash/tests/tasks-patch-routes.test.mjs +194 -0
- package/bizar-dash/vite.config.ts +11 -3
- package/cli/__tests__/esm-no-require.test.mjs +97 -0
- package/cli/commands/tailscale.mjs +1 -3
- package/cli/commands/voice.mjs +2 -2
- package/cli/service-env.mjs +4 -5
- package/package.json +12 -3
- package/packages/sdk/dist/agent-registry.d.ts +134 -0
- package/packages/sdk/dist/agent-registry.js +228 -0
- package/packages/sdk/dist/consensus/byzantine.d.ts +159 -0
- package/packages/sdk/dist/consensus/byzantine.js +507 -0
- package/packages/sdk/dist/consensus/index.d.ts +60 -0
- package/packages/sdk/dist/consensus/index.js +76 -0
- package/packages/sdk/dist/consensus/queen.d.ts +86 -0
- package/packages/sdk/dist/consensus/queen.js +158 -0
- package/packages/sdk/dist/consensus/types.d.ts +155 -0
- package/packages/sdk/dist/consensus/types.js +29 -0
- package/packages/sdk/dist/dangerous-patterns.d.ts +27 -0
- package/packages/sdk/dist/dangerous-patterns.js +107 -0
- package/packages/sdk/dist/federation/audit.d.ts +71 -0
- package/packages/sdk/dist/federation/audit.js +133 -0
- package/packages/sdk/dist/federation/budget.d.ts +111 -0
- package/packages/sdk/dist/federation/budget.js +227 -0
- package/packages/sdk/dist/federation/envelope.d.ts +83 -0
- package/packages/sdk/dist/federation/envelope.js +92 -0
- package/packages/sdk/dist/federation/hmac.d.ts +61 -0
- package/packages/sdk/dist/federation/hmac.js +120 -0
- package/packages/sdk/dist/federation/index.d.ts +108 -0
- package/packages/sdk/dist/federation/index.js +275 -0
- package/packages/sdk/dist/federation/pii.d.ts +72 -0
- package/packages/sdk/dist/federation/pii.js +178 -0
- package/packages/sdk/dist/federation/policy.d.ts +50 -0
- package/packages/sdk/dist/federation/policy.js +76 -0
- package/packages/sdk/dist/federation/trust.d.ts +80 -0
- package/packages/sdk/dist/federation/trust.js +126 -0
- package/packages/sdk/dist/fingerprint.d.ts +18 -0
- package/packages/sdk/dist/fingerprint.js +0 -0
- package/packages/sdk/dist/index.d.ts +25 -0
- package/packages/sdk/dist/index.js +25 -0
- package/packages/sdk/dist/mcp/bin.d.ts +16 -0
- package/packages/sdk/dist/mcp/bin.js +46 -0
- package/packages/sdk/dist/mcp/server.d.ts +105 -0
- package/packages/sdk/dist/mcp/server.js +682 -0
- package/packages/sdk/dist/memory/index.d.ts +43 -0
- package/packages/sdk/dist/memory/index.js +159 -0
- package/packages/sdk/dist/router/codemod-intent.d.ts +68 -0
- package/packages/sdk/dist/router/codemod-intent.js +112 -0
- package/packages/sdk/dist/router/index.d.ts +100 -0
- package/packages/sdk/dist/router/index.js +149 -0
- package/packages/sdk/dist/router/memory-distillation.d.ts +58 -0
- package/packages/sdk/dist/router/memory-distillation.js +195 -0
- package/packages/sdk/dist/router/model-router.d.ts +83 -0
- package/packages/sdk/dist/router/model-router.js +207 -0
- package/packages/sdk/dist/router/q-learning-router.d.ts +85 -0
- package/packages/sdk/dist/router/q-learning-router.js +273 -0
- package/packages/sdk/dist/swarm-topology.d.ts +87 -0
- package/packages/sdk/dist/swarm-topology.js +219 -0
- package/packages/sdk/dist/version.d.ts +5 -0
- package/packages/sdk/dist/version.js +5 -0
- package/packages/sdk/package.json +1 -1
- package/plugins/bizar/dist/index.d.ts +25 -0
- package/plugins/bizar/dist/index.js +32 -0
- package/plugins/bizar/package.json +18 -0
- package/.claude/CLAUDE.md +0 -15
- package/.claude/agents/_shared/AGENT_BASELINE.md +0 -168
- package/.claude/agents/_shared/CLAUDE_TOOLS.md +0 -412
- package/.claude/agents/_shared/SKILLS.md +0 -109
- package/.claude/agents/agent-browser.md +0 -80
- package/.claude/agents/baldr.md +0 -49
- package/.claude/agents/forseti.md +0 -51
- package/.claude/agents/frigg.md +0 -42
- package/.claude/agents/heimdall.md +0 -33
- package/.claude/agents/hermod.md +0 -53
- package/.claude/agents/mimir.md +0 -49
- package/.claude/agents/odin.md +0 -287
- package/.claude/agents/quick.md +0 -34
- package/.claude/agents/semble-search.md +0 -50
- package/.claude/agents/thor.md +0 -53
- package/.claude/agents/tyr.md +0 -56
- package/.claude/agents/vidarr.md +0 -54
- package/.claude/agents/vor.md +0 -53
- package/.claude/commands/audit.md +0 -25
- package/.claude/commands/bizar.md +0 -22
- package/.claude/commands/explain.md +0 -17
- package/.claude/commands/goal.md +0 -98
- package/.claude/commands/init.md +0 -29
- package/.claude/commands/learn.md +0 -44
- package/.claude/commands/plan.md +0 -35
- package/.claude/commands/plow-through.md +0 -50
- package/.claude/commands/pr-review.md +0 -49
- package/.claude/commands/setup-provider.md +0 -96
- package/.claude/commands/tailscale-serve.md +0 -100
- package/.claude/commands/team.md +0 -132
- package/.claude/commands/test.md +0 -62
- package/.claude/commands/validate.md +0 -68
- package/.claude/commands/visual-plan.md +0 -24
- package/.claude/hooks/README.md +0 -92
- package/.claude/hooks/posttooluse-editwrite.mjs +0 -91
- package/.claude/hooks/pretooluse-bash.mjs +0 -81
- package/.claude/hooks/pretooluse-editwrite.mjs +0 -139
- package/.claude/hooks/sessionend-recall.mjs +0 -74
- package/.claude/hooks/sessionstart-prime.mjs +0 -80
- package/.claude/hooks/userpromptsubmit-tag.mjs +0 -80
- package/.claude/hooks/worker-suggest.mjs +0 -110
- package/.claude/settings.json +0 -125
- package/.claude/settings.local.json +0 -7
- package/.claude/skills/9router/SKILL.md +0 -80
- package/.claude/skills/9router-chat/SKILL.md +0 -73
- package/.claude/skills/9router-embeddings/SKILL.md +0 -69
- package/.claude/skills/9router-image/SKILL.md +0 -86
- package/.claude/skills/9router-stt/SKILL.md +0 -79
- package/.claude/skills/9router-tts/SKILL.md +0 -80
- package/.claude/skills/9router-web-fetch/SKILL.md +0 -99
- package/.claude/skills/9router-web-search/SKILL.md +0 -91
- package/.claude/skills/bizar/README.md +0 -9
- package/.claude/skills/bizar/SKILL.md +0 -450
- package/.claude/skills/cpp-coding-standards/README.md +0 -28
- package/.claude/skills/cpp-coding-standards/SKILL.md +0 -634
- package/.claude/skills/cpp-coding-standards/references/concurrency.md +0 -320
- package/.claude/skills/cpp-coding-standards/references/error-handling.md +0 -229
- package/.claude/skills/cpp-coding-standards/references/memory-safety.md +0 -216
- package/.claude/skills/cpp-coding-standards/references/modern-idioms.md +0 -282
- package/.claude/skills/cpp-coding-standards/references/review-checklist.md +0 -96
- package/.claude/skills/cpp-testing/README.md +0 -28
- package/.claude/skills/cpp-testing/SKILL.md +0 -304
- package/.claude/skills/cpp-testing/references/coverage.md +0 -370
- package/.claude/skills/cpp-testing/references/framework-compare.md +0 -175
- package/.claude/skills/cpp-testing/references/host-test-for-embedded.md +0 -499
- package/.claude/skills/cpp-testing/references/mocking.md +0 -364
- package/.claude/skills/cpp-testing/references/tdd-workflow.md +0 -308
- package/.claude/skills/cubesandbox/SKILL.md +0 -148
- package/.claude/skills/embedded-esp-idf/README.md +0 -41
- package/.claude/skills/embedded-esp-idf/SKILL.md +0 -439
- package/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +0 -214
- package/.claude/skills/embedded-esp-idf/references/host-tests.md +0 -164
- package/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +0 -157
- package/.claude/skills/embedded-esp-idf/references/kconfig.md +0 -159
- package/.claude/skills/embedded-esp-idf/references/logging-discipline.md +0 -118
- package/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +0 -137
- package/.claude/skills/embedded-esp-idf/references/nvs.md +0 -121
- package/.claude/skills/embedded-esp-idf/references/packed-structs.md +0 -192
- package/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +0 -47
- package/.claude/skills/embedded-esp-idf/scripts/size_check.sh +0 -77
- package/.claude/skills/glyph/SKILL.md +0 -163
- package/.claude/skills/harness-engineering/SKILL.md +0 -143
- package/.claude/skills/lightrag/SKILL.md +0 -81
- package/.claude/skills/memory-protocol/SKILL.md +0 -105
- package/.claude/skills/obsidian/SKILL.md +0 -306
- package/.claude/skills/read-the-damn-docs/SKILL.md +0 -113
- package/.claude/skills/self-improvement/SKILL.md +0 -64
- package/.claude/worktrees/kanban-overhaul/.claude/CLAUDE.md +0 -15
- package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/AGENT_BASELINE.md +0 -168
- package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/CLAUDE_TOOLS.md +0 -412
- package/.claude/worktrees/kanban-overhaul/.claude/agents/_shared/SKILLS.md +0 -109
- package/.claude/worktrees/kanban-overhaul/.claude/agents/agent-browser.md +0 -80
- package/.claude/worktrees/kanban-overhaul/.claude/agents/baldr.md +0 -49
- package/.claude/worktrees/kanban-overhaul/.claude/agents/forseti.md +0 -51
- package/.claude/worktrees/kanban-overhaul/.claude/agents/frigg.md +0 -42
- package/.claude/worktrees/kanban-overhaul/.claude/agents/heimdall.md +0 -33
- package/.claude/worktrees/kanban-overhaul/.claude/agents/hermod.md +0 -53
- package/.claude/worktrees/kanban-overhaul/.claude/agents/mimir.md +0 -49
- package/.claude/worktrees/kanban-overhaul/.claude/agents/odin.md +0 -287
- package/.claude/worktrees/kanban-overhaul/.claude/agents/quick.md +0 -34
- package/.claude/worktrees/kanban-overhaul/.claude/agents/semble-search.md +0 -50
- package/.claude/worktrees/kanban-overhaul/.claude/agents/thor.md +0 -53
- package/.claude/worktrees/kanban-overhaul/.claude/agents/tyr.md +0 -56
- package/.claude/worktrees/kanban-overhaul/.claude/agents/vidarr.md +0 -54
- package/.claude/worktrees/kanban-overhaul/.claude/agents/vor.md +0 -53
- package/.claude/worktrees/kanban-overhaul/.claude/commands/audit.md +0 -25
- package/.claude/worktrees/kanban-overhaul/.claude/commands/bizar.md +0 -22
- package/.claude/worktrees/kanban-overhaul/.claude/commands/explain.md +0 -17
- package/.claude/worktrees/kanban-overhaul/.claude/commands/init.md +0 -29
- package/.claude/worktrees/kanban-overhaul/.claude/commands/learn.md +0 -44
- package/.claude/worktrees/kanban-overhaul/.claude/commands/plan.md +0 -35
- package/.claude/worktrees/kanban-overhaul/.claude/commands/plow-through.md +0 -50
- package/.claude/worktrees/kanban-overhaul/.claude/commands/pr-review.md +0 -49
- package/.claude/worktrees/kanban-overhaul/.claude/commands/setup-provider.md +0 -96
- package/.claude/worktrees/kanban-overhaul/.claude/commands/tailscale-serve.md +0 -100
- package/.claude/worktrees/kanban-overhaul/.claude/commands/team.md +0 -132
- package/.claude/worktrees/kanban-overhaul/.claude/commands/test.md +0 -62
- package/.claude/worktrees/kanban-overhaul/.claude/commands/validate.md +0 -68
- package/.claude/worktrees/kanban-overhaul/.claude/commands/visual-plan.md +0 -24
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/README.md +0 -92
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/posttooluse-editwrite.mjs +0 -91
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/pretooluse-bash.mjs +0 -81
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/pretooluse-editwrite.mjs +0 -139
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/sessionend-recall.mjs +0 -74
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/sessionstart-prime.mjs +0 -80
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/userpromptsubmit-tag.mjs +0 -80
- package/.claude/worktrees/kanban-overhaul/.claude/hooks/worker-suggest.mjs +0 -110
- package/.claude/worktrees/kanban-overhaul/.claude/settings.json +0 -125
- package/.claude/worktrees/kanban-overhaul/.claude/settings.local.json +0 -8
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router/SKILL.md +0 -80
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-chat/SKILL.md +0 -73
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-embeddings/SKILL.md +0 -69
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-image/SKILL.md +0 -86
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-stt/SKILL.md +0 -79
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-tts/SKILL.md +0 -80
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-web-fetch/SKILL.md +0 -99
- package/.claude/worktrees/kanban-overhaul/.claude/skills/9router-web-search/SKILL.md +0 -91
- package/.claude/worktrees/kanban-overhaul/.claude/skills/bizar/README.md +0 -9
- package/.claude/worktrees/kanban-overhaul/.claude/skills/bizar/SKILL.md +0 -450
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/README.md +0 -28
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/SKILL.md +0 -634
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/concurrency.md +0 -320
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/error-handling.md +0 -229
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/memory-safety.md +0 -216
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/modern-idioms.md +0 -282
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-coding-standards/references/review-checklist.md +0 -96
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/README.md +0 -28
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/SKILL.md +0 -304
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/coverage.md +0 -370
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/framework-compare.md +0 -175
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/host-test-for-embedded.md +0 -499
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/mocking.md +0 -364
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cpp-testing/references/tdd-workflow.md +0 -308
- package/.claude/worktrees/kanban-overhaul/.claude/skills/cubesandbox/SKILL.md +0 -148
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/README.md +0 -41
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/SKILL.md +0 -439
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/freertos-patterns.md +0 -214
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/host-tests.md +0 -164
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/idf-py-commands.md +0 -157
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/kconfig.md +0 -159
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/logging-discipline.md +0 -118
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/memory-and-iram.md +0 -137
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/nvs.md +0 -121
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/references/packed-structs.md +0 -192
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/scripts/idf_env.sh +0 -47
- package/.claude/worktrees/kanban-overhaul/.claude/skills/embedded-esp-idf/scripts/size_check.sh +0 -77
- package/.claude/worktrees/kanban-overhaul/.claude/skills/glyph/SKILL.md +0 -163
- package/.claude/worktrees/kanban-overhaul/.claude/skills/harness-engineering/SKILL.md +0 -143
- package/.claude/worktrees/kanban-overhaul/.claude/skills/lightrag/SKILL.md +0 -81
- package/.claude/worktrees/kanban-overhaul/.claude/skills/memory-protocol/SKILL.md +0 -105
- package/.claude/worktrees/kanban-overhaul/.claude/skills/obsidian/SKILL.md +0 -306
- package/.claude/worktrees/kanban-overhaul/.claude/skills/read-the-damn-docs/SKILL.md +0 -113
- package/.claude/worktrees/kanban-overhaul/.claude/skills/self-improvement/SKILL.md +0 -64
- package/.claude/worktrees/kanban-overhaul/.dockerignore +0 -31
- package/.claude/worktrees/kanban-overhaul/.gitattributes +0 -27
- package/.claude/worktrees/kanban-overhaul/.harness/agents.json +0 -17
- package/.claude/worktrees/kanban-overhaul/.harness/arch-rules.json +0 -69
- package/.claude/worktrees/kanban-overhaul/.harness/topology.json +0 -4
- package/.claude/worktrees/kanban-overhaul/.nvmrc +0 -1
- package/.claude/worktrees/kanban-overhaul/.serena/project.yml +0 -159
- package/.claude/worktrees/kanban-overhaul/AGENTS.md +0 -250
- package/.claude/worktrees/kanban-overhaul/CHANGELOG.md +0 -5410
- package/.claude/worktrees/kanban-overhaul/CLAUDE.md +0 -260
- package/.claude/worktrees/kanban-overhaul/CURRENT_ISSUES_ AND_NEW_FEATURES.md +0 -18
- package/.claude/worktrees/kanban-overhaul/DECISIONS.md +0 -66
- package/.claude/worktrees/kanban-overhaul/Dockerfile +0 -48
- package/.claude/worktrees/kanban-overhaul/FINAL_GOAL.md +0 -397
- package/.claude/worktrees/kanban-overhaul/IMPLEMENTATION_PLAN.md +0 -250
- package/.claude/worktrees/kanban-overhaul/MILESTONES.md +0 -257
- package/.claude/worktrees/kanban-overhaul/Makefile +0 -93
- package/.claude/worktrees/kanban-overhaul/PROGRESS.md +0 -1406
- package/.claude/worktrees/kanban-overhaul/README.md +0 -483
- package/.claude/worktrees/kanban-overhaul/ROADMAP.md +0 -609
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.graphifyignore +0 -40
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/README.md +0 -14
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/daily/2026-06-25.md +0 -9
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.obsidian/vault.json +0 -7
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/SKILL.md +0 -103
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/assets/template.html +0 -338
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/example.html +0 -81
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/open-design.json +0 -172
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/references/checklist.md +0 -44
- package/.claude/worktrees/kanban-overhaul/bizar-dash/.od-skills/web-prototype-e1429c1737/references/layouts.md +0 -247
- package/.claude/worktrees/kanban-overhaul/bizar-dash/ARCHITECTURE.md +0 -197
- package/.claude/worktrees/kanban-overhaul/bizar-dash/CHANGELOG.md +0 -235
- package/.claude/worktrees/kanban-overhaul/bizar-dash/DESIGN.md +0 -912
- package/.claude/worktrees/kanban-overhaul/bizar-dash/GLYPH.md +0 -418
- package/.claude/worktrees/kanban-overhaul/bizar-dash/PLAN.md +0 -1135
- package/.claude/worktrees/kanban-overhaul/bizar-dash/critique.json +0 -26
- package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/comments.json +0 -1
- package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/meta.json +0 -10
- package/.claude/worktrees/kanban-overhaul/bizar-dash/plans/debug-plan/plan.json +0 -174
- package/.claude/worktrees/kanban-overhaul/bizar-dash/scripts/smoke-bg-retry.mjs +0 -246
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/agent-baseline/SKILL.md +0 -80
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/agent-browser/SKILL.md +0 -181
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/bizar/SKILL.md +0 -116
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/chat/SKILL.md +0 -74
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/eval/SKILL.md +0 -237
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/headroom/SKILL.md +0 -94
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/lightrag/SKILL.md +0 -86
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/minimax/SKILL.md +0 -80
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/obsidian/SKILL.md +0 -68
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/providers/SKILL.md +0 -75
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/publishing/SKILL.md +0 -146
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/sdk/SKILL.md +0 -138
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/self-improvement/SKILL.md +0 -53
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/skills-cli/SKILL.md +0 -94
- package/.claude/worktrees/kanban-overhaul/bizar-dash/skills/usage/SKILL.md +0 -62
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/cli/dashboard-ports.mjs +0 -488
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/cli.mjs +0 -537
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/activity-log.mjs +0 -174
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/agents-store.mjs +0 -465
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/api.mjs +0 -223
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/artifact-template.html +0 -810
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/artifacts-store.mjs +0 -733
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/auth.mjs +0 -548
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/background-store.mjs +0 -446
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/backup-store.mjs +0 -530
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-poller.mjs +0 -375
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-retry.mjs +0 -446
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/bg-spawner.mjs +0 -390
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/browser.mjs +0 -40
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-bg-spawner.mjs +0 -390
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-info.mjs +0 -412
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-runner.mjs +0 -284
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/claude-sdk.mjs +0 -191
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/diagnostics-store.mjs +0 -598
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/dialog-poller.mjs +0 -105
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/dialog-store.mjs +0 -177
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/digest-store.mjs +0 -558
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/eval-store.mjs +0 -281
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/eval.mjs +0 -500
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/glyphs/mdx-compiler.mjs +0 -596
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/headroom.mjs +0 -649
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/lib/path-safe.mjs +0 -283
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/lib/rate-limit.mjs +0 -122
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/logger.mjs +0 -71
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-consolidator.mjs +0 -225
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-distillation.mjs +0 -296
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-git.mjs +0 -473
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-lightrag.mjs +0 -1478
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-obsidian.mjs +0 -230
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-schema.mjs +0 -145
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-secrets.mjs +0 -84
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/memory-store.mjs +0 -1093
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/metrics.mjs +0 -268
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/minimax-usage-store.mjs +0 -372
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/minimax.mjs +0 -683
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/mod-security.mjs +0 -398
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/mods-loader.mjs +0 -1243
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/notifications-store.mjs +0 -243
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/obsidian-store.mjs +0 -318
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/ocr.mjs +0 -55
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/otel.mjs +0 -260
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/pair-store.mjs +0 -138
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/progress-parser.mjs +0 -221
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/projects-store.mjs +0 -364
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/providers-store.mjs +0 -1801
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/_shared.mjs +0 -447
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/activity.mjs +0 -195
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/agents-cc.mjs +0 -194
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/agents.mjs +0 -134
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/artifacts.mjs +0 -279
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/auth.mjs +0 -69
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/background.mjs +0 -422
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/backup.mjs +0 -112
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/chat.mjs +0 -727
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/claude-session-detail.mjs +0 -329
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/claude-sessions.mjs +0 -259
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/clipboard.mjs +0 -173
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/config.mjs +0 -180
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/diagnostics.mjs +0 -50
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/dialogs.mjs +0 -86
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/digests.mjs +0 -82
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/distill.mjs +0 -129
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/doctor.mjs +0 -71
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/env-vars.mjs +0 -231
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/eval.mjs +0 -187
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/fs.mjs +0 -429
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/goal-planner.mjs +0 -236
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/goals.mjs +0 -212
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/headroom.mjs +0 -126
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/history.mjs +0 -78
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/lightrag.mjs +0 -169
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/memory.mjs +0 -1524
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/minimax.mjs +0 -133
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/misc.mjs +0 -90
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/mods.mjs +0 -359
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/notifications.mjs +0 -54
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/obsidian.mjs +0 -239
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/ocr.mjs +0 -182
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/overview.mjs +0 -92
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/pair.mjs +0 -67
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/projects.mjs +0 -175
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/providers.mjs +0 -308
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/schedules.mjs +0 -159
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/settings.mjs +0 -51
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/skills.mjs +0 -65
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/tailscale.mjs +0 -46
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/tasks.mjs +0 -518
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/themes.mjs +0 -51
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/update.mjs +0 -340
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/usage.mjs +0 -136
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/users.mjs +0 -102
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/voice.mjs +0 -167
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes/workspaces.mjs +0 -299
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/auth.mjs +0 -59
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/events.mjs +0 -121
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/health.mjs +0 -21
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/index.mjs +0 -90
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/routes-v2/sessions.mjs +0 -111
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/schedules-runner.mjs +0 -556
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/schedules-store.mjs +0 -268
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/search-store.mjs +0 -220
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/serve-info.mjs +0 -1110
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/server.mjs +0 -966
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/settings-store.mjs +0 -45
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/skills-store.mjs +0 -190
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/state.mjs +0 -437
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tailscale-store.mjs +0 -113
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/task-delegator.mjs +0 -969
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tasks-store.mjs +0 -556
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/tui.mjs +0 -923
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/update-store.mjs +0 -168
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/v2-auth-file.mjs +0 -99
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/v2-event-bus.mjs +0 -128
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/voice-store.mjs +0 -229
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/voice-transcribe.mjs +0 -72
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/watcher.mjs +0 -81
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/workers/transcription-worker.mjs +0 -213
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/workspaces.mjs +0 -626
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/server/yaml.mjs +0 -238
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/App.tsx +0 -200
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/fetcher.ts +0 -59
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/types.ts +0 -168
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/useFetch.ts +0 -62
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/data/useWebSocket.ts +0 -153
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/main.tsx +0 -28
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/AppShell.tsx +0 -90
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/PageSkeleton.tsx +0 -29
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/Sidebar.tsx +0 -361
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/StatusBar.tsx +0 -63
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/Topbar.tsx +0 -113
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/shell/index.ts +0 -15
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/activity/ActivityFeed.tsx +0 -137
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentActivity.tsx +0 -101
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentCard.tsx +0 -158
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/agents/AgentDetail.tsx +0 -232
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Button.tsx +0 -141
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/ButtonGroup.tsx +0 -32
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Checkbox.tsx +0 -49
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Field.tsx +0 -78
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Form.tsx +0 -23
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/IconButton.tsx +0 -112
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Input.tsx +0 -94
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/RadioGroup.tsx +0 -74
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Select.tsx +0 -171
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Slider.tsx +0 -68
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Switch.tsx +0 -56
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Textarea.tsx +0 -64
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/Toggle.tsx +0 -36
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/controls/ToggleGroup.tsx +0 -85
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Accordion.tsx +0 -134
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Avatar.tsx +0 -175
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Badge.tsx +0 -93
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/BarList.tsx +0 -101
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Card.tsx +0 -140
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Chip.tsx +0 -96
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Kbd.tsx +0 -42
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/ProgressBar.tsx +0 -93
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Sparkline.tsx +0 -98
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/StatTile.tsx +0 -150
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Table.tsx +0 -170
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/Timeline.tsx +0 -130
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/data/ViewHeader.tsx +0 -122
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Alert.tsx +0 -95
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Banner.tsx +0 -39
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/ContextMenu.tsx +0 -143
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Dialog.tsx +0 -149
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Drawer.tsx +0 -8
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/DropdownMenu.tsx +0 -231
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/EmptyState.tsx +0 -48
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Popover.tsx +0 -56
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Sheet.tsx +0 -103
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Skeleton.tsx +0 -67
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Spinner.tsx +0 -30
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Toast.tsx +0 -66
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/feedback/Tooltip.tsx +0 -89
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/GoalCard.tsx +0 -176
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/GoalDetail.tsx +0 -245
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/goals/KeyResult.tsx +0 -115
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/index.ts +0 -349
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +0 -115
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +0 -391
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanCardBadges.tsx +0 -111
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +0 -181
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanContextMenu.tsx +0 -126
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanDetailDialog.tsx +0 -638
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanEmptyColumn.tsx +0 -43
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanProgress.tsx +0 -130
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanQuickAdd.tsx +0 -141
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/KanbanToolbar.tsx +0 -291
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/kanban/useKanbanSelection.ts +0 -90
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/libraries/LibraryGrid.tsx +0 -30
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/libraries/LibraryItem.tsx +0 -161
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/memory/MemoryVault.tsx +0 -144
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/CommandPalette.tsx +0 -224
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/NavLink.tsx +0 -81
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/Pagination.tsx +0 -164
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/navigation/Tabs.tsx +0 -128
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Box.tsx +0 -144
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Center.tsx +0 -40
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Cluster.tsx +0 -67
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Grid.tsx +0 -104
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Inline.tsx +0 -77
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Portal.tsx +0 -33
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/ScrollArea.tsx +0 -62
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Separator.tsx +0 -42
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/Stack.tsx +0 -73
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/primitives/VisuallyHidden.tsx +0 -49
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsNav.tsx +0 -91
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsRow.tsx +0 -88
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/settings/SettingsSection.tsx +0 -109
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/globals.css +0 -220
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/reset.css +0 -57
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/styles/tokens.css +0 -217
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/DensityProvider.tsx +0 -66
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/ThemeProvider.tsx +0 -94
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/ThemeToggle.tsx +0 -88
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/useDensity.ts +0 -15
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/theme/useTheme.ts +0 -16
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/ui/utils/cx.ts +0 -19
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +0 -71
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Agents/AgentsView.tsx +0 -172
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/CommandPalette/AppCommandPalette.tsx +0 -247
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Goals/GoalsView.tsx +0 -137
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Libraries/LibrariesView.tsx +0 -108
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Memory/MemoryView.tsx +0 -77
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Overview/OverviewView.tsx +0 -152
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Router.tsx +0 -72
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Settings/SettingsView.tsx +0 -330
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Tasks/CommandPalettePlaceholder.tsx +0 -106
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +0 -792
- package/.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8/vite-env.d.ts +0 -15
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/FORMAT.md +0 -76
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/README.md +0 -19
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/agents/greeter.md +0 -8
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/commands/hello.md +0 -6
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/mod.json +0 -20
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/routes/ping.mjs +0 -9
- package/.claude/worktrees/kanban-overhaul/bizar-dash/templates/mod/hello-mod/views/HelloView.tsx +0 -10
- package/.claude/worktrees/kanban-overhaul/bizar-dash/tests/setup.ts +0 -63
- package/.claude/worktrees/kanban-overhaul/bizar-dash/tests/smoke-v2.mjs +0 -212
- package/.claude/worktrees/kanban-overhaul/bizar-dash/tsconfig.json +0 -23
- package/.claude/worktrees/kanban-overhaul/bizar-dash/vite.config.ts +0 -66
- package/.claude/worktrees/kanban-overhaul/bizar-dash/vitest.config.ts +0 -20
- package/.claude/worktrees/kanban-overhaul/bizar-plugins/registry.json +0 -62
- package/.claude/worktrees/kanban-overhaul/bookmarklet/bizar-clipper.js +0 -48
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/README.md +0 -43
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/background.js +0 -95
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/content.js +0 -170
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-128.png +0 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-16.png +0 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon-48.png +0 -0
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/icons/icon.svg +0 -4
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/manifest.json +0 -32
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/popup.html +0 -66
- package/.claude/worktrees/kanban-overhaul/browser-extensions/bizar-clipper/popup.js +0 -110
- package/.claude/worktrees/kanban-overhaul/bun.lock +0 -1558
- package/.claude/worktrees/kanban-overhaul/cli/agent-browser-up.sh +0 -152
- package/.claude/worktrees/kanban-overhaul/cli/agent-browser-update.mjs +0 -322
- package/.claude/worktrees/kanban-overhaul/cli/artifact-cli.mjs +0 -605
- package/.claude/worktrees/kanban-overhaul/cli/artifact-render.mjs +0 -621
- package/.claude/worktrees/kanban-overhaul/cli/artifact-server.mjs +0 -847
- package/.claude/worktrees/kanban-overhaul/cli/artifact-templates.mjs +0 -523
- package/.claude/worktrees/kanban-overhaul/cli/artifact.mjs +0 -63
- package/.claude/worktrees/kanban-overhaul/cli/atomic.mjs +0 -73
- package/.claude/worktrees/kanban-overhaul/cli/audit.mjs +0 -141
- package/.claude/worktrees/kanban-overhaul/cli/banner.mjs +0 -41
- package/.claude/worktrees/kanban-overhaul/cli/bg.mjs +0 -471
- package/.claude/worktrees/kanban-overhaul/cli/bin.mjs +0 -698
- package/.claude/worktrees/kanban-overhaul/cli/bootstrap.mjs +0 -77
- package/.claude/worktrees/kanban-overhaul/cli/commands/artifact.mjs +0 -20
- package/.claude/worktrees/kanban-overhaul/cli/commands/claim.mjs +0 -282
- package/.claude/worktrees/kanban-overhaul/cli/commands/claude-cmd.mjs +0 -348
- package/.claude/worktrees/kanban-overhaul/cli/commands/clip.mjs +0 -163
- package/.claude/worktrees/kanban-overhaul/cli/commands/cost.mjs +0 -279
- package/.claude/worktrees/kanban-overhaul/cli/commands/dash.mjs +0 -193
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/cloudflare.mjs +0 -250
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/docker.mjs +0 -222
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/fly.mjs +0 -161
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy/vercel.mjs +0 -225
- package/.claude/worktrees/kanban-overhaul/cli/commands/deploy.mjs +0 -240
- package/.claude/worktrees/kanban-overhaul/cli/commands/eval.mjs +0 -396
- package/.claude/worktrees/kanban-overhaul/cli/commands/headroom.mjs +0 -204
- package/.claude/worktrees/kanban-overhaul/cli/commands/install.mjs +0 -170
- package/.claude/worktrees/kanban-overhaul/cli/commands/lightrag.mjs +0 -170
- package/.claude/worktrees/kanban-overhaul/cli/commands/marketplace.mjs +0 -64
- package/.claude/worktrees/kanban-overhaul/cli/commands/memory.mjs +0 -25
- package/.claude/worktrees/kanban-overhaul/cli/commands/minimax.mjs +0 -288
- package/.claude/worktrees/kanban-overhaul/cli/commands/mod.mjs +0 -185
- package/.claude/worktrees/kanban-overhaul/cli/commands/ocr.mjs +0 -182
- package/.claude/worktrees/kanban-overhaul/cli/commands/plugin.mjs +0 -358
- package/.claude/worktrees/kanban-overhaul/cli/commands/rca.mjs +0 -198
- package/.claude/worktrees/kanban-overhaul/cli/commands/sandbox.mjs +0 -220
- package/.claude/worktrees/kanban-overhaul/cli/commands/service.mjs +0 -79
- package/.claude/worktrees/kanban-overhaul/cli/commands/setup-provider.mjs +0 -466
- package/.claude/worktrees/kanban-overhaul/cli/commands/tailscale.mjs +0 -258
- package/.claude/worktrees/kanban-overhaul/cli/commands/usage.mjs +0 -113
- package/.claude/worktrees/kanban-overhaul/cli/commands/util.mjs +0 -577
- package/.claude/worktrees/kanban-overhaul/cli/commands/validate.mjs +0 -541
- package/.claude/worktrees/kanban-overhaul/cli/commands/voice.mjs +0 -211
- package/.claude/worktrees/kanban-overhaul/cli/commands/workspace.mjs +0 -247
- package/.claude/worktrees/kanban-overhaul/cli/copy.mjs +0 -586
- package/.claude/worktrees/kanban-overhaul/cli/cost-gate.mjs +0 -501
- package/.claude/worktrees/kanban-overhaul/cli/dev-link.mjs +0 -191
- package/.claude/worktrees/kanban-overhaul/cli/digest.mjs +0 -149
- package/.claude/worktrees/kanban-overhaul/cli/doctor.mjs +0 -217
- package/.claude/worktrees/kanban-overhaul/cli/export.mjs +0 -95
- package/.claude/worktrees/kanban-overhaul/cli/feature-list-bridge.mjs +0 -400
- package/.claude/worktrees/kanban-overhaul/cli/heads-up.mjs +0 -295
- package/.claude/worktrees/kanban-overhaul/cli/init.mjs +0 -368
- package/.claude/worktrees/kanban-overhaul/cli/install.mjs +0 -640
- package/.claude/worktrees/kanban-overhaul/cli/memory-constants.mjs +0 -76
- package/.claude/worktrees/kanban-overhaul/cli/memory.mjs +0 -1850
- package/.claude/worktrees/kanban-overhaul/cli/plugin-runtime-deps.mjs +0 -250
- package/.claude/worktrees/kanban-overhaul/cli/post-install-smoke.mjs +0 -256
- package/.claude/worktrees/kanban-overhaul/cli/prompts.mjs +0 -168
- package/.claude/worktrees/kanban-overhaul/cli/providers-detect.mjs +0 -233
- package/.claude/worktrees/kanban-overhaul/cli/provision-claude.mjs +0 -1176
- package/.claude/worktrees/kanban-overhaul/cli/provision.mjs +0 -2233
- package/.claude/worktrees/kanban-overhaul/cli/repair.mjs +0 -209
- package/.claude/worktrees/kanban-overhaul/cli/service-controller.mjs +0 -927
- package/.claude/worktrees/kanban-overhaul/cli/service-env.mjs +0 -139
- package/.claude/worktrees/kanban-overhaul/cli/service.mjs +0 -492
- package/.claude/worktrees/kanban-overhaul/cli/update.mjs +0 -29
- package/.claude/worktrees/kanban-overhaul/cli/utils.mjs +0 -221
- package/.claude/worktrees/kanban-overhaul/cli/worker-dispatcher.mjs +0 -259
- package/.claude/worktrees/kanban-overhaul/config/AGENTS.md +0 -595
- package/.claude/worktrees/kanban-overhaul/config/agents/_shared/AGENT_BASELINE.md +0 -155
- package/.claude/worktrees/kanban-overhaul/config/agents/_shared/CLINE_TOOLS.md +0 -398
- package/.claude/worktrees/kanban-overhaul/config/agents/_shared/SKILLS.md +0 -109
- package/.claude/worktrees/kanban-overhaul/config/agents/agent-browser.md +0 -90
- package/.claude/worktrees/kanban-overhaul/config/agents/baldr.md +0 -60
- package/.claude/worktrees/kanban-overhaul/config/agents/forseti.md +0 -60
- package/.claude/worktrees/kanban-overhaul/config/agents/frigg.md +0 -52
- package/.claude/worktrees/kanban-overhaul/config/agents/heimdall.md +0 -44
- package/.claude/worktrees/kanban-overhaul/config/agents/hermod.md +0 -64
- package/.claude/worktrees/kanban-overhaul/config/agents/mimir.md +0 -60
- package/.claude/worktrees/kanban-overhaul/config/agents/odin.md +0 -310
- package/.claude/worktrees/kanban-overhaul/config/agents/quick.md +0 -47
- package/.claude/worktrees/kanban-overhaul/config/agents/semble-search.md +0 -59
- package/.claude/worktrees/kanban-overhaul/config/agents/thor.md +0 -64
- package/.claude/worktrees/kanban-overhaul/config/agents/tyr.md +0 -67
- package/.claude/worktrees/kanban-overhaul/config/agents/vidarr.md +0 -65
- package/.claude/worktrees/kanban-overhaul/config/agents/vor.md +0 -62
- package/.claude/worktrees/kanban-overhaul/config/commands/audit.md +0 -5
- package/.claude/worktrees/kanban-overhaul/config/commands/bizar.md +0 -22
- package/.claude/worktrees/kanban-overhaul/config/commands/explain.md +0 -5
- package/.claude/worktrees/kanban-overhaul/config/commands/init.md +0 -26
- package/.claude/worktrees/kanban-overhaul/config/commands/learn.md +0 -5
- package/.claude/worktrees/kanban-overhaul/config/commands/plan.md +0 -30
- package/.claude/worktrees/kanban-overhaul/config/commands/plow-through.md +0 -47
- package/.claude/worktrees/kanban-overhaul/config/commands/pr-review.md +0 -5
- package/.claude/worktrees/kanban-overhaul/config/commands/setup-provider.md +0 -95
- package/.claude/worktrees/kanban-overhaul/config/commands/tailscale-serve.md +0 -97
- package/.claude/worktrees/kanban-overhaul/config/commands/team.md +0 -124
- package/.claude/worktrees/kanban-overhaul/config/commands/test.md +0 -60
- package/.claude/worktrees/kanban-overhaul/config/commands/validate.md +0 -66
- package/.claude/worktrees/kanban-overhaul/config/commands/visual-plan.md +0 -19
- package/.claude/worktrees/kanban-overhaul/config/hooks/PostToolUse +0 -66
- package/.claude/worktrees/kanban-overhaul/config/hooks/PreToolUse +0 -82
- package/.claude/worktrees/kanban-overhaul/config/hooks/README.md +0 -68
- package/.claude/worktrees/kanban-overhaul/config/hooks/TaskResume +0 -48
- package/.claude/worktrees/kanban-overhaul/config/hooks/TaskStart +0 -47
- package/.claude/worktrees/kanban-overhaul/config/hooks/UserPromptSubmit +0 -55
- package/.claude/worktrees/kanban-overhaul/config/rules/general.md +0 -9
- package/.claude/worktrees/kanban-overhaul/config/rules/git.md +0 -11
- package/.claude/worktrees/kanban-overhaul/config/rules/javascript.md +0 -10
- package/.claude/worktrees/kanban-overhaul/config/rules/python.md +0 -10
- package/.claude/worktrees/kanban-overhaul/config/rules/testing.md +0 -10
- package/.claude/worktrees/kanban-overhaul/config/rules/thinking.md +0 -56
- package/.claude/worktrees/kanban-overhaul/config/rules/uncertainty.md +0 -70
- package/.claude/worktrees/kanban-overhaul/config/skills/9router/SKILL.md +0 -80
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-chat/SKILL.md +0 -73
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-embeddings/SKILL.md +0 -69
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-image/SKILL.md +0 -86
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-stt/SKILL.md +0 -79
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-tts/SKILL.md +0 -80
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-web-fetch/SKILL.md +0 -99
- package/.claude/worktrees/kanban-overhaul/config/skills/9router-web-search/SKILL.md +0 -91
- package/.claude/worktrees/kanban-overhaul/config/skills/bizar/README.md +0 -9
- package/.claude/worktrees/kanban-overhaul/config/skills/bizar/SKILL.md +0 -447
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/README.md +0 -28
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/SKILL.md +0 -634
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/agents/openai.yaml +0 -4
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/concurrency.md +0 -320
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/error-handling.md +0 -229
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/memory-safety.md +0 -216
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/modern-idioms.md +0 -282
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-coding-standards/references/review-checklist.md +0 -96
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/README.md +0 -28
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/SKILL.md +0 -304
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/agents/openai.yaml +0 -4
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/coverage.md +0 -370
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/framework-compare.md +0 -175
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/host-test-for-embedded.md +0 -499
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/mocking.md +0 -364
- package/.claude/worktrees/kanban-overhaul/config/skills/cpp-testing/references/tdd-workflow.md +0 -308
- package/.claude/worktrees/kanban-overhaul/config/skills/cubesandbox/SKILL.md +0 -148
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/README.md +0 -41
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/SKILL.md +0 -439
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/agents/openai.yaml +0 -4
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/freertos-patterns.md +0 -214
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/host-tests.md +0 -164
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/idf-py-commands.md +0 -157
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/kconfig.md +0 -159
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/logging-discipline.md +0 -118
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/memory-and-iram.md +0 -137
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/nvs.md +0 -121
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/references/packed-structs.md +0 -192
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/scripts/idf_env.sh +0 -47
- package/.claude/worktrees/kanban-overhaul/config/skills/embedded-esp-idf/scripts/size_check.sh +0 -77
- package/.claude/worktrees/kanban-overhaul/config/skills/glyph/SKILL.md +0 -163
- package/.claude/worktrees/kanban-overhaul/config/skills/harness-engineering/SKILL.md +0 -142
- package/.claude/worktrees/kanban-overhaul/config/skills/lightrag/SKILL.md +0 -81
- package/.claude/worktrees/kanban-overhaul/config/skills/memory-protocol/SKILL.md +0 -105
- package/.claude/worktrees/kanban-overhaul/config/skills/obsidian/SKILL.md +0 -306
- package/.claude/worktrees/kanban-overhaul/config/skills/read-the-damn-docs/SKILL.md +0 -113
- package/.claude/worktrees/kanban-overhaul/config/skills/self-improvement/SKILL.md +0 -64
- package/.claude/worktrees/kanban-overhaul/config/trigger-patterns.json +0 -186
- package/.claude/worktrees/kanban-overhaul/docker-compose.yml +0 -50
- package/.claude/worktrees/kanban-overhaul/docs/A11Y.md +0 -81
- package/.claude/worktrees/kanban-overhaul/docs/DEPLOY.md +0 -360
- package/.claude/worktrees/kanban-overhaul/docs/DOCKER.md +0 -250
- package/.claude/worktrees/kanban-overhaul/docs/INDEX.md +0 -223
- package/.claude/worktrees/kanban-overhaul/docs/PLUGIN_REGISTRY.md +0 -107
- package/.claude/worktrees/kanban-overhaul/docs/RELEASING.md +0 -693
- package/.claude/worktrees/kanban-overhaul/docs/architecture.md +0 -317
- package/.claude/worktrees/kanban-overhaul/docs/code-review.md +0 -242
- package/.claude/worktrees/kanban-overhaul/docs/curator.md +0 -144
- package/.claude/worktrees/kanban-overhaul/docs/dashboard-ui-migration.md +0 -807
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-001-cline-rewrite.md +0 -114
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-002-in-process-clinecore.md +0 -139
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-003-in-process-memory-vault.md +0 -101
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-004-cline-agent-teams.md +0 -112
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-005-bg-agents-via-dashboard.md +0 -77
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-006-kanban-board.md +0 -69
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-007-tool-approval-gate.md +0 -147
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-008-skill-curator.md +0 -100
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-009-pre-compaction-flush.md +0 -106
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-010-knowledge-graph-tools.md +0 -95
- package/.claude/worktrees/kanban-overhaul/docs/decisions/DEC-011-claude-code-migration.md +0 -172
- package/.claude/worktrees/kanban-overhaul/docs/graph-tools.md +0 -130
- package/.claude/worktrees/kanban-overhaul/docs/migration-guide.md +0 -471
- package/.claude/worktrees/kanban-overhaul/docs/migrations/cline-replacement.md +0 -118
- package/.claude/worktrees/kanban-overhaul/docs/postmortems/2026-06-18-plugin-state-deadlock.md +0 -250
- package/.claude/worktrees/kanban-overhaul/docs/quality-document.md +0 -74
- package/.claude/worktrees/kanban-overhaul/docs/releases/v0.5.2.md +0 -66
- package/.claude/worktrees/kanban-overhaul/docs/releases/v0.5.4.md +0 -85
- package/.claude/worktrees/kanban-overhaul/docs/releases/v2.3.0.md +0 -96
- package/.claude/worktrees/kanban-overhaul/docs/releases/v3.24.0.md +0 -155
- package/.claude/worktrees/kanban-overhaul/docs/releases/v4.0.0.md +0 -123
- package/.claude/worktrees/kanban-overhaul/docs/releases/v7.0.0.md +0 -173
- package/.claude/worktrees/kanban-overhaul/docs/safety.md +0 -216
- package/.claude/worktrees/kanban-overhaul/feature_list.json +0 -1297
- package/.claude/worktrees/kanban-overhaul/init.sh +0 -211
- package/.claude/worktrees/kanban-overhaul/install.sh +0 -498
- package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/INSTRUCTIONS.md +0 -82
- package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/mod.json +0 -37
- package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/route.mjs +0 -136
- package/.claude/worktrees/kanban-overhaul/mods-examples/impeccable/web/index.html +0 -180
- package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/INSTRUCTIONS.md +0 -81
- package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/mod.json +0 -61
- package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/route.mjs +0 -461
- package/.claude/worktrees/kanban-overhaul/mods-examples/lightrag/web/index.html +0 -263
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/INSTRUCTIONS.md +0 -87
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/agents/thor.md +0 -64
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/mod.json +0 -36
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/route.mjs +0 -98
- package/.claude/worktrees/kanban-overhaul/mods-examples/ponytail/web/index.html +0 -126
- package/.claude/worktrees/kanban-overhaul/package.json +0 -154
- package/.claude/worktrees/kanban-overhaul/packages/sdk/ARCHITECTURE.md +0 -70
- package/.claude/worktrees/kanban-overhaul/packages/sdk/LICENSE +0 -21
- package/.claude/worktrees/kanban-overhaul/packages/sdk/README.md +0 -80
- package/.claude/worktrees/kanban-overhaul/packages/sdk/package.json +0 -30
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/agent-registry.ts +0 -304
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/byzantine.ts +0 -587
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/index.ts +0 -147
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/queen.ts +0 -173
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/consensus/types.ts +0 -199
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/dangerous-patterns.ts +0 -127
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/audit.ts +0 -156
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/budget.ts +0 -269
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/envelope.ts +0 -144
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/hmac.ts +0 -160
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/index.ts +0 -443
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/pii.ts +0 -241
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/policy.ts +0 -112
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/federation/trust.ts +0 -146
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/fingerprint.ts +0 -0
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/index.ts +0 -114
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/mcp/bin.ts +0 -51
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/mcp/server.ts +0 -848
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/memory/index.ts +0 -160
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/codemod-intent.ts +0 -125
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/index.ts +0 -247
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/memory-distillation-shim.mjs +0 -18
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/memory-distillation.ts +0 -249
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/model-router.ts +0 -235
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/router/q-learning-router.ts +0 -304
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/swarm-topology.ts +0 -279
- package/.claude/worktrees/kanban-overhaul/packages/sdk/src/version.ts +0 -4
- package/.claude/worktrees/kanban-overhaul/packages/sdk/tsconfig.json +0 -25
- package/.claude/worktrees/kanban-overhaul/packages/sdk/vitest.config.ts +0 -9
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/ARCHITECTURE.md +0 -72
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/CONSTRAINTS.md +0 -62
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/LICENSE +0 -21
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/README.md +0 -46
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/index.ts +0 -50
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/package.json +0 -18
- package/.claude/worktrees/kanban-overhaul/plugins/bizar/tsconfig.json +0 -29
- package/.claude/worktrees/kanban-overhaul/scripts/bh-full-e2e.mjs +0 -298
- package/.claude/worktrees/kanban-overhaul/scripts/check-agents.mjs +0 -73
- package/.claude/worktrees/kanban-overhaul/scripts/check-arch.sh +0 -80
- package/.claude/worktrees/kanban-overhaul/scripts/check-deps.mjs +0 -492
- package/.claude/worktrees/kanban-overhaul/scripts/clean-state-check.sh +0 -81
- package/.claude/worktrees/kanban-overhaul/scripts/git-hooks/pre-commit +0 -59
- package/.claude/worktrees/kanban-overhaul/scripts/git-hooks/pre-push +0 -54
- package/.claude/worktrees/kanban-overhaul/scripts/install-hooks.sh +0 -29
- package/.claude/worktrees/kanban-overhaul/scripts/install-service.mjs +0 -190
- package/.claude/worktrees/kanban-overhaul/scripts/mirror-claude-md.sh +0 -78
- package/.claude/worktrees/kanban-overhaul/scripts/session-trace.sh +0 -52
- package/.claude/worktrees/kanban-overhaul/scripts/test-in-container.sh +0 -157
- package/.claude/worktrees/kanban-overhaul/scripts/verify-feature.sh +0 -102
- package/.claude/worktrees/kanban-overhaul/skills-lock.json +0 -11
- package/.claude/worktrees/kanban-overhaul/templates/clean-state-checklist.md +0 -55
- package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/README.md +0 -32
- package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/functions-index.template.js +0 -15
- package/.claude/worktrees/kanban-overhaul/templates/deploy/cloudflare/wrangler.toml.template +0 -9
- package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/.env.template +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/README.md +0 -58
- package/.claude/worktrees/kanban-overhaul/templates/deploy/docker/docker-compose.template.yml +0 -23
- package/.claude/worktrees/kanban-overhaul/templates/deploy/fly/README.md +0 -35
- package/.claude/worktrees/kanban-overhaul/templates/deploy/fly/fly.toml.template +0 -28
- package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/README.md +0 -29
- package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/api-index.template.js +0 -18
- package/.claude/worktrees/kanban-overhaul/templates/deploy/vercel/vercel.json.template +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/README.md +0 -58
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/citation.json +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/code-review.json +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/code-search-basic.json +0 -28
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/concise-output.json +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/context-window.json +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/error-recovery.json +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/json-output.json +0 -20
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/latency-bounds.json +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/multi-language.json +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/regression-suite.json +0 -79
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/response-format.json +0 -30
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/safe-paths.json +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/tool-call-correctness.json +0 -24
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/tool-call-multi-step.json +0 -18
- package/.claude/worktrees/kanban-overhaul/templates/eval-fixtures/unicode-handling.json +0 -16
- package/.claude/worktrees/kanban-overhaul/templates/evaluator-rubric.md +0 -50
- package/.claude/worktrees/kanban-overhaul/templates/plan/htmx.min.js +0 -1
- package/.claude/worktrees/kanban-overhaul/templates/plan/library/bug-investigation.mdx +0 -79
- package/.claude/worktrees/kanban-overhaul/templates/plan/library/decision-record.mdx +0 -71
- package/.claude/worktrees/kanban-overhaul/templates/plan/library/feature-design.mdx +0 -92
- package/.claude/worktrees/kanban-overhaul/templates/plan/meta.json.template +0 -8
- package/.claude/worktrees/kanban-overhaul/templates/plan/plan.mdx.template +0 -46
- package/.claude/worktrees/kanban-overhaul/templates/plugin-template/README.md +0 -121
- package/.claude/worktrees/kanban-overhaul/templates/plugin-template/index.js +0 -66
- package/.claude/worktrees/kanban-overhaul/templates/plugin-template/plugin.json +0 -42
- package/.claude/worktrees/kanban-overhaul/templates/plugin-template/tests/plugin.test.js +0 -83
- package/.claude/worktrees/kanban-overhaul/templates/schedules/daily-backup.json +0 -12
- package/.claude/worktrees/kanban-overhaul/templates/schedules/daily-cleanup.json +0 -12
- package/.claude/worktrees/kanban-overhaul/templates/schedules/hourly-health-check.json +0 -12
- package/.claude/worktrees/kanban-overhaul/templates/schedules/webhook-on-push.json +0 -13
- package/.claude/worktrees/kanban-overhaul/templates/schedules/weekly-digest.json +0 -13
- package/.claude/worktrees/kanban-overhaul/templates/sprint-contract.md +0 -47
- package/.claude/worktrees/kanban-overhaul/tsconfig.json +0 -44
- package/.claude/worktrees/kanban-overhaul/vite.config.ts +0 -51
- package/bizar-dash/dist/assets/ActivityFeed-BXIkGGQ1.js +0 -16
- package/bizar-dash/dist/assets/ActivityFeed-BXIkGGQ1.js.map +0 -1
- package/bizar-dash/dist/assets/ActivityView-CBxNNrZa.js +0 -12
- package/bizar-dash/dist/assets/ActivityView-CBxNNrZa.js.map +0 -1
- package/bizar-dash/dist/assets/AgentsView-uv4l21AH.js +0 -23
- package/bizar-dash/dist/assets/AgentsView-uv4l21AH.js.map +0 -1
- package/bizar-dash/dist/assets/BackgroundJobsView-CB4WXIpk.js +0 -6
- package/bizar-dash/dist/assets/BackgroundJobsView-CB4WXIpk.js.map +0 -1
- package/bizar-dash/dist/assets/Card-CeZsWlcP.js +0 -1
- package/bizar-dash/dist/assets/Card-CeZsWlcP.js.map +0 -1
- package/bizar-dash/dist/assets/Chip-OPjSKl2I.js +0 -1
- package/bizar-dash/dist/assets/Chip-OPjSKl2I.js.map +0 -1
- package/bizar-dash/dist/assets/EmptyState-BrLA8mbE.js +0 -1
- package/bizar-dash/dist/assets/EmptyState-BrLA8mbE.js.map +0 -1
- package/bizar-dash/dist/assets/GoalsView-B8R-kxQr.js +0 -11
- package/bizar-dash/dist/assets/GoalsView-B8R-kxQr.js.map +0 -1
- package/bizar-dash/dist/assets/Grid-B7NgNtff.js +0 -1
- package/bizar-dash/dist/assets/Grid-B7NgNtff.js.map +0 -1
- package/bizar-dash/dist/assets/Input-BW_5Sl6N.js +0 -1
- package/bizar-dash/dist/assets/Input-BW_5Sl6N.js.map +0 -1
- package/bizar-dash/dist/assets/KanbanCard-B-NOSfMN.js +0 -21
- package/bizar-dash/dist/assets/KanbanCard-B-NOSfMN.js.map +0 -1
- package/bizar-dash/dist/assets/LibrariesView-D6eB7B2A.js +0 -67
- package/bizar-dash/dist/assets/LibrariesView-D6eB7B2A.js.map +0 -1
- package/bizar-dash/dist/assets/MemoryView-MK4m1KbR.js +0 -13
- package/bizar-dash/dist/assets/MemoryView-MK4m1KbR.js.map +0 -1
- package/bizar-dash/dist/assets/OverviewView-CHavfYBa.js +0 -1
- package/bizar-dash/dist/assets/OverviewView-CHavfYBa.js.map +0 -1
- package/bizar-dash/dist/assets/SchedulesView-zV-0pbsz.js +0 -1
- package/bizar-dash/dist/assets/SchedulesView-zV-0pbsz.js.map +0 -1
- package/bizar-dash/dist/assets/Select-B6Ho36Tq.js +0 -11
- package/bizar-dash/dist/assets/Select-B6Ho36Tq.js.map +0 -1
- package/bizar-dash/dist/assets/SettingsRow-Br21uRFz.js +0 -1
- package/bizar-dash/dist/assets/SettingsRow-Br21uRFz.js.map +0 -1
- package/bizar-dash/dist/assets/SettingsView-Cx3uJrus.js +0 -38
- package/bizar-dash/dist/assets/SettingsView-Cx3uJrus.js.map +0 -1
- package/bizar-dash/dist/assets/Sheet-Cmu_4Zea.js +0 -1
- package/bizar-dash/dist/assets/Sheet-Cmu_4Zea.js.map +0 -1
- package/bizar-dash/dist/assets/Slider-B_jPr-SR.js +0 -1
- package/bizar-dash/dist/assets/Slider-B_jPr-SR.js.map +0 -1
- package/bizar-dash/dist/assets/Sparkline-Cmqw0N39.js +0 -1
- package/bizar-dash/dist/assets/Sparkline-Cmqw0N39.js.map +0 -1
- package/bizar-dash/dist/assets/Switch-C7Qyu50Y.js +0 -10
- package/bizar-dash/dist/assets/Switch-C7Qyu50Y.js.map +0 -1
- package/bizar-dash/dist/assets/TasksView-BXADmjgb.js +0 -1
- package/bizar-dash/dist/assets/TasksView-BXADmjgb.js.map +0 -1
- package/bizar-dash/dist/assets/Textarea-KIN98DVH.js +0 -1
- package/bizar-dash/dist/assets/Textarea-KIN98DVH.js.map +0 -1
- package/bizar-dash/dist/assets/ViewHeader-CPbqI-w8.js +0 -6
- package/bizar-dash/dist/assets/ViewHeader-CPbqI-w8.js.map +0 -1
- package/bizar-dash/dist/assets/brain-jN_ldx3U.js +0 -6
- package/bizar-dash/dist/assets/brain-jN_ldx3U.js.map +0 -1
- package/bizar-dash/dist/assets/calendar-DZGgPP2_.js +0 -6
- package/bizar-dash/dist/assets/calendar-DZGgPP2_.js.map +0 -1
- package/bizar-dash/dist/assets/circle-check-XhUtiACZ.js +0 -6
- package/bizar-dash/dist/assets/circle-check-XhUtiACZ.js.map +0 -1
- package/bizar-dash/dist/assets/clock-BXBnSbox.js +0 -6
- package/bizar-dash/dist/assets/clock-BXBnSbox.js.map +0 -1
- package/bizar-dash/dist/assets/cmdk-D15rXxc5.js +0 -80
- package/bizar-dash/dist/assets/cmdk-D15rXxc5.js.map +0 -1
- package/bizar-dash/dist/assets/dnd-kit-Bormfg7j.js +0 -5
- package/bizar-dash/dist/assets/dnd-kit-Bormfg7j.js.map +0 -1
- package/bizar-dash/dist/assets/git-pull-request-BCt0CEjc.js +0 -11
- package/bizar-dash/dist/assets/git-pull-request-BCt0CEjc.js.map +0 -1
- package/bizar-dash/dist/assets/index-C0JBGB5M.js +0 -1
- package/bizar-dash/dist/assets/index-C0JBGB5M.js.map +0 -1
- package/bizar-dash/dist/assets/index-CrWI7sQR.js +0 -1
- package/bizar-dash/dist/assets/index-CrWI7sQR.js.map +0 -1
- package/bizar-dash/dist/assets/main-CCimEcWH.js +0 -134
- package/bizar-dash/dist/assets/main-CCimEcWH.js.map +0 -1
- package/bizar-dash/dist/assets/play-B0rTjpSg.js +0 -6
- package/bizar-dash/dist/assets/play-B0rTjpSg.js.map +0 -1
- package/bizar-dash/dist/assets/plus-BaTQsS9G.js +0 -6
- package/bizar-dash/dist/assets/plus-BaTQsS9G.js.map +0 -1
- package/bizar-dash/dist/assets/refresh-cw-CoatVcs3.js +0 -6
- package/bizar-dash/dist/assets/refresh-cw-CoatVcs3.js.map +0 -1
- package/bizar-dash/dist/assets/terminal-k-1HFHcN.js +0 -11
- package/bizar-dash/dist/assets/terminal-k-1HFHcN.js.map +0 -1
- package/bizar-dash/dist/assets/trash-2-DtpKnAn2.js +0 -6
- package/bizar-dash/dist/assets/trash-2-DtpKnAn2.js.map +0 -1
- package/bizar-dash/dist/assets/triangle-alert-FHSs_e5b.js +0 -6
- package/bizar-dash/dist/assets/triangle-alert-FHSs_e5b.js.map +0 -1
- package/bizar-dash/dist/assets/wrench-CbBE0oQ0.js +0 -6
- package/bizar-dash/dist/assets/wrench-CbBE0oQ0.js.map +0 -1
- package/bizar-dash/dist/v8.html +0 -19
- package/bizar-dash/src/web/v8/views/Tasks/CommandPalettePlaceholder.tsx +0 -106
- package/bizar-dash/src/web/v8/views/Tasks/TasksKanbanPlaceholder.tsx +0 -62
- package/bizar-dash/src/web/v8.html +0 -17
- package/packages/sdk/.harness/agents.json +0 -17
- package/packages/sdk/.harness/topology.json +0 -4
- package/packages/sdk/ARCHITECTURE.md +0 -70
- package/packages/sdk/README.md +0 -80
- package/packages/sdk/src/agent-registry.ts +0 -304
- package/packages/sdk/src/consensus/byzantine.ts +0 -587
- package/packages/sdk/src/consensus/index.ts +0 -147
- package/packages/sdk/src/consensus/queen.ts +0 -173
- package/packages/sdk/src/consensus/types.ts +0 -199
- package/packages/sdk/src/dangerous-patterns.ts +0 -127
- package/packages/sdk/src/federation/audit.ts +0 -156
- package/packages/sdk/src/federation/budget.ts +0 -269
- package/packages/sdk/src/federation/envelope.ts +0 -144
- package/packages/sdk/src/federation/hmac.ts +0 -160
- package/packages/sdk/src/federation/index.ts +0 -443
- package/packages/sdk/src/federation/pii.ts +0 -241
- package/packages/sdk/src/federation/policy.ts +0 -112
- package/packages/sdk/src/federation/trust.ts +0 -146
- package/packages/sdk/src/fingerprint.ts +0 -0
- package/packages/sdk/src/index.ts +0 -114
- package/packages/sdk/src/mcp/bin.ts +0 -51
- package/packages/sdk/src/mcp/server.ts +0 -848
- package/packages/sdk/src/memory/index.ts +0 -160
- package/packages/sdk/src/router/codemod-intent.ts +0 -125
- package/packages/sdk/src/router/index.ts +0 -247
- package/packages/sdk/src/router/memory-distillation-shim.mjs +0 -18
- package/packages/sdk/src/router/memory-distillation.ts +0 -249
- package/packages/sdk/src/router/model-router.ts +0 -235
- package/packages/sdk/src/router/q-learning-router.ts +0 -304
- package/packages/sdk/src/swarm-topology.ts +0 -279
- package/packages/sdk/src/version.ts +0 -4
- package/packages/sdk/tests/agent-registry.test.ts +0 -285
- package/packages/sdk/tests/consensus.test.ts +0 -376
- package/packages/sdk/tests/federation/audit.test.ts +0 -164
- package/packages/sdk/tests/federation/budget.test.ts +0 -189
- package/packages/sdk/tests/federation/envelope.test.ts +0 -120
- package/packages/sdk/tests/federation/hmac.test.ts +0 -194
- package/packages/sdk/tests/federation/orchestrator.test.ts +0 -176
- package/packages/sdk/tests/federation/pii.test.ts +0 -106
- package/packages/sdk/tests/federation/policy.test.ts +0 -140
- package/packages/sdk/tests/federation/trust.test.ts +0 -124
- package/packages/sdk/tests/mcp-tools.test.ts +0 -204
- package/packages/sdk/tests/memory-distillation.test.mjs +0 -186
- package/packages/sdk/tests/model-router.test.mjs +0 -108
- package/packages/sdk/tests/q-learning-router.test.mjs +0 -100
- package/packages/sdk/tests/router-orchestrator.test.mjs +0 -172
- package/packages/sdk/tests/router.test.mjs +0 -91
- package/packages/sdk/tests/sdk.test.mjs +0 -172
- package/packages/sdk/tests/swarm-topology.test.ts +0 -258
- package/packages/sdk/tsconfig.json +0 -25
- /package/{.claude/worktrees/kanban-overhaul/bizar-dash/src/web/v8.html → bizar-dash/src/web/index.html} +0 -0
- /package/{.claude/worktrees/kanban-overhaul → plugins/bizar}/LICENSE +0 -0
|
@@ -1,1176 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* cli/provision-claude.mjs
|
|
4
|
-
*
|
|
5
|
-
* v6.3.0 — Claude Code-native installer + updater.
|
|
6
|
-
*
|
|
7
|
-
* Replaces `cli/provision.mjs` (the Cline-era provisioner). The install
|
|
8
|
-
* / update flow for Claude Code is different from Cline:
|
|
9
|
-
*
|
|
10
|
-
* - Config root is `~/.claude/` (NOT `~/.cline/`).
|
|
11
|
-
* - The configuration file is `~/.claude/settings.json` (NOT
|
|
12
|
-
* `~/.cline/cline.json`).
|
|
13
|
-
* - MCP servers are registered via `claude mcp add` (NOT by
|
|
14
|
-
* patching a `plugin[]` array).
|
|
15
|
-
* - Plugins are managed via `claude plugin install ...` (NOT
|
|
16
|
-
* copied into `~/.cline/plugins/bizar/`).
|
|
17
|
-
* - Skills live under `~/.claude/skills/<name>/SKILL.md`.
|
|
18
|
-
* - Commands live under `~/.claude/commands/<name>.md`.
|
|
19
|
-
* - Rules live under `~/.claude/rules/<name>.md`.
|
|
20
|
-
* - Hooks are wired into `~/.claude/settings.json` (NOT installed
|
|
21
|
-
* as executable files in `~/.cline/hooks/`).
|
|
22
|
-
* - `~/.claude/CLAUDE.md` mirrors the repo's `AGENTS.md`.
|
|
23
|
-
*
|
|
24
|
-
* Public API:
|
|
25
|
-
* runProvision({ mode, dryRun, force, yes, restart, ... })
|
|
26
|
-
* Runs the full provision flow for `mode` ('install' | 'update').
|
|
27
|
-
* detectState()
|
|
28
|
-
* Probe what's installed without modifying anything.
|
|
29
|
-
* Returns a structured state object.
|
|
30
|
-
*
|
|
31
|
-
* Both modes are idempotent and safe to re-run.
|
|
32
|
-
*
|
|
33
|
-
* Flags (parsed by the CLI shim at the bottom):
|
|
34
|
-
* --mode=install|update|install-only-system
|
|
35
|
-
* --dry-run Print actions, make no changes.
|
|
36
|
-
* --force Overwrite existing files.
|
|
37
|
-
* --yes / -y Same as --force.
|
|
38
|
-
* --non-interactive Same as --yes.
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
import chalk from 'chalk';
|
|
42
|
-
import { execFileSync, execSync, spawn, spawnSync } from 'node:child_process';
|
|
43
|
-
import {
|
|
44
|
-
chmodSync,
|
|
45
|
-
copyFileSync,
|
|
46
|
-
existsSync,
|
|
47
|
-
mkdirSync,
|
|
48
|
-
readdirSync,
|
|
49
|
-
readFileSync,
|
|
50
|
-
rmSync,
|
|
51
|
-
statSync,
|
|
52
|
-
writeFileSync,
|
|
53
|
-
} from 'node:fs';
|
|
54
|
-
import { homedir } from 'node:os';
|
|
55
|
-
import { dirname, join, resolve, sep } from 'node:path';
|
|
56
|
-
import { fileURLToPath } from 'node:url';
|
|
57
|
-
|
|
58
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
59
|
-
const __dirname = dirname(__filename);
|
|
60
|
-
const HOME = homedir();
|
|
61
|
-
|
|
62
|
-
// Repo root = `<pkg>/cli/provision-claude.mjs` → one level up.
|
|
63
|
-
// This works for source checkouts AND global npm installs.
|
|
64
|
-
export const REPO_ROOT = resolve(__dirname, '..');
|
|
65
|
-
|
|
66
|
-
// ─── Paths ────────────────────────────────────────────────────────────────────
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Resolve the Claude Code config directory.
|
|
70
|
-
*
|
|
71
|
-
* Resolution order (matches Claude Code's own resolver, see
|
|
72
|
-
* https://code.claude.com/docs/en/cli-reference):
|
|
73
|
-
* 1. `process.env.CLAUDE_CONFIG_DIR` (explicit override)
|
|
74
|
-
* 2. `$HOME/.claude` (default)
|
|
75
|
-
* 3. (Windows only) `%APPDATA%\Claude`
|
|
76
|
-
*/
|
|
77
|
-
export function resolveClaudeDir() {
|
|
78
|
-
if (process.env.CLAUDE_CONFIG_DIR && process.env.CLAUDE_CONFIG_DIR.trim()) {
|
|
79
|
-
return process.env.CLAUDE_CONFIG_DIR.trim();
|
|
80
|
-
}
|
|
81
|
-
if (process.platform === 'win32') {
|
|
82
|
-
return process.env.APPDATA
|
|
83
|
-
? join(process.env.APPDATA, 'Claude')
|
|
84
|
-
: join(HOME, '.claude');
|
|
85
|
-
}
|
|
86
|
-
return join(HOME, '.claude');
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export const CLAUDE_DIR = resolveClaudeDir();
|
|
90
|
-
|
|
91
|
-
/** `~/.bizar_home/` — Bizar-specific runtime state (NOT under ~/.claude/). */
|
|
92
|
-
export const BIZAR_HOME = process.env.BIZAR_HOME
|
|
93
|
-
|| join(process.env.XDG_CONFIG_HOME || join(HOME, '.config'), 'bizar');
|
|
94
|
-
|
|
95
|
-
// Standard Claude Code subdirectories (v6.3.0 — Claude Code layout)
|
|
96
|
-
export const CLAUDE_AGENTS_DIR = join(CLAUDE_DIR, 'agents');
|
|
97
|
-
export const CLAUDE_SKILLS_DIR = join(CLAUDE_DIR, 'skills');
|
|
98
|
-
export const CLAUDE_COMMANDS_DIR = join(CLAUDE_DIR, 'commands');
|
|
99
|
-
export const CLAUDE_HOOKS_DIR = join(CLAUDE_DIR, 'hooks');
|
|
100
|
-
export const CLAUDE_RULES_DIR = join(CLAUDE_DIR, 'rules');
|
|
101
|
-
export const CLAUDE_PLUGINS_DIR = join(CLAUDE_DIR, 'plugins');
|
|
102
|
-
|
|
103
|
-
// Service / dashboard pid files
|
|
104
|
-
const SERVICE_PID_FILE = join(BIZAR_HOME, 'service.pid');
|
|
105
|
-
const DASHBOARD_PID_FILE = join(BIZAR_HOME, 'dashboard.pid');
|
|
106
|
-
const DASHBOARD_PORT_FILE = join(BIZAR_HOME, 'dashboard.port');
|
|
107
|
-
|
|
108
|
-
// ─── Tiny utilities ──────────────────────────────────────────────────────────
|
|
109
|
-
|
|
110
|
-
function haveCmd(cmd) {
|
|
111
|
-
try {
|
|
112
|
-
execSync(`command -v ${cmd}`, { stdio: ['ignore', 'pipe', 'ignore'] });
|
|
113
|
-
return true;
|
|
114
|
-
} catch {
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Build the SDK workspace so its compiled JS output lives at
|
|
121
|
-
* `<pkg>/packages/sdk/dist/`. The dashboard imports the SDK memory
|
|
122
|
-
* module from `dist/memory/index.js`, not from `src/memory/index.js`,
|
|
123
|
-
* so without this build step the npm-installed package ships a TS
|
|
124
|
-
* source tree that the dashboard cannot run.
|
|
125
|
-
*
|
|
126
|
-
* v7.0.1 — `install.sh` + `bizar update` previously skipped this step
|
|
127
|
-
* entirely. Symptom: `bizar dash start` crashes with
|
|
128
|
-
* `Cannot find module .../packages/sdk/dist/memory/index.js`
|
|
129
|
-
* (or .../src/memory/index.js for older import paths). Root cause: the
|
|
130
|
-
* SDK's `package.json` advertises `./dist/*` exports, but the SDK's
|
|
131
|
-
* `tsconfig.json` is never compiled by the installer.
|
|
132
|
-
*
|
|
133
|
-
* Bun resolution: when bun is invoked from a globally npm-installed
|
|
134
|
-
* package, its lifecycle script runs with a minimal PATH that does
|
|
135
|
-
* NOT include `~/.bun/bin`. So `bun run build:sdk` (which shells out to
|
|
136
|
-
* `tsc` via bun's bin shim) fails with `tsc: command not found`. To
|
|
137
|
-
* dodge that, we resolve bun to its absolute path
|
|
138
|
-
* (`$HOME/.bun/bin/bun`) and prepend that dir to the child process
|
|
139
|
-
* PATH so bun's tsc shim is visible.
|
|
140
|
-
*
|
|
141
|
-
* Idempotent: skips when `dist/memory/index.js` already exists.
|
|
142
|
-
* Non-fatal: returns `{ ok: false, message }` rather than throwing —
|
|
143
|
-
* the rest of the provision flow should still complete (some operators
|
|
144
|
-
* run a separate build pipeline, e.g. a CI step).
|
|
145
|
-
*/
|
|
146
|
-
export async function buildSdk({ dryRun = false } = {}) {
|
|
147
|
-
const sdkRoot = join(REPO_ROOT, 'packages', 'sdk');
|
|
148
|
-
const srcEntry = join(sdkRoot, 'src', 'memory', 'index.ts');
|
|
149
|
-
const distEntry = join(sdkRoot, 'dist', 'memory', 'index.js');
|
|
150
|
-
|
|
151
|
-
if (!existsSync(srcEntry)) {
|
|
152
|
-
// No SDK TS source — this is a stripped install or an unusual layout.
|
|
153
|
-
// Don't fail the whole provision over it; just report.
|
|
154
|
-
return { ok: true, skipped: true, message: `SDK src not found at ${srcEntry} — skipping build (likely a non-bundled install)` };
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
if (existsSync(distEntry)) {
|
|
158
|
-
return { ok: true, skipped: true, message: `SDK dist already present — skipping build (delete ${join(sdkRoot, 'dist')} to force)` };
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
if (dryRun) {
|
|
162
|
-
return { ok: true, skipped: false, message: `would build SDK at ${sdkRoot}` };
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// Resolve bun to an absolute path. `command -v bun` finds whatever is
|
|
166
|
-
// on PATH, but bun's bin dir (typically `~/.bun/bin`) is NOT always on
|
|
167
|
-
// PATH — especially when invoked from a globally npm-installed package
|
|
168
|
-
// whose lifecycle scripts run with a minimal env. Without the absolute
|
|
169
|
-
// path, `bun run build:sdk` shells out to `tsc`, finds no shim on PATH,
|
|
170
|
-
// and fails with `tsc: command not found`.
|
|
171
|
-
//
|
|
172
|
-
// Bun's bin dir contains only `bun` and `bunx` — NOT `tsc`. So even
|
|
173
|
-
// when bun runs `build:sdk` (which executes the `tsc` line from
|
|
174
|
-
// package.json), the child shell still needs `tsc` on PATH. The npm
|
|
175
|
-
// global bin dir (where `npm install -g typescript` lands the shim) is
|
|
176
|
-
// the typical source — resolve it via `npm root -g`'s parent and
|
|
177
|
-
// prepend both bun's bin and the npm global bin to the child PATH.
|
|
178
|
-
const bunFromHome = join(process.env.HOME || '', '.bun', 'bin', 'bun');
|
|
179
|
-
let cmd, args, childEnv;
|
|
180
|
-
if (existsSync(bunFromHome)) {
|
|
181
|
-
cmd = bunFromHome;
|
|
182
|
-
args = ['run', 'build:sdk'];
|
|
183
|
-
const pathDelim = process.platform === 'win32' ? ';' : ':';
|
|
184
|
-
const bunBin = dirname(bunFromHome);
|
|
185
|
-
let npmGlobalBin = '';
|
|
186
|
-
try {
|
|
187
|
-
const npmRootG = execSync('npm root -g', { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
188
|
-
// npm root -g returns .../lib/node_modules — parent is .../lib, and
|
|
189
|
-
// the bin dir lives at .../bin. So walk up one and over.
|
|
190
|
-
npmGlobalBin = join(dirname(npmRootG), '..', 'bin');
|
|
191
|
-
} catch {
|
|
192
|
-
// npm not on PATH — fall back to the standard location.
|
|
193
|
-
npmGlobalBin = process.platform === 'win32'
|
|
194
|
-
? join(process.env.APPDATA || '', 'npm')
|
|
195
|
-
: join(process.env.HOME || '', '.local', 'bin');
|
|
196
|
-
}
|
|
197
|
-
const pathParts = [bunBin];
|
|
198
|
-
if (npmGlobalBin && existsSync(npmGlobalBin)) pathParts.push(npmGlobalBin);
|
|
199
|
-
pathParts.push(process.env.PATH || '');
|
|
200
|
-
childEnv = { ...process.env, PATH: pathParts.join(pathDelim) };
|
|
201
|
-
} else if (haveCmd('bun')) {
|
|
202
|
-
cmd = 'bun';
|
|
203
|
-
args = ['run', 'build:sdk'];
|
|
204
|
-
childEnv = process.env;
|
|
205
|
-
} else {
|
|
206
|
-
// Fallback: npx tsc. Requires a network round-trip on first use but
|
|
207
|
-
// works on systems without bun installed (CI, minimal containers).
|
|
208
|
-
cmd = 'npx';
|
|
209
|
-
args = ['--yes', 'tsc', '-p', 'packages/sdk/tsconfig.json'];
|
|
210
|
-
childEnv = process.env;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
try {
|
|
214
|
-
logInfo(`building SDK with \`${cmd} ${args.join(' ')}\` (REPO_ROOT=${REPO_ROOT})`);
|
|
215
|
-
execFileSync(cmd, args, { cwd: REPO_ROOT, stdio: 'pipe', timeout: 180_000, env: childEnv });
|
|
216
|
-
if (existsSync(distEntry)) {
|
|
217
|
-
return { ok: true, skipped: false, message: 'SDK built (dist/memory/index.js present)' };
|
|
218
|
-
}
|
|
219
|
-
return { ok: false, message: `build completed but ${distEntry} still missing — check tsconfig outDir` };
|
|
220
|
-
} catch (err) {
|
|
221
|
-
const stderr = err.stderr ? err.stderr.toString().split('\n').slice(0, 5).join(' | ') : '(no stderr)';
|
|
222
|
-
return { ok: false, message: `SDK build failed: ${stderr}` };
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Build the Bizar plugin shim (`plugins/bizar/`) so the loader can find
|
|
228
|
-
* `plugins/bizar/dist/index.js` at runtime. Same root cause as `buildSdk()`:
|
|
229
|
-
* the npm-installed package ships `plugins/bizar/index.ts` (TS source) but
|
|
230
|
-
* nothing at `dist/`. Without this build step, `bizar dash start` reports
|
|
231
|
-
* `Plugin source not found at .../plugins/bizar` from `cli/install.mjs:installPluginBizar`
|
|
232
|
-
* (which is misleading — the dir exists, just the compiled entry doesn't).
|
|
233
|
-
*
|
|
234
|
-
* v8.0.2 — same bun/npx/tsc strategy as `buildSdk()`. We compile the
|
|
235
|
-
* single TS entry `plugins/bizar/index.ts` to `plugins/bizar/dist/index.js`
|
|
236
|
-
* via the existing `plugins/bizar/tsconfig.json`.
|
|
237
|
-
*
|
|
238
|
-
* Idempotent: skips when `plugins/bizar/dist/index.js` already exists.
|
|
239
|
-
* Non-fatal: returns `{ ok: false, message }` rather than throwing.
|
|
240
|
-
*/
|
|
241
|
-
export async function buildPlugin({ dryRun = false } = {}) {
|
|
242
|
-
const pluginRoot = join(REPO_ROOT, 'plugins', 'bizar');
|
|
243
|
-
const srcEntry = join(pluginRoot, 'index.ts');
|
|
244
|
-
const distEntry = join(pluginRoot, 'dist', 'index.js');
|
|
245
|
-
|
|
246
|
-
if (!existsSync(srcEntry)) {
|
|
247
|
-
return { ok: true, skipped: true, message: `Plugin src not found at ${srcEntry} — skipping build` };
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
if (existsSync(distEntry)) {
|
|
251
|
-
return { ok: true, skipped: true, message: `Plugin dist already present — skipping build (delete ${join(pluginRoot, 'dist')} to force)` };
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
if (dryRun) {
|
|
255
|
-
return { ok: true, skipped: false, message: `would build plugin at ${pluginRoot}` };
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
// Same PATH-resolution dance as buildSdk(): npm-global scripts may have
|
|
259
|
-
// a stripped PATH that doesn't include ~/.bun/bin or the npm bin dir,
|
|
260
|
-
// so bun's tsc shim isn't visible to the child shell.
|
|
261
|
-
const bunFromHome = join(process.env.HOME || '', '.bun', 'bin', 'bun');
|
|
262
|
-
let cmd, args, childEnv;
|
|
263
|
-
if (existsSync(bunFromHome)) {
|
|
264
|
-
cmd = bunFromHome;
|
|
265
|
-
args = ['x', 'tsc', '-p', 'plugins/bizar/tsconfig.json'];
|
|
266
|
-
const pathDelim = process.platform === 'win32' ? ';' : ':';
|
|
267
|
-
const bunBin = dirname(bunFromHome);
|
|
268
|
-
let npmGlobalBin = '';
|
|
269
|
-
try {
|
|
270
|
-
const npmRootG = execSync('npm root -g', { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }).trim();
|
|
271
|
-
npmGlobalBin = join(dirname(npmRootG), '..', 'bin');
|
|
272
|
-
} catch {
|
|
273
|
-
npmGlobalBin = process.platform === 'win32'
|
|
274
|
-
? join(process.env.APPDATA || '', 'npm')
|
|
275
|
-
: join(process.env.HOME || '', '.local', 'bin');
|
|
276
|
-
}
|
|
277
|
-
const pathParts = [bunBin];
|
|
278
|
-
if (npmGlobalBin && existsSync(npmGlobalBin)) pathParts.push(npmGlobalBin);
|
|
279
|
-
pathParts.push(process.env.PATH || '');
|
|
280
|
-
childEnv = { ...process.env, PATH: pathParts.join(pathDelim) };
|
|
281
|
-
} else if (haveCmd('bun')) {
|
|
282
|
-
cmd = 'bun';
|
|
283
|
-
args = ['x', 'tsc', '-p', 'plugins/bizar/tsconfig.json'];
|
|
284
|
-
childEnv = process.env;
|
|
285
|
-
} else {
|
|
286
|
-
cmd = 'npx';
|
|
287
|
-
args = ['--yes', 'tsc', '-p', 'plugins/bizar/tsconfig.json'];
|
|
288
|
-
childEnv = process.env;
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
try {
|
|
292
|
-
logInfo(`building plugin with \`${cmd} ${args.join(' ')}\` (REPO_ROOT=${REPO_ROOT})`);
|
|
293
|
-
execFileSync(cmd, args, { cwd: REPO_ROOT, stdio: 'pipe', timeout: 180_000, env: childEnv });
|
|
294
|
-
if (existsSync(distEntry)) {
|
|
295
|
-
return { ok: true, skipped: false, message: 'Plugin built (dist/index.js present)' };
|
|
296
|
-
}
|
|
297
|
-
return { ok: false, message: `build completed but ${distEntry} still missing — check tsconfig outDir` };
|
|
298
|
-
} catch (err) {
|
|
299
|
-
const stderr = err.stderr ? err.stderr.toString().split('\n').slice(0, 5).join(' | ') : '(no stderr)';
|
|
300
|
-
return { ok: false, message: `Plugin build failed: ${stderr}` };
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* Build the dashboard SPA (Vite production bundle) so the Node server
|
|
306
|
-
* in `bizar-dash/src/server/server.mjs` can serve the React UI from
|
|
307
|
-
* `bizar-dash/dist/index.html` + `dist/assets/*`. Without this step,
|
|
308
|
-
* npm installs that don't ship a pre-built `dist/` (the published
|
|
309
|
-
* tarball excludes it because it is `.gitignore`'d) leave the
|
|
310
|
-
* dashboard serving 404s for every asset, and the page renders blank
|
|
311
|
-
* with errors like `can't access property 'useState', et is undefined`.
|
|
312
|
-
*
|
|
313
|
-
* v7.0.3 — `install.sh` + `bizar update` previously skipped the
|
|
314
|
-
* dashboard build entirely. Symptom: a fresh `bizar install` /
|
|
315
|
-
* `bizar update` overwrote the package's pre-existing `dist/` (if
|
|
316
|
-
* any) and the dashboard's first request returned a 404 for the
|
|
317
|
-
* bundle, followed by the React error above in the browser console.
|
|
318
|
-
*
|
|
319
|
-
* Same bun / npx resolution strategy as `buildSdk()`. The vite config
|
|
320
|
-
* reads the same `tsconfig.json` for type info, but the heavy lifting
|
|
321
|
-
* is `vite build` itself which uses esbuild internally, so no tsc
|
|
322
|
-
* dependency here.
|
|
323
|
-
*
|
|
324
|
-
* Idempotent: skips when `bizar-dash/dist/index.html` already exists.
|
|
325
|
-
* Non-fatal: returns `{ ok: false, message }` rather than throwing —
|
|
326
|
-
* the rest of the provision flow should still complete.
|
|
327
|
-
*/
|
|
328
|
-
export async function buildDash({ dryRun = false } = {}) {
|
|
329
|
-
const dashDir = join(REPO_ROOT, 'bizar-dash');
|
|
330
|
-
const distIndex = join(dashDir, 'dist', 'index.html');
|
|
331
|
-
|
|
332
|
-
if (!existsSync(join(dashDir, 'src', 'web', 'index.html'))) {
|
|
333
|
-
return { ok: true, skipped: true, message: `Dashboard src not found at ${join(dashDir, 'src', 'web', 'index.html')} — skipping build` };
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
if (existsSync(distIndex)) {
|
|
337
|
-
return { ok: true, skipped: true, message: `Dashboard dist already present — skipping build (delete ${join(dashDir, 'dist')} to force)` };
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
if (dryRun) {
|
|
341
|
-
return { ok: true, skipped: false, message: `would build dashboard at ${dashDir}` };
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
const bunFromHome = join(process.env.HOME || '', '.bun', 'bin', 'bun');
|
|
345
|
-
let cmd, args, childEnv;
|
|
346
|
-
if (existsSync(bunFromHome)) {
|
|
347
|
-
cmd = bunFromHome;
|
|
348
|
-
args = ['run', 'build:dash'];
|
|
349
|
-
const pathDelim = process.platform === 'win32' ? ';' : ':';
|
|
350
|
-
const bunBin = dirname(bunFromHome);
|
|
351
|
-
const pathParts = [bunBin, process.env.PATH || ''];
|
|
352
|
-
childEnv = { ...process.env, PATH: pathParts.join(pathDelim) };
|
|
353
|
-
} else if (haveCmd('bun')) {
|
|
354
|
-
cmd = 'bun';
|
|
355
|
-
args = ['run', 'build:dash'];
|
|
356
|
-
childEnv = process.env;
|
|
357
|
-
} else {
|
|
358
|
-
cmd = 'npx';
|
|
359
|
-
args = ['--yes', 'vite', 'build'];
|
|
360
|
-
childEnv = process.env;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
try {
|
|
364
|
-
logInfo(`building dashboard with \`${cmd} ${args.join(' ')}\` (REPO_ROOT=${REPO_ROOT})`);
|
|
365
|
-
// `vite build` writes to the configured outDir (../../dist from
|
|
366
|
-
// src/web/). On a non-bun shell the cwd must be REPO_ROOT because
|
|
367
|
-
// the configured `root` is relative. Bun handles this either way.
|
|
368
|
-
execFileSync(cmd, args, { cwd: REPO_ROOT, stdio: 'pipe', timeout: 240_000, env: childEnv });
|
|
369
|
-
if (existsSync(distIndex)) {
|
|
370
|
-
return { ok: true, skipped: false, message: 'Dashboard built (dist/index.html present)' };
|
|
371
|
-
}
|
|
372
|
-
return { ok: false, message: `build completed but ${distIndex} still missing — check vite.config.ts outDir` };
|
|
373
|
-
} catch (err) {
|
|
374
|
-
const stderr = err.stderr ? err.stderr.toString().split('\n').slice(0, 5).join(' | ') : '(no stderr)';
|
|
375
|
-
return { ok: false, message: `Dashboard build failed: ${stderr}` };
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
function readTextSafe(file, fallback = '') {
|
|
380
|
-
try {
|
|
381
|
-
if (!existsSync(file)) return fallback;
|
|
382
|
-
return readFileSync(file, 'utf8');
|
|
383
|
-
} catch {
|
|
384
|
-
return fallback;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
function readJsonSafe(file, fallback = null) {
|
|
389
|
-
try {
|
|
390
|
-
if (!existsSync(file)) return fallback;
|
|
391
|
-
return JSON.parse(readFileSync(file, 'utf8'));
|
|
392
|
-
} catch {
|
|
393
|
-
return fallback;
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
function ensureDir(dir) {
|
|
398
|
-
mkdirSync(dir, { recursive: true });
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
function copyDirContents(src, dest) {
|
|
402
|
-
ensureDir(dest);
|
|
403
|
-
for (const name of readdirSync(src)) {
|
|
404
|
-
const sp = join(src, name);
|
|
405
|
-
const dp = join(dest, name);
|
|
406
|
-
const st = statSync(sp);
|
|
407
|
-
if (st.isDirectory()) copyDirContents(sp, dp);
|
|
408
|
-
else copyFileSync(sp, dp);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
function rimrafSafe(p) {
|
|
413
|
-
try { rmSync(p, { recursive: true, force: true }); } catch { /* ignore */ }
|
|
414
|
-
}
|
|
415
|
-
|
|
416
|
-
function logOk(msg) { console.log(chalk.green(' ✓') + ' ' + msg); }
|
|
417
|
-
function logInfo(msg) { console.log(chalk.cyan(' →') + ' ' + msg); }
|
|
418
|
-
function logWarn(msg) { console.log(chalk.yellow(' ⚠') + ' ' + msg); }
|
|
419
|
-
function logErr(msg) { console.log(chalk.red(' ✗') + ' ' + msg); }
|
|
420
|
-
function section(title) { console.log('\n' + chalk.bold.cyan(`── ${title} ──`)); }
|
|
421
|
-
|
|
422
|
-
// ─── Bizar HOME bootstrap ────────────────────────────────────────────────────
|
|
423
|
-
|
|
424
|
-
/**
|
|
425
|
-
* Ensure `~/.bizar_home/` (or `$BIZAR_HOME`) exists with the runtime
|
|
426
|
-
* subdirectories Bizar needs (memory vault, loops dir, dashboard port
|
|
427
|
-
* file). Idempotent.
|
|
428
|
-
*/
|
|
429
|
-
export function ensureBizarHome({ dryRun = false } = {}) {
|
|
430
|
-
if (dryRun) {
|
|
431
|
-
return { ok: true, message: `[dry-run] would ensure ${BIZAR_HOME}` };
|
|
432
|
-
}
|
|
433
|
-
mkdirSync(BIZAR_HOME, { recursive: true });
|
|
434
|
-
mkdirSync(join(BIZAR_HOME, 'memory-vault'), { recursive: true });
|
|
435
|
-
mkdirSync(join(BIZAR_HOME, 'loops'), { recursive: true });
|
|
436
|
-
// Touch the dashboard port file so downstream readers can probe it.
|
|
437
|
-
if (!existsSync(DASHBOARD_PORT_FILE)) {
|
|
438
|
-
writeFileSync(DASHBOARD_PORT_FILE, '4321\n');
|
|
439
|
-
}
|
|
440
|
-
return { ok: true, message: `${BIZAR_HOME} ready`, path: BIZAR_HOME };
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
// ─── Toolchain ───────────────────────────────────────────────────────────────
|
|
444
|
-
|
|
445
|
-
function checkToolchain() {
|
|
446
|
-
section('Toolchain');
|
|
447
|
-
if (haveCmd('node')) logOk(`node ${execSync('node --version').toString().trim()}`);
|
|
448
|
-
else { logErr('node not on PATH — install Node.js 18+ from https://nodejs.org'); process.exit(1); }
|
|
449
|
-
|
|
450
|
-
if (haveCmd('npm')) logOk(`npm ${execSync('npm --version').toString().trim()}`);
|
|
451
|
-
else logWarn('npm not on PATH — Claude Code install will need npm');
|
|
452
|
-
|
|
453
|
-
if (haveCmd('git')) logOk(`git ${execSync('git --version').toString().trim().split(' ')[2]}`);
|
|
454
|
-
else logWarn('git not on PATH — optional for many tasks');
|
|
455
|
-
|
|
456
|
-
if (haveCmd('claude')) logOk(`claude ${execSync('claude --version').toString().trim().split('\n')[0]}`);
|
|
457
|
-
else logWarn('claude not on PATH — will install via npm');
|
|
458
|
-
|
|
459
|
-
if (haveCmd('agent-browser')) logOk(`agent-browser ${execSync('agent-browser --version').toString().trim()}`);
|
|
460
|
-
else logInfo('agent-browser not installed (optional; npm install -g agent-browser)');
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
/** Install Claude Code CLI + SDK globally via npm. Idempotent. */
|
|
464
|
-
function installClaudeCli({ force = false, dryRun = false } = {}) {
|
|
465
|
-
if (haveCmd('claude') && !force) return;
|
|
466
|
-
section('Installing Claude Code CLI');
|
|
467
|
-
logInfo('npm install -g @anthropic-ai/claude-agent-sdk @anthropic-ai/claude-code');
|
|
468
|
-
if (dryRun) return;
|
|
469
|
-
try {
|
|
470
|
-
execSync(
|
|
471
|
-
'npm install -g @anthropic-ai/claude-agent-sdk @anthropic-ai/claude-code',
|
|
472
|
-
{ stdio: 'inherit' },
|
|
473
|
-
);
|
|
474
|
-
logOk('Claude Code CLI installed');
|
|
475
|
-
} catch (err) {
|
|
476
|
-
logErr(`npm install failed: ${err.message}`);
|
|
477
|
-
logWarn('retry manually: npm install -g @anthropic-ai/claude-code');
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
// ─── File sync helpers ──────────────────────────────────────────────────────
|
|
482
|
-
|
|
483
|
-
/**
|
|
484
|
-
* Mirror a source directory into a destination directory, copying
|
|
485
|
-
* files and preserving subdirectory structure. Skips dotfiles by default.
|
|
486
|
-
*/
|
|
487
|
-
function syncDir(srcDir, destDir, opts = {}) {
|
|
488
|
-
if (!existsSync(srcDir)) return { copied: 0, skipped: 0 };
|
|
489
|
-
ensureDir(destDir);
|
|
490
|
-
let copied = 0;
|
|
491
|
-
let skipped = 0;
|
|
492
|
-
for (const name of readdirSync(srcDir)) {
|
|
493
|
-
if (name.startsWith('.')) continue;
|
|
494
|
-
const sp = join(srcDir, name);
|
|
495
|
-
const dp = join(destDir, name);
|
|
496
|
-
const st = statSync(sp);
|
|
497
|
-
if (opts.filter && !opts.filter(name, sp)) { skipped++; continue; }
|
|
498
|
-
if (st.isDirectory()) {
|
|
499
|
-
const r = syncDir(sp, dp, opts);
|
|
500
|
-
copied += r.copied;
|
|
501
|
-
skipped += r.skipped;
|
|
502
|
-
} else {
|
|
503
|
-
copyFileSync(sp, dp);
|
|
504
|
-
copied++;
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
return { copied, skipped };
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
/**
|
|
511
|
-
* Copy `config/agents/*.md` → `~/.claude/agents/*.md`.
|
|
512
|
-
*
|
|
513
|
-
* v6.3.0 — Agent files use Claude Code frontmatter (name / description
|
|
514
|
-
* / tools / model at the top). The source files in `config/agents/`
|
|
515
|
-
* have already been migrated by a parallel task; this helper is a
|
|
516
|
-
* straight copy with no YAML regeneration (Claude Code reads `.md`
|
|
517
|
-
* directly — no `.yaml` shadow needed).
|
|
518
|
-
*/
|
|
519
|
-
export async function syncAgentFiles({ dryRun = false, force = false } = {}) {
|
|
520
|
-
const src = join(REPO_ROOT, 'config', 'agents');
|
|
521
|
-
const dest = CLAUDE_AGENTS_DIR;
|
|
522
|
-
if (!existsSync(src)) {
|
|
523
|
-
return { ok: true, message: `no agents source at ${src}`, copied: 0, skipped: 0 };
|
|
524
|
-
}
|
|
525
|
-
if (dryRun) {
|
|
526
|
-
return { ok: true, message: `[dry-run] would sync ${src} → ${dest}` };
|
|
527
|
-
}
|
|
528
|
-
ensureDir(dest);
|
|
529
|
-
ensureDir(join(dest, '_shared'));
|
|
530
|
-
// Top-level .md files
|
|
531
|
-
let { copied, skipped } = syncDir(src, dest, { filter: (n) => n.endsWith('.md') });
|
|
532
|
-
// _shared/ — always overwrite (it's tiny + ships agent defaults).
|
|
533
|
-
const sharedSrc = join(src, '_shared');
|
|
534
|
-
if (existsSync(sharedSrc)) {
|
|
535
|
-
for (const entry of readdirSync(sharedSrc, { withFileTypes: true })) {
|
|
536
|
-
if (!entry.isFile()) continue;
|
|
537
|
-
copyFileSync(join(sharedSrc, entry.name), join(dest, '_shared', entry.name));
|
|
538
|
-
copied++;
|
|
539
|
-
}
|
|
540
|
-
}
|
|
541
|
-
return { ok: true, message: `${copied} agent(s) synced (${skipped} kept)`, copied, skipped };
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
/**
|
|
545
|
-
* Copy `config/skills/<name>/` → `~/.claude/skills/<name>/`.
|
|
546
|
-
*
|
|
547
|
-
* Each skill is mirrored as its own subdirectory under
|
|
548
|
-
* `~/.claude/skills/<name>/`. Honors `force` to overwrite.
|
|
549
|
-
*/
|
|
550
|
-
export async function syncSkillFiles({ dryRun = false, force = false } = {}) {
|
|
551
|
-
const src = join(REPO_ROOT, 'config', 'skills');
|
|
552
|
-
const dest = CLAUDE_SKILLS_DIR;
|
|
553
|
-
if (!existsSync(src)) {
|
|
554
|
-
return { ok: true, message: `no skills source at ${src}`, copied: 0, skipped: 0 };
|
|
555
|
-
}
|
|
556
|
-
if (dryRun) {
|
|
557
|
-
return { ok: true, message: `[dry-run] would sync ${src} → ${dest}` };
|
|
558
|
-
}
|
|
559
|
-
ensureDir(dest);
|
|
560
|
-
copyDirContents(src, dest);
|
|
561
|
-
|
|
562
|
-
// Mirror AGENT_BASELINE.md → ~/.claude/skills/agent-baseline/SKILL.md
|
|
563
|
-
// (the Claude Code skill loader resolves the `name: agent-baseline`
|
|
564
|
-
// reference via this path).
|
|
565
|
-
const sharedBaseline = join(REPO_ROOT, 'config', 'agents', '_shared', 'AGENT_BASELINE.md');
|
|
566
|
-
if (existsSync(sharedBaseline)) {
|
|
567
|
-
const baselineDir = join(dest, 'agent-baseline');
|
|
568
|
-
ensureDir(baselineDir);
|
|
569
|
-
copyFileSync(sharedBaseline, join(baselineDir, 'SKILL.md'));
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
const count = readdirSync(dest).filter((n) => {
|
|
573
|
-
try { return statSync(join(dest, n)).isDirectory(); } catch { return false; }
|
|
574
|
-
}).length;
|
|
575
|
-
return { ok: true, message: `${count} skill(s) synced`, copied: count, skipped: 0 };
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
/**
|
|
579
|
-
* Copy `.claude/commands/*.md` → `~/.claude/commands/*.md`.
|
|
580
|
-
*
|
|
581
|
-
* Slash commands live in the project's `.claude/commands/` directory
|
|
582
|
-
* (project-scoped). The global mirror in `~/.claude/commands/` makes
|
|
583
|
-
* them available across every Claude Code session for the user.
|
|
584
|
-
*/
|
|
585
|
-
export async function syncCommandFiles({ dryRun = false, force = false } = {}) {
|
|
586
|
-
// Project-scoped commands first, then legacy `config/commands/` as
|
|
587
|
-
// a fallback for older Bizar installs.
|
|
588
|
-
const candidates = [
|
|
589
|
-
join(REPO_ROOT, '.claude', 'commands'),
|
|
590
|
-
join(REPO_ROOT, 'config', 'commands'),
|
|
591
|
-
];
|
|
592
|
-
let src = null;
|
|
593
|
-
for (const c of candidates) if (existsSync(c)) { src = c; break; }
|
|
594
|
-
if (!src) {
|
|
595
|
-
return { ok: true, message: 'no commands source found', copied: 0, skipped: 0 };
|
|
596
|
-
}
|
|
597
|
-
const dest = CLAUDE_COMMANDS_DIR;
|
|
598
|
-
if (dryRun) {
|
|
599
|
-
return { ok: true, message: `[dry-run] would sync ${src} → ${dest}` };
|
|
600
|
-
}
|
|
601
|
-
ensureDir(dest);
|
|
602
|
-
const { copied, skipped } = syncDir(src, dest, { filter: (n) => n.endsWith('.md') });
|
|
603
|
-
return { ok: true, message: `${copied} command(s) synced (${skipped} kept)`, copied, skipped };
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
/**
|
|
607
|
-
* Copy `config/rules/*.md` → `~/.claude/rules/*.md`.
|
|
608
|
-
*
|
|
609
|
-
* Claude Code auto-loads every `.md` file under `~/.claude/rules/` as
|
|
610
|
-
* an always-on rule (https://code.claude.com/docs/en/rules).
|
|
611
|
-
*/
|
|
612
|
-
export async function syncRulesFiles({ dryRun = false, force = false } = {}) {
|
|
613
|
-
const src = join(REPO_ROOT, 'config', 'rules');
|
|
614
|
-
const dest = CLAUDE_RULES_DIR;
|
|
615
|
-
if (!existsSync(src)) {
|
|
616
|
-
return { ok: true, message: `no rules source at ${src}`, copied: 0, skipped: 0 };
|
|
617
|
-
}
|
|
618
|
-
if (dryRun) {
|
|
619
|
-
return { ok: true, message: `[dry-run] would sync ${src} → ${dest}` };
|
|
620
|
-
}
|
|
621
|
-
ensureDir(dest);
|
|
622
|
-
const { copied, skipped } = syncDir(src, dest, { filter: (n) => n.endsWith('.md') || n.endsWith('.txt') });
|
|
623
|
-
return { ok: true, message: `${copied} rule(s) synced (${skipped} kept)`, copied, skipped };
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
/**
|
|
627
|
-
* Copy `.claude/hooks/*.mjs` → `~/.claude/hooks/*.mjs`.
|
|
628
|
-
*
|
|
629
|
-
* Hook adapter scripts are real Node modules — Claude Code spawns them
|
|
630
|
-
* and pipes JSON on stdin / stdout. They must be `chmod +x` so Claude
|
|
631
|
-
* Code can `execve` them directly.
|
|
632
|
-
*/
|
|
633
|
-
export async function syncHookFiles({ dryRun = false, force = false } = {}) {
|
|
634
|
-
const src = join(REPO_ROOT, '.claude', 'hooks');
|
|
635
|
-
const dest = CLAUDE_HOOKS_DIR;
|
|
636
|
-
ensureDir(dest);
|
|
637
|
-
if (!existsSync(src)) {
|
|
638
|
-
return { ok: true, message: `no hooks source at ${src}`, copied: 0, skipped: 0 };
|
|
639
|
-
}
|
|
640
|
-
if (dryRun) {
|
|
641
|
-
return { ok: true, message: `[dry-run] would sync ${src} → ${dest}` };
|
|
642
|
-
}
|
|
643
|
-
copyDirContents(src, dest);
|
|
644
|
-
// Make all scripts executable.
|
|
645
|
-
for (const name of readdirSync(dest)) {
|
|
646
|
-
const fp = join(dest, name);
|
|
647
|
-
try {
|
|
648
|
-
const st = statSync(fp);
|
|
649
|
-
if (st.isFile() && (name.endsWith('.sh') || name.endsWith('.mjs'))) {
|
|
650
|
-
chmodSync(fp, 0o755);
|
|
651
|
-
}
|
|
652
|
-
} catch { /* ignore */ }
|
|
653
|
-
}
|
|
654
|
-
return { ok: true, message: 'hook scripts installed', copied: readdirSync(dest).length, skipped: 0 };
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
// ─── settings.json ───────────────────────────────────────────────────────────
|
|
658
|
-
|
|
659
|
-
/**
|
|
660
|
-
* Generate `~/.claude/settings.json` with the Bizar harness surface:
|
|
661
|
-
* - $schema pointing to https://json.schemastore.org/claude-code-settings.json
|
|
662
|
-
* - mcpServers block registering the `bizar` MCP server (stdio)
|
|
663
|
-
* - permissions.allow for mcp__bizar__*
|
|
664
|
-
* - permissions.deny for dangerous patterns
|
|
665
|
-
* - hooks.PreToolUse, PostToolUse, UserPromptSubmit, SessionStart, SessionEnd
|
|
666
|
-
* - env block with BIZAR_HOME, BIZAR_MEMORY_VAULT
|
|
667
|
-
*
|
|
668
|
-
* Idempotent — we merge with any existing settings.json (preserve
|
|
669
|
-
* user-added keys, never overwrite).
|
|
670
|
-
*/
|
|
671
|
-
export function writeClaudeSettings({ dryRun = false, force = false } = {}) {
|
|
672
|
-
const fp = join(CLAUDE_DIR, 'settings.json');
|
|
673
|
-
const existing = readJsonSafe(fp, {}) || {};
|
|
674
|
-
|
|
675
|
-
const bizarSettings = {
|
|
676
|
-
$schema: 'https://json.schemastore.org/claude-code-settings.json',
|
|
677
|
-
mcpServers: {
|
|
678
|
-
bizar: {
|
|
679
|
-
type: 'stdio',
|
|
680
|
-
command: 'npx',
|
|
681
|
-
args: ['-y', '@polderlabs/bizar-sdk', 'mcp'],
|
|
682
|
-
env: {
|
|
683
|
-
BIZAR_HOME,
|
|
684
|
-
BIZAR_MEMORY_VAULT: process.env.BIZAR_MEMORY_VAULT || join(BIZAR_HOME, 'memory-vault'),
|
|
685
|
-
},
|
|
686
|
-
},
|
|
687
|
-
},
|
|
688
|
-
permissions: {
|
|
689
|
-
allow: ['mcp__bizar__*'],
|
|
690
|
-
deny: [
|
|
691
|
-
'Read(./.env)',
|
|
692
|
-
'Read(./.env.*)',
|
|
693
|
-
'Bash(rm -rf /)',
|
|
694
|
-
'Bash(sudo *)',
|
|
695
|
-
'Write(./node_modules/**)',
|
|
696
|
-
'Write(./package-lock.json)',
|
|
697
|
-
],
|
|
698
|
-
},
|
|
699
|
-
env: {
|
|
700
|
-
BIZAR_HOME,
|
|
701
|
-
BIZAR_MEMORY_VAULT: process.env.BIZAR_MEMORY_VAULT || join(BIZAR_HOME, 'memory-vault'),
|
|
702
|
-
},
|
|
703
|
-
hooks: {
|
|
704
|
-
PreToolUse: [
|
|
705
|
-
{
|
|
706
|
-
matcher: 'Write|Edit|MultiEdit|Bash',
|
|
707
|
-
hooks: [
|
|
708
|
-
{
|
|
709
|
-
type: 'command',
|
|
710
|
-
command: join(CLAUDE_HOOKS_DIR, 'pretooluse-editwrite.mjs'),
|
|
711
|
-
timeout: 10,
|
|
712
|
-
},
|
|
713
|
-
],
|
|
714
|
-
},
|
|
715
|
-
],
|
|
716
|
-
PostToolUse: [
|
|
717
|
-
{
|
|
718
|
-
matcher: 'Edit|Write|MultiEdit',
|
|
719
|
-
hooks: [
|
|
720
|
-
{
|
|
721
|
-
type: 'command',
|
|
722
|
-
command: join(CLAUDE_HOOKS_DIR, 'posttooluse-editwrite.mjs'),
|
|
723
|
-
timeout: 10,
|
|
724
|
-
},
|
|
725
|
-
],
|
|
726
|
-
},
|
|
727
|
-
],
|
|
728
|
-
UserPromptSubmit: [
|
|
729
|
-
{
|
|
730
|
-
hooks: [
|
|
731
|
-
{
|
|
732
|
-
type: 'command',
|
|
733
|
-
command: join(CLAUDE_HOOKS_DIR, 'userpromptsubmit-tag.mjs'),
|
|
734
|
-
timeout: 10,
|
|
735
|
-
},
|
|
736
|
-
],
|
|
737
|
-
},
|
|
738
|
-
],
|
|
739
|
-
SessionStart: [
|
|
740
|
-
{
|
|
741
|
-
hooks: [
|
|
742
|
-
{
|
|
743
|
-
type: 'command',
|
|
744
|
-
command: join(CLAUDE_HOOKS_DIR, 'sessionstart-prime.mjs'),
|
|
745
|
-
timeout: 10,
|
|
746
|
-
},
|
|
747
|
-
],
|
|
748
|
-
},
|
|
749
|
-
],
|
|
750
|
-
SessionEnd: [
|
|
751
|
-
{
|
|
752
|
-
hooks: [
|
|
753
|
-
{
|
|
754
|
-
type: 'command',
|
|
755
|
-
command: join(CLAUDE_HOOKS_DIR, 'sessionend-record.mjs'),
|
|
756
|
-
timeout: 10,
|
|
757
|
-
},
|
|
758
|
-
],
|
|
759
|
-
},
|
|
760
|
-
],
|
|
761
|
-
},
|
|
762
|
-
};
|
|
763
|
-
|
|
764
|
-
// Merge bizarre-specific keys into existing settings, preserve user's
|
|
765
|
-
// unrelated keys (model, attribution, theme, etc.).
|
|
766
|
-
const merged = { ...existing };
|
|
767
|
-
if (force) {
|
|
768
|
-
Object.assign(merged, bizarSettings);
|
|
769
|
-
} else {
|
|
770
|
-
merged.$schema = merged.$schema || bizarSettings.$schema;
|
|
771
|
-
merged.mcpServers = { ...(existing.mcpServers || {}), ...bizarSettings.mcpServers };
|
|
772
|
-
merged.permissions = {
|
|
773
|
-
allow: [...new Set([...(existing.permissions?.allow || []), ...bizarSettings.permissions.allow])],
|
|
774
|
-
deny: [...new Set([...(existing.permissions?.deny || []), ...bizarSettings.permissions.deny])],
|
|
775
|
-
ask: [...new Set([...(existing.permissions?.ask || [])])],
|
|
776
|
-
};
|
|
777
|
-
merged.env = { ...(existing.env || {}), ...bizarSettings.env };
|
|
778
|
-
merged.hooks = { ...(existing.hooks || {}), ...bizarSettings.hooks };
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
if (dryRun) {
|
|
782
|
-
return { ok: true, message: `[dry-run] would write ${fp}` };
|
|
783
|
-
}
|
|
784
|
-
ensureDir(CLAUDE_DIR);
|
|
785
|
-
writeFileSync(fp, JSON.stringify(merged, null, 2) + '\n');
|
|
786
|
-
return { ok: true, message: `wrote ${fp}`, path: fp };
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
// ─── CLAUDE.md mirror ──────────────────────────────────────────────────────
|
|
790
|
-
|
|
791
|
-
/**
|
|
792
|
-
* Mirror the repo's `AGENTS.md` into `~/.claude/CLAUDE.md`.
|
|
793
|
-
*
|
|
794
|
-
* Claude Code reads `~/.claude/CLAUDE.md` at session start as a global
|
|
795
|
-
* memory file. Mirroring `AGENTS.md` (the canonical harness entry
|
|
796
|
-
* point) makes the project's always-on rules available to every
|
|
797
|
-
* Claude Code session for the user, not just project-scoped sessions.
|
|
798
|
-
*/
|
|
799
|
-
export function writeClaudeMdMirror({ dryRun = false, force = false } = {}) {
|
|
800
|
-
const srcCandidates = [
|
|
801
|
-
join(REPO_ROOT, 'AGENTS.md'),
|
|
802
|
-
join(REPO_ROOT, 'CLAUDE.md'),
|
|
803
|
-
];
|
|
804
|
-
const src = srcCandidates.find((p) => existsSync(p));
|
|
805
|
-
const dest = join(CLAUDE_DIR, 'CLAUDE.md');
|
|
806
|
-
if (!src) {
|
|
807
|
-
return { ok: false, message: 'no CLAUDE.md / AGENTS.md found in repo root' };
|
|
808
|
-
}
|
|
809
|
-
if (existsSync(dest) && !force) {
|
|
810
|
-
return { ok: true, message: `${dest} already exists — pass --force to overwrite` };
|
|
811
|
-
}
|
|
812
|
-
if (dryRun) {
|
|
813
|
-
return { ok: true, message: `[dry-run] would mirror ${src} → ${dest}` };
|
|
814
|
-
}
|
|
815
|
-
ensureDir(CLAUDE_DIR);
|
|
816
|
-
// Add a banner so users know this is auto-generated.
|
|
817
|
-
const body = readFileSync(src, 'utf8');
|
|
818
|
-
const banner =
|
|
819
|
-
`# CLAUDE.md — Mirror of AGENTS.md for Claude Code compatibility\n\n` +
|
|
820
|
-
`> Auto-generated by \`cli/provision-claude.mjs:writeClaudeMdMirror\`.\n` +
|
|
821
|
-
`> DO NOT EDIT THIS FILE DIRECTLY — edit the project root's \`AGENTS.md\`\n` +
|
|
822
|
-
`> and re-run \`bizar update\` (or \`make mirror-claude-md\`) to refresh.\n\n` +
|
|
823
|
-
`---\n\n`;
|
|
824
|
-
writeFileSync(dest, banner + body);
|
|
825
|
-
return { ok: true, message: `mirrored ${src} → ${dest}`, path: dest };
|
|
826
|
-
}
|
|
827
|
-
|
|
828
|
-
// ─── MCP server registration ─────────────────────────────────────────────────
|
|
829
|
-
|
|
830
|
-
/**
|
|
831
|
-
* Register the `bizar` MCP server via `claude mcp add`. Idempotent —
|
|
832
|
-
* if the server is already registered in settings.json, we skip the
|
|
833
|
-
* `claude mcp add` call.
|
|
834
|
-
*
|
|
835
|
-
* Per https://code.claude.com/docs/en/mcp, the canonical way to add a
|
|
836
|
-
* stdio MCP server is:
|
|
837
|
-
*
|
|
838
|
-
* claude mcp add <name> -- <command> [args...]
|
|
839
|
-
*/
|
|
840
|
-
export function setupMcpServer({ dryRun = false } = {}) {
|
|
841
|
-
// Idempotency probe: read existing settings.json and look for a
|
|
842
|
-
// bizar MCP server entry. If present, skip.
|
|
843
|
-
const settingsPath = join(CLAUDE_DIR, 'settings.json');
|
|
844
|
-
const existing = readJsonSafe(settingsPath, null);
|
|
845
|
-
if (existing && existing.mcpServers && existing.mcpServers.bizar) {
|
|
846
|
-
return { ok: true, message: `bizar MCP server already registered in ${settingsPath}` };
|
|
847
|
-
}
|
|
848
|
-
|
|
849
|
-
if (!haveCmd('claude')) {
|
|
850
|
-
return { ok: false, message: 'claude CLI not on PATH — install @anthropic-ai/claude-code first' };
|
|
851
|
-
}
|
|
852
|
-
if (dryRun) {
|
|
853
|
-
return { ok: true, message: '[dry-run] would run: claude mcp add bizar -- npx -y @polderlabs/bizar-sdk mcp' };
|
|
854
|
-
}
|
|
855
|
-
|
|
856
|
-
const r = spawnSync('claude', [
|
|
857
|
-
'mcp', 'add', '-f', '-s', 'user', 'bizar', '--',
|
|
858
|
-
'npx', '-y', '@polderlabs/bizar-sdk', 'mcp',
|
|
859
|
-
], { stdio: 'inherit', timeout: 60_000 });
|
|
860
|
-
|
|
861
|
-
if (r.status !== 0) {
|
|
862
|
-
return { ok: false, message: `claude mcp add exited with code ${r.status}` };
|
|
863
|
-
}
|
|
864
|
-
return { ok: true, message: 'bizar MCP server registered via `claude mcp add`' };
|
|
865
|
-
}
|
|
866
|
-
|
|
867
|
-
/**
|
|
868
|
-
* If `./.claude-plugin/plugin.json` exists, install the Bizar plugin
|
|
869
|
-
* via `claude plugin install .`. Per
|
|
870
|
-
* https://code.claude.com/docs/en/plugins, a Claude Code plugin is a
|
|
871
|
-
* directory containing a `.claude-plugin/plugin.json` manifest.
|
|
872
|
-
*/
|
|
873
|
-
export function setupClaudePlugin({ dryRun = false } = {}) {
|
|
874
|
-
const manifestPath = join(REPO_ROOT, '.claude-plugin', 'plugin.json');
|
|
875
|
-
if (!existsSync(manifestPath)) {
|
|
876
|
-
return { ok: true, message: `no plugin manifest at ${manifestPath} — skipping plugin install` };
|
|
877
|
-
}
|
|
878
|
-
if (!haveCmd('claude')) {
|
|
879
|
-
return { ok: false, message: 'claude CLI not on PATH — install @anthropic-ai/claude-code first' };
|
|
880
|
-
}
|
|
881
|
-
if (dryRun) {
|
|
882
|
-
return { ok: true, message: `[dry-run] would run: claude plugin install ${REPO_ROOT}` };
|
|
883
|
-
}
|
|
884
|
-
|
|
885
|
-
const r = spawnSync('claude', ['plugin', 'install', '.'], {
|
|
886
|
-
stdio: 'inherit',
|
|
887
|
-
timeout: 120_000,
|
|
888
|
-
cwd: REPO_ROOT,
|
|
889
|
-
});
|
|
890
|
-
if (r.status !== 0) {
|
|
891
|
-
return { ok: false, message: `claude plugin install exited with code ${r.status}` };
|
|
892
|
-
}
|
|
893
|
-
return { ok: true, message: `claude plugin installed from ${REPO_ROOT}` };
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
// ─── Dashboard service ───────────────────────────────────────────────────────
|
|
897
|
-
|
|
898
|
-
function installDashboardService({ dryRun = false, start = true } = {}) {
|
|
899
|
-
const bin = join(REPO_ROOT, 'cli', 'bin.mjs');
|
|
900
|
-
if (!existsSync(bin)) {
|
|
901
|
-
return { ok: false, message: `cli/bin.mjs not found at ${bin} — service registration deferred` };
|
|
902
|
-
}
|
|
903
|
-
if (dryRun) {
|
|
904
|
-
return { ok: true, message: `[dry-run] would run: node ${bin} service install` };
|
|
905
|
-
}
|
|
906
|
-
const r = spawnSync('node', [bin, 'service', 'install'], { stdio: 'inherit' });
|
|
907
|
-
if (r.status !== 0) {
|
|
908
|
-
return { ok: false, message: `service install returned ${r.status}` };
|
|
909
|
-
}
|
|
910
|
-
return { ok: true, message: 'dashboard service registered' };
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
// ─── Detection ───────────────────────────────────────────────────────────────
|
|
914
|
-
|
|
915
|
-
/**
|
|
916
|
-
* Probe the current state without modifying anything. Both install and
|
|
917
|
-
* update flows start here so they can decide what to skip.
|
|
918
|
-
*
|
|
919
|
-
* Returned shape:
|
|
920
|
-
* {
|
|
921
|
-
* claudeDir: string,
|
|
922
|
-
* claudeCli: { available, version },
|
|
923
|
-
* agentsDir: { exists, count },
|
|
924
|
-
* skillsDir: { exists, count },
|
|
925
|
-
* commandsDir: { exists, count },
|
|
926
|
-
* hooksDir: { exists, count },
|
|
927
|
-
* rulesDir: { exists, count },
|
|
928
|
-
* settingsFile: { exists, parses },
|
|
929
|
-
* mcpServer: { registered, type, command },
|
|
930
|
-
* pluginManifest: { exists },
|
|
931
|
-
* bizarHome: { exists },
|
|
932
|
-
* gitRepo: boolean,
|
|
933
|
-
* }
|
|
934
|
-
*/
|
|
935
|
-
export function detectState() {
|
|
936
|
-
const settingsPath = join(CLAUDE_DIR, 'settings.json');
|
|
937
|
-
const settings = readJsonSafe(settingsPath, null);
|
|
938
|
-
|
|
939
|
-
let claudeVersion = null;
|
|
940
|
-
try {
|
|
941
|
-
claudeVersion = execFileSync('claude', ['--version'], { encoding: 'utf8', timeout: 5000 })
|
|
942
|
-
.toString().trim().split('\n')[0] || null;
|
|
943
|
-
} catch { /* not installed */ }
|
|
944
|
-
|
|
945
|
-
const countMd = (dir) => {
|
|
946
|
-
if (!existsSync(dir)) return 0;
|
|
947
|
-
try {
|
|
948
|
-
return readdirSync(dir, { withFileTypes: true })
|
|
949
|
-
.filter((e) => e.isFile() && (e.name.endsWith('.md') || e.name.endsWith('.mjs'))).length;
|
|
950
|
-
} catch { return 0; }
|
|
951
|
-
};
|
|
952
|
-
const countSkillDirs = (dir) => {
|
|
953
|
-
if (!existsSync(dir)) return 0;
|
|
954
|
-
try {
|
|
955
|
-
return readdirSync(dir, { withFileTypes: true }).filter((e) => e.isDirectory()).length;
|
|
956
|
-
} catch { return 0; }
|
|
957
|
-
};
|
|
958
|
-
|
|
959
|
-
const mcpServer = settings && settings.mcpServers && settings.mcpServers.bizar
|
|
960
|
-
? {
|
|
961
|
-
registered: true,
|
|
962
|
-
type: settings.mcpServers.bizar.type || 'stdio',
|
|
963
|
-
command: settings.mcpServers.bizar.command || 'npx',
|
|
964
|
-
}
|
|
965
|
-
: { registered: false };
|
|
966
|
-
|
|
967
|
-
return {
|
|
968
|
-
claudeDir: CLAUDE_DIR,
|
|
969
|
-
claudeCli: { available: !!claudeVersion, version: claudeVersion },
|
|
970
|
-
agentsDir: { exists: existsSync(CLAUDE_AGENTS_DIR), count: countMd(CLAUDE_AGENTS_DIR) },
|
|
971
|
-
skillsDir: { exists: existsSync(CLAUDE_SKILLS_DIR), count: countSkillDirs(CLAUDE_SKILLS_DIR) },
|
|
972
|
-
commandsDir: { exists: existsSync(CLAUDE_COMMANDS_DIR), count: countMd(CLAUDE_COMMANDS_DIR) },
|
|
973
|
-
hooksDir: { exists: existsSync(CLAUDE_HOOKS_DIR), count: countMd(CLAUDE_HOOKS_DIR) },
|
|
974
|
-
rulesDir: { exists: existsSync(CLAUDE_RULES_DIR), count: countMd(CLAUDE_RULES_DIR) },
|
|
975
|
-
settingsFile: {
|
|
976
|
-
exists: existsSync(settingsPath),
|
|
977
|
-
parses: settings !== null && typeof settings === 'object',
|
|
978
|
-
path: settingsPath,
|
|
979
|
-
},
|
|
980
|
-
mcpServer,
|
|
981
|
-
pluginManifest: { exists: existsSync(join(REPO_ROOT, '.claude-plugin', 'plugin.json')) },
|
|
982
|
-
bizarHome: { exists: existsSync(BIZAR_HOME), path: BIZAR_HOME },
|
|
983
|
-
gitRepo: existsSync(join(REPO_ROOT, '.git')),
|
|
984
|
-
};
|
|
985
|
-
}
|
|
986
|
-
|
|
987
|
-
/** Read-only JSON snapshot of detectState() — for diagnostics + tests. */
|
|
988
|
-
export function detectStateJson() {
|
|
989
|
-
return JSON.stringify(detectState(), null, 2);
|
|
990
|
-
}
|
|
991
|
-
|
|
992
|
-
// ─── Top-level orchestration ─────────────────────────────────────────────────
|
|
993
|
-
|
|
994
|
-
/**
|
|
995
|
-
* The unified provision flow. `mode` is 'install' or 'update'.
|
|
996
|
-
*
|
|
997
|
-
* Steps performed:
|
|
998
|
-
* 1. Detect state (no side effects).
|
|
999
|
-
* 2. Ensure ~/.bizar_home/ exists (memory-vault, loops, port file).
|
|
1000
|
-
* 3. Check toolchain + install Claude Code CLI if missing.
|
|
1001
|
-
* 4. Sync agent files to ~/.claude/agents/.
|
|
1002
|
-
* 5. Sync skills to ~/.claude/skills/.
|
|
1003
|
-
* 6. Sync commands to ~/.claude/commands/.
|
|
1004
|
-
* 7. Sync rules to ~/.claude/rules/.
|
|
1005
|
-
* 8. Sync hook adapter scripts to ~/.claude/hooks/.
|
|
1006
|
-
* 9. Write ~/.claude/settings.json with MCP + hooks + permissions + env.
|
|
1007
|
-
* 10. Register the Bizar MCP server via `claude mcp add`.
|
|
1008
|
-
* 11. Install the Bizar plugin via `claude plugin install .` (optional).
|
|
1009
|
-
* 12. Mirror AGENTS.md → ~/.claude/CLAUDE.md.
|
|
1010
|
-
* 13. (install) Register dashboard service.
|
|
1011
|
-
* 14. Print summary.
|
|
1012
|
-
*
|
|
1013
|
-
* Every step is idempotent — running this twice is safe.
|
|
1014
|
-
*/
|
|
1015
|
-
export async function runProvision(opts = {}) {
|
|
1016
|
-
const {
|
|
1017
|
-
mode = 'install',
|
|
1018
|
-
dryRun = false,
|
|
1019
|
-
force = false,
|
|
1020
|
-
yes = false,
|
|
1021
|
-
start = true,
|
|
1022
|
-
} = opts;
|
|
1023
|
-
|
|
1024
|
-
const effectiveMode = mode === 'update' ? 'update' : 'install';
|
|
1025
|
-
|
|
1026
|
-
console.log('');
|
|
1027
|
-
console.log(chalk.bold.cyan(' ⚡ BizarHarness Provisioner v6.3.0 (Claude Code)'));
|
|
1028
|
-
console.log(chalk.dim(` Mode: ${effectiveMode}${force ? ' (force)' : ''}${dryRun ? ' (dry-run)' : ''}`));
|
|
1029
|
-
console.log('');
|
|
1030
|
-
|
|
1031
|
-
// ── 1. Detect state ──────────────────────────────────────────────────
|
|
1032
|
-
const state = detectState();
|
|
1033
|
-
|
|
1034
|
-
// ── 2. Bizar HOME bootstrap ──────────────────────────────────────────
|
|
1035
|
-
section('Bizar HOME');
|
|
1036
|
-
const bizarHomeStep = ensureBizarHome({ dryRun });
|
|
1037
|
-
if (bizarHomeStep.ok) logOk(bizarHomeStep.message);
|
|
1038
|
-
else logErr(bizarHomeStep.message);
|
|
1039
|
-
|
|
1040
|
-
// ── 3. Toolchain ────────────────────────────────────────────────────
|
|
1041
|
-
checkToolchain();
|
|
1042
|
-
installClaudeCli({ force, dryRun });
|
|
1043
|
-
|
|
1044
|
-
// ── 4-8. File sync ──────────────────────────────────────────────────
|
|
1045
|
-
const stepResults = [];
|
|
1046
|
-
const runStep = async (label, fn) => {
|
|
1047
|
-
section(label);
|
|
1048
|
-
const r = await fn();
|
|
1049
|
-
const marker = r.ok ? '✓' : '✗';
|
|
1050
|
-
console.log(` ${marker} ${r.message}`);
|
|
1051
|
-
stepResults.push({ label, ...r });
|
|
1052
|
-
return r;
|
|
1053
|
-
};
|
|
1054
|
-
|
|
1055
|
-
await runStep('Syncing agents', () => syncAgentFiles({ dryRun, force }));
|
|
1056
|
-
await runStep('Syncing skills', () => syncSkillFiles({ dryRun, force }));
|
|
1057
|
-
await runStep('Syncing commands', () => syncCommandFiles({ dryRun, force }));
|
|
1058
|
-
await runStep('Syncing rules', () => syncRulesFiles({ dryRun, force }));
|
|
1059
|
-
await runStep('Syncing hooks', () => syncHookFiles({ dryRun, force }));
|
|
1060
|
-
|
|
1061
|
-
// ── 4b. Build the SDK workspace so dist/ exists. ────────────────────
|
|
1062
|
-
// The dashboard imports from packages/sdk/dist/* at runtime; without
|
|
1063
|
-
// this step v7.0.0+ npm installs crash on dashboard startup because
|
|
1064
|
-
// the SDK ships as TS source only. See `buildSdk()` JSDoc for the
|
|
1065
|
-
// full story.
|
|
1066
|
-
await runStep('Building SDK', () => buildSdk({ dryRun }));
|
|
1067
|
-
|
|
1068
|
-
// ── 4b.2. Build the Bizar plugin shim so dist/index.js exists. ────
|
|
1069
|
-
// The loader expects `plugins/bizar/dist/index.js`. Without this
|
|
1070
|
-
// step v8.0.x npm installs crash on `bizar dash start` with
|
|
1071
|
-
// `Plugin source not found at .../plugins/bizar` from
|
|
1072
|
-
// `cli/install.mjs:installPluginBizar` (the dir exists, but the
|
|
1073
|
-
// compiled entry does not). See `buildPlugin()` JSDoc.
|
|
1074
|
-
await runStep('Building plugin', () => buildPlugin({ dryRun }));
|
|
1075
|
-
|
|
1076
|
-
// ── 4c. Build the dashboard SPA so dist/index.html exists. ───────────
|
|
1077
|
-
// The Node server in `bizar-dash/src/server/server.mjs` serves the
|
|
1078
|
-
// React UI from `bizar-dash/dist/`. The published npm tarball excludes
|
|
1079
|
-
// `dist/` because it is `.gitignore`'d, so a fresh install must
|
|
1080
|
-
// rebuild it. Skips when already present (idempotent). See
|
|
1081
|
-
// `buildDash()` JSDoc for the v7.0.3 reason this step exists.
|
|
1082
|
-
await runStep('Building dashboard', () => buildDash({ dryRun }));
|
|
1083
|
-
|
|
1084
|
-
// ── 9. settings.json (MCP + hooks + permissions + env) ──────────────
|
|
1085
|
-
section('Writing settings.json');
|
|
1086
|
-
const settingsStep = writeClaudeSettings({ dryRun, force });
|
|
1087
|
-
if (settingsStep.ok) logOk(settingsStep.message); else logErr(settingsStep.message);
|
|
1088
|
-
stepResults.push({ label: 'settings.json', ...settingsStep });
|
|
1089
|
-
|
|
1090
|
-
// ── 10. MCP server registration ──────────────────────────────────────
|
|
1091
|
-
section('MCP server (bizar)');
|
|
1092
|
-
const mcpStep = setupMcpServer({ dryRun });
|
|
1093
|
-
if (mcpStep.ok) logOk(mcpStep.message); else logWarn(mcpStep.message);
|
|
1094
|
-
stepResults.push({ label: 'mcp-server', ...mcpStep });
|
|
1095
|
-
|
|
1096
|
-
// ── 11. Plugin install (optional) ───────────────────────────────────
|
|
1097
|
-
section('Claude plugin');
|
|
1098
|
-
const pluginStep = setupClaudePlugin({ dryRun });
|
|
1099
|
-
if (pluginStep.ok) logOk(pluginStep.message); else logWarn(pluginStep.message);
|
|
1100
|
-
stepResults.push({ label: 'claude-plugin', ...pluginStep });
|
|
1101
|
-
|
|
1102
|
-
// ── 12. CLAUDE.md mirror ────────────────────────────────────────────
|
|
1103
|
-
section('CLAUDE.md mirror');
|
|
1104
|
-
const claudeMdStep = writeClaudeMdMirror({ dryRun, force });
|
|
1105
|
-
if (claudeMdStep.ok) logOk(claudeMdStep.message); else logWarn(claudeMdStep.message);
|
|
1106
|
-
stepResults.push({ label: 'claude-md', ...claudeMdStep });
|
|
1107
|
-
|
|
1108
|
-
// ── 13. Dashboard service ───────────────────────────────────────────
|
|
1109
|
-
if (start && effectiveMode === 'install') {
|
|
1110
|
-
section('Dashboard service');
|
|
1111
|
-
const svcStep = installDashboardService({ dryRun });
|
|
1112
|
-
if (svcStep.ok) logOk(svcStep.message); else logWarn(svcStep.message);
|
|
1113
|
-
stepResults.push({ label: 'service', ...svcStep });
|
|
1114
|
-
}
|
|
1115
|
-
|
|
1116
|
-
// ── 14. Summary ─────────────────────────────────────────────────────
|
|
1117
|
-
section('Provision complete');
|
|
1118
|
-
const finalState = detectState();
|
|
1119
|
-
console.log(chalk.dim(JSON.stringify(finalState, null, 2)));
|
|
1120
|
-
console.log('');
|
|
1121
|
-
const anyFail = stepResults.some((r) => !r.ok);
|
|
1122
|
-
if (anyFail) {
|
|
1123
|
-
console.log(chalk.yellow(' ⚠ Some steps had issues. See messages above.'));
|
|
1124
|
-
} else {
|
|
1125
|
-
console.log(chalk.bold.green(' ✓ Bizar is ready.'));
|
|
1126
|
-
console.log(chalk.dim(' Next: restart your Claude Code session to pick up the new config.'));
|
|
1127
|
-
}
|
|
1128
|
-
console.log('');
|
|
1129
|
-
return { ok: !anyFail, mode: effectiveMode, state: finalState, stepResults };
|
|
1130
|
-
}
|
|
1131
|
-
|
|
1132
|
-
// ─── CLI entry ───────────────────────────────────────────────────────────────
|
|
1133
|
-
|
|
1134
|
-
function parseFlags(argv) {
|
|
1135
|
-
const opts = {
|
|
1136
|
-
mode: 'install',
|
|
1137
|
-
dryRun: false,
|
|
1138
|
-
force: false,
|
|
1139
|
-
yes: false,
|
|
1140
|
-
start: true,
|
|
1141
|
-
update: false,
|
|
1142
|
-
};
|
|
1143
|
-
for (let i = 0; i < argv.length; i++) {
|
|
1144
|
-
const a = argv[i];
|
|
1145
|
-
if (a === '--mode=install') opts.mode = 'install';
|
|
1146
|
-
else if (a === '--mode=update') opts.mode = 'update';
|
|
1147
|
-
else if (a === '--mode=install-only-system') opts.mode = 'install-only-system';
|
|
1148
|
-
else if (a === '--mode') {
|
|
1149
|
-
const v = argv[++i];
|
|
1150
|
-
if (v === 'install' || v === 'update' || v === 'install-only-system') opts.mode = v;
|
|
1151
|
-
}
|
|
1152
|
-
else if (a === '--dry-run') opts.dryRun = true;
|
|
1153
|
-
else if (a === '--force') opts.force = true;
|
|
1154
|
-
else if (a === '--yes' || a === '-y') opts.yes = true;
|
|
1155
|
-
else if (a === '--non-interactive') opts.yes = true;
|
|
1156
|
-
else if (a === '--no-service') opts.start = false;
|
|
1157
|
-
else if (a === '--update') opts.mode = 'update';
|
|
1158
|
-
else if (a === '--help' || a === '-h') {
|
|
1159
|
-
console.log(
|
|
1160
|
-
'Usage: node cli/provision-claude.mjs [--mode=install|update|install-only-system]\n' +
|
|
1161
|
-
' [--dry-run] [--force] [--yes] [--non-interactive] [--no-service]',
|
|
1162
|
-
);
|
|
1163
|
-
process.exit(0);
|
|
1164
|
-
}
|
|
1165
|
-
}
|
|
1166
|
-
if (opts.mode === 'update') opts.update = true;
|
|
1167
|
-
return opts;
|
|
1168
|
-
}
|
|
1169
|
-
|
|
1170
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1171
|
-
const opts = parseFlags(process.argv.slice(2));
|
|
1172
|
-
runProvision(opts).catch((err) => {
|
|
1173
|
-
logErr(`provision failed: ${err?.message || err}`);
|
|
1174
|
-
process.exit(1);
|
|
1175
|
-
});
|
|
1176
|
-
}
|