@polderlabs/bizar 10.2.0 → 10.4.0
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/README.md +31 -8
- package/bizar-dash/CONTROL_SURFACES.md +0 -1
- package/bizar-dash/dist/assets/{ActivityFeed-JjmOY2AQ.js → ActivityFeed-DtRtg-JN.js} +1 -1
- package/bizar-dash/dist/assets/{ActivityFeed-JjmOY2AQ.js.map → ActivityFeed-DtRtg-JN.js.map} +1 -1
- package/bizar-dash/dist/assets/{ActivityView-BIIMvGWo.js → ActivityView-CoTXDyU_.js} +1 -1
- package/bizar-dash/dist/assets/{ActivityView-BIIMvGWo.js.map → ActivityView-CoTXDyU_.js.map} +1 -1
- package/bizar-dash/dist/assets/{AdminView-DRidJtkq.js → AdminView-DNc5Ll7L.js} +1 -1
- package/bizar-dash/dist/assets/{AdminView-DRidJtkq.js.map → AdminView-DNc5Ll7L.js.map} +1 -1
- package/bizar-dash/dist/assets/{AgentActivity-79l4SBMC.js → AgentActivity-CrX7LmQ6.js} +1 -1
- package/bizar-dash/dist/assets/{AgentActivity-79l4SBMC.js.map → AgentActivity-CrX7LmQ6.js.map} +1 -1
- package/bizar-dash/dist/assets/{AgentsView-0vT4uPSc.js → AgentsView-Du-G_skK.js} +3 -3
- package/bizar-dash/dist/assets/{AgentsView-0vT4uPSc.js.map → AgentsView-Du-G_skK.js.map} +1 -1
- package/bizar-dash/dist/assets/{Alert-CG5q_s75.js → Alert-B6DjfRFI.js} +1 -1
- package/bizar-dash/dist/assets/{Alert-CG5q_s75.js.map → Alert-B6DjfRFI.js.map} +1 -1
- package/bizar-dash/dist/assets/{ArtifactsView-DM8ZmpR9.js → ArtifactsView-znhN8GTR.js} +1 -1
- package/bizar-dash/dist/assets/{ArtifactsView-DM8ZmpR9.js.map → ArtifactsView-znhN8GTR.js.map} +1 -1
- package/bizar-dash/dist/assets/{AuthView-BveN94MC.js → AuthView-Rk8eKUPr.js} +1 -1
- package/bizar-dash/dist/assets/{AuthView-BveN94MC.js.map → AuthView-Rk8eKUPr.js.map} +1 -1
- package/bizar-dash/dist/assets/{Avatar-ulUPIYTd.js → Avatar-B41upSD1.js} +1 -1
- package/bizar-dash/dist/assets/{Avatar-ulUPIYTd.js.map → Avatar-B41upSD1.js.map} +1 -1
- package/bizar-dash/dist/assets/{BackgroundJobsView-BWErhqFo.js → BackgroundJobsView-BLWuN9qz.js} +1 -1
- package/bizar-dash/dist/assets/{BackgroundJobsView-BWErhqFo.js.map → BackgroundJobsView-BLWuN9qz.js.map} +1 -1
- package/bizar-dash/dist/assets/{BackupView-CnBjzG9N.js → BackupView-CqbtcnuQ.js} +1 -1
- package/bizar-dash/dist/assets/{BackupView-CnBjzG9N.js.map → BackupView-CqbtcnuQ.js.map} +1 -1
- package/bizar-dash/dist/assets/{Card-B0imhxMk.js → Card-rF59wHiO.js} +1 -1
- package/bizar-dash/dist/assets/{Card-B0imhxMk.js.map → Card-rF59wHiO.js.map} +1 -1
- package/bizar-dash/dist/assets/{ChatView-D6zGytzx.js → ChatView-CUriVEgU.js} +1 -1
- package/bizar-dash/dist/assets/{ChatView-D6zGytzx.js.map → ChatView-CUriVEgU.js.map} +1 -1
- package/bizar-dash/dist/assets/{Chip-wwZSGwLE.js → Chip-Dc2KmeWl.js} +1 -1
- package/bizar-dash/dist/assets/{Chip-wwZSGwLE.js.map → Chip-Dc2KmeWl.js.map} +1 -1
- package/bizar-dash/dist/assets/{ClaudeSessionsView-DK1sOLhi.js → ClaudeSessionsView-CiaHQdDZ.js} +1 -1
- package/bizar-dash/dist/assets/{ClaudeSessionsView-DK1sOLhi.js.map → ClaudeSessionsView-CiaHQdDZ.js.map} +1 -1
- package/bizar-dash/dist/assets/{ClipboardView-CZ2lYPr0.js → ClipboardView-DdP6aVso.js} +1 -1
- package/bizar-dash/dist/assets/{ClipboardView-CZ2lYPr0.js.map → ClipboardView-DdP6aVso.js.map} +1 -1
- package/bizar-dash/dist/assets/{ConfigView-D-zT9eNA.js → ConfigView-B2ysnTZU.js} +1 -1
- package/bizar-dash/dist/assets/{ConfigView-D-zT9eNA.js.map → ConfigView-B2ysnTZU.js.map} +1 -1
- package/bizar-dash/dist/assets/{DiagnosticsView-BocV68Lb.js → DiagnosticsView-88OZ5k0f.js} +1 -1
- package/bizar-dash/dist/assets/{DiagnosticsView-BocV68Lb.js.map → DiagnosticsView-88OZ5k0f.js.map} +1 -1
- package/bizar-dash/dist/assets/{DialogsView-BVjPI5x7.js → DialogsView-BcqDDCZQ.js} +1 -1
- package/bizar-dash/dist/assets/{DialogsView-BVjPI5x7.js.map → DialogsView-BcqDDCZQ.js.map} +1 -1
- package/bizar-dash/dist/assets/{DoctorView-84gJcZwM.js → DoctorView-BQwqvMAh.js} +1 -1
- package/bizar-dash/dist/assets/{DoctorView-84gJcZwM.js.map → DoctorView-BQwqvMAh.js.map} +1 -1
- package/bizar-dash/dist/assets/{EmptyState-BjgVOrcO.js → EmptyState-D65J5FQN.js} +1 -1
- package/bizar-dash/dist/assets/{EmptyState-BjgVOrcO.js.map → EmptyState-D65J5FQN.js.map} +1 -1
- package/bizar-dash/dist/assets/{EnvVarsView-BJ2TEzF7.js → EnvVarsView-DX-3oGH-.js} +2 -2
- package/bizar-dash/dist/assets/{EnvVarsView-BJ2TEzF7.js.map → EnvVarsView-DX-3oGH-.js.map} +1 -1
- package/bizar-dash/dist/assets/{ErrorState-BE3WBFqF.js → ErrorState-DULZnttJ.js} +1 -1
- package/bizar-dash/dist/assets/{ErrorState-BE3WBFqF.js.map → ErrorState-DULZnttJ.js.map} +1 -1
- package/bizar-dash/dist/assets/{EvalView-BJJ2P-kK.js → EvalView-CpdFu_ID.js} +1 -1
- package/bizar-dash/dist/assets/{EvalView-BJJ2P-kK.js.map → EvalView-CpdFu_ID.js.map} +1 -1
- package/bizar-dash/dist/assets/{GoalsView-pwROHApi.js → GoalsView-Br8oPPfb.js} +1 -1
- package/bizar-dash/dist/assets/{GoalsView-pwROHApi.js.map → GoalsView-Br8oPPfb.js.map} +1 -1
- package/bizar-dash/dist/assets/{Grid-qcvbhx6e.js → Grid-BSXhsCPC.js} +1 -1
- package/bizar-dash/dist/assets/{Grid-qcvbhx6e.js.map → Grid-BSXhsCPC.js.map} +1 -1
- package/bizar-dash/dist/assets/{HistoryView-C7SSOLJA.js → HistoryView-D0J3aoZF.js} +1 -1
- package/bizar-dash/dist/assets/{HistoryView-C7SSOLJA.js.map → HistoryView-D0J3aoZF.js.map} +1 -1
- package/bizar-dash/dist/assets/{Input-Bgzxf_Hu.js → Input-CZmRw5QX.js} +1 -1
- package/bizar-dash/dist/assets/{Input-Bgzxf_Hu.js.map → Input-CZmRw5QX.js.map} +1 -1
- package/bizar-dash/dist/assets/{LibrariesView-CbFFksox.js → LibrariesView-B1YX9wzp.js} +1 -1
- package/bizar-dash/dist/assets/{LibrariesView-CbFFksox.js.map → LibrariesView-B1YX9wzp.js.map} +1 -1
- package/bizar-dash/dist/assets/{LightRAGView-BqDrJbRq.js → LightRAGView-CykR0t9y.js} +1 -1
- package/bizar-dash/dist/assets/{LightRAGView-BqDrJbRq.js.map → LightRAGView-CykR0t9y.js.map} +1 -1
- package/bizar-dash/dist/assets/{ListHeader-TjPJrUfY.js → ListHeader-Dpun-r36.js} +1 -1
- package/bizar-dash/dist/assets/{ListHeader-TjPJrUfY.js.map → ListHeader-Dpun-r36.js.map} +1 -1
- package/bizar-dash/dist/assets/{MemoryView-BlTeHLhX.js → MemoryView-BbER5ZKt.js} +1 -1
- package/bizar-dash/dist/assets/{MemoryView-BlTeHLhX.js.map → MemoryView-BbER5ZKt.js.map} +1 -1
- package/bizar-dash/dist/assets/MiscView-DLNEGdML.js +1 -0
- package/bizar-dash/dist/assets/{MiscView-B8QY82Pm.js.map → MiscView-DLNEGdML.js.map} +1 -1
- package/bizar-dash/dist/assets/{ModsView-CvW1OWts.js → ModsView-P7gDeNHM.js} +2 -2
- package/bizar-dash/dist/assets/{ModsView-CvW1OWts.js.map → ModsView-P7gDeNHM.js.map} +1 -1
- package/bizar-dash/dist/assets/{NotificationsView-CsBt5U7x.js → NotificationsView-DAm2O0yf.js} +1 -1
- package/bizar-dash/dist/assets/{NotificationsView-CsBt5U7x.js.map → NotificationsView-DAm2O0yf.js.map} +1 -1
- package/bizar-dash/dist/assets/ObsidianView-Ci80gnwS.js +1 -0
- package/bizar-dash/dist/assets/{ObsidianView-BCTejEj2.js.map → ObsidianView-Ci80gnwS.js.map} +1 -1
- package/bizar-dash/dist/assets/{OverviewView-BsuPxwnB.js → OverviewView-rriw1GjA.js} +1 -1
- package/bizar-dash/dist/assets/{OverviewView-BsuPxwnB.js.map → OverviewView-rriw1GjA.js.map} +1 -1
- package/bizar-dash/dist/assets/{ProgressBar-DlZTETEn.js → ProgressBar-BahmeJhP.js} +1 -1
- package/bizar-dash/dist/assets/{ProgressBar-DlZTETEn.js.map → ProgressBar-BahmeJhP.js.map} +1 -1
- package/bizar-dash/dist/assets/{ProjectsView-Soxtmpet.js → ProjectsView-ChzM12bs.js} +1 -1
- package/bizar-dash/dist/assets/{ProjectsView-Soxtmpet.js.map → ProjectsView-ChzM12bs.js.map} +1 -1
- package/bizar-dash/dist/assets/{ProvidersView-DaCEV9pM.js → ProvidersView-BftGn8Cr.js} +1 -1
- package/bizar-dash/dist/assets/{ProvidersView-DaCEV9pM.js.map → ProvidersView-BftGn8Cr.js.map} +1 -1
- package/bizar-dash/dist/assets/{SchedulesView-DY2ByBj_.js → SchedulesView-CtNxtzN6.js} +1 -1
- package/bizar-dash/dist/assets/{SchedulesView-DY2ByBj_.js.map → SchedulesView-CtNxtzN6.js.map} +1 -1
- package/bizar-dash/dist/assets/{Select-Dbd88_n8.js → Select-0VcfTDeL.js} +1 -1
- package/bizar-dash/dist/assets/{Select-Dbd88_n8.js.map → Select-0VcfTDeL.js.map} +1 -1
- package/bizar-dash/dist/assets/{SettingsRow-CLMNd434.js → SettingsRow-BLic3DQl.js} +1 -1
- package/bizar-dash/dist/assets/{SettingsRow-CLMNd434.js.map → SettingsRow-BLic3DQl.js.map} +1 -1
- package/bizar-dash/dist/assets/{SettingsView-b24oFq9x.js → SettingsView-BjS3i4nr.js} +1 -1
- package/bizar-dash/dist/assets/{SettingsView-b24oFq9x.js.map → SettingsView-BjS3i4nr.js.map} +1 -1
- package/bizar-dash/dist/assets/{Sheet-DnDid58j.js → Sheet-BOProMs2.js} +1 -1
- package/bizar-dash/dist/assets/{Sheet-DnDid58j.js.map → Sheet-BOProMs2.js.map} +1 -1
- package/bizar-dash/dist/assets/{Slider-BJCvKI1I.js → Slider-B0eLEEUt.js} +1 -1
- package/bizar-dash/dist/assets/{Slider-BJCvKI1I.js.map → Slider-B0eLEEUt.js.map} +1 -1
- package/bizar-dash/dist/assets/{Sparkline-ktqQLdyb.js → Sparkline-SSrdgyW0.js} +1 -1
- package/bizar-dash/dist/assets/{Sparkline-ktqQLdyb.js.map → Sparkline-SSrdgyW0.js.map} +1 -1
- package/bizar-dash/dist/assets/{Switch-CwXfsDii.js → Switch-B3EQzb_q.js} +1 -1
- package/bizar-dash/dist/assets/{Switch-CwXfsDii.js.map → Switch-B3EQzb_q.js.map} +1 -1
- package/bizar-dash/dist/assets/{TasksView-BHmpzFCf.js → TasksView-SWjF_ZUQ.js} +1 -1
- package/bizar-dash/dist/assets/{TasksView-BHmpzFCf.js.map → TasksView-SWjF_ZUQ.js.map} +1 -1
- package/bizar-dash/dist/assets/{Textarea-BzIAwSlp.js → Textarea-QuofpMlq.js} +1 -1
- package/bizar-dash/dist/assets/{Textarea-BzIAwSlp.js.map → Textarea-QuofpMlq.js.map} +1 -1
- package/bizar-dash/dist/assets/{UpdateView-CSmX9NN0.js → UpdateView-CEHW2nd6.js} +1 -1
- package/bizar-dash/dist/assets/{UpdateView-CSmX9NN0.js.map → UpdateView-CEHW2nd6.js.map} +1 -1
- package/bizar-dash/dist/assets/{UsageView-COyr_Gfi.js → UsageView-BqOw6FBg.js} +1 -1
- package/bizar-dash/dist/assets/{UsageView-COyr_Gfi.js.map → UsageView-BqOw6FBg.js.map} +1 -1
- package/bizar-dash/dist/assets/{ViewHeader-BzYZ3m-e.js → ViewHeader-B6P-C4GD.js} +1 -1
- package/bizar-dash/dist/assets/{ViewHeader-BzYZ3m-e.js.map → ViewHeader-B6P-C4GD.js.map} +1 -1
- package/bizar-dash/dist/assets/{VoiceView-D33_xG5t.js → VoiceView-CwrPwWgi.js} +1 -1
- package/bizar-dash/dist/assets/{VoiceView-D33_xG5t.js.map → VoiceView-CwrPwWgi.js.map} +1 -1
- package/bizar-dash/dist/assets/{brain-CM-Vls8r.js → brain-CwZt9Kta.js} +1 -1
- package/bizar-dash/dist/assets/{brain-CM-Vls8r.js.map → brain-CwZt9Kta.js.map} +1 -1
- package/bizar-dash/dist/assets/{calendar-C0lgZk69.js → calendar-C5oK0_nM.js} +1 -1
- package/bizar-dash/dist/assets/{calendar-C0lgZk69.js.map → calendar-C5oK0_nM.js.map} +1 -1
- package/bizar-dash/dist/assets/{circle-Bx_hQEBC.js → circle-D1Lc_P2a.js} +1 -1
- package/bizar-dash/dist/assets/{circle-Bx_hQEBC.js.map → circle-D1Lc_P2a.js.map} +1 -1
- package/bizar-dash/dist/assets/{circle-alert-DHvsqpw5.js → circle-alert-HdHe7m8K.js} +1 -1
- package/bizar-dash/dist/assets/{circle-alert-DHvsqpw5.js.map → circle-alert-HdHe7m8K.js.map} +1 -1
- package/bizar-dash/dist/assets/{circle-check-Bx8wmXR9.js → circle-check-Cs-xoV7R.js} +1 -1
- package/bizar-dash/dist/assets/{circle-check-Bx8wmXR9.js.map → circle-check-Cs-xoV7R.js.map} +1 -1
- package/bizar-dash/dist/assets/{clock-CejGoecX.js → clock-DEIuPV60.js} +1 -1
- package/bizar-dash/dist/assets/{clock-CejGoecX.js.map → clock-DEIuPV60.js.map} +1 -1
- package/bizar-dash/dist/assets/{download-4cEUWue1.js → download-Clkq90Ct.js} +1 -1
- package/bizar-dash/dist/assets/{download-4cEUWue1.js.map → download-Clkq90Ct.js.map} +1 -1
- package/bizar-dash/dist/assets/{external-link-0NqUhI4i.js → external-link-D5tq2o_I.js} +1 -1
- package/bizar-dash/dist/assets/{external-link-0NqUhI4i.js.map → external-link-D5tq2o_I.js.map} +1 -1
- package/bizar-dash/dist/assets/{file-text-yEMkrSoZ.js → file-text-CQ12t7Oc.js} +1 -1
- package/bizar-dash/dist/assets/{file-text-yEMkrSoZ.js.map → file-text-CQ12t7Oc.js.map} +1 -1
- package/bizar-dash/dist/assets/{filter-BXt60zAS.js → filter-BcbE37wP.js} +1 -1
- package/bizar-dash/dist/assets/{filter-BXt60zAS.js.map → filter-BcbE37wP.js.map} +1 -1
- package/bizar-dash/dist/assets/{git-pull-request-BjG5lNtR.js → git-pull-request-D1qNDRia.js} +1 -1
- package/bizar-dash/dist/assets/{git-pull-request-BjG5lNtR.js.map → git-pull-request-D1qNDRia.js.map} +1 -1
- package/bizar-dash/dist/assets/{main-CokHAXWM.js → main-Cxeu4LhG.js} +28 -33
- package/bizar-dash/dist/assets/main-Cxeu4LhG.js.map +1 -0
- package/bizar-dash/dist/assets/network-DJdvVaHx.js +6 -0
- package/bizar-dash/dist/assets/network-DJdvVaHx.js.map +1 -0
- package/bizar-dash/dist/assets/{pause-CAmulU0F.js → pause-DUn9L5PB.js} +1 -1
- package/bizar-dash/dist/assets/{pause-CAmulU0F.js.map → pause-DUn9L5PB.js.map} +1 -1
- package/bizar-dash/dist/assets/{pencil-eq5IqBmU.js → pencil-DVrBlYV3.js} +1 -1
- package/bizar-dash/dist/assets/{pencil-eq5IqBmU.js.map → pencil-DVrBlYV3.js.map} +1 -1
- package/bizar-dash/dist/assets/{play-BoLrrcBA.js → play-CZjsr3XM.js} +1 -1
- package/bizar-dash/dist/assets/{play-BoLrrcBA.js.map → play-CZjsr3XM.js.map} +1 -1
- package/bizar-dash/dist/assets/{plug-DBrVM9lK.js → plug-BKuyIe5W.js} +1 -1
- package/bizar-dash/dist/assets/{plug-DBrVM9lK.js.map → plug-BKuyIe5W.js.map} +1 -1
- package/bizar-dash/dist/assets/{plus-DENm0hqV.js → plus-77h62zZm.js} +1 -1
- package/bizar-dash/dist/assets/{plus-DENm0hqV.js.map → plus-77h62zZm.js.map} +1 -1
- package/bizar-dash/dist/assets/{power-DLjXF7zE.js → power-DLmx-gCP.js} +1 -1
- package/bizar-dash/dist/assets/{power-DLjXF7zE.js.map → power-DLmx-gCP.js.map} +1 -1
- package/bizar-dash/dist/assets/{power-off-D47cOnG_.js → power-off-BFKzHXic.js} +1 -1
- package/bizar-dash/dist/assets/{power-off-D47cOnG_.js.map → power-off-BFKzHXic.js.map} +1 -1
- package/bizar-dash/dist/assets/{refresh-ccw-DNrXX9gB.js → refresh-ccw-DenGBOcq.js} +1 -1
- package/bizar-dash/dist/assets/{refresh-ccw-DNrXX9gB.js.map → refresh-ccw-DenGBOcq.js.map} +1 -1
- package/bizar-dash/dist/assets/{refresh-cw-CoAHDpeS.js → refresh-cw-ENBVR8hW.js} +1 -1
- package/bizar-dash/dist/assets/{refresh-cw-CoAHDpeS.js.map → refresh-cw-ENBVR8hW.js.map} +1 -1
- package/bizar-dash/dist/assets/{rotate-ccw-ObX5awaG.js → rotate-ccw-MxryaY7q.js} +1 -1
- package/bizar-dash/dist/assets/{rotate-ccw-ObX5awaG.js.map → rotate-ccw-MxryaY7q.js.map} +1 -1
- package/bizar-dash/dist/assets/{rotate-cw-xpPJw9LP.js → rotate-cw-CDOlRtUR.js} +1 -1
- package/bizar-dash/dist/assets/{rotate-cw-xpPJw9LP.js.map → rotate-cw-CDOlRtUR.js.map} +1 -1
- package/bizar-dash/dist/assets/{save-D1iKiJJl.js → save-Db1b-1Uq.js} +1 -1
- package/bizar-dash/dist/assets/{save-D1iKiJJl.js.map → save-Db1b-1Uq.js.map} +1 -1
- package/bizar-dash/dist/assets/{send-BRcAhZUm.js → send-yz6HFZM5.js} +1 -1
- package/bizar-dash/dist/assets/{send-BRcAhZUm.js.map → send-yz6HFZM5.js.map} +1 -1
- package/bizar-dash/dist/assets/{shield-alert-C6vEcK-g.js → shield-alert-DY6RAaC8.js} +1 -1
- package/bizar-dash/dist/assets/{shield-alert-C6vEcK-g.js.map → shield-alert-DY6RAaC8.js.map} +1 -1
- package/bizar-dash/dist/assets/{trash-2-DZDjEnNh.js → trash-2-Cv7U38jw.js} +1 -1
- package/bizar-dash/dist/assets/{trash-2-DZDjEnNh.js.map → trash-2-Cv7U38jw.js.map} +1 -1
- package/bizar-dash/dist/assets/{trending-up-DMj-AJVf.js → trending-up-CRPNagyX.js} +1 -1
- package/bizar-dash/dist/assets/{trending-up-DMj-AJVf.js.map → trending-up-CRPNagyX.js.map} +1 -1
- package/bizar-dash/dist/assets/{triangle-alert-_2xe_tl4.js → triangle-alert-tUTXbcEP.js} +1 -1
- package/bizar-dash/dist/assets/{triangle-alert-_2xe_tl4.js.map → triangle-alert-tUTXbcEP.js.map} +1 -1
- package/bizar-dash/dist/assets/{upload-DdDljAeV.js → upload-Cq7uTsrT.js} +1 -1
- package/bizar-dash/dist/assets/{upload-DdDljAeV.js.map → upload-Cq7uTsrT.js.map} +1 -1
- package/bizar-dash/dist/assets/{zap-mHsgh0FP.js → zap-5lAQBAPX.js} +1 -1
- package/bizar-dash/dist/assets/{zap-mHsgh0FP.js.map → zap-5lAQBAPX.js.map} +1 -1
- package/bizar-dash/dist/index.html +1 -1
- package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
- package/bizar-dash/src/server/api.mjs +5 -1
- package/bizar-dash/src/server/routes/update.mjs +48 -21
- package/bizar-dash/src/web/v8/App.tsx +0 -4
- package/bizar-dash/src/web/v8/__tests__/new-views.test.tsx +0 -17
- package/bizar-dash/src/web/v8/shell/Sidebar.tsx +3 -4
- package/bizar-dash/src/web/v8/views/Router.tsx +0 -5
- package/bizar-dash/tests/_update-test-helpers.mjs +13 -0
- package/bizar-dash/tests/update-check.test.mjs +18 -13
- package/bizar-dash/tests/update-packages.test.mjs +154 -0
- package/bizar-dash/tests/update-run.test.mjs +17 -80
- package/cli/banner.mjs +1 -1
- package/cli/bin.mjs +8 -1
- package/cli/bootstrap.mjs +1 -1
- package/cli/commands/claude-cmd.mjs +1 -1
- package/cli/commands/deploy/docker.mjs +0 -3
- package/cli/doctor.mjs +1 -1
- package/cli/install/banner.mjs +67 -0
- package/cli/install/banner.test.mjs +39 -0
- package/cli/install/index.mjs +32 -0
- package/cli/install/index.test.mjs +61 -0
- package/cli/install/paths.mjs +80 -0
- package/cli/install/paths.test.mjs +77 -0
- package/cli/install/plugin.mjs +161 -0
- package/cli/install/postinstall.mjs +111 -0
- package/cli/install.mjs +13 -600
- package/cli/migrate.mjs +157 -0
- package/cli/migrate.test.mjs +85 -0
- package/cli/provision.mjs +615 -1918
- package/cli/provision.test.mjs +1 -1
- package/cli/service-controller.test.mjs +0 -1
- package/cli/service-env.mjs +0 -1
- package/cli/utils.mjs +0 -1
- package/install.sh +54 -466
- package/package.json +1 -1
- package/packages/sdk/dist/mcp/server.js +41 -409
- package/packages/sdk/dist/router/q-learning-router.d.ts +3 -5
- package/packages/sdk/dist/router/q-learning-router.js +9 -5
- package/packages/sdk/package.json +1 -1
- package/scripts/install-curl.sh +17 -0
- package/bizar-dash/dist/assets/HeadroomView-D1UiTYbt.js +0 -11
- package/bizar-dash/dist/assets/HeadroomView-D1UiTYbt.js.map +0 -1
- package/bizar-dash/dist/assets/MiscView-B8QY82Pm.js +0 -1
- package/bizar-dash/dist/assets/ObsidianView-BCTejEj2.js +0 -1
- package/bizar-dash/dist/assets/main-CokHAXWM.js.map +0 -1
- package/bizar-dash/skills/headroom/SKILL.md +0 -94
- package/bizar-dash/src/server/headroom.mjs +0 -649
- package/bizar-dash/src/server/routes/headroom.mjs +0 -126
- package/bizar-dash/src/web/v8/views/Headroom/HeadroomView.tsx +0 -201
- package/bizar-dash/tests/graphify-mod-spawn.node.test.mjs +0 -90
- package/bizar-dash/tests/headroom-install.test.mjs +0 -173
- package/bizar-dash/tests/headroom-settings.test.mjs +0 -126
- package/bizar-dash/tests/headroom-status.test.mjs +0 -117
- package/bizar-dash/tests/v7-archive/mobile-overview.test.tsx +0 -214
- package/bizar-dash/tests/v7-archive/mobile-settings.test.tsx +0 -181
- package/bizar-dash/tests/v7-archive/navigation/CommandPalette.test.tsx +0 -105
- package/bizar-dash/tests/v7-archive/settings-nav.test.tsx +0 -128
- package/bizar-dash/tests/v7-archive/views/Overview.test.tsx +0 -413
- package/cli/commands/headroom.mjs +0 -204
- package/cli/provision-claude.mjs +0 -1176
package/cli/provision.test.mjs
CHANGED
|
@@ -178,7 +178,7 @@ describe('buildServiceEnvFile()', () => {
|
|
|
178
178
|
'BIZAR_HOME', 'BIZAR_REPO', 'PATH',
|
|
179
179
|
'CLINE_SERVER_PASSWORD', 'BIZAR_DASHBOARD_PORT',
|
|
180
180
|
'BIZAR_DASHBOARD_HOST', 'BIZAR_LOG_LEVEL',
|
|
181
|
-
'
|
|
181
|
+
'BIZAR_LIGHTRAG_AUTOSTART',
|
|
182
182
|
'BIZAR_MEMORY_VAULT',
|
|
183
183
|
];
|
|
184
184
|
for (const var_ of required) {
|
|
@@ -151,7 +151,6 @@ test('buildServiceEnvFile returns string with all required vars', async () => {
|
|
|
151
151
|
assert.ok(content.includes('BIZAR_DASHBOARD_PORT='), 'BIZAR_DASHBOARD_PORT present');
|
|
152
152
|
assert.ok(content.includes('BIZAR_DASHBOARD_HOST='), 'BIZAR_DASHBOARD_HOST present');
|
|
153
153
|
assert.ok(content.includes('BIZAR_LOG_LEVEL='), 'BIZAR_LOG_LEVEL present');
|
|
154
|
-
assert.ok(content.includes('BIZAR_HEADROOM_AUTOSTART='), 'BIZAR_HEADROOM_AUTOSTART present');
|
|
155
154
|
assert.ok(content.includes('BIZAR_LIGHTRAG_AUTOSTART='), 'BIZAR_LIGHTRAG_AUTOSTART present');
|
|
156
155
|
assert.ok(content.includes('BIZAR_MEMORY_VAULT='), 'BIZAR_MEMORY_VAULT present');
|
|
157
156
|
});
|
package/cli/service-env.mjs
CHANGED
|
@@ -119,7 +119,6 @@ export function buildServiceEnvFile({ bizarHome, repoPath, lightragAutoStart = t
|
|
|
119
119
|
`BIZAR_DASHBOARD_PORT=${env.BIZAR_DASHBOARD_PORT}`,
|
|
120
120
|
`BIZAR_DASHBOARD_HOST=${env.BIZAR_DASHBOARD_HOST}`,
|
|
121
121
|
`BIZAR_LOG_LEVEL=${env.BIZAR_LOG_LEVEL}`,
|
|
122
|
-
`BIZAR_HEADROOM_AUTOSTART=${env.BIZAR_HEADROOM_AUTOSTART}`,
|
|
123
122
|
`BIZAR_LIGHTRAG_AUTOSTART=${env.BIZAR_LIGHTRAG_AUTOSTART}`,
|
|
124
123
|
`BIZAR_MEMORY_VAULT=${env.BIZAR_MEMORY_VAULT}`,
|
|
125
124
|
];
|
package/cli/utils.mjs
CHANGED
|
@@ -161,7 +161,6 @@ export function buildSummary(components, agents, target, skillPacks = []) {
|
|
|
161
161
|
if (components.includes('rules')) parts.push('rules');
|
|
162
162
|
if (components.includes('hooks')) parts.push('hooks');
|
|
163
163
|
if (components.includes('commands')) parts.push('commands');
|
|
164
|
-
parts.push('Headroom');
|
|
165
164
|
parts.push('Semble');
|
|
166
165
|
parts.push('Skills CLI');
|
|
167
166
|
if (skillPacks.length > 0) parts.push(`skills: ${skillPacks.join(', ')}`);
|
package/install.sh
CHANGED
|
@@ -1,498 +1,86 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
|
-
#
|
|
3
|
-
# install.sh
|
|
4
|
-
#
|
|
5
|
-
# v6.3.0 — Migrated from Cline to Claude Code.
|
|
6
|
-
#
|
|
7
|
-
# 1. Detects platform (Linux/macOS/Windows)
|
|
8
|
-
# 2. Installs Node.js 18+, jq, gh, uv, python3 (cross-platform)
|
|
9
|
-
# 3. Installs Claude Code via npm:
|
|
10
|
-
# npm install -g @anthropic-ai/claude-agent-sdk
|
|
11
|
-
# npm install -g @anthropic-ai/claude-code
|
|
12
|
-
# 4. Optionally installs agent-browser (Rust native CLI from vercel-labs)
|
|
13
|
-
# 5. Shells out to `node cli/provision-claude.mjs`, which writes the
|
|
14
|
-
# `~/.claude/` config tree, registers the Bizar MCP server, and
|
|
15
|
-
# copies agent files / skills / commands / hooks / rules.
|
|
16
|
-
#
|
|
17
|
-
# Almost all logic still lives in `cli/provision-claude.mjs:runProvision`,
|
|
18
|
-
# which is shared between `bizar install` and `bizar update`. This bash
|
|
19
|
-
# script exists only for the platform-specific steps that need sudo +
|
|
20
|
-
# a system package manager.
|
|
21
|
-
#
|
|
22
|
-
# Flags:
|
|
23
|
-
# --non-interactive skip prompts (CI safe)
|
|
24
|
-
# --dry-run print actions, make no changes
|
|
25
|
-
# --force overwrite existing files
|
|
26
|
-
# --update this is a re-install
|
|
27
|
-
# --mode=install|update|install-only-system
|
|
28
|
-
# install = full flow (the default)
|
|
29
|
-
# update = alias for install (provisioner auto-detects)
|
|
30
|
-
# install-only-system = only run this bash script, skip
|
|
31
|
-
# the Node provisioner (used for
|
|
32
|
-
# bootstrapping on a fresh box
|
|
33
|
-
# before the npm package is set up)
|
|
34
|
-
#
|
|
35
|
-
# The script exits with the provisioner's exit code.
|
|
36
|
-
|
|
2
|
+
# install.sh — BizarHarness OS dependencies installer
|
|
3
|
+
# Usage: ./install.sh [--non-interactive|--dry-run]
|
|
37
4
|
set -euo pipefail
|
|
38
5
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
NC='\033[0m'
|
|
47
|
-
|
|
48
|
-
note() { echo -e " ${GREEN}✓${NC} $1"; }
|
|
49
|
-
warn() { echo -e " ${YELLOW}⚠${NC} $1"; }
|
|
50
|
-
err() { echo -e " ${RED}✗${NC} $1"; }
|
|
51
|
-
action() { echo -e " ${CYAN}→${NC} $1"; }
|
|
52
|
-
dim() { echo -e " ${DIM}$1${NC}"; }
|
|
53
|
-
section(){
|
|
54
|
-
echo ""
|
|
55
|
-
echo -e "${BOLD}${CYAN}── $1 ──${NC}"
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
have_cmd() { command -v "$1" >/dev/null 2>&1; }
|
|
59
|
-
|
|
60
|
-
# ── Paths ───────────────────────────────────────────────────────────────────
|
|
61
|
-
REPO_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
6
|
+
G='\033[0;32m'; Y='\033[1;33m'; R='\033[0;31m'; N='\033[0m'
|
|
7
|
+
note() { echo -e " ${G}✓${N} $1"; }
|
|
8
|
+
warn() { echo -e " ${Y}⚠${N} $1"; }
|
|
9
|
+
err() { echo -e " ${R}✗${N} $1"; }
|
|
10
|
+
cmd() { command -v "$1" >/dev/null 2>&1; }
|
|
11
|
+
dry() { [ "${DRY:-0}" -eq 0 ] && "$@" || echo " would $*" >&2; }
|
|
12
|
+
sudo_if_needed() { [ "$(id -u)" -ne 0 ] && cmd sudo && SUDO="sudo" || SUDO=""; }
|
|
62
13
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
DRY_RUN=0
|
|
66
|
-
FORCE=0
|
|
67
|
-
UPDATE_MODE=0
|
|
68
|
-
MODE="install"
|
|
69
|
-
|
|
70
|
-
show_usage() {
|
|
71
|
-
cat <<'EOF'
|
|
72
|
-
install.sh — BizarHarness cross-platform installer (Claude Code)
|
|
73
|
-
|
|
74
|
-
Usage:
|
|
75
|
-
./install.sh Interactive install (Linux/macOS)
|
|
76
|
-
./install.sh --help Show this help
|
|
77
|
-
./install.sh --dry-run Dry run — print actions, no changes
|
|
78
|
-
./install.sh --non-interactive Non-interactive (CI safe)
|
|
79
|
-
./install.sh --force Overwrite existing files
|
|
80
|
-
./install.sh --update Alias for --mode=update
|
|
81
|
-
./install.sh --mode=<mode> install | update | install-only-system
|
|
82
|
-
|
|
83
|
-
This script handles platform-specific system dependencies (apt/dnf/pacman/
|
|
84
|
-
zypper on Linux, brew on macOS) and then shells to
|
|
85
|
-
`node cli/provision-claude.mjs`, which writes ~/.claude/, registers the
|
|
86
|
-
Bizar MCP server, copies agents / skills / commands / hooks / rules,
|
|
87
|
-
and runs the post-install doctor check.
|
|
88
|
-
EOF
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
parse_flags() {
|
|
14
|
+
main() {
|
|
15
|
+
local ni=0
|
|
92
16
|
while [ $# -gt 0 ]; do
|
|
93
17
|
case "$1" in
|
|
94
|
-
--help|-h)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
--
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
shift
|
|
18
|
+
--help|-h) cat <<'EOF'
|
|
19
|
+
install.sh — BizarHarness OS-dependencies installer
|
|
20
|
+
./install.sh --non-interactive CI safe
|
|
21
|
+
./install.sh --dry-run print actions, no changes
|
|
22
|
+
EOF
|
|
23
|
+
exit 0;;
|
|
24
|
+
--dry-run) export DRY=1;;
|
|
25
|
+
--non-interactive|-y) ni=1;;
|
|
26
|
+
*) warn "ignoring: $1";;
|
|
27
|
+
esac; shift
|
|
104
28
|
done
|
|
29
|
+
echo "Installing OS dependencies..."
|
|
30
|
+
case "$(uname -s)" in
|
|
31
|
+
Linux) linux;;
|
|
32
|
+
Darwin) macos;;
|
|
33
|
+
*) err "Unsupported OS — use install.ps1 on Windows"; exit 1;;
|
|
34
|
+
esac
|
|
35
|
+
local a=(--mode=install)
|
|
36
|
+
[ "$ni" -eq 1 ] && a+=(--yes)
|
|
37
|
+
[ "${DRY:-0}" -eq 1 ] && a+=(--dry-run)
|
|
38
|
+
exec node "$(dirname "$0")/cli/provision.mjs" "${a[@]}"
|
|
105
39
|
}
|
|
106
40
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
# ── sudo helper ─────────────────────────────────────────────────────────────
|
|
112
|
-
SUDO=""
|
|
113
|
-
sudo_if_needed() {
|
|
114
|
-
if [ "$(id -u)" -ne 0 ] && have_cmd sudo; then SUDO="sudo"; fi
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
# ── Node install (Linux) ────────────────────────────────────────────────────
|
|
118
|
-
ensure_node() {
|
|
119
|
-
if have_cmd node; then
|
|
120
|
-
note "Node.js $(node --version) present"
|
|
121
|
-
return
|
|
122
|
-
fi
|
|
123
|
-
section "Installing Node.js"
|
|
124
|
-
if [ ! -f /etc/os-release ]; then
|
|
125
|
-
err "no /etc/os-release — cannot detect distro"
|
|
126
|
-
err "Install Node.js 18+ manually: https://nodejs.org/"
|
|
127
|
-
exit 1
|
|
128
|
-
fi
|
|
41
|
+
linux() {
|
|
42
|
+
[ ! -f /etc/os-release ] && { err "no /etc/os-release"; exit 1; }
|
|
129
43
|
. /etc/os-release
|
|
44
|
+
note "Detected Linux ($ID)"
|
|
130
45
|
sudo_if_needed
|
|
131
46
|
case "$ID" in
|
|
132
47
|
ubuntu|debian|pop|linuxmint|elementary)
|
|
133
|
-
action "Installing Node.js 20.x via NodeSource (apt)..."
|
|
134
48
|
dry $SUDO apt-get update
|
|
135
49
|
dry $SUDO apt-get install -y ca-certificates curl gnupg
|
|
136
|
-
dry curl -fsSL https://deb.nodesource.com/setup_20.x | $SUDO bash -
|
|
50
|
+
cmd node || dry curl -fsSL https://deb.nodesource.com/setup_20.x | $SUDO bash -
|
|
137
51
|
dry $SUDO apt-get install -y nodejs
|
|
52
|
+
dry $SUDO apt-get install -y --no-install-recommends python3 jq git curl
|
|
138
53
|
;;
|
|
139
54
|
fedora|rhel|rocky|almalinux|centos)
|
|
140
|
-
|
|
141
|
-
dry $SUDO dnf install -y
|
|
142
|
-
dry $SUDO dnf install -y
|
|
55
|
+
cmd node || dry $SUDO dnf install -y https://rpm.nodesource.com/pub_20.x/nodesource-release-nodesource-1.noarch.rpm
|
|
56
|
+
cmd node || dry $SUDO dnf install -y nodejs
|
|
57
|
+
dry $SUDO dnf install -y python3 jq git curl gh
|
|
143
58
|
;;
|
|
144
59
|
arch|manjaro|endeavouros)
|
|
145
|
-
|
|
146
|
-
dry $SUDO pacman -Sy --noconfirm nodejs npm
|
|
60
|
+
dry $SUDO pacman -Sy --noconfirm --needed nodejs npm python jq git curl
|
|
147
61
|
;;
|
|
148
62
|
opensuse*|sles)
|
|
149
|
-
|
|
150
|
-
dry $SUDO zypper install -y nodejs20 npm20
|
|
151
|
-
;;
|
|
152
|
-
alpine)
|
|
153
|
-
action "Installing Node.js via apk..."
|
|
154
|
-
dry $SUDO apk add --no-cache nodejs npm
|
|
63
|
+
dry $SUDO zypper install -y nodejs20 npm20 python3 jq git curl gh
|
|
155
64
|
;;
|
|
65
|
+
alpine) dry $SUDO apk add --no-cache nodejs npm python3 jq git curl ;;
|
|
66
|
+
void) dry $SUDO xbps-install -S nodejs python3 jq git curl ;;
|
|
156
67
|
nixos)
|
|
157
|
-
|
|
158
|
-
warn "
|
|
159
|
-
warn "
|
|
160
|
-
warn " node cli/provision-claude.mjs"
|
|
68
|
+
note "NixOS — manual setup required"
|
|
69
|
+
warn "nix-shell -p nodejs python3 jq gh git"
|
|
70
|
+
warn "node cli/provision.mjs --mode=install"
|
|
161
71
|
exit 0
|
|
162
72
|
;;
|
|
163
|
-
|
|
164
|
-
action "Installing Node.js via xbps..."
|
|
165
|
-
dry $SUDO xbps-install -S nodejs
|
|
166
|
-
;;
|
|
167
|
-
*)
|
|
168
|
-
err "Unsupported distro: $ID"
|
|
169
|
-
err "Install Node.js 18+ manually: https://nodejs.org/"
|
|
170
|
-
exit 1
|
|
171
|
-
;;
|
|
172
|
-
esac
|
|
173
|
-
note "Node.js installed: $(node --version)"
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
# ── Claude Code install ────────────────────────────────────────────────────
|
|
177
|
-
install_claude_code() {
|
|
178
|
-
if have_cmd claude; then
|
|
179
|
-
note "claude $(claude --version 2>/dev/null | head -1) present"
|
|
180
|
-
else
|
|
181
|
-
section "Installing Claude Code"
|
|
182
|
-
if ! have_cmd npm; then
|
|
183
|
-
err "npm not available — install Node.js 18+ first: https://nodejs.org/"
|
|
184
|
-
exit 1
|
|
185
|
-
fi
|
|
186
|
-
action "Installing @anthropic-ai/claude-agent-sdk..."
|
|
187
|
-
dry npm install -g @anthropic-ai/claude-agent-sdk 2>&1 || \
|
|
188
|
-
warn "claude-agent-sdk install failed — retry later: npm install -g @anthropic-ai/claude-agent-sdk"
|
|
189
|
-
action "Installing @anthropic-ai/claude-code..."
|
|
190
|
-
dry npm install -g @anthropic-ai/claude-code 2>&1
|
|
191
|
-
if have_cmd claude; then
|
|
192
|
-
note "claude $(claude --version 2>/dev/null | head -1) installed"
|
|
193
|
-
else
|
|
194
|
-
warn "claude CLI not found on PATH after install — check npm global bin dir"
|
|
195
|
-
fi
|
|
196
|
-
fi
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
# ── Dependency detection + install (cross-platform) ────────────────────────
|
|
200
|
-
check_deps() {
|
|
201
|
-
section "Checking dependencies"
|
|
202
|
-
if ! [ -f "$REPO_DIR/scripts/check-deps.mjs" ]; then
|
|
203
|
-
warn "scripts/check-deps.mjs not found — skipping detailed check"
|
|
204
|
-
return
|
|
205
|
-
fi
|
|
206
|
-
if ! node "$REPO_DIR/scripts/check-deps.mjs" --strict 2>/dev/null; then
|
|
207
|
-
warn "dependency detector reported missing deps — proceeding with best-effort checks"
|
|
208
|
-
else
|
|
209
|
-
note "all required dependencies satisfied"
|
|
210
|
-
fi
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
install_agent_browser() {
|
|
214
|
-
# v6.0.0 — agent-browser (native Rust CLI from vercel-labs). Replaces
|
|
215
|
-
# the v5.x browser-harness (Python CDP wrapper). Installs via npm.
|
|
216
|
-
#
|
|
217
|
-
# If npm is not available, this is a soft-fail: agent-browser is
|
|
218
|
-
# optional, and `cli/provision-claude.mjs:ensureAgentBrowser` will retry it
|
|
219
|
-
# once npm is available.
|
|
220
|
-
if have_cmd agent-browser; then
|
|
221
|
-
local ab_ver
|
|
222
|
-
ab_ver="$(agent-browser --version 2>/dev/null || echo 'unknown')"
|
|
223
|
-
note "agent-browser ${ab_ver} already installed"
|
|
224
|
-
return 0
|
|
225
|
-
fi
|
|
226
|
-
action "Installing agent-browser via npm..."
|
|
227
|
-
if ! have_cmd npm; then
|
|
228
|
-
warn "npm not available — skipping agent-browser install"
|
|
229
|
-
warn " Install later: npm install -g agent-browser"
|
|
230
|
-
return 0
|
|
231
|
-
fi
|
|
232
|
-
if dry npm install -g agent-browser 2>&1; then
|
|
233
|
-
local ab_ver
|
|
234
|
-
ab_ver="$(agent-browser --version 2>/dev/null || echo 'unknown')"
|
|
235
|
-
note "agent-browser ${ab_ver} installed"
|
|
236
|
-
# Download Chrome for Testing
|
|
237
|
-
if dry agent-browser install 2>&1; then
|
|
238
|
-
note "Chrome for Testing downloaded"
|
|
239
|
-
else
|
|
240
|
-
warn "Chrome download failed — retry later: agent-browser install"
|
|
241
|
-
fi
|
|
242
|
-
else
|
|
243
|
-
warn "agent-browser install failed — the browser tools will not be available"
|
|
244
|
-
warn " Install later: npm install -g agent-browser"
|
|
245
|
-
fi
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
install_lightrag() {
|
|
249
|
-
# LightRAG is optional but recommended. Install via uv tool.
|
|
250
|
-
# uv tools install to ~/.local/bin/ — ensure that's on PATH.
|
|
251
|
-
if [ -d "$HOME/.local/bin" ] && [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
|
|
252
|
-
export PATH="$HOME/.local/bin:$PATH"
|
|
253
|
-
fi
|
|
254
|
-
if have_cmd lightrag-server; then
|
|
255
|
-
note "LightRAG $(lightrag-server --version 2>/dev/null || echo 'server') present"
|
|
256
|
-
return 0
|
|
257
|
-
fi
|
|
258
|
-
action "Installing LightRAG via uv tool..."
|
|
259
|
-
if dry uv tool install "lightrag-hku[api]" 2>&1; then
|
|
260
|
-
note "LightRAG installed"
|
|
261
|
-
# Verify reachable
|
|
262
|
-
if [ -f "$HOME/.local/bin/lightrag-server" ]; then
|
|
263
|
-
note "LightRAG binary found at ~/.local/bin/"
|
|
264
|
-
fi
|
|
265
|
-
else
|
|
266
|
-
warn "LightRAG install failed — the memory graph will not be available"
|
|
267
|
-
warn " Install later: uv tool install \"lightrag-hku[api]\""
|
|
268
|
-
fi
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
install_missing_deps_linux() {
|
|
272
|
-
. /etc/os-release 2>/dev/null || return 0
|
|
273
|
-
sudo_if_needed
|
|
274
|
-
case "$ID" in
|
|
275
|
-
ubuntu|debian|pop|linuxmint|elementary)
|
|
276
|
-
action "Installing uv, python3.12, jq, gh via apt..."
|
|
277
|
-
dry $SUDO apt-get update
|
|
278
|
-
dry $SUDO apt-get install -y --no-install-recommends python3 python3-pip jq git curl ca-certificates gnupg
|
|
279
|
-
# uv via official installer (no apt package)
|
|
280
|
-
if ! have_cmd uv; then
|
|
281
|
-
dry curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
282
|
-
note "uv installed via astral.sh"
|
|
283
|
-
fi
|
|
284
|
-
;;
|
|
285
|
-
fedora|rhel|rocky|almalinux|centos)
|
|
286
|
-
action "Installing uv, python3.12, jq, gh via dnf..."
|
|
287
|
-
dry $SUDO dnf install -y python3 python3-pip jq git curl gh
|
|
288
|
-
if ! have_cmd uv; then
|
|
289
|
-
dry curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
290
|
-
note "uv installed via astral.sh"
|
|
291
|
-
fi
|
|
292
|
-
;;
|
|
293
|
-
arch|manjaro|endeavouros)
|
|
294
|
-
action "Installing uv, python3.12, jq, gh via pacman..."
|
|
295
|
-
dry $SUDO pacman -Sy --noconfirm --needed python python-pip jq git curl github-cli
|
|
296
|
-
if ! have_cmd uv; then
|
|
297
|
-
dry curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
298
|
-
note "uv installed via astral.sh"
|
|
299
|
-
fi
|
|
300
|
-
;;
|
|
301
|
-
opensuse*|sles)
|
|
302
|
-
action "Installing uv, python3.12, jq, gh via zypper..."
|
|
303
|
-
dry $SUDO zypper install -y python3 python3-pip jq git curl gh
|
|
304
|
-
if ! have_cmd uv; then
|
|
305
|
-
dry curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
306
|
-
note "uv installed via astral.sh"
|
|
307
|
-
fi
|
|
308
|
-
;;
|
|
309
|
-
alpine)
|
|
310
|
-
action "Installing uv, python3, jq, gh via apk..."
|
|
311
|
-
dry $SUDO apk add --no-cache python3 py3-pip jq git curl
|
|
312
|
-
if ! have_cmd uv; then
|
|
313
|
-
dry curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
314
|
-
note "uv installed via astral.sh"
|
|
315
|
-
fi
|
|
316
|
-
;;
|
|
317
|
-
void)
|
|
318
|
-
action "Installing uv, python3, jq, gh via xbps..."
|
|
319
|
-
dry $SUDO xbps-install -S python3 python3-pip jq git curl
|
|
320
|
-
if ! have_cmd uv; then
|
|
321
|
-
dry curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
322
|
-
note "uv installed via astral.sh"
|
|
323
|
-
fi
|
|
324
|
-
;;
|
|
325
|
-
nixos)
|
|
326
|
-
warn "NixOS detected — LightRAG and other uv tools require manual setup"
|
|
327
|
-
warn " After nix-shell: nix-shell -p nodejs python3 jq gh git"
|
|
328
|
-
warn " Then run: uv tool install \"lightrag-hku[api]\""
|
|
329
|
-
warn " And re-run this installer: node cli/provision-claude.mjs"
|
|
330
|
-
return 0
|
|
331
|
-
;;
|
|
73
|
+
*) err "Unsupported distro: $ID"; exit 1;;
|
|
332
74
|
esac
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
install_missing_deps_macos() {
|
|
338
|
-
if ! have_cmd brew; then
|
|
339
|
-
section "Homebrew"
|
|
340
|
-
action "Installing Homebrew..."
|
|
341
|
-
if [ "$DRY_RUN" -eq 0 ]; then
|
|
342
|
-
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
343
|
-
note "Homebrew installed"
|
|
344
|
-
fi
|
|
345
|
-
else
|
|
346
|
-
note "Homebrew already installed"
|
|
347
|
-
fi
|
|
348
|
-
action "Installing uv, python3.12, jq, gh via brew..."
|
|
349
|
-
dry brew install uv jq gh 2>/dev/null || true
|
|
350
|
-
# LightRAG via uv tool (requires uv to be on PATH)
|
|
351
|
-
install_lightrag
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
# ── Service registration (delegated to Node) ────────────────────────────────
|
|
355
|
-
install_service() {
|
|
356
|
-
section "Installing background service"
|
|
357
|
-
# The unified provisioner does this via `cli/service-controller.mjs`.
|
|
358
|
-
# We still call it from here because the bash script may run standalone
|
|
359
|
-
# (e.g. for first-boot provisioning before the npm package is set up).
|
|
360
|
-
#
|
|
361
|
-
# v6.3.0 — Claude Code does NOT have an out-of-process "server" the way
|
|
362
|
-
# Cline did, so we skip `bizar service install` here. The dashboard
|
|
363
|
-
# (bizar-dash) is launched via `bizar dash start --bg` instead.
|
|
364
|
-
local bin="$REPO_DIR/cli/bin.mjs"
|
|
365
|
-
if [ ! -f "$bin" ]; then
|
|
366
|
-
warn "cli/bin.mjs not found — service registration deferred"
|
|
367
|
-
warn " (will complete when \`bizar service install\` is run later)"
|
|
368
|
-
return 0
|
|
369
|
-
fi
|
|
370
|
-
if [ "$DRY_RUN" -eq 1 ]; then
|
|
371
|
-
dim " would run: node $bin service install"
|
|
372
|
-
return 0
|
|
373
|
-
fi
|
|
374
|
-
if [ "$UPDATE_MODE" -eq 1 ]; then
|
|
375
|
-
dim " update mode: service restart is handled by the Node provisioner"
|
|
376
|
-
return 0
|
|
377
|
-
fi
|
|
378
|
-
if ! node "$bin" service install 2>&1; then
|
|
379
|
-
warn "service registration had issues — see output above"
|
|
380
|
-
dim " manual command: node $bin service install"
|
|
381
|
-
fi
|
|
75
|
+
cmd uv || { note "Installing uv..."; dry curl -LsSf https://astral.sh/uv/install.sh | sh; }
|
|
76
|
+
note "OS dependencies ready"
|
|
382
77
|
}
|
|
383
78
|
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
echo ""
|
|
390
|
-
echo -e "${BOLD}${CYAN}┌────────────────────────────────────────────────────────────┐${NC}"
|
|
391
|
-
echo -e "${BOLD}${CYAN}│${NC} ${BOLD}BizarHarness ready (Claude Code).${NC} │"
|
|
392
|
-
echo -e "${BOLD}${CYAN}│${NC} │"
|
|
393
|
-
echo -e "${BOLD}${CYAN}│${NC} ${GREEN}✓${NC} Cross-platform installer v6.3.0 │"
|
|
394
|
-
echo -e "${BOLD}${CYAN}│${NC} │"
|
|
395
|
-
echo -e "${BOLD}${CYAN}│${NC} Dashboard: ${CYAN}$dashboard_url${NC} │"
|
|
396
|
-
echo -e "${BOLD}${CYAN}│${NC} │"
|
|
397
|
-
echo -e "${BOLD}${CYAN}│${NC} ${DIM}Next:${NC} │"
|
|
398
|
-
echo -e "${BOLD}${CYAN}│${NC} ${DIM} 1. Restart claude to pick up new config${NC} │"
|
|
399
|
-
echo -e "${BOLD}${CYAN}│${NC} ${DIM} 2. Run \`claude auth login\` to add API keys${NC} │"
|
|
400
|
-
echo -e "${BOLD}${CYAN}│${NC} ${DIM} 3. Run 'bizar dash start' to launch the dashboard${NC} │"
|
|
401
|
-
echo -e "${BOLD}${CYAN}│${NC} ${DIM} 4. Visit $dashboard_url in your browser${NC} │"
|
|
402
|
-
echo -e "${BOLD}${CYAN}└────────────────────────────────────────────────────────────┘${NC}"
|
|
403
|
-
echo ""
|
|
404
|
-
if [ "$DRY_RUN" -eq 1 ]; then
|
|
405
|
-
warn "DRY RUN — no changes were made"
|
|
406
|
-
fi
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
# ── OS dispatch ───────────────────────────────────────────────────────────────
|
|
410
|
-
|
|
411
|
-
install_linux() {
|
|
412
|
-
note "Detected Linux ($(uname -m))"
|
|
413
|
-
ensure_node
|
|
414
|
-
check_deps
|
|
415
|
-
install_claude_code
|
|
416
|
-
install_missing_deps_linux
|
|
417
|
-
install_agent_browser
|
|
418
|
-
install_service
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
install_macos() {
|
|
422
|
-
note "Detected macOS ($(uname -m))"
|
|
423
|
-
check_deps
|
|
424
|
-
install_missing_deps_macos
|
|
425
|
-
install_claude_code
|
|
426
|
-
install_agent_browser
|
|
427
|
-
install_service
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
# ── Main ──────────────────────────────────────────────────────────────────────
|
|
431
|
-
|
|
432
|
-
main() {
|
|
433
|
-
parse_flags "$@"
|
|
434
|
-
|
|
435
|
-
if [ "$DRY_RUN" -eq 1 ]; then
|
|
436
|
-
dim "DRY RUN MODE — no changes will be made"
|
|
437
|
-
echo ""
|
|
438
|
-
fi
|
|
439
|
-
|
|
440
|
-
echo ""
|
|
441
|
-
echo -e "${BOLD}${CYAN} ⚡ BizarHarness Installer v6.3.0 (Claude Code)${NC}"
|
|
442
|
-
if [ "$UPDATE_MODE" -eq 1 ]; then
|
|
443
|
-
echo -e " ${DIM}Update mode${NC}"
|
|
444
|
-
fi
|
|
445
|
-
echo ""
|
|
446
|
-
|
|
447
|
-
# OS detection
|
|
448
|
-
local os
|
|
449
|
-
os="$(uname -s)"
|
|
450
|
-
case "$os" in
|
|
451
|
-
Linux) install_linux ;;
|
|
452
|
-
Darwin) install_macos ;;
|
|
453
|
-
*)
|
|
454
|
-
err "Unsupported OS: $os"
|
|
455
|
-
echo ""
|
|
456
|
-
warn "On Windows, run install.ps1 instead."
|
|
457
|
-
warn "On other Unix systems, ensure Node.js 18+ is available and run:"
|
|
458
|
-
warn " node scripts/check-deps.mjs"
|
|
459
|
-
echo ""
|
|
460
|
-
exit 1
|
|
461
|
-
;;
|
|
462
|
-
esac
|
|
463
|
-
|
|
464
|
-
# ── Hand off to the unified provisioner (Node) ─────────────────────────
|
|
465
|
-
# All cross-OS work (agent files, command copy, ~/.claude/ settings,
|
|
466
|
-
# MCP server registration, skills/rules/hooks mirror) lives in
|
|
467
|
-
# `cli/provision-claude.mjs:runProvision`. It's idempotent — skipping
|
|
468
|
-
# it (e.g. via --install-only-system) is fine for first-boot scenarios
|
|
469
|
-
# where the npm package isn't yet set up.
|
|
470
|
-
if [ "$MODE" = "install-only-system" ]; then
|
|
471
|
-
note "skipped node provisioner (--mode=install-only-system)"
|
|
472
|
-
exit 0
|
|
473
|
-
fi
|
|
474
|
-
|
|
475
|
-
if [ -f "$REPO_DIR/cli/provision-claude.mjs" ]; then
|
|
476
|
-
echo ""
|
|
477
|
-
section "Running unified provisioner"
|
|
478
|
-
local args=(--mode "$MODE")
|
|
479
|
-
[ "$DRY_RUN" -eq 1 ] && args+=(--dry-run)
|
|
480
|
-
[ "$FORCE" -eq 1 ] && args+=(--force)
|
|
481
|
-
[ "$NON_INTERACTIVE" -eq 1 ] && args+=(--yes)
|
|
482
|
-
# `set +e` so we capture the provisioner's exit code and surface it.
|
|
483
|
-
set +e
|
|
484
|
-
node "$REPO_DIR/cli/provision-claude.mjs" "${args[@]}"
|
|
485
|
-
local rc=$?
|
|
486
|
-
set -e
|
|
487
|
-
if [ "$rc" -ne 0 ]; then
|
|
488
|
-
warn "provisioner exited with code $rc"
|
|
489
|
-
exit "$rc"
|
|
490
|
-
fi
|
|
491
|
-
print_banner
|
|
492
|
-
else
|
|
493
|
-
warn "cli/provision-claude.mjs not found — agent files / MCP / settings.json"
|
|
494
|
-
warn " were NOT synced. Run \`bizar install\` from a checkout to fix."
|
|
495
|
-
fi
|
|
79
|
+
macos() {
|
|
80
|
+
note "Detected macOS"
|
|
81
|
+
cmd brew || { err "Homebrew not found — install from https://brew.sh"; exit 1; }
|
|
82
|
+
dry brew install uv jq gh
|
|
83
|
+
note "OS dependencies ready"
|
|
496
84
|
}
|
|
497
85
|
|
|
498
86
|
main "$@"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polderlabs/bizar",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.4.0",
|
|
4
4
|
"description": "Norse-pantheon multi-agent system for Claude Code — 14 agents across 4 cost tiers with cost-aware routing, plans, and a configurable agent harness. Ships as a single npm package with the dashboard server, Claude Code MCP server, and typed SDK.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|