@polderlabs/bizar 10.0.5 → 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/CHANGELOG.md +120 -0
- package/bizar-dash/dist/assets/{ActivityFeed-DbZT1TnN.js → ActivityFeed-Da-JCrE6.js} +1 -1
- package/bizar-dash/dist/assets/{ActivityFeed-DbZT1TnN.js.map → ActivityFeed-Da-JCrE6.js.map} +1 -1
- 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-DSbzp67e.js → AdminView-DP1NMxmG.js} +1 -1
- package/bizar-dash/dist/assets/{AdminView-DSbzp67e.js.map → AdminView-DP1NMxmG.js.map} +1 -1
- 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-BaR-e4UO.js → AgentsView-BIWGkz7w.js} +3 -3
- package/bizar-dash/dist/assets/{AgentsView-BaR-e4UO.js.map → AgentsView-BIWGkz7w.js.map} +1 -1
- 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-Dddh5NWn.js → ArtifactsView-CDIhPBAx.js} +1 -1
- package/bizar-dash/dist/assets/{ArtifactsView-Dddh5NWn.js.map → ArtifactsView-CDIhPBAx.js.map} +1 -1
- package/bizar-dash/dist/assets/{AuthView-CcTxahxz.js → AuthView-DW5cs7ma.js} +3 -3
- package/bizar-dash/dist/assets/{AuthView-CcTxahxz.js.map → AuthView-DW5cs7ma.js.map} +1 -1
- 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-DxiSs69H.js.map → BackgroundJobsView-D8O-EyMD.js.map} +1 -1
- package/bizar-dash/dist/assets/{BackupView-BPS8REBD.js → BackupView-uwXkhxOV.js} +1 -1
- package/bizar-dash/dist/assets/{BackupView-BPS8REBD.js.map → BackupView-uwXkhxOV.js.map} +1 -1
- package/bizar-dash/dist/assets/{Card-ZAdgpn3-.js → Card-Tyboihu7.js} +1 -1
- package/bizar-dash/dist/assets/{Card-ZAdgpn3-.js.map → Card-Tyboihu7.js.map} +1 -1
- package/bizar-dash/dist/assets/{ChatView-CM_mrwom.js → ChatView-DRBHzgay.js} +3 -3
- package/bizar-dash/dist/assets/{ChatView-CM_mrwom.js.map → ChatView-DRBHzgay.js.map} +1 -1
- package/bizar-dash/dist/assets/{Chip-k5K9DYAf.js → Chip-BrXIlR9w.js} +1 -1
- package/bizar-dash/dist/assets/{Chip-k5K9DYAf.js.map → Chip-BrXIlR9w.js.map} +1 -1
- package/bizar-dash/dist/assets/{ClaudeSessionsView-Dq40JNVC.js → ClaudeSessionsView-Ck62jaOr.js} +1 -1
- package/bizar-dash/dist/assets/{ClaudeSessionsView-Dq40JNVC.js.map → ClaudeSessionsView-Ck62jaOr.js.map} +1 -1
- package/bizar-dash/dist/assets/{ClipboardView-B-TwPtaC.js → ClipboardView-DfND6xL6.js} +1 -1
- package/bizar-dash/dist/assets/{ClipboardView-B-TwPtaC.js.map → ClipboardView-DfND6xL6.js.map} +1 -1
- package/bizar-dash/dist/assets/{ConfigView-C_eZMscY.js → ConfigView-DjJmSrOJ.js} +1 -1
- package/bizar-dash/dist/assets/{ConfigView-C_eZMscY.js.map → ConfigView-DjJmSrOJ.js.map} +1 -1
- package/bizar-dash/dist/assets/{DiagnosticsView-Cex6UdD8.js → DiagnosticsView-CKgItf0J.js} +1 -1
- package/bizar-dash/dist/assets/{DiagnosticsView-Cex6UdD8.js.map → DiagnosticsView-CKgItf0J.js.map} +1 -1
- package/bizar-dash/dist/assets/{DialogsView-DTMRJd0K.js → DialogsView-DHYF8dE1.js} +2 -2
- package/bizar-dash/dist/assets/{DialogsView-DTMRJd0K.js.map → DialogsView-DHYF8dE1.js.map} +1 -1
- package/bizar-dash/dist/assets/{DoctorView-BTCUpzXT.js → DoctorView-DDLHrSKk.js} +2 -2
- package/bizar-dash/dist/assets/{DoctorView-BTCUpzXT.js.map → DoctorView-DDLHrSKk.js.map} +1 -1
- package/bizar-dash/dist/assets/{EmptyState-DQzo47a_.js → EmptyState-DZ2ouKwd.js} +1 -1
- package/bizar-dash/dist/assets/{EmptyState-DQzo47a_.js.map → EmptyState-DZ2ouKwd.js.map} +1 -1
- package/bizar-dash/dist/assets/{EnvVarsView-Dnap-pmQ.js → EnvVarsView-D1cx83mB.js} +1 -1
- package/bizar-dash/dist/assets/{EnvVarsView-Dnap-pmQ.js.map → EnvVarsView-D1cx83mB.js.map} +1 -1
- 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-B0YgoXpm.js → EvalView-C9aYixXW.js} +1 -1
- package/bizar-dash/dist/assets/{EvalView-B0YgoXpm.js.map → EvalView-C9aYixXW.js.map} +1 -1
- package/bizar-dash/dist/assets/{GoalsView-YEbgpx2i.js → GoalsView-DZa_mGmh.js} +1 -1
- package/bizar-dash/dist/assets/{GoalsView-YEbgpx2i.js.map → GoalsView-DZa_mGmh.js.map} +1 -1
- package/bizar-dash/dist/assets/{Grid-CN6IV8NB.js → Grid-CiRyhAgR.js} +1 -1
- package/bizar-dash/dist/assets/{Grid-CN6IV8NB.js.map → Grid-CiRyhAgR.js.map} +1 -1
- package/bizar-dash/dist/assets/{HeadroomView-C_-l8ojG.js → HeadroomView-CNc-TI7u.js} +1 -1
- package/bizar-dash/dist/assets/{HeadroomView-C_-l8ojG.js.map → HeadroomView-CNc-TI7u.js.map} +1 -1
- package/bizar-dash/dist/assets/HistoryView-Dv7aPxJE.js +1 -0
- package/bizar-dash/dist/assets/{HistoryView-BICvR96Y.js.map → HistoryView-Dv7aPxJE.js.map} +1 -1
- package/bizar-dash/dist/assets/{Input-BRHotaQu.js → Input-BbFUDQnS.js} +1 -1
- package/bizar-dash/dist/assets/{Input-BRHotaQu.js.map → Input-BbFUDQnS.js.map} +1 -1
- 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-DKfQd0lo.js → LightRAGView-JYpE5u9p.js} +1 -1
- package/bizar-dash/dist/assets/{LightRAGView-DKfQd0lo.js.map → LightRAGView-JYpE5u9p.js.map} +1 -1
- package/bizar-dash/dist/assets/{ListHeader-DRqP1u_I.js → ListHeader-BGjm11Z0.js} +1 -1
- package/bizar-dash/dist/assets/{ListHeader-DRqP1u_I.js.map → ListHeader-BGjm11Z0.js.map} +1 -1
- package/bizar-dash/dist/assets/{MemoryView-DouzHGXp.js → MemoryView-CnOP2MvM.js} +1 -1
- package/bizar-dash/dist/assets/{MemoryView-DouzHGXp.js.map → MemoryView-CnOP2MvM.js.map} +1 -1
- package/bizar-dash/dist/assets/{MessageBubble-CIapZ4YY.js → MessageBubble-5vUAquDx.js} +1 -1
- package/bizar-dash/dist/assets/{MessageBubble-CIapZ4YY.js.map → MessageBubble-5vUAquDx.js.map} +1 -1
- package/bizar-dash/dist/assets/MiscView-BBcpUbZZ.js +1 -0
- package/bizar-dash/dist/assets/{MiscView-BqxBRW9r.js.map → MiscView-BBcpUbZZ.js.map} +1 -1
- package/bizar-dash/dist/assets/{ModsView-B9apzm7l.js → ModsView-CU4cAmIz.js} +2 -2
- package/bizar-dash/dist/assets/{ModsView-B9apzm7l.js.map → ModsView-CU4cAmIz.js.map} +1 -1
- package/bizar-dash/dist/assets/{NotificationsView-O1BrGRRZ.js → NotificationsView-BYffvthq.js} +1 -1
- package/bizar-dash/dist/assets/{NotificationsView-O1BrGRRZ.js.map → NotificationsView-BYffvthq.js.map} +1 -1
- package/bizar-dash/dist/assets/ObsidianView-D3bI0row.js +1 -0
- package/bizar-dash/dist/assets/{ObsidianView-0_Nc0IwJ.js.map → ObsidianView-D3bI0row.js.map} +1 -1
- package/bizar-dash/dist/assets/{OverviewView-D6WmCxyc.js → OverviewView-0tq8f-Y0.js} +1 -1
- package/bizar-dash/dist/assets/{OverviewView-D6WmCxyc.js.map → OverviewView-0tq8f-Y0.js.map} +1 -1
- package/bizar-dash/dist/assets/ProgressBar-B-h60LKA.js +1 -0
- package/bizar-dash/dist/assets/{ProgressBar-BXqAmiA8.js.map → ProgressBar-B-h60LKA.js.map} +1 -1
- package/bizar-dash/dist/assets/{ProjectsView-BbHq_OF3.js → ProjectsView-DhX5lzHS.js} +2 -2
- package/bizar-dash/dist/assets/{ProjectsView-BbHq_OF3.js.map → ProjectsView-DhX5lzHS.js.map} +1 -1
- package/bizar-dash/dist/assets/{ProvidersView-dQOPha2i.js → ProvidersView-CJMX7jm9.js} +2 -2
- package/bizar-dash/dist/assets/{ProvidersView-dQOPha2i.js.map → ProvidersView-CJMX7jm9.js.map} +1 -1
- package/bizar-dash/dist/assets/{SchedulesView-DllGEgon.js → SchedulesView-CcwDQ9Nm.js} +1 -1
- package/bizar-dash/dist/assets/{SchedulesView-DllGEgon.js.map → SchedulesView-CcwDQ9Nm.js.map} +1 -1
- 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-BNSh_paj.js → SettingsRow-DgsgbPSI.js} +1 -1
- package/bizar-dash/dist/assets/{SettingsRow-BNSh_paj.js.map → SettingsRow-DgsgbPSI.js.map} +1 -1
- package/bizar-dash/dist/assets/{SettingsView-B2LyDoxB.js → SettingsView-DTAFdKyK.js} +3 -3
- package/bizar-dash/dist/assets/{SettingsView-B2LyDoxB.js.map → SettingsView-DTAFdKyK.js.map} +1 -1
- package/bizar-dash/dist/assets/{Sheet-C-djzbtS.js → Sheet-DH-WNJ3Y.js} +1 -1
- package/bizar-dash/dist/assets/{Sheet-C-djzbtS.js.map → Sheet-DH-WNJ3Y.js.map} +1 -1
- package/bizar-dash/dist/assets/{Slider-DmOSInmR.js → Slider-DXbJuQ7y.js} +1 -1
- package/bizar-dash/dist/assets/{Slider-DmOSInmR.js.map → Slider-DXbJuQ7y.js.map} +1 -1
- package/bizar-dash/dist/assets/{Sparkline-fGhOoGf0.js → Sparkline-CYtAn82j.js} +1 -1
- package/bizar-dash/dist/assets/{Sparkline-fGhOoGf0.js.map → Sparkline-CYtAn82j.js.map} +1 -1
- package/bizar-dash/dist/assets/{Switch-D5gPfsKd.js → Switch-BItGrPqr.js} +1 -1
- package/bizar-dash/dist/assets/{Switch-D5gPfsKd.js.map → Switch-BItGrPqr.js.map} +1 -1
- 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-Cv1HX9p1.js.map → Textarea-qYDf3yds.js.map} +1 -1
- package/bizar-dash/dist/assets/{UpdateView-Bj0LzpMs.js → UpdateView-Xln-ej26.js} +1 -1
- package/bizar-dash/dist/assets/{UpdateView-Bj0LzpMs.js.map → UpdateView-Xln-ej26.js.map} +1 -1
- package/bizar-dash/dist/assets/UsageView-BGuZSUZ6.js +1 -0
- package/bizar-dash/dist/assets/{UsageView-CE-23yYu.js.map → UsageView-BGuZSUZ6.js.map} +1 -1
- package/bizar-dash/dist/assets/{ViewHeader-2Oyjj9Yt.js → ViewHeader-BqIPVKuG.js} +1 -1
- package/bizar-dash/dist/assets/{ViewHeader-2Oyjj9Yt.js.map → ViewHeader-BqIPVKuG.js.map} +1 -1
- package/bizar-dash/dist/assets/{VoiceView-C3S92MfP.js → VoiceView-CWUOCQs_.js} +1 -1
- package/bizar-dash/dist/assets/{VoiceView-C3S92MfP.js.map → VoiceView-CWUOCQs_.js.map} +1 -1
- package/bizar-dash/dist/assets/{brain-B8oDQ4kM.js → brain-fsBSDl2g.js} +1 -1
- package/bizar-dash/dist/assets/{brain-B8oDQ4kM.js.map → brain-fsBSDl2g.js.map} +1 -1
- package/bizar-dash/dist/assets/{calendar-C1WTDPNZ.js → calendar-DsHTZoCU.js} +1 -1
- package/bizar-dash/dist/assets/{calendar-C1WTDPNZ.js.map → calendar-DsHTZoCU.js.map} +1 -1
- package/bizar-dash/dist/assets/{circle-COwUk6Jw.js → circle-CqSxqqeJ.js} +1 -1
- package/bizar-dash/dist/assets/{circle-COwUk6Jw.js.map → circle-CqSxqqeJ.js.map} +1 -1
- package/bizar-dash/dist/assets/{circle-alert-D_fRRCnG.js → circle-alert-BsLl001l.js} +1 -1
- package/bizar-dash/dist/assets/{circle-alert-D_fRRCnG.js.map → circle-alert-BsLl001l.js.map} +1 -1
- package/bizar-dash/dist/assets/{circle-check-CYpMZPTO.js → circle-check-rVKMQmZp.js} +1 -1
- package/bizar-dash/dist/assets/{circle-check-CYpMZPTO.js.map → circle-check-rVKMQmZp.js.map} +1 -1
- package/bizar-dash/dist/assets/{clock-BsVbT1kp.js → clock-OuficfgH.js} +1 -1
- package/bizar-dash/dist/assets/{clock-BsVbT1kp.js.map → clock-OuficfgH.js.map} +1 -1
- package/bizar-dash/dist/assets/{cmdk-DMW_3pWz.js → cmdk-DVxytz9i.js} +5 -5
- package/bizar-dash/dist/assets/{cmdk-DMW_3pWz.js.map → cmdk-DVxytz9i.js.map} +1 -1
- package/bizar-dash/dist/assets/{dnd-kit-DWBZ6HFE.js → dnd-kit-DrHErSkw.js} +1 -1
- package/bizar-dash/dist/assets/{dnd-kit-DWBZ6HFE.js.map → dnd-kit-DrHErSkw.js.map} +1 -1
- package/bizar-dash/dist/assets/{download-Cct5qHWG.js → download-BdHlstUY.js} +1 -1
- package/bizar-dash/dist/assets/{download-Cct5qHWG.js.map → download-BdHlstUY.js.map} +1 -1
- package/bizar-dash/dist/assets/{external-link-CKZQsK9X.js → external-link-DA3_VGm-.js} +1 -1
- package/bizar-dash/dist/assets/{external-link-CKZQsK9X.js.map → external-link-DA3_VGm-.js.map} +1 -1
- package/bizar-dash/dist/assets/{file-text-DNFl94X6.js → file-text-B-g8H227.js} +1 -1
- package/bizar-dash/dist/assets/{file-text-DNFl94X6.js.map → file-text-B-g8H227.js.map} +1 -1
- package/bizar-dash/dist/assets/{play-DF3wgBsQ.js → filter-D9B8s5CG.js} +2 -2
- package/bizar-dash/dist/assets/filter-D9B8s5CG.js.map +1 -0
- package/bizar-dash/dist/assets/{git-pull-request-o7G3ez_L.js → git-pull-request-ByH0YuVz.js} +1 -1
- package/bizar-dash/dist/assets/{git-pull-request-o7G3ez_L.js.map → git-pull-request-ByH0YuVz.js.map} +1 -1
- 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-B_hjj388.js → pause-C9hgd8wX.js} +1 -1
- package/bizar-dash/dist/assets/{pause-B_hjj388.js.map → pause-C9hgd8wX.js.map} +1 -1
- package/bizar-dash/dist/assets/{pencil-BQXiRgKu.js → pencil-BanqaMw7.js} +1 -1
- package/bizar-dash/dist/assets/{pencil-BQXiRgKu.js.map → pencil-BanqaMw7.js.map} +1 -1
- package/bizar-dash/dist/assets/{chevron-down-DjgW4FtB.js → play-CawUZ02_.js} +2 -2
- package/bizar-dash/dist/assets/{play-DF3wgBsQ.js.map → play-CawUZ02_.js.map} +1 -1
- package/bizar-dash/dist/assets/{plug-DpD127rq.js → plug-Cmv0-T_e.js} +1 -1
- package/bizar-dash/dist/assets/{plug-DpD127rq.js.map → plug-Cmv0-T_e.js.map} +1 -1
- package/bizar-dash/dist/assets/{plus-CbojvfqK.js → plus-M6LYiKX8.js} +1 -1
- package/bizar-dash/dist/assets/{plus-CbojvfqK.js.map → plus-M6LYiKX8.js.map} +1 -1
- package/bizar-dash/dist/assets/{power-uH0f5Ihr.js → power-DP5x_SRF.js} +1 -1
- package/bizar-dash/dist/assets/{power-uH0f5Ihr.js.map → power-DP5x_SRF.js.map} +1 -1
- package/bizar-dash/dist/assets/{power-off-EnQo8iQy.js → power-off-NOJRLAIs.js} +1 -1
- package/bizar-dash/dist/assets/{power-off-EnQo8iQy.js.map → power-off-NOJRLAIs.js.map} +1 -1
- package/bizar-dash/dist/assets/{refresh-ccw-BQ_hQs-U.js → refresh-ccw-CHMprsm5.js} +1 -1
- package/bizar-dash/dist/assets/{refresh-ccw-BQ_hQs-U.js.map → refresh-ccw-CHMprsm5.js.map} +1 -1
- package/bizar-dash/dist/assets/{refresh-cw-CYS8luDH.js → refresh-cw-1RBqDKgJ.js} +1 -1
- package/bizar-dash/dist/assets/{refresh-cw-CYS8luDH.js.map → refresh-cw-1RBqDKgJ.js.map} +1 -1
- package/bizar-dash/dist/assets/{rotate-ccw-CTVANG1v.js → rotate-ccw-DJRekBbi.js} +1 -1
- package/bizar-dash/dist/assets/{rotate-ccw-CTVANG1v.js.map → rotate-ccw-DJRekBbi.js.map} +1 -1
- package/bizar-dash/dist/assets/{rotate-cw-BSsC5XrT.js → rotate-cw-DHooc0Tx.js} +1 -1
- package/bizar-dash/dist/assets/{rotate-cw-BSsC5XrT.js.map → rotate-cw-DHooc0Tx.js.map} +1 -1
- package/bizar-dash/dist/assets/{save-kxSwq3AI.js → save-DQKCKyZK.js} +1 -1
- package/bizar-dash/dist/assets/{save-kxSwq3AI.js.map → save-DQKCKyZK.js.map} +1 -1
- package/bizar-dash/dist/assets/{send-DkuyD_Sf.js → send-xgy3RAi7.js} +2 -2
- package/bizar-dash/dist/assets/{send-DkuyD_Sf.js.map → send-xgy3RAi7.js.map} +1 -1
- package/bizar-dash/dist/assets/{shield-alert-COajyBNI.js → shield-alert-CWV2F5ab.js} +1 -1
- package/bizar-dash/dist/assets/{shield-alert-COajyBNI.js.map → shield-alert-CWV2F5ab.js.map} +1 -1
- package/bizar-dash/dist/assets/{trash-2-BzH_id_0.js → trash-2-CL4khSRv.js} +2 -2
- package/bizar-dash/dist/assets/{trash-2-BzH_id_0.js.map → trash-2-CL4khSRv.js.map} +1 -1
- package/bizar-dash/dist/assets/{trending-up-DWgBlnxO.js → trending-up-CSJJhWTS.js} +1 -1
- package/bizar-dash/dist/assets/{trending-up-DWgBlnxO.js.map → trending-up-CSJJhWTS.js.map} +1 -1
- package/bizar-dash/dist/assets/{triangle-alert-D3wjJjjj.js → triangle-alert-BPLb7uLt.js} +1 -1
- package/bizar-dash/dist/assets/{triangle-alert-D3wjJjjj.js.map → triangle-alert-BPLb7uLt.js.map} +1 -1
- package/bizar-dash/dist/assets/{upload--yQe-28C.js → upload-Cww6MvFq.js} +1 -1
- package/bizar-dash/dist/assets/{upload--yQe-28C.js.map → upload-Cww6MvFq.js.map} +1 -1
- package/bizar-dash/dist/assets/{zap-BVpFD6-i.js → zap-DmhVUzRA.js} +2 -2
- package/bizar-dash/dist/assets/{zap-BVpFD6-i.js.map → zap-DmhVUzRA.js.map} +1 -1
- package/bizar-dash/dist/index.html +2 -2
- package/bizar-dash/src/server/api.mjs +2 -2
- package/bizar-dash/src/server/artifact-mint.mjs +69 -0
- package/bizar-dash/src/server/routes/activity.mjs +22 -2
- package/bizar-dash/src/server/routes/agents-cc.mjs +25 -2
- package/bizar-dash/src/server/routes/dialogs.mjs +18 -1
- package/bizar-dash/src/server/routes/goals.mjs +18 -1
- package/bizar-dash/src/server/routes/skills.mjs +6 -1
- package/bizar-dash/src/server/skills-store.mjs +2 -0
- package/bizar-dash/src/web/v8/App.tsx +11 -0
- package/bizar-dash/src/web/v8/data/types.ts +13 -1
- package/bizar-dash/src/web/v8/data/useViewNavigate.ts +54 -0
- package/bizar-dash/src/web/v8/shell/Sidebar.tsx +59 -13
- 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/index.ts +42 -1
- 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/KanbanCardBadges.tsx +111 -0
- 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/kanban/KanbanEmptyColumn.tsx +43 -0
- package/bizar-dash/src/web/v8/ui/kanban/KanbanProgress.tsx +130 -0
- package/bizar-dash/src/web/v8/ui/kanban/KanbanToolbar.tsx +291 -0
- package/bizar-dash/src/web/v8/ui/kanban/useKanbanSelection.ts +90 -0
- package/bizar-dash/src/web/v8/views/Activity/ActivityView.tsx +133 -179
- package/bizar-dash/src/web/v8/views/Tasks/TasksView.tsx +86 -30
- package/package.json +2 -1
- package/packages/sdk/package.json +1 -1
- package/plugins/bizar/package.json +1 -1
- package/bizar-dash/dist/assets/ActivityView-DfrBu-ED.js +0 -7
- package/bizar-dash/dist/assets/ActivityView-DfrBu-ED.js.map +0 -1
- package/bizar-dash/dist/assets/BackgroundJobsView-DxiSs69H.js +0 -1
- package/bizar-dash/dist/assets/Banner-Bx1hIUM9.js +0 -1
- package/bizar-dash/dist/assets/Banner-Bx1hIUM9.js.map +0 -1
- package/bizar-dash/dist/assets/ErrorState-DZYn3VL_.js +0 -6
- package/bizar-dash/dist/assets/ErrorState-DZYn3VL_.js.map +0 -1
- package/bizar-dash/dist/assets/HistoryView-BICvR96Y.js +0 -1
- package/bizar-dash/dist/assets/KanbanCard-BvkJ9Xwg.js +0 -11
- package/bizar-dash/dist/assets/KanbanCard-BvkJ9Xwg.js.map +0 -1
- package/bizar-dash/dist/assets/LibrariesView-BXjfXc-o.js +0 -52
- package/bizar-dash/dist/assets/LibrariesView-BXjfXc-o.js.map +0 -1
- package/bizar-dash/dist/assets/MiscView-BqxBRW9r.js +0 -1
- package/bizar-dash/dist/assets/ObsidianView-0_Nc0IwJ.js +0 -1
- package/bizar-dash/dist/assets/ProgressBar-BXqAmiA8.js +0 -1
- package/bizar-dash/dist/assets/Select-xrQ0htmD.js +0 -6
- package/bizar-dash/dist/assets/Select-xrQ0htmD.js.map +0 -1
- package/bizar-dash/dist/assets/TasksView-Dw4YtwQB.js +0 -1
- package/bizar-dash/dist/assets/TasksView-Dw4YtwQB.js.map +0 -1
- package/bizar-dash/dist/assets/Textarea-Cv1HX9p1.js +0 -1
- package/bizar-dash/dist/assets/UsageView-CE-23yYu.js +0 -1
- package/bizar-dash/dist/assets/chevron-down-DjgW4FtB.js.map +0 -1
- package/bizar-dash/dist/assets/git-branch-qmhKTtT0.js +0 -6
- package/bizar-dash/dist/assets/git-branch-qmhKTtT0.js.map +0 -1
- package/bizar-dash/dist/assets/index-CRPdftkz.js +0 -1
- package/bizar-dash/dist/assets/index-CRPdftkz.js.map +0 -1
- package/bizar-dash/dist/assets/index-VI2tohpo.js +0 -1
- package/bizar-dash/dist/assets/index-VI2tohpo.js.map +0 -1
- package/bizar-dash/dist/assets/main-zDgXFFYt.js +0 -244
- package/bizar-dash/dist/assets/main-zDgXFFYt.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{j as e,r as d}from"./cmdk-
|
|
1
|
+
import{j as e,r as d}from"./cmdk-DVxytz9i.js";import{c as oe,B as L,A as te,g as ye,S as A,I as $,d as E,u as _,h as U,i as J,a as se,N as xe,C as je,b as be,j as Se,F as q}from"./main-CdOm1Pj9.js";import{G as re}from"./Grid-CiRyhAgR.js";import{C as ke,V as we}from"./ViewHeader-BqIPVKuG.js";import{L as Ce}from"./ListHeader-BGjm11Z0.js";import{A as ie,G as ze,B as Re}from"./Avatar-DZPv9pvd.js";import{P as Te}from"./ProgressBar-B-h60LKA.js";import{Z as $e}from"./zap-DmhVUzRA.js";import{S as le,a as de}from"./Sheet-DH-WNJ3Y.js";import{T as Ie}from"./Textarea-qYDf3yds.js";import{C as ce,b as ue}from"./Card-Tyboihu7.js";import{P as ge}from"./play-CawUZ02_.js";import{P as ae}from"./pause-C9hgd8wX.js";import{R as Ee}from"./refresh-cw-1RBqDKgJ.js";import{S as Ae}from"./send-xgy3RAi7.js";import{R as fe}from"./rotate-cw-DHooc0Tx.js";import{C as X}from"./Chip-BrXIlR9w.js";import{E as Me}from"./ErrorState-DwwJ2-Jq.js";import{I as ne}from"./Input-BbFUDQnS.js";import{E as Le}from"./EmptyState-DZ2ouKwd.js";import{P as Oe}from"./plus-M6LYiKX8.js";import{T as Pe}from"./triangle-alert-BPLb7uLt.js";import"./Alert-DN0UysMg.js";import"./circle-alert-BsLl001l.js";import"./circle-check-rVKMQmZp.js";import"./refresh-ccw-CHMprsm5.js";/**
|
|
2
2
|
* @license lucide-react v0.460.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -8,6 +8,6 @@ import{j as e,r as d}from"./cmdk-DMW_3pWz.js";import{g as oe,B as L,A as te,c as
|
|
|
8
8
|
*
|
|
9
9
|
* This source code is licensed under the ISC license.
|
|
10
10
|
* See the LICENSE file in the root directory of this source tree.
|
|
11
|
-
*/const Ne=oe("Octagon",[["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}]]),De={idle:"Idle",busy:"Busy",error:"Error",paused:"Paused"},Fe={idle:"neutral",busy:"info",error:"danger",paused:"neutral"},Ue={idle:"var(--fg-subtle)",busy:"var(--info)",error:"var(--danger)",paused:"var(--warning)"};function He(t){if(typeof t!="number"||!Number.isFinite(t)||t<=0)return"—";const a=Math.max(0,Date.now()-t),r=Math.floor(a/1e3);if(r<60)return`${r}s ago`;const n=Math.floor(r/60);if(n<60)return`${n}m ago`;const c=Math.floor(n/60);return c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`}function We(t){return t>=.8?"success":t>=.5?"warning":"danger"}function Je(t){return typeof t!="number"||!Number.isFinite(t)||t<=0?"neutral":(Date.now()-t)/864e5>1?"danger":"neutral"}function _e(t){const{name:a,role:r,status:n,lastActivity:c,currentTask:f,tasksToday:o,tasksSucceeded:w,tasksTotal:h,successRate:v,lastSeenMs:S,onOpen:R,badges:b,className:m}=t,u=typeof w=="number"&&typeof h=="number"||typeof v=="number"||typeof S=="number";return e.jsxs("button",{type:"button",onClick:R,className:ye("v8-agent-card",`v8-agent-card--${n}`,m),style:{display:"flex",flexDirection:"column",gap:"var(--space-3)",width:"100%",padding:"var(--space-4)",background:"var(--surface-1)",border:"1px solid var(--border)",borderRadius:"var(--radius-lg)",textAlign:"left",cursor:"pointer",font:"inherit",color:"inherit",transition:"border-color var(--motion-fast) var(--ease-out)"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:[e.jsx(ie,{name:a,status:n==="busy"||n==="error"?"busy":n==="idle"?"online":"away"}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsx("div",{style:{fontSize:"var(--fs-14)",fontWeight:600,color:"var(--fg)",lineHeight:"var(--lh-snug)"},children:a}),e.jsx("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",marginTop:2},children:r})]}),e.jsx(L,{tone:Fe[n],dot:!0,children:De[n]})]}),f!==void 0&&e.jsx("div",{style:{fontSize:"var(--fs-13)",color:"var(--fg)",background:"var(--surface-0)",border:"1px solid var(--border)",borderRadius:"var(--radius-sm)",padding:"var(--space-2) var(--space-3)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:f,children:f}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[c!==void 0&&e.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e.jsx(te,{size:12,"aria-hidden":"true",style:{color:Ue[n]}}),c]}),o!==void 0&&e.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e.jsx(
|
|
11
|
+
*/const Ne=oe("Octagon",[["path",{d:"M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z",key:"2d38gg"}]]),De={idle:"Idle",busy:"Busy",error:"Error",paused:"Paused"},Fe={idle:"neutral",busy:"info",error:"danger",paused:"neutral"},Ue={idle:"var(--fg-subtle)",busy:"var(--info)",error:"var(--danger)",paused:"var(--warning)"};function He(t){if(typeof t!="number"||!Number.isFinite(t)||t<=0)return"—";const a=Math.max(0,Date.now()-t),r=Math.floor(a/1e3);if(r<60)return`${r}s ago`;const n=Math.floor(r/60);if(n<60)return`${n}m ago`;const c=Math.floor(n/60);return c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`}function We(t){return t>=.8?"success":t>=.5?"warning":"danger"}function Je(t){return typeof t!="number"||!Number.isFinite(t)||t<=0?"neutral":(Date.now()-t)/864e5>1?"danger":"neutral"}function _e(t){const{name:a,role:r,status:n,lastActivity:c,currentTask:f,tasksToday:o,tasksSucceeded:w,tasksTotal:h,successRate:v,lastSeenMs:S,onOpen:R,badges:b,className:m}=t,u=typeof w=="number"&&typeof h=="number"||typeof v=="number"||typeof S=="number";return e.jsxs("button",{type:"button",onClick:R,className:ye("v8-agent-card",`v8-agent-card--${n}`,m),style:{display:"flex",flexDirection:"column",gap:"var(--space-3)",width:"100%",padding:"var(--space-4)",background:"var(--surface-1)",border:"1px solid var(--border)",borderRadius:"var(--radius-lg)",textAlign:"left",cursor:"pointer",font:"inherit",color:"inherit",transition:"border-color var(--motion-fast) var(--ease-out)"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)"},children:[e.jsx(ie,{name:a,status:n==="busy"||n==="error"?"busy":n==="idle"?"online":"away"}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsx("div",{style:{fontSize:"var(--fs-14)",fontWeight:600,color:"var(--fg)",lineHeight:"var(--lh-snug)"},children:a}),e.jsx("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",marginTop:2},children:r})]}),e.jsx(L,{tone:Fe[n],dot:!0,children:De[n]})]}),f!==void 0&&e.jsx("div",{style:{fontSize:"var(--fs-13)",color:"var(--fg)",background:"var(--surface-0)",border:"1px solid var(--border)",borderRadius:"var(--radius-sm)",padding:"var(--space-2) var(--space-3)",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:f,children:f}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"var(--space-3)",fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[c!==void 0&&e.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e.jsx(te,{size:12,"aria-hidden":"true",style:{color:Ue[n]}}),c]}),o!==void 0&&e.jsxs("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[e.jsx($e,{size:12,"aria-hidden":"true"}),o," today"]})]}),u&&e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:"var(--space-2)"},children:[typeof w=="number"&&typeof h=="number"&&h>0&&e.jsxs("div",{"data-testid":"agent-card-tasks",style:{display:"flex",flexDirection:"column",gap:2},children:[e.jsxs("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[e.jsx("span",{style:{textTransform:"uppercase",letterSpacing:"0.04em"},children:"tasks"}),e.jsxs("code",{style:{fontFamily:"var(--font-mono)",color:"var(--fg)"},children:[w," / ",h]})]}),e.jsx(Te,{value:w,max:h,tone:"accent",height:4})]}),typeof v=="number"&&e.jsxs("div",{"data-testid":"agent-card-success",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[e.jsx("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",textTransform:"uppercase",letterSpacing:"0.04em"},children:"success"}),e.jsxs(L,{"data-testid":"agent-card-success-badge",tone:We(v),children:[Math.round(v*100),"% success"]})]}),typeof S=="number"&&e.jsxs("div",{"data-testid":"agent-card-lastseen",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:8},children:[e.jsx("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",textTransform:"uppercase",letterSpacing:"0.04em"},children:"last seen"}),e.jsx(L,{"data-testid":"agent-card-lastseen-badge",tone:Je(S),children:He(S)})]})]}),b!==void 0&&e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4},children:b}),e.jsx("style",{children:`
|
|
12
12
|
.v8-agent-card:hover { border-color: var(--accent); }
|
|
13
|
-
`})]})}const ee=500;function Ke(t){const{sessionId:a,paused:r}=t,[n,c]=d.useState([]),[f,o]=d.useState("connecting"),[w,h]=d.useState(null),[v,S]=d.useState(!1),[R,b]=d.useState(!0),m=d.useRef(null),u=d.useRef(null);d.useEffect(()=>{if(r||v){u.current&&(u.current.close(),u.current=null),o("paused");return}if(typeof window>"u"||typeof EventSource>"u"){o("error"),h("EventSource not available in this environment.");return}o("connecting"),h(null);const i=`/api/agent-stream/live?sessionId=${encodeURIComponent(a)}`,p=new EventSource(i);u.current=p;const I=x=>{try{const C=JSON.parse(x.data);Array.isArray(C.events)&&c(C.events.slice(-ee)),o("live")}catch{}},O=x=>{try{const C=JSON.parse(x.data);c(B=>{const N=B.length>=ee?B.slice(B.length-ee+1):B.slice();return N.push(C),N}),o("live")}catch{}},T=x=>{try{const C=JSON.parse(x.data);o("closed"),h(C.reason?`Stream ended: ${C.reason}`:null)}catch{}},P=x=>{try{const C=JSON.parse(x.data);o("error"),h(C.error||"stream error")}catch{}};return p.addEventListener("snapshot",I),p.addEventListener("event",O),p.addEventListener("agent:event",O),p.addEventListener("end",T),p.addEventListener("error",P),p.onerror=()=>{o("error"),h("Connection dropped. Click Retry to reconnect.")},()=>{p.close(),u.current=null}},[a,r,v]),d.useEffect(()=>{if(!R||!m.current)return;const i=m.current;i.scrollTop=i.scrollHeight},[n,R]);const k=(i,p)=>{var P,x,C;const I=i.role==="user"?"user":i.role==="assistant"?"assistant":(P=i.tool)!=null&&P.name?"tool":"system",O=(x=i.tool)!=null&&x.name?`${i.tool.name}`:i.role?i.role:i.type||"event",T=typeof i.content=="string"?i.content:(C=i.tool)!=null&&C.input?JSON.stringify(i.tool.input).slice(0,240):typeof i.message=="string"?i.message:i.result?JSON.stringify(i.result).slice(0,240):JSON.stringify(i).slice(0,240);return e.jsxs("div",{style:{padding:"4px 8px",borderRadius:"var(--radius-sm)",background:I==="user"?"color-mix(in oklch, var(--accent) 8%, var(--surface-0))":I==="tool"?"color-mix(in oklch, var(--warning) 8%, var(--surface-0))":I==="system"?"var(--surface-1)":"var(--surface-0)",fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[e.jsxs("span",{style:{color:"var(--fg-muted)"},children:[O,": "]}),e.jsx("span",{style:{color:"var(--fg)"},children:T})]},p)};return e.jsxs(A,{gap:2,children:[e.jsxs($,{align:"center",justify:"between",children:[e.jsxs($,{align:"center",gap:2,children:[e.jsx("span",{"aria-hidden":!0,style:{width:8,height:8,borderRadius:"50%",background:f==="live"?"var(--success)":f==="connecting"?"var(--warning)":f==="paused"||f==="closed"?"var(--fg-muted)":"var(--danger)"}}),e.jsxs("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[f==="live"?"Live":f==="connecting"?"Connecting…":f==="paused"?"Paused":f==="closed"?"Closed":"Error"," · ",n.length," events"]})]}),e.jsxs($,{align:"center",gap:1,children:[e.jsx(E,{variant:"ghost",onClick:()=>S(i=>!i),title:v?"Resume stream":"Pause stream","aria-label":v?"Resume stream":"Pause stream",children:v?e.jsx(ge,{size:12,"aria-hidden":!0}):e.jsx(ae,{size:12,"aria-hidden":!0})}),e.jsx(E,{variant:"ghost",onClick:()=>c([]),title:"Clear buffer","aria-label":"Clear output",children:"Clear"}),e.jsxs(E,{variant:"ghost",onClick:()=>{c([]),S(!1)},title:"Reconnect","aria-label":"Reconnect stream",children:[e.jsx($e,{size:12,"aria-hidden":!0})," Retry"]}),e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:4,fontSize:"var(--fs-12)",color:"var(--fg-muted)",cursor:"pointer"},children:[e.jsx("input",{type:"checkbox",checked:R,onChange:i=>b(i.target.checked)}),"follow"]})]})]}),w!==null&&e.jsx("div",{role:"alert",style:{fontSize:"var(--fs-12)",color:"var(--danger)"},children:w}),e.jsx("div",{ref:m,onScroll:i=>{const p=i.currentTarget,I=p.scrollHeight-p.scrollTop-p.clientHeight<20;b(I)},style:{maxHeight:280,minHeight:120,overflowY:"auto",border:"1px solid var(--border)",borderRadius:"var(--radius-md)",padding:"var(--space-2)",display:"flex",flexDirection:"column",gap:4,background:"var(--surface-1)"},role:"log","aria-live":"polite","aria-label":"Agent live output",children:n.length===0?e.jsx("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:f==="connecting"?"Connecting to agent stream…":"No events yet."}):n.map(k)})]})}function Ve(t){return t.startsWith("bizar:")?{source:"bizar",key:t.slice(6)}:t.startsWith("cc:")?{source:"claude-code",key:t.slice(3)}:{source:"bizar",key:t}}function Ge(t){const{agentId:a,name:r,role:n,status:c,currentTask:f,open:o,onOpenChange:w,startedAt:h,messageCount:v,lastMessageSnippet:S,successRate:R,tasksTotal:b}=t,{source:m,key:u}=Ve(a),[k,i]=d.useState(""),[p,I]=d.useState(null),[O,T]=d.useState(null),[P,x]=d.useState(null),[C,B]=d.useState(null),N=_(o?"/api/tasks":null),H=d.useMemo(()=>{var z;return o?(((z=N.data)==null?void 0:z.tasks)??[]).filter(F=>{const W=F.metadata??{};return typeof F.workedBy=="string"&&F.workedBy===u||W.agent===u}):[]},[o,N.data,u]);d.useEffect(()=>{o&&(i(""),T(null),x(null),B(null))},[o,a]);const D=async(j,z,F,W)=>{I(j),T(null),x(null);try{const M=await J(F,{method:z,body:W});if(M.ok){const G=M.sessionId?` (session ${M.sessionId.slice(0,8)})`:"";M.processId&&B(M.processId),T(`${j} succeeded${G}`)}else x(M.error||`${j} failed`)}catch(M){x(M instanceof Error?M.message:String(M))}finally{I(null)}},K=async()=>{if(!k.trim())return;const j=k.trim();i(""),m==="claude-code"?await D("Send prompt","POST",`/api/cc-agents/${encodeURIComponent(u)}/send`,{prompt:j}):await D("Invoke agent","POST",`/api/agents/${encodeURIComponent(u)}/invoke`,{prompt:j})},V=async()=>{if(!(typeof window<"u"&&typeof window.confirm=="function")||window.confirm(`Restart ${r}? The current session will be killed and a fresh one spawned.`)){if(m==="claude-code"){const z=k.trim()||"continue from the last checkpoint";await D("Restart","POST",`/api/cc-agents/${encodeURIComponent(u)}/restart`,{prompt:z});return}await D("Restart","POST",`/api/agents/${encodeURIComponent(u)}/restart`)}},Y=async()=>{if(m==="claude-code"){await D("Kill","POST",`/api/cc-agents/${encodeURIComponent(u)}/kill`);return}if(!(typeof window<"u"&&typeof window.confirm=="function")||window.confirm(`Delete Bizar agent "${u}"? This is irreversible.`)){I("Kill"),T(null),x(null);try{await J(`/api/agents/${encodeURIComponent(u)}`,{method:"DELETE"}),T(`Killed ${r}`),w(!1)}catch(z){x(z instanceof Error?z.message:String(z))}finally{I(null)}}},Z=async()=>{try{await navigator.clipboard.writeText(u),T(`Copied "${u}"`)}catch{x("Clipboard unavailable")}};return e.jsx(le,{open:o,onOpenChange:w,children:e.jsx(de,{side:"right",title:r,children:e.jsxs(A,{gap:4,style:{padding:"var(--space-4)"},children:[e.jsxs($,{gap:3,align:"center",children:[e.jsx(ie,{name:r,status:c==="busy"||c==="error"?"busy":"online"}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsx("div",{style:{fontSize:"var(--fs-13)",color:"var(--fg-muted)"},children:n}),e.jsxs($,{gap:2,style:{marginTop:4},wrap:!0,children:[e.jsx(L,{tone:c==="busy"?"info":c==="error"?"danger":"neutral",dot:!0,children:c}),e.jsx(L,{tone:"accent",children:m==="bizar"?"Bizar agent":"Claude Code"}),h!==void 0&&e.jsxs(L,{tone:"neutral",title:new Date(h).toLocaleString(),children:["up ",qe(Date.now()-h)]}),typeof v=="number"&&e.jsxs(L,{tone:"neutral",children:[v," msg"]}),typeof b=="number"&&e.jsxs(L,{tone:"neutral",children:[b," tasks"]}),typeof R=="number"&&e.jsxs(L,{tone:R>=.8?"success":R>=.5?"warning":"danger",children:[Math.round(R*100),"% success"]})]})]})]}),typeof S=="string"&&S.length>0&&e.jsxs("div",{style:{padding:"var(--space-2) var(--space-3)",background:"var(--surface-1)",border:"1px solid var(--border)",borderRadius:"var(--radius-md)",fontSize:"var(--fs-12)",color:"var(--fg-muted)",fontStyle:"italic"},title:S,children:["“",S.length>240?`${S.slice(0,240)}…`:S,"”"]}),f!==void 0&&e.jsxs("div",{style:{padding:"var(--space-3)",background:"var(--surface-0)",border:"1px solid var(--border)",borderRadius:"var(--radius-md)",fontSize:"var(--fs-13)"},children:[e.jsxs("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",marginBottom:4},children:[e.jsx(te,{size:12,"aria-hidden":!0,style:{verticalAlign:"middle",marginRight:4}}),"Current task"]}),f]}),e.jsxs(A,{gap:2,children:[e.jsx("label",{htmlFor:`agent-prompt-${a}`,style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:"Send a prompt"}),e.jsx(Te,{id:`agent-prompt-${a}`,value:k,onChange:j=>i(j.target.value),placeholder:m==="claude-code"?"Type a follow-up for this background agent…":"Invoke this Bizar agent with…",rows:3,disabled:p!==null}),e.jsxs($,{gap:2,children:[e.jsxs(E,{variant:"primary",onClick:()=>{K()},disabled:!k.trim()||p!==null,children:[e.jsx(Ie,{size:14,"aria-hidden":!0})," ",p==="Send prompt"||p==="Invoke agent"?e.jsx(U,{style:{width:60,height:14}}):"Send"]}),e.jsxs(E,{variant:"secondary",onClick:()=>{V()},disabled:p!==null||m==="claude-code",title:m==="claude-code"?"Use command palette to spawn a fresh agent":void 0,children:[e.jsx(fe,{size:14,"aria-hidden":!0})," Restart"]}),e.jsxs(E,{variant:"danger",onClick:()=>{Y()},disabled:p!==null,title:m==="claude-code"?"Kill the CC background session":`Delete Bizar agent "${u}"`,children:[e.jsx(Ne,{size:14,"aria-hidden":!0})," Kill"]}),e.jsxs(E,{variant:"ghost",onClick:()=>{Z()},children:[e.jsx(Be,{size:14,"aria-hidden":!0})," Copy id"]})]})]}),O!==null&&e.jsx("div",{role:"status",style:{padding:"var(--space-2) var(--space-3)",background:"color-mix(in oklch, var(--success) 12%, var(--surface-0))",border:"1px solid color-mix(in oklch, var(--success) 40%, var(--border))",borderRadius:"var(--radius-md)",fontSize:"var(--fs-12)",color:"var(--success)"},children:O}),C!==null&&e.jsxs("div",{style:{padding:"var(--space-2) var(--space-3)",background:"var(--surface-0)",border:"1px solid var(--border)",borderRadius:"var(--radius-md)",fontSize:"var(--fs-12)",color:"var(--fg-muted)",display:"flex",alignItems:"center",gap:"var(--space-2)"},children:[e.jsx("span",{style:{textTransform:"uppercase",letterSpacing:"0.04em"},children:"PID"}),e.jsx("code",{"data-testid":"agent-process-id",style:{fontFamily:"var(--font-mono)",color:"var(--fg)",background:"var(--surface-1)",padding:"2px 6px",borderRadius:"var(--radius-sm)"},children:C})]}),P!==null&&e.jsx("div",{role:"alert",style:{padding:"var(--space-2) var(--space-3)",background:"color-mix(in oklch, var(--danger) 12%, var(--surface-0))",border:"1px solid color-mix(in oklch, var(--danger) 40%, var(--border))",borderRadius:"var(--radius-md)",fontSize:"var(--fs-12)",color:"var(--danger)"},children:P}),e.jsxs(A,{gap:2,children:[e.jsxs("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",textTransform:"uppercase",letterSpacing:"0.04em"},children:["Assigned tasks (",H.length,")"]}),N.loading&&H.length===0?e.jsx(U,{style:{height:48}}):H.length===0?e.jsx(ce,{variant:"outlined",children:e.jsx(ue,{children:e.jsx("span",{"data-testid":"agent-tasks-empty",style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:"No tasks assigned to this agent."})})}):e.jsx(A,{gap:1,children:H.map(j=>e.jsxs("div",{"data-testid":`agent-tasks-${j.id}`,style:{display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"var(--space-2) var(--space-3)",background:"var(--surface-0)",border:"1px solid var(--border)",borderRadius:"var(--radius-sm)",fontSize:"var(--fs-13)"},children:[e.jsx("code",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:j.id}),e.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:j.title}),e.jsx(L,{tone:j.status==="doing"?"info":j.status==="blocked"?"danger":"neutral",children:j.status??"queued"})]},j.id))})]}),m==="claude-code"&&e.jsxs(A,{gap:2,children:[e.jsxs("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",textTransform:"uppercase",letterSpacing:"0.04em"},children:[e.jsx(te,{size:12,"aria-hidden":!0,style:{verticalAlign:"middle",marginRight:4}}),"Live output"]}),e.jsx(Ke,{sessionId:u,paused:p==="Kill"})]})]})})})}function qe(t){if(!Number.isFinite(t)||t<0)return"—";const a=Math.floor(t/1e3);if(a<60)return`${a}s`;const r=Math.floor(a/60);if(r<60)return`${r}m ${a%60}s`;const n=Math.floor(r/60);return n<24?`${n}h ${r%60}m`:`${Math.floor(n/24)}d ${n%24}h`}function Ye(t){const a=(t||"").toLowerCase();return a==="busy"||a==="working"?"info":a==="idle"?"neutral":a==="error"||a==="stuck"?"danger":a==="paused"?"warning":"neutral"}function Ze(t){const a=(t||"").toLowerCase();return a==="working"?"working":a||"idle"}function Qe(t){if(typeof t!="number"||!Number.isFinite(t)||t<=0)return"—";const a=Math.max(0,Date.now()-t),r=Math.floor(a/1e3);if(r<60)return`${r}s ago`;const n=Math.floor(r/60);if(n<60)return`${n}m ago`;const c=Math.floor(n/60);return c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`}function pe({node:t,depth:a,expanded:r,onToggle:n}){const c=t.children.length>0,f=r.has(t.name),o=t.agent,w=Ye(o==null?void 0:o.status),h=Ze(o==null?void 0:o.status);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{"data-testid":`agent-hierarchy-node-${t.name}`,style:{display:"grid",gridTemplateColumns:"auto 1fr auto auto",alignItems:"center",gap:"var(--space-3)",padding:"var(--space-2) var(--space-3)",paddingLeft:`calc(var(--space-3) + ${a*24}px)`,border:"1px solid var(--border)",borderRadius:"var(--radius-md)",background:"var(--surface-1)"},children:[c?e.jsx("button",{type:"button","data-testid":`agent-hierarchy-toggle-${t.name}`,"aria-label":f?"Collapse":"Expand",onClick:()=>n(t.name),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:22,height:22,borderRadius:"var(--radius-sm)",border:"1px solid var(--border)",background:"var(--surface-0)",color:"var(--fg-muted)",cursor:"pointer",padding:0},children:f?e.jsx(Me,{size:12,"aria-hidden":!0}):e.jsx(Se,{size:12,"aria-hidden":!0})}):e.jsx("span",{"aria-hidden":!0,style:{width:22,height:22,display:"inline-flex",alignItems:"center",justifyContent:"center",color:"var(--fg-subtle)"},children:e.jsx(Le,{size:12})}),e.jsxs("div",{style:{minWidth:0},children:[e.jsx("div",{style:{fontSize:"var(--fs-13)",fontWeight:600,color:"var(--fg)"},children:t.name}),o&&e.jsxs("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[o.role||o.category||o.mode||"agent",o.parent&&o.parent!==t.name&&e.jsxs(e.Fragment,{children:[" · parent ",e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:o.parent})]})]})]}),typeof(o==null?void 0:o.lastSeen)=="number"&&o.lastSeen>0&&e.jsx("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",fontFamily:"var(--font-mono)"},children:Qe(o.lastSeen)}),e.jsx(L,{tone:w,dot:!0,children:h})]}),c&&f&&t.children.map(v=>e.jsx(pe,{node:v,depth:a+1,expanded:r,onToggle:n},v.name))]})}function Xe(){var v,S,R;const t=_("/api/agents/hierarchy"),[a,r]=d.useState(()=>new Set),[n,c]=d.useState(()=>new Set),f=d.useMemo(()=>{var b,m;return((m=(b=t.data)==null?void 0:b.roots)==null?void 0:m.map(u=>u.name))??[]},[t.data]);n.size===0&&f.length>0&&(c(new Set(f)),r(new Set(f)));const o=d.useCallback(()=>t.refetch(),[t]);se("agents:change",o);const w=d.useCallback(b=>{r(m=>{const u=new Set(m);return u.has(b)?u.delete(b):u.add(b),u})},[]);if(t.loading&&!t.data)return e.jsxs(A,{gap:3,children:[e.jsx(U,{style:{height:48}}),e.jsx(U,{style:{height:48}}),e.jsx(U,{style:{height:48}})]});const h=((v=t.data)==null?void 0:v.roots)??[];return h.length===0?e.jsx(ce,{children:e.jsx(ue,{children:e.jsx(Ae,{icon:e.jsx(xe,{size:32,"aria-hidden":!0}),title:"No hierarchy yet",description:"Agents have no parent links in their frontmatter. Add `parent:` to an agent's .md frontmatter to nest it beneath another agent.","data-testid":"agent-hierarchy-empty"})})}):e.jsxs(A,{gap:2,children:[e.jsx($,{align:"center",justify:"between",children:e.jsxs("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[h.length," root agent",h.length===1?"":"s"," · ",((R=(S=t.data)==null?void 0:S.all)==null?void 0:R.length)??0," total"]})}),e.jsx(A,{gap:2,children:h.map(b=>e.jsx(pe,{node:b,depth:0,expanded:a,onToggle:w},b.name))})]})}const he="bizar.agents.sourceFilter",me={all:"All",bizar:"Bizar","claude-code":"Claude Code"},et=Object.keys(me);function tt(){if(typeof localStorage>"u")return"all";const t=localStorage.getItem(he);return et.includes(t)?t:"all"}function st(t){if(!Number.isFinite(t)||t<=0)return"—";const a=Math.max(0,Date.now()-t),r=Math.floor(a/1e3);if(r<60)return`${r}s ago`;const n=Math.floor(r/60);if(n<60)return`${n}m ago`;const c=Math.floor(n/60);return c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`}function at(t){const a=(t.status||"idle").toLowerCase(),r=a==="busy"||a==="working"?"busy":a==="error"||a==="stuck"?"error":a==="paused"?"paused":"idle";return{id:`bizar:${t.name}`,name:t.name,role:t.role||t.category||t.mode||"agent",status:r,currentTask:t.currentTaskId?`Task ${t.currentTaskId}`:void 0,lastActivity:t.lastSeen?new Date(t.lastSeen).toLocaleTimeString():void 0,tasksToday:t.tasksTotal||0,tasksSucceeded:typeof t.tasksSucceeded=="number"?t.tasksSucceeded:void 0,tasksTotal:typeof t.tasksTotal=="number"?t.tasksTotal:void 0,successRate:typeof t.successRate=="number"?t.successRate:void 0,lastSeenMs:typeof t.lastSeen=="number"&&t.lastSeen>0?t.lastSeen:void 0,badges:t.tags||[]}}function rt(t){var n,c;const a=(t.status||t.state||"idle").toLowerCase(),r=a==="busy"||a==="working"?"busy":a==="error"?"error":a==="paused"?"paused":"idle";return{id:`cc:${t.sessionId||t.id}`,name:t.name||((n=t.sessionId)==null?void 0:n.slice(0,8))||"unknown",role:t.kind==="background"?"CC background":"CC interactive",status:r,currentTask:t.lastMessageSnippet||void 0,lastActivity:t.lastMessageAt?new Date(t.lastMessageAt).toLocaleTimeString():t.startedAt?new Date(t.startedAt).toLocaleTimeString():void 0,tasksToday:t.messageCount||0,badges:[((c=t.cwd)==null?void 0:c.split("/").slice(-2).join("/"))||""].filter(Boolean)}}function At(){var F,W,M,G;const t=_("/api/agents"),a=_("/api/cc-agents"),r=_("/api/agents/stuck"),[n,c]=d.useState(tt),[f,o]=d.useState("roster");d.useEffect(()=>{typeof localStorage<"u"&&localStorage.setItem(he,n)},[n]);const[w,h]=d.useState([]),[v,S]=d.useState([]),[R,b]=d.useState(!1),[m,u]=d.useState(null),[k,i]=d.useState(null),[p,I]=d.useState(!1),[O,T]=d.useState(null),[P,x]=d.useState(()=>new Set),C=async()=>{if(!(k===null||!k.name.trim())){I(!0),T(null);try{await J("/api/agents",{method:"POST",body:{name:k.name.trim(),role:k.role.trim()||"agent"}}),i(null),t.refetch()}catch(s){T((s instanceof q,s.message))}finally{I(!1)}}},B=async s=>{x(l=>new Set(l).add(s));try{await J(`/api/agents/${encodeURIComponent(s)}/restart`,{method:"POST"}),r.refetch(),t.refetch()}catch(l){T((l instanceof q,l.message))}finally{x(l=>{const g=new Set(l);return g.delete(s),g})}},[N,H]=d.useState(()=>new Set),D=async(s,l)=>{H(g=>new Set(g).add(s));try{await J(`/api/agents/${encodeURIComponent(s)}/status`,{method:"POST",body:{status:l}}),r.refetch(),t.refetch()}catch(g){T((g instanceof q,g.message))}finally{H(g=>{const y=new Set(g);return y.delete(s),y})}},[K,V]=d.useState(!1),Y=async()=>{var l;const s=((l=r.data)==null?void 0:l.stuck)??[];if(s.length!==0){V(!0);try{await Promise.all(s.map(g=>J(`/api/agents/${encodeURIComponent(g.name)}/status`,{method:"POST",body:{status:"paused"}}).catch(y=>(T((y instanceof q,y.message)),null)))),r.refetch(),t.refetch()}finally{V(!1)}}};d.useEffect(()=>{var s,l;!R&&((s=t.data)==null?void 0:s.agents)!==void 0&&((l=a.data)==null?void 0:l.agents)!==void 0&&(b(!0),h(t.data.agents),S(a.data.agents))},[t.data,a.data,R]);const Z=d.useCallback(()=>{t.refetch(),a.refetch()},[t,a]);se("agents:change",Z);const j=d.useCallback(s=>{if(s.type!=="agent:status")return;const l=s.agent;!l||!l.name||h(g=>{const y=g.findIndex(ve=>ve.name===l.name);if(y===-1)return[...g,l];const Q=g.slice();return Q[y]={...Q[y],...l},Q})},[]);se("agent:status",j);const z=d.useMemo(()=>{const s=[];if(n!=="claude-code")for(const l of w)s.push({...at(l),source:"bizar"});if(n!=="bizar")for(const l of v)s.push({...rt(l),source:"claude-code"});return s},[w,v,n]);return e.jsxs(A,{gap:5,"data-testid":"agents-view",children:[e.jsx(ke,{title:"Agents",description:"Bizar agents (frontmatter-driven) and Claude Code background agents.",actions:e.jsxs(E,{variant:"primary",onClick:()=>i({name:"",role:""}),"data-testid":"agent-create-open",children:[e.jsx(Oe,{size:14,"aria-hidden":!0})," New agent"]})}),e.jsx(we,{title:"Roster",count:z.length,description:(F=r.data)!=null&&F.stuck&&r.data.stuck.length>0?`${r.data.stuck.length} stuck`:void 0,testid:"agents-list-header"}),(((W=r.data)==null?void 0:W.stuck)??[]).length>0&&e.jsx(Ce,{tone:"warning","data-testid":"agents-stuck-banner",action:e.jsxs($,{gap:2,children:[e.jsxs(E,{variant:"secondary",size:"sm",onClick:()=>{Y()},disabled:K,"data-testid":"agents-stuck-bulk-pause",title:"Pause every stuck agent at once",children:[e.jsx(ae,{size:12,"aria-hidden":!0})," ",K?"Pausing…":"Pause all"]}),e.jsx(E,{variant:"secondary",size:"sm",onClick:()=>o("hierarchy"),children:"View details"})]}),children:e.jsxs(A,{gap:2,children:[e.jsxs($,{align:"center",gap:2,children:[e.jsx(Pe,{size:14,"aria-hidden":!0,style:{color:"var(--warning)"}}),e.jsxs("span",{children:[(((M=r.data)==null?void 0:M.stuck)??[]).length," agent",r.data&&r.data.stuck&&r.data.stuck.length===1?"":"s"," stuck (no heartbeat >5m)"]})]}),e.jsx(A,{gap:1,children:(((G=r.data)==null?void 0:G.stuck)??[]).map(s=>{const l=P.has(s.name),g=s.status==="paused",y=l||N.has(s.name);return e.jsxs($,{align:"center",justify:"between",gap:2,"data-testid":`agents-stuck-row-${s.name}`,children:[e.jsxs($,{gap:2,align:"center",children:[e.jsx("code",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)"},children:s.name}),e.jsx(L,{tone:g?"warning":"danger",children:g?"paused":s.status||"stuck"}),typeof s.lastSeen=="number"&&s.lastSeen>0&&e.jsxs("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:["last seen ",st(s.lastSeen)]})]}),e.jsxs($,{gap:1,children:[g?e.jsxs(E,{variant:"ghost",size:"sm",disabled:y,onClick:()=>{D(s.name,"idle")},"data-testid":`agents-stuck-resume-${s.name}`,children:[e.jsx(ge,{size:12,"aria-hidden":!0})," Resume"]}):e.jsxs(E,{variant:"secondary",size:"sm",disabled:y,onClick:()=>{D(s.name,"paused")},"data-testid":`agents-stuck-pause-${s.name}`,children:[e.jsx(ae,{size:12,"aria-hidden":!0})," Pause"]}),e.jsxs(E,{variant:"primary",size:"sm",disabled:y,onClick:()=>{B(s.name)},"data-testid":`agents-stuck-restart-${s.name}`,children:[e.jsx(fe,{size:12,"aria-hidden":!0})," ",l?"Restarting…":"Restart"]})]})]},s.name)})})]})}),e.jsxs($,{align:"center",justify:"between",wrap:!0,gap:2,children:[e.jsx($,{gap:2,children:["all","bizar","claude-code"].map(s=>e.jsxs(X,{selected:n===s,onClick:()=>c(s),children:[s==="bizar"?e.jsx(je,{size:12,"aria-hidden":!0}):s==="claude-code"?e.jsx(be,{size:12,"aria-hidden":!0}):null," ",me[s]]},s))}),e.jsxs($,{gap:2,children:[e.jsx(X,{"data-testid":"agents-mode-roster",selected:f==="roster",onClick:()=>o("roster"),children:"Roster"}),e.jsx(X,{"data-testid":"agents-mode-hierarchy",selected:f==="hierarchy",onClick:()=>o("hierarchy"),children:"Hierarchy"})]})]}),f==="hierarchy"?e.jsx(Xe,{}):z.length===0&&(t.loading||a.loading)?e.jsxs(re,{cols:3,children:[e.jsx(U,{style:{height:140}}),e.jsx(U,{style:{height:140}}),e.jsx(U,{style:{height:140}})]}):z.length===0&&(t.error||a.error)?e.jsx(Ee,{block:!0,title:"Couldn't load agents",description:"Both bizar and CC roster endpoints failed. Retry to refetch.",error:t.error??a.error,onRetry:()=>{t.refetch(),a.refetch()},testid:"agents-error"}):z.length===0?e.jsxs("span",{style:{color:"var(--fg-muted)"},children:["No agents yet. Run ",e.jsx("code",{children:"/loop"})," or spawn one via the command palette."]}):e.jsx(re,{cols:3,children:z.map(s=>e.jsx(_e,{...s,onOpen:()=>u(s.id)},s.id))}),m!==null&&(()=>{const s=z.find(y=>y.id===m);if(!s)return null;const l=s.source==="claude-code"?v.find(y=>s.id===`cc:${y.sessionId||y.id}`):void 0,g=s.source==="bizar"?w.find(y=>s.id===`bizar:${y.name}`):void 0;return e.jsx(Ge,{agentId:s.id,name:s.name,role:s.role,status:s.status,currentTask:s.currentTask,startedAt:(l==null?void 0:l.startedAt)??(g==null?void 0:g.lastSeen),messageCount:l==null?void 0:l.messageCount,lastMessageSnippet:l==null?void 0:l.lastMessageSnippet,successRate:g==null?void 0:g.successRate,tasksTotal:g==null?void 0:g.tasksTotal,open:m!==null,onOpenChange:y=>{y||u(null)}})})(),e.jsx(le,{open:k!==null,onOpenChange:s=>{s||i(null)},children:e.jsx(de,{side:"right",title:"New agent",children:k!==null&&e.jsxs(A,{gap:4,style:{padding:"var(--space-4)"},children:[e.jsxs(A,{gap:2,children:[e.jsx("label",{htmlFor:"agent-create-name",style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:"Name"}),e.jsx(ne,{id:"agent-create-name",value:k.name,onChange:s=>i({...k,name:s.target.value}),placeholder:"e.g. frigg",disabled:p,"data-testid":"agent-create-name"})]}),e.jsxs(A,{gap:2,children:[e.jsx("label",{htmlFor:"agent-create-role",style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:"Role (optional)"}),e.jsx(ne,{id:"agent-create-role",value:k.role,onChange:s=>i({...k,role:s.target.value}),placeholder:"e.g. code-review",disabled:p,"data-testid":"agent-create-role"})]}),O!==null&&e.jsx("span",{role:"alert",style:{color:"var(--danger)",fontSize:"var(--fs-12)"},children:O}),e.jsxs($,{gap:2,children:[e.jsx(E,{variant:"primary",onClick:()=>{C()},disabled:p||!k.name.trim(),"data-testid":"agent-create-submit",children:"Create agent"}),e.jsx(E,{variant:"ghost",onClick:()=>i(null),disabled:p,children:"Cancel"})]})]})})})]})}export{At as AgentsView};
|
|
13
|
+
`})]})}const ee=500;function Ke(t){const{sessionId:a,paused:r}=t,[n,c]=d.useState([]),[f,o]=d.useState("connecting"),[w,h]=d.useState(null),[v,S]=d.useState(!1),[R,b]=d.useState(!0),m=d.useRef(null),u=d.useRef(null);d.useEffect(()=>{if(r||v){u.current&&(u.current.close(),u.current=null),o("paused");return}if(typeof window>"u"||typeof EventSource>"u"){o("error"),h("EventSource not available in this environment.");return}o("connecting"),h(null);const i=`/api/agent-stream/live?sessionId=${encodeURIComponent(a)}`,p=new EventSource(i);u.current=p;const I=x=>{try{const C=JSON.parse(x.data);Array.isArray(C.events)&&c(C.events.slice(-ee)),o("live")}catch{}},O=x=>{try{const C=JSON.parse(x.data);c(B=>{const N=B.length>=ee?B.slice(B.length-ee+1):B.slice();return N.push(C),N}),o("live")}catch{}},T=x=>{try{const C=JSON.parse(x.data);o("closed"),h(C.reason?`Stream ended: ${C.reason}`:null)}catch{}},P=x=>{try{const C=JSON.parse(x.data);o("error"),h(C.error||"stream error")}catch{}};return p.addEventListener("snapshot",I),p.addEventListener("event",O),p.addEventListener("agent:event",O),p.addEventListener("end",T),p.addEventListener("error",P),p.onerror=()=>{o("error"),h("Connection dropped. Click Retry to reconnect.")},()=>{p.close(),u.current=null}},[a,r,v]),d.useEffect(()=>{if(!R||!m.current)return;const i=m.current;i.scrollTop=i.scrollHeight},[n,R]);const k=(i,p)=>{var P,x,C;const I=i.role==="user"?"user":i.role==="assistant"?"assistant":(P=i.tool)!=null&&P.name?"tool":"system",O=(x=i.tool)!=null&&x.name?`${i.tool.name}`:i.role?i.role:i.type||"event",T=typeof i.content=="string"?i.content:(C=i.tool)!=null&&C.input?JSON.stringify(i.tool.input).slice(0,240):typeof i.message=="string"?i.message:i.result?JSON.stringify(i.result).slice(0,240):JSON.stringify(i).slice(0,240);return e.jsxs("div",{style:{padding:"4px 8px",borderRadius:"var(--radius-sm)",background:I==="user"?"color-mix(in oklch, var(--accent) 8%, var(--surface-0))":I==="tool"?"color-mix(in oklch, var(--warning) 8%, var(--surface-0))":I==="system"?"var(--surface-1)":"var(--surface-0)",fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:[e.jsxs("span",{style:{color:"var(--fg-muted)"},children:[O,": "]}),e.jsx("span",{style:{color:"var(--fg)"},children:T})]},p)};return e.jsxs(A,{gap:2,children:[e.jsxs($,{align:"center",justify:"between",children:[e.jsxs($,{align:"center",gap:2,children:[e.jsx("span",{"aria-hidden":!0,style:{width:8,height:8,borderRadius:"50%",background:f==="live"?"var(--success)":f==="connecting"?"var(--warning)":f==="paused"||f==="closed"?"var(--fg-muted)":"var(--danger)"}}),e.jsxs("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[f==="live"?"Live":f==="connecting"?"Connecting…":f==="paused"?"Paused":f==="closed"?"Closed":"Error"," · ",n.length," events"]})]}),e.jsxs($,{align:"center",gap:1,children:[e.jsx(E,{variant:"ghost",onClick:()=>S(i=>!i),title:v?"Resume stream":"Pause stream","aria-label":v?"Resume stream":"Pause stream",children:v?e.jsx(ge,{size:12,"aria-hidden":!0}):e.jsx(ae,{size:12,"aria-hidden":!0})}),e.jsx(E,{variant:"ghost",onClick:()=>c([]),title:"Clear buffer","aria-label":"Clear output",children:"Clear"}),e.jsxs(E,{variant:"ghost",onClick:()=>{c([]),S(!1)},title:"Reconnect","aria-label":"Reconnect stream",children:[e.jsx(Ee,{size:12,"aria-hidden":!0})," Retry"]}),e.jsxs("label",{style:{display:"flex",alignItems:"center",gap:4,fontSize:"var(--fs-12)",color:"var(--fg-muted)",cursor:"pointer"},children:[e.jsx("input",{type:"checkbox",checked:R,onChange:i=>b(i.target.checked)}),"follow"]})]})]}),w!==null&&e.jsx("div",{role:"alert",style:{fontSize:"var(--fs-12)",color:"var(--danger)"},children:w}),e.jsx("div",{ref:m,onScroll:i=>{const p=i.currentTarget,I=p.scrollHeight-p.scrollTop-p.clientHeight<20;b(I)},style:{maxHeight:280,minHeight:120,overflowY:"auto",border:"1px solid var(--border)",borderRadius:"var(--radius-md)",padding:"var(--space-2)",display:"flex",flexDirection:"column",gap:4,background:"var(--surface-1)"},role:"log","aria-live":"polite","aria-label":"Agent live output",children:n.length===0?e.jsx("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:f==="connecting"?"Connecting to agent stream…":"No events yet."}):n.map(k)})]})}function Ve(t){return t.startsWith("bizar:")?{source:"bizar",key:t.slice(6)}:t.startsWith("cc:")?{source:"claude-code",key:t.slice(3)}:{source:"bizar",key:t}}function Ge(t){const{agentId:a,name:r,role:n,status:c,currentTask:f,open:o,onOpenChange:w,startedAt:h,messageCount:v,lastMessageSnippet:S,successRate:R,tasksTotal:b}=t,{source:m,key:u}=Ve(a),[k,i]=d.useState(""),[p,I]=d.useState(null),[O,T]=d.useState(null),[P,x]=d.useState(null),[C,B]=d.useState(null),N=_(o?"/api/tasks":null),H=d.useMemo(()=>{var z;return o?(((z=N.data)==null?void 0:z.tasks)??[]).filter(F=>{const W=F.metadata??{};return typeof F.workedBy=="string"&&F.workedBy===u||W.agent===u}):[]},[o,N.data,u]);d.useEffect(()=>{o&&(i(""),T(null),x(null),B(null))},[o,a]);const D=async(j,z,F,W)=>{I(j),T(null),x(null);try{const M=await J(F,{method:z,body:W});if(M.ok){const G=M.sessionId?` (session ${M.sessionId.slice(0,8)})`:"";M.processId&&B(M.processId),T(`${j} succeeded${G}`)}else x(M.error||`${j} failed`)}catch(M){x(M instanceof Error?M.message:String(M))}finally{I(null)}},K=async()=>{if(!k.trim())return;const j=k.trim();i(""),m==="claude-code"?await D("Send prompt","POST",`/api/cc-agents/${encodeURIComponent(u)}/send`,{prompt:j}):await D("Invoke agent","POST",`/api/agents/${encodeURIComponent(u)}/invoke`,{prompt:j})},V=async()=>{if(!(typeof window<"u"&&typeof window.confirm=="function")||window.confirm(`Restart ${r}? The current session will be killed and a fresh one spawned.`)){if(m==="claude-code"){const z=k.trim()||"continue from the last checkpoint";await D("Restart","POST",`/api/cc-agents/${encodeURIComponent(u)}/restart`,{prompt:z});return}await D("Restart","POST",`/api/agents/${encodeURIComponent(u)}/restart`)}},Y=async()=>{if(m==="claude-code"){await D("Kill","POST",`/api/cc-agents/${encodeURIComponent(u)}/kill`);return}if(!(typeof window<"u"&&typeof window.confirm=="function")||window.confirm(`Delete Bizar agent "${u}"? This is irreversible.`)){I("Kill"),T(null),x(null);try{await J(`/api/agents/${encodeURIComponent(u)}`,{method:"DELETE"}),T(`Killed ${r}`),w(!1)}catch(z){x(z instanceof Error?z.message:String(z))}finally{I(null)}}},Z=async()=>{try{await navigator.clipboard.writeText(u),T(`Copied "${u}"`)}catch{x("Clipboard unavailable")}};return e.jsx(le,{open:o,onOpenChange:w,children:e.jsx(de,{side:"right",title:r,children:e.jsxs(A,{gap:4,style:{padding:"var(--space-4)"},children:[e.jsxs($,{gap:3,align:"center",children:[e.jsx(ie,{name:r,status:c==="busy"||c==="error"?"busy":"online"}),e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsx("div",{style:{fontSize:"var(--fs-13)",color:"var(--fg-muted)"},children:n}),e.jsxs($,{gap:2,style:{marginTop:4},wrap:!0,children:[e.jsx(L,{tone:c==="busy"?"info":c==="error"?"danger":"neutral",dot:!0,children:c}),e.jsx(L,{tone:"accent",children:m==="bizar"?"Bizar agent":"Claude Code"}),h!==void 0&&e.jsxs(L,{tone:"neutral",title:new Date(h).toLocaleString(),children:["up ",qe(Date.now()-h)]}),typeof v=="number"&&e.jsxs(L,{tone:"neutral",children:[v," msg"]}),typeof b=="number"&&e.jsxs(L,{tone:"neutral",children:[b," tasks"]}),typeof R=="number"&&e.jsxs(L,{tone:R>=.8?"success":R>=.5?"warning":"danger",children:[Math.round(R*100),"% success"]})]})]})]}),typeof S=="string"&&S.length>0&&e.jsxs("div",{style:{padding:"var(--space-2) var(--space-3)",background:"var(--surface-1)",border:"1px solid var(--border)",borderRadius:"var(--radius-md)",fontSize:"var(--fs-12)",color:"var(--fg-muted)",fontStyle:"italic"},title:S,children:["“",S.length>240?`${S.slice(0,240)}…`:S,"”"]}),f!==void 0&&e.jsxs("div",{style:{padding:"var(--space-3)",background:"var(--surface-0)",border:"1px solid var(--border)",borderRadius:"var(--radius-md)",fontSize:"var(--fs-13)"},children:[e.jsxs("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",marginBottom:4},children:[e.jsx(te,{size:12,"aria-hidden":!0,style:{verticalAlign:"middle",marginRight:4}}),"Current task"]}),f]}),e.jsxs(A,{gap:2,children:[e.jsx("label",{htmlFor:`agent-prompt-${a}`,style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:"Send a prompt"}),e.jsx(Ie,{id:`agent-prompt-${a}`,value:k,onChange:j=>i(j.target.value),placeholder:m==="claude-code"?"Type a follow-up for this background agent…":"Invoke this Bizar agent with…",rows:3,disabled:p!==null}),e.jsxs($,{gap:2,children:[e.jsxs(E,{variant:"primary",onClick:()=>{K()},disabled:!k.trim()||p!==null,children:[e.jsx(Ae,{size:14,"aria-hidden":!0})," ",p==="Send prompt"||p==="Invoke agent"?e.jsx(U,{style:{width:60,height:14}}):"Send"]}),e.jsxs(E,{variant:"secondary",onClick:()=>{V()},disabled:p!==null||m==="claude-code",title:m==="claude-code"?"Use command palette to spawn a fresh agent":void 0,children:[e.jsx(fe,{size:14,"aria-hidden":!0})," Restart"]}),e.jsxs(E,{variant:"danger",onClick:()=>{Y()},disabled:p!==null,title:m==="claude-code"?"Kill the CC background session":`Delete Bizar agent "${u}"`,children:[e.jsx(Ne,{size:14,"aria-hidden":!0})," Kill"]}),e.jsxs(E,{variant:"ghost",onClick:()=>{Z()},children:[e.jsx(Be,{size:14,"aria-hidden":!0})," Copy id"]})]})]}),O!==null&&e.jsx("div",{role:"status",style:{padding:"var(--space-2) var(--space-3)",background:"color-mix(in oklch, var(--success) 12%, var(--surface-0))",border:"1px solid color-mix(in oklch, var(--success) 40%, var(--border))",borderRadius:"var(--radius-md)",fontSize:"var(--fs-12)",color:"var(--success)"},children:O}),C!==null&&e.jsxs("div",{style:{padding:"var(--space-2) var(--space-3)",background:"var(--surface-0)",border:"1px solid var(--border)",borderRadius:"var(--radius-md)",fontSize:"var(--fs-12)",color:"var(--fg-muted)",display:"flex",alignItems:"center",gap:"var(--space-2)"},children:[e.jsx("span",{style:{textTransform:"uppercase",letterSpacing:"0.04em"},children:"PID"}),e.jsx("code",{"data-testid":"agent-process-id",style:{fontFamily:"var(--font-mono)",color:"var(--fg)",background:"var(--surface-1)",padding:"2px 6px",borderRadius:"var(--radius-sm)"},children:C})]}),P!==null&&e.jsx("div",{role:"alert",style:{padding:"var(--space-2) var(--space-3)",background:"color-mix(in oklch, var(--danger) 12%, var(--surface-0))",border:"1px solid color-mix(in oklch, var(--danger) 40%, var(--border))",borderRadius:"var(--radius-md)",fontSize:"var(--fs-12)",color:"var(--danger)"},children:P}),e.jsxs(A,{gap:2,children:[e.jsxs("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",textTransform:"uppercase",letterSpacing:"0.04em"},children:["Assigned tasks (",H.length,")"]}),N.loading&&H.length===0?e.jsx(U,{style:{height:48}}):H.length===0?e.jsx(ce,{variant:"outlined",children:e.jsx(ue,{children:e.jsx("span",{"data-testid":"agent-tasks-empty",style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:"No tasks assigned to this agent."})})}):e.jsx(A,{gap:1,children:H.map(j=>e.jsxs("div",{"data-testid":`agent-tasks-${j.id}`,style:{display:"flex",alignItems:"center",gap:"var(--space-2)",padding:"var(--space-2) var(--space-3)",background:"var(--surface-0)",border:"1px solid var(--border)",borderRadius:"var(--radius-sm)",fontSize:"var(--fs-13)"},children:[e.jsx("code",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:j.id}),e.jsx("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:j.title}),e.jsx(L,{tone:j.status==="doing"?"info":j.status==="blocked"?"danger":"neutral",children:j.status??"queued"})]},j.id))})]}),m==="claude-code"&&e.jsxs(A,{gap:2,children:[e.jsxs("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",textTransform:"uppercase",letterSpacing:"0.04em"},children:[e.jsx(te,{size:12,"aria-hidden":!0,style:{verticalAlign:"middle",marginRight:4}}),"Live output"]}),e.jsx(Ke,{sessionId:u,paused:p==="Kill"})]})]})})})}function qe(t){if(!Number.isFinite(t)||t<0)return"—";const a=Math.floor(t/1e3);if(a<60)return`${a}s`;const r=Math.floor(a/60);if(r<60)return`${r}m ${a%60}s`;const n=Math.floor(r/60);return n<24?`${n}h ${r%60}m`:`${Math.floor(n/24)}d ${n%24}h`}function Ye(t){const a=(t||"").toLowerCase();return a==="busy"||a==="working"?"info":a==="idle"?"neutral":a==="error"||a==="stuck"?"danger":a==="paused"?"warning":"neutral"}function Ze(t){const a=(t||"").toLowerCase();return a==="working"?"working":a||"idle"}function Qe(t){if(typeof t!="number"||!Number.isFinite(t)||t<=0)return"—";const a=Math.max(0,Date.now()-t),r=Math.floor(a/1e3);if(r<60)return`${r}s ago`;const n=Math.floor(r/60);if(n<60)return`${n}m ago`;const c=Math.floor(n/60);return c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`}function pe({node:t,depth:a,expanded:r,onToggle:n}){const c=t.children.length>0,f=r.has(t.name),o=t.agent,w=Ye(o==null?void 0:o.status),h=Ze(o==null?void 0:o.status);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{"data-testid":`agent-hierarchy-node-${t.name}`,style:{display:"grid",gridTemplateColumns:"auto 1fr auto auto",alignItems:"center",gap:"var(--space-3)",padding:"var(--space-2) var(--space-3)",paddingLeft:`calc(var(--space-3) + ${a*24}px)`,border:"1px solid var(--border)",borderRadius:"var(--radius-md)",background:"var(--surface-1)"},children:[c?e.jsx("button",{type:"button","data-testid":`agent-hierarchy-toggle-${t.name}`,"aria-label":f?"Collapse":"Expand",onClick:()=>n(t.name),style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:22,height:22,borderRadius:"var(--radius-sm)",border:"1px solid var(--border)",background:"var(--surface-0)",color:"var(--fg-muted)",cursor:"pointer",padding:0},children:f?e.jsx(je,{size:12,"aria-hidden":!0}):e.jsx(ke,{size:12,"aria-hidden":!0})}):e.jsx("span",{"aria-hidden":!0,style:{width:22,height:22,display:"inline-flex",alignItems:"center",justifyContent:"center",color:"var(--fg-subtle)"},children:e.jsx(ze,{size:12})}),e.jsxs("div",{style:{minWidth:0},children:[e.jsx("div",{style:{fontSize:"var(--fs-13)",fontWeight:600,color:"var(--fg)"},children:t.name}),o&&e.jsxs("div",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[o.role||o.category||o.mode||"agent",o.parent&&o.parent!==t.name&&e.jsxs(e.Fragment,{children:[" · parent ",e.jsx("code",{style:{fontFamily:"var(--font-mono)"},children:o.parent})]})]})]}),typeof(o==null?void 0:o.lastSeen)=="number"&&o.lastSeen>0&&e.jsx("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)",fontFamily:"var(--font-mono)"},children:Qe(o.lastSeen)}),e.jsx(L,{tone:w,dot:!0,children:h})]}),c&&f&&t.children.map(v=>e.jsx(pe,{node:v,depth:a+1,expanded:r,onToggle:n},v.name))]})}function Xe(){var v,S,R;const t=_("/api/agents/hierarchy"),[a,r]=d.useState(()=>new Set),[n,c]=d.useState(()=>new Set),f=d.useMemo(()=>{var b,m;return((m=(b=t.data)==null?void 0:b.roots)==null?void 0:m.map(u=>u.name))??[]},[t.data]);n.size===0&&f.length>0&&(c(new Set(f)),r(new Set(f)));const o=d.useCallback(()=>t.refetch(),[t]);se("agents:change",o);const w=d.useCallback(b=>{r(m=>{const u=new Set(m);return u.has(b)?u.delete(b):u.add(b),u})},[]);if(t.loading&&!t.data)return e.jsxs(A,{gap:3,children:[e.jsx(U,{style:{height:48}}),e.jsx(U,{style:{height:48}}),e.jsx(U,{style:{height:48}})]});const h=((v=t.data)==null?void 0:v.roots)??[];return h.length===0?e.jsx(ce,{children:e.jsx(ue,{children:e.jsx(Le,{icon:e.jsx(xe,{size:32,"aria-hidden":!0}),title:"No hierarchy yet",description:"Agents have no parent links in their frontmatter. Add `parent:` to an agent's .md frontmatter to nest it beneath another agent.","data-testid":"agent-hierarchy-empty"})})}):e.jsxs(A,{gap:2,children:[e.jsx($,{align:"center",justify:"between",children:e.jsxs("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:[h.length," root agent",h.length===1?"":"s"," · ",((R=(S=t.data)==null?void 0:S.all)==null?void 0:R.length)??0," total"]})}),e.jsx(A,{gap:2,children:h.map(b=>e.jsx(pe,{node:b,depth:0,expanded:a,onToggle:w},b.name))})]})}const he="bizar.agents.sourceFilter",me={all:"All",bizar:"Bizar","claude-code":"Claude Code"},et=Object.keys(me);function tt(){if(typeof localStorage>"u")return"all";const t=localStorage.getItem(he);return et.includes(t)?t:"all"}function st(t){if(!Number.isFinite(t)||t<=0)return"—";const a=Math.max(0,Date.now()-t),r=Math.floor(a/1e3);if(r<60)return`${r}s ago`;const n=Math.floor(r/60);if(n<60)return`${n}m ago`;const c=Math.floor(n/60);return c<24?`${c}h ago`:`${Math.floor(c/24)}d ago`}function at(t){const a=(t.status||"idle").toLowerCase(),r=a==="busy"||a==="working"?"busy":a==="error"||a==="stuck"?"error":a==="paused"?"paused":"idle";return{id:`bizar:${t.name}`,name:t.name,role:t.role||t.category||t.mode||"agent",status:r,currentTask:t.currentTaskId?`Task ${t.currentTaskId}`:void 0,lastActivity:t.lastSeen?new Date(t.lastSeen).toLocaleTimeString():void 0,tasksToday:t.tasksTotal||0,tasksSucceeded:typeof t.tasksSucceeded=="number"?t.tasksSucceeded:void 0,tasksTotal:typeof t.tasksTotal=="number"?t.tasksTotal:void 0,successRate:typeof t.successRate=="number"?t.successRate:void 0,lastSeenMs:typeof t.lastSeen=="number"&&t.lastSeen>0?t.lastSeen:void 0,badges:t.tags||[]}}function rt(t){var n,c;const a=(t.status||t.state||"idle").toLowerCase(),r=a==="busy"||a==="working"?"busy":a==="error"?"error":a==="paused"?"paused":"idle";return{id:`cc:${t.sessionId||t.id}`,name:t.name||((n=t.sessionId)==null?void 0:n.slice(0,8))||"unknown",role:t.kind==="background"?"CC background":"CC interactive",status:r,currentTask:t.lastMessageSnippet||void 0,lastActivity:t.lastMessageAt?new Date(t.lastMessageAt).toLocaleTimeString():t.startedAt?new Date(t.startedAt).toLocaleTimeString():void 0,tasksToday:t.messageCount||0,badges:[((c=t.cwd)==null?void 0:c.split("/").slice(-2).join("/"))||""].filter(Boolean)}}function Et(){var F,W,M,G;const t=_("/api/agents"),a=_("/api/cc-agents"),r=_("/api/agents/stuck"),[n,c]=d.useState(tt),[f,o]=d.useState("roster");d.useEffect(()=>{typeof localStorage<"u"&&localStorage.setItem(he,n)},[n]);const[w,h]=d.useState([]),[v,S]=d.useState([]),[R,b]=d.useState(!1),[m,u]=d.useState(null),[k,i]=d.useState(null),[p,I]=d.useState(!1),[O,T]=d.useState(null),[P,x]=d.useState(()=>new Set),C=async()=>{if(!(k===null||!k.name.trim())){I(!0),T(null);try{await J("/api/agents",{method:"POST",body:{name:k.name.trim(),role:k.role.trim()||"agent"}}),i(null),t.refetch()}catch(s){T((s instanceof q,s.message))}finally{I(!1)}}},B=async s=>{x(l=>new Set(l).add(s));try{await J(`/api/agents/${encodeURIComponent(s)}/restart`,{method:"POST"}),r.refetch(),t.refetch()}catch(l){T((l instanceof q,l.message))}finally{x(l=>{const g=new Set(l);return g.delete(s),g})}},[N,H]=d.useState(()=>new Set),D=async(s,l)=>{H(g=>new Set(g).add(s));try{await J(`/api/agents/${encodeURIComponent(s)}/status`,{method:"POST",body:{status:l}}),r.refetch(),t.refetch()}catch(g){T((g instanceof q,g.message))}finally{H(g=>{const y=new Set(g);return y.delete(s),y})}},[K,V]=d.useState(!1),Y=async()=>{var l;const s=((l=r.data)==null?void 0:l.stuck)??[];if(s.length!==0){V(!0);try{await Promise.all(s.map(g=>J(`/api/agents/${encodeURIComponent(g.name)}/status`,{method:"POST",body:{status:"paused"}}).catch(y=>(T((y instanceof q,y.message)),null)))),r.refetch(),t.refetch()}finally{V(!1)}}};d.useEffect(()=>{var s,l;!R&&((s=t.data)==null?void 0:s.agents)!==void 0&&((l=a.data)==null?void 0:l.agents)!==void 0&&(b(!0),h(t.data.agents),S(a.data.agents))},[t.data,a.data,R]);const Z=d.useCallback(()=>{t.refetch(),a.refetch()},[t,a]);se("agents:change",Z);const j=d.useCallback(s=>{if(s.type!=="agent:status")return;const l=s.agent;!l||!l.name||h(g=>{const y=g.findIndex(ve=>ve.name===l.name);if(y===-1)return[...g,l];const Q=g.slice();return Q[y]={...Q[y],...l},Q})},[]);se("agent:status",j);const z=d.useMemo(()=>{const s=[];if(n!=="claude-code")for(const l of w)s.push({...at(l),source:"bizar"});if(n!=="bizar")for(const l of v)s.push({...rt(l),source:"claude-code"});return s},[w,v,n]);return e.jsxs(A,{gap:5,"data-testid":"agents-view",children:[e.jsx(we,{title:"Agents",description:"Bizar agents (frontmatter-driven) and Claude Code background agents.",actions:e.jsxs(E,{variant:"primary",onClick:()=>i({name:"",role:""}),"data-testid":"agent-create-open",children:[e.jsx(Oe,{size:14,"aria-hidden":!0})," New agent"]})}),e.jsx(Ce,{title:"Roster",count:z.length,description:(F=r.data)!=null&&F.stuck&&r.data.stuck.length>0?`${r.data.stuck.length} stuck`:void 0,testid:"agents-list-header"}),(((W=r.data)==null?void 0:W.stuck)??[]).length>0&&e.jsx(Re,{tone:"warning","data-testid":"agents-stuck-banner",action:e.jsxs($,{gap:2,children:[e.jsxs(E,{variant:"secondary",size:"sm",onClick:()=>{Y()},disabled:K,"data-testid":"agents-stuck-bulk-pause",title:"Pause every stuck agent at once",children:[e.jsx(ae,{size:12,"aria-hidden":!0})," ",K?"Pausing…":"Pause all"]}),e.jsx(E,{variant:"secondary",size:"sm",onClick:()=>o("hierarchy"),children:"View details"})]}),children:e.jsxs(A,{gap:2,children:[e.jsxs($,{align:"center",gap:2,children:[e.jsx(Pe,{size:14,"aria-hidden":!0,style:{color:"var(--warning)"}}),e.jsxs("span",{children:[(((M=r.data)==null?void 0:M.stuck)??[]).length," agent",r.data&&r.data.stuck&&r.data.stuck.length===1?"":"s"," stuck (no heartbeat >5m)"]})]}),e.jsx(A,{gap:1,children:(((G=r.data)==null?void 0:G.stuck)??[]).map(s=>{const l=P.has(s.name),g=s.status==="paused",y=l||N.has(s.name);return e.jsxs($,{align:"center",justify:"between",gap:2,"data-testid":`agents-stuck-row-${s.name}`,children:[e.jsxs($,{gap:2,align:"center",children:[e.jsx("code",{style:{fontFamily:"var(--font-mono)",fontSize:"var(--fs-12)"},children:s.name}),e.jsx(L,{tone:g?"warning":"danger",children:g?"paused":s.status||"stuck"}),typeof s.lastSeen=="number"&&s.lastSeen>0&&e.jsxs("span",{style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:["last seen ",st(s.lastSeen)]})]}),e.jsxs($,{gap:1,children:[g?e.jsxs(E,{variant:"ghost",size:"sm",disabled:y,onClick:()=>{D(s.name,"idle")},"data-testid":`agents-stuck-resume-${s.name}`,children:[e.jsx(ge,{size:12,"aria-hidden":!0})," Resume"]}):e.jsxs(E,{variant:"secondary",size:"sm",disabled:y,onClick:()=>{D(s.name,"paused")},"data-testid":`agents-stuck-pause-${s.name}`,children:[e.jsx(ae,{size:12,"aria-hidden":!0})," Pause"]}),e.jsxs(E,{variant:"primary",size:"sm",disabled:y,onClick:()=>{B(s.name)},"data-testid":`agents-stuck-restart-${s.name}`,children:[e.jsx(fe,{size:12,"aria-hidden":!0})," ",l?"Restarting…":"Restart"]})]})]},s.name)})})]})}),e.jsxs($,{align:"center",justify:"between",wrap:!0,gap:2,children:[e.jsx($,{gap:2,children:["all","bizar","claude-code"].map(s=>e.jsxs(X,{selected:n===s,onClick:()=>c(s),children:[s==="bizar"?e.jsx(be,{size:12,"aria-hidden":!0}):s==="claude-code"?e.jsx(Se,{size:12,"aria-hidden":!0}):null," ",me[s]]},s))}),e.jsxs($,{gap:2,children:[e.jsx(X,{"data-testid":"agents-mode-roster",selected:f==="roster",onClick:()=>o("roster"),children:"Roster"}),e.jsx(X,{"data-testid":"agents-mode-hierarchy",selected:f==="hierarchy",onClick:()=>o("hierarchy"),children:"Hierarchy"})]})]}),f==="hierarchy"?e.jsx(Xe,{}):z.length===0&&(t.loading||a.loading)?e.jsxs(re,{cols:3,children:[e.jsx(U,{style:{height:140}}),e.jsx(U,{style:{height:140}}),e.jsx(U,{style:{height:140}})]}):z.length===0&&(t.error||a.error)?e.jsx(Me,{block:!0,title:"Couldn't load agents",description:"Both bizar and CC roster endpoints failed. Retry to refetch.",error:t.error??a.error,onRetry:()=>{t.refetch(),a.refetch()},testid:"agents-error"}):z.length===0?e.jsxs("span",{style:{color:"var(--fg-muted)"},children:["No agents yet. Run ",e.jsx("code",{children:"/loop"})," or spawn one via the command palette."]}):e.jsx(re,{cols:3,children:z.map(s=>e.jsx(_e,{...s,onOpen:()=>u(s.id)},s.id))}),m!==null&&(()=>{const s=z.find(y=>y.id===m);if(!s)return null;const l=s.source==="claude-code"?v.find(y=>s.id===`cc:${y.sessionId||y.id}`):void 0,g=s.source==="bizar"?w.find(y=>s.id===`bizar:${y.name}`):void 0;return e.jsx(Ge,{agentId:s.id,name:s.name,role:s.role,status:s.status,currentTask:s.currentTask,startedAt:(l==null?void 0:l.startedAt)??(g==null?void 0:g.lastSeen),messageCount:l==null?void 0:l.messageCount,lastMessageSnippet:l==null?void 0:l.lastMessageSnippet,successRate:g==null?void 0:g.successRate,tasksTotal:g==null?void 0:g.tasksTotal,open:m!==null,onOpenChange:y=>{y||u(null)}})})(),e.jsx(le,{open:k!==null,onOpenChange:s=>{s||i(null)},children:e.jsx(de,{side:"right",title:"New agent",children:k!==null&&e.jsxs(A,{gap:4,style:{padding:"var(--space-4)"},children:[e.jsxs(A,{gap:2,children:[e.jsx("label",{htmlFor:"agent-create-name",style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:"Name"}),e.jsx(ne,{id:"agent-create-name",value:k.name,onChange:s=>i({...k,name:s.target.value}),placeholder:"e.g. frigg",disabled:p,"data-testid":"agent-create-name"})]}),e.jsxs(A,{gap:2,children:[e.jsx("label",{htmlFor:"agent-create-role",style:{fontSize:"var(--fs-12)",color:"var(--fg-muted)"},children:"Role (optional)"}),e.jsx(ne,{id:"agent-create-role",value:k.role,onChange:s=>i({...k,role:s.target.value}),placeholder:"e.g. code-review",disabled:p,"data-testid":"agent-create-role"})]}),O!==null&&e.jsx("span",{role:"alert",style:{color:"var(--danger)",fontSize:"var(--fs-12)"},children:O}),e.jsxs($,{gap:2,children:[e.jsx(E,{variant:"primary",onClick:()=>{C()},disabled:p||!k.name.trim(),"data-testid":"agent-create-submit",children:"Create agent"}),e.jsx(E,{variant:"ghost",onClick:()=>i(null),disabled:p,children:"Cancel"})]})]})})})]})}export{Et as AgentsView};
|