@polderlabs/bizar 10.1.0 → 10.3.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.
Files changed (263) hide show
  1. package/README.md +31 -10
  2. package/bizar-dash/CONTROL_SURFACES.md +0 -1
  3. package/bizar-dash/dist/assets/{ActivityFeed-Da-JCrE6.js → ActivityFeed-xXiUCZLB.js} +1 -1
  4. package/bizar-dash/dist/assets/{ActivityFeed-Da-JCrE6.js.map → ActivityFeed-xXiUCZLB.js.map} +1 -1
  5. package/bizar-dash/dist/assets/{ActivityView-nIRsSETb.js → ActivityView-nOYhCp3h.js} +1 -1
  6. package/bizar-dash/dist/assets/{ActivityView-nIRsSETb.js.map → ActivityView-nOYhCp3h.js.map} +1 -1
  7. package/bizar-dash/dist/assets/{AdminView-DP1NMxmG.js → AdminView-Coi4V3sq.js} +1 -1
  8. package/bizar-dash/dist/assets/{AdminView-DP1NMxmG.js.map → AdminView-Coi4V3sq.js.map} +1 -1
  9. package/bizar-dash/dist/assets/{AgentActivity-lSPkOr-O.js → AgentActivity-nEri4lbx.js} +1 -1
  10. package/bizar-dash/dist/assets/{AgentActivity-lSPkOr-O.js.map → AgentActivity-nEri4lbx.js.map} +1 -1
  11. package/bizar-dash/dist/assets/{AgentsView-BIWGkz7w.js → AgentsView-ByiIJ0ej.js} +3 -3
  12. package/bizar-dash/dist/assets/{AgentsView-BIWGkz7w.js.map → AgentsView-ByiIJ0ej.js.map} +1 -1
  13. package/bizar-dash/dist/assets/{Alert-DN0UysMg.js → Alert-Dg_Vwxh5.js} +1 -1
  14. package/bizar-dash/dist/assets/{Alert-DN0UysMg.js.map → Alert-Dg_Vwxh5.js.map} +1 -1
  15. package/bizar-dash/dist/assets/ArtifactsView-CGclRNnz.js +21 -0
  16. package/bizar-dash/dist/assets/ArtifactsView-CGclRNnz.js.map +1 -0
  17. package/bizar-dash/dist/assets/{AuthView-DW5cs7ma.js → AuthView-utVm6M3D.js} +1 -1
  18. package/bizar-dash/dist/assets/{AuthView-DW5cs7ma.js.map → AuthView-utVm6M3D.js.map} +1 -1
  19. package/bizar-dash/dist/assets/{Avatar-DZPv9pvd.js → Avatar-CXDZdKy4.js} +1 -1
  20. package/bizar-dash/dist/assets/{Avatar-DZPv9pvd.js.map → Avatar-CXDZdKy4.js.map} +1 -1
  21. package/bizar-dash/dist/assets/{BackgroundJobsView-D8O-EyMD.js → BackgroundJobsView-j603pz6o.js} +1 -1
  22. package/bizar-dash/dist/assets/{BackgroundJobsView-D8O-EyMD.js.map → BackgroundJobsView-j603pz6o.js.map} +1 -1
  23. package/bizar-dash/dist/assets/{BackupView-uwXkhxOV.js → BackupView-DgvnntTE.js} +1 -1
  24. package/bizar-dash/dist/assets/{BackupView-uwXkhxOV.js.map → BackupView-DgvnntTE.js.map} +1 -1
  25. package/bizar-dash/dist/assets/{Card-Tyboihu7.js → Card-D9019JOD.js} +1 -1
  26. package/bizar-dash/dist/assets/{Card-Tyboihu7.js.map → Card-D9019JOD.js.map} +1 -1
  27. package/bizar-dash/dist/assets/{ChatView-DRBHzgay.js → ChatView-C0cTgj5d.js} +1 -1
  28. package/bizar-dash/dist/assets/{ChatView-DRBHzgay.js.map → ChatView-C0cTgj5d.js.map} +1 -1
  29. package/bizar-dash/dist/assets/{Chip-BrXIlR9w.js → Chip-DQtalZ4y.js} +1 -1
  30. package/bizar-dash/dist/assets/{Chip-BrXIlR9w.js.map → Chip-DQtalZ4y.js.map} +1 -1
  31. package/bizar-dash/dist/assets/{ClaudeSessionsView-Ck62jaOr.js → ClaudeSessionsView-H3Bqjo6b.js} +1 -1
  32. package/bizar-dash/dist/assets/{ClaudeSessionsView-Ck62jaOr.js.map → ClaudeSessionsView-H3Bqjo6b.js.map} +1 -1
  33. package/bizar-dash/dist/assets/{ClipboardView-DfND6xL6.js → ClipboardView-BAguaKbx.js} +1 -1
  34. package/bizar-dash/dist/assets/{ClipboardView-DfND6xL6.js.map → ClipboardView-BAguaKbx.js.map} +1 -1
  35. package/bizar-dash/dist/assets/{ConfigView-DjJmSrOJ.js → ConfigView-DWHJgoe8.js} +1 -1
  36. package/bizar-dash/dist/assets/{ConfigView-DjJmSrOJ.js.map → ConfigView-DWHJgoe8.js.map} +1 -1
  37. package/bizar-dash/dist/assets/{DiagnosticsView-CKgItf0J.js → DiagnosticsView-oCT624hk.js} +1 -1
  38. package/bizar-dash/dist/assets/{DiagnosticsView-CKgItf0J.js.map → DiagnosticsView-oCT624hk.js.map} +1 -1
  39. package/bizar-dash/dist/assets/{DialogsView-DHYF8dE1.js → DialogsView-CqHNals_.js} +1 -1
  40. package/bizar-dash/dist/assets/{DialogsView-DHYF8dE1.js.map → DialogsView-CqHNals_.js.map} +1 -1
  41. package/bizar-dash/dist/assets/{DoctorView-DDLHrSKk.js → DoctorView-6kfQq_Mx.js} +1 -1
  42. package/bizar-dash/dist/assets/{DoctorView-DDLHrSKk.js.map → DoctorView-6kfQq_Mx.js.map} +1 -1
  43. package/bizar-dash/dist/assets/{EmptyState-DZ2ouKwd.js → EmptyState-DLmtBX_6.js} +1 -1
  44. package/bizar-dash/dist/assets/{EmptyState-DZ2ouKwd.js.map → EmptyState-DLmtBX_6.js.map} +1 -1
  45. package/bizar-dash/dist/assets/{EnvVarsView-D1cx83mB.js → EnvVarsView-DySOXlP1.js} +2 -2
  46. package/bizar-dash/dist/assets/{EnvVarsView-D1cx83mB.js.map → EnvVarsView-DySOXlP1.js.map} +1 -1
  47. package/bizar-dash/dist/assets/{ErrorState-DwwJ2-Jq.js → ErrorState-Bump8diE.js} +1 -1
  48. package/bizar-dash/dist/assets/{ErrorState-DwwJ2-Jq.js.map → ErrorState-Bump8diE.js.map} +1 -1
  49. package/bizar-dash/dist/assets/{EvalView-C9aYixXW.js → EvalView-FnZ5d93z.js} +1 -1
  50. package/bizar-dash/dist/assets/{EvalView-C9aYixXW.js.map → EvalView-FnZ5d93z.js.map} +1 -1
  51. package/bizar-dash/dist/assets/{GoalsView-DZa_mGmh.js → GoalsView-C4m1WnVv.js} +1 -1
  52. package/bizar-dash/dist/assets/{GoalsView-DZa_mGmh.js.map → GoalsView-C4m1WnVv.js.map} +1 -1
  53. package/bizar-dash/dist/assets/{Grid-CiRyhAgR.js → Grid-dEnoGGws.js} +1 -1
  54. package/bizar-dash/dist/assets/{Grid-CiRyhAgR.js.map → Grid-dEnoGGws.js.map} +1 -1
  55. package/bizar-dash/dist/assets/{HistoryView-Dv7aPxJE.js → HistoryView-xdRybjZ2.js} +1 -1
  56. package/bizar-dash/dist/assets/{HistoryView-Dv7aPxJE.js.map → HistoryView-xdRybjZ2.js.map} +1 -1
  57. package/bizar-dash/dist/assets/{Input-BbFUDQnS.js → Input-BSa3lh_-.js} +1 -1
  58. package/bizar-dash/dist/assets/{Input-BbFUDQnS.js.map → Input-BSa3lh_-.js.map} +1 -1
  59. package/bizar-dash/dist/assets/{LibrariesView-DBQ83TNa.js → LibrariesView-1zR04Eci.js} +1 -1
  60. package/bizar-dash/dist/assets/{LibrariesView-DBQ83TNa.js.map → LibrariesView-1zR04Eci.js.map} +1 -1
  61. package/bizar-dash/dist/assets/{LightRAGView-JYpE5u9p.js → LightRAGView-PubmA9oL.js} +1 -1
  62. package/bizar-dash/dist/assets/{LightRAGView-JYpE5u9p.js.map → LightRAGView-PubmA9oL.js.map} +1 -1
  63. package/bizar-dash/dist/assets/{ListHeader-BGjm11Z0.js → ListHeader-Ak9WJd39.js} +1 -1
  64. package/bizar-dash/dist/assets/{ListHeader-BGjm11Z0.js.map → ListHeader-Ak9WJd39.js.map} +1 -1
  65. package/bizar-dash/dist/assets/{MemoryView-CnOP2MvM.js → MemoryView-DBGpuETw.js} +1 -1
  66. package/bizar-dash/dist/assets/{MemoryView-CnOP2MvM.js.map → MemoryView-DBGpuETw.js.map} +1 -1
  67. package/bizar-dash/dist/assets/MiscView-DufqBHkX.js +1 -0
  68. package/bizar-dash/dist/assets/{MiscView-BBcpUbZZ.js.map → MiscView-DufqBHkX.js.map} +1 -1
  69. package/bizar-dash/dist/assets/{ModsView-CU4cAmIz.js → ModsView-DcX6eVU2.js} +2 -2
  70. package/bizar-dash/dist/assets/{ModsView-CU4cAmIz.js.map → ModsView-DcX6eVU2.js.map} +1 -1
  71. package/bizar-dash/dist/assets/{NotificationsView-BYffvthq.js → NotificationsView-B8IhHRQC.js} +1 -1
  72. package/bizar-dash/dist/assets/{NotificationsView-BYffvthq.js.map → NotificationsView-B8IhHRQC.js.map} +1 -1
  73. package/bizar-dash/dist/assets/ObsidianView-DEuk65zS.js +1 -0
  74. package/bizar-dash/dist/assets/{ObsidianView-D3bI0row.js.map → ObsidianView-DEuk65zS.js.map} +1 -1
  75. package/bizar-dash/dist/assets/{OverviewView-0tq8f-Y0.js → OverviewView-CTI2spTd.js} +1 -1
  76. package/bizar-dash/dist/assets/{OverviewView-0tq8f-Y0.js.map → OverviewView-CTI2spTd.js.map} +1 -1
  77. package/bizar-dash/dist/assets/{ProgressBar-B-h60LKA.js → ProgressBar-D3lkz42E.js} +1 -1
  78. package/bizar-dash/dist/assets/{ProgressBar-B-h60LKA.js.map → ProgressBar-D3lkz42E.js.map} +1 -1
  79. package/bizar-dash/dist/assets/{ProjectsView-DhX5lzHS.js → ProjectsView-Du0LzE7A.js} +1 -1
  80. package/bizar-dash/dist/assets/{ProjectsView-DhX5lzHS.js.map → ProjectsView-Du0LzE7A.js.map} +1 -1
  81. package/bizar-dash/dist/assets/{ProvidersView-CJMX7jm9.js → ProvidersView-5bCgXwBo.js} +1 -1
  82. package/bizar-dash/dist/assets/{ProvidersView-CJMX7jm9.js.map → ProvidersView-5bCgXwBo.js.map} +1 -1
  83. package/bizar-dash/dist/assets/{SchedulesView-CcwDQ9Nm.js → SchedulesView-DFHdIz5P.js} +1 -1
  84. package/bizar-dash/dist/assets/{SchedulesView-CcwDQ9Nm.js.map → SchedulesView-DFHdIz5P.js.map} +1 -1
  85. package/bizar-dash/dist/assets/{Select-Cw7Qtz2M.js → Select-C8EJj4NM.js} +1 -1
  86. package/bizar-dash/dist/assets/{Select-Cw7Qtz2M.js.map → Select-C8EJj4NM.js.map} +1 -1
  87. package/bizar-dash/dist/assets/{SettingsRow-DgsgbPSI.js → SettingsRow-BdOOmYMD.js} +1 -1
  88. package/bizar-dash/dist/assets/{SettingsRow-DgsgbPSI.js.map → SettingsRow-BdOOmYMD.js.map} +1 -1
  89. package/bizar-dash/dist/assets/{SettingsView-DTAFdKyK.js → SettingsView-CqwQ6Knv.js} +1 -1
  90. package/bizar-dash/dist/assets/{SettingsView-DTAFdKyK.js.map → SettingsView-CqwQ6Knv.js.map} +1 -1
  91. package/bizar-dash/dist/assets/{Sheet-DH-WNJ3Y.js → Sheet-Cztsvgse.js} +1 -1
  92. package/bizar-dash/dist/assets/{Sheet-DH-WNJ3Y.js.map → Sheet-Cztsvgse.js.map} +1 -1
  93. package/bizar-dash/dist/assets/{Slider-DXbJuQ7y.js → Slider-BexNfF6K.js} +1 -1
  94. package/bizar-dash/dist/assets/{Slider-DXbJuQ7y.js.map → Slider-BexNfF6K.js.map} +1 -1
  95. package/bizar-dash/dist/assets/{Sparkline-CYtAn82j.js → Sparkline-CLZBtvsN.js} +1 -1
  96. package/bizar-dash/dist/assets/{Sparkline-CYtAn82j.js.map → Sparkline-CLZBtvsN.js.map} +1 -1
  97. package/bizar-dash/dist/assets/{Switch-BItGrPqr.js → Switch-B1tiRwNK.js} +1 -1
  98. package/bizar-dash/dist/assets/{Switch-BItGrPqr.js.map → Switch-B1tiRwNK.js.map} +1 -1
  99. package/bizar-dash/dist/assets/{TasksView-i5tm6CkX.js → TasksView-CT0fPlos.js} +1 -1
  100. package/bizar-dash/dist/assets/{TasksView-i5tm6CkX.js.map → TasksView-CT0fPlos.js.map} +1 -1
  101. package/bizar-dash/dist/assets/{Textarea-qYDf3yds.js → Textarea-D_TPpVMy.js} +1 -1
  102. package/bizar-dash/dist/assets/{Textarea-qYDf3yds.js.map → Textarea-D_TPpVMy.js.map} +1 -1
  103. package/bizar-dash/dist/assets/{UpdateView-Xln-ej26.js → UpdateView-tD2q2OhW.js} +1 -1
  104. package/bizar-dash/dist/assets/{UpdateView-Xln-ej26.js.map → UpdateView-tD2q2OhW.js.map} +1 -1
  105. package/bizar-dash/dist/assets/{UsageView-BGuZSUZ6.js → UsageView-B4BuAFKA.js} +1 -1
  106. package/bizar-dash/dist/assets/{UsageView-BGuZSUZ6.js.map → UsageView-B4BuAFKA.js.map} +1 -1
  107. package/bizar-dash/dist/assets/{ViewHeader-BqIPVKuG.js → ViewHeader-V_SzbUpw.js} +1 -1
  108. package/bizar-dash/dist/assets/{ViewHeader-BqIPVKuG.js.map → ViewHeader-V_SzbUpw.js.map} +1 -1
  109. package/bizar-dash/dist/assets/{VoiceView-CWUOCQs_.js → VoiceView-D3vb5OM2.js} +1 -1
  110. package/bizar-dash/dist/assets/{VoiceView-CWUOCQs_.js.map → VoiceView-D3vb5OM2.js.map} +1 -1
  111. package/bizar-dash/dist/assets/{brain-fsBSDl2g.js → brain-BmfWcitQ.js} +1 -1
  112. package/bizar-dash/dist/assets/{brain-fsBSDl2g.js.map → brain-BmfWcitQ.js.map} +1 -1
  113. package/bizar-dash/dist/assets/{calendar-DsHTZoCU.js → calendar-VntJUzFB.js} +1 -1
  114. package/bizar-dash/dist/assets/{calendar-DsHTZoCU.js.map → calendar-VntJUzFB.js.map} +1 -1
  115. package/bizar-dash/dist/assets/{circle-CqSxqqeJ.js → circle-KrQQySeK.js} +1 -1
  116. package/bizar-dash/dist/assets/{circle-CqSxqqeJ.js.map → circle-KrQQySeK.js.map} +1 -1
  117. package/bizar-dash/dist/assets/{circle-alert-BsLl001l.js → circle-alert-CQ9MLygI.js} +1 -1
  118. package/bizar-dash/dist/assets/{circle-alert-BsLl001l.js.map → circle-alert-CQ9MLygI.js.map} +1 -1
  119. package/bizar-dash/dist/assets/{circle-check-rVKMQmZp.js → circle-check-COtVgsWw.js} +1 -1
  120. package/bizar-dash/dist/assets/{circle-check-rVKMQmZp.js.map → circle-check-COtVgsWw.js.map} +1 -1
  121. package/bizar-dash/dist/assets/{clock-OuficfgH.js → clock-C0GlM4qp.js} +1 -1
  122. package/bizar-dash/dist/assets/{clock-OuficfgH.js.map → clock-C0GlM4qp.js.map} +1 -1
  123. package/bizar-dash/dist/assets/{download-BdHlstUY.js → download-CW4DmtRe.js} +1 -1
  124. package/bizar-dash/dist/assets/{download-BdHlstUY.js.map → download-CW4DmtRe.js.map} +1 -1
  125. package/bizar-dash/dist/assets/{external-link-DA3_VGm-.js → external-link-CAOnh_DH.js} +1 -1
  126. package/bizar-dash/dist/assets/{external-link-DA3_VGm-.js.map → external-link-CAOnh_DH.js.map} +1 -1
  127. package/bizar-dash/dist/assets/{file-text-B-g8H227.js → file-text-CS1jB_oV.js} +1 -1
  128. package/bizar-dash/dist/assets/{file-text-B-g8H227.js.map → file-text-CS1jB_oV.js.map} +1 -1
  129. package/bizar-dash/dist/assets/{filter-D9B8s5CG.js → filter-DyQbml3L.js} +1 -1
  130. package/bizar-dash/dist/assets/{filter-D9B8s5CG.js.map → filter-DyQbml3L.js.map} +1 -1
  131. package/bizar-dash/dist/assets/{git-pull-request-ByH0YuVz.js → git-pull-request-Co6gYfba.js} +1 -1
  132. package/bizar-dash/dist/assets/{git-pull-request-ByH0YuVz.js.map → git-pull-request-Co6gYfba.js.map} +1 -1
  133. package/bizar-dash/dist/assets/{main-CdOm1Pj9.js → main-CyAIirBB.js} +28 -33
  134. package/bizar-dash/dist/assets/main-CyAIirBB.js.map +1 -0
  135. package/bizar-dash/dist/assets/network-CDn43Gsj.js +6 -0
  136. package/bizar-dash/dist/assets/network-CDn43Gsj.js.map +1 -0
  137. package/bizar-dash/dist/assets/{pause-C9hgd8wX.js → pause-CKYjSTGX.js} +1 -1
  138. package/bizar-dash/dist/assets/{pause-C9hgd8wX.js.map → pause-CKYjSTGX.js.map} +1 -1
  139. package/bizar-dash/dist/assets/{pencil-BanqaMw7.js → pencil-BUJ2DpWs.js} +1 -1
  140. package/bizar-dash/dist/assets/{pencil-BanqaMw7.js.map → pencil-BUJ2DpWs.js.map} +1 -1
  141. package/bizar-dash/dist/assets/{play-CawUZ02_.js → play-CGxZWqtW.js} +1 -1
  142. package/bizar-dash/dist/assets/{play-CawUZ02_.js.map → play-CGxZWqtW.js.map} +1 -1
  143. package/bizar-dash/dist/assets/{plug-Cmv0-T_e.js → plug-CQYGgGSy.js} +1 -1
  144. package/bizar-dash/dist/assets/{plug-Cmv0-T_e.js.map → plug-CQYGgGSy.js.map} +1 -1
  145. package/bizar-dash/dist/assets/{plus-M6LYiKX8.js → plus-fFxt-8z5.js} +1 -1
  146. package/bizar-dash/dist/assets/{plus-M6LYiKX8.js.map → plus-fFxt-8z5.js.map} +1 -1
  147. package/bizar-dash/dist/assets/{power-DP5x_SRF.js → power-Cjgy2KsI.js} +1 -1
  148. package/bizar-dash/dist/assets/{power-DP5x_SRF.js.map → power-Cjgy2KsI.js.map} +1 -1
  149. package/bizar-dash/dist/assets/{power-off-NOJRLAIs.js → power-off-B81hLRah.js} +1 -1
  150. package/bizar-dash/dist/assets/{power-off-NOJRLAIs.js.map → power-off-B81hLRah.js.map} +1 -1
  151. package/bizar-dash/dist/assets/{refresh-ccw-CHMprsm5.js → refresh-ccw-BCXx86xp.js} +1 -1
  152. package/bizar-dash/dist/assets/{refresh-ccw-CHMprsm5.js.map → refresh-ccw-BCXx86xp.js.map} +1 -1
  153. package/bizar-dash/dist/assets/{refresh-cw-1RBqDKgJ.js → refresh-cw-COTg1nZo.js} +1 -1
  154. package/bizar-dash/dist/assets/{refresh-cw-1RBqDKgJ.js.map → refresh-cw-COTg1nZo.js.map} +1 -1
  155. package/bizar-dash/dist/assets/{rotate-ccw-DJRekBbi.js → rotate-ccw-BZrEVc0Z.js} +1 -1
  156. package/bizar-dash/dist/assets/{rotate-ccw-DJRekBbi.js.map → rotate-ccw-BZrEVc0Z.js.map} +1 -1
  157. package/bizar-dash/dist/assets/{rotate-cw-DHooc0Tx.js → rotate-cw-CsTtaLV2.js} +1 -1
  158. package/bizar-dash/dist/assets/{rotate-cw-DHooc0Tx.js.map → rotate-cw-CsTtaLV2.js.map} +1 -1
  159. package/bizar-dash/dist/assets/{save-DQKCKyZK.js → save-DtMTge1F.js} +1 -1
  160. package/bizar-dash/dist/assets/{save-DQKCKyZK.js.map → save-DtMTge1F.js.map} +1 -1
  161. package/bizar-dash/dist/assets/{send-xgy3RAi7.js → send-DyBhyk8t.js} +1 -1
  162. package/bizar-dash/dist/assets/{send-xgy3RAi7.js.map → send-DyBhyk8t.js.map} +1 -1
  163. package/bizar-dash/dist/assets/{shield-alert-CWV2F5ab.js → shield-alert-BPGJlRF8.js} +1 -1
  164. package/bizar-dash/dist/assets/{shield-alert-CWV2F5ab.js.map → shield-alert-BPGJlRF8.js.map} +1 -1
  165. package/bizar-dash/dist/assets/{trash-2-CL4khSRv.js → trash-2-2NsyTU8c.js} +1 -1
  166. package/bizar-dash/dist/assets/{trash-2-CL4khSRv.js.map → trash-2-2NsyTU8c.js.map} +1 -1
  167. package/bizar-dash/dist/assets/{trending-up-CSJJhWTS.js → trending-up-BXwP23VK.js} +1 -1
  168. package/bizar-dash/dist/assets/{trending-up-CSJJhWTS.js.map → trending-up-BXwP23VK.js.map} +1 -1
  169. package/bizar-dash/dist/assets/{triangle-alert-BPLb7uLt.js → triangle-alert-DFmQ_RXN.js} +1 -1
  170. package/bizar-dash/dist/assets/{triangle-alert-BPLb7uLt.js.map → triangle-alert-DFmQ_RXN.js.map} +1 -1
  171. package/bizar-dash/dist/assets/{upload-Cww6MvFq.js → upload-Cj-HYRYV.js} +1 -1
  172. package/bizar-dash/dist/assets/{upload-Cww6MvFq.js.map → upload-Cj-HYRYV.js.map} +1 -1
  173. package/bizar-dash/dist/assets/{zap-DmhVUzRA.js → zap-BaOiybcl.js} +1 -1
  174. package/bizar-dash/dist/assets/{zap-DmhVUzRA.js.map → zap-BaOiybcl.js.map} +1 -1
  175. package/bizar-dash/dist/index.html +1 -1
  176. package/bizar-dash/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -1
  177. package/bizar-dash/src/server/api.mjs +11 -0
  178. package/bizar-dash/src/server/artifacts-store.mjs +120 -14
  179. package/bizar-dash/src/server/claude-artifacts.mjs +281 -0
  180. package/bizar-dash/src/server/routes/artifacts.mjs +42 -6
  181. package/bizar-dash/src/server/routes/audit.mjs +78 -0
  182. package/bizar-dash/src/server/routes/decisions.mjs +78 -0
  183. package/bizar-dash/src/server/routes/model-router.mjs +55 -0
  184. package/bizar-dash/src/server/routes/model-router.test.mjs +28 -0
  185. package/bizar-dash/src/server/routes/sessions.mjs +80 -0
  186. package/bizar-dash/src/server/routes/update.mjs +48 -21
  187. package/bizar-dash/src/server/sprint.test.mjs +163 -0
  188. package/bizar-dash/src/web/v8/App.tsx +0 -4
  189. package/bizar-dash/src/web/v8/__tests__/new-views.test.tsx +0 -17
  190. package/bizar-dash/src/web/v8/shell/Sidebar.tsx +0 -1
  191. package/bizar-dash/src/web/v8/views/Artifacts/ArtifactsView.tsx +232 -21
  192. package/bizar-dash/src/web/v8/views/Artifacts/ClaudeArtifactView.tsx +179 -0
  193. package/bizar-dash/src/web/v8/views/Router.tsx +0 -5
  194. package/bizar-dash/tests/_update-test-helpers.mjs +13 -0
  195. package/bizar-dash/tests/update-check.test.mjs +18 -13
  196. package/bizar-dash/tests/update-packages.test.mjs +154 -0
  197. package/bizar-dash/tests/update-run.test.mjs +17 -80
  198. package/cli/banner.mjs +1 -1
  199. package/cli/bin.mjs +8 -1
  200. package/cli/bootstrap.mjs +1 -1
  201. package/cli/commands/claude-cmd.mjs +1 -1
  202. package/cli/commands/deploy/docker.mjs +0 -3
  203. package/cli/install/banner.mjs +67 -0
  204. package/cli/install/banner.test.mjs +39 -0
  205. package/cli/install/index.mjs +32 -0
  206. package/cli/install/index.test.mjs +61 -0
  207. package/cli/install/paths.mjs +80 -0
  208. package/cli/install/paths.test.mjs +77 -0
  209. package/cli/install/plugin.mjs +161 -0
  210. package/cli/install/postinstall.mjs +111 -0
  211. package/cli/install.mjs +13 -600
  212. package/cli/migrate.mjs +157 -0
  213. package/cli/migrate.test.mjs +85 -0
  214. package/cli/provision.mjs +615 -1918
  215. package/cli/provision.test.mjs +1 -1
  216. package/cli/service-controller.test.mjs +0 -1
  217. package/cli/service-env.mjs +0 -1
  218. package/cli/utils.mjs +0 -1
  219. package/install.sh +54 -466
  220. package/package.json +1 -1
  221. package/packages/sdk/dist/agent/cron.d.ts +44 -0
  222. package/packages/sdk/dist/agent/cron.js +79 -0
  223. package/packages/sdk/dist/agent/heartbeat.d.ts +43 -0
  224. package/packages/sdk/dist/agent/heartbeat.js +116 -0
  225. package/packages/sdk/dist/index.d.ts +3 -0
  226. package/packages/sdk/dist/index.js +5 -0
  227. package/packages/sdk/dist/learning/decisions.d.ts +46 -0
  228. package/packages/sdk/dist/learning/decisions.js +132 -0
  229. package/packages/sdk/dist/learning/index.d.ts +8 -0
  230. package/packages/sdk/dist/learning/index.js +8 -0
  231. package/packages/sdk/dist/learning/instincts.d.ts +38 -0
  232. package/packages/sdk/dist/learning/instincts.js +139 -0
  233. package/packages/sdk/dist/mcp/server.js +119 -1
  234. package/packages/sdk/dist/router/agent-model-registry.d.ts +89 -0
  235. package/packages/sdk/dist/router/agent-model-registry.js +144 -0
  236. package/packages/sdk/dist/router/index.d.ts +1 -0
  237. package/packages/sdk/dist/router/index.js +1 -0
  238. package/packages/sdk/package.json +3 -2
  239. package/scripts/audit.mjs +388 -0
  240. package/scripts/audit.test.mjs +149 -0
  241. package/scripts/eval-gate.mjs +134 -0
  242. package/scripts/eval-gate.test.mjs +138 -0
  243. package/scripts/feature-state-machine.mjs +178 -0
  244. package/scripts/feature-state-machine.test.mjs +135 -0
  245. package/scripts/install-curl.sh +17 -0
  246. package/scripts/spec-dedup.test.mjs +124 -0
  247. package/scripts/sprint.mjs +213 -0
  248. package/scripts/worktree-setup.sh +79 -0
  249. package/bizar-dash/dist/assets/ArtifactsView-CDIhPBAx.js +0 -6
  250. package/bizar-dash/dist/assets/ArtifactsView-CDIhPBAx.js.map +0 -1
  251. package/bizar-dash/dist/assets/HeadroomView-CNc-TI7u.js +0 -11
  252. package/bizar-dash/dist/assets/HeadroomView-CNc-TI7u.js.map +0 -1
  253. package/bizar-dash/dist/assets/MiscView-BBcpUbZZ.js +0 -1
  254. package/bizar-dash/dist/assets/ObsidianView-D3bI0row.js +0 -1
  255. package/bizar-dash/dist/assets/main-CdOm1Pj9.js.map +0 -1
  256. package/bizar-dash/src/web/v8/views/Headroom/HeadroomView.tsx +0 -201
  257. package/bizar-dash/tests/graphify-mod-spawn.node.test.mjs +0 -90
  258. package/bizar-dash/tests/v7-archive/mobile-overview.test.tsx +0 -214
  259. package/bizar-dash/tests/v7-archive/mobile-settings.test.tsx +0 -181
  260. package/bizar-dash/tests/v7-archive/navigation/CommandPalette.test.tsx +0 -105
  261. package/bizar-dash/tests/v7-archive/settings-nav.test.tsx +0 -128
  262. package/bizar-dash/tests/v7-archive/views/Overview.test.tsx +0 -413
  263. package/cli/provision-claude.mjs +0 -1176
@@ -1,4 +1,4 @@
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";/**
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,C as xe,b as je,j as be,F as q}from"./main-CyAIirBB.js";import{G as re}from"./Grid-dEnoGGws.js";import{C as Se,V as ke}from"./ViewHeader-V_SzbUpw.js";import{L as we}from"./ListHeader-Ak9WJd39.js";import{A as ie,G as Ce,B as ze}from"./Avatar-CXDZdKy4.js";import{P as Re}from"./ProgressBar-D3lkz42E.js";import{Z as Te}from"./zap-BaOiybcl.js";import{S as le,a as de}from"./Sheet-Cztsvgse.js";import{T as $e}from"./Textarea-D_TPpVMy.js";import{C as ce,b as ue}from"./Card-D9019JOD.js";import{P as ge}from"./play-CGxZWqtW.js";import{P as ae}from"./pause-CKYjSTGX.js";import{R as Ie}from"./refresh-cw-COTg1nZo.js";import{S as Ee}from"./send-DyBhyk8t.js";import{R as fe}from"./rotate-cw-CsTtaLV2.js";import{C as X}from"./Chip-DQtalZ4y.js";import{E as Ae}from"./ErrorState-Bump8diE.js";import{I as ne}from"./Input-BSa3lh_-.js";import{E as Me}from"./EmptyState-DLmtBX_6.js";import{N as Le}from"./network-CDn43Gsj.js";import{P as Oe}from"./plus-fFxt-8z5.js";import{T as Pe}from"./triangle-alert-DFmQ_RXN.js";import"./Alert-Dg_Vwxh5.js";import"./circle-alert-CQ9MLygI.js";import"./circle-check-COtVgsWw.js";import"./refresh-ccw-BCXx86xp.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-DVxytz9i.js";import{c as oe,B as L,A as te,g 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($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:`
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(Te,{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(Re,{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(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};
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(Ie,{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($e,{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(Ee,{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(xe,{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(Ce,{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(Me,{icon:e.jsx(Le,{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(ze,{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(Ae,{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};