@polderlabs/bizar 9.0.0 → 10.0.7
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 +572 -0
- package/bizar-dash/CONTROL_SURFACES.md +157 -0
- package/bizar-dash/SETTINGS_AUDIT.md +225 -0
- package/bizar-dash/dist/assets/ActivityFeed-Da-JCrE6.js +11 -0
- package/bizar-dash/dist/assets/ActivityFeed-Da-JCrE6.js.map +1 -0
- package/bizar-dash/dist/assets/ActivityView-nIRsSETb.js +2 -0
- package/bizar-dash/dist/assets/ActivityView-nIRsSETb.js.map +1 -0
- package/bizar-dash/dist/assets/AdminView-DP1NMxmG.js +11 -0
- package/bizar-dash/dist/assets/AdminView-DP1NMxmG.js.map +1 -0
- package/bizar-dash/dist/assets/AgentActivity-lSPkOr-O.js +67 -0
- package/bizar-dash/dist/assets/AgentActivity-lSPkOr-O.js.map +1 -0
- package/bizar-dash/dist/assets/AgentsView-BIWGkz7w.js +13 -0
- package/bizar-dash/dist/assets/AgentsView-BIWGkz7w.js.map +1 -0
- package/bizar-dash/dist/assets/Alert-DN0UysMg.js +6 -0
- package/bizar-dash/dist/assets/Alert-DN0UysMg.js.map +1 -0
- package/bizar-dash/dist/assets/ArtifactsView-CDIhPBAx.js +6 -0
- package/bizar-dash/dist/assets/ArtifactsView-CDIhPBAx.js.map +1 -0
- package/bizar-dash/dist/assets/AuthView-DW5cs7ma.js +16 -0
- package/bizar-dash/dist/assets/AuthView-DW5cs7ma.js.map +1 -0
- package/bizar-dash/dist/assets/Avatar-DZPv9pvd.js +6 -0
- package/bizar-dash/dist/assets/Avatar-DZPv9pvd.js.map +1 -0
- package/bizar-dash/dist/assets/BackgroundJobsView-D8O-EyMD.js +1 -0
- package/bizar-dash/dist/assets/BackgroundJobsView-D8O-EyMD.js.map +1 -0
- package/bizar-dash/dist/assets/BackupView-uwXkhxOV.js +1 -0
- package/bizar-dash/dist/assets/BackupView-uwXkhxOV.js.map +1 -0
- package/bizar-dash/dist/assets/Card-Tyboihu7.js +1 -0
- package/bizar-dash/dist/assets/Card-Tyboihu7.js.map +1 -0
- package/bizar-dash/dist/assets/ChatView-DRBHzgay.js +9 -0
- package/bizar-dash/dist/assets/ChatView-DRBHzgay.js.map +1 -0
- package/bizar-dash/dist/assets/Chip-BrXIlR9w.js +1 -0
- package/bizar-dash/dist/assets/Chip-BrXIlR9w.js.map +1 -0
- package/bizar-dash/dist/assets/ClaudeSessionsView-Ck62jaOr.js +1 -0
- package/bizar-dash/dist/assets/ClaudeSessionsView-Ck62jaOr.js.map +1 -0
- package/bizar-dash/dist/assets/ClipboardView-DfND6xL6.js +1 -0
- package/bizar-dash/dist/assets/ClipboardView-DfND6xL6.js.map +1 -0
- package/bizar-dash/dist/assets/ConfigView-DjJmSrOJ.js +1 -0
- package/bizar-dash/dist/assets/ConfigView-DjJmSrOJ.js.map +1 -0
- package/bizar-dash/dist/assets/DiagnosticsView-CKgItf0J.js +2 -0
- package/bizar-dash/dist/assets/DiagnosticsView-CKgItf0J.js.map +1 -0
- package/bizar-dash/dist/assets/DialogsView-DHYF8dE1.js +6 -0
- package/bizar-dash/dist/assets/DialogsView-DHYF8dE1.js.map +1 -0
- package/bizar-dash/dist/assets/DoctorView-DDLHrSKk.js +6 -0
- package/bizar-dash/dist/assets/DoctorView-DDLHrSKk.js.map +1 -0
- package/bizar-dash/dist/assets/EmptyState-DZ2ouKwd.js +1 -0
- package/bizar-dash/dist/assets/EmptyState-DZ2ouKwd.js.map +1 -0
- package/bizar-dash/dist/assets/EnvVarsView-D1cx83mB.js +8 -0
- package/bizar-dash/dist/assets/EnvVarsView-D1cx83mB.js.map +1 -0
- package/bizar-dash/dist/assets/ErrorState-DwwJ2-Jq.js +1 -0
- package/bizar-dash/dist/assets/ErrorState-DwwJ2-Jq.js.map +1 -0
- package/bizar-dash/dist/assets/EvalView-C9aYixXW.js +1 -0
- package/bizar-dash/dist/assets/EvalView-C9aYixXW.js.map +1 -0
- package/bizar-dash/dist/assets/GoalsView-DZa_mGmh.js +6 -0
- package/bizar-dash/dist/assets/GoalsView-DZa_mGmh.js.map +1 -0
- package/bizar-dash/dist/assets/Grid-CiRyhAgR.js +1 -0
- package/bizar-dash/dist/assets/Grid-CiRyhAgR.js.map +1 -0
- package/bizar-dash/dist/assets/HeadroomView-CNc-TI7u.js +11 -0
- package/bizar-dash/dist/assets/HeadroomView-CNc-TI7u.js.map +1 -0
- package/bizar-dash/dist/assets/HistoryView-Dv7aPxJE.js +1 -0
- package/bizar-dash/dist/assets/HistoryView-Dv7aPxJE.js.map +1 -0
- package/bizar-dash/dist/assets/Input-BbFUDQnS.js +1 -0
- package/bizar-dash/dist/assets/Input-BbFUDQnS.js.map +1 -0
- package/bizar-dash/dist/assets/LibrariesView-DBQ83TNa.js +6 -0
- package/bizar-dash/dist/assets/LibrariesView-DBQ83TNa.js.map +1 -0
- package/bizar-dash/dist/assets/LightRAGView-JYpE5u9p.js +6 -0
- package/bizar-dash/dist/assets/LightRAGView-JYpE5u9p.js.map +1 -0
- package/bizar-dash/dist/assets/ListHeader-BGjm11Z0.js +1 -0
- package/bizar-dash/dist/assets/ListHeader-BGjm11Z0.js.map +1 -0
- package/bizar-dash/dist/assets/MemoryView-CnOP2MvM.js +8 -0
- package/bizar-dash/dist/assets/MemoryView-CnOP2MvM.js.map +1 -0
- package/bizar-dash/dist/assets/MessageBubble-5vUAquDx.js +29 -0
- package/bizar-dash/dist/assets/MessageBubble-5vUAquDx.js.map +1 -0
- package/bizar-dash/dist/assets/MiscView-BBcpUbZZ.js +1 -0
- package/bizar-dash/dist/assets/MiscView-BBcpUbZZ.js.map +1 -0
- package/bizar-dash/dist/assets/ModsView-CU4cAmIz.js +6 -0
- package/bizar-dash/dist/assets/ModsView-CU4cAmIz.js.map +1 -0
- package/bizar-dash/dist/assets/NotificationsView-BYffvthq.js +6 -0
- package/bizar-dash/dist/assets/NotificationsView-BYffvthq.js.map +1 -0
- package/bizar-dash/dist/assets/ObsidianView-D3bI0row.js +1 -0
- package/bizar-dash/dist/assets/ObsidianView-D3bI0row.js.map +1 -0
- package/bizar-dash/dist/assets/OverviewView-0tq8f-Y0.js +1 -0
- package/bizar-dash/dist/assets/OverviewView-0tq8f-Y0.js.map +1 -0
- package/bizar-dash/dist/assets/ProgressBar-B-h60LKA.js +1 -0
- package/bizar-dash/dist/assets/ProgressBar-B-h60LKA.js.map +1 -0
- package/bizar-dash/dist/assets/ProjectsView-DhX5lzHS.js +11 -0
- package/bizar-dash/dist/assets/ProjectsView-DhX5lzHS.js.map +1 -0
- package/bizar-dash/dist/assets/ProvidersView-CJMX7jm9.js +11 -0
- package/bizar-dash/dist/assets/ProvidersView-CJMX7jm9.js.map +1 -0
- package/bizar-dash/dist/assets/SchedulesView-CcwDQ9Nm.js +1 -0
- package/bizar-dash/dist/assets/SchedulesView-CcwDQ9Nm.js.map +1 -0
- package/bizar-dash/dist/assets/Select-Cw7Qtz2M.js +6 -0
- package/bizar-dash/dist/assets/Select-Cw7Qtz2M.js.map +1 -0
- package/bizar-dash/dist/assets/SettingsRow-DgsgbPSI.js +1 -0
- package/bizar-dash/dist/assets/SettingsRow-DgsgbPSI.js.map +1 -0
- package/bizar-dash/dist/assets/SettingsView-DTAFdKyK.js +18 -0
- package/bizar-dash/dist/assets/SettingsView-DTAFdKyK.js.map +1 -0
- package/bizar-dash/dist/assets/Sheet-DH-WNJ3Y.js +1 -0
- package/bizar-dash/dist/assets/Sheet-DH-WNJ3Y.js.map +1 -0
- package/bizar-dash/dist/assets/Slider-DXbJuQ7y.js +1 -0
- package/bizar-dash/dist/assets/Slider-DXbJuQ7y.js.map +1 -0
- package/bizar-dash/dist/assets/Sparkline-CYtAn82j.js +1 -0
- package/bizar-dash/dist/assets/Sparkline-CYtAn82j.js.map +1 -0
- package/bizar-dash/dist/assets/Switch-BItGrPqr.js +10 -0
- package/bizar-dash/dist/assets/Switch-BItGrPqr.js.map +1 -0
- package/bizar-dash/dist/assets/TasksView-i5tm6CkX.js +6 -0
- package/bizar-dash/dist/assets/TasksView-i5tm6CkX.js.map +1 -0
- package/bizar-dash/dist/assets/Textarea-qYDf3yds.js +1 -0
- package/bizar-dash/dist/assets/Textarea-qYDf3yds.js.map +1 -0
- package/bizar-dash/dist/assets/UpdateView-Xln-ej26.js +6 -0
- package/bizar-dash/dist/assets/UpdateView-Xln-ej26.js.map +1 -0
- package/bizar-dash/dist/assets/UsageView-BGuZSUZ6.js +1 -0
- package/bizar-dash/dist/assets/UsageView-BGuZSUZ6.js.map +1 -0
- package/bizar-dash/dist/assets/ViewHeader-BqIPVKuG.js +6 -0
- package/bizar-dash/dist/assets/ViewHeader-BqIPVKuG.js.map +1 -0
- package/bizar-dash/dist/assets/VoiceView-CWUOCQs_.js +1 -0
- package/bizar-dash/dist/assets/VoiceView-CWUOCQs_.js.map +1 -0
- package/bizar-dash/dist/assets/brain-fsBSDl2g.js +6 -0
- package/bizar-dash/dist/assets/brain-fsBSDl2g.js.map +1 -0
- package/bizar-dash/dist/assets/calendar-DsHTZoCU.js +6 -0
- package/bizar-dash/dist/assets/calendar-DsHTZoCU.js.map +1 -0
- package/bizar-dash/dist/assets/circle-CqSxqqeJ.js +6 -0
- package/bizar-dash/dist/assets/circle-CqSxqqeJ.js.map +1 -0
- package/bizar-dash/dist/assets/circle-alert-BsLl001l.js +6 -0
- package/bizar-dash/dist/assets/circle-alert-BsLl001l.js.map +1 -0
- package/bizar-dash/dist/assets/circle-check-rVKMQmZp.js +6 -0
- package/bizar-dash/dist/assets/circle-check-rVKMQmZp.js.map +1 -0
- package/bizar-dash/dist/assets/clock-OuficfgH.js +6 -0
- package/bizar-dash/dist/assets/clock-OuficfgH.js.map +1 -0
- package/bizar-dash/dist/assets/cmdk-DVxytz9i.js +80 -0
- package/bizar-dash/dist/assets/cmdk-DVxytz9i.js.map +1 -0
- package/bizar-dash/dist/assets/dnd-kit-DrHErSkw.js +5 -0
- package/bizar-dash/dist/assets/dnd-kit-DrHErSkw.js.map +1 -0
- package/bizar-dash/dist/assets/download-BdHlstUY.js +6 -0
- package/bizar-dash/dist/assets/download-BdHlstUY.js.map +1 -0
- package/bizar-dash/dist/assets/external-link-DA3_VGm-.js +6 -0
- package/bizar-dash/dist/assets/external-link-DA3_VGm-.js.map +1 -0
- package/bizar-dash/dist/assets/file-text-B-g8H227.js +6 -0
- package/bizar-dash/dist/assets/file-text-B-g8H227.js.map +1 -0
- package/bizar-dash/dist/assets/filter-D9B8s5CG.js +6 -0
- package/bizar-dash/dist/assets/filter-D9B8s5CG.js.map +1 -0
- package/bizar-dash/dist/assets/git-pull-request-ByH0YuVz.js +11 -0
- package/bizar-dash/dist/assets/git-pull-request-ByH0YuVz.js.map +1 -0
- package/bizar-dash/dist/assets/index-C4Vq_2LM.js +1 -0
- package/bizar-dash/dist/assets/index-C4Vq_2LM.js.map +1 -0
- package/bizar-dash/dist/assets/index-CASP1n-5.js +1 -0
- package/bizar-dash/dist/assets/index-CASP1n-5.js.map +1 -0
- package/bizar-dash/dist/assets/main-CdOm1Pj9.js +249 -0
- package/bizar-dash/dist/assets/main-CdOm1Pj9.js.map +1 -0
- package/bizar-dash/dist/assets/pause-C9hgd8wX.js +6 -0
- package/bizar-dash/dist/assets/pause-C9hgd8wX.js.map +1 -0
- package/bizar-dash/dist/assets/pencil-BanqaMw7.js +6 -0
- package/bizar-dash/dist/assets/pencil-BanqaMw7.js.map +1 -0
- package/bizar-dash/dist/assets/play-CawUZ02_.js +6 -0
- package/bizar-dash/dist/assets/play-CawUZ02_.js.map +1 -0
- package/bizar-dash/dist/assets/plug-Cmv0-T_e.js +6 -0
- package/bizar-dash/dist/assets/plug-Cmv0-T_e.js.map +1 -0
- package/bizar-dash/dist/assets/plus-M6LYiKX8.js +6 -0
- package/bizar-dash/dist/assets/plus-M6LYiKX8.js.map +1 -0
- package/bizar-dash/dist/assets/power-DP5x_SRF.js +6 -0
- package/bizar-dash/dist/assets/power-DP5x_SRF.js.map +1 -0
- package/bizar-dash/dist/assets/power-off-NOJRLAIs.js +6 -0
- package/bizar-dash/dist/assets/power-off-NOJRLAIs.js.map +1 -0
- package/bizar-dash/dist/assets/refresh-ccw-CHMprsm5.js +6 -0
- package/bizar-dash/dist/assets/refresh-ccw-CHMprsm5.js.map +1 -0
- package/bizar-dash/dist/assets/refresh-cw-1RBqDKgJ.js +6 -0
- package/bizar-dash/dist/assets/refresh-cw-1RBqDKgJ.js.map +1 -0
- package/bizar-dash/dist/assets/rotate-ccw-DJRekBbi.js +6 -0
- package/bizar-dash/dist/assets/rotate-ccw-DJRekBbi.js.map +1 -0
- package/bizar-dash/dist/assets/rotate-cw-DHooc0Tx.js +6 -0
- package/bizar-dash/dist/assets/rotate-cw-DHooc0Tx.js.map +1 -0
- package/bizar-dash/dist/assets/save-DQKCKyZK.js +6 -0
- package/bizar-dash/dist/assets/save-DQKCKyZK.js.map +1 -0
- package/bizar-dash/dist/assets/send-xgy3RAi7.js +6 -0
- package/bizar-dash/dist/assets/send-xgy3RAi7.js.map +1 -0
- package/bizar-dash/dist/assets/shield-alert-CWV2F5ab.js +6 -0
- package/bizar-dash/dist/assets/shield-alert-CWV2F5ab.js.map +1 -0
- package/bizar-dash/dist/assets/trash-2-CL4khSRv.js +6 -0
- package/bizar-dash/dist/assets/trash-2-CL4khSRv.js.map +1 -0
- package/bizar-dash/dist/assets/trending-up-CSJJhWTS.js +6 -0
- package/bizar-dash/dist/assets/trending-up-CSJJhWTS.js.map +1 -0
- package/bizar-dash/dist/assets/triangle-alert-BPLb7uLt.js +6 -0
- package/bizar-dash/dist/assets/triangle-alert-BPLb7uLt.js.map +1 -0
- package/bizar-dash/dist/assets/upload-Cww6MvFq.js +6 -0
- package/bizar-dash/dist/assets/upload-Cww6MvFq.js.map +1 -0
- package/bizar-dash/dist/assets/zap-DmhVUzRA.js +6 -0
- package/bizar-dash/dist/assets/zap-DmhVUzRA.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 +7 -2
- package/bizar-dash/src/server/artifact-mint.mjs +69 -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/activity.mjs +22 -2
- package/bizar-dash/src/server/routes/admin.mjs +163 -0
- package/bizar-dash/src/server/routes/agents-cc.mjs +196 -26
- 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 +49 -1
- package/bizar-dash/src/server/routes/goals.mjs +125 -4
- 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/skills.mjs +6 -1
- package/bizar-dash/src/server/routes/tasks.mjs +51 -1
- package/bizar-dash/src/server/server.mjs +20 -9
- package/bizar-dash/src/server/skills-store.mjs +2 -0
- package/bizar-dash/src/web/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/bizar-dash/src/web/v8/App.tsx +113 -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 +86 -3
- package/bizar-dash/src/web/v8/data/useViewNavigate.ts +54 -0
- package/bizar-dash/src/web/v8/data/useWebSocket.ts +45 -0
- package/bizar-dash/src/web/v8/shell/Sidebar.tsx +111 -14
- package/bizar-dash/src/web/v8/shell/Topbar.tsx +100 -8
- package/bizar-dash/src/web/v8/ui/activity/ActivityLane.tsx +315 -0
- package/bizar-dash/src/web/v8/ui/activity/ActivityLanes.tsx +51 -0
- 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 +49 -2
- package/bizar-dash/src/web/v8/ui/kanban/KanbanBoard.tsx +61 -27
- package/bizar-dash/src/web/v8/ui/kanban/KanbanCard.tsx +156 -12
- package/bizar-dash/src/web/v8/ui/kanban/KanbanColumn.tsx +5 -10
- package/bizar-dash/src/web/v8/ui/kanban/KanbanContextMenu.tsx +4 -0
- package/bizar-dash/src/web/v8/ui/kanban/KanbanDetailDialog.tsx +638 -0
- package/bizar-dash/src/web/v8/ui/tasks/TaskDetail.tsx +313 -0
- package/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +203 -178
- 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 +229 -10
- 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 +13 -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/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/KanbanQuickAdd.tsx +0 -141
- 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/bizar-dash → bizar-dash}/src/web/v8/ui/kanban/KanbanCardBadges.tsx +0 -0
- /package/{.claude/worktrees/kanban-overhaul/bizar-dash → bizar-dash}/src/web/v8/ui/kanban/KanbanEmptyColumn.tsx +0 -0
- /package/{.claude/worktrees/kanban-overhaul/bizar-dash → bizar-dash}/src/web/v8/ui/kanban/KanbanProgress.tsx +0 -0
- /package/{.claude/worktrees/kanban-overhaul/bizar-dash → bizar-dash}/src/web/v8/ui/kanban/KanbanToolbar.tsx +0 -0
- /package/{.claude/worktrees/kanban-overhaul/bizar-dash → bizar-dash}/src/web/v8/ui/kanban/useKanbanSelection.ts +0 -0
- /package/{.claude/worktrees/kanban-overhaul → plugins/bizar}/LICENSE +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as v,j as e}from"./cmdk-D15rXxc5.js";import{c as g}from"./main-CCimEcWH.js";const x=v.forwardRef(function(n,d){const{id:i,title:o,description:a,icon:t,children:s,headerActions:r,className:c,...l}=n;return e.jsxs("section",{ref:d,id:i,"aria-labelledby":`${i}-title`,className:g("v8-settings-section",c),style:{padding:"var(--space-5) var(--space-6)",background:"var(--surface-1)",border:"1px solid var(--border)",borderRadius:"var(--radius-lg)"},...l,children:[e.jsxs("header",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"var(--space-3)",marginBottom:"var(--space-4)"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"flex-start",gap:"var(--space-3)",minWidth:0},children:[t!==void 0&&e.jsx("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"var(--radius-sm)",background:"color-mix(in oklch, var(--accent) 14%, transparent)",color:"var(--accent)",flexShrink:0},children:t}),e.jsxs("div",{style:{minWidth:0},children:[e.jsx("h2",{id:`${i}-title`,style:{fontSize:"var(--fs-15)",fontWeight:600,color:"var(--fg)",lineHeight:"var(--lh-snug)",margin:0},children:o}),a!==void 0&&e.jsx("p",{style:{fontSize:"var(--fs-13)",color:"var(--fg-muted)",margin:"4px 0 0 0",lineHeight:"var(--lh-snug)"},children:a})]})]}),r!==void 0&&e.jsx("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-2)",flexShrink:0},children:r})]}),e.jsx("div",{className:"v8-settings-section__body",children:s})]})}),m=v.forwardRef(function(n,d){const{id:i,label:o,description:a,control:t,disabled:s=!1,className:r,...c}=n,l=`${i}-label`;return e.jsxs("div",{ref:d,"data-disabled":s||void 0,"aria-disabled":s||void 0,className:g("v8-settings-row",r),style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"var(--space-4)",padding:"var(--space-3) 0",borderBottom:"1px solid var(--border)",opacity:s?.5:1},...c,children:[e.jsxs("div",{id:l,style:{flex:1,minWidth:0},children:[e.jsx("span",{style:{display:"block",fontSize:"var(--fs-13)",fontWeight:500,color:"var(--fg)",cursor:s?"not-allowed":"default",lineHeight:"var(--lh-snug)"},children:o}),a!==void 0&&e.jsx("p",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",margin:"4px 0 0 0",lineHeight:"var(--lh-snug)"},children:a})]}),e.jsx("div",{role:"group","aria-labelledby":l,style:{flexShrink:0,alignSelf:"center"},children:t})]})});export{x as S,m as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsRow-Br21uRFz.js","sources":["../../src/web/v8/ui/settings/SettingsSection.tsx","../../src/web/v8/ui/settings/SettingsRow.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../utils/cx.js';\n\n/**\n * SettingsSection — a titled, optionally-described section of the Settings\n * page.\n *\n * PLAN.md §Settings declares 16 sections; SettingsSection is the shell\n * they all use. The body is a free slot so each section composes its own\n * option rows (SettingsRow) and sub-sections.\n */\n\nexport interface SettingsSectionProps extends HTMLAttributes<HTMLElement> {\n id: string;\n title: string;\n /** One-sentence summary of what this section controls. */\n description?: string;\n /** Optional icon (lucide). */\n icon?: ReactNode;\n /** Section body — SettingsRow, sub-sections, etc. */\n children?: ReactNode;\n /** Right-aligned header slot (e.g. \"Restore defaults\" button). */\n headerActions?: ReactNode;\n}\n\nexport const SettingsSection = forwardRef<HTMLElement, SettingsSectionProps>(function SettingsSection(\n props,\n ref,\n) {\n const { id, title, description, icon, children, headerActions, className, ...rest } = props;\n return (\n <section\n ref={ref}\n id={id}\n aria-labelledby={`${id}-title`}\n className={cx('v8-settings-section', className)}\n style={{\n padding: 'var(--space-5) var(--space-6)',\n background: 'var(--surface-1)',\n border: '1px solid var(--border)',\n borderRadius: 'var(--radius-lg)',\n }}\n {...rest}\n >\n <header\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 'var(--space-3)',\n marginBottom: 'var(--space-4)',\n }}\n >\n <div style={{ display: 'flex', alignItems: 'flex-start', gap: 'var(--space-3)', minWidth: 0 }}>\n {icon !== undefined && (\n <span\n aria-hidden=\"true\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 28,\n height: 28,\n borderRadius: 'var(--radius-sm)',\n background: 'color-mix(in oklch, var(--accent) 14%, transparent)',\n color: 'var(--accent)',\n flexShrink: 0,\n }}\n >\n {icon}\n </span>\n )}\n <div style={{ minWidth: 0 }}>\n <h2\n id={`${id}-title`}\n style={{\n fontSize: 'var(--fs-15)',\n fontWeight: 600,\n color: 'var(--fg)',\n lineHeight: 'var(--lh-snug)',\n margin: 0,\n }}\n >\n {title}\n </h2>\n {description !== undefined && (\n <p\n style={{\n fontSize: 'var(--fs-13)',\n color: 'var(--fg-muted)',\n margin: '4px 0 0 0',\n lineHeight: 'var(--lh-snug)',\n }}\n >\n {description}\n </p>\n )}\n </div>\n </div>\n {headerActions !== undefined && (\n <div style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-2)', flexShrink: 0 }}>\n {headerActions}\n </div>\n )}\n </header>\n <div className=\"v8-settings-section__body\">{children}</div>\n </section>\n );\n});","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../utils/cx.js';\n\n/**\n * SettingsRow — one labelled option inside a SettingsSection.\n *\n * Three-column layout:\n * ┌─ label + description ──────────── control ─┐\n * The label column is required; the control slot\n * hosts the actual interactive (Switch, Select, Slider, custom button, etc.).\n */\n\nexport interface SettingsRowProps extends HTMLAttributes<HTMLDivElement> {\n id: string;\n /** The control label (left column). */\n label: ReactNode;\n /** Optional one-line description (left column, below label). */\n description?: ReactNode;\n /** Right column — the interactive control. */\n control: ReactNode;\n /** Mark the row as disabled (visual + aria). */\n disabled?: boolean;\n}\n\nexport const SettingsRow = forwardRef<HTMLDivElement, SettingsRowProps>(function SettingsRow(\n props,\n ref,\n) {\n const { id, label, description, control, disabled = false, className, ...rest } = props;\n // The label is announced via `aria-labelledby` rather than `<label\n // htmlFor>` because the control is generic — its DOM id is set by the\n // consumer (Switch, Select, custom input), and we'd otherwise need to\n // thread it through the props chain. `aria-labelledby` is the WAI-ARIA\n // sanctioned way to label a region without owning a native `<label>`.\n const labelId = `${id}-label`;\n return (\n <div\n ref={ref}\n data-disabled={disabled || undefined}\n aria-disabled={disabled || undefined}\n className={cx('v8-settings-row', className)}\n style={{\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 'var(--space-4)',\n padding: 'var(--space-3) 0',\n borderBottom: '1px solid var(--border)',\n opacity: disabled ? 0.5 : 1,\n }}\n {...rest}\n >\n <div id={labelId} style={{ flex: 1, minWidth: 0 }}>\n <span\n style={{\n display: 'block',\n fontSize: 'var(--fs-13)',\n fontWeight: 500,\n color: 'var(--fg)',\n cursor: disabled ? 'not-allowed' : 'default',\n lineHeight: 'var(--lh-snug)',\n }}\n >\n {label}\n </span>\n {description !== undefined && (\n <p\n style={{\n fontSize: 'var(--fs-12)',\n color: 'var(--fg-muted)',\n margin: '4px 0 0 0',\n lineHeight: 'var(--lh-snug)',\n }}\n >\n {description}\n </p>\n )}\n </div>\n <div\n role=\"group\"\n aria-labelledby={labelId}\n style={{ flexShrink: 0, alignSelf: 'center' }}\n >\n {control}\n </div>\n </div>\n );\n});"],"names":["SettingsSection","forwardRef","props","ref","id","title","description","icon","children","headerActions","className","rest","jsxs","cx","jsx","SettingsRow","label","control","disabled","labelId"],"mappings":"qFAyBO,MAAMA,EAAkBC,EAAAA,WAA8C,SAC3EC,EACAC,EACA,CACA,KAAM,CAAE,GAAAC,EAAI,MAAAC,EAAO,YAAAC,EAAa,KAAAC,EAAM,SAAAC,EAAU,cAAAC,EAAe,UAAAC,EAAW,GAAGC,CAAA,EAAST,EACtF,OACEU,EAAAA,KAAC,UAAA,CACC,IAAAT,EACA,GAAAC,EACA,kBAAiB,GAAGA,CAAE,SACtB,UAAWS,EAAG,sBAAuBH,CAAS,EAC9C,MAAO,CACL,QAAS,gCACT,WAAY,mBACZ,OAAQ,0BACR,aAAc,kBAAA,EAEf,GAAGC,EAEJ,SAAA,CAAAC,EAAAA,KAAC,SAAA,CACC,MAAO,CACL,QAAS,OACT,WAAY,aACZ,eAAgB,gBAChB,IAAK,iBACL,aAAc,gBAAA,EAGhB,SAAA,CAAAA,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,aAAc,IAAK,iBAAkB,SAAU,CAAA,EACvF,SAAA,CAAAL,IAAS,QACRO,EAAAA,IAAC,OAAA,CACC,cAAY,OACZ,MAAO,CACL,QAAS,cACT,WAAY,SACZ,eAAgB,SAChB,MAAO,GACP,OAAQ,GACR,aAAc,mBACd,WAAY,sDACZ,MAAO,gBACP,WAAY,CAAA,EAGb,SAAAP,CAAA,CAAA,SAGJ,MAAA,CAAI,MAAO,CAAE,SAAU,GACtB,SAAA,CAAAO,EAAAA,IAAC,KAAA,CACC,GAAI,GAAGV,CAAE,SACT,MAAO,CACL,SAAU,eACV,WAAY,IACZ,MAAO,YACP,WAAY,iBACZ,OAAQ,CAAA,EAGT,SAAAC,CAAA,CAAA,EAEFC,IAAgB,QACfQ,EAAAA,IAAC,IAAA,CACC,MAAO,CACL,SAAU,eACV,MAAO,kBACP,OAAQ,YACR,WAAY,gBAAA,EAGb,SAAAR,CAAA,CAAA,CACH,CAAA,CAEJ,CAAA,EACF,EACCG,IAAkB,QACjBK,MAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,IAAK,iBAAkB,WAAY,CAAA,EACrF,SAAAL,CAAA,CACH,CAAA,CAAA,CAAA,EAGJK,EAAAA,IAAC,MAAA,CAAI,UAAU,4BAA6B,SAAAN,CAAA,CAAS,CAAA,CAAA,CAAA,CAG3D,CAAC,ECpFYO,EAAcd,EAAAA,WAA6C,SACtEC,EACAC,EACA,CACA,KAAM,CAAE,GAAAC,EAAI,MAAAY,EAAO,YAAAV,EAAa,QAAAW,EAAS,SAAAC,EAAW,GAAO,UAAAR,EAAW,GAAGC,CAAA,EAAST,EAM5EiB,EAAU,GAAGf,CAAE,SACrB,OACEQ,EAAAA,KAAC,MAAA,CACC,IAAAT,EACA,gBAAee,GAAY,OAC3B,gBAAeA,GAAY,OAC3B,UAAWL,EAAG,kBAAmBH,CAAS,EAC1C,MAAO,CACL,QAAS,OACT,WAAY,aACZ,eAAgB,gBAChB,IAAK,iBACL,QAAS,mBACT,aAAc,0BACd,QAASQ,EAAW,GAAM,CAAA,EAE3B,GAAGP,EAEJ,SAAA,CAAAC,EAAAA,KAAC,MAAA,CAAI,GAAIO,EAAS,MAAO,CAAE,KAAM,EAAG,SAAU,CAAA,EAC5C,SAAA,CAAAL,EAAAA,IAAC,OAAA,CACC,MAAO,CACL,QAAS,QACT,SAAU,eACV,WAAY,IACZ,MAAO,YACP,OAAQI,EAAW,cAAgB,UACnC,WAAY,gBAAA,EAGb,SAAAF,CAAA,CAAA,EAEFV,IAAgB,QACfQ,EAAAA,IAAC,IAAA,CACC,MAAO,CACL,SAAU,eACV,MAAO,kBACP,OAAQ,YACR,WAAY,gBAAA,EAGb,SAAAR,CAAA,CAAA,CACH,EAEJ,EACAQ,EAAAA,IAAC,MAAA,CACC,KAAK,QACL,kBAAiBK,EACjB,MAAO,CAAE,WAAY,EAAG,UAAW,QAAA,EAElC,SAAAF,CAAA,CAAA,CACH,CAAA,CAAA,CAGN,CAAC"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import{j as e,r as f}from"./cmdk-D15rXxc5.js";import{e as k,c as je,n as fe,o as ve,u as A,i as F,p as Q,C as X,q as ee,A as te,r as ie,b as ae,S as D,I as c,g as v,B as $,f as ke,F as be,d as Ce}from"./main-CCimEcWH.js";import{G as we}from"./Grid-B7NgNtff.js";import{S as s}from"./Switch-C7Qyu50Y.js";import{S as R}from"./Slider-B_jPr-SR.js";import{I as T}from"./Input-BW_5Sl6N.js";import{T as Se}from"./Textarea-KIN98DVH.js";import{S as n,a as i}from"./SettingsRow-Br21uRFz.js";import{T as se,R as ze}from"./terminal-k-1HFHcN.js";import{W as oe}from"./wrench-CbBE0oQ0.js";import{B as ne}from"./brain-jN_ldx3U.js";import{P as Ae}from"./plus-BaTQsS9G.js";import{T as Me}from"./trash-2-DtpKnAn2.js";import"./index-CrWI7sQR.js";import"./index-C0JBGB5M.js";/**
|
|
2
|
-
* @license lucide-react v0.460.0 - ISC
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the ISC license.
|
|
5
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/const le=k("Database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);/**
|
|
7
|
-
* @license lucide-react v0.460.0 - ISC
|
|
8
|
-
*
|
|
9
|
-
* This source code is licensed under the ISC license.
|
|
10
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const re=k("Keyboard",[["path",{d:"M10 8h.01",key:"1r9ogq"}],["path",{d:"M12 12h.01",key:"1mp3jc"}],["path",{d:"M14 8h.01",key:"1primd"}],["path",{d:"M16 12h.01",key:"1l6xoz"}],["path",{d:"M18 8h.01",key:"emo2bl"}],["path",{d:"M6 8h.01",key:"x9i8wu"}],["path",{d:"M7 16h10",key:"wp8him"}],["path",{d:"M8 12h.01",key:"czm47f"}],["rect",{width:"20",height:"16",x:"2",y:"4",rx:"2",key:"18n3k1"}]]);/**
|
|
12
|
-
* @license lucide-react v0.460.0 - ISC
|
|
13
|
-
*
|
|
14
|
-
* This source code is licensed under the ISC license.
|
|
15
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
16
|
-
*/const de=k("Palette",[["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["path",{d:"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z",key:"12rzf8"}]]);/**
|
|
17
|
-
* @license lucide-react v0.460.0 - ISC
|
|
18
|
-
*
|
|
19
|
-
* This source code is licensed under the ISC license.
|
|
20
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const ce=k("Plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]]);/**
|
|
22
|
-
* @license lucide-react v0.460.0 - ISC
|
|
23
|
-
*
|
|
24
|
-
* This source code is licensed under the ISC license.
|
|
25
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
26
|
-
*/const he=k("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);/**
|
|
27
|
-
* @license lucide-react v0.460.0 - ISC
|
|
28
|
-
*
|
|
29
|
-
* This source code is licensed under the ISC license.
|
|
30
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
31
|
-
*/const ue=k("SlidersVertical",[["line",{x1:"4",x2:"4",y1:"21",y2:"14",key:"1p332r"}],["line",{x1:"4",x2:"4",y1:"10",y2:"3",key:"gb41h5"}],["line",{x1:"12",x2:"12",y1:"21",y2:"12",key:"hf2csr"}],["line",{x1:"12",x2:"12",y1:"8",y2:"3",key:"1kfi7u"}],["line",{x1:"20",x2:"20",y1:"21",y2:"16",key:"1lhrwl"}],["line",{x1:"20",x2:"20",y1:"12",y2:"3",key:"16vvfq"}],["line",{x1:"2",x2:"6",y1:"14",y2:"14",key:"1uebub"}],["line",{x1:"10",x2:"14",y1:"8",y2:"8",key:"1yglbp"}],["line",{x1:"18",x2:"22",y1:"16",y2:"16",key:"1jxqpz"}]]);/**
|
|
32
|
-
* @license lucide-react v0.460.0 - ISC
|
|
33
|
-
*
|
|
34
|
-
* This source code is licensed under the ISC license.
|
|
35
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
36
|
-
*/const pe=k("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);function De(m){const{items:p,activeId:x,onSelect:y,className:a}=m;return e.jsxs("nav",{"aria-label":"Settings sections",className:je("v8-settings-nav",a),children:[e.jsx("ul",{style:{listStyle:"none",margin:0,padding:0,display:"flex",flexDirection:"column",gap:2},children:p.map(u=>{const g=x===u.id;return e.jsx("li",{children:e.jsxs("button",{type:"button",onClick:()=>y==null?void 0:y(u.id),"aria-current":g?"true":void 0,style:{display:"flex",alignItems:"center",gap:"var(--space-2)",width:"100%",padding:"var(--space-2) var(--space-3)",background:g?"var(--surface-2)":"transparent",border:0,borderRadius:"var(--radius-sm)",color:g?"var(--fg)":"var(--fg-muted)",font:"inherit",fontSize:"var(--fs-13)",fontWeight:g?500:400,cursor:"pointer",textAlign:"left"},children:[u.icon!==void 0&&e.jsx("span",{"aria-hidden":"true",style:{display:"inline-flex",color:g?"var(--accent)":"var(--fg-subtle)",flexShrink:0},children:u.icon}),e.jsx("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:u.title})]})},u.id)})}),e.jsx("style",{children:`
|
|
37
|
-
.v8-settings-nav button:hover { background: var(--surface-2); color: var(--fg); }
|
|
38
|
-
`})]})}const Z=[{id:"general",title:"General",icon:F},{id:"theme",title:"Theme",icon:de},{id:"density",title:"Density",icon:ue},{id:"density-rules",title:"Density rules",icon:pe},{id:"palette",title:"Command palette",icon:se},{id:"keyboard",title:"Keyboard",icon:re},{id:"notifications",title:"Notifications",icon:Q},{id:"storage",title:"Storage",icon:le},{id:"plugins",title:"Plugins",icon:ce},{id:"mcps",title:"MCP servers",icon:X},{id:"skills",title:"Skills",icon:ee},{id:"hooks",title:"Hooks",icon:oe},{id:"activity",title:"Activity",icon:te},{id:"memory",title:"Memory",icon:ne},{id:"task-defaults",title:"Task defaults",icon:ie},{id:"agent-defaults",title:"Agent defaults",icon:ae},{id:"privacy",title:"Privacy",icon:he},{id:"advanced",title:"Advanced",icon:F}],Re={workspaceName:"Bizar Harness",defaultView:"overview",themeAccent:"#5b8def",densityBaseFont:13,tasksCompact:!1,memoryCompact:!0,paletteHistory:!0,paletteFuzzy:!0,notifyAgentFinished:!0,notifyCiFailed:!0,notifyTokenBudget:!0,notifyDailyDigest:!1,activityRetentionDays:30,memoryAutoCommit:!0,memoryScopeDefault:"all",defaultTaskPriority:"medium",defaultTaskColumn:"queued",defaultAgentModel:"claude-sonnet-4-5",defaultAgentMaxMistakes:10,analytics:!0,crashReports:!0,piiMode:"redact",reducedMotion:!1,debugOverlay:!1},Te={height:28,padding:"0 var(--space-2)",borderRadius:"var(--radius-sm)",border:"1px solid var(--border)",background:"var(--surface-0)",color:"var(--fg)",fontFamily:"var(--font-sans)",fontSize:"var(--fs-12)",cursor:"pointer",outline:"none"};function h({value:m,defaultValue:p,onChange:x,children:y}){return e.jsx("select",{value:m,defaultValue:p,onChange:a=>x==null?void 0:x(a.target.value),style:Te,children:y})}function M({loading:m,value:p}){return m?e.jsx(Ce,{style:{width:32,height:16}}):e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:p??0})}function Ye(){var H,L,N,O,W,q,G,U,K,Y,J;const[m,p]=f.useState("general"),x=fe(),y=ve(),[a,u]=f.useState(Re),[g,xe]=f.useState(null),[I,V]=f.useState(null),b=A("/api/skills?kind=skills"),C=A("/api/skills?kind=mcps"),E=A("/api/skills?kind=hooks"),w=A("/api/agents"),P=A("/api/settings");f.useEffect(()=>{P.data&&u(t=>({...t,...P.data}))},[P.data]);const o=(t,l)=>{u(d=>({...d,[t]:l})),r(t,l)},r=async(t,l)=>{try{const d={...a,[t]:l};await ke("/api/settings",{method:"PUT",body:d}),xe(Date.now()),V(null)}catch(d){V((d instanceof be,d.message))}},ye=Z.map(t=>({id:t.id,title:t.title,icon:e.jsx(t.icon,{size:14,"aria-hidden":"true"})})),ge=t=>{p(t),requestAnimationFrame(()=>{var l;(l=document.getElementById(t))==null||l.scrollIntoView({behavior:"smooth",block:"start"})})},me=f.useRef(null);return f.useEffect(()=>{if(typeof IntersectionObserver>"u")return;const t=Z.map(j=>document.getElementById(j.id)).filter(j=>j!==null);if(t.length===0)return;const l=new Map,d=new IntersectionObserver(j=>{for(const S of j){const z=S.target.id;S.isIntersecting?l.set(z,S.intersectionRatio):l.delete(z)}if(l.size===0)return;let B,_=-1;for(const[S,z]of l)z>_&&(_=z,B=S);B&&p(B)},{rootMargin:"-30% 0px -50% 0px",threshold:[0,.25,.5,.75,1]});for(const j of t)d.observe(j);return()=>d.disconnect()},[]),e.jsx("div",{ref:me,children:e.jsxs(we,{cols:3,gap:5,children:[e.jsx("aside",{style:{position:"sticky",top:0,alignSelf:"start"},children:e.jsx(De,{items:ye,activeId:m,onSelect:ge})}),e.jsxs(D,{gap:5,style:{gridColumn:"span 2"},children:[I!==null&&e.jsx("div",{role:"alert",style:{padding:"var(--space-3)",background:"color-mix(in oklch, var(--danger) 12%, var(--surface-0))",border:"1px solid var(--danger)",borderRadius:"var(--radius-md)",fontSize:"var(--fs-12)"},children:I}),g!==null&&e.jsxs(c,{align:"center",justify:"end",gap:2,style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[e.jsx("span",{children:"Settings saved"}),e.jsx("span",{style:{fontFamily:"var(--font-mono)"},children:new Date(g).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})})]}),e.jsxs(n,{id:"general",title:"General",description:"Workspace identity + default landing page.",icon:e.jsx(F,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"workspace-name",label:"Workspace name",description:"Shown in the topbar and command palette.",control:e.jsx(T,{value:a.workspaceName,onChange:t=>o("workspaceName",t.target.value),style:{width:240}})}),e.jsx(i,{id:"default-view",label:"Default view on launch",control:e.jsxs(h,{value:a.defaultView,onChange:t=>o("defaultView",t),children:[e.jsx("option",{value:"overview",children:"Overview"}),e.jsx("option",{value:"tasks",children:"Tasks"}),e.jsx("option",{value:"goals",children:"Goals"}),e.jsx("option",{value:"agents",children:"Agents"}),e.jsx("option",{value:"activity",children:"Activity"}),e.jsx("option",{value:"settings",children:"Settings"})]})})]}),e.jsxs(n,{id:"theme",title:"Theme",description:"Color mode + accent + typography.",icon:e.jsx(de,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"theme-mode",label:"Color mode",control:e.jsxs(h,{value:x.mode,onChange:t=>x.setMode(t),children:[e.jsx("option",{value:"system",children:"System"}),e.jsx("option",{value:"light",children:"Light"}),e.jsx("option",{value:"dark",children:"Dark"})]})}),e.jsx(i,{id:"theme-accent",label:"Accent color",description:"Personalize the leading-edge accent stripe.",control:e.jsxs(c,{align:"center",gap:2,children:[e.jsx("input",{type:"color",value:a.themeAccent,onChange:t=>o("themeAccent",t.target.value),style:{width:40,height:28,border:"1px solid var(--border)",borderRadius:"var(--radius-sm)",background:"transparent",cursor:"pointer"}}),e.jsx("code",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)"},children:a.themeAccent})]})}),e.jsx(i,{id:"theme-font",label:"Font family",description:"Body type. System fonts reduce render time.",control:e.jsxs(h,{defaultValue:"inter",children:[e.jsx("option",{value:"inter",children:"Inter"}),e.jsx("option",{value:"system",children:"System UI"}),e.jsx("option",{value:"jetbrains",children:"JetBrains Mono"})]})}),e.jsx(i,{id:"theme-radius",label:"Border radius",description:"0 = sharp; 16 = rounded.",control:e.jsx(R,{defaultValue:[8],min:0,max:16,step:1})})]}),e.jsxs(n,{id:"density",title:"Density",description:"Comfortable by default. Compact fits more on screen.",icon:e.jsx(ue,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"density-mode",label:"Density",control:e.jsxs(h,{value:y.density,onChange:t=>y.setDensity(t),children:[e.jsx("option",{value:"comfortable",children:"Comfortable"}),e.jsx("option",{value:"compact",children:"Compact"})]})}),e.jsx(i,{id:"density-base-font",label:"Base font size",description:"Adjusts the `--fs-13` token globally.",control:e.jsxs(c,{align:"center",gap:2,children:[e.jsx(R,{value:[a.densityBaseFont],onValueChange:t=>o("densityBaseFont",t[0]??13),min:11,max:16,step:1}),e.jsxs("code",{style:{fontFamily:"var(--font-mono)"},children:[a.densityBaseFont,"px"]})]})})]}),e.jsxs(n,{id:"density-rules",title:"Density rules",description:"Override density per surface.",icon:e.jsx(pe,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"tasks-compact",label:"Tasks page — compact by default",control:e.jsx(s,{checked:a.tasksCompact,onCheckedChange:t=>o("tasksCompact",t)})}),e.jsx(i,{id:"memory-compact",label:"Memory page — compact by default",control:e.jsx(s,{checked:a.memoryCompact,onCheckedChange:t=>o("memoryCompact",t)})}),e.jsx(i,{id:"activity-compact",label:"Activity page — compact by default",control:e.jsx(s,{onCheckedChange:t=>r("activityCompact",t)})})]}),e.jsxs(n,{id:"palette",title:"Command palette",description:"How the ⌘K palette behaves.",icon:e.jsx(se,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"palette-history",label:"Show recent commands",control:e.jsx(s,{checked:a.paletteHistory,onCheckedChange:t=>o("paletteHistory",t)})}),e.jsx(i,{id:"palette-fuzzy",label:"Fuzzy match",control:e.jsx(s,{checked:a.paletteFuzzy,onCheckedChange:t=>o("paletteFuzzy",t)})}),e.jsx(i,{id:"palette-navigate",label:"Show navigation group",control:e.jsx(s,{defaultChecked:!0,onCheckedChange:t=>r("paletteNavigate",t)})}),e.jsx(i,{id:"palette-spawn",label:"Show agent-spawn group",control:e.jsx(s,{defaultChecked:!0,onCheckedChange:t=>r("paletteSpawn",t)})}),e.jsx(i,{id:"palette-scope",label:"Default scope",description:"Where palette actions apply when no context.",control:e.jsxs(h,{defaultValue:"project",children:[e.jsx("option",{value:"project",children:"Active project"}),e.jsx("option",{value:"global",children:"Global"})]})})]}),e.jsxs(n,{id:"keyboard",title:"Keyboard",description:"Hotkey bindings (read-only here; rebind in ~/.claude/keybindings.json).",icon:e.jsx(re,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"kb-palette",label:"Open command palette",control:e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:"⌘K"})}),e.jsx(i,{id:"kb-search",label:"Search tasks",control:e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:"⌘/"})}),e.jsx(i,{id:"kb-newtask",label:"New task",control:e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:"⌘N"})}),e.jsx(i,{id:"kb-toggle-theme",label:"Toggle theme",control:e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:"⌘⇧L"})}),e.jsx(i,{id:"kb-toggle-density",label:"Toggle density",control:e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:"⌘⇧D"})}),e.jsx(i,{id:"kb-reload",label:"Reload window",control:e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:"⌘R"})})]}),e.jsxs(n,{id:"notifications",title:"Notifications",description:"When the harness should ping you.",icon:e.jsx(Q,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"n-agent-finished",label:"Agent run finished",control:e.jsx(s,{checked:a.notifyAgentFinished,onCheckedChange:t=>o("notifyAgentFinished",t)})}),e.jsx(i,{id:"n-task-moved",label:"Task moved between columns",control:e.jsx(s,{defaultChecked:!0,onCheckedChange:t=>r("notifyTaskMoved",t)})}),e.jsx(i,{id:"n-ci-failed",label:"CI failed",control:e.jsx(s,{checked:a.notifyCiFailed,onCheckedChange:t=>o("notifyCiFailed",t)})}),e.jsx(i,{id:"n-token-budget",label:"Token budget 80%",control:e.jsx(s,{checked:a.notifyTokenBudget,onCheckedChange:t=>o("notifyTokenBudget",t)})}),e.jsx(i,{id:"n-daily-digest",label:"Daily digest at 09:00",control:e.jsx(s,{checked:a.notifyDailyDigest,onCheckedChange:t=>o("notifyDailyDigest",t)})}),e.jsx(i,{id:"n-channel",label:"Channel",description:"Where notifications render.",control:e.jsxs(h,{defaultValue:"toast",children:[e.jsx("option",{value:"toast",children:"In-app toast"}),e.jsx("option",{value:"system",children:"OS notification"}),e.jsx("option",{value:"both",children:"Both"}),e.jsx("option",{value:"silent",children:"Silent"})]})})]}),e.jsxs(n,{id:"storage",title:"Storage",description:"Where local data lives.",icon:e.jsx(le,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"store-path",label:"Local store path",control:e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:"~/.bizar/store.db"})}),e.jsx(i,{id:"cache-path",label:"Cache directory",control:e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:"~/.cache/bizar"})}),e.jsx(i,{id:"sessions-path",label:"Claude Code sessions",control:e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:"~/.claude/sessions"})}),e.jsx(i,{id:"cache-size",label:"Cache size",control:e.jsx(M,{loading:!1,value:42})}),e.jsx(i,{id:"store-gc",label:"Garbage collect",description:"Prune empty sessions and orphaned tasks.",control:e.jsx(v,{variant:"secondary",children:"Run GC"})}),e.jsx(i,{id:"store-clear",label:"Clear local cache",description:"Destructive. Wipes the activity log and snapshots.",control:e.jsx(v,{variant:"danger",children:"Clear…"})})]}),e.jsxs(n,{id:"plugins",title:"Plugins",description:"Plugin registrations under `.claude/`.",icon:e.jsx(ce,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"plugins-count",label:"Loaded plugins",control:e.jsx(M,{loading:w.loading,value:((L=(H=w.data)==null?void 0:H.agents)==null?void 0:L.length)??0})}),e.jsx(i,{id:"plugins-bizar",label:"Bizar",description:"Core plugin. Required — disable with care.",control:e.jsx(s,{defaultChecked:!0,disabled:!0})}),Array.isArray((N=w.data)==null?void 0:N.agents)&&w.data.agents.length>0&&e.jsx(i,{id:"plugins-list",label:"Active agents",control:e.jsx(D,{gap:1,style:{maxHeight:200,overflowY:"auto",width:360},children:w.data.agents.map(t=>e.jsxs(c,{align:"center",justify:"between",style:{padding:"4px 8px",background:"var(--surface-1)",borderRadius:"var(--radius-sm)"},children:[e.jsx("code",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)"},children:t.name}),e.jsx($,{tone:"success",children:"active"})]},t.name))})})]}),e.jsxs(n,{id:"mcps",title:"MCP servers",description:"Model Context Protocol servers.",icon:e.jsx(X,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"mcps-count",label:"Registered MCPs",control:e.jsx(M,{loading:C.loading,value:((W=(O=C.data)==null?void 0:O.skills)==null?void 0:W.length)??0})}),Array.isArray((q=C.data)==null?void 0:q.skills)&&C.data.skills.length>0&&e.jsx(i,{id:"mcps-list",label:"Servers",control:e.jsx(D,{gap:1,style:{maxHeight:220,overflowY:"auto",width:360},children:C.data.skills.map(t=>e.jsxs(c,{align:"center",justify:"between",style:{padding:"4px 8px",background:"var(--surface-1)",borderRadius:"var(--radius-sm)"},children:[e.jsx("code",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)"},children:t.name}),e.jsx(s,{defaultChecked:!0,onCheckedChange:l=>void r(`mcp:${t.name}`,l)})]},t.name))})})]}),e.jsxs(n,{id:"skills",title:"Skills",description:"Bizar skill packs.",icon:e.jsx(ee,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"skills-count",label:"Loaded skills",control:e.jsx(M,{loading:b.loading,value:((U=(G=b.data)==null?void 0:G.skills)==null?void 0:U.length)??0})}),Array.isArray((K=b.data)==null?void 0:K.skills)&&b.data.skills.length>0&&e.jsx(i,{id:"skills-list",label:"Skill packs",control:e.jsx(D,{gap:1,style:{maxHeight:260,overflowY:"auto",width:360},children:b.data.skills.map(t=>e.jsxs(c,{align:"center",justify:"between",style:{padding:"4px 8px",background:"var(--surface-1)",borderRadius:"var(--radius-sm)"},children:[e.jsxs(c,{align:"center",gap:2,children:[e.jsx("code",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)"},children:t.name}),e.jsx($,{tone:"neutral",children:t.source})]}),e.jsx(s,{defaultChecked:!0,onCheckedChange:l=>void r(`skill:${t.name}`,l)})]},t.name))})})]}),e.jsxs(n,{id:"hooks",title:"Hooks",description:"Executable hook scripts.",icon:e.jsx(oe,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"hooks-count",label:"Registered hooks",control:e.jsx(M,{loading:E.loading,value:((J=(Y=E.data)==null?void 0:Y.skills)==null?void 0:J.length)??0})}),e.jsx(i,{id:"hooks-pretool",label:"PreToolUse",description:"Block writes to .env / secrets / node_modules.",control:e.jsx(s,{defaultChecked:!0})}),e.jsx(i,{id:"hooks-posttool",label:"PostToolUse",description:"Log tool latency to ~/.config/bizar/hook-logs/.",control:e.jsx(s,{defaultChecked:!0})}),e.jsx(i,{id:"hooks-taskstart",label:"TaskStart",description:"Prime AI with project context.",control:e.jsx(s,{defaultChecked:!0})}),e.jsx(i,{id:"hooks-taskresume",label:"TaskResume",description:"Re-read state + check git log.",control:e.jsx(s,{defaultChecked:!0})}),e.jsx(i,{id:"hooks-prompt",label:"UserPromptSubmit",description:"Tag prompts for routing.",control:e.jsx(s,{defaultChecked:!0})})]}),e.jsxs(n,{id:"activity",title:"Activity",description:"Stream retention + export.",icon:e.jsx(te,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"activity-retention",label:"Retain last",control:e.jsxs(c,{align:"center",gap:2,children:[e.jsx(R,{value:[a.activityRetentionDays],onValueChange:t=>o("activityRetentionDays",t[0]??30),min:7,max:365,step:1}),e.jsxs("code",{style:{fontFamily:"var(--font-mono)"},children:[a.activityRetentionDays," days"]})]})}),e.jsx(i,{id:"activity-hide",label:"Hide noisy event types",description:"Comma-separated kinds. E.g. 'heartbeat,ping'.",control:e.jsx(T,{placeholder:"heartbeat, ping, system",style:{width:280}})}),e.jsx(i,{id:"activity-export",label:"Export",description:"Download the full activity log as NDJSON.",control:e.jsx(v,{variant:"secondary",children:"Export…"})})]}),e.jsxs(n,{id:"memory",title:"Memory",description:"Cross-session memo behavior.",icon:e.jsx(ne,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"memory-auto-commit",label:"Auto-commit project memos",control:e.jsx(s,{checked:a.memoryAutoCommit,onCheckedChange:t=>o("memoryAutoCommit",t)})}),e.jsx(i,{id:"memory-scope",label:"Default scope filter",control:e.jsxs(h,{value:a.memoryScopeDefault,onChange:t=>o("memoryScopeDefault",t),children:[e.jsx("option",{value:"project",children:"Project"}),e.jsx("option",{value:"global",children:"Global"}),e.jsx("option",{value:"all",children:"All"})]})}),e.jsx(i,{id:"memory-index",label:"Re-index vault",description:"Rebuild search index. May take a moment.",control:e.jsx(v,{variant:"secondary",children:"Re-index"})})]}),e.jsxs(n,{id:"task-defaults",title:"Task defaults",description:"Defaults applied to new tasks.",icon:e.jsx(ie,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"task-priority",label:"Default priority",control:e.jsxs(h,{value:a.defaultTaskPriority,onChange:t=>o("defaultTaskPriority",t),children:[e.jsx("option",{value:"low",children:"Low"}),e.jsx("option",{value:"medium",children:"Medium"}),e.jsx("option",{value:"high",children:"High"}),e.jsx("option",{value:"urgent",children:"Urgent"})]})}),e.jsx(i,{id:"task-column",label:"Default column",control:e.jsxs(h,{value:a.defaultTaskColumn,onChange:t=>o("defaultTaskColumn",t),children:[e.jsx("option",{value:"queued",children:"Backlog"}),e.jsx("option",{value:"doing",children:"In progress"}),e.jsx("option",{value:"blocked",children:"In review"}),e.jsx("option",{value:"done",children:"Done"})]})}),e.jsx(i,{id:"task-assignee",label:"Default assignee",description:"Auto-assigns new tasks to this agent (empty = unassigned).",control:e.jsx(T,{placeholder:"odin",style:{width:240}})})]}),e.jsxs(n,{id:"agent-defaults",title:"Agent defaults",description:"Defaults applied when spawning agents.",icon:e.jsx(ae,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"agent-model",label:"Default model",control:e.jsx(T,{value:a.defaultAgentModel,onChange:t=>o("defaultAgentModel",t.target.value),style:{width:240}})}),e.jsx(i,{id:"agent-mistakes",label:"Max consecutive mistakes",description:"Higher = more forgiving. Default 10.",control:e.jsxs(c,{align:"center",gap:2,children:[e.jsx(R,{value:[a.defaultAgentMaxMistakes],onValueChange:t=>o("defaultAgentMaxMistakes",t[0]??10),min:3,max:20,step:1}),e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:a.defaultAgentMaxMistakes})]})}),e.jsx(i,{id:"agent-bg",label:"Spawn as background by default",control:e.jsx(s,{onCheckedChange:t=>r("agentBackgroundDefault",t)})}),e.jsx(i,{id:"agent-worktree",label:"Always create a worktree",control:e.jsx(s,{defaultChecked:!0,onCheckedChange:t=>r("agentWorktree",t)})}),e.jsx(i,{id:"agent-system-prompt",label:"Extra system prompt",description:"Appended to every agent's system prompt.",control:e.jsx(Se,{rows:3,placeholder:"You are a careful, methodical engineer…"})})]}),e.jsxs(n,{id:"privacy",title:"Privacy",description:"What the harness sends and stores.",icon:e.jsx(he,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"privacy-analytics",label:"Anonymous analytics",control:e.jsx(s,{checked:a.analytics,onCheckedChange:t=>o("analytics",t)})}),e.jsx(i,{id:"privacy-crash",label:"Crash reports",control:e.jsx(s,{checked:a.crashReports,onCheckedChange:t=>o("crashReports",t)})}),e.jsx(i,{id:"privacy-pii",label:"PII handling",description:"How personal data is treated before persistence.",control:e.jsxs(h,{value:a.piiMode,onChange:t=>o("piiMode",t),children:[e.jsx("option",{value:"off",children:"Off"}),e.jsx("option",{value:"redact",children:"Redact"}),e.jsx("option",{value:"pseudonymize",children:"Pseudonymize"}),e.jsx("option",{value:"block",children:"Block"})]})}),e.jsx(i,{id:"privacy-telemetry",label:"Send token usage telemetry",control:e.jsx(s,{onCheckedChange:t=>r("telemetryTokens",t)})})]}),e.jsxs(n,{id:"advanced",title:"Advanced",description:"Power-user toggles. Touch with care.",icon:e.jsx(F,{size:14,"aria-hidden":!0}),children:[e.jsx(i,{id:"advanced-reduced-motion",label:"Reduce motion",control:e.jsx(s,{checked:a.reducedMotion,onCheckedChange:t=>o("reducedMotion",t)})}),e.jsx(i,{id:"advanced-debug",label:"Debug overlay",description:"Show agent + tool call traces in the topbar.",control:e.jsx(s,{checked:a.debugOverlay,onCheckedChange:t=>o("debugOverlay",t)})}),e.jsx(i,{id:"advanced-restart",label:"Restart dashboard backend",description:"Stop and relaunch the local server. Unsaved tasks are safe on disk.",control:e.jsxs(c,{align:"center",gap:2,children:[e.jsxs(v,{variant:"danger",children:[e.jsx(ze,{size:12,"aria-hidden":!0})," Restart…"]}),e.jsxs(v,{variant:"ghost",children:[e.jsx(Ae,{size:12,"aria-hidden":!0})," Rebuild"]})]})}),e.jsx(i,{id:"advanced-logs",label:"Open logs folder",control:e.jsxs(v,{variant:"secondary",children:[e.jsx(Me,{size:12,"aria-hidden":!0})," Purge logs"]})})]})]})]})})}export{Ye as SettingsView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsView-Cx3uJrus.js","sources":["../../../node_modules/lucide-react/dist/esm/icons/database.js","../../../node_modules/lucide-react/dist/esm/icons/keyboard.js","../../../node_modules/lucide-react/dist/esm/icons/palette.js","../../../node_modules/lucide-react/dist/esm/icons/plug.js","../../../node_modules/lucide-react/dist/esm/icons/shield-check.js","../../../node_modules/lucide-react/dist/esm/icons/sliders-vertical.js","../../../node_modules/lucide-react/dist/esm/icons/sparkles.js","../../src/web/v8/ui/settings/SettingsNav.tsx","../../src/web/v8/views/Settings/SettingsView.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Database = createLucideIcon(\"Database\", [\n [\"ellipse\", { cx: \"12\", cy: \"5\", rx: \"9\", ry: \"3\", key: \"msslwz\" }],\n [\"path\", { d: \"M3 5V19A9 3 0 0 0 21 19V5\", key: \"1wlel7\" }],\n [\"path\", { d: \"M3 12A9 3 0 0 0 21 12\", key: \"mv7ke4\" }]\n]);\n\nexport { Database as default };\n//# sourceMappingURL=database.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Keyboard = createLucideIcon(\"Keyboard\", [\n [\"path\", { d: \"M10 8h.01\", key: \"1r9ogq\" }],\n [\"path\", { d: \"M12 12h.01\", key: \"1mp3jc\" }],\n [\"path\", { d: \"M14 8h.01\", key: \"1primd\" }],\n [\"path\", { d: \"M16 12h.01\", key: \"1l6xoz\" }],\n [\"path\", { d: \"M18 8h.01\", key: \"emo2bl\" }],\n [\"path\", { d: \"M6 8h.01\", key: \"x9i8wu\" }],\n [\"path\", { d: \"M7 16h10\", key: \"wp8him\" }],\n [\"path\", { d: \"M8 12h.01\", key: \"czm47f\" }],\n [\"rect\", { width: \"20\", height: \"16\", x: \"2\", y: \"4\", rx: \"2\", key: \"18n3k1\" }]\n]);\n\nexport { Keyboard as default };\n//# sourceMappingURL=keyboard.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Palette = createLucideIcon(\"Palette\", [\n [\"circle\", { cx: \"13.5\", cy: \"6.5\", r: \".5\", fill: \"currentColor\", key: \"1okk4w\" }],\n [\"circle\", { cx: \"17.5\", cy: \"10.5\", r: \".5\", fill: \"currentColor\", key: \"f64h9f\" }],\n [\"circle\", { cx: \"8.5\", cy: \"7.5\", r: \".5\", fill: \"currentColor\", key: \"fotxhn\" }],\n [\"circle\", { cx: \"6.5\", cy: \"12.5\", r: \".5\", fill: \"currentColor\", key: \"qy21gx\" }],\n [\n \"path\",\n {\n d: \"M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z\",\n key: \"12rzf8\"\n }\n ]\n]);\n\nexport { Palette as default };\n//# sourceMappingURL=palette.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Plug = createLucideIcon(\"Plug\", [\n [\"path\", { d: \"M12 22v-5\", key: \"1ega77\" }],\n [\"path\", { d: \"M9 8V2\", key: \"14iosj\" }],\n [\"path\", { d: \"M15 8V2\", key: \"18g5xt\" }],\n [\"path\", { d: \"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z\", key: \"osxo6l\" }]\n]);\n\nexport { Plug as default };\n//# sourceMappingURL=plug.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ShieldCheck = createLucideIcon(\"ShieldCheck\", [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n]);\n\nexport { ShieldCheck as default };\n//# sourceMappingURL=shield-check.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst SlidersVertical = createLucideIcon(\"SlidersVertical\", [\n [\"line\", { x1: \"4\", x2: \"4\", y1: \"21\", y2: \"14\", key: \"1p332r\" }],\n [\"line\", { x1: \"4\", x2: \"4\", y1: \"10\", y2: \"3\", key: \"gb41h5\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"21\", y2: \"12\", key: \"hf2csr\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"3\", key: \"1kfi7u\" }],\n [\"line\", { x1: \"20\", x2: \"20\", y1: \"21\", y2: \"16\", key: \"1lhrwl\" }],\n [\"line\", { x1: \"20\", x2: \"20\", y1: \"12\", y2: \"3\", key: \"16vvfq\" }],\n [\"line\", { x1: \"2\", x2: \"6\", y1: \"14\", y2: \"14\", key: \"1uebub\" }],\n [\"line\", { x1: \"10\", x2: \"14\", y1: \"8\", y2: \"8\", key: \"1yglbp\" }],\n [\"line\", { x1: \"18\", x2: \"22\", y1: \"16\", y2: \"16\", key: \"1jxqpz\" }]\n]);\n\nexport { SlidersVertical as default };\n//# sourceMappingURL=sliders-vertical.js.map\n","/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Sparkles = createLucideIcon(\"Sparkles\", [\n [\n \"path\",\n {\n d: \"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z\",\n key: \"4pj2yx\"\n }\n ],\n [\"path\", { d: \"M20 3v4\", key: \"1olli1\" }],\n [\"path\", { d: \"M22 5h-4\", key: \"1gvqau\" }],\n [\"path\", { d: \"M4 17v2\", key: \"vumght\" }],\n [\"path\", { d: \"M5 18H3\", key: \"zchphs\" }]\n]);\n\nexport { Sparkles as default };\n//# sourceMappingURL=sparkles.js.map\n","import { type ReactNode } from 'react';\nimport { cx } from '../utils/cx.js';\n\n/**\n * SettingsNav — left rail inside the Settings page.\n *\n * Lists each section so the user can jump (or scroll) to it. The active\n * section is highlighted. The nav is a vertical list with section ids\n * as the anchor target; no JS router needed.\n */\n\nexport interface SettingsNavItem {\n id: string;\n title: string;\n icon?: ReactNode;\n}\n\nexport interface SettingsNavProps {\n items: readonly SettingsNavItem[];\n /** The id of the currently-visible section. */\n activeId?: string;\n /** Click handler — usually `() => document.getElementById(id)?.scrollIntoView()`. */\n onSelect?: (id: string) => void;\n className?: string;\n}\n\nexport function SettingsNav(props: SettingsNavProps) {\n const { items, activeId, onSelect, className } = props;\n return (\n <nav aria-label=\"Settings sections\" className={cx('v8-settings-nav', className)}>\n <ul\n style={{\n listStyle: 'none',\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n }}\n >\n {items.map((item) => {\n const isActive = activeId === item.id;\n return (\n <li key={item.id}>\n <button\n type=\"button\"\n onClick={() => onSelect?.(item.id)}\n aria-current={isActive ? 'true' : undefined}\n style={{\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--space-2)',\n width: '100%',\n padding: 'var(--space-2) var(--space-3)',\n background: isActive ? 'var(--surface-2)' : 'transparent',\n border: 0,\n borderRadius: 'var(--radius-sm)',\n color: isActive ? 'var(--fg)' : 'var(--fg-muted)',\n font: 'inherit',\n fontSize: 'var(--fs-13)',\n fontWeight: isActive ? 500 : 400,\n cursor: 'pointer',\n textAlign: 'left',\n }}\n >\n {item.icon !== undefined && (\n <span\n aria-hidden=\"true\"\n style={{\n display: 'inline-flex',\n color: isActive ? 'var(--accent)' : 'var(--fg-subtle)',\n flexShrink: 0,\n }}\n >\n {item.icon}\n </span>\n )}\n <span style={{ minWidth: 0, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }}>\n {item.title}\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n <style>{`\n .v8-settings-nav button:hover { background: var(--surface-2); color: var(--fg); }\n `}</style>\n </nav>\n );\n}","import { useEffect, useRef, useState, type CSSProperties, type ReactNode } from 'react';\nimport {\n Palette,\n Keyboard,\n Bell,\n Database,\n Plug,\n Library as LibraryIcon,\n Wrench,\n Activity,\n Brain,\n ShieldCheck,\n Sliders,\n Sparkles,\n Terminal,\n Settings as SettingsIcon,\n Cpu,\n Bot,\n CheckSquare,\n Plus,\n Trash2,\n RotateCw,\n type LucideIcon,\n} from 'lucide-react';\nimport { Stack } from '../../ui/primitives/Stack.js';\nimport { Inline } from '../../ui/primitives/Inline.js';\nimport { Grid } from '../../ui/primitives/Grid.js';\nimport { Switch } from '../../ui/controls/Switch.js';\nimport { Slider } from '../../ui/controls/Slider.js';\nimport { Button } from '../../ui/controls/Button.js';\nimport { Input } from '../../ui/controls/Input.js';\nimport { Textarea } from '../../ui/controls/Textarea.js';\nimport { Badge } from '../../ui/data/Badge.js';\nimport { SettingsSection } from '../../ui/settings/SettingsSection.js';\nimport { SettingsRow } from '../../ui/settings/SettingsRow.js';\nimport { SettingsNav, type SettingsNavItem } from '../../ui/settings/SettingsNav.js';\nimport { Skeleton } from '../../ui/feedback/Skeleton.js';\nimport { useTheme } from '../../ui/theme/useTheme.js';\nimport { useDensity } from '../../ui/theme/useDensity.js';\nimport { useFetch } from '../../data/useFetch.js';\nimport { fetchJson, FetchError } from '../../data/fetcher.js';\n\n/**\n * SettingsView — Sprint S15 expansion. 19 sections (up from 16) with\n * real controls throughout. Every Switch / Select / Slider / Input is\n * either:\n * - live-bound to a Provider (Theme / Density),\n * - persisted via PATCH /api/settings (everything else), or\n * - backed by a small per-section sub-endpoint when present.\n *\n * Sections:\n * 1. General workspace identity + default view\n * 2. Theme color mode + accent + font + radius\n * 3. Density comfortable/compact + base font\n * 4. Density rules per-surface overrides\n * 5. Command palette behaviour + history + fuzzy match + nav\n * 6. Keyboard hotkeys (read-only display + rebinds via /kb)\n * 7. Notifications agent / task / CI / budget / daily digest\n * 8. Storage paths + cache sizes + GC button\n * 9. Plugins mods list with enable toggles\n * 10. MCP servers list + status + click for detail\n * 11. Skills list with enable toggles\n * 12. Hooks list with enable toggles\n * 13. Activity retention + hide list + export\n * 14. Memory scope + auto-commit + search defaults\n * 15. Task defaults default priority / column / assignee\n * 16. Agent defaults default model + spawn flags + max mistakes\n * 17. Privacy telemetry + PII + crash reports\n * 18. Advanced debug overlay + restart server + max mistakes\n */\n\ntype Section = { id: string; title: string; icon: LucideIcon };\n\nconst SECTIONS: Section[] = [\n { id: 'general', title: 'General', icon: SettingsIcon },\n { id: 'theme', title: 'Theme', icon: Palette },\n { id: 'density', title: 'Density', icon: Sliders },\n { id: 'density-rules', title: 'Density rules', icon: Sparkles },\n { id: 'palette', title: 'Command palette', icon: Terminal },\n { id: 'keyboard', title: 'Keyboard', icon: Keyboard },\n { id: 'notifications', title: 'Notifications', icon: Bell },\n { id: 'storage', title: 'Storage', icon: Database },\n { id: 'plugins', title: 'Plugins', icon: Plug },\n { id: 'mcps', title: 'MCP servers', icon: Cpu },\n { id: 'skills', title: 'Skills', icon: LibraryIcon },\n { id: 'hooks', title: 'Hooks', icon: Wrench },\n { id: 'activity', title: 'Activity', icon: Activity },\n { id: 'memory', title: 'Memory', icon: Brain },\n { id: 'task-defaults', title: 'Task defaults', icon: CheckSquare },\n { id: 'agent-defaults', title: 'Agent defaults', icon: Bot },\n { id: 'privacy', title: 'Privacy', icon: ShieldCheck },\n { id: 'advanced', title: 'Advanced', icon: SettingsIcon },\n];\n\ninterface SettingsState {\n workspaceName: string;\n defaultView: 'overview' | 'tasks' | 'goals' | 'agents' | 'activity' | 'settings';\n themeAccent: string;\n densityBaseFont: number;\n tasksCompact: boolean;\n memoryCompact: boolean;\n paletteHistory: boolean;\n paletteFuzzy: boolean;\n notifyAgentFinished: boolean;\n notifyCiFailed: boolean;\n notifyTokenBudget: boolean;\n notifyDailyDigest: boolean;\n activityRetentionDays: number;\n memoryAutoCommit: boolean;\n memoryScopeDefault: 'project' | 'global' | 'all';\n defaultTaskPriority: 'low' | 'medium' | 'high' | 'urgent';\n defaultTaskColumn: 'queued' | 'doing' | 'blocked' | 'done';\n defaultAgentModel: string;\n defaultAgentMaxMistakes: number;\n analytics: boolean;\n crashReports: boolean;\n piiMode: 'off' | 'redact' | 'pseudonymize' | 'block';\n reducedMotion: boolean;\n debugOverlay: boolean;\n}\n\nconst DEFAULTS: SettingsState = {\n workspaceName: 'Bizar Harness',\n defaultView: 'overview',\n themeAccent: '#5b8def',\n densityBaseFont: 13,\n tasksCompact: false,\n memoryCompact: true,\n paletteHistory: true,\n paletteFuzzy: true,\n notifyAgentFinished: true,\n notifyCiFailed: true,\n notifyTokenBudget: true,\n notifyDailyDigest: false,\n activityRetentionDays: 30,\n memoryAutoCommit: true,\n memoryScopeDefault: 'all',\n defaultTaskPriority: 'medium',\n defaultTaskColumn: 'queued',\n defaultAgentModel: 'claude-sonnet-4-5',\n defaultAgentMaxMistakes: 10,\n analytics: true,\n crashReports: true,\n piiMode: 'redact',\n reducedMotion: false,\n debugOverlay: false,\n};\n\nconst SELECT_STYLE: CSSProperties = {\n height: 28,\n padding: '0 var(--space-2)',\n borderRadius: 'var(--radius-sm)',\n border: '1px solid var(--border)',\n background: 'var(--surface-0)',\n color: 'var(--fg)',\n fontFamily: 'var(--font-sans)',\n fontSize: 'var(--fs-12)',\n cursor: 'pointer',\n outline: 'none',\n};\n\nfunction NativeSelect({\n value,\n defaultValue,\n onChange,\n children,\n}: {\n value?: string;\n defaultValue?: string;\n onChange?: (v: string) => void;\n children: ReactNode;\n}): JSX.Element {\n return (\n <select\n value={value}\n defaultValue={defaultValue}\n onChange={(e) => onChange?.(e.target.value)}\n style={SELECT_STYLE}\n >\n {children}\n </select>\n );\n}\n\nfunction Count({ loading, value }: { loading: boolean; value: number | undefined }): JSX.Element {\n if (loading) return <Skeleton style={{ width: 32, height: 16 }} />;\n return <code style={{ fontFamily: 'var(--font-mono)' }}>{value ?? 0}</code>;\n}\n\nexport function SettingsView(): JSX.Element {\n const [activeId, setActiveId] = useState<string>('general');\n const theme = useTheme();\n const density = useDensity();\n const [settings, setSettings] = useState<SettingsState>(DEFAULTS);\n const [savedAt, setSavedAt] = useState<number | null>(null);\n const [error, setError] = useState<string | null>(null);\n\n const skillsRes = useFetch<{ skills?: { name: string; source: string }[] }>('/api/skills?kind=skills');\n const mcpsRes = useFetch<{ skills?: { name: string }[] }>('/api/skills?kind=mcps');\n const hooksRes = useFetch<{ skills?: { name: string }[] }>('/api/skills?kind=hooks');\n const agentsRes = useFetch<{ agents?: { name: string }[] }>('/api/agents');\n\n // Hydrate from the server. The server returns the merged\n // (defaults + persisted overrides) shape, so we can spread it\n // directly over our DEFAULTS to pick up any keys we don't model.\n const settingsRes = useFetch<Partial<SettingsState>>('/api/settings');\n useEffect(() => {\n if (settingsRes.data) {\n setSettings((prev) => ({ ...prev, ...settingsRes.data }));\n }\n }, [settingsRes.data]);\n\n const update = <K extends keyof SettingsState>(key: K, value: SettingsState[K]): void => {\n setSettings((s) => ({ ...s, [key]: value }));\n void patch(key, value);\n };\n\n const patch = async (key: string, value: unknown): Promise<void> => {\n try {\n // The settings endpoint accepts a partial body and merges with\n // existing values on the server side — so PUT /api/settings\n // with { [key]: value } is the canonical \"update one row\" path.\n // We re-PUT the full merged shape so the server has the latest\n // copy of every key we know about.\n const merged = { ...settings, [key]: value };\n await fetchJson('/api/settings', { method: 'PUT', body: merged });\n setSavedAt(Date.now());\n setError(null);\n } catch (err) {\n setError(err instanceof FetchError ? err.message : (err as Error).message);\n }\n };\n\n const navItems: SettingsNavItem[] = SECTIONS.map((s) => ({\n id: s.id,\n title: s.title,\n icon: <s.icon size={14} aria-hidden=\"true\" />,\n }));\n\n const handleSelect = (id: string): void => {\n setActiveId(id);\n requestAnimationFrame(() => {\n document.getElementById(id)?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n });\n };\n\n const rootRef = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (typeof IntersectionObserver === 'undefined') return;\n const targets = SECTIONS\n .map((s) => document.getElementById(s.id))\n .filter((el): el is HTMLElement => el !== null);\n if (targets.length === 0) return;\n const visible = new Map<string, number>();\n const observer = new IntersectionObserver(\n (entries) => {\n for (const entry of entries) {\n const id = entry.target.id;\n if (entry.isIntersecting) visible.set(id, entry.intersectionRatio);\n else visible.delete(id);\n }\n if (visible.size === 0) return;\n let bestId: string | undefined;\n let bestRatio = -1;\n for (const [id, ratio] of visible) {\n if (ratio > bestRatio) { bestRatio = ratio; bestId = id; }\n }\n if (bestId) setActiveId(bestId);\n },\n { rootMargin: '-30% 0px -50% 0px', threshold: [0, 0.25, 0.5, 0.75, 1] },\n );\n for (const t of targets) observer.observe(t);\n return () => observer.disconnect();\n }, []);\n\n return (\n <div ref={rootRef}>\n <Grid cols={3} gap={5}>\n <aside style={{ position: 'sticky', top: 0, alignSelf: 'start' }}>\n <SettingsNav items={navItems} activeId={activeId} onSelect={handleSelect} />\n </aside>\n <Stack gap={5} style={{ gridColumn: 'span 2' }}>\n {error !== null && (\n <div role=\"alert\" style={{ padding: 'var(--space-3)', background: 'color-mix(in oklch, var(--danger) 12%, var(--surface-0))', border: '1px solid var(--danger)', borderRadius: 'var(--radius-md)', fontSize: 'var(--fs-12)' }}>\n {error}\n </div>\n )}\n {savedAt !== null && (\n <Inline align=\"center\" justify=\"end\" gap={2} style={{ fontSize: 'var(--fs-12)', color: 'var(--fg-muted)' }}>\n <span>Settings saved</span>\n <span style={{ fontFamily: 'var(--font-mono)' }}>\n {new Date(savedAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit', second: '2-digit' })}\n </span>\n </Inline>\n )}\n\n {/* 1. General */}\n <SettingsSection id=\"general\" title=\"General\" description=\"Workspace identity + default landing page.\" icon={<SettingsIcon size={14} aria-hidden />}>\n <SettingsRow\n id=\"workspace-name\"\n label=\"Workspace name\"\n description=\"Shown in the topbar and command palette.\"\n control={\n <Input\n value={settings.workspaceName}\n onChange={(e) => update('workspaceName', e.target.value)}\n style={{ width: 240 }}\n />\n }\n />\n <SettingsRow\n id=\"default-view\"\n label=\"Default view on launch\"\n control={\n <NativeSelect value={settings.defaultView} onChange={(v) => update('defaultView', v as SettingsState['defaultView'])}>\n <option value=\"overview\">Overview</option>\n <option value=\"tasks\">Tasks</option>\n <option value=\"goals\">Goals</option>\n <option value=\"agents\">Agents</option>\n <option value=\"activity\">Activity</option>\n <option value=\"settings\">Settings</option>\n </NativeSelect>\n }\n />\n </SettingsSection>\n\n {/* 2. Theme */}\n <SettingsSection id=\"theme\" title=\"Theme\" description=\"Color mode + accent + typography.\" icon={<Palette size={14} aria-hidden />}>\n <SettingsRow\n id=\"theme-mode\"\n label=\"Color mode\"\n control={\n <NativeSelect value={theme.mode} onChange={(v) => theme.setMode(v as 'light' | 'dark' | 'system')}>\n <option value=\"system\">System</option>\n <option value=\"light\">Light</option>\n <option value=\"dark\">Dark</option>\n </NativeSelect>\n }\n />\n <SettingsRow\n id=\"theme-accent\"\n label=\"Accent color\"\n description=\"Personalize the leading-edge accent stripe.\"\n control={\n <Inline align=\"center\" gap={2}>\n <input\n type=\"color\"\n value={settings.themeAccent}\n onChange={(e) => update('themeAccent', e.target.value)}\n style={{ width: 40, height: 28, border: '1px solid var(--border)', borderRadius: 'var(--radius-sm)', background: 'transparent', cursor: 'pointer' }}\n />\n <code style={{ fontFamily: 'var(--font-mono)', fontSize: 'var(--fs-12)' }}>{settings.themeAccent}</code>\n </Inline>\n }\n />\n <SettingsRow\n id=\"theme-font\"\n label=\"Font family\"\n description=\"Body type. System fonts reduce render time.\"\n control={\n <NativeSelect defaultValue=\"inter\">\n <option value=\"inter\">Inter</option>\n <option value=\"system\">System UI</option>\n <option value=\"jetbrains\">JetBrains Mono</option>\n </NativeSelect>\n }\n />\n <SettingsRow\n id=\"theme-radius\"\n label=\"Border radius\"\n description=\"0 = sharp; 16 = rounded.\"\n control={<Slider defaultValue={[8]} min={0} max={16} step={1} />}\n />\n </SettingsSection>\n\n {/* 3. Density */}\n <SettingsSection id=\"density\" title=\"Density\" description=\"Comfortable by default. Compact fits more on screen.\" icon={<Sliders size={14} aria-hidden />}>\n <SettingsRow\n id=\"density-mode\"\n label=\"Density\"\n control={\n <NativeSelect value={density.density} onChange={(v) => density.setDensity(v as 'comfortable' | 'compact')}>\n <option value=\"comfortable\">Comfortable</option>\n <option value=\"compact\">Compact</option>\n </NativeSelect>\n }\n />\n <SettingsRow\n id=\"density-base-font\"\n label=\"Base font size\"\n description=\"Adjusts the `--fs-13` token globally.\"\n control={\n <Inline align=\"center\" gap={2}>\n <Slider\n value={[settings.densityBaseFont]}\n onValueChange={(v) => update('densityBaseFont', v[0] ?? 13)}\n min={11} max={16} step={1}\n />\n <code style={{ fontFamily: 'var(--font-mono)' }}>{settings.densityBaseFont}px</code>\n </Inline>\n }\n />\n </SettingsSection>\n\n {/* 4. Density rules */}\n <SettingsSection id=\"density-rules\" title=\"Density rules\" description=\"Override density per surface.\" icon={<Sparkles size={14} aria-hidden />}>\n <SettingsRow id=\"tasks-compact\" label=\"Tasks page — compact by default\" control={<Switch checked={settings.tasksCompact} onCheckedChange={(v) => update('tasksCompact', v)} />} />\n <SettingsRow id=\"memory-compact\" label=\"Memory page — compact by default\" control={<Switch checked={settings.memoryCompact} onCheckedChange={(v) => update('memoryCompact', v)} />} />\n <SettingsRow id=\"activity-compact\" label=\"Activity page — compact by default\" control={<Switch onCheckedChange={(v) => patch('activityCompact', v)} />} />\n </SettingsSection>\n\n {/* 5. Command palette */}\n <SettingsSection id=\"palette\" title=\"Command palette\" description=\"How the ⌘K palette behaves.\" icon={<Terminal size={14} aria-hidden />}>\n <SettingsRow id=\"palette-history\" label=\"Show recent commands\" control={<Switch checked={settings.paletteHistory} onCheckedChange={(v) => update('paletteHistory', v)} />} />\n <SettingsRow id=\"palette-fuzzy\" label=\"Fuzzy match\" control={<Switch checked={settings.paletteFuzzy} onCheckedChange={(v) => update('paletteFuzzy', v)} />} />\n <SettingsRow id=\"palette-navigate\" label=\"Show navigation group\" control={<Switch defaultChecked onCheckedChange={(v) => patch('paletteNavigate', v)} />} />\n <SettingsRow id=\"palette-spawn\" label=\"Show agent-spawn group\" control={<Switch defaultChecked onCheckedChange={(v) => patch('paletteSpawn', v)} />} />\n <SettingsRow\n id=\"palette-scope\"\n label=\"Default scope\"\n description=\"Where palette actions apply when no context.\"\n control={\n <NativeSelect defaultValue=\"project\">\n <option value=\"project\">Active project</option>\n <option value=\"global\">Global</option>\n </NativeSelect>\n }\n />\n </SettingsSection>\n\n {/* 6. Keyboard */}\n <SettingsSection id=\"keyboard\" title=\"Keyboard\" description=\"Hotkey bindings (read-only here; rebind in ~/.claude/keybindings.json).\" icon={<Keyboard size={14} aria-hidden />}>\n <SettingsRow id=\"kb-palette\" label=\"Open command palette\" control={<code style={{ fontFamily: 'var(--font-mono)' }}>⌘K</code>} />\n <SettingsRow id=\"kb-search\" label=\"Search tasks\" control={<code style={{ fontFamily: 'var(--font-mono)' }}>⌘/</code>} />\n <SettingsRow id=\"kb-newtask\" label=\"New task\" control={<code style={{ fontFamily: 'var(--font-mono)' }}>⌘N</code>} />\n <SettingsRow id=\"kb-toggle-theme\" label=\"Toggle theme\" control={<code style={{ fontFamily: 'var(--font-mono)' }}>⌘⇧L</code>} />\n <SettingsRow id=\"kb-toggle-density\" label=\"Toggle density\" control={<code style={{ fontFamily: 'var(--font-mono)' }}>⌘⇧D</code>} />\n <SettingsRow id=\"kb-reload\" label=\"Reload window\" control={<code style={{ fontFamily: 'var(--font-mono)' }}>⌘R</code>} />\n </SettingsSection>\n\n {/* 7. Notifications */}\n <SettingsSection id=\"notifications\" title=\"Notifications\" description=\"When the harness should ping you.\" icon={<Bell size={14} aria-hidden />}>\n <SettingsRow id=\"n-agent-finished\" label=\"Agent run finished\" control={<Switch checked={settings.notifyAgentFinished} onCheckedChange={(v) => update('notifyAgentFinished', v)} />} />\n <SettingsRow id=\"n-task-moved\" label=\"Task moved between columns\" control={<Switch defaultChecked onCheckedChange={(v) => patch('notifyTaskMoved', v)} />} />\n <SettingsRow id=\"n-ci-failed\" label=\"CI failed\" control={<Switch checked={settings.notifyCiFailed} onCheckedChange={(v) => update('notifyCiFailed', v)} />} />\n <SettingsRow id=\"n-token-budget\" label=\"Token budget 80%\" control={<Switch checked={settings.notifyTokenBudget} onCheckedChange={(v) => update('notifyTokenBudget', v)} />} />\n <SettingsRow id=\"n-daily-digest\" label=\"Daily digest at 09:00\" control={<Switch checked={settings.notifyDailyDigest} onCheckedChange={(v) => update('notifyDailyDigest', v)} />} />\n <SettingsRow\n id=\"n-channel\"\n label=\"Channel\"\n description=\"Where notifications render.\"\n control={\n <NativeSelect defaultValue=\"toast\">\n <option value=\"toast\">In-app toast</option>\n <option value=\"system\">OS notification</option>\n <option value=\"both\">Both</option>\n <option value=\"silent\">Silent</option>\n </NativeSelect>\n }\n />\n </SettingsSection>\n\n {/* 8. Storage */}\n <SettingsSection id=\"storage\" title=\"Storage\" description=\"Where local data lives.\" icon={<Database size={14} aria-hidden />}>\n <SettingsRow id=\"store-path\" label=\"Local store path\" control={<code style={{ fontFamily: 'var(--font-mono)' }}>~/.bizar/store.db</code>} />\n <SettingsRow id=\"cache-path\" label=\"Cache directory\" control={<code style={{ fontFamily: 'var(--font-mono)' }}>~/.cache/bizar</code>} />\n <SettingsRow id=\"sessions-path\" label=\"Claude Code sessions\" control={<code style={{ fontFamily: 'var(--font-mono)' }}>~/.claude/sessions</code>} />\n <SettingsRow id=\"cache-size\" label=\"Cache size\" control={<Count loading={false} value={42} />} />\n <SettingsRow\n id=\"store-gc\"\n label=\"Garbage collect\"\n description=\"Prune empty sessions and orphaned tasks.\"\n control={<Button variant=\"secondary\">Run GC</Button>}\n />\n <SettingsRow\n id=\"store-clear\"\n label=\"Clear local cache\"\n description=\"Destructive. Wipes the activity log and snapshots.\"\n control={<Button variant=\"danger\">Clear…</Button>}\n />\n </SettingsSection>\n\n {/* 9. Plugins */}\n <SettingsSection id=\"plugins\" title=\"Plugins\" description=\"Plugin registrations under `.claude/`.\" icon={<Plug size={14} aria-hidden />}>\n <SettingsRow\n id=\"plugins-count\"\n label=\"Loaded plugins\"\n control={<Count loading={agentsRes.loading} value={agentsRes.data?.agents?.length ?? 0} />}\n />\n <SettingsRow\n id=\"plugins-bizar\"\n label=\"Bizar\"\n description=\"Core plugin. Required — disable with care.\"\n control={<Switch defaultChecked disabled />}\n />\n {Array.isArray(agentsRes.data?.agents) && agentsRes.data.agents.length > 0 && (\n <SettingsRow\n id=\"plugins-list\"\n label=\"Active agents\"\n control={\n <Stack gap={1} style={{ maxHeight: 200, overflowY: 'auto', width: 360 }}>\n {agentsRes.data.agents.map((a) => (\n <Inline key={a.name} align=\"center\" justify=\"between\" style={{ padding: '4px 8px', background: 'var(--surface-1)', borderRadius: 'var(--radius-sm)' }}>\n <code style={{ fontFamily: 'var(--font-mono)', fontSize: 'var(--fs-12)' }}>{a.name}</code>\n <Badge tone=\"success\">active</Badge>\n </Inline>\n ))}\n </Stack>\n }\n />\n )}\n </SettingsSection>\n\n {/* 10. MCPs */}\n <SettingsSection id=\"mcps\" title=\"MCP servers\" description=\"Model Context Protocol servers.\" icon={<Cpu size={14} aria-hidden />}>\n <SettingsRow id=\"mcps-count\" label=\"Registered MCPs\" control={<Count loading={mcpsRes.loading} value={mcpsRes.data?.skills?.length ?? 0} />} />\n {Array.isArray(mcpsRes.data?.skills) && mcpsRes.data.skills.length > 0 && (\n <SettingsRow\n id=\"mcps-list\"\n label=\"Servers\"\n control={\n <Stack gap={1} style={{ maxHeight: 220, overflowY: 'auto', width: 360 }}>\n {mcpsRes.data.skills.map((m) => (\n <Inline key={m.name} align=\"center\" justify=\"between\" style={{ padding: '4px 8px', background: 'var(--surface-1)', borderRadius: 'var(--radius-sm)' }}>\n <code style={{ fontFamily: 'var(--font-mono)', fontSize: 'var(--fs-12)' }}>{m.name}</code>\n <Switch defaultChecked onCheckedChange={(v) => void patch(`mcp:${m.name}`, v)} />\n </Inline>\n ))}\n </Stack>\n }\n />\n )}\n </SettingsSection>\n\n {/* 11. Skills */}\n <SettingsSection id=\"skills\" title=\"Skills\" description=\"Bizar skill packs.\" icon={<LibraryIcon size={14} aria-hidden />}>\n <SettingsRow id=\"skills-count\" label=\"Loaded skills\" control={<Count loading={skillsRes.loading} value={skillsRes.data?.skills?.length ?? 0} />} />\n {Array.isArray(skillsRes.data?.skills) && skillsRes.data.skills.length > 0 && (\n <SettingsRow\n id=\"skills-list\"\n label=\"Skill packs\"\n control={\n <Stack gap={1} style={{ maxHeight: 260, overflowY: 'auto', width: 360 }}>\n {skillsRes.data.skills.map((s) => (\n <Inline key={s.name} align=\"center\" justify=\"between\" style={{ padding: '4px 8px', background: 'var(--surface-1)', borderRadius: 'var(--radius-sm)' }}>\n <Inline align=\"center\" gap={2}>\n <code style={{ fontFamily: 'var(--font-mono)', fontSize: 'var(--fs-12)' }}>{s.name}</code>\n <Badge tone=\"neutral\">{s.source}</Badge>\n </Inline>\n <Switch defaultChecked onCheckedChange={(v) => void patch(`skill:${s.name}`, v)} />\n </Inline>\n ))}\n </Stack>\n }\n />\n )}\n </SettingsSection>\n\n {/* 12. Hooks */}\n <SettingsSection id=\"hooks\" title=\"Hooks\" description=\"Executable hook scripts.\" icon={<Wrench size={14} aria-hidden />}>\n <SettingsRow id=\"hooks-count\" label=\"Registered hooks\" control={<Count loading={hooksRes.loading} value={hooksRes.data?.skills?.length ?? 0} />} />\n <SettingsRow id=\"hooks-pretool\" label=\"PreToolUse\" description=\"Block writes to .env / secrets / node_modules.\" control={<Switch defaultChecked />} />\n <SettingsRow id=\"hooks-posttool\" label=\"PostToolUse\" description=\"Log tool latency to ~/.config/bizar/hook-logs/.\" control={<Switch defaultChecked />} />\n <SettingsRow id=\"hooks-taskstart\" label=\"TaskStart\" description=\"Prime AI with project context.\" control={<Switch defaultChecked />} />\n <SettingsRow id=\"hooks-taskresume\" label=\"TaskResume\" description=\"Re-read state + check git log.\" control={<Switch defaultChecked />} />\n <SettingsRow id=\"hooks-prompt\" label=\"UserPromptSubmit\" description=\"Tag prompts for routing.\" control={<Switch defaultChecked />} />\n </SettingsSection>\n\n {/* 13. Activity */}\n <SettingsSection id=\"activity\" title=\"Activity\" description=\"Stream retention + export.\" icon={<Activity size={14} aria-hidden />}>\n <SettingsRow\n id=\"activity-retention\"\n label=\"Retain last\"\n control={\n <Inline align=\"center\" gap={2}>\n <Slider value={[settings.activityRetentionDays]} onValueChange={(v) => update('activityRetentionDays', v[0] ?? 30)} min={7} max={365} step={1} />\n <code style={{ fontFamily: 'var(--font-mono)' }}>{settings.activityRetentionDays} days</code>\n </Inline>\n }\n />\n <SettingsRow\n id=\"activity-hide\"\n label=\"Hide noisy event types\"\n description=\"Comma-separated kinds. E.g. 'heartbeat,ping'.\"\n control={<Input placeholder=\"heartbeat, ping, system\" style={{ width: 280 }} />}\n />\n <SettingsRow\n id=\"activity-export\"\n label=\"Export\"\n description=\"Download the full activity log as NDJSON.\"\n control={<Button variant=\"secondary\">Export…</Button>}\n />\n </SettingsSection>\n\n {/* 14. Memory */}\n <SettingsSection id=\"memory\" title=\"Memory\" description=\"Cross-session memo behavior.\" icon={<Brain size={14} aria-hidden />}>\n <SettingsRow id=\"memory-auto-commit\" label=\"Auto-commit project memos\" control={<Switch checked={settings.memoryAutoCommit} onCheckedChange={(v) => update('memoryAutoCommit', v)} />} />\n <SettingsRow\n id=\"memory-scope\"\n label=\"Default scope filter\"\n control={\n <NativeSelect value={settings.memoryScopeDefault} onChange={(v) => update('memoryScopeDefault', v as SettingsState['memoryScopeDefault'])}>\n <option value=\"project\">Project</option>\n <option value=\"global\">Global</option>\n <option value=\"all\">All</option>\n </NativeSelect>\n }\n />\n <SettingsRow id=\"memory-index\" label=\"Re-index vault\" description=\"Rebuild search index. May take a moment.\" control={<Button variant=\"secondary\">Re-index</Button>} />\n </SettingsSection>\n\n {/* 15. Task defaults */}\n <SettingsSection id=\"task-defaults\" title=\"Task defaults\" description=\"Defaults applied to new tasks.\" icon={<CheckSquare size={14} aria-hidden />}>\n <SettingsRow\n id=\"task-priority\"\n label=\"Default priority\"\n control={\n <NativeSelect value={settings.defaultTaskPriority} onChange={(v) => update('defaultTaskPriority', v as SettingsState['defaultTaskPriority'])}>\n <option value=\"low\">Low</option>\n <option value=\"medium\">Medium</option>\n <option value=\"high\">High</option>\n <option value=\"urgent\">Urgent</option>\n </NativeSelect>\n }\n />\n <SettingsRow\n id=\"task-column\"\n label=\"Default column\"\n control={\n <NativeSelect value={settings.defaultTaskColumn} onChange={(v) => update('defaultTaskColumn', v as SettingsState['defaultTaskColumn'])}>\n <option value=\"queued\">Backlog</option>\n <option value=\"doing\">In progress</option>\n <option value=\"blocked\">In review</option>\n <option value=\"done\">Done</option>\n </NativeSelect>\n }\n />\n <SettingsRow\n id=\"task-assignee\"\n label=\"Default assignee\"\n description=\"Auto-assigns new tasks to this agent (empty = unassigned).\"\n control={<Input placeholder=\"odin\" style={{ width: 240 }} />}\n />\n </SettingsSection>\n\n {/* 16. Agent defaults */}\n <SettingsSection id=\"agent-defaults\" title=\"Agent defaults\" description=\"Defaults applied when spawning agents.\" icon={<Bot size={14} aria-hidden />}>\n <SettingsRow\n id=\"agent-model\"\n label=\"Default model\"\n control={\n <Input value={settings.defaultAgentModel} onChange={(e) => update('defaultAgentModel', e.target.value)} style={{ width: 240 }} />\n }\n />\n <SettingsRow\n id=\"agent-mistakes\"\n label=\"Max consecutive mistakes\"\n description=\"Higher = more forgiving. Default 10.\"\n control={\n <Inline align=\"center\" gap={2}>\n <Slider\n value={[settings.defaultAgentMaxMistakes]}\n onValueChange={(v) => update('defaultAgentMaxMistakes', v[0] ?? 10)}\n min={3} max={20} step={1}\n />\n <code style={{ fontFamily: 'var(--font-mono)' }}>{settings.defaultAgentMaxMistakes}</code>\n </Inline>\n }\n />\n <SettingsRow id=\"agent-bg\" label=\"Spawn as background by default\" control={<Switch onCheckedChange={(v) => patch('agentBackgroundDefault', v)} />} />\n <SettingsRow id=\"agent-worktree\" label=\"Always create a worktree\" control={<Switch defaultChecked onCheckedChange={(v) => patch('agentWorktree', v)} />} />\n <SettingsRow\n id=\"agent-system-prompt\"\n label=\"Extra system prompt\"\n description=\"Appended to every agent's system prompt.\"\n control={<Textarea rows={3} placeholder=\"You are a careful, methodical engineer…\" />}\n />\n </SettingsSection>\n\n {/* 17. Privacy */}\n <SettingsSection id=\"privacy\" title=\"Privacy\" description=\"What the harness sends and stores.\" icon={<ShieldCheck size={14} aria-hidden />}>\n <SettingsRow\n id=\"privacy-analytics\"\n label=\"Anonymous analytics\"\n control={<Switch checked={settings.analytics} onCheckedChange={(v) => update('analytics', v)} />}\n />\n <SettingsRow\n id=\"privacy-crash\"\n label=\"Crash reports\"\n control={<Switch checked={settings.crashReports} onCheckedChange={(v) => update('crashReports', v)} />}\n />\n <SettingsRow\n id=\"privacy-pii\"\n label=\"PII handling\"\n description=\"How personal data is treated before persistence.\"\n control={\n <NativeSelect value={settings.piiMode} onChange={(v) => update('piiMode', v as SettingsState['piiMode'])}>\n <option value=\"off\">Off</option>\n <option value=\"redact\">Redact</option>\n <option value=\"pseudonymize\">Pseudonymize</option>\n <option value=\"block\">Block</option>\n </NativeSelect>\n }\n />\n <SettingsRow\n id=\"privacy-telemetry\"\n label=\"Send token usage telemetry\"\n control={<Switch onCheckedChange={(v) => patch('telemetryTokens', v)} />}\n />\n </SettingsSection>\n\n {/* 18. Advanced */}\n <SettingsSection id=\"advanced\" title=\"Advanced\" description=\"Power-user toggles. Touch with care.\" icon={<SettingsIcon size={14} aria-hidden />}>\n <SettingsRow\n id=\"advanced-reduced-motion\"\n label=\"Reduce motion\"\n control={<Switch checked={settings.reducedMotion} onCheckedChange={(v) => update('reducedMotion', v)} />}\n />\n <SettingsRow\n id=\"advanced-debug\"\n label=\"Debug overlay\"\n description=\"Show agent + tool call traces in the topbar.\"\n control={<Switch checked={settings.debugOverlay} onCheckedChange={(v) => update('debugOverlay', v)} />}\n />\n <SettingsRow\n id=\"advanced-restart\"\n label=\"Restart dashboard backend\"\n description=\"Stop and relaunch the local server. Unsaved tasks are safe on disk.\"\n control={\n <Inline align=\"center\" gap={2}>\n <Button variant=\"danger\"><RotateCw size={12} aria-hidden /> Restart…</Button>\n <Button variant=\"ghost\"><Plus size={12} aria-hidden /> Rebuild</Button>\n </Inline>\n }\n />\n <SettingsRow\n id=\"advanced-logs\"\n label=\"Open logs folder\"\n control={<Button variant=\"secondary\"><Trash2 size={12} aria-hidden /> Purge logs</Button>}\n />\n </SettingsSection>\n </Stack>\n </Grid>\n </div>\n );\n}"],"names":["Database","createLucideIcon","Keyboard","Palette","Plug","ShieldCheck","SlidersVertical","Sparkles","SettingsNav","props","items","activeId","onSelect","className","jsxs","cx","jsx","item","isActive","SECTIONS","SettingsIcon","Sliders","Terminal","Bell","Cpu","LibraryIcon","Wrench","Activity","Brain","CheckSquare","Bot","DEFAULTS","SELECT_STYLE","NativeSelect","value","defaultValue","onChange","children","e","Count","loading","Skeleton","SettingsView","setActiveId","useState","theme","useTheme","density","useDensity","settings","setSettings","savedAt","setSavedAt","error","setError","skillsRes","useFetch","mcpsRes","hooksRes","agentsRes","settingsRes","useEffect","prev","update","key","s","patch","merged","fetchJson","err","FetchError","navItems","handleSelect","id","_a","rootRef","useRef","targets","el","visible","observer","entries","entry","bestId","bestRatio","ratio","t","Grid","Stack","Inline","SettingsSection","SettingsRow","Input","v","Slider","Switch","Button","_b","_c","a","Badge","_e","_d","_f","m","_h","_g","_i","_k","_j","Textarea","RotateCw","Plus","Trash2"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e,g as c,r as h,D as g,b as p,c as v,d as x,e as f,f as m}from"./cmdk-D15rXxc5.js";import{X as b,c as u}from"./main-CCimEcWH.js";const D=({children:t,...r})=>e.jsx(c,{...r,children:t}),j={top:{top:0,left:0,right:0,height:"60vh",borderBottom:"1px solid var(--border)",borderRadius:"0 0 var(--radius-lg) var(--radius-lg)"},right:{top:0,right:0,bottom:0,width:"min(560px, 100vw)",borderLeft:"1px solid var(--border)"},bottom:{bottom:0,left:0,right:0,height:"60vh",borderTop:"1px solid var(--border)",borderRadius:"var(--radius-lg) var(--radius-lg) 0 0"},left:{top:0,left:0,bottom:0,width:"min(560px, 100vw)",borderRight:"1px solid var(--border)"}},S=h.forwardRef(function(r,s){const{className:i,side:o="right",title:d,description:a,children:l,...n}=r;return e.jsxs(g,{children:[e.jsx(p,{style:{position:"fixed",inset:0,background:"oklch(0 0 0 / 0.4)",zIndex:"var(--z-modal)"}}),e.jsxs(v,{ref:s,"data-side":o,className:u("v8-sheet",i),style:{position:"fixed",background:"var(--surface-popover)",padding:"var(--space-6)",overflow:"auto",boxShadow:"var(--shadow-4)",zIndex:"calc(var(--z-modal) + 1)",...j[o]},...n,children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"var(--space-4)"},children:[e.jsxs("div",{children:[e.jsx(x,{style:{fontSize:"var(--fs-18)",fontWeight:600},children:d}),a!==void 0&&e.jsx(f,{style:{fontSize:"var(--fs-13)",color:"var(--fg-muted)",marginTop:"var(--space-1)"},children:a})]}),e.jsx(m,{"aria-label":"Close",style:{width:28,height:28,display:"inline-flex",alignItems:"center",justifyContent:"center",background:"transparent",border:0,borderRadius:"var(--radius-sm)",color:"var(--fg-muted)",cursor:"pointer"},children:e.jsx(b,{size:16,"aria-hidden":"true"})})]}),l]})]})});export{D as S,S as a};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sheet-Cmu_4Zea.js","sources":["../../src/web/v8/ui/feedback/Sheet.tsx"],"sourcesContent":["import { forwardRef, type ComponentPropsWithoutRef, type ReactNode } from 'react';\nimport * as RxDialog from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport { cx } from '../utils/cx.js';\n\n/**\n * Sheet — a side-anchored panel.\n *\n * Use for: task detail, agent detail, settings panels (mobile), kanban card\n * expanded. Use a Dialog when the content is best presented centered.\n */\n\nexport type SheetSide = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface SheetProps extends Omit<ComponentPropsWithoutRef<typeof RxDialog.Root>, 'children'> {\n children: ReactNode;\n}\n\nexport const Sheet = ({ children, ...rest }: SheetProps) => (\n <RxDialog.Root {...rest}>{children}</RxDialog.Root>\n);\n\nexport const SheetTrigger = RxDialog.Trigger;\nexport const SheetClose = RxDialog.Close;\n\nexport interface SheetContentProps extends ComponentPropsWithoutRef<typeof RxDialog.Content> {\n side?: SheetSide;\n title: string;\n description?: string;\n children: ReactNode;\n}\n\nconst SIDE_STYLE: Record<SheetSide, React.CSSProperties> = {\n top: { top: 0, left: 0, right: 0, height: '60vh', borderBottom: '1px solid var(--border)', borderRadius: '0 0 var(--radius-lg) var(--radius-lg)' },\n right: { top: 0, right: 0, bottom: 0, width: 'min(560px, 100vw)', borderLeft: '1px solid var(--border)' },\n bottom: { bottom: 0, left: 0, right: 0, height: '60vh', borderTop: '1px solid var(--border)', borderRadius: 'var(--radius-lg) var(--radius-lg) 0 0' },\n left: { top: 0, left: 0, bottom: 0, width: 'min(560px, 100vw)', borderRight: '1px solid var(--border)' },\n};\n\nexport const SheetContent = forwardRef<HTMLDivElement, SheetContentProps>(function SheetContent(\n props,\n ref,\n) {\n const { className, side = 'right', title, description, children, ...rest } = props;\n return (\n <RxDialog.Portal>\n <RxDialog.Overlay\n style={{\n position: 'fixed',\n inset: 0,\n background: 'oklch(0 0 0 / 0.4)',\n zIndex: 'var(--z-modal)',\n }}\n />\n <RxDialog.Content\n ref={ref}\n data-side={side}\n className={cx('v8-sheet', className)}\n style={{\n position: 'fixed',\n background: 'var(--surface-popover)',\n padding: 'var(--space-6)',\n overflow: 'auto',\n boxShadow: 'var(--shadow-4)',\n zIndex: 'calc(var(--z-modal) + 1)',\n ...SIDE_STYLE[side],\n }}\n {...rest}\n >\n <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 'var(--space-4)' }}>\n <div>\n <RxDialog.Title style={{ fontSize: 'var(--fs-18)', fontWeight: 600 }}>{title}</RxDialog.Title>\n {description !== undefined && (\n <RxDialog.Description\n style={{ fontSize: 'var(--fs-13)', color: 'var(--fg-muted)', marginTop: 'var(--space-1)' }}\n >\n {description}\n </RxDialog.Description>\n )}\n </div>\n <RxDialog.Close\n aria-label=\"Close\"\n style={{\n width: 28,\n height: 28,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'transparent',\n border: 0,\n borderRadius: 'var(--radius-sm)',\n color: 'var(--fg-muted)',\n cursor: 'pointer',\n }}\n >\n <X size={16} aria-hidden=\"true\" />\n </RxDialog.Close>\n </div>\n {children}\n </RxDialog.Content>\n </RxDialog.Portal>\n );\n});"],"names":["Sheet","children","rest","jsx","RxDialog.Root","SIDE_STYLE","SheetContent","forwardRef","props","ref","className","side","title","description","jsxs","RxDialog.Portal","RxDialog.Overlay","RxDialog.Content","cx","RxDialog.Title","RxDialog.Description","RxDialog.Close","X"],"mappings":"6IAkBO,MAAMA,EAAQ,CAAC,CAAE,SAAAC,EAAU,GAAGC,CAAA,IACnCC,EAAAA,IAACC,EAAA,CAAe,GAAGF,EAAO,SAAAD,CAAA,CAAS,EAa/BI,EAAqD,CACzD,IAAK,CAAE,IAAK,EAAG,KAAM,EAAG,MAAO,EAAG,OAAQ,OAAQ,aAAc,0BAA2B,aAAc,uCAAA,EACzG,MAAO,CAAE,IAAK,EAAG,MAAO,EAAG,OAAQ,EAAG,MAAO,oBAAqB,WAAY,yBAAA,EAC9E,OAAQ,CAAE,OAAQ,EAAG,KAAM,EAAG,MAAO,EAAG,OAAQ,OAAQ,UAAW,0BAA2B,aAAc,uCAAA,EAC5G,KAAM,CAAE,IAAK,EAAG,KAAM,EAAG,OAAQ,EAAG,MAAO,oBAAqB,YAAa,yBAAA,CAC/E,EAEaC,EAAeC,EAAAA,WAA8C,SACxEC,EACAC,EACA,CACA,KAAM,CAAE,UAAAC,EAAW,KAAAC,EAAO,QAAS,MAAAC,EAAO,YAAAC,EAAa,SAAAZ,EAAU,GAAGC,CAAA,EAASM,EAC7E,OACEM,EAAAA,KAACC,EAAA,CACC,SAAA,CAAAZ,EAAAA,IAACa,EAAA,CACC,MAAO,CACL,SAAU,QACV,MAAO,EACP,WAAY,qBACZ,OAAQ,gBAAA,CACV,CAAA,EAEFF,EAAAA,KAACG,EAAA,CACC,IAAAR,EACA,YAAWE,EACX,UAAWO,EAAG,WAAYR,CAAS,EACnC,MAAO,CACL,SAAU,QACV,WAAY,yBACZ,QAAS,iBACT,SAAU,OACV,UAAW,kBACX,OAAQ,2BACR,GAAGL,EAAWM,CAAI,CAAA,EAEnB,GAAGT,EAEJ,SAAA,CAAAY,EAAAA,KAAC,MAAA,CAAI,MAAO,CAAE,QAAS,OAAQ,WAAY,SAAU,eAAgB,gBAAiB,aAAc,gBAAA,EAClG,SAAA,CAAAA,OAAC,MAAA,CACC,SAAA,CAAAX,EAAAA,IAACgB,EAAA,CAAe,MAAO,CAAE,SAAU,eAAgB,WAAY,GAAA,EAAQ,SAAAP,CAAA,CAAM,EAC5EC,IAAgB,QACfV,EAAAA,IAACiB,EAAA,CACC,MAAO,CAAE,SAAU,eAAgB,MAAO,kBAAmB,UAAW,gBAAA,EAEvE,SAAAP,CAAA,CAAA,CACH,EAEJ,EACAV,EAAAA,IAACkB,EAAA,CACC,aAAW,QACX,MAAO,CACL,MAAO,GACP,OAAQ,GACR,QAAS,cACT,WAAY,SACZ,eAAgB,SAChB,WAAY,cACZ,OAAQ,EACR,aAAc,mBACd,MAAO,kBACP,OAAQ,SAAA,EAGV,SAAAlB,EAAAA,IAACmB,EAAA,CAAE,KAAM,GAAI,cAAY,MAAA,CAAO,CAAA,CAAA,CAClC,EACF,EACCrB,CAAA,CAAA,CAAA,CACH,EACF,CAEJ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as d,i as V,u as we,j as f,k as T,h as N,l as Re}from"./cmdk-D15rXxc5.js";import{c as ye,u as Pe,a as q}from"./index-C0JBGB5M.js";import{a as Ee,u as _e}from"./index-CrWI7sQR.js";import{c as Ce}from"./main-CCimEcWH.js";var J=["PageUp","PageDown"],Q=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Z={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},A="Slider",[z,De,Me]=ye(A),[U]=Re(A,[Me]),[Te,B]=U(A),ee=d.forwardRef((e,t)=>{const{name:n,min:r=0,max:s=100,step:o=1,orientation:c="horizontal",disabled:i=!1,minStepsBetweenThumbs:m=0,defaultValue:l=[r],value:p,onValueChange:a=()=>{},onValueCommit:u=()=>{},inverted:v=!1,form:b,...S}=e,x=d.useRef(new Set),g=d.useRef(0),y=d.useRef(!1),P=c==="horizontal"?Ve:Ae,[R,$]=d.useState(null),H=V(t,$),[_=[],F]=we({prop:p,defaultProp:l,onChange:h=>{var D;(D=[...x.current][g.current])==null||D.focus({preventScroll:!0,focusVisible:y.current}),y.current=!1,a(h)}}),G=d.useRef(_),ge=d.useRef(_);d.useEffect(()=>{const h=b?R==null?void 0:R.ownerDocument.getElementById(b):R==null?void 0:R.closest("form");if(h instanceof HTMLFormElement){const E=()=>F(ge.current);return h.addEventListener("reset",E),()=>h.removeEventListener("reset",E)}},[R,b,F]);function ve(h){const E=Be(_,h);j(h,E)}function xe(h){j(h,g.current)}function be(){const h=G.current[g.current];_[g.current]!==h&&u(_)}function j(h,E,{commit:D}={commit:!1}){const X=Se(o),L=k(Math.round((h-r)/o)*o+r,X),I=q(L,[r,s]);F((M=[])=>{const C=Ie(M,I,E);if(He(C,m*o)){g.current=C.indexOf(I);const W=String(C)!==String(M);return W&&D&&u(C),W?C:M}else return M})}return f.jsx(Te,{scope:e.__scopeSlider,name:n,disabled:i,min:r,max:s,valueIndexToChangeRef:g,thumbs:x.current,values:_,orientation:c,form:b,children:f.jsx(z.Provider,{scope:e.__scopeSlider,children:f.jsx(z.Slot,{scope:e.__scopeSlider,children:f.jsx(P,{"aria-disabled":i,"data-disabled":i?"":void 0,...S,ref:H,onPointerDown:T(S.onPointerDown,()=>{i||(G.current=_,y.current=!1)}),min:r,max:s,inverted:v,onSlideStart:i?void 0:ve,onSlideMove:i?void 0:xe,onSlideEnd:i?void 0:be,onHomeKeyDown:()=>{i||(y.current=!0,j(r,0,{commit:!0}))},onEndKeyDown:()=>{i||(y.current=!0,j(s,_.length-1,{commit:!0}))},onStepKeyDown:({event:h,direction:E})=>{if(!i){y.current=!0;const L=J.includes(h.key)||h.shiftKey&&Q.includes(h.key)?10:1,I=g.current,M=_[I],C=Fe(M,{min:r,step:o,direction:E,multiplier:L});j(C,I,{commit:!0})}}})})})})});ee.displayName=A;var[te,ne]=U(A,{startEdge:"left",endEdge:"right",size:"width",direction:1}),Ve=d.forwardRef((e,t)=>{const{min:n,max:r,dir:s,inverted:o,onSlideStart:c,onSlideMove:i,onSlideEnd:m,onStepKeyDown:l,...p}=e,[a,u]=d.useState(null),v=V(t,u),b=d.useRef(void 0),S=Pe(s),x=S==="ltr",g=x&&!o||!x&&o;function y(w){const P=b.current||a.getBoundingClientRect(),R=[0,P.width],H=Y(R,g?[n,r]:[r,n]);return b.current=P,H(w-P.left)}return f.jsx(te,{scope:e.__scopeSlider,startEdge:g?"left":"right",endEdge:g?"right":"left",direction:g?1:-1,size:"width",children:f.jsx(re,{dir:S,"data-orientation":"horizontal",...p,ref:v,style:{...p.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:w=>{const P=y(w.clientX);c==null||c(P)},onSlideMove:w=>{const P=y(w.clientX);i==null||i(P)},onSlideEnd:()=>{b.current=void 0,m==null||m()},onStepKeyDown:w=>{const R=Z[g?"from-left":"from-right"].includes(w.key);l==null||l({event:w,direction:R?-1:1})}})})}),Ae=d.forwardRef((e,t)=>{const{min:n,max:r,inverted:s,onSlideStart:o,onSlideMove:c,onSlideEnd:i,onStepKeyDown:m,...l}=e,p=d.useRef(null),a=V(t,p),u=d.useRef(void 0),v=!s;function b(S){const x=u.current||p.current.getBoundingClientRect(),g=[0,x.height],w=Y(g,v?[r,n]:[n,r]);return u.current=x,w(S-x.top)}return f.jsx(te,{scope:e.__scopeSlider,startEdge:v?"bottom":"top",endEdge:v?"top":"bottom",size:"height",direction:v?1:-1,children:f.jsx(re,{"data-orientation":"vertical",...l,ref:a,style:{...l.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:S=>{const x=b(S.clientY);o==null||o(x)},onSlideMove:S=>{const x=b(S.clientY);c==null||c(x)},onSlideEnd:()=>{u.current=void 0,i==null||i()},onStepKeyDown:S=>{const g=Z[v?"from-bottom":"from-top"].includes(S.key);m==null||m({event:S,direction:g?-1:1})}})})}),re=d.forwardRef((e,t)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:s,onSlideEnd:o,onHomeKeyDown:c,onEndKeyDown:i,onStepKeyDown:m,...l}=e,p=B(A,n);return f.jsx(N.span,{...l,ref:t,onKeyDown:T(e.onKeyDown,a=>{a.key==="Home"?(c(a),a.preventDefault()):a.key==="End"?(i(a),a.preventDefault()):J.concat(Q).includes(a.key)&&(m(a),a.preventDefault())}),onPointerDown:T(e.onPointerDown,a=>{const u=a.target;u.setPointerCapture(a.pointerId),a.preventDefault(),p.thumbs.has(u)?u.focus({preventScroll:!0,focusVisible:!1}):r(a)}),onPointerMove:T(e.onPointerMove,a=>{a.target.hasPointerCapture(a.pointerId)&&s(a)}),onPointerUp:T(e.onPointerUp,a=>{const u=a.target;u.hasPointerCapture(a.pointerId)&&(u.releasePointerCapture(a.pointerId),o(a))})})}),oe="SliderTrack",se=d.forwardRef((e,t)=>{const{__scopeSlider:n,...r}=e,s=B(oe,n);return f.jsx(N.span,{"data-disabled":s.disabled?"":void 0,"data-orientation":s.orientation,...r,ref:t})});se.displayName=oe;var O="SliderRange",ie=d.forwardRef((e,t)=>{const{__scopeSlider:n,...r}=e,s=B(O,n),o=ne(O,n),c=d.useRef(null),i=V(t,c),m=s.values.length,l=s.values.map(u=>pe(u,s.min,s.max)),p=m>1?Math.min(...l):0,a=100-Math.max(...l);return f.jsx(N.span,{"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,...r,ref:i,style:{...e.style,[o.startEdge]:p+"%",[o.endEdge]:a+"%"}})});ie.displayName=O;var ae="SliderThumb",[je,ce]=U(ae),le="SliderThumbProvider";function ue(e){const{__scopeSlider:t,name:n,children:r,internal_do_not_use_render:s}=e,o=B(le,t),c=De(t),[i,m]=d.useState(null),l=d.useMemo(()=>i?c().findIndex(x=>x.ref.current===i):-1,[c,i]),p=Ee(i),a=i?!!o.form||!!i.closest("form"):!0,u=o.values[l],v=n??(o.name?o.name+(o.values.length>1?"[]":""):void 0),b=u===void 0?0:pe(u,o.min,o.max);d.useEffect(()=>{if(i)return o.thumbs.add(i),()=>{o.thumbs.delete(i)}},[i,o.thumbs]);const S={value:u,name:v,form:o.form,isFormControl:a,index:l,thumb:i,onThumbChange:m,percent:b,size:p};return f.jsx(je,{scope:t,...S,children:Le(s)?s(S):r})}ue.displayName=le;var K="SliderThumbTrigger",de=d.forwardRef((e,t)=>{const{__scopeSlider:n,...r}=e,s=B(K,n),o=ne(K,n),{index:c,value:i,percent:m,size:l,onThumbChange:p}=ce(K,n),a=V(t,p),u=Ne(c,s.values.length),v=l==null?void 0:l[o.size],b=v?Ke(v,m,o.direction):0;return f.jsx("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[o.startEdge]:`calc(${m}% + ${b}px)`},children:f.jsx(z.ItemSlot,{scope:n,children:f.jsx(N.span,{role:"slider","aria-label":e["aria-label"]||u,"aria-valuemin":s.min,"aria-valuenow":i,"aria-valuemax":s.max,"aria-orientation":s.orientation,"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,tabIndex:s.disabled?void 0:0,...r,ref:a,style:i===void 0?{display:"none"}:e.style,onFocus:T(e.onFocus,()=>{s.valueIndexToChangeRef.current=c})})})})});de.displayName=K;var fe=d.forwardRef((e,t)=>{const{__scopeSlider:n,name:r,...s}=e;return f.jsx(ue,{__scopeSlider:n,name:r,internal_do_not_use_render:({index:o,isFormControl:c})=>f.jsxs(f.Fragment,{children:[f.jsx(de,{...s,ref:t,__scopeSlider:n}),c?f.jsx(he,{__scopeSlider:n},o):null]})})});fe.displayName=ae;var me="SliderBubbleInput",he=d.forwardRef(({__scopeSlider:e,...t},n)=>{const{value:r,name:s,form:o}=ce(me,e),c=d.useRef(null),i=V(c,n),m=_e(r);return d.useEffect(()=>{const l=c.current;if(!l)return;const p=window.HTMLInputElement.prototype,u=Object.getOwnPropertyDescriptor(p,"value").set;if(m!==r&&u){const v=new Event("input",{bubbles:!0});u.call(l,r),l.dispatchEvent(v)}},[m,r]),f.jsx(N.input,{style:{display:"none"},name:s,form:o,...t,ref:i,defaultValue:r})});he.displayName=me;function Ie(e=[],t,n){const r=[...e];return r[n]=t,r.sort((s,o)=>s-o)}function pe(e,t,n){const o=100/(n-t)*(e-t);return q(o,[0,100])}function Ne(e,t){return t>2?`Value ${e+1} of ${t}`:t===2?["Minimum","Maximum"][e]:void 0}function Be(e,t){if(e.length===1)return 0;const n=e.map(s=>Math.abs(s-t)),r=Math.min(...n);return n.indexOf(r)}function Ke(e,t,n){const r=e/2,o=Y([0,50],[0,r]);return(r-o(t)*n)*n}function ke(e){return e.slice(0,-1).map((t,n)=>e[n+1]-t)}function He(e,t){if(t>0){const n=ke(e);return Math.min(...n)>=t}return!0}function Y(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}function Se(e){if(!Number.isFinite(e))return 0;const t=e.toString();if(t.includes("e")){const[r,s]=t.split("e"),o=r.split(".")[1]||"",c=Number(s);return Math.max(0,o.length-c)}const n=t.split(".")[1];return n?n.length:0}function k(e,t){const n=Math.pow(10,t);return Math.round(e*n)/n}function Fe(e,{min:t,step:n,direction:r,multiplier:s}){const o=Se(n),c=(e-t)/n,i=Math.round(c),m=k(i*n+t,o)===k(e,o);let l;return m?l=i+s*r:r>0?l=Math.ceil(c):l=Math.floor(c),k(l*n+t,o)}function Le(e){return typeof e=="function"}const $e=d.forwardRef(function(t,n){const{className:r,...s}=t;return f.jsxs(ee,{ref:n,className:Ce("v8-slider",r),style:{position:"relative",display:"flex",alignItems:"center",userSelect:"none",touchAction:"none",width:"100%",height:20},...s,children:[f.jsx(se,{style:{background:"var(--surface-2)",position:"relative",flexGrow:1,borderRadius:"var(--radius-pill)",height:4},children:f.jsx(ie,{style:{position:"absolute",background:"var(--accent)",borderRadius:"var(--radius-pill)",height:"100%"}})}),(Array.isArray(t.value??t.defaultValue)?t.value??t.defaultValue??[]:[t.value??t.defaultValue??0]).map((o,c)=>f.jsx(fe,{"aria-label":t["aria-label"]??`Thumb ${c+1}`,style:{display:"block",width:14,height:14,background:"var(--fg)",border:"2px solid var(--accent)",borderRadius:"var(--radius-pill)",cursor:"grab",boxShadow:"var(--shadow-1)"}},c))]})});export{$e as S};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Slider-B_jPr-SR.js","sources":["../../../node_modules/@radix-ui/react-slider/dist/index.mjs","../../src/web/v8/ui/controls/Slider.tsx"],"sourcesContent":["\"use client\";\n\n// src/slider.tsx\nimport * as React from \"react\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar PAGE_KEYS = [\"PageUp\", \"PageDown\"];\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar BACK_KEYS = {\n \"from-left\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowLeft\"],\n \"from-right\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowRight\"],\n \"from-bottom\": [\"Home\", \"PageDown\", \"ArrowDown\", \"ArrowLeft\"],\n \"from-top\": [\"Home\", \"PageDown\", \"ArrowUp\", \"ArrowLeft\"]\n};\nvar SLIDER_NAME = \"Slider\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SLIDER_NAME);\nvar [createSliderContext, createSliderScope] = createContextScope(SLIDER_NAME, [\n createCollectionScope\n]);\nvar [SliderProvider, useSliderContext] = createSliderContext(SLIDER_NAME);\nvar Slider = React.forwardRef(\n (props, forwardedRef) => {\n const {\n name,\n min = 0,\n max = 100,\n step = 1,\n orientation = \"horizontal\",\n disabled = false,\n minStepsBetweenThumbs = 0,\n defaultValue = [min],\n value,\n onValueChange = () => {\n },\n onValueCommit = () => {\n },\n inverted = false,\n form,\n ...sliderProps\n } = props;\n const thumbRefs = React.useRef(/* @__PURE__ */ new Set());\n const valueIndexToChangeRef = React.useRef(0);\n const isKeyboardInteractionRef = React.useRef(false);\n const isHorizontal = orientation === \"horizontal\";\n const SliderOrientation = isHorizontal ? SliderHorizontal : SliderVertical;\n const [control, setControl] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, setControl);\n const [values = [], setValues] = useControllableState({\n prop: value,\n defaultProp: defaultValue,\n onChange: (value2) => {\n const thumbs = [...thumbRefs.current];\n thumbs[valueIndexToChangeRef.current]?.focus({\n preventScroll: true,\n focusVisible: isKeyboardInteractionRef.current\n });\n isKeyboardInteractionRef.current = false;\n onValueChange(value2);\n }\n });\n const valuesBeforeSlideStartRef = React.useRef(values);\n const initialValuesRef = React.useRef(values);\n React.useEffect(() => {\n const associatedForm = form ? control?.ownerDocument.getElementById(form) : control?.closest(\"form\");\n if (associatedForm instanceof HTMLFormElement) {\n const reset = () => setValues(initialValuesRef.current);\n associatedForm.addEventListener(\"reset\", reset);\n return () => associatedForm.removeEventListener(\"reset\", reset);\n }\n }, [control, form, setValues]);\n function handleSlideStart(value2) {\n const closestIndex = getClosestValueIndex(values, value2);\n updateValues(value2, closestIndex);\n }\n function handleSlideMove(value2) {\n updateValues(value2, valueIndexToChangeRef.current);\n }\n function handleSlideEnd() {\n const prevValue = valuesBeforeSlideStartRef.current[valueIndexToChangeRef.current];\n const nextValue = values[valueIndexToChangeRef.current];\n const hasChanged = nextValue !== prevValue;\n if (hasChanged) onValueCommit(values);\n }\n function updateValues(value2, atIndex, { commit } = { commit: false }) {\n const decimalCount = getDecimalCount(step);\n const snapToStep = roundValue(Math.round((value2 - min) / step) * step + min, decimalCount);\n const nextValue = clamp(snapToStep, [min, max]);\n setValues((prevValues = []) => {\n const nextValues = getNextSortedValues(prevValues, nextValue, atIndex);\n if (hasMinStepsBetweenValues(nextValues, minStepsBetweenThumbs * step)) {\n valueIndexToChangeRef.current = nextValues.indexOf(nextValue);\n const hasChanged = String(nextValues) !== String(prevValues);\n if (hasChanged && commit) onValueCommit(nextValues);\n return hasChanged ? nextValues : prevValues;\n } else {\n return prevValues;\n }\n });\n }\n return /* @__PURE__ */ jsx(\n SliderProvider,\n {\n scope: props.__scopeSlider,\n name,\n disabled,\n min,\n max,\n valueIndexToChangeRef,\n thumbs: thumbRefs.current,\n values,\n orientation,\n form,\n children: /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSlider, children: /* @__PURE__ */ jsx(\n SliderOrientation,\n {\n \"aria-disabled\": disabled,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...sliderProps,\n ref: composedRefs,\n onPointerDown: composeEventHandlers(sliderProps.onPointerDown, () => {\n if (!disabled) {\n valuesBeforeSlideStartRef.current = values;\n isKeyboardInteractionRef.current = false;\n }\n }),\n min,\n max,\n inverted,\n onSlideStart: disabled ? void 0 : handleSlideStart,\n onSlideMove: disabled ? void 0 : handleSlideMove,\n onSlideEnd: disabled ? void 0 : handleSlideEnd,\n onHomeKeyDown: () => {\n if (!disabled) {\n isKeyboardInteractionRef.current = true;\n updateValues(min, 0, { commit: true });\n }\n },\n onEndKeyDown: () => {\n if (!disabled) {\n isKeyboardInteractionRef.current = true;\n updateValues(max, values.length - 1, { commit: true });\n }\n },\n onStepKeyDown: ({ event, direction: stepDirection }) => {\n if (!disabled) {\n isKeyboardInteractionRef.current = true;\n const isPageKey = PAGE_KEYS.includes(event.key);\n const isSkipKey = isPageKey || event.shiftKey && ARROW_KEYS.includes(event.key);\n const multiplier = isSkipKey ? 10 : 1;\n const atIndex = valueIndexToChangeRef.current;\n const value2 = values[atIndex];\n const nextValue = getNextStepValue(value2, {\n min,\n step,\n direction: stepDirection,\n multiplier\n });\n updateValues(nextValue, atIndex, { commit: true });\n }\n }\n }\n ) }) })\n }\n );\n }\n);\nSlider.displayName = SLIDER_NAME;\nvar [SliderOrientationProvider, useSliderOrientationContext] = createSliderContext(SLIDER_NAME, {\n startEdge: \"left\",\n endEdge: \"right\",\n size: \"width\",\n direction: 1\n});\nvar SliderHorizontal = React.forwardRef(\n (props, forwardedRef) => {\n const {\n min,\n max,\n dir,\n inverted,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const [slider, setSlider] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, setSlider);\n const rectRef = React.useRef(void 0);\n const direction = useDirection(dir);\n const isDirectionLTR = direction === \"ltr\";\n const isSlidingFromLeft = isDirectionLTR && !inverted || !isDirectionLTR && inverted;\n function getValueFromPointer(pointerPosition) {\n const rect = rectRef.current || slider.getBoundingClientRect();\n const input = [0, rect.width];\n const output = isSlidingFromLeft ? [min, max] : [max, min];\n const value = linearScale(input, output);\n rectRef.current = rect;\n return value(pointerPosition - rect.left);\n }\n return /* @__PURE__ */ jsx(\n SliderOrientationProvider,\n {\n scope: props.__scopeSlider,\n startEdge: isSlidingFromLeft ? \"left\" : \"right\",\n endEdge: isSlidingFromLeft ? \"right\" : \"left\",\n direction: isSlidingFromLeft ? 1 : -1,\n size: \"width\",\n children: /* @__PURE__ */ jsx(\n SliderImpl,\n {\n dir: direction,\n \"data-orientation\": \"horizontal\",\n ...sliderProps,\n ref: composedRefs,\n style: {\n ...sliderProps.style,\n \"--radix-slider-thumb-transform\": \"translateX(-50%)\"\n },\n onSlideStart: (event) => {\n const value = getValueFromPointer(event.clientX);\n onSlideStart?.(value);\n },\n onSlideMove: (event) => {\n const value = getValueFromPointer(event.clientX);\n onSlideMove?.(value);\n },\n onSlideEnd: () => {\n rectRef.current = void 0;\n onSlideEnd?.();\n },\n onStepKeyDown: (event) => {\n const slideDirection = isSlidingFromLeft ? \"from-left\" : \"from-right\";\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n }\n }\n )\n }\n );\n }\n);\nvar SliderVertical = React.forwardRef(\n (props, forwardedRef) => {\n const {\n min,\n max,\n inverted,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const sliderRef = React.useRef(null);\n const ref = useComposedRefs(forwardedRef, sliderRef);\n const rectRef = React.useRef(void 0);\n const isSlidingFromBottom = !inverted;\n function getValueFromPointer(pointerPosition) {\n const rect = rectRef.current || sliderRef.current.getBoundingClientRect();\n const input = [0, rect.height];\n const output = isSlidingFromBottom ? [max, min] : [min, max];\n const value = linearScale(input, output);\n rectRef.current = rect;\n return value(pointerPosition - rect.top);\n }\n return /* @__PURE__ */ jsx(\n SliderOrientationProvider,\n {\n scope: props.__scopeSlider,\n startEdge: isSlidingFromBottom ? \"bottom\" : \"top\",\n endEdge: isSlidingFromBottom ? \"top\" : \"bottom\",\n size: \"height\",\n direction: isSlidingFromBottom ? 1 : -1,\n children: /* @__PURE__ */ jsx(\n SliderImpl,\n {\n \"data-orientation\": \"vertical\",\n ...sliderProps,\n ref,\n style: {\n ...sliderProps.style,\n \"--radix-slider-thumb-transform\": \"translateY(50%)\"\n },\n onSlideStart: (event) => {\n const value = getValueFromPointer(event.clientY);\n onSlideStart?.(value);\n },\n onSlideMove: (event) => {\n const value = getValueFromPointer(event.clientY);\n onSlideMove?.(value);\n },\n onSlideEnd: () => {\n rectRef.current = void 0;\n onSlideEnd?.();\n },\n onStepKeyDown: (event) => {\n const slideDirection = isSlidingFromBottom ? \"from-bottom\" : \"from-top\";\n const isBackKey = BACK_KEYS[slideDirection].includes(event.key);\n onStepKeyDown?.({ event, direction: isBackKey ? -1 : 1 });\n }\n }\n )\n }\n );\n }\n);\nvar SliderImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSlider,\n onSlideStart,\n onSlideMove,\n onSlideEnd,\n onHomeKeyDown,\n onEndKeyDown,\n onStepKeyDown,\n ...sliderProps\n } = props;\n const context = useSliderContext(SLIDER_NAME, __scopeSlider);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...sliderProps,\n ref: forwardedRef,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Home\") {\n onHomeKeyDown(event);\n event.preventDefault();\n } else if (event.key === \"End\") {\n onEndKeyDown(event);\n event.preventDefault();\n } else if (PAGE_KEYS.concat(ARROW_KEYS).includes(event.key)) {\n onStepKeyDown(event);\n event.preventDefault();\n }\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n const target = event.target;\n target.setPointerCapture(event.pointerId);\n event.preventDefault();\n if (context.thumbs.has(target)) {\n target.focus({ preventScroll: true, focusVisible: false });\n } else {\n onSlideStart(event);\n }\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) onSlideMove(event);\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n onSlideEnd(event);\n }\n })\n }\n );\n }\n);\nvar TRACK_NAME = \"SliderTrack\";\nvar SliderTrack = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSlider, ...trackProps } = props;\n const context = useSliderContext(TRACK_NAME, __scopeSlider);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-disabled\": context.disabled ? \"\" : void 0,\n \"data-orientation\": context.orientation,\n ...trackProps,\n ref: forwardedRef\n }\n );\n }\n);\nSliderTrack.displayName = TRACK_NAME;\nvar RANGE_NAME = \"SliderRange\";\nvar SliderRange = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSlider, ...rangeProps } = props;\n const context = useSliderContext(RANGE_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(RANGE_NAME, __scopeSlider);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const valuesCount = context.values.length;\n const percentages = context.values.map(\n (value) => convertValueToPercentage(value, context.min, context.max)\n );\n const offsetStart = valuesCount > 1 ? Math.min(...percentages) : 0;\n const offsetEnd = 100 - Math.max(...percentages);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-orientation\": context.orientation,\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...rangeProps,\n ref: composedRefs,\n style: {\n ...props.style,\n [orientation.startEdge]: offsetStart + \"%\",\n [orientation.endEdge]: offsetEnd + \"%\"\n }\n }\n );\n }\n);\nSliderRange.displayName = RANGE_NAME;\nvar THUMB_NAME = \"SliderThumb\";\nvar [SliderThumbContextProvider, useSliderThumbContext] = createSliderContext(THUMB_NAME);\nvar THUMB_PROVIDER_NAME = \"SliderThumbProvider\";\nfunction SliderThumbProvider(props) {\n const {\n __scopeSlider,\n name,\n children,\n // @ts-expect-error internal render prop\n internal_do_not_use_render\n } = props;\n const context = useSliderContext(THUMB_PROVIDER_NAME, __scopeSlider);\n const getItems = useCollection(__scopeSlider);\n const [thumb, setThumb] = React.useState(null);\n const index = React.useMemo(\n () => thumb ? getItems().findIndex((item) => item.ref.current === thumb) : -1,\n [getItems, thumb]\n );\n const size = useSize(thumb);\n const isFormControl = thumb ? !!context.form || !!thumb.closest(\"form\") : true;\n const value = context.values[index];\n const resolvedName = name ?? (context.name ? context.name + (context.values.length > 1 ? \"[]\" : \"\") : void 0);\n const percent = value === void 0 ? 0 : convertValueToPercentage(value, context.min, context.max);\n React.useEffect(() => {\n if (thumb) {\n context.thumbs.add(thumb);\n return () => {\n context.thumbs.delete(thumb);\n };\n }\n }, [thumb, context.thumbs]);\n const thumbContext = {\n value,\n name: resolvedName,\n form: context.form,\n isFormControl,\n index,\n thumb,\n onThumbChange: setThumb,\n percent,\n size\n };\n return /* @__PURE__ */ jsx(SliderThumbContextProvider, { scope: __scopeSlider, ...thumbContext, children: isFunction(internal_do_not_use_render) ? internal_do_not_use_render(thumbContext) : children });\n}\nSliderThumbProvider.displayName = THUMB_PROVIDER_NAME;\nvar THUMB_TRIGGER_NAME = \"SliderThumbTrigger\";\nvar SliderThumbTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSlider, ...thumbProps } = props;\n const context = useSliderContext(THUMB_TRIGGER_NAME, __scopeSlider);\n const orientation = useSliderOrientationContext(THUMB_TRIGGER_NAME, __scopeSlider);\n const { index, value, percent, size, onThumbChange } = useSliderThumbContext(\n THUMB_TRIGGER_NAME,\n __scopeSlider\n );\n const composedRefs = useComposedRefs(forwardedRef, onThumbChange);\n const label = getLabel(index, context.values.length);\n const orientationSize = size?.[orientation.size];\n const thumbInBoundsOffset = orientationSize ? getThumbInBoundsOffset(orientationSize, percent, orientation.direction) : 0;\n return /* @__PURE__ */ jsx(\n \"span\",\n {\n style: {\n transform: \"var(--radix-slider-thumb-transform)\",\n position: \"absolute\",\n [orientation.startEdge]: `calc(${percent}% + ${thumbInBoundsOffset}px)`\n },\n children: /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeSlider, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n role: \"slider\",\n \"aria-label\": props[\"aria-label\"] || label,\n \"aria-valuemin\": context.min,\n \"aria-valuenow\": value,\n \"aria-valuemax\": context.max,\n \"aria-orientation\": context.orientation,\n \"data-orientation\": context.orientation,\n \"data-disabled\": context.disabled ? \"\" : void 0,\n tabIndex: context.disabled ? void 0 : 0,\n ...thumbProps,\n ref: composedRefs,\n style: value === void 0 ? { display: \"none\" } : props.style,\n onFocus: composeEventHandlers(props.onFocus, () => {\n context.valueIndexToChangeRef.current = index;\n })\n }\n ) })\n }\n );\n }\n);\nSliderThumbTrigger.displayName = THUMB_TRIGGER_NAME;\nvar SliderThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSlider, name, ...thumbProps } = props;\n return /* @__PURE__ */ jsx(\n SliderThumbProvider,\n {\n __scopeSlider,\n name,\n internal_do_not_use_render: ({ index, isFormControl }) => /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n SliderThumbTrigger,\n {\n ...thumbProps,\n ref: forwardedRef,\n __scopeSlider\n }\n ),\n isFormControl ? /* @__PURE__ */ jsx(\n SliderBubbleInput,\n {\n __scopeSlider\n },\n index\n ) : null\n ] })\n }\n );\n }\n);\nSliderThumb.displayName = THUMB_NAME;\nvar BUBBLE_INPUT_NAME = \"SliderBubbleInput\";\nvar SliderBubbleInput = React.forwardRef(\n ({ __scopeSlider, ...props }, forwardedRef) => {\n const { value, name, form } = useSliderThumbContext(BUBBLE_INPUT_NAME, __scopeSlider);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevValue = usePrevious(value);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"value\");\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"input\", { bubbles: true });\n setValue.call(input, value);\n input.dispatchEvent(event);\n }\n }, [prevValue, value]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n style: { display: \"none\" },\n name,\n form,\n ...props,\n ref: composedRefs,\n defaultValue: value\n }\n );\n }\n);\nSliderBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getNextSortedValues(prevValues = [], nextValue, atIndex) {\n const nextValues = [...prevValues];\n nextValues[atIndex] = nextValue;\n return nextValues.sort((a, b) => a - b);\n}\nfunction convertValueToPercentage(value, min, max) {\n const maxSteps = max - min;\n const percentPerStep = 100 / maxSteps;\n const percentage = percentPerStep * (value - min);\n return clamp(percentage, [0, 100]);\n}\nfunction getLabel(index, totalValues) {\n if (totalValues > 2) {\n return `Value ${index + 1} of ${totalValues}`;\n } else if (totalValues === 2) {\n return [\"Minimum\", \"Maximum\"][index];\n } else {\n return void 0;\n }\n}\nfunction getClosestValueIndex(values, nextValue) {\n if (values.length === 1) return 0;\n const distances = values.map((value) => Math.abs(value - nextValue));\n const closestDistance = Math.min(...distances);\n return distances.indexOf(closestDistance);\n}\nfunction getThumbInBoundsOffset(width, left, direction) {\n const halfWidth = width / 2;\n const halfPercent = 50;\n const offset = linearScale([0, halfPercent], [0, halfWidth]);\n return (halfWidth - offset(left) * direction) * direction;\n}\nfunction getStepsBetweenValues(values) {\n return values.slice(0, -1).map((value, index) => values[index + 1] - value);\n}\nfunction hasMinStepsBetweenValues(values, minStepsBetweenValues) {\n if (minStepsBetweenValues > 0) {\n const stepsBetweenValues = getStepsBetweenValues(values);\n const actualMinStepsBetweenValues = Math.min(...stepsBetweenValues);\n return actualMinStepsBetweenValues >= minStepsBetweenValues;\n }\n return true;\n}\nfunction linearScale(input, output) {\n return (value) => {\n if (input[0] === input[1] || output[0] === output[1]) return output[0];\n const ratio = (output[1] - output[0]) / (input[1] - input[0]);\n return output[0] + ratio * (value - input[0]);\n };\n}\nfunction getDecimalCount(value) {\n if (!Number.isFinite(value)) return 0;\n const str = value.toString();\n if (str.includes(\"e\")) {\n const [coefficient, exponent] = str.split(\"e\");\n const decimalPart2 = coefficient.split(\".\")[1] || \"\";\n const exponentNum = Number(exponent);\n return Math.max(0, decimalPart2.length - exponentNum);\n }\n const decimalPart = str.split(\".\")[1];\n return decimalPart ? decimalPart.length : 0;\n}\nfunction roundValue(value, decimalCount) {\n const rounder = Math.pow(10, decimalCount);\n return Math.round(value * rounder) / rounder;\n}\nfunction getNextStepValue(value, {\n min,\n step,\n direction,\n multiplier\n}) {\n const decimalCount = getDecimalCount(step);\n const stepsFromMin = (value - min) / step;\n const nearestSteps = Math.round(stepsFromMin);\n const isAligned = roundValue(nearestSteps * step + min, decimalCount) === roundValue(value, decimalCount);\n let nextSteps;\n if (isAligned) {\n nextSteps = nearestSteps + multiplier * direction;\n } else if (direction > 0) {\n nextSteps = Math.ceil(stepsFromMin);\n } else {\n nextSteps = Math.floor(stepsFromMin);\n }\n return roundValue(nextSteps * step + min, decimalCount);\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\nexport {\n SliderRange as Range,\n Slider as Root,\n Slider,\n SliderRange,\n SliderThumb,\n SliderTrack,\n SliderThumb as Thumb,\n SliderTrack as Track,\n createSliderScope,\n SliderBubbleInput as unstable_BubbleInput,\n SliderBubbleInput as unstable_SliderBubbleInput,\n SliderThumbProvider as unstable_SliderThumbProvider,\n SliderThumbTrigger as unstable_SliderThumbTrigger,\n SliderThumbProvider as unstable_ThumbProvider,\n SliderThumbTrigger as unstable_ThumbTrigger\n};\n//# sourceMappingURL=index.mjs.map\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport * as RxSlider from '@radix-ui/react-slider';\nimport { cx } from '../utils/cx.js';\n\n/**\n * Slider — single or range numeric input.\n *\n * Built on Radix Slider for keyboard arrow + home/end handling.\n */\nexport type SliderProps = ComponentPropsWithoutRef<typeof RxSlider.Root>;\n\nexport const Slider = forwardRef<HTMLSpanElement, SliderProps>(function Slider(props, ref) {\n const { className, ...rest } = props;\n return (\n <RxSlider.Root\n ref={ref}\n className={cx('v8-slider', className)}\n style={{\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n userSelect: 'none',\n touchAction: 'none',\n width: '100%',\n height: 20,\n }}\n {...rest}\n >\n <RxSlider.Track\n style={{\n background: 'var(--surface-2)',\n position: 'relative',\n flexGrow: 1,\n borderRadius: 'var(--radius-pill)',\n height: 4,\n }}\n >\n <RxSlider.Range\n style={{\n position: 'absolute',\n background: 'var(--accent)',\n borderRadius: 'var(--radius-pill)',\n height: '100%',\n }}\n />\n </RxSlider.Track>\n {(Array.isArray(props.value ?? props.defaultValue)\n ? (props.value ?? props.defaultValue ?? [])\n : [props.value ?? props.defaultValue ?? 0]\n ).map((_, i) => (\n <RxSlider.Thumb\n key={i}\n aria-label={props['aria-label'] ?? `Thumb ${i + 1}`}\n style={{\n display: 'block',\n width: 14,\n height: 14,\n background: 'var(--fg)',\n border: '2px solid var(--accent)',\n borderRadius: 'var(--radius-pill)',\n cursor: 'grab',\n boxShadow: 'var(--shadow-1)',\n }}\n />\n ))}\n </RxSlider.Root>\n );\n});"],"names":["PAGE_KEYS","ARROW_KEYS","BACK_KEYS","SLIDER_NAME","Collection","useCollection","createCollectionScope","createCollection","createSliderContext","createContextScope","SliderProvider","useSliderContext","Slider","React.forwardRef","props","forwardedRef","name","min","max","step","orientation","disabled","minStepsBetweenThumbs","defaultValue","value","onValueChange","onValueCommit","inverted","form","sliderProps","thumbRefs","React.useRef","valueIndexToChangeRef","isKeyboardInteractionRef","SliderOrientation","SliderHorizontal","SliderVertical","control","setControl","React.useState","composedRefs","useComposedRefs","values","setValues","useControllableState","value2","_a","valuesBeforeSlideStartRef","initialValuesRef","React.useEffect","associatedForm","reset","handleSlideStart","closestIndex","getClosestValueIndex","updateValues","handleSlideMove","handleSlideEnd","prevValue","atIndex","commit","decimalCount","getDecimalCount","snapToStep","roundValue","nextValue","clamp","prevValues","nextValues","getNextSortedValues","hasMinStepsBetweenValues","hasChanged","jsx","composeEventHandlers","event","stepDirection","multiplier","getNextStepValue","SliderOrientationProvider","useSliderOrientationContext","dir","onSlideStart","onSlideMove","onSlideEnd","onStepKeyDown","slider","setSlider","rectRef","direction","useDirection","isDirectionLTR","isSlidingFromLeft","getValueFromPointer","pointerPosition","rect","input","linearScale","SliderImpl","isBackKey","sliderRef","ref","isSlidingFromBottom","__scopeSlider","onHomeKeyDown","onEndKeyDown","context","Primitive","target","TRACK_NAME","SliderTrack","trackProps","RANGE_NAME","SliderRange","rangeProps","valuesCount","percentages","convertValueToPercentage","offsetStart","offsetEnd","THUMB_NAME","SliderThumbContextProvider","useSliderThumbContext","THUMB_PROVIDER_NAME","SliderThumbProvider","children","internal_do_not_use_render","getItems","thumb","setThumb","index","React.useMemo","item","size","useSize","isFormControl","resolvedName","percent","thumbContext","isFunction","THUMB_TRIGGER_NAME","SliderThumbTrigger","thumbProps","onThumbChange","label","getLabel","orientationSize","thumbInBoundsOffset","getThumbInBoundsOffset","SliderThumb","jsxs","Fragment","SliderBubbleInput","BUBBLE_INPUT_NAME","usePrevious","inputProto","setValue","a","b","percentage","totalValues","distances","closestDistance","width","left","halfWidth","offset","getStepsBetweenValues","minStepsBetweenValues","stepsBetweenValues","output","ratio","str","coefficient","exponent","decimalPart2","exponentNum","decimalPart","rounder","stepsFromMin","nearestSteps","isAligned","nextSteps","forwardRef","className","rest","RxSlider.Root","cx","RxSlider.Track","RxSlider.Range","_","i","RxSlider.Thumb"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as j,j as n}from"./cmdk-D15rXxc5.js";import{c as g}from"./main-CCimEcWH.js";const A={xs:20,sm:24,md:32,lg:40,xl:56},C={xs:"var(--fs-12)",sm:"var(--fs-12)",md:"var(--fs-13)",lg:"var(--fs-14)",xl:"var(--fs-18)"},E={online:"var(--success)",offline:"var(--fg-subtle)",busy:"var(--danger)",away:"var(--warning)"};function I(o){var a,s;const t=o.trim().split(/\s+/);if(t.length===0||t[0]===void 0)return"?";if(t.length===1)return(t[0]??"").slice(0,2).toUpperCase();const r=((a=t[0])==null?void 0:a[0])??"",e=((s=t[t.length-1])==null?void 0:s[0])??"";return`${r}${e}`.toUpperCase()}function B(o){let t=0;for(let r=0;r<o.length;r++)t=t*31+o.charCodeAt(r)|0;return Math.abs(t)}const S=["oklch(0.65 0.15 240)","oklch(0.65 0.15 30)","oklch(0.65 0.15 140)","oklch(0.65 0.15 320)","oklch(0.65 0.15 80)","oklch(0.65 0.15 200)"],U=j.forwardRef(function(t,r){const{name:e,src:a,size:s="md",initials:l,status:d,className:f,style:x,...u}=t,c=A[s],p=l??I(e),h=S[B(e)%S.length];return n.jsxs("span",{ref:r,className:g("v8-avatar",`v8-avatar--${s}`,f),style:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",width:c,height:c,borderRadius:"var(--radius-pill)",overflow:"hidden",background:h,color:"white",fontSize:C[s],fontWeight:600,flexShrink:0,userSelect:"none",...x},"aria-label":e,...u,children:[a!==void 0?n.jsx("img",{src:a,alt:"",style:{width:"100%",height:"100%",objectFit:"cover"}}):p,d!==void 0&&n.jsx("span",{"aria-hidden":"true",style:{position:"absolute",bottom:0,right:0,width:Math.max(6,Math.floor(c*.28)),height:Math.max(6,Math.floor(c*.28)),borderRadius:"var(--radius-pill)",background:E[d],border:"2px solid var(--surface-0)"}})]})});j.forwardRef(function(t,r){const{children:e,size:a="sm",className:s,style:l,...d}=t;return n.jsx("div",{ref:r,className:g("v8-avatar-stack",s),style:{display:"inline-flex",alignItems:"center",...l},...d,children:n.jsx(P,{size:a,children:e})})});function P({children:o,size:t}){const r=A[t];return n.jsx(n.Fragment,{children:Array.isArray(o)?o.map((e,a)=>n.jsx("span",{style:{marginLeft:a===0?0:-Math.floor(r*.3),border:"2px solid var(--surface-0)",borderRadius:"var(--radius-pill)",display:"inline-flex"},children:e},a)):n.jsx("span",{style:{border:"2px solid var(--surface-0)",borderRadius:"var(--radius-pill)"},children:o})})}const W=j.forwardRef(function(t,r){var $,w;const{data:e,width:a=120,height:s=32,stroke:l="var(--accent)",fill:d,area:f=!0,goal:x,className:u,style:c,...p}=t;if(e.length<2)return n.jsx("svg",{ref:r,width:a,height:s,viewBox:`0 0 ${a} ${s}`,className:g("v8-sparkline",u),style:c,"aria-hidden":"true",...p});const h=Math.min(...e),k=Math.max(...e)-h||1,i=2,F=(a-i*2)/(e.length-1),v=e.map((m,y)=>{const N=i+F*y,R=i+(s-i*2)*(1-(m-h)/k);return{x:N,y:R}}),b=v.map((m,y)=>`${y===0?"M":"L"}${m.x.toFixed(1)},${m.y.toFixed(1)}`).join(" "),L=f?`${b} L${(($=v[v.length-1])==null?void 0:$.x.toFixed(1))??"0"},${(s-i).toFixed(1)} L${((w=v[0])==null?void 0:w.x.toFixed(1))??"0"},${(s-i).toFixed(1)} Z`:"",M=d??`color-mix(in oklch, ${l} 14%, transparent)`;return n.jsxs("svg",{ref:r,width:a,height:s,viewBox:`0 0 ${a} ${s}`,className:g("v8-sparkline",u),style:c,"aria-hidden":"true",...p,children:[f===!0&&n.jsx("path",{d:L,fill:M,stroke:"none"}),n.jsx("path",{d:b,fill:"none",stroke:l,strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}),x!==void 0&&n.jsx("line",{x1:i,x2:a-i,y1:i+(s-i*2)*(1-(x-h)/k),y2:i+(s-i*2)*(1-(x-h)/k),stroke:"var(--fg-subtle)",strokeWidth:1,strokeDasharray:"2 2"})]})});export{U as A,W as S};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Sparkline-Cmqw0N39.js","sources":["../../src/web/v8/ui/data/Avatar.tsx","../../src/web/v8/ui/data/Sparkline.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cx } from '../utils/cx.js';\n\n/**\n * Avatar — user/agent representation. Falls back to initials when no image.\n *\n * Sizes: xs (20) | sm (24) | md (32) | lg (40) | xl (56).\n * Renders a <span> by default; use `asChild` to swap for a button/link.\n */\nexport type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n name: string;\n src?: string;\n size?: AvatarSize;\n /** Override the generated initials. */\n initials?: string;\n /** Optional status dot (online/offline/busy). */\n status?: 'online' | 'offline' | 'busy' | 'away';\n}\n\nconst SIZE_PX: Record<AvatarSize, number> = { xs: 20, sm: 24, md: 32, lg: 40, xl: 56 };\nconst SIZE_FS: Record<AvatarSize, string> = {\n xs: 'var(--fs-12)',\n sm: 'var(--fs-12)',\n md: 'var(--fs-13)',\n lg: 'var(--fs-14)',\n xl: 'var(--fs-18)',\n};\n\nconst STATUS_FG = {\n online: 'var(--success)',\n offline: 'var(--fg-subtle)',\n busy: 'var(--danger)',\n away: 'var(--warning)',\n} as const;\n\nfunction deriveInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 0 || parts[0] === undefined) return '?';\n if (parts.length === 1) {\n const first = parts[0] ?? '';\n return first.slice(0, 2).toUpperCase();\n }\n const first = parts[0]?.[0] ?? '';\n const last = parts[parts.length - 1]?.[0] ?? '';\n return `${first}${last}`.toUpperCase();\n}\n\n// Deterministic color from name — used as fallback when no image.\nfunction hashName(name: string): number {\n let h = 0;\n for (let i = 0; i < name.length; i++) h = (h * 31 + name.charCodeAt(i)) | 0;\n return Math.abs(h);\n}\n\nconst FALLBACK_PALETTE = [\n 'oklch(0.65 0.15 240)',\n 'oklch(0.65 0.15 30)',\n 'oklch(0.65 0.15 140)',\n 'oklch(0.65 0.15 320)',\n 'oklch(0.65 0.15 80)',\n 'oklch(0.65 0.15 200)',\n];\n\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(props, ref) {\n const { name, src, size = 'md', initials, status, className, style, ...rest } = props;\n const px = SIZE_PX[size];\n const init = initials ?? deriveInitials(name);\n const fallbackBg = FALLBACK_PALETTE[hashName(name) % FALLBACK_PALETTE.length];\n\n return (\n <span\n ref={ref}\n className={cx('v8-avatar', `v8-avatar--${size}`, className)}\n style={{\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: px,\n height: px,\n borderRadius: 'var(--radius-pill)',\n overflow: 'hidden',\n background: fallbackBg,\n color: 'white',\n fontSize: SIZE_FS[size],\n fontWeight: 600,\n flexShrink: 0,\n userSelect: 'none',\n ...style,\n }}\n aria-label={name}\n {...rest}\n >\n {src !== undefined ? (\n <img\n src={src}\n alt=\"\"\n style={{ width: '100%', height: '100%', objectFit: 'cover' }}\n />\n ) : (\n init\n )}\n {status !== undefined && (\n <span\n aria-hidden=\"true\"\n style={{\n position: 'absolute',\n bottom: 0,\n right: 0,\n width: Math.max(6, Math.floor(px * 0.28)),\n height: Math.max(6, Math.floor(px * 0.28)),\n borderRadius: 'var(--radius-pill)',\n background: STATUS_FG[status],\n border: '2px solid var(--surface-0)',\n }}\n />\n )}\n </span>\n );\n});\n\n/**\n * AvatarStack — overlapping avatars. Use for \"assigned to N people\" lists.\n */\nexport interface AvatarStackProps extends HTMLAttributes<HTMLDivElement> {\n children: ReactNode;\n size?: AvatarSize;\n max?: number;\n}\n\nexport const AvatarStack = forwardRef<HTMLDivElement, AvatarStackProps>(function AvatarStack(\n props,\n ref,\n) {\n const { children, size = 'sm', className, style, ...rest } = props;\n return (\n <div\n ref={ref}\n className={cx('v8-avatar-stack', className)}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n ...style,\n }}\n {...rest}\n >\n <StackedChildren size={size}>{children}</StackedChildren>\n </div>\n );\n});\n\nfunction StackedChildren({ children, size }: { children: ReactNode; size: AvatarSize }) {\n const px = SIZE_PX[size];\n return (\n <>\n {Array.isArray(children)\n ? children.map((child, i) => (\n <span\n key={i}\n style={{\n marginLeft: i === 0 ? 0 : -Math.floor(px * 0.3),\n border: '2px solid var(--surface-0)',\n borderRadius: 'var(--radius-pill)',\n display: 'inline-flex',\n }}\n >\n {child}\n </span>\n ))\n : <span style={{ border: '2px solid var(--surface-0)', borderRadius: 'var(--radius-pill)' }}>{children}</span>}\n </>\n );\n}","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cx } from '../utils/cx.js';\n\n/**\n * Sparkline — tiny inline line chart.\n *\n * Pure SVG so it composes inside StatTile, Table cells, Card headers\n * without bringing in a chart library dependency.\n */\nexport interface SparklineProps extends Omit<HTMLAttributes<SVGSVGElement>, 'children'> {\n data: readonly number[];\n width?: number;\n height?: number;\n /** Stroke color (defaults to --accent). */\n stroke?: string;\n /** Optional fill color (defaults to a 14% mix of stroke). */\n fill?: string;\n /** Show the area under the line. */\n area?: boolean;\n /** Goal/expected value rendered as a dashed horizontal line. */\n goal?: number;\n}\n\nexport const Sparkline = forwardRef<SVGSVGElement, SparklineProps>(function Sparkline(props, ref) {\n const {\n data,\n width = 120,\n height = 32,\n stroke = 'var(--accent)',\n fill,\n area = true,\n goal,\n className,\n style,\n ...rest\n } = props;\n\n if (data.length < 2) {\n return (\n <svg\n ref={ref}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n className={cx('v8-sparkline', className)}\n style={style}\n aria-hidden=\"true\"\n {...rest}\n />\n );\n }\n\n const min = Math.min(...data);\n const max = Math.max(...data);\n const range = max - min || 1;\n const pad = 2;\n const stepX = (width - pad * 2) / (data.length - 1);\n\n const points = data.map((v, i) => {\n const x = pad + stepX * i;\n const y = pad + (height - pad * 2) * (1 - (v - min) / range);\n return { x, y };\n });\n\n const linePath = points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x.toFixed(1)},${p.y.toFixed(1)}`).join(' ');\n const areaPath = area\n ? `${linePath} L${points[points.length - 1]?.x.toFixed(1) ?? '0'},${(height - pad).toFixed(1)} L${points[0]?.x.toFixed(1) ?? '0'},${(height - pad).toFixed(1)} Z`\n : '';\n\n const fillColor = fill ?? `color-mix(in oklch, ${stroke} 14%, transparent)`;\n\n return (\n <svg\n ref={ref}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n className={cx('v8-sparkline', className)}\n style={style}\n aria-hidden=\"true\"\n {...rest}\n >\n {area === true && <path d={areaPath} fill={fillColor} stroke=\"none\" />}\n <path d={linePath} fill=\"none\" stroke={stroke} strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n {goal !== undefined && (\n <line\n x1={pad}\n x2={width - pad}\n y1={pad + (height - pad * 2) * (1 - (goal - min) / range)}\n y2={pad + (height - pad * 2) * (1 - (goal - min) / range)}\n stroke=\"var(--fg-subtle)\"\n strokeWidth={1}\n strokeDasharray=\"2 2\"\n />\n )}\n </svg>\n );\n});"],"names":["SIZE_PX","SIZE_FS","STATUS_FG","deriveInitials","name","parts","first","_a","last","_b","hashName","h","i","FALLBACK_PALETTE","Avatar","forwardRef","props","ref","src","size","initials","status","className","style","rest","px","init","fallbackBg","jsxs","cx","jsx","children","StackedChildren","Fragment","child","Sparkline","data","width","height","stroke","fill","area","goal","min","range","pad","stepX","points","v","x","y","linePath","p","areaPath","fillColor"],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import{r as n,j as a,h as R,u as L,i as y,k as A,l as U}from"./cmdk-D15rXxc5.js";import{u as X,a as z}from"./index-CrWI7sQR.js";import{c as D}from"./main-CCimEcWH.js";var C="Switch",[G]=U(C),[O,E]=G(C);function W(t){const{__scopeSwitch:s,checked:r,children:c,defaultChecked:e,disabled:o,form:h,name:f,onCheckedChange:l,required:m,value:b="on",internal_do_not_use_render:i}=t,[p,w]=L({prop:r,defaultProp:e??!1,onChange:l,caller:C}),[v,k]=n.useState(null),[S,d]=n.useState(null),u=n.useRef(!1),g=v?!!h||!!v.closest("form"):!0,x={checked:p,setChecked:w,disabled:o,control:v,setControl:k,name:f,form:h,value:b,hasConsumerStoppedPropagationRef:u,required:m,defaultChecked:e,isFormControl:g,bubbleInput:S,setBubbleInput:d};return a.jsx(O,{scope:s,...x,children:$(i)?i(x):c})}var P="SwitchTrigger",j=n.forwardRef(({__scopeSwitch:t,onClick:s,...r},c)=>{const{control:e,form:o,value:h,disabled:f,checked:l,required:m,setControl:b,setChecked:i,hasConsumerStoppedPropagationRef:p,isFormControl:w,bubbleInput:v}=E(P,t),k=y(c,b),S=n.useRef(l);return n.useEffect(()=>{const d=o?e==null?void 0:e.ownerDocument.getElementById(o):e==null?void 0:e.form;if(d instanceof HTMLFormElement){const u=()=>i(S.current);return d.addEventListener("reset",u),()=>d.removeEventListener("reset",u)}},[e,o,i]),a.jsx(R.button,{type:"button",role:"switch","aria-checked":l,"aria-required":m,"data-state":F(l),"data-disabled":f?"":void 0,disabled:f,value:h,...r,ref:k,onClick:A(s,d=>{i(u=>!u),v&&w&&(p.current=d.isPropagationStopped(),p.current||d.stopPropagation())})})});j.displayName=P;var I=n.forwardRef((t,s)=>{const{__scopeSwitch:r,name:c,checked:e,defaultChecked:o,required:h,disabled:f,value:l,onCheckedChange:m,form:b,...i}=t;return a.jsx(W,{__scopeSwitch:r,checked:e,defaultChecked:o,disabled:f,required:h,onCheckedChange:m,name:c,form:b,value:l,internal_do_not_use_render:({isFormControl:p})=>a.jsxs(a.Fragment,{children:[a.jsx(j,{...i,ref:s,__scopeSwitch:r}),p&&a.jsx(M,{__scopeSwitch:r})]})})});I.displayName=C;var N="SwitchThumb",T=n.forwardRef((t,s)=>{const{__scopeSwitch:r,...c}=t,e=E(N,r);return a.jsx(R.span,{"data-state":F(e.checked),"data-disabled":e.disabled?"":void 0,...c,ref:s})});T.displayName=N;var B="SwitchBubbleInput",M=n.forwardRef(({__scopeSwitch:t,...s},r)=>{const{control:c,hasConsumerStoppedPropagationRef:e,checked:o,defaultChecked:h,required:f,disabled:l,name:m,value:b,form:i,bubbleInput:p,setBubbleInput:w}=E(B,t),v=y(r,w),k=X(o),S=z(c);n.useEffect(()=>{const u=p;if(!u)return;const g=window.HTMLInputElement.prototype,_=Object.getOwnPropertyDescriptor(g,"checked").set,q=!e.current;if(k!==o&&_){const H=new Event("click",{bubbles:q});_.call(u,o),u.dispatchEvent(H)}},[p,k,o,e]);const d=n.useRef(o);return a.jsx(R.input,{type:"checkbox","aria-hidden":!0,defaultChecked:h??d.current,required:f,disabled:l,name:m,value:b,form:i,...s,tabIndex:-1,ref:v,style:{...s.style,...S,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});M.displayName=B;function $(t){return typeof t=="function"}function F(t){return t?"checked":"unchecked"}const V=n.forwardRef(function(s,r){const{className:c,...e}=s;return a.jsxs(I,{ref:r,className:D("v8-switch",c),style:{width:32,height:18,background:"var(--surface-2)",borderRadius:"var(--radius-pill)",position:"relative",border:"1px solid var(--border)",cursor:"pointer",transition:"background var(--motion-fast) var(--ease-out)"},...e,children:[a.jsx(T,{style:{display:"block",width:12,height:12,background:"var(--fg)",borderRadius:"var(--radius-pill)",transform:"translateX(2px)",transition:"transform var(--motion-fast) var(--ease-out), background var(--motion-fast) var(--ease-out)",willChange:"transform"}}),a.jsx("style",{children:`
|
|
2
|
-
.v8-switch[data-state='checked'] {
|
|
3
|
-
background: var(--accent);
|
|
4
|
-
border-color: var(--accent);
|
|
5
|
-
}
|
|
6
|
-
.v8-switch[data-state='checked'] > span {
|
|
7
|
-
transform: translateX(16px);
|
|
8
|
-
background: var(--fg-on-accent);
|
|
9
|
-
}
|
|
10
|
-
`})]})});export{V as S};
|