@openscout/scout 0.2.92 → 0.2.94

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 (507) hide show
  1. package/README.md +22 -28
  2. package/bin/scoutd +0 -0
  3. package/dist/build-manifest.json +3 -3
  4. package/dist/client/apple-touch-icon.png +0 -0
  5. package/dist/client/assets/ActivityScreen--eANwuxa.js +1 -0
  6. package/dist/client/assets/{AddProjectForm-CpyytDf2.js → AddProjectForm-CcD6qvV8.js} +1 -1
  7. package/dist/client/assets/AgentAvatar-CYhf6twS.js +1 -0
  8. package/dist/client/assets/AgentConfigurationScreen-BTI24HQX.js +1 -0
  9. package/dist/client/assets/AgentDefinitionsWorkspace-srmN6-vj.js +1 -0
  10. package/dist/client/assets/{AgentDetailCard-BTiOmh-a.js → AgentDetailCard-UqPNpcvB.js} +1 -1
  11. package/dist/client/assets/AgentFloorView-XXNgI5Cj.js +1 -0
  12. package/dist/client/assets/AgentInfoScreen-CimdOnZ9.js +1 -0
  13. package/dist/client/assets/{AgentLaneCard-lfRNb7JD.js → AgentLaneCard-Z-aOBR3W.js} +1 -1
  14. package/dist/client/assets/{AgentLaneChrome-Dlwrbq3g.js → AgentLaneChrome-CyhA1reW.js} +1 -1
  15. package/dist/client/assets/AgentLaneDetailSheet-BNzjMjIH.js +4 -0
  16. package/dist/client/assets/{AgentLaneSummaryResize-6SOEWUnr.js → AgentLaneSummaryResize-Box8-_rS.js} +1 -1
  17. package/dist/client/assets/AgentLanesEmbedScreen-BmLnN4on.js +1 -0
  18. package/dist/client/assets/{AgentLanesPreflight-C3uOiOzd.js → AgentLanesPreflight-5B6sXvRB.js} +1 -1
  19. package/dist/client/assets/AgentLanesView-DHyzVBk6.js +2 -0
  20. package/dist/client/assets/{AgentLiveActions-BJ5dIfL3.js → AgentLiveActions-BwuzOE8h.js} +1 -1
  21. package/dist/client/assets/AgentSessions-CsZwoukw.js +6 -0
  22. package/dist/client/assets/AgentsConsole-KCao4XmX.js +1 -0
  23. package/dist/client/assets/AgentsScreen-CtPAmwRX.js +1 -0
  24. package/dist/client/assets/AgentsSubnav-CDMjKeYC.js +1 -0
  25. package/dist/client/assets/AstronautSuit-Ckx7lu7G.js +1 -0
  26. package/dist/client/assets/AtopView-DYlpgEHf.js +1 -0
  27. package/dist/client/assets/{BackToPicker-D1LV6Cqp.js → BackToPicker-4JaeRvDm.js} +1 -1
  28. package/dist/client/assets/BriefingDetailScreen-D6-xqrpo.js +1 -0
  29. package/dist/client/assets/BriefingsScreen-DKxSDEmk.js +1 -0
  30. package/dist/client/assets/{BrokerMetadataPanel-BhjECqOK.js → BrokerMetadataPanel-BbREmsbK.js} +1 -1
  31. package/dist/client/assets/BrokerScreen-fbPIouMw.js +5 -0
  32. package/dist/client/assets/CastPicker-BcA2vDDV.js +1 -0
  33. package/dist/client/assets/CastPicker-zXsnkTIy.css +1 -0
  34. package/dist/client/assets/ChatCollapsedStrip-Ycm0ecaX.js +1 -0
  35. package/dist/client/assets/{CodeDiffPane-Bx_2VAzv.js → CodeDiffPane-Cn8Y9hAt.js} +1 -1
  36. package/dist/client/assets/{CodeProjectPicker-C1yOJKvs.js → CodeProjectPicker-nPFktrco.js} +1 -1
  37. package/dist/client/assets/CodeScreen-BlAxtxE5.js +1 -0
  38. package/dist/client/assets/ConversationComposer-2HjbGPL9.js +1 -0
  39. package/dist/client/assets/ConversationFeedRows-C6wUqJrx.js +1 -0
  40. package/dist/client/assets/ConversationHeader-C8vfXaTF.js +1 -0
  41. package/dist/client/assets/ConversationPanels-CNCIbpqU.js +6 -0
  42. package/dist/client/assets/ConversationScreen-BNULZAp2.js +2 -0
  43. package/dist/client/assets/ConversationScreen-CkWnKXt6.css +1 -0
  44. package/dist/client/assets/ConversationStatus-DZuyKsWN.js +1 -0
  45. package/dist/client/assets/CrewAvatar-CTIuxp4G.js +1 -0
  46. package/dist/client/assets/CrewAvatar-D0c9z5Qr.css +1 -0
  47. package/dist/client/assets/CrewWorkspaces-CJhBKVoZ.css +1 -0
  48. package/dist/client/assets/CrewWorkspaces-CkPYIA46.js +1 -0
  49. package/dist/client/assets/{DataTable-CJbbgBdA.js → DataTable-6IDhanr5.js} +1 -1
  50. package/dist/client/assets/DispatchAftermath-DC1u9itO.js +1 -0
  51. package/dist/client/assets/DocumentFocusViewer-DZVhS7as.js +1 -0
  52. package/dist/client/assets/{EmbeddableSurfacesLab-BdsYRDky.js → EmbeddableSurfacesLab-BKUFJMCV.js} +1 -1
  53. package/dist/client/assets/{EmptyState-BRY5jTpz.js → EmptyState-CeBl0iGd.js} +1 -1
  54. package/dist/client/assets/{FileViewerPane-9Bveqm9c.js → FileViewerPane-DQlpNt2S.js} +2 -2
  55. package/dist/client/assets/FlightObserveScreen-CDWGSKZg.js +1 -0
  56. package/dist/client/assets/FollowScreen-BXHOp3gb.js +1 -0
  57. package/dist/client/assets/{HarnessMark-BPAphNjx.js → HarnessMark-D5CA5uSp.js} +1 -1
  58. package/dist/client/assets/HarnessesScreen-DhFXq1qz.js +1 -0
  59. package/dist/client/assets/{HerdrSession-BujfGzrP.js → HerdrSession-BRhs5LIR.js} +1 -1
  60. package/dist/client/assets/HomeHero-7JwycwFY.css +1 -0
  61. package/dist/client/assets/HomeHero-DMABJuze.js +1 -0
  62. package/dist/client/assets/HostAdvisorView-RAociATV.js +1 -0
  63. package/dist/client/assets/{KnowledgeSearchInspector-B4ZY24xE.js → KnowledgeSearchInspector-CZPyVNSw.js} +1 -1
  64. package/dist/client/assets/KnowledgeSearchScreen-mGTKIg00.js +1 -0
  65. package/dist/client/assets/{LaneToolHoverCard-B7KdvQvf.js → LaneToolHoverCard-D_DMlBeT.js} +1 -1
  66. package/dist/client/assets/LaneTraceDetailSheet-BEHg3LmH.js +1 -0
  67. package/dist/client/assets/{LaneTraceEventFocus-mkMw2wJU.js → LaneTraceEventFocus-DVimcizS.js} +1 -1
  68. package/dist/client/assets/{MeshCanvas-CpKcWxKy.js → MeshCanvas-BOuZx4AM.js} +2 -2
  69. package/dist/client/assets/{MeshCanvasMinimap-C9IoGHbe.js → MeshCanvasMinimap-wL-1N94e.js} +1 -1
  70. package/dist/client/assets/MeshScreen-DMY9Bmh5.js +1 -0
  71. package/dist/client/assets/{MeshTopologyView-DFzr0IZM.js → MeshTopologyView-DiDcX5f4.js} +2 -2
  72. package/dist/client/assets/MessagesScreen-Eulveud3.js +1 -0
  73. package/dist/client/assets/{MissionContextRail-Y8QxUZGE.js → MissionContextRail-DrNKXG5u.js} +1 -1
  74. package/dist/client/assets/MissionControlView-ByBlHVN8.js +1 -0
  75. package/dist/client/assets/MissionFocusOverlay-D1i6R6Zt.js +1 -0
  76. package/dist/client/assets/MissionLeftAgentRow-DN9NcCML.js +1 -0
  77. package/dist/client/assets/MissionLogPane-DSeIv3Xo.js +1 -0
  78. package/dist/client/assets/NewAgentModal-V7yK6J6j.js +1 -0
  79. package/dist/client/assets/NewChatComposer-hlWT-nbR.js +19 -0
  80. package/dist/client/assets/{NewChatOrigin-DmuJ32wa.js → NewChatOrigin-DdpzE4kz.js} +1 -1
  81. package/dist/client/assets/ObserveEmbedScreen-l_Q3ts2q.js +2 -0
  82. package/dist/client/assets/ObserveTextFlow-BSEtYTxU.js +2 -0
  83. package/dist/client/assets/ObservedTopologyPanel-CdGUXxGR.js +2 -0
  84. package/dist/client/assets/OpenScoutAppShell-DN8dOSK4.js +79 -0
  85. package/dist/client/assets/OpsAgentsView-ntGr4pz4.js +1 -0
  86. package/dist/client/assets/OpsScreen-Ppen_Lmj.js +1 -0
  87. package/dist/client/assets/OpsSubnav-GAKsoSor.js +1 -0
  88. package/dist/client/assets/ProjectAgentProfile-BLlp2e6t.js +1 -0
  89. package/dist/client/assets/{ProjectAgentProfileBar-BLVg5EeA.js → ProjectAgentProfileBar-BQET-qrY.js} +1 -1
  90. package/dist/client/assets/ProjectAgentProfileHero-Ck8mThtx.js +1 -0
  91. package/dist/client/assets/ProjectsInbox-Dlt8OQ8O.js +2 -0
  92. package/dist/client/assets/ProjectsRail-DCfNMmnW.js +1 -0
  93. package/dist/client/assets/ProjectsScreen-BP-hmI1m.js +1 -0
  94. package/dist/client/assets/ProjectsThreadAside-CWpMjGIH.js +1 -0
  95. package/dist/client/assets/Provider-B2xuo3rf.js +1 -0
  96. package/dist/client/assets/RailRow-B-GycCBx.js +1 -0
  97. package/dist/client/assets/RailRow-B0sRaJc6.css +1 -0
  98. package/dist/client/assets/RawSessionsTable-AQThi6sm.js +1 -0
  99. package/dist/client/assets/RealtimeVoiceScreen-D7zZHK_t.js +1 -0
  100. package/dist/client/assets/{RepoDiffEmbedScreen-BCDXFE3D.js → RepoDiffEmbedScreen-DXWoRF_c.js} +1 -1
  101. package/dist/client/assets/{RepoDiffPageScreen-m62FiWXC.js → RepoDiffPageScreen-D_274ExO.js} +1 -1
  102. package/dist/client/assets/RepoDiffViewer-DbedmHDX.js +7 -0
  103. package/dist/client/assets/RepoDiffViewerLazy-C0--fPtk.js +2 -0
  104. package/dist/client/assets/ReposScreen-D39_YG4H.js +6 -0
  105. package/dist/client/assets/ScoutDeckSurface-CKT3qdqY.js +1 -0
  106. package/dist/client/assets/{ScoutSurface-CkgT7A-c.js → ScoutSurface-UsRy0t-I.js} +1 -1
  107. package/dist/client/assets/{ScoutbotFxLab-D-kV5j4T.js → ScoutbotFxLab-Fmdfboxs.js} +1 -1
  108. package/dist/client/assets/{SecondaryNav-_wyKjwNf.js → SecondaryNav-o2RL9H8H.js} +1 -1
  109. package/dist/client/assets/{SessionEmbedScreen-CJZmIBV7.js → SessionEmbedScreen-RD5XOx7R.js} +1 -1
  110. package/dist/client/assets/{SessionObserve-yYA8Gy5s.js → SessionObserve-Dsd0j05N.js} +9 -9
  111. package/dist/client/assets/{SessionObserveEvidence-cHdjYOJe.js → SessionObserveEvidence-DopQYDkD.js} +1 -1
  112. package/dist/client/assets/SessionRefScreen-B_cTv47v.js +1 -0
  113. package/dist/client/assets/SessionsScreen-Bq0Z77On.js +1 -0
  114. package/dist/client/assets/SettingsDrawer-R8a0TlJD.css +1 -0
  115. package/dist/client/assets/SettingsDrawer-_AwuopMS.js +3 -0
  116. package/dist/client/assets/SettingsScreen-Cw4DDfJP.js +1 -0
  117. package/dist/client/assets/{ShikiPane-dBS9hD-z.js → ShikiPane-BfHc_3pM.js} +1 -1
  118. package/dist/client/assets/{SlidePanel-CH-3-8_2.js → SlidePanel-C-q7XwTa.js} +1 -1
  119. package/dist/client/assets/SpriteAvatar-Bs68ZENy.js +1 -0
  120. package/dist/client/assets/{StatusPill-C8m9ZymF.js → StatusPill-ZZQwxB1a.js} +1 -1
  121. package/dist/client/assets/{TailView-B0BSopPs.js → TailView-Q4FVMsUH.js} +2 -2
  122. package/dist/client/assets/Terminal-D7zqHwHV.js +1 -0
  123. package/dist/client/assets/TerminalEmbedScreen-CXIJ7qv6.js +1 -0
  124. package/dist/client/assets/TerminalHeaderMount-BnBLOPbb.js +1 -0
  125. package/dist/client/assets/{TextDocumentSurface-BWJCGBZf.js → TextDocumentSurface-CKQP-cBT.js} +1 -1
  126. package/dist/client/assets/{TmuxPeek-B4QdHbGm.js → TmuxPeek-V9dGESfO.js} +1 -1
  127. package/dist/client/assets/{VoicePermissionsPanel-Dd4ITJy_.js → VoicePermissionsPanel-k7sbLXx2.js} +1 -1
  128. package/dist/client/assets/WorkDetailScreen-60p9litn.js +5 -0
  129. package/dist/client/assets/WorkFilesViewer-BjJS7GyM.js +1 -0
  130. package/dist/client/assets/{activity-CC8JzJNH.js → activity-Bj3Hnbj3.js} +1 -1
  131. package/dist/client/assets/{addon-fit-CaZ-uLrg.js → addon-fit-BL-NTWRU.js} +1 -1
  132. package/dist/client/assets/{addon-webgl-B8utL3bM.js → addon-webgl-CIMgmNjg.js} +1 -1
  133. package/dist/client/assets/{ScoutbotBroadcastChip-CxtYZWPZ.css → agent-autocomplete-C7xwIcwd.css} +1 -1
  134. package/dist/client/assets/agent-autocomplete-DXlvdc4b.js +10 -0
  135. package/dist/client/assets/{agent-essentials-B3wcxg_v.js → agent-essentials-BOMHR0_U.js} +1 -1
  136. package/dist/client/assets/{agent-lane-card-model-q4cwzLX4.js → agent-lane-card-model-CTLxf3R4.js} +1 -1
  137. package/dist/client/assets/agent-lane-detail-ppJId6Jc.js +2 -0
  138. package/dist/client/assets/{agent-lane-preview-C33Dwpn7.js → agent-lane-preview-BhplDYGf.js} +1 -1
  139. package/dist/client/assets/{agent-lanes-BDNktFBZ.css → agent-lanes-DlqcEf0l.css} +1 -1
  140. package/dist/client/assets/{agent-lanes-model-VYQ5a68i.js → agent-lanes-model-AfrjRNK5.js} +2 -2
  141. package/dist/client/assets/agent-specialization-BIPIBW8u.js +1 -0
  142. package/dist/client/assets/api-Co9aQ2Jw.js +1 -0
  143. package/dist/client/assets/{api-BkjHJfgJ.js → api-HFH8wFyb.js} +1 -1
  144. package/dist/client/assets/{arc.es-uFv9UrHn.js → arc.es-IR5r6sj_.js} +1 -1
  145. package/dist/client/assets/archive-BjcGiAy8.js +1 -0
  146. package/dist/client/assets/{arrow-down-w1HPzDSE.js → arrow-down-BydciYFZ.js} +1 -1
  147. package/dist/client/assets/{arrow-left-B-3GJ7ct.js → arrow-left-CghA0kTw.js} +1 -1
  148. package/dist/client/assets/arrow-right-iJFv3jNh.js +1 -0
  149. package/dist/client/assets/{arrow-up-right-G6bJXxhK.js → arrow-up-right-CCfZXPqD.js} +1 -1
  150. package/dist/client/assets/{bot-DzCOGKi6.js → bot-B5sub1-i.js} +1 -1
  151. package/dist/client/assets/broker-display-Q75fupqG.js +2 -0
  152. package/dist/client/assets/{cache-Dr0why2k.js → cache-CeWH_KzJ.js} +1 -1
  153. package/dist/client/assets/{check-BX8nRgop.js → check-C18YQC90.js} +1 -1
  154. package/dist/client/assets/{chevron-down-B3VVRJcV.js → chevron-down-Mp9mu_yd.js} +1 -1
  155. package/dist/client/assets/{chevron-right-BYMV1511.js → chevron-right-CzH-TaSF.js} +1 -1
  156. package/dist/client/assets/{chunk-HRAB3GC3-dRd2eQMJ.js → chunk-HRAB3GC3-swV8PA2k.js} +1 -1
  157. package/dist/client/assets/{chunk-JTPDIGGW-BjX67kHU.js → chunk-JTPDIGGW-BKXqcLKw.js} +3 -3
  158. package/dist/client/assets/{chunk-T65CQEWV-kP6nJjkU.js → chunk-T65CQEWV-vYbNJ8E6.js} +1 -1
  159. package/dist/client/assets/{chunk-YOZR3KYS-C13bZPVd.js → chunk-YOZR3KYS-U65yUmqt.js} +1 -1
  160. package/dist/client/assets/{clock-B9ukVaVn.js → clock-B4PTFi5m.js} +1 -1
  161. package/dist/client/assets/{code-xml-BFc3TMSm.js → code-xml-Jtxsp5d1.js} +1 -1
  162. package/dist/client/assets/collapsed-strip-raJWthAH.css +1 -0
  163. package/dist/client/assets/compass-0_54-vz3.js +1 -0
  164. package/dist/client/assets/content-6RvWTrtk.js +1 -0
  165. package/dist/client/assets/content-BCgwMUqz.js +1 -0
  166. package/dist/client/assets/content-Bf2VLhx0.js +1 -0
  167. package/dist/client/assets/content-BrU_38-m.js +1 -0
  168. package/dist/client/assets/content-BvvJN8rN.js +1 -0
  169. package/dist/client/assets/content-CAeEqYPw.js +1 -0
  170. package/dist/client/assets/content-CHghn-rT.js +1 -0
  171. package/dist/client/assets/{content-Uqt8AG-s.css → content-CINHz-rZ.css} +1 -1
  172. package/dist/client/assets/content-CI_Z9DXk.js +1 -0
  173. package/dist/client/assets/content-CbyKONhW.js +1 -0
  174. package/dist/client/assets/content-Czogvp43.js +1 -0
  175. package/dist/client/assets/content-DFk0zNzX.js +1 -0
  176. package/dist/client/assets/content-DHe4DgkA.js +1 -0
  177. package/dist/client/assets/content-DMbawvqU.js +1 -0
  178. package/dist/client/assets/content-DTz7cKjo.js +1 -0
  179. package/dist/client/assets/content-E3kudY-W.js +1 -0
  180. package/dist/client/assets/content-LpO0aO_U.js +1 -0
  181. package/dist/client/assets/{conversation-icons-gpsv650H.js → conversation-icons-BV10B2Me.js} +1 -1
  182. package/dist/client/assets/conversation-model-CwF6Y9gx.js +1 -0
  183. package/dist/client/assets/conversation-motion-features-BKkCRaWR.js +1 -0
  184. package/dist/client/assets/{copy-BFmOcWof.js → copy-Dtpx4FOE.js} +1 -1
  185. package/dist/client/assets/cpu-BjVis9mc.js +1 -0
  186. package/dist/client/assets/{createLucideIcon-CFBn0Sdk.js → createLucideIcon-DXpqZP7I.js} +1 -1
  187. package/dist/client/assets/credentials-BTce3VP1.js +1 -0
  188. package/dist/client/assets/ctx-panel-D_HJ3nhb.css +1 -0
  189. package/dist/client/assets/discover-CHbrEItO.js +2 -0
  190. package/dist/client/assets/embed-entry-vil28MyU.js +2 -0
  191. package/dist/client/assets/{external-link-B1TI5yIt.js → external-link-Ckiyzjwo.js} +1 -1
  192. package/dist/client/assets/{eye-1J4yOUoG.js → eye-CpfyvdLq.js} +1 -1
  193. package/dist/client/assets/file-code-corner-7mo7EviR.js +1 -0
  194. package/dist/client/assets/{file-text-DcYSrI4v.js → file-text-KijGBnME.js} +1 -1
  195. package/dist/client/assets/gauge-y-Xg8Mrv.js +1 -0
  196. package/dist/client/assets/gestures-Bq9XnSqY.js +1 -0
  197. package/dist/client/assets/git-branch-BQ_x8KZL.js +1 -0
  198. package/dist/client/assets/harnesses-screen-2z36fJKE.css +1 -0
  199. package/dist/client/assets/home-moving-signal-DMguaRWR.css +1 -0
  200. package/dist/client/assets/home-moving-signal-DtRpiNa0.js +1 -0
  201. package/dist/client/assets/home-now-card-DFb4GOgM.js +1 -0
  202. package/dist/client/assets/{home-now-card-nano-y1EhBvVL.js → home-now-card-nano-D--m9jpq.js} +1 -1
  203. package/dist/client/assets/hooks-9d1SoaQA.js +2 -0
  204. package/dist/client/assets/host-advisor-B2Fqs5Dd.css +1 -0
  205. package/dist/client/assets/index-BVlMw8x_.js +1 -0
  206. package/dist/client/assets/index-CZ-05hKz.js +10 -0
  207. package/dist/client/assets/index-Cn0GR-q1.js +1 -0
  208. package/dist/client/assets/index-DosI4AG9.js +1 -0
  209. package/dist/client/assets/index-i7TMxlwW.css +1 -0
  210. package/dist/client/assets/index-wLwc74Pu.css +1 -0
  211. package/dist/client/assets/inspector-panel-C-EhEDYy.js +2 -0
  212. package/dist/client/assets/{keyboard-nav-h1IdakpD.js → keyboard-nav-DFhAJkW3.js} +1 -1
  213. package/dist/client/assets/{lane-observe-BA3g9aVd.js → lane-observe-vfyACHi0.js} +1 -1
  214. package/dist/client/assets/{lane-roster-store-71vFgAem.js → lane-roster-store-gUBsydNf.js} +1 -1
  215. package/dist/client/assets/layers-CGou-LwV.js +1 -0
  216. package/dist/client/assets/layout-grid-BrZt31QH.js +1 -0
  217. package/dist/client/assets/left-B_o51JV6.js +1 -0
  218. package/dist/client/assets/left-BpgWnaah.js +1 -0
  219. package/dist/client/assets/left-CwHZCGO3.js +2 -0
  220. package/dist/client/assets/left-CwLs0okF.js +1 -0
  221. package/dist/client/assets/left-Cx0kv6pe.js +1 -0
  222. package/dist/client/assets/left-DA0amyfu.js +1 -0
  223. package/dist/client/assets/left-DH44V4I_.css +1 -0
  224. package/dist/client/assets/left-R2OOE7VG.css +1 -0
  225. package/dist/client/assets/left-advisor-DU3s01gk.js +1 -0
  226. package/dist/client/assets/left-agents-qL5PpUY-.js +1 -0
  227. package/dist/client/assets/left-default-uvuvDmt0.js +1 -0
  228. package/dist/client/assets/left-lanes-DnNLgec8.js +1 -0
  229. package/dist/client/assets/left-mission-DN3-NLPC.js +1 -0
  230. package/dist/client/assets/left-z-6CkuBe.js +2 -0
  231. package/dist/client/assets/library-DIo5NiGP.js +1 -0
  232. package/dist/client/assets/{loader-circle-d6PKL_KD.js → loader-circle-BiohlpM3.js} +1 -1
  233. package/dist/client/assets/{local-agents-B5pq17tZ.js → local-agents-wUIaBcEr.js} +1 -1
  234. package/dist/client/assets/{mentions-agCGDgyA.js → mentions-CcPFMbmZ.js} +1 -1
  235. package/dist/client/assets/mesh-buckets-ByyFXdKT.js +1 -0
  236. package/dist/client/assets/{mesh-ops-5pZCYptW.js → mesh-ops-CvGyjK84.js} +1 -1
  237. package/dist/client/assets/mesh-roster-n2nDpEmA.js +1 -0
  238. package/dist/client/assets/{mesh-screen-BSDUjrnV.css → mesh-screen-D1Yvo8fU.css} +1 -1
  239. package/dist/client/assets/{mesh-view-store-KJzABIkN.js → mesh-view-store-BpxGm71b.js} +1 -1
  240. package/dist/client/assets/{message-circle-CJO-pi7b.js → message-circle-B2ddzBrX.js} +1 -1
  241. package/dist/client/assets/{message-markup-CyRDLdOn.js → message-markup-RkfmDfME.js} +1 -1
  242. package/dist/client/assets/{message-square-D1hMsMj_.js → message-square-D9YYWE0x.js} +1 -1
  243. package/dist/client/assets/message-visibility-DwxgcgYK.js +1 -0
  244. package/dist/client/assets/mission-control-CnU7dNt1.css +1 -0
  245. package/dist/client/assets/{mission-control-store-Ce6dOvnZ.js → mission-control-store-Bf4b54MV.js} +1 -1
  246. package/dist/client/assets/{observe-BSWVM8YA.js → observe-CJRIvOCn.js} +1 -1
  247. package/dist/client/assets/{operator-attention-BwSPeheT.js → operator-attention-RqieiSY8.js} +1 -1
  248. package/dist/client/assets/{page-status-D2FQLJOX.js → page-status-BptpTdQ-.js} +1 -1
  249. package/dist/client/assets/{paperclip-iZmDMOS5.js → paperclip-B1UNGl5d.js} +1 -1
  250. package/dist/client/assets/perf-PX8Rx0EP.js +1 -0
  251. package/dist/client/assets/persistent-state-YI-WHSCF.js +1 -0
  252. package/dist/client/assets/{plus-gZ0T0eBI.js → plus-CuU_X0-8.js} +1 -1
  253. package/dist/client/assets/profile-rY8jO38P.js +1 -0
  254. package/dist/client/assets/projects-inbox-BBs1hG13.css +1 -0
  255. package/dist/client/assets/projects-inbox-D-zAb9Gp.js +1 -0
  256. package/dist/client/assets/proxy-DnLpZIi9.js +1 -0
  257. package/dist/client/assets/{radio-RMLfV4EO.js → radio-Dm1ItnA4.js} +1 -1
  258. package/dist/client/assets/{refresh-cw-C4x1x6b_.js → refresh-cw-BRn9Oxxl.js} +1 -1
  259. package/dist/client/assets/resolve-panes-DO6LkwhQ.js +1 -0
  260. package/dist/client/assets/resolve-sidebar-context-CIF288wY.js +1 -0
  261. package/dist/client/assets/right-BJltPRnd.js +1 -0
  262. package/dist/client/assets/right-BbyYdzHn.js +1 -0
  263. package/dist/client/assets/right-Beh3nCUB.js +1 -0
  264. package/dist/client/assets/right-C1yumXNx.js +1 -0
  265. package/dist/client/assets/{right-D-k9Z1Fe.js → right-CJnB_Bg7.js} +2 -2
  266. package/dist/client/assets/right-CPP7GyOm.js +1 -0
  267. package/dist/client/assets/right-D3aTKf1F.js +1 -0
  268. package/dist/client/assets/right-DI1B79nR.js +1 -0
  269. package/dist/client/assets/right-DtsRNX5b.js +1 -0
  270. package/dist/client/assets/right-Shpw_xDy.js +1 -0
  271. package/dist/client/assets/{rocket-CMM-IdLy.js → rocket-DOwXHKWA.js} +1 -1
  272. package/dist/client/assets/router-DJj2WbDg.js +1 -0
  273. package/dist/client/assets/{scope-views-BIfMTXU4.js → scope-views-A4_vP97W.js} +1 -1
  274. package/dist/client/assets/scout-voice-BhPzrc6P.js +1 -0
  275. package/dist/client/assets/{scoutbot-BTIErYHo.js → scoutbot-BJIamJOH.js} +2 -2
  276. package/dist/client/assets/scoutbot-markdown-jh7tzFB1.js +6 -0
  277. package/dist/client/assets/{scroll-text-DPPYrqB9.js → scroll-text-DO0GQzvN.js} +1 -1
  278. package/dist/client/assets/{search-DAyagUtF.js → search-D1tJSAWe.js} +1 -1
  279. package/dist/client/assets/secondaryNavConfig-B9IF8wXl.js +1 -0
  280. package/dist/client/assets/{selection-bridge-BXw09aRF.js → selection-bridge-i2S9zpf8.js} +1 -1
  281. package/dist/client/assets/{send-horizontal-IcG46D2M.js → send-horizontal-CgLppsIC.js} +1 -1
  282. package/dist/client/assets/{server-BySujhDV.js → server-Dymv5Emh.js} +1 -1
  283. package/dist/client/assets/{session-catalog-ClS9xf6i.js → session-catalog-DNaOEzoQ.js} +1 -1
  284. package/dist/client/assets/{session-table-BdpHs1GN.js → session-table-PTQVoTyc.js} +1 -1
  285. package/dist/client/assets/settings-2fC_G9nX.js +1 -0
  286. package/dist/client/assets/{sliders-horizontal-R5pWUUcH.js → sliders-horizontal-BPSMHhbm.js} +1 -1
  287. package/dist/client/assets/{sparkles-DJOBD_8l.js → sparkles-Dy8p5xN8.js} +1 -1
  288. package/dist/client/assets/sse-CiOSzE5n.js +1 -0
  289. package/dist/client/assets/system-surfaces-redesign-QVXNeGYw.css +1 -0
  290. package/dist/client/assets/{tail-display-BRcJltQa.js → tail-display-DcliDVkW.js} +1 -1
  291. package/dist/client/assets/{tail-events-BdvqZHLr.js → tail-events-BMQmSx1n.js} +1 -1
  292. package/dist/client/assets/{terminal-relay-TffuSPGs.js → terminal-relay-9lhzEp2V.js} +1 -1
  293. package/dist/client/assets/terminal-screen-BLk4PAYt.css +1 -0
  294. package/dist/client/assets/terminal-sessions-BQ6t92tJ.js +1 -0
  295. package/dist/client/assets/{terminal-takeover-BOFPRPjR.js → terminal-takeover-DANQfTcy.js} +1 -1
  296. package/dist/client/assets/{terminal-DJPUp_Qn.js → terminal-yN9xN-h9.js} +1 -1
  297. package/dist/client/assets/{runtime-picker--IW3cRry.js → text-CnZ0e1-V.js} +1 -1
  298. package/dist/client/assets/text-rLpBg4_z.css +1 -0
  299. package/dist/client/assets/use-conversation-list-D9BNLfnW.js +1 -0
  300. package/dist/client/assets/{use-fleet-active-asks-BHzeBZSW.js → use-fleet-active-asks-BeAdcl09.js} +1 -1
  301. package/dist/client/assets/{use-mesh-ops-items-KmaauBr_.js → use-mesh-ops-items-BIvIHlqe.js} +1 -1
  302. package/dist/client/assets/use-reduced-motion-CKkhq9c5.js +1 -0
  303. package/dist/client/assets/{use-scout-dev-flags-BJbw87PK.js → use-scout-dev-flags-B2KCzPxn.js} +1 -1
  304. package/dist/client/assets/{useAgentHoverCard-C6o0tlat.js → useAgentHoverCard-CHBsxcbp.js} +1 -1
  305. package/dist/client/assets/useContentSecondaryNav-D0mUhxTF.js +1 -0
  306. package/dist/client/assets/{usePierreRuntime-Cm7-qdm0.js → usePierreRuntime-DUuXH5yp.js} +1 -1
  307. package/dist/client/assets/{wrench-CvRjjByE.js → wrench-YcXMlsh2.js} +1 -1
  308. package/dist/client/assets/{x-C8ayPBtj.js → x-e3h2hDsp.js} +1 -1
  309. package/dist/client/assets/{xterm-B0ci4Q9a.js → xterm-Byp1Hep_.js} +1 -1
  310. package/dist/client/assets/zap-nMcjPoWB.js +1 -0
  311. package/dist/client/favicon-16.png +0 -0
  312. package/dist/client/favicon-32.png +0 -0
  313. package/dist/client/favicon.ico +0 -0
  314. package/dist/client/favicon.svg +20 -47
  315. package/dist/client/index.html +5 -5
  316. package/dist/client/openscout-icon.png +0 -0
  317. package/dist/client/site.webmanifest +2 -2
  318. package/dist/client/web-app-icon-192.png +0 -0
  319. package/dist/client/web-app-icon-512.png +0 -0
  320. package/dist/main.mjs +20093 -78203
  321. package/dist/node/main.mjs +322 -252
  322. package/dist/pairing-runtime-controller.mjs +1032 -804
  323. package/dist/runtime/base-daemon.mjs +49 -121
  324. package/dist/runtime/broker-daemon.mjs +1105 -281
  325. package/dist/runtime/broker-process-manager.mjs +6 -0
  326. package/dist/runtime/mesh-discover.mjs +6 -0
  327. package/dist/scout-control-plane-web.mjs +3326 -1912
  328. package/package.json +7 -4
  329. package/dist/client/assets/ActivityScreen-DkUP7V7M.js +0 -1
  330. package/dist/client/assets/AgentAvatar-D8ZtMluU.js +0 -1
  331. package/dist/client/assets/AgentConfigurationScreen-BlGI6fuM.js +0 -1
  332. package/dist/client/assets/AgentDefinitionsWorkspace-CfaDVCVt.js +0 -1
  333. package/dist/client/assets/AgentFloorView-DjNLILLt.js +0 -1
  334. package/dist/client/assets/AgentInfoScreen-DG5dlHb_.js +0 -1
  335. package/dist/client/assets/AgentLaneDetailSheet-BzYzBfcW.js +0 -4
  336. package/dist/client/assets/AgentLanesEmbedScreen-Crxx1srt.js +0 -1
  337. package/dist/client/assets/AgentLanesView-ChNlmY-F.js +0 -2
  338. package/dist/client/assets/AgentSessions-DpY0htZV.js +0 -6
  339. package/dist/client/assets/AgentsConsole-CHyXrjhm.js +0 -1
  340. package/dist/client/assets/AgentsScreen-BhCjX2lD.js +0 -1
  341. package/dist/client/assets/AgentsSubnav-az_VDkri.js +0 -1
  342. package/dist/client/assets/AtopView-BjjPM8OX.js +0 -1
  343. package/dist/client/assets/BriefingDetailScreen-B7qJ90Np.js +0 -6
  344. package/dist/client/assets/BriefingsScreen-CW6N829d.js +0 -1
  345. package/dist/client/assets/BrokerScreen-X3z50712.js +0 -5
  346. package/dist/client/assets/ChatCollapsedStrip-DNR9osDy.js +0 -1
  347. package/dist/client/assets/CodeScreen-CIKK1LcZ.js +0 -1
  348. package/dist/client/assets/ContextMenu-CHIuVKz7.js +0 -1
  349. package/dist/client/assets/ConversationComposer-Bf7Ga_49.js +0 -1
  350. package/dist/client/assets/ConversationFeedRows-Cm1Lgo43.js +0 -1
  351. package/dist/client/assets/ConversationHeader-B_GXrKR0.js +0 -1
  352. package/dist/client/assets/ConversationPanels-BTBbEvrP.js +0 -2
  353. package/dist/client/assets/ConversationScreen-B3l2m3JI.js +0 -1
  354. package/dist/client/assets/ConversationScreen-yIKEsm-8.css +0 -1
  355. package/dist/client/assets/ConversationStatus-BqhUHD85.js +0 -1
  356. package/dist/client/assets/DispatchAftermath-BDA9CrOd.js +0 -1
  357. package/dist/client/assets/DocumentFocusViewer-B9vodVmG.js +0 -1
  358. package/dist/client/assets/FleetSearch-Bj9SCl2f.js +0 -1
  359. package/dist/client/assets/FleetSearch-EXOe8ulE.css +0 -1
  360. package/dist/client/assets/FlightObserveScreen-BVMdsiCC.js +0 -1
  361. package/dist/client/assets/FollowScreen-BifwHWOV.js +0 -1
  362. package/dist/client/assets/HarnessesScreen-fMnbnrD4.js +0 -1
  363. package/dist/client/assets/HomeHero-BgM6S39l.js +0 -1
  364. package/dist/client/assets/HomeHero-DEl-WBsT.css +0 -1
  365. package/dist/client/assets/KnowledgeSearchScreen-Ch_WENUC.js +0 -1
  366. package/dist/client/assets/LaneTraceDetailSheet-H3AnN-vN.js +0 -1
  367. package/dist/client/assets/MeshScreen-48QkJSDI.js +0 -1
  368. package/dist/client/assets/MessageComposerSuggestions-FdVHnT_q.js +0 -1
  369. package/dist/client/assets/MessagesScreen-BMOOfbWX.js +0 -1
  370. package/dist/client/assets/MissionControlView-BpsHKu1F.js +0 -1
  371. package/dist/client/assets/MissionFocusOverlay-BPnAEA3F.js +0 -1
  372. package/dist/client/assets/MissionLeftAgentRow-iOZ6ds9L.js +0 -1
  373. package/dist/client/assets/MissionLogPane-B0csI89E.js +0 -1
  374. package/dist/client/assets/NewAgentModal-DBHJR9Qm.js +0 -1
  375. package/dist/client/assets/NewChatComposer-Hd7pI5Ac.js +0 -19
  376. package/dist/client/assets/ObserveEmbedScreen-DyArn7Id.js +0 -2
  377. package/dist/client/assets/ObserveTextFlow-CkMrtT8s.js +0 -2
  378. package/dist/client/assets/ObservedTopologyPanel-CaSZZP05.js +0 -2
  379. package/dist/client/assets/OpenScoutAppShell-BtlKkiuF.js +0 -87
  380. package/dist/client/assets/OpsAgentsView-CnqrwbC2.js +0 -1
  381. package/dist/client/assets/OpsScreen-DOlmlVkP.js +0 -1
  382. package/dist/client/assets/OpsSubnav-Dj3ShAKv.js +0 -1
  383. package/dist/client/assets/PlanView-BLGdWDx6.js +0 -1
  384. package/dist/client/assets/ProjectAgentProfile-Dv1sVnQl.js +0 -1
  385. package/dist/client/assets/ProjectAgentProfileHero-0-GDhsPT.js +0 -1
  386. package/dist/client/assets/ProjectsInbox-B3DpAI5b.js +0 -2
  387. package/dist/client/assets/ProjectsRail-BDl7U9Jq.js +0 -1
  388. package/dist/client/assets/ProjectsScreen-Dl2FcGrR.js +0 -1
  389. package/dist/client/assets/ProjectsThreadAside-BcGC5mHE.js +0 -1
  390. package/dist/client/assets/Provider-cJCdHAxu.js +0 -1
  391. package/dist/client/assets/RailRow-CLcVmywd.js +0 -1
  392. package/dist/client/assets/RailRow-Cf9LOiEj.css +0 -1
  393. package/dist/client/assets/RawSessionsTable-DBto4Ts-.js +0 -1
  394. package/dist/client/assets/RealtimeVoiceScreen-DXEU5v3g.js +0 -1
  395. package/dist/client/assets/RepoDiffViewer-PaNeZMhJ.js +0 -7
  396. package/dist/client/assets/RepoDiffViewerLazy-CWE5GxMP.js +0 -2
  397. package/dist/client/assets/ReposScreen-Cksv1cAD.js +0 -6
  398. package/dist/client/assets/ScoutDeckSurface-BCjPl7C4.js +0 -1
  399. package/dist/client/assets/ScoutbotBroadcastChip-DkiRCHuK.js +0 -2
  400. package/dist/client/assets/ScoutbotRealtimeVoiceCall-1ixiEn1L.js +0 -1
  401. package/dist/client/assets/SessionRefScreen-OkTY7Szg.js +0 -1
  402. package/dist/client/assets/SessionsScreen-B-GFjxIA.js +0 -1
  403. package/dist/client/assets/SettingsDrawer-Co11RFX0.js +0 -3
  404. package/dist/client/assets/SettingsDrawer-UX7pFJU_.css +0 -1
  405. package/dist/client/assets/SettingsScreen-Cn09nq5_.js +0 -1
  406. package/dist/client/assets/SpriteAvatar-DS6Tmyua.js +0 -1
  407. package/dist/client/assets/Terminal-U8gjIdm3.js +0 -1
  408. package/dist/client/assets/TerminalEmbedScreen-CTmdE7us.js +0 -1
  409. package/dist/client/assets/WorkDetailScreen-mJs0mb99.js +0 -5
  410. package/dist/client/assets/WorkFilesViewer-ODzLXKxj.js +0 -1
  411. package/dist/client/assets/agent-identity-BxCsXnDp.js +0 -1
  412. package/dist/client/assets/agent-lane-detail-BNNm6FNu.js +0 -2
  413. package/dist/client/assets/api-h5zurxmi.js +0 -1
  414. package/dist/client/assets/broker-display-pp33bLsu.js +0 -2
  415. package/dist/client/assets/collapsed-strip-Dz-of2SM.css +0 -1
  416. package/dist/client/assets/content-B8gahuBy.js +0 -1
  417. package/dist/client/assets/content-BIqX06OQ.js +0 -1
  418. package/dist/client/assets/content-BKDZ6Fxe.js +0 -1
  419. package/dist/client/assets/content-C15Ya-iu.js +0 -1
  420. package/dist/client/assets/content-CDE9tJDF.js +0 -1
  421. package/dist/client/assets/content-CSAfI-PX.js +0 -1
  422. package/dist/client/assets/content-CTF9D60D.js +0 -1
  423. package/dist/client/assets/content-CbAGkYQO.js +0 -1
  424. package/dist/client/assets/content-CtqLJOVp.js +0 -1
  425. package/dist/client/assets/content-Dvs1KRfo.js +0 -1
  426. package/dist/client/assets/content-DyJdVZjI.js +0 -1
  427. package/dist/client/assets/content-Ji7ATaf7.js +0 -1
  428. package/dist/client/assets/content-eqZXKWcP.js +0 -1
  429. package/dist/client/assets/content-iyyQKwvA.js +0 -1
  430. package/dist/client/assets/content-pDE7Fpb9.js +0 -1
  431. package/dist/client/assets/content-pPSd2dua.js +0 -1
  432. package/dist/client/assets/conversation-model-CHwHZNw-.js +0 -1
  433. package/dist/client/assets/conversation-motion-features-DXtKlmuM.js +0 -1
  434. package/dist/client/assets/ctx-panel-B4s49N9e.css +0 -1
  435. package/dist/client/assets/discover-DKf0aTr_.js +0 -2
  436. package/dist/client/assets/embed-entry-RlQUTtc4.js +0 -2
  437. package/dist/client/assets/gestures-CcEOV6Sr.js +0 -1
  438. package/dist/client/assets/harnesses-screen-DBZoTZz8.css +0 -1
  439. package/dist/client/assets/home-moving-signal-Bh2FugbH.js +0 -1
  440. package/dist/client/assets/home-moving-signal-CAa0V91u.css +0 -1
  441. package/dist/client/assets/home-now-card-ByRH5fFx.js +0 -1
  442. package/dist/client/assets/hooks-DUZwL3Aq.js +0 -2
  443. package/dist/client/assets/index-BBznYVWk.css +0 -1
  444. package/dist/client/assets/index-BTuq-8Iv.js +0 -1
  445. package/dist/client/assets/index-CmwGCxUk.js +0 -1
  446. package/dist/client/assets/index-CvF09yvf.css +0 -1
  447. package/dist/client/assets/index-DmFAhGPj.js +0 -10
  448. package/dist/client/assets/index-Dtaswdsh.js +0 -1
  449. package/dist/client/assets/inspector-panel-DzgS5_Mv.js +0 -2
  450. package/dist/client/assets/left-8NITBvFX.js +0 -1
  451. package/dist/client/assets/left-B2HEqrTM.js +0 -2
  452. package/dist/client/assets/left-Bk3XnxPD.css +0 -1
  453. package/dist/client/assets/left-CCoobxPS.css +0 -1
  454. package/dist/client/assets/left-CTYUvXbe.js +0 -1
  455. package/dist/client/assets/left-CwDRT50z.js +0 -2
  456. package/dist/client/assets/left-CxlDLJlw.js +0 -1
  457. package/dist/client/assets/left-XFXxNd4g.js +0 -1
  458. package/dist/client/assets/left-agents-Ck4Xn-R8.js +0 -1
  459. package/dist/client/assets/left-default-BeOyS0bR.js +0 -1
  460. package/dist/client/assets/left-lanes-DZp3jJMo.js +0 -1
  461. package/dist/client/assets/left-mission-CuKFQ5xL.js +0 -1
  462. package/dist/client/assets/left-p1hkO6P0.js +0 -1
  463. package/dist/client/assets/left-plan-3rrFENhp.js +0 -2
  464. package/dist/client/assets/library-E--gKzEZ.js +0 -1
  465. package/dist/client/assets/mesh-buckets-CfAukILK.js +0 -1
  466. package/dist/client/assets/message-visibility-kJM8XcSG.js +0 -1
  467. package/dist/client/assets/mission-control-m3BTDQ9l.css +0 -1
  468. package/dist/client/assets/model-Co0zkMIc.js +0 -1
  469. package/dist/client/assets/plan-view-D56fneVF.css +0 -1
  470. package/dist/client/assets/profile-Dxj3VVOM.js +0 -1
  471. package/dist/client/assets/projects-inbox-COZ23dLR.css +0 -1
  472. package/dist/client/assets/projects-inbox-Dzt_GQDv.js +0 -1
  473. package/dist/client/assets/resolve-panes-C9gF0w4e.js +0 -1
  474. package/dist/client/assets/resolve-sidebar-context-DxbY5RCH.js +0 -1
  475. package/dist/client/assets/right-5L7Tn0zG.js +0 -1
  476. package/dist/client/assets/right-CYtkMmRu.js +0 -1
  477. package/dist/client/assets/right-CreoQzPP.js +0 -1
  478. package/dist/client/assets/right-D9xFfy2b.js +0 -1
  479. package/dist/client/assets/right-DI7zHADe.js +0 -1
  480. package/dist/client/assets/right-DUbJ3WVc.js +0 -1
  481. package/dist/client/assets/right-DiybhsiK.js +0 -1
  482. package/dist/client/assets/right-Jh_1Q88s.js +0 -1
  483. package/dist/client/assets/right-udr1qTJG.js +0 -1
  484. package/dist/client/assets/router-Cn_s9IGH.js +0 -1
  485. package/dist/client/assets/runtime-picker-vhm0gtLs.css +0 -1
  486. package/dist/client/assets/scout-voice-CwbOz6EN.js +0 -1
  487. package/dist/client/assets/secondaryNavConfig-Dw3gS1jR.js +0 -1
  488. package/dist/client/assets/sse-CxXt4tqI.js +0 -1
  489. package/dist/client/assets/system-surfaces-redesign-B7GQhfpw.css +0 -1
  490. package/dist/client/assets/terminal-screen-BqVnCwl0.css +0 -1
  491. package/dist/client/assets/terminal-sessions-AmSgHklm.js +0 -1
  492. package/dist/client/assets/text-DsBWV_4k.js +0 -1
  493. package/dist/client/assets/use-conversation-list-C-dPcjQe.js +0 -1
  494. package/dist/client/assets/use-reduced-motion-CYqhYqHO.js +0 -1
  495. package/dist/client/assets/useContentSecondaryNav-DjHBrgnS.js +0 -1
  496. package/dist/highlights-eq9cgrbb.scm +0 -604
  497. package/dist/highlights-ghv9g403.scm +0 -205
  498. package/dist/highlights-hk7bwhj4.scm +0 -284
  499. package/dist/highlights-r812a2qc.scm +0 -150
  500. package/dist/highlights-x6tmsnaa.scm +0 -115
  501. package/dist/injections-73j83es3.scm +0 -27
  502. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  503. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  504. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  505. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  506. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
  507. /package/dist/client/assets/{document-focus-viewer-BSC_JwVE.css → DocumentFocusViewer-BSC_JwVE.css} +0 -0
@@ -0,0 +1 @@
1
+ import{r as p,j as r}from"./index-CZ-05hKz.js";/* empty css */import{i as J,n as Z,s as ee}from"./colors-BtO5_zlx.js";import{a as A}from"./api-Co9aQ2Jw.js";import{u as te}from"./sse-CiOSzE5n.js";import{t as re}from"./time-Dhsh_2EG.js";import{D as ne}from"./DataTable-6IDhanr5.js";import{u as ae}from"./useAgentHoverCard-CHBsxcbp.js";import{S as se}from"./search-D1tJSAWe.js";import{S as oe}from"./sliders-horizontal-BPSMHhbm.js";import"./perf-PX8Rx0EP.js";import"./index-BWHgHrtv.js";/* empty css */import"./index-BVlMw8x_.js";import"./AgentDetailCard-UqPNpcvB.js";import"./AgentLiveActions-BwuzOE8h.js";import"./terminal-takeover-DANQfTcy.js";import"./Provider-B2xuo3rf.js";import"./router-DJj2WbDg.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-BQ6t92tJ.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BJIamJOH.js";import"./DocumentFocusViewer-DZVhS7as.js";import"./createLucideIcon-DXpqZP7I.js";import"./TextDocumentSurface-CKQP-cBT.js";import"./file-text-KijGBnME.js";import"./x-e3h2hDsp.js";import"./chevron-right-CzH-TaSF.js";import"./code-xml-Jtxsp5d1.js";import"./arrow-left-CghA0kTw.js";import"./arrow-right-iJFv3jNh.js";import"./scout-voice-BhPzrc6P.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-DFhAJkW3.js";import"./NewChatComposer-hlWT-nbR.js";import"./text-CnZ0e1-V.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-BiohlpM3.js";import"./conversation-model-CwF6Y9gx.js";import"./HarnessMark-D5CA5uSp.js";import"./NewChatOrigin-DdpzE4kz.js";import"./chevron-down-Mp9mu_yd.js";import"./chunk-HRAB3GC3-swV8PA2k.js";import"./openContent-C6XO6kr5.js";import"./eye-CpfyvdLq.js";import"./terminal-yN9xN-h9.js";function ie(e,t){return{model:t?.data.metadata?.session?.model??e.model??null,provider:t?.data.metadata?.session?.modelProvider??e.providerName??null}}const ce=["openai","codex","codex_app_server"],ue=["anthropic","claude","claude-code","claude_stream_json"],W={"openai:gpt-5.5":{provider:"openai",model:"gpt-5.5",inputPerM:5,cachedInputPerM:.5,cacheWritePerM:null,outputPerM:30,webSearchPer1K:10},"openai:gpt-5.5-pro":{provider:"openai",model:"gpt-5.5-pro",inputPerM:30,cachedInputPerM:null,cacheWritePerM:null,outputPerM:180,webSearchPer1K:10},"openai:gpt-5.4":{provider:"openai",model:"gpt-5.4",inputPerM:2.5,cachedInputPerM:.25,cacheWritePerM:null,outputPerM:15,webSearchPer1K:10},"openai:gpt-5.4-mini":{provider:"openai",model:"gpt-5.4-mini",inputPerM:.75,cachedInputPerM:.075,cacheWritePerM:null,outputPerM:4.5,webSearchPer1K:10},"openai:gpt-5.4-nano":{provider:"openai",model:"gpt-5.4-nano",inputPerM:.2,cachedInputPerM:.02,cacheWritePerM:null,outputPerM:1.25,webSearchPer1K:10},"openai:gpt-5.4-pro":{provider:"openai",model:"gpt-5.4-pro",inputPerM:30,cachedInputPerM:null,cacheWritePerM:null,outputPerM:180,webSearchPer1K:10},"openai:gpt-5.3-codex":{provider:"openai",model:"gpt-5.3-codex",inputPerM:1.75,cachedInputPerM:.175,cacheWritePerM:null,outputPerM:14,webSearchPer1K:10},"openai:gpt-5.3-chat-latest":{provider:"openai",model:"gpt-5.3-chat-latest",inputPerM:1.75,cachedInputPerM:.175,cacheWritePerM:null,outputPerM:14,webSearchPer1K:10},"openai:gpt-5.2":{provider:"openai",model:"gpt-5.2",inputPerM:1.75,cachedInputPerM:.175,cacheWritePerM:null,outputPerM:14,webSearchPer1K:10},"openai:gpt-5.2-codex":{provider:"openai",model:"gpt-5.2-codex",inputPerM:1.75,cachedInputPerM:.175,cacheWritePerM:null,outputPerM:14,webSearchPer1K:10},"openai:gpt-5.2-chat-latest":{provider:"openai",model:"gpt-5.2-chat-latest",inputPerM:1.75,cachedInputPerM:.175,cacheWritePerM:null,outputPerM:14,webSearchPer1K:10},"openai:gpt-5.2-pro":{provider:"openai",model:"gpt-5.2-pro",inputPerM:21,cachedInputPerM:null,cacheWritePerM:null,outputPerM:168,webSearchPer1K:10},"openai:gpt-5.1":{provider:"openai",model:"gpt-5.1",inputPerM:1.25,cachedInputPerM:.125,cacheWritePerM:null,outputPerM:10,webSearchPer1K:10},"openai:gpt-5.1-codex":{provider:"openai",model:"gpt-5.1-codex",inputPerM:1.25,cachedInputPerM:.125,cacheWritePerM:null,outputPerM:10,webSearchPer1K:10},"openai:gpt-5.1-codex-max":{provider:"openai",model:"gpt-5.1-codex-max",inputPerM:1.25,cachedInputPerM:.125,cacheWritePerM:null,outputPerM:10,webSearchPer1K:10},"openai:gpt-5.1-chat-latest":{provider:"openai",model:"gpt-5.1-chat-latest",inputPerM:1.25,cachedInputPerM:.125,cacheWritePerM:null,outputPerM:10,webSearchPer1K:10},"openai:gpt-5":{provider:"openai",model:"gpt-5",inputPerM:1.25,cachedInputPerM:.125,cacheWritePerM:null,outputPerM:10,webSearchPer1K:10},"openai:gpt-5-codex":{provider:"openai",model:"gpt-5-codex",inputPerM:1.25,cachedInputPerM:.125,cacheWritePerM:null,outputPerM:10,webSearchPer1K:10},"openai:gpt-5-chat-latest":{provider:"openai",model:"gpt-5-chat-latest",inputPerM:1.25,cachedInputPerM:.125,cacheWritePerM:null,outputPerM:10,webSearchPer1K:10},"openai:gpt-5-mini":{provider:"openai",model:"gpt-5-mini",inputPerM:.25,cachedInputPerM:.025,cacheWritePerM:null,outputPerM:2,webSearchPer1K:10},"openai:gpt-5-nano":{provider:"openai",model:"gpt-5-nano",inputPerM:.05,cachedInputPerM:.005,cacheWritePerM:null,outputPerM:.4,webSearchPer1K:10},"openai:gpt-5-pro":{provider:"openai",model:"gpt-5-pro",inputPerM:15,cachedInputPerM:null,cacheWritePerM:null,outputPerM:120,webSearchPer1K:10},"openai:gpt-4.1":{provider:"openai",model:"gpt-4.1",inputPerM:2,cachedInputPerM:.5,cacheWritePerM:null,outputPerM:8,webSearchPer1K:10},"openai:gpt-4.1-mini":{provider:"openai",model:"gpt-4.1-mini",inputPerM:.4,cachedInputPerM:.1,cacheWritePerM:null,outputPerM:1.6,webSearchPer1K:10},"openai:gpt-4.1-nano":{provider:"openai",model:"gpt-4.1-nano",inputPerM:.1,cachedInputPerM:.025,cacheWritePerM:null,outputPerM:.4,webSearchPer1K:10},"openai:gpt-4o":{provider:"openai",model:"gpt-4o",inputPerM:2.5,cachedInputPerM:1.25,cacheWritePerM:null,outputPerM:10,webSearchPer1K:10},"openai:gpt-4o-mini":{provider:"openai",model:"gpt-4o-mini",inputPerM:.15,cachedInputPerM:.075,cacheWritePerM:null,outputPerM:.6,webSearchPer1K:10},"anthropic:claude-opus-4.6":{provider:"anthropic",model:"claude-opus-4.6",inputPerM:5,cachedInputPerM:.5,cacheWritePerM:6.25,outputPerM:25,webSearchPer1K:10},"anthropic:claude-opus-4.5":{provider:"anthropic",model:"claude-opus-4.5",inputPerM:5,cachedInputPerM:.5,cacheWritePerM:6.25,outputPerM:25,webSearchPer1K:10},"anthropic:claude-opus-4.1":{provider:"anthropic",model:"claude-opus-4.1",inputPerM:15,cachedInputPerM:1.5,cacheWritePerM:18.75,outputPerM:75,webSearchPer1K:10},"anthropic:claude-opus-4":{provider:"anthropic",model:"claude-opus-4",inputPerM:15,cachedInputPerM:1.5,cacheWritePerM:18.75,outputPerM:75,webSearchPer1K:10},"anthropic:claude-sonnet-4.6":{provider:"anthropic",model:"claude-sonnet-4.6",inputPerM:3,cachedInputPerM:.3,cacheWritePerM:3.75,outputPerM:15,webSearchPer1K:10},"anthropic:claude-sonnet-4.5":{provider:"anthropic",model:"claude-sonnet-4.5",inputPerM:3,cachedInputPerM:.3,cacheWritePerM:3.75,outputPerM:15,webSearchPer1K:10},"anthropic:claude-sonnet-4":{provider:"anthropic",model:"claude-sonnet-4",inputPerM:3,cachedInputPerM:.3,cacheWritePerM:3.75,outputPerM:15,webSearchPer1K:10},"anthropic:claude-3-7-sonnet":{provider:"anthropic",model:"claude-3-7-sonnet",inputPerM:3,cachedInputPerM:.3,cacheWritePerM:3.75,outputPerM:15,webSearchPer1K:10},"anthropic:claude-haiku-4.5":{provider:"anthropic",model:"claude-haiku-4.5",inputPerM:1,cachedInputPerM:.1,cacheWritePerM:1.25,outputPerM:5,webSearchPer1K:10}},le={"claude-sonnet-4-5":"anthropic:claude-sonnet-4.5","claude-sonnet-4-6":"anthropic:claude-sonnet-4.6","claude-opus-4-5":"anthropic:claude-opus-4.5","claude-opus-4-6":"anthropic:claude-opus-4.6","claude-haiku-4-5":"anthropic:claude-haiku-4.5"};function pe(e){const t=e.provider?.trim().toLowerCase()??"",s=e.adapterType?.trim().toLowerCase()??"",a=V(e.model)??"",i=[t,s].filter(Boolean);return i.some(o=>ce.some(c=>o.includes(c)))?"openai":i.some(o=>ue.some(c=>o.includes(c)))?"anthropic":a.startsWith("gpt-")||a.startsWith("o")||a.includes("codex")?"openai":a.startsWith("claude-")?"anthropic":"unknown"}function V(e){return e?e.trim().toLowerCase().replace(/^(openai|anthropic)\//,"").replace(/_/g,"-").replace(/-\d{8}$/,""):null}function de(e){const t=x(e?.inputTokens),s=x(e?.cacheReadInputTokens),a=x(e?.cacheCreationInputTokens),i=x(e?.outputTokens),o=x(e?.reasoningOutputTokens),c=[t,i].reduce((m,b)=>m+(b??0),0),h=x(e?.totalTokens)??(c||null);return{input:t,uncachedInput:t==null?null:Math.max(0,t-(s??0)-(a??0)),cachedInput:s,cacheWrite:a,output:i,reasoningOutput:o,total:h,webSearchRequests:x(e?.webSearchRequests),webFetchRequests:x(e?.webFetchRequests)}}function he(e){const t=pe(e),s=V(e.model),a=de(e.usage),i=me(t,s),o=ge(e);if(!i.rateCard)return{provider:t,model:s,rateCard:null,rateCardSource:"unknown",capturedAt:e.capturedAt??Date.now(),usage:a,lineItems:[],totalUsd:null,billedTotalUsd:null,billingMode:o,subscriptionWindows:e.subscriptionWindows??[]};const c=i.rateCard,h=a.uncachedInput??a.input??0,m=a.cachedInput??0,b=a.cacheWrite??0,g=a.output??0,v=a.webSearchRequests??0,f=[j("input","Input",h,c.inputPerM,o),j("cached_input","Cached input",m,c.cachedInputPerM??c.inputPerM,o),j("cache_write","Cache write",b,c.cacheWritePerM??c.inputPerM,o),j("output","Output",g,c.outputPerM,o),{key:"web_search",label:"Web search",quantity:v,unit:"requests",rate:c.webSearchPer1K??0,billedRate:o==="subscription"?0:c.webSearchPer1K??0,costUsd:v/1e3*(c.webSearchPer1K??0),billedCostUsd:o==="subscription"?0:v/1e3*(c.webSearchPer1K??0)}].filter(P=>P.quantity>0);return{provider:t,model:s,rateCard:c,rateCardSource:i.source,capturedAt:e.capturedAt??Date.now(),usage:a,lineItems:f,totalUsd:f.reduce((P,d)=>P+d.costUsd,0),billedTotalUsd:f.reduce((P,d)=>P+d.billedCostUsd,0),billingMode:o,subscriptionWindows:e.subscriptionWindows??[]}}function me(e,t){if(e==="unknown")return{rateCard:null,source:"unknown"};const s=t?`${e}:${t}`:null;if(s&&W[s])return{rateCard:W[s],source:"exact"};const a=t?le[t]:null;if(a&&W[a])return{rateCard:W[a],source:"alias"};if(e==="anthropic"){if(t?.includes("opus"))return{rateCard:W["anthropic:claude-opus-4.5"],source:"provider-default"};if(t?.includes("haiku"))return{rateCard:W["anthropic:claude-haiku-4.5"],source:"provider-default"};if(t?.includes("sonnet")||!t)return{rateCard:W["anthropic:claude-sonnet-4.5"],source:"provider-default"}}return{rateCard:null,source:"unknown"}}function j(e,t,s,a,i){const o=i==="subscription"?0:a;return{key:e,label:t,quantity:s,unit:"tokens",rate:a,billedRate:o,costUsd:s/1e6*a,billedCostUsd:s/1e6*o}}function x(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function ge(e){if(e.billingMode)return e.billingMode;const t=e.adapterType?.trim().toLowerCase();if(t==="claude-code"||t==="claude_stream_json")return"subscription";const s=e.usage?.planType?.trim().toLowerCase();return!s||s==="api"||s.includes("api")?"api":"subscription"}const Pe=1500,T=1440*6e4,Me=90*6e4,E={needs_attention:0,in_turn:1,in_flight:2,callable:3,blocked:4},be=[{key:"agent",label:"Agent",kind:"custom",sortable:!0,sortValue:e=>e.agent.name.toLowerCase(),defaultWidth:220,minWidth:160,render:e=>r.jsxs("div",{className:"s-ops-agents-agent-cell",children:[r.jsx("span",{className:"s-ops-agents-dot",style:{background:ee(e.state)},"aria-hidden":!0}),r.jsx("span",{className:"s-ops-agents-agent-name",title:e.agent.name,children:e.agent.handle??e.agent.name})]})},{key:"task",label:"Active task",kind:"custom",sortable:!0,sortValue:e=>(e.activeTask??"").toLowerCase()||null,defaultWidth:240,minWidth:140,render:e=>e.activeTask?r.jsx("span",{className:"s-ops-agents-task",title:e.activeTask,children:e.activeTask}):r.jsx("span",{className:"s-ops-agents-task s-ops-agents-task--idle",children:"—"})},{key:"team",label:"Project",kind:"text",defaultWidth:140,minWidth:90,cls:"s-ops-agents-meta",render:e=>r.jsx("span",{className:"s-ops-agents-meta-cell",children:e.team}),sortValue:e=>e.team.toLowerCase()},{key:"machine",label:"Machine",kind:"text",defaultWidth:120,minWidth:88,cls:"s-ops-agents-meta",render:e=>r.jsx("span",{className:"s-ops-agents-meta-cell",children:e.machine}),sortValue:e=>e.machine.toLowerCase()},{key:"active",label:"Active",kind:"number",defaultWidth:90,minWidth:64,cls:"s-ops-agents-num",render:e=>e.activeFlights,sortValue:e=>e.activeFlights},{key:"sessions24h",label:"24h sessions",kind:"number",defaultWidth:108,minWidth:78,cls:"s-ops-agents-num",render:e=>e.sessions24h,sortValue:e=>e.sessions24h},{key:"throughput",label:"Throughput",kind:"custom",sortable:!1,defaultWidth:110,minWidth:90,render:e=>r.jsx(ke,{values:e.throughput,warn:e.errors>0})},{key:"avgLatency",label:"Avg latency",kind:"number",defaultWidth:108,minWidth:80,cls:"s-ops-agents-num",render:e=>D(e.avgLatencyMs),sortValue:e=>e.avgLatencyMs},{key:"input",label:"Input",kind:"number",defaultWidth:88,minWidth:64,cls:"s-ops-agents-num",render:e=>w(e.usage.uncachedInput??e.usage.input),sortValue:e=>e.usage.uncachedInput??e.usage.input??null},{key:"cacheRead",label:"Cache read",kind:"number",defaultWidth:98,minWidth:72,cls:"s-ops-agents-num",render:e=>w(e.usage.cachedInput),sortValue:e=>e.usage.cachedInput??null},{key:"cacheWrite",label:"Cache write",kind:"number",defaultWidth:98,minWidth:72,cls:"s-ops-agents-num",render:e=>w(e.usage.cacheWrite),sortValue:e=>e.usage.cacheWrite??null},{key:"output",label:"Output",kind:"number",defaultWidth:88,minWidth:64,cls:"s-ops-agents-num",render:e=>w(e.usage.output),sortValue:e=>e.usage.output??null},{key:"apiEquiv",label:"API equiv",kind:"number",defaultWidth:92,minWidth:72,cls:"s-ops-agents-num",render:e=>r.jsx("span",{className:e.cost.rateCardSource==="unknown"?"s-ops-agents-num--dim":void 0,children:N(e.cost.totalUsd)}),sortValue:e=>e.cost.totalUsd??null},{key:"billed",label:"Billed",kind:"number",defaultWidth:92,minWidth:72,cls:"s-ops-agents-num",render:e=>r.jsx("span",{className:e.cost.billingMode==="subscription"?"s-ops-agents-num--covered":void 0,children:N(e.cost.billedTotalUsd)}),sortValue:e=>e.cost.billedTotalUsd??null},{key:"errors",label:"Errors",kind:"number",defaultWidth:72,minWidth:58,cls:"s-ops-agents-num",render:e=>r.jsx("span",{className:e.errors>0?"s-ops-agents-num--warn":void 0,children:e.errors}),sortValue:e=>e.errors},{key:"lastActive",label:"Last active",kind:"time",defaultWidth:104,minWidth:78,cls:"s-ops-agents-last",render:e=>e.lastActiveAt?re(e.lastActiveAt):"—",sortValue:e=>e.lastActiveAt}];function U(e){if(!e)return null;const t=e.replace(/\/+$/,""),s=t.lastIndexOf("/");return s>=0?t.slice(s+1):t}function w(e){return e==null?"—":e>=1e6?`${(e/1e6).toFixed(e>=1e7?0:1)}M`:e>=1e3?`${(e/1e3).toFixed(e>=1e4?0:1)}K`:String(e)}function D(e){return e==null?"—":e<1e3?`${Math.round(e)}ms`:`${(e/1e3).toFixed(2)}s`}function N(e){return e==null?"$—":e<1?`$${e.toFixed(3)}`:`$${e.toFixed(2)}`}function fe(e,t){if(!e)return null;const s=e.data.events.filter(i=>i.kind==="message"||i.kind==="tool").filter(i=>t-i.t<=Me).sort((i,o)=>i.t-o.t);if(s.length<2)return null;const a=[];for(let i=1;i<s.length;i+=1){const o=s[i].t-s[i-1].t;o>0&&o<12e4&&a.push(o)}return a.length===0?null:Math.round(a.reduce((i,o)=>i+o,0)/a.length)}function ve(e,t){const s=new Array(24).fill(0),a=t-T;for(const i of e){if(i.ts<a||i.ts>t)continue;const o=Math.min(23,Math.max(0,Math.floor((i.ts-a)/T*s.length)));s[o]+=1}return s}function ke({values:e,warn:t=!1}){const i=Math.max(1,...e),o=e.map((c,h)=>{const m=h/Math.max(1,e.length-1)*92,b=22-c/i*19-1.5;return`${m.toFixed(1)},${b.toFixed(1)}`}).join(" ");return r.jsx("svg",{className:`s-ops-agents-spark${t?" s-ops-agents-spark--warn":""}`,viewBox:"0 0 92 22","aria-hidden":"true",children:r.jsx("polyline",{points:o,fill:"none",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round"})})}function xe(e){return e.authorityNodeName??e.homeNodeName??e.authorityNodeId??e.homeNodeId??e.transport??U(e.cwd)??U(e.projectRoot)??"local"}function We(e){return e.project??e.role??e.agentClass??"Unassigned"}function Se(e){if(e.length===0)return null;const t={working:0,needs_attention:1,queued:2,failed:3,completed:4},a=[...e].sort((o,c)=>{const h=t[o.status]-t[c.status];return h!==0?h:(c.updatedAt??0)-(o.updatedAt??0)})[0];return(a.task??a.summary??"").trim()||null}function we(e,t,s,a,i,o){const c=t.filter(l=>l.agentId===e.id),h=c.filter(l=>{const I=l.lastMessageAt??0;return I>0&&o-I<=T}),m=e.conversationId,b=s.filter(l=>l.actorName===e.name||!!(m&&l.conversationId===m)),g=i.get(e.id),{model:v,provider:f}=ie(e,g),P=he({adapterType:g?.data.metadata?.session?.adapterType,capturedAt:g?.updatedAt??o,model:v,provider:f,usage:g?.data.metadata?.usage}),d=a.filter(l=>l.agentId===e.id);return{agent:e,team:We(e),machine:xe(e),model:v,provider:f,state:Z(e.state),activeFlights:d.length,activeTask:Se(d),sessions24h:h.length,throughput:ve(b,o),avgLatencyMs:fe(g,o),usage:P.usage,cost:P,errors:d.filter(l=>l.status==="failed"||l.status==="needs_attention").length,lastActiveAt:Math.max(0,...c.map(l=>l.lastMessageAt??0),...b.map(l=>l.ts),e.updatedAt??0)||null}}function ft({navigate:e,agents:t}){const[s,a]=p.useState(null),[i,o]=p.useState([]),[c,h]=p.useState([]),[m,b]=p.useState([]),[g,v]=p.useState(""),[f,P]=p.useState(()=>Date.now()),d=p.useRef(null),l=p.useCallback(async()=>{const n=t.map(X=>X.id).join(","),[u,k,L,$]=await Promise.allSettled([A("/api/fleet"),A("/api/conversations"),A("/api/activity"),n?A(`/api/observe/agents?ids=${encodeURIComponent(n)}`):Promise.resolve([])]);u.status==="fulfilled"&&a(u.value),k.status==="fulfilled"&&o(k.value),L.status==="fulfilled"&&h(L.value),$.status==="fulfilled"&&b($.value),P(Date.now())},[t]);p.useEffect(()=>{l()},[l]);const I=p.useCallback(()=>{d.current||(d.current=setTimeout(()=>{d.current=null,l()},Pe))},[l]);te(I),p.useEffect(()=>()=>{d.current&&(clearTimeout(d.current),d.current=null)},[]),p.useEffect(()=>{const n=setInterval(()=>P(Date.now()),1e3);return()=>clearInterval(n)},[]);const R=p.useMemo(()=>new Map(m.map(n=>[n.agentId,n])),[m]),M=p.useMemo(()=>{const n=s?.activeAsks??[];return t.map(u=>we(u,i,c,n,R,f))},[c,t,s?.activeAsks,f,R,i]),S=p.useMemo(()=>{const n=g.trim().toLowerCase();return n?M.filter(u=>`${u.agent.name} ${u.team} ${u.machine} ${u.agent.handle??""} ${u.agent.harness??""} ${u.activeTask??""}`.toLowerCase().includes(n)):M},[g,M]),[K,F]=p.useState({key:"lastActive",dir:-1}),O=p.useMemo(()=>K?.key==="agent"?void 0:(n,u)=>E[n.state]-E[u.state],[K?.key]),q=p.useMemo(()=>S.map(n=>n.agent),[S]),B=p.useMemo(()=>S.map(n=>n.agent.id),[S]),y=ae({agents:q,orderedIds:B,navigate:e,selectMode:"preview"}),z=M.filter(n=>n.state==="in_turn"||n.state==="in_flight").length,H=M.filter(n=>J(n.agent.state,n.agent)).length,Y=M.reduce((n,u)=>n+(u.usage.total??0),0),_=M.some(n=>n.cost.totalUsd!=null)?M.reduce((n,u)=>n+(u.cost.totalUsd??0),0):null,G=M.some(n=>n.cost.billedTotalUsd!=null)?M.reduce((n,u)=>n+(u.cost.billedTotalUsd??0),0):null,Q=(()=>{const n=M.map(u=>u.avgLatencyMs).filter(u=>u!=null);return n.length===0?null:Math.round(n.reduce((u,k)=>u+k,0)/n.length)})();return r.jsxs("div",{className:"s-ops-agents",children:[r.jsxs("main",{className:"s-ops-agents-main",children:[r.jsxs("div",{className:"s-ops-agents-toolbar",children:[r.jsxs("div",{className:"s-ops-agents-breadcrumb",children:["Agents ",r.jsx("span",{children:"/"})," Directory"]}),r.jsxs("div",{className:"s-ops-agents-live",children:[r.jsx("span",{className:"s-ops-agents-live-dot"}),H," active"]}),r.jsxs("div",{className:"s-ops-agents-search",children:[r.jsx(se,{size:13}),r.jsx("input",{value:g,onChange:n=>v(n.target.value),placeholder:"Search agents, tasks, projects, machines…"})]}),r.jsx("button",{className:"s-ops-agents-icon-btn",type:"button",title:"Filters",children:r.jsx(oe,{size:14})})]}),r.jsx("section",{className:"s-ops-agents-hero",children:r.jsxs("div",{children:[r.jsx("div",{className:"s-ops-agents-kicker",children:"Agents"}),r.jsx("h1",{children:"All agents"}),r.jsx("p",{children:"Every registered agent across the local fleet, sorted by live status."})]})}),r.jsxs("section",{className:"s-ops-agents-stats",children:[r.jsx(C,{label:"Running",value:String(z),sub:`of ${t.length} total`}),r.jsx(C,{label:"Tokens",value:w(Y||null),sub:_==null?"usage metadata pending":`${N(_)} API equiv`}),r.jsx(C,{label:"Avg latency",value:D(Q),sub:"recent observe events"}),r.jsx(C,{label:"Billed",value:N(G),sub:"subscription usage can mark this down"})]}),r.jsxs("section",{className:"s-ops-agents-table-panel",children:[r.jsxs("div",{className:"s-ops-agents-table-title",children:["Agents ",r.jsx("span",{children:S.length}),r.jsxs("span",{className:"s-ops-agents-hint","aria-hidden":!0,children:[r.jsx("kbd",{children:"↑"}),r.jsx("kbd",{children:"↓"})," navigate · ",r.jsx("kbd",{children:"enter"})," pin · ",r.jsx("kbd",{children:"o"})," open · ",r.jsx("kbd",{children:"esc"})," clear"]})]}),r.jsx("div",{className:"s-ops-agents-table-wrap",ref:y.containerRef,children:r.jsx(ne,{rows:S,columns:be,rowId:n=>n.agent.id,storageKey:"openscout.opsAgents.cols",sort:K,onSortChange:F,secondarySort:O,density:"compact",rowBindings:n=>{const u=y.bind(n);return{...u,onKeyDown:k=>{k.key!=="Enter"&&k.key!==" "||(k.preventDefault(),u.onClick())}}},rowState:n=>y.getState(n),empty:{title:"No agents match",body:"Adjust the search to find a different slice of the fleet."},className:"s-ops-agents-data-table",ariaLabel:"Agents directory"})})]})]}),y.card]})}function C({label:e,value:t,sub:s,tone:a="default"}){return r.jsxs("div",{className:`s-ops-agents-metric s-ops-agents-metric--${a}`,children:[r.jsx("div",{className:"s-ops-agents-metric-label",children:e}),r.jsx("div",{className:"s-ops-agents-metric-value",children:t}),r.jsx("div",{className:"s-ops-agents-metric-sub",children:s})]})}export{ft as OpsAgentsView};
@@ -0,0 +1 @@
1
+ import{r as n,j as t}from"./index-CZ-05hKz.js";/* empty css */import{u as d}from"./Provider-B2xuo3rf.js";/* empty css */import{u as v}from"./page-status-BptpTdQ-.js";import{A as x}from"./AgentLanesView-DHyzVBk6.js";import{MissionControlView as j}from"./MissionControlView-ByBlHVN8.js";import{OpsAgentsView as f}from"./OpsAgentsView-ntGr4pz4.js";import{HostAdvisorView as w}from"./HostAdvisorView-RAociATV.js";import{AtopView as N}from"./AtopView-DYlpgEHf.js";import{TailView as c}from"./TailView-Q4FVMsUH.js";import{u as g}from"./useContentSecondaryNav-D0mUhxTF.js";import{OpsSubnav as S}from"./OpsSubnav-GAKsoSor.js";import"./router-DJj2WbDg.js";import"./perf-PX8Rx0EP.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-BQ6t92tJ.js";import"./api-Co9aQ2Jw.js";import"./sse-CiOSzE5n.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BJIamJOH.js";import"./DocumentFocusViewer-DZVhS7as.js";import"./createLucideIcon-DXpqZP7I.js";import"./TextDocumentSurface-CKQP-cBT.js";import"./file-text-KijGBnME.js";import"./x-e3h2hDsp.js";import"./chevron-right-CzH-TaSF.js";import"./code-xml-Jtxsp5d1.js";import"./arrow-left-CghA0kTw.js";import"./arrow-right-iJFv3jNh.js";import"./scout-voice-BhPzrc6P.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-DFhAJkW3.js";import"./NewChatComposer-hlWT-nbR.js";import"./text-CnZ0e1-V.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-BiohlpM3.js";import"./conversation-model-CwF6Y9gx.js";import"./time-Dhsh_2EG.js";import"./index-BVlMw8x_.js";import"./HarnessMark-D5CA5uSp.js";import"./NewChatOrigin-DdpzE4kz.js";import"./chevron-down-Mp9mu_yd.js";import"./search-D1tJSAWe.js";import"./chunk-HRAB3GC3-swV8PA2k.js";/* empty css */import"./tail-events-BMQmSx1n.js";import"./observe-CJRIvOCn.js";import"./types-B0PlfpKc.js";import"./AgentAvatar-CYhf6twS.js";import"./SpriteAvatar-Bs68ZENy.js";import"./CrewAvatar-CTIuxp4G.js";import"./SessionObserve-Dsd0j05N.js";import"./bash-format-BRV5C6Gv.js";import"./tail-display-DcliDVkW.js";import"./lane-edit-display-C_Aujldz.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-D_DMlBeT.js";import"./lane-observe-vfyACHi0.js";import"./lane-ask-display-B6iCAVcd.js";import"./mentions-CcPFMbmZ.js";import"./AgentDetailCard-UqPNpcvB.js";import"./AgentLiveActions-BwuzOE8h.js";import"./terminal-takeover-DANQfTcy.js";import"./openContent-C6XO6kr5.js";import"./eye-CpfyvdLq.js";import"./terminal-yN9xN-h9.js";import"./message-markup-RkfmDfME.js";import"./ObservedTopologyPanel-CdGUXxGR.js";import"./ObserveTextFlow-BSEtYTxU.js";import"./use-reduced-motion-CKkhq9c5.js";import"./proxy-DnLpZIi9.js";import"./SessionObserveEvidence-DopQYDkD.js";import"./message-circle-B2ddzBrX.js";import"./wrench-YcXMlsh2.js";import"./external-link-Ckiyzjwo.js";import"./AgentFloorView-XXNgI5Cj.js";/* empty css */import"./agent-lanes-model-AfrjRNK5.js";import"./context-budget-DX_fwUs3.js";import"./lane-roster-store-gUBsydNf.js";import"./AgentLanesPreflight-5B6sXvRB.js";import"./AgentLaneChrome-CyhA1reW.js";import"./AgentLaneCard-Z-aOBR3W.js";/* empty css */import"./AgentLaneSummaryResize-Box8-_rS.js";import"./clipboard-e3fSpeo7.js";import"./agent-lane-card-model-CTLxf3R4.js";import"./agent-lane-preview-BhplDYGf.js";import"./agent-lane-detail-ppJId6Jc.js";import"./AgentLaneDetailSheet-BNzjMjIH.js";import"./SlidePanel-C-q7XwTa.js";import"./LaneTraceDetailSheet-BEHg3LmH.js";import"./LaneTraceEventFocus-DVimcizS.js";/* empty css */import"./mission-control-store-Bf4b54MV.js";import"./MissionContextRail-DrNKXG5u.js";import"./mission-wall-CocIM1cF.js";import"./mission-control-model-C0fByIjm.js";import"./MissionFocusOverlay-D1i6R6Zt.js";import"./MissionLogPane-DSeIv3Xo.js";/* empty css */import"./DataTable-6IDhanr5.js";/* empty css */import"./useAgentHoverCard-CHBsxcbp.js";import"./sliders-horizontal-BPSMHhbm.js";/* empty css */import"./compass-0_54-vz3.js";import"./layout-grid-BrZt31QH.js";import"./refresh-cw-BRn9Oxxl.js";import"./arrow-up-right-CCfZXPqD.js";import"./cpu-BjVis9mc.js";import"./gauge-y-Xg8Mrv.js";/* empty css */import"./SecondaryNav-o2RL9H8H.js";import"./secondaryNavConfig-B9IF8wXl.js";import"./message-square-D9YYWE0x.js";import"./settings-2fC_G9nX.js";import"./git-branch-BQ_x8KZL.js";import"./scroll-text-DO0GQzvN.js";const A=220;function F(){const r=v(),o=!!(r.hover||r.content),[i,p]=n.useState(o?{hover:r.hover,content:r.content}:null),[e,s]=n.useState(o?"enter":"hidden"),m=n.useRef(null);if(n.useEffect(()=>{if(o){m.current&&(clearTimeout(m.current),m.current=null),p({hover:r.hover,content:r.content}),s(h=>h==="show"?"show":"enter");const u=requestAnimationFrame(()=>s("show"));return()=>cancelAnimationFrame(u)}return s("leave"),m.current=setTimeout(()=>{s("hidden"),p(null),m.current=null},A),()=>{m.current&&(clearTimeout(m.current),m.current=null)}},[o,r.hover,r.content]),e==="hidden"||!i)return null;const a=i.hover?.label??i.hover?.route??null,l=i.hover?.label&&i.hover?.route?i.hover.route:null;return t.jsxs("div",{className:`s-page-status s-page-status--${e}`,role:"status","aria-live":"polite",children:[t.jsx("div",{className:"s-page-status-left",children:a&&t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"s-page-status-arrow","aria-hidden":!0,children:"→"}),t.jsx("span",{className:"s-page-status-target",children:a}),l&&t.jsx("span",{className:"s-page-status-route",children:l})]})}),t.jsx("div",{className:"s-page-status-right",children:i.content&&t.jsx("span",{className:"s-page-status-content",children:i.content})})]})}function qr({navigate:r,mode:o="mission",tailQuery:i}){const{agents:p,route:e}=d(),s=g();return t.jsxs("div",{className:"s-ops",children:[s?t.jsx("div",{className:"s-ops-header",children:t.jsx(S,{activeRoute:e,navigate:r})}):null,t.jsxs("div",{className:"s-ops-body",children:[o==="mission"&&t.jsx(j,{navigate:r,agents:p}),o==="agents"&&t.jsx(f,{navigate:r,agents:p}),o==="advisor"&&t.jsx(w,{navigate:r,agents:p}),o==="issues"&&t.jsx(c,{navigate:r,initialFilter:i,variant:"issues"}),o==="tail"&&t.jsx(c,{navigate:r,initialFilter:i,variant:"tail"}),o==="atop"&&t.jsx(N,{}),o==="lanes"&&t.jsx(x,{navigate:r,agents:p})]}),t.jsx(F,{})]})}export{qr as OpsScreen};
@@ -0,0 +1 @@
1
+ import{j as t}from"./index-CZ-05hKz.js";import{S as p}from"./SecondaryNav-o2RL9H8H.js";import{O as i}from"./secondaryNavConfig-B9IF8wXl.js";/* empty css */import"./createLucideIcon-DXpqZP7I.js";import"./message-square-D9YYWE0x.js";import"./file-text-KijGBnME.js";import"./search-D1tJSAWe.js";import"./compass-0_54-vz3.js";import"./settings-2fC_G9nX.js";import"./terminal-yN9xN-h9.js";import"./git-branch-BQ_x8KZL.js";import"./code-xml-Jtxsp5d1.js";import"./scroll-text-DO0GQzvN.js";function v({activeRoute:r,navigate:o}){return t.jsx(p,{ariaLabel:"Ops sections",activeRoute:r,groups:i,navigate:o})}export{v as OpsSubnav};
@@ -0,0 +1 @@
1
+ import{r as m,j as o}from"./index-CZ-05hKz.js";import{a as A}from"./api-Co9aQ2Jw.js";import{u as b,d as S}from"./Provider-B2xuo3rf.js";import{b as y}from"./router-DJj2WbDg.js";import{u as P}from"./sse-CiOSzE5n.js";import{AgentsSubnav as N}from"./AgentsSubnav-CDMjKeYC.js";import{AgentDetailWithRail as B,AgentProfileSessionsCenter as E}from"./profile-rY8jO38P.js";import{r as R,d as C,b as M}from"./NewChatComposer-hlWT-nbR.js";/* empty css *//* empty css *//* empty css */import{ProjectAgentProfileBar as w}from"./ProjectAgentProfileBar-BQET-qrY.js";/* empty css */import"./perf-PX8Rx0EP.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BJIamJOH.js";import"./DocumentFocusViewer-DZVhS7as.js";import"./createLucideIcon-DXpqZP7I.js";import"./TextDocumentSurface-CKQP-cBT.js";import"./file-text-KijGBnME.js";import"./x-e3h2hDsp.js";import"./chevron-right-CzH-TaSF.js";import"./code-xml-Jtxsp5d1.js";import"./arrow-left-CghA0kTw.js";import"./arrow-right-iJFv3jNh.js";import"./scout-voice-BhPzrc6P.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-DFhAJkW3.js";import"./chunk-HRAB3GC3-swV8PA2k.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-BQ6t92tJ.js";import"./index-BWHgHrtv.js";import"./SecondaryNav-o2RL9H8H.js";import"./secondaryNavConfig-B9IF8wXl.js";import"./message-square-D9YYWE0x.js";import"./search-D1tJSAWe.js";import"./compass-0_54-vz3.js";import"./settings-2fC_G9nX.js";import"./terminal-yN9xN-h9.js";import"./git-branch-BQ_x8KZL.js";import"./scroll-text-DO0GQzvN.js";import"./AgentAvatar-CYhf6twS.js";import"./SpriteAvatar-Bs68ZENy.js";import"./CrewAvatar-CTIuxp4G.js";import"./HarnessMark-D5CA5uSp.js";import"./context-budget-DX_fwUs3.js";import"./session-catalog-DNaOEzoQ.js";import"./terminal-relay-9lhzEp2V.js";import"./time-Dhsh_2EG.js";import"./BackToPicker-4JaeRvDm.js";import"./openContent-C6XO6kr5.js";import"./ConversationScreen-BNULZAp2.js";import"./text-CnZ0e1-V.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-BiohlpM3.js";import"./ConversationComposer-2HjbGPL9.js";import"./index-BVlMw8x_.js";import"./zap-nMcjPoWB.js";import"./conversation-model-CwF6Y9gx.js";import"./message-markup-RkfmDfME.js";import"./mentions-CcPFMbmZ.js";import"./AgentDetailCard-UqPNpcvB.js";import"./AgentLiveActions-BwuzOE8h.js";import"./terminal-takeover-DANQfTcy.js";import"./eye-CpfyvdLq.js";import"./message-visibility-DwxgcgYK.js";import"./operator-attention-RqieiSY8.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";import"./types-B0PlfpKc.js";import"./ConversationHeader-C8vfXaTF.js";import"./AstronautSuit-Ckx7lu7G.js";import"./ConversationFeedRows-C6wUqJrx.js";import"./ConversationPanels-CNCIbpqU.js";import"./tail-display-DcliDVkW.js";import"./lane-edit-display-C_Aujldz.js";import"./use-reduced-motion-CKkhq9c5.js";import"./proxy-DnLpZIi9.js";import"./chevron-down-Mp9mu_yd.js";import"./activity-Bj3Hnbj3.js";import"./message-circle-B2ddzBrX.js";import"./tail-events-BMQmSx1n.js";import"./ConversationStatus-DZuyKsWN.js";import"./check-C18YQC90.js";import"./sparkles-Dy8p5xN8.js";import"./SessionObserve-Dsd0j05N.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-D_DMlBeT.js";import"./lane-observe-vfyACHi0.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-CdGUXxGR.js";import"./ObserveTextFlow-BSEtYTxU.js";import"./SessionObserveEvidence-DopQYDkD.js";import"./wrench-YcXMlsh2.js";import"./external-link-Ckiyzjwo.js";/* empty css */import"./AgentDefinitionsWorkspace-srmN6-vj.js";import"./agent-specialization-BIPIBW8u.js";import"./project-overview-helpers-BQTc_Ous.js";import"./FileViewerPane-DQlpNt2S.js";import"./agent-essentials-BOMHR0_U.js";import"./NewChatOrigin-DdpzE4kz.js";import"./model-IGCUEsMy.js";import"./agents-project-model-UYiamtrU.js";function wo({route:t,navigate:r}){const{agents:e}=b(),p=y(t),n=m.useMemo(()=>S(e,p),[e,p]),[f,g]=m.useState([]),a=m.useCallback(async()=>{const s=await A("/api/conversations").catch(()=>[]);g(s)},[]);m.useEffect(()=>{a()},[a]),P(()=>{a()});const i=R(n,t.agentId),c=!!(t.agentId&&i&&i.id!==t.agentId),{conversationByAgentId:j}=C(f);if(m.useEffect(()=>{!t.agentId||!i||!c||r({...t,view:"agents-v2",agentId:i.id})},[r,t,i,t.agentId,c]),!i)return o.jsx(v,{activeRoute:t,navigate:r,children:o.jsx("div",{className:"av2-empty",children:"Agent not found."})});const d=t.conversationId??j.get(i.id)??i.conversationId??null,l=t.tab??(t.conversationId?"message":"profile");return o.jsx("div",{className:"s-av2-profileShell",children:o.jsx(v,{activeRoute:t,navigate:r,bar:o.jsx(w,{agent:i,conversationId:d,activeTab:l,route:t,navigate:r}),children:o.jsx("div",{className:"av2-profileCanvas",children:o.jsx(B,{agent:i,allAgents:n,conversationId:d,navigate:r,activeTab:l,renderProfile:({agent:s,sessionCatalog:x,conversationId:h,navigate:I,route:u})=>o.jsx(E,{agent:s,name:M(s,n).name,sessionCatalog:x,conversationId:h,navigate:I,route:u,homeView:"agents-v2"})})})})})}function v({activeRoute:t,children:r,navigate:e,bar:p}){return o.jsxs("div",{className:"s-secondary-nav-shell",children:[o.jsx("div",{className:"s-secondary-nav-bar",children:p??o.jsx(N,{activeRoute:t,navigate:e})}),o.jsx("div",{className:"s-secondary-nav-body",children:r})]})}export{wo as ProjectAgentProfile};
@@ -1 +1 @@
1
- import{j as a}from"./index-DmFAhGPj.js";import{r as c}from"./model-IGCUEsMy.js";import"./agents-project-model-UYiamtrU.js";import"./time-Dhsh_2EG.js";function d({agent:i,conversationId:s,activeTab:o,route:l,navigate:r}){const t=[{key:"profile",label:"Sessions"},{key:"config",label:"Config"},{key:"observe",label:"Trace"},{key:"message",label:"Message"}],n=e=>r({...l,view:"agents-v2",agentId:i.id,...s?{conversationId:s}:{},tab:e});return a.jsxs("div",{className:"av2-profileBar",children:[a.jsxs("button",{type:"button",className:"av2-profileBack",onClick:()=>r(c(l)),children:[a.jsx("span",{className:"av2-profileBackGlyph","aria-hidden":!0,children:"←"}),"Project"]}),a.jsx("nav",{className:"av2-profileTabs","aria-label":"Agent views",children:t.map(e=>a.jsx("button",{type:"button",className:"av2-profileTab","data-on":o===e.key||void 0,onClick:()=>n(e.key),children:e.label},e.key))})]})}export{d as ProjectAgentProfileBar};
1
+ import{j as a}from"./index-CZ-05hKz.js";import{r as c}from"./model-IGCUEsMy.js";import"./agents-project-model-UYiamtrU.js";import"./time-Dhsh_2EG.js";function d({agent:i,conversationId:s,activeTab:o,route:l,navigate:r}){const t=[{key:"profile",label:"Sessions"},{key:"config",label:"Config"},{key:"observe",label:"Trace"},{key:"message",label:"Message"}],n=e=>r({...l,view:"agents-v2",agentId:i.id,...s?{conversationId:s}:{},tab:e});return a.jsxs("div",{className:"av2-profileBar",children:[a.jsxs("button",{type:"button",className:"av2-profileBack",onClick:()=>r(c(l)),children:[a.jsx("span",{className:"av2-profileBackGlyph","aria-hidden":!0,children:"←"}),"Project"]}),a.jsx("nav",{className:"av2-profileTabs","aria-label":"Agent views",children:t.map(e=>a.jsx("button",{type:"button",className:"av2-profileTab","data-on":o===e.key||void 0,onClick:()=>n(e.key),children:e.label},e.key))})]})}export{d as ProjectAgentProfileBar};
@@ -0,0 +1 @@
1
+ import{r as c,j as e}from"./index-CZ-05hKz.js";import{i as y,c as L}from"./colors-BtO5_zlx.js";import{a as u}from"./api-Co9aQ2Jw.js";import{u as T}from"./sse-CiOSzE5n.js";import{t as P}from"./time-Dhsh_2EG.js";import{o as R}from"./openContent-C6XO6kr5.js";import{A as E}from"./AgentAvatar-CYhf6twS.js";import{H as O}from"./HarnessMark-D5CA5uSp.js";import{n as V}from"./NewChatComposer-hlWT-nbR.js";import{h as B}from"./model-IGCUEsMy.js";import"./perf-PX8Rx0EP.js";import"./index-BWHgHrtv.js";import"./Provider-B2xuo3rf.js";import"./router-DJj2WbDg.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-BQ6t92tJ.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BJIamJOH.js";import"./DocumentFocusViewer-DZVhS7as.js";import"./createLucideIcon-DXpqZP7I.js";import"./TextDocumentSurface-CKQP-cBT.js";import"./file-text-KijGBnME.js";import"./x-e3h2hDsp.js";import"./chevron-right-CzH-TaSF.js";import"./code-xml-Jtxsp5d1.js";import"./arrow-left-CghA0kTw.js";import"./arrow-right-iJFv3jNh.js";import"./scout-voice-BhPzrc6P.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-DFhAJkW3.js";import"./chunk-HRAB3GC3-swV8PA2k.js";import"./SpriteAvatar-Bs68ZENy.js";import"./CrewAvatar-CTIuxp4G.js";import"./text-CnZ0e1-V.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-BiohlpM3.js";import"./conversation-model-CwF6Y9gx.js";import"./index-BVlMw8x_.js";import"./NewChatOrigin-DdpzE4kz.js";import"./chevron-down-Mp9mu_yd.js";import"./search-D1tJSAWe.js";import"./agents-project-model-UYiamtrU.js";function U(s){return s?s.startsWith("/Users/")?`~/${s.split("/").slice(3).join("/")}`:s:null}function _(s){const a=s.model?.trim();if(!a)return null;const o=s.harness?.trim();return o&&a.startsWith(`${o}-`)?a.slice(o.length+1).replace(/-\d{8}$/,""):a.replace(/^claude-/,"").replace(/-\d{8}$/,"")}function g(s){const a=new Map;for(const o of s){if(o.kind!=="tool"||!o.tool)continue;const t=o.tool.toLowerCase();a.set(t,(a.get(t)??0)+1)}return[...a.entries()].sort((o,t)=>t[1]-o[1]||o[0].localeCompare(t[0])).map(([o])=>o).slice(0,6)}function i({label:s,value:a,title:o}){return a?.trim()?e.jsxs("div",{className:"av2-coreMetaItem",title:o??a,children:[e.jsx("span",{className:"av2-coreMetaLabel",children:s}),e.jsx("span",{className:"av2-coreMetaValue",children:a})]}):null}function ys({agent:s,route:a,navigate:o}){const[t,h]=c.useState(null),[C,v]=c.useState(null),m=c.useCallback(async()=>{const[r,l]=await Promise.all([u(`/api/agents/${encodeURIComponent(s.id)}/observe`).catch(()=>null),u(`/api/agents/${encodeURIComponent(s.id)}/session-catalog`).catch(()=>null)]);h(r),v(l)},[s.id]);c.useEffect(()=>{h(null),v(null),m()},[m]),T(()=>{m()});const p=s.handle?.trim().replace(/^@+/,"")||null,j=p?`@${p}`:s.name,n=s.harness?B(s.harness):null,H=_(s),w=U(s.cwd??s.projectRoot),M=(s.homeNodeName??s.authorityNodeName??"").replace(/\.local$/i,"").replace(/-local-openscout$/i,""),I=y(s.state),k=L(s.state,s),x=t?.data.events??[],d=c.useMemo(()=>g(x),[x]),f=t?.data.metadata?.usage??null,N=(()=>{const r=f?.contextWindowTokens??0,l=f?.contextInputTokens??0;return!r||r<=0||l<=0?null:Math.min(100,Math.max(0,Math.round(l/r*100)))})(),A=C?.sessions?.length??0,$=s.transport==="claude_stream_json"?"stream-json":s.transport==="codex_app_server"?"app-server":s.transport?.trim()||null,S=async()=>{try{const r=await u("/api/sessions",{method:"POST",body:JSON.stringify(V(s))}),l=r.sessionId?.trim();if(l){R(o,{view:"sessions",sessionId:l},{returnTo:a});return}const b=r.conversationId?.trim();o({...a,view:"agents-v2",agentId:r.agentId?.trim()||s.id,...b?{conversationId:b}:{},tab:"message"})}catch{}};return e.jsxs("header",{className:"av2-profileHero",children:[e.jsx(E,{agent:s,size:56,tile:!0,presence:!0}),e.jsxs("div",{className:"av2-profileHeroCore",children:[e.jsxs("div",{className:"av2-profileHeroTop",children:[e.jsxs("div",{className:"av2-profileHeroIdent",children:[e.jsx("h1",{className:"av2-profileHeroTitle",title:j,children:j}),e.jsxs("span",{className:"av2-profileHeroState","data-online":I||void 0,children:[e.jsx("span",{className:"av2-profileHeroDot","aria-hidden":!0}),k,s.updatedAt?` · ${P(s.updatedAt)}`:""]}),p&&s.name.toLowerCase()!==p.toLowerCase()?e.jsx("span",{className:"av2-profileHeroBroker",title:s.id,children:s.name}):e.jsx("span",{className:"av2-profileHeroBroker",title:s.id,children:s.id})]}),e.jsxs("div",{className:"av2-profileHeroActions",children:[e.jsx("button",{type:"button",className:"av2-heroGhost",onClick:()=>o({...a,view:"agents-v2",agentId:s.id,tab:"config"}),children:"Edit config"}),e.jsx("button",{type:"button",className:"av2-heroCta",onClick:()=>{S()},children:"+ New session"})]})]}),e.jsxs("div",{className:"av2-profileHeroMeta",children:[e.jsx(i,{label:"Project",value:s.project?`/${s.project}`:null}),e.jsx(i,{label:"Branch",value:s.branch}),e.jsx(i,{label:"Harness",value:n?n.charAt(0).toUpperCase()+n.slice(1):null,title:s.harness??void 0}),e.jsx(i,{label:"Model",value:H}),e.jsx(i,{label:"Host",value:M||null}),e.jsx(i,{label:"Root",value:w,title:s.cwd??s.projectRoot??void 0}),e.jsx(i,{label:"Transport",value:$})]}),e.jsxs("div",{className:"av2-profileHeroSignal",children:[n?e.jsx("span",{className:"av2-signalMark",title:s.harness??n,children:e.jsx(O,{harness:n,size:12})}):null,e.jsxs("span",{className:"av2-signalChip",children:[e.jsx("span",{className:"av2-signalLabel",children:"Sessions"}),e.jsx("span",{className:"av2-signalValue",children:A})]}),N!=null?e.jsxs("span",{className:"av2-signalChip",children:[e.jsx("span",{className:"av2-signalLabel",children:"Ctx"}),e.jsxs("span",{className:"av2-signalValue",children:[N,"%"]})]}):null,d.length>0?e.jsxs("span",{className:"av2-signalChip av2-signalChip--wide",title:d.join(" · "),children:[e.jsx("span",{className:"av2-signalLabel",children:"Tools"}),e.jsx("span",{className:"av2-signalValue",children:d.join(" · ")})]}):t?e.jsxs("span",{className:"av2-signalChip",children:[e.jsx("span",{className:"av2-signalLabel",children:"Tools"}),e.jsx("span",{className:"av2-signalValue",children:"—"})]}):null]})]})]})}export{ys as ProjectAgentProfileHero};
@@ -0,0 +1,2 @@
1
+ import{r as m,j as s}from"./index-CZ-05hKz.js";import{A as Me}from"./AgentAvatar-CYhf6twS.js";import{H as ge}from"./HarnessMark-D5CA5uSp.js";import{a as Ee}from"./api-Co9aQ2Jw.js";import{r as Ie,i as $e}from"./ui-LM8pS8qE.js";import{t as _,d as We,n as ee}from"./time-Dhsh_2EG.js";import{p as Fe,l as Be,s as De,f as Oe}from"./terminal-sessions-BQ6t92tJ.js";import{u as ze}from"./Provider-B2xuo3rf.js";import{o as He}from"./openContent-C6XO6kr5.js";import{p as Z}from"./NewChatComposer-hlWT-nbR.js";import{SessionRefScreen as qe}from"./SessionRefScreen-B_cTv47v.js";import{C as Ge}from"./CrewWorkspaces-CkPYIA46.js";import{r as X,s as V}from"./project-overview-helpers-BQTc_Ous.js";import{u as _e,g as Q,e as oe,h as Ve,s as re,a as le,j as Ke,k as be,c as Ue,l as Xe,f as Ye,r as Ze}from"./projects-inbox-D-zAb9Gp.js";import{g as Je,a as Qe,f as ce,b as es}from"./api-HFH8wFyb.js";import{f as ss}from"./cache-CeWH_KzJ.js";import{A as ue}from"./arrow-up-right-CCfZXPqD.js";import{C as ts}from"./chevron-right-CzH-TaSF.js";import{F as ns}from"./AddProjectForm-CcD6qvV8.js";import{S as is}from"./search-D1tJSAWe.js";import{A as as}from"./arrow-right-iJFv3jNh.js";import{E as os}from"./external-link-Ckiyzjwo.js";import{F as rs}from"./DocumentFocusViewer-DZVhS7as.js";import"./SpriteAvatar-Bs68ZENy.js";import"./colors-BtO5_zlx.js";import"./CrewAvatar-CTIuxp4G.js";import"./perf-PX8Rx0EP.js";import"./router-DJj2WbDg.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./sse-CiOSzE5n.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BJIamJOH.js";import"./TextDocumentSurface-CKQP-cBT.js";import"./file-text-KijGBnME.js";import"./createLucideIcon-DXpqZP7I.js";import"./code-xml-Jtxsp5d1.js";import"./arrow-left-CghA0kTw.js";import"./scout-voice-BhPzrc6P.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-DFhAJkW3.js";import"./chunk-HRAB3GC3-swV8PA2k.js";import"./text-CnZ0e1-V.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-BiohlpM3.js";import"./conversation-model-CwF6Y9gx.js";import"./index-BVlMw8x_.js";import"./NewChatOrigin-DdpzE4kz.js";import"./x-e3h2hDsp.js";import"./chevron-down-Mp9mu_yd.js";import"./tail-events-BMQmSx1n.js";import"./BackToPicker-4JaeRvDm.js";import"./ConversationScreen-BNULZAp2.js";import"./ConversationComposer-2HjbGPL9.js";import"./zap-nMcjPoWB.js";import"./message-markup-RkfmDfME.js";import"./mentions-CcPFMbmZ.js";import"./AgentDetailCard-UqPNpcvB.js";import"./AgentLiveActions-BwuzOE8h.js";import"./terminal-takeover-DANQfTcy.js";import"./eye-CpfyvdLq.js";import"./terminal-yN9xN-h9.js";import"./message-visibility-DwxgcgYK.js";import"./operator-attention-RqieiSY8.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-C8vfXaTF.js";import"./AstronautSuit-Ckx7lu7G.js";import"./ConversationFeedRows-C6wUqJrx.js";import"./ConversationPanels-CNCIbpqU.js";import"./tail-display-DcliDVkW.js";import"./lane-edit-display-C_Aujldz.js";import"./use-reduced-motion-CKkhq9c5.js";import"./proxy-DnLpZIi9.js";import"./activity-Bj3Hnbj3.js";import"./message-circle-B2ddzBrX.js";import"./ConversationStatus-DZuyKsWN.js";import"./check-C18YQC90.js";import"./sparkles-Dy8p5xN8.js";import"./SessionObserve-Dsd0j05N.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-D_DMlBeT.js";import"./lane-observe-vfyACHi0.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-CdGUXxGR.js";import"./ObserveTextFlow-BSEtYTxU.js";import"./SessionObserveEvidence-DopQYDkD.js";import"./wrench-YcXMlsh2.js";/* empty css */import"./model-IGCUEsMy.js";import"./agents-project-model-UYiamtrU.js";import"./agent-specialization-BIPIBW8u.js";import"./cpu-BjVis9mc.js";import"./sliders-horizontal-BPSMHhbm.js";import"./message-square-D9YYWE0x.js";function de(e){const t=e?.trim();if(!t)return null;const i=t.split(/[\\/]/u).filter(Boolean).at(-1)??t;return i.endsWith(".jsonl")?i.slice(0,-6):i}function ls(e){return e.surfaces.filter(t=>t.backend==="tmux")}function cs(e,t){return{terminalSessionId:e.id,terminalSurfaceKey:De(t),sessionName:t.sessionName}}function us(e,t){const i=de(t.agentId),n=new Set(t.sessionRefs.map(de).filter(r=>!!r)),o=i?.split(".",1)[0]??null;o?.startsWith("session-")&&n.add(o);for(const r of e){const a=ls(r).find(u=>n.has(u.sessionName));if(a)return cs(r,a)}return null}function ds(e,t){const i=Fe(e.terminalSurfaceKey);return i?`scout://terminal?${new URLSearchParams({session:e.terminalSessionId,surface:Be(i),mode:t}).toString()}`:null}const ps=1e4,ms=2e4,hs=6e4,fs=15e3,js=45e3,xs=["branch","unstaged","staged"];function te(e){const t=()=>{document.visibilityState==="visible"&&e()};return window.addEventListener("focus",t),document.addEventListener("visibilitychange",t),()=>{window.removeEventListener("focus",t),document.removeEventListener("visibilitychange",t)}}function gs(e,t){const i=new Set;for(const n of[e,...t]){const o=n?.trim();o&&i.add(o.replace(/\/+$/u,""))}return[...i].slice(0,6)}function bs(e){return e.replace(/\/+$/u,"").split("/").pop()?.toLocaleLowerCase()??e.toLocaleLowerCase()}function vs(e,t,i){return e.path===t||i?.worktrees.some(o=>o.path===e.path)?!0:e.repo.split("/").pop()?.toLocaleLowerCase()===(i?.name.toLocaleLowerCase()??bs(t))}function J(e){return e&&typeof e=="object"&&"name"in e&&e.name==="AbortError"?"The repository scan timed out.":e instanceof Error?e.message:String(e)}function ws(e,t=[]){const i=gs(e,t).join("\0"),n=m.useMemo(()=>i?i.split("\0"):[],[i]),[o,r]=m.useState(()=>Je()),[a,u]=m.useState(()=>Qe()),[c,j]=m.useState(!!(e&&!X(o,e))),[v,g]=m.useState(!!e),[C,N]=m.useState(!!e),[L,R]=m.useState(null),[y,M]=m.useState(null),[F,I]=m.useState(()=>new Map),[D,k]=m.useState(()=>new Map),[S,B]=m.useState(0),f=m.useRef(null),x=m.useCallback(()=>{f.current=null,B(d=>d+1)},[]);m.useEffect(()=>{if(!e){j(!1),R(null);return}let d=!1,b=!1,T=!0;const W=async()=>{if(b)return;b=!0,d||(j(!0),R(null));let O=null;try{let E=null;const z=S>0&&T;T=!1;try{E=await ce("standard",z,fs)}catch(A){O=J(A)}if((!E||!X(E,e))&&f.current!==e){f.current=e;try{const A=await ce("expanded",z,js);X(A,e)&&(E=A)}catch(A){O=J(A)}}!d&&E&&r(A=>X(E,e)?E:A&&X(A,e)?A:E),!d&&!X(E,e)&&R(O??"Repo Watch did not include this project in its latest scan.")}finally{b=!1,d||j(!1)}};W();const p=window.setInterval(()=>{document.visibilityState==="visible"&&W()},ps),P=te(()=>{W()});return()=>{d=!0,window.clearInterval(p),P()}},[e,S]),m.useEffect(()=>{if(n.length===0){N(!1),k(new Map);return}let d=!1,b=!1,T=!0;const W=async()=>{if(b)return;b=!0,d||N(!0);const O=await Promise.allSettled(n.map(E=>ss(E,[...xs],{force:S>0&&T,tier:"summary"})));if(T=!1,!d){const E=new Map,z=new Map;O.forEach((A,K)=>{const q=n[K];A.status==="fulfilled"?E.set(q,A.value.snapshot):z.set(q,J(A.reason))}),I(A=>{const K=new Map(A);for(const q of n)K.delete(q);for(const[q,se]of E)K.set(q,se);return K}),k(z),N(!1)}b=!1};W();const p=window.setInterval(()=>{document.visibilityState==="visible"&&W()},ms),P=te(()=>{W()});return()=>{d=!0,window.clearInterval(p),P()}},[n,S]),m.useEffect(()=>{if(n.length===0){g(!1),M(null);return}let d=!1,b=!1;const T=async()=>{if(!b){b=!0;try{const P=await es(n);d||(u(P),M(null))}catch(P){d||M(J(P))}finally{b=!1,d||g(!1)}}};g(!0),M(null),T();const W=window.setInterval(()=>{document.visibilityState==="visible"&&T()},hs),p=te(()=>{T()});return()=>{d=!0,window.clearInterval(W),p()}},[n,S]);const l=m.useMemo(()=>X(o,e),[e,o]),h=m.useMemo(()=>e?(a?.pullRequests??[]).filter(d=>vs(d,e,l)):[],[l,e,a]),$=m.useMemo(()=>{const d=a?.paths.some(b=>n.includes(b))?a.warnings:[];return y?[y,...d]:d},[n,y,a]);return{project:l,pullRequests:h,pullRequestsLoading:v,pullRequestWarnings:$,repoLoading:c,repoError:L,diffSnapshots:F,diffErrors:D,diffLoading:C,refresh:x}}const Ns=[];function ks(e,t){return e.thread===t.thread&&e.crossProject===t.crossProject&&e.selected===t.selected&&e.cursor===t.cursor&&e.nowMs===t.nowMs&&e.workLabel===t.workLabel}const Ss=m.memo(function({thread:t,crossProject:i,selected:n,cursor:o,nowMs:r,onSelect:a,onOpen:u,rowRef:c,workLabel:j}){return s.jsxs("button",{ref:c,type:"button",className:"pi-row","data-state":t.group,"data-selected":n||void 0,"data-cursor":o||void 0,onClick:a,onDoubleClick:u,children:[s.jsx("span",{className:"pi-rowDot","aria-hidden":!0}),s.jsxs("span",{className:"pi-rowBody",children:[s.jsx("span",{className:"pi-rowWork",title:t.work,children:j??t.work}),s.jsxs("span",{className:"pi-rowAttr",children:[s.jsx("span",{className:"pi-rowAvatar",children:s.jsx(Me,{agent:{name:t.agentName,harness:t.harness,state:t.working?"in_turn":null},placement:"row",size:22})}),s.jsx("span",{className:"pi-rowAgent",title:t.agentName,children:t.agentName}),s.jsx("span",{className:"pi-rowHmark","aria-hidden":!0,children:s.jsx(ge,{harness:t.harness,size:11})}),i?s.jsxs("span",{className:"pi-rowChip",title:`/${t.projectTitle}`,children:["/",t.projectTitle]}):t.branch?s.jsx("span",{className:"pi-rowBranch",title:t.branch,children:t.branch}):null]})]}),s.jsxs("span",{className:"pi-rowVitals",children:[t.working?s.jsx("span",{className:"pi-rowLiveTag",children:"live"}):null,s.jsx("span",{className:"pi-rowAgo",children:t.lastActivityAt?_(t.lastActivityAt,r):"—"}),t.contextPct!=null?s.jsxs("span",{className:"pi-rowCtx",children:[t.contextPct,"%"]}):null]}),s.jsxs("span",{className:"pi-rowOpen","aria-hidden":!0,children:[s.jsx("span",{children:"Open"}),s.jsx(ts,{size:14,strokeWidth:1.8})]})]})},ks);function pe({title:e,detail:t,tone:i="muted"}){return s.jsxs("div",{className:"pi-stateBlock","data-tone":i,role:i==="loading"?"status":"note",children:[s.jsx("span",{className:"pi-statePulse","aria-hidden":!0}),s.jsx("span",{className:"pi-stateTitle",children:e}),t?s.jsx("span",{className:"pi-stateDetail",children:t}):null]})}function ys({rows:e=7}){return s.jsxs("div",{className:"pi-loadingRows","aria-hidden":"true",children:[s.jsxs("div",{className:"pi-sectionHead pi-sectionHead--loading",children:[s.jsx("span",{className:"pi-loadingLine pi-loadingLine--label"}),s.jsx("span",{className:"pi-loadingLine pi-loadingLine--count"})]}),Array.from({length:e},(t,i)=>s.jsxs("div",{className:"pi-row pi-row--loading",children:[s.jsx("span",{className:"pi-rowDot"}),s.jsxs("span",{className:"pi-rowBody",children:[s.jsx("span",{className:"pi-loadingLine pi-loadingLine--title"}),s.jsx("span",{className:"pi-loadingLine pi-loadingLine--meta"})]}),s.jsx("span",{className:"pi-rowVitals",children:s.jsx("span",{className:"pi-loadingLine pi-loadingLine--time"})})]},i))]})}function Cs({route:e,navigate:t,slug:i,model:n,mode:o,repoProject:r}){const a=n.projects.find(y=>y.slug===i)??null,u=Q(n.threads,i),c=u.filter(y=>y.kind==="agent"),j=a?.title??i,v=a?.root??null,g=(a?.agentCount??c.length)>1,C=e.machineId?{machineId:e.machineId}:{},N={view:"agents-v2",projectSlug:i,...C},L=As(a?.needs??0,a?.working??0,u.length),R=r?.worktrees.length??a?.worktreeCount??0;return s.jsxs("header",{className:"pi-projectHead",children:[s.jsx("div",{className:"pi-projectHeadTop",children:s.jsxs("div",{className:"pi-projectIdent",children:[s.jsx("h1",{className:"pi-projectTitle",children:j}),s.jsxs("div",{className:"pi-projectMeta",children:[v?s.jsx("span",{title:v,children:V(v)}):null,s.jsx("span",{className:"pi-projectDigest",children:L})]})]})}),s.jsxs("div",{className:"pi-projectFacets","aria-label":"Project sections",children:[s.jsx("button",{type:"button",className:"pi-projectFacet","data-selected":o==="overview"||void 0,onClick:()=>t(N),children:s.jsx("span",{children:"Overview"})}),s.jsxs("button",{type:"button",className:"pi-projectFacet","data-selected":o==="sessions"||void 0,onClick:()=>t({...N,indexView:"sessions"}),children:[s.jsx("span",{children:"Sessions"}),s.jsx("b",{children:a?.sessionCount??0})]}),g?s.jsxs("button",{type:"button",className:"pi-projectFacet","data-selected":o==="agents"||void 0,onClick:()=>t({...N,indexView:"agents"}),children:[s.jsx("span",{children:"Agents"}),s.jsx("b",{children:a?.agentCount??c.length})]}):null,s.jsxs("button",{type:"button",className:"pi-projectFacet",title:"Open worktrees in Repos",onClick:()=>t({view:"repos",...v?{root:v}:{},...C}),children:[s.jsx("span",{children:"Worktrees"}),s.jsx("b",{children:R}),s.jsx(ue,{className:"pi-projectFacetOut",size:11,strokeWidth:2,"aria-hidden":!0})]}),s.jsxs("button",{type:"button",className:"pi-projectFacet",disabled:!v,title:v?"Open this project's AGENTS.md":"No project root known",onClick:()=>t({view:"code",project:i,path:"AGENTS.md"}),children:[s.jsx("span",{children:"Rules"}),s.jsx("b",{children:v?"set":"—"}),s.jsx(ue,{className:"pi-projectFacetOut",size:11,strokeWidth:2,"aria-hidden":!0})]})]})]})}function As(e,t,i){if(i===0)return s.jsx("span",{children:"No conversations yet."});const n=[];return t>0&&n.push(s.jsxs("b",{children:[t," moving"]},"w")),e>0&&n.push(s.jsxs("b",{children:[e," needs you"]},"n")),n.push(s.jsxs("span",{children:[i," conversation",i===1?"":"s"]},"t")),n.reduce((o,r,a)=>(a>0&&o.push(s.jsx("span",{children:" · "},`sep${a}`)),o.push(r),o),[])}function ve(e){if(e.length<=18)return e;const t=e.match(/^([0-9a-f]{8})-[0-9a-f-]{27,}$/iu);return t?t[1]:`${e.slice(0,10)}…${e.slice(-5)}`}function Rs(e,t){return`${t?0:e.projects.length} tracked`}function Ts({route:e,navigate:t,projects:i}){const{onboarding:n,refreshOnboarding:o,reload:r}=ze(),a=Ls(n?.defaultHarness),[u,c]=m.useState(""),[j,v]=m.useState(""),[g,C]=m.useState(a),[N,L]=m.useState(!1),[R,y]=m.useState(null),[M,F]=m.useState(null),[I,D]=m.useState(null);m.useEffect(()=>{C(a)},[a]);const k=m.useMemo(()=>Ps(i),[i]),S=m.useMemo(()=>Ms(k,u),[u,k]),B=m.useMemo(()=>k.find(p=>p.slug===j)??he(k,u),[u,k,j]),f=u.trim(),x=Is(f)&&!he(k,f),l=B??(!x&&f?S[0]??null:null),h=l?"Open project":x?"Create project":"Find project",$=!!(l||x||f);m.useEffect(()=>{j&&(k.some(p=>p.slug===j)||v(""))},[k,j]),m.useEffect(()=>{if(!I)return;const p=k.find(P=>$s(P,I));p&&(D(null),t(me(e,p.slug)))},[I,t,k,e]);const d=p=>{v(p.slug),c(p.title),y(null),F(null)},b=p=>{t(me(e,p.slug))},T=async p=>{L(!0),y(null),F(null);try{await Ee("/api/onboarding/project",{method:"POST",body:JSON.stringify({contextRoot:p,sourceRoots:[p],defaultHarness:g})}),D(p),F("Project created. Refreshing inventory."),v(""),c(""),Ze(),await Promise.all([o(),r()])}catch(P){y(P instanceof Error?P.message:"Could not create project.")}finally{L(!1)}},W=p=>{if(p.preventDefault(),!N){if(l){b(l);return}if(x){T(f);return}if(f){y("No project matches that search. Paste a repo path to create one.");return}y("Choose a project or paste a repo path.")}};return s.jsxs("div",{className:"pi-zero",children:[s.jsxs("div",{className:"pi-zeroHead",children:[s.jsxs("span",{className:"pi-zeroKicker",children:[s.jsx(ns,{size:13,strokeWidth:1.9,"aria-hidden":!0}),"Projects"]}),s.jsx("h2",{children:"Pick a project to start."})]}),s.jsxs("form",{className:"pi-zeroComposer",onSubmit:W,children:[s.jsxs("div",{className:"pi-zeroBar",children:[s.jsxs("label",{className:"pi-zeroSelect",children:[s.jsx(is,{size:13,strokeWidth:1.8,"aria-hidden":!0}),s.jsxs("select",{value:j,"aria-label":"Choose project",onChange:p=>{const P=k.find(O=>O.slug===p.currentTarget.value);P?d(P):v("")},children:[s.jsx("option",{value:"",children:"Choose project"}),k.slice(0,80).map(p=>s.jsx("option",{value:p.slug,children:p.title},p.slug))]})]}),s.jsx("div",{className:"pi-zeroHarness",role:"group","aria-label":"Default harness",children:["claude","codex"].map(p=>s.jsx("button",{type:"button","data-on":g===p||void 0,onClick:()=>C(p),children:p==="claude"?"Claude":"Codex"},p))})]}),s.jsxs("div",{className:"pi-zeroInputRow",children:[s.jsx("textarea",{value:u,rows:2,placeholder:"Find project or paste /path/to/repo","aria-label":"Find or create project",onChange:p=>{c(p.currentTarget.value),v(""),y(null),F(null)},onKeyDown:p=>{p.key==="Enter"&&!p.shiftKey&&(p.preventDefault(),p.currentTarget.form?.requestSubmit())}}),s.jsxs("button",{type:"submit",className:"pi-zeroSend",disabled:N||!$,title:h,children:[s.jsx(as,{size:15,strokeWidth:2,"aria-hidden":!0}),s.jsx("span",{children:N?"Working":h})]})]}),S.length>0?s.jsx("div",{className:"pi-zeroMatches","aria-label":"Matching projects",children:S.map(p=>s.jsxs("button",{type:"button",className:"pi-zeroMatch","data-selected":B?.slug===p.slug||void 0,onClick:()=>d(p),onDoubleClick:()=>b(p),children:[s.jsxs("span",{className:"pi-zeroMatchMain",children:[s.jsxs("span",{className:"pi-zeroMatchTitle",children:["/",p.title]}),s.jsx("span",{className:"pi-zeroMatchRoot",title:p.root??void 0,children:p.root?V(p.root):p.slug})]}),s.jsx("span",{className:"pi-zeroMatchMeta",children:Ws(p)})]},p.slug))}):f?s.jsx("div",{className:"pi-zeroEmpty",children:"No project matches."}):null,R?s.jsx("div",{className:"pi-zeroError",children:R}):null,M?s.jsx("div",{className:"pi-zeroStatus",children:M}):null]})]})}function Ls(e){return e==="codex"?"codex":"claude"}function me(e,t){return{view:"agents-v2",projectSlug:t,...e.showEphemeral?{showEphemeral:!0}:{},...e.machineId?{machineId:e.machineId}:{}}}function Ps(e){return e.map(t=>({slug:t.slug,title:t.title,root:t.root,agentCount:t.agentCount,sessionCount:t.sessionCount,lastActivityAt:t.lastActivityAt})).sort((t,i)=>i.lastActivityAt-t.lastActivityAt||i.agentCount-t.agentCount||i.sessionCount-t.sessionCount||t.title.localeCompare(i.title))}function Ms(e,t){const i=H(t);return i?e.map(n=>({option:n,score:Es(n,i)})).filter(n=>n.score!==null).sort((n,o)=>n.score-o.score||o.option.lastActivityAt-n.option.lastActivityAt||n.option.title.localeCompare(o.option.title)).slice(0,6).map(n=>n.option):e.slice(0,6)}function he(e,t){const i=H(t);return i?e.find(n=>{const o=H(n.root??""),r=H(n.root?Z(n.root):"");return H(n.title)===i||H(n.slug)===i||o===i||r===i||H(n.root?V(n.root):"")===i})??null:null}function Es(e,t){const i=H(e.title),n=H(e.slug),o=H(e.root??""),r=H(e.root?Z(e.root):"");return i===t||n===t||o===t||r===t?0:i.startsWith(t)||n.startsWith(t)||r.startsWith(t)?1:i.includes(t)||n.includes(t)||r.includes(t)?2:o.includes(t)?3:null}function H(e){return e.trim().toLowerCase().replace(/^~(?=\/)/u,"").replace(/\s+/g," ")}function Is(e){const t=e.trim();return/^(~\/|\/|\.{1,2}\/)/u.test(t)||t.includes("/")}function $s(e,t){const i=H(t);return i?[e.root??"",e.root?V(e.root):"",e.root?Z(e.root):"",e.slug,e.title].map(H).some(o=>o===i||o.endsWith(i)):!1}function Ws(e){return[fe(e.agentCount,"agent"),fe(e.sessionCount,"session"),e.lastActivityAt?_(e.lastActivityAt):null].filter(Boolean).join(" · ")}function fe(e,t){return`${e} ${t}${e===1?"":"s"}`}function Fs(e,t){return Ye(e,t)}function je(e){return/^native:process:/iu.test(e??"")}function Bs(e){return e.startsWith("/")||e.startsWith("~/")||e.includes("/")&&/\.(jsonl?|events)$/i.test(e)}function we(e,t,i){const n=e?.trim()??"";return!n||Bs(n)?t:n}function Ds({session:e,sessionRef:t,threads:i,lookup:n,route:o,navigate:r,nowMs:a}){const[u,c]=m.useState(null),j=e?.agentName??o.selectedAgentId??o.agentId??"Session",v=e?.harness??"session",g=n?.kind==="observe"?n.observe.data:null,C=g?.metadata?.session,N=e?.lastActivityAt??n?.session?.lastMessageAt??null,[L,R,y]=m.useMemo(()=>[ae(g),ke(g,N),Gs(g,N)],[g,N]),M=C?.gitBranch??n?.session?.currentBranch??e?.branch??null,F=C?.model??null,I=C?.turnCount??g?.metadata?.usage?.assistantMessages??(n?.kind==="conversation"?n.session.messageCount:null),D=R?_(R,a):e?.lastActivityAt?_(e.lastActivityAt,a):"—",k=e?.working?`live · last ${D}`:D!=="—"?`last ${D}`:"trace resolving",S=we(e?.work,j),B=ve(t),f=n?.session??null,x=n?.kind==="observe"?n.observe.agentId??f?.agentId??e?.agentId:f?.agentId??e?.agentId,l=n?.kind==="observe"?n.observe.sessionId:f?.harnessSessionId,h=[j,v,F,M,L?`started ${We(L)}`:null,y,I!=null?`turn ${w(I)}`:null,B].filter(b=>!!b&&b!=="—");m.useEffect(()=>{let b=!0;return c(null),!x&&!l&&!t?()=>{b=!1}:(Oe({includeDiscovered:!0}).then(T=>{b&&c(us(T,{agentId:x,sessionRefs:[t,l,e?.sessionId]}))}).catch(()=>{b&&c(null)}),()=>{b=!1})},[e?.sessionId,t,x,l]);const $=()=>{u&&He(r,{view:"terminal",terminalSessionId:u.terminalSessionId,terminalSurfaceKey:u.terminalSurfaceKey,mode:"takeover"},{returnTo:o})},d=u?ds(u,"takeover"):null;return s.jsxs("section",{className:"pi-sessionOverview","aria-label":"Session overview",children:[s.jsxs("section",{className:"pi-sessionMasthead","data-state":e?.working?"working":"recent",children:[s.jsxs("div",{className:"pi-sessionMastTop",children:[s.jsx("span",{className:"pi-sessionCrumb",children:"Sessions ▸"}),s.jsx("h2",{className:"pi-sessionHeadline",title:S,children:S}),s.jsxs("span",{className:"pi-sessionState",children:[e?.working?s.jsx("span",{className:"pi-sessionLiveDot","aria-hidden":!0}):null,k]})]}),s.jsx("div",{className:"pi-sessionMeta",children:h.map((b,T)=>s.jsxs("span",{title:T===h.length-1?t:b,children:[T===1?s.jsx(ge,{harness:v,size:11}):null,b]},`${b}:${T}`))}),u?s.jsxs("div",{className:"pi-sessionTerminalActions","aria-label":"tmux terminal actions",children:[s.jsxs("span",{className:"pi-sessionTerminalName",title:u.sessionName,children:["tmux · ",u.sessionName]}),s.jsx("button",{type:"button",onClick:$,children:"Open in web terminal"}),d?s.jsxs("a",{href:d,children:["Open in native terminal",s.jsx(os,{size:11,strokeWidth:1.8,"aria-hidden":!0})]}):null]}):null]}),s.jsx(Zs,{lookup:n,session:e,threads:i,nowMs:a,route:o,navigate:r})]})}function Os({session:e,sessionRef:t,threads:i,route:n,navigate:o,nowMs:r}){const[a,u]=m.useState(null);return m.useEffect(()=>{u(null)},[t]),s.jsx("main",{className:"pi-sessionDetail","aria-label":"Selected session",children:s.jsxs("div",{className:"pi-sessionContent",children:[s.jsx(Ds,{session:e,sessionRef:t,threads:i,lookup:a,route:n,navigate:o,nowMs:r}),s.jsx(qe,{sessionRef:t,navigate:o,showObserveRail:!1,onLookup:u})]})})}function w(e){return typeof e!="number"||!Number.isFinite(e)?"—":Math.abs(e)<1e3?e.toLocaleString("en-US"):Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function Ne(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?"—":`${w(e)} tok`}function G(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:null}function zs(e){const t=G(e?.contextInputTokens),i=G(e?.contextWindowTokens);return t===null||i===null?null:Math.max(0,Math.min(1,t/i))}function Hs(e){const t=[{key:"input",label:"input",value:G(e?.inputTokens)??0},{key:"cache-read",label:"cache rd",value:G(e?.cacheReadInputTokens)??0},{key:"cache-write",label:"cache wr",value:G(e?.cacheCreationInputTokens)??0},{key:"output",label:"output",value:G(e?.outputTokens)??0},{key:"reasoning",label:"reasoning",value:G(e?.reasoningOutputTokens)??0}].filter(r=>r.value>0),i=t.reduce((r,a)=>r+a.value,0),n=t.filter(r=>r.key!=="reasoning"||i>0&&r.value/i>=.02);if(n.length>0)return n;const o=G(e?.totalTokens);return o!==null?[{key:"total",label:"total",value:o}]:[]}function qs({buckets:e}){const t=e.reduce((i,n)=>i+n.value,0);return e.length===0?null:s.jsxs("div",{className:"pi-sessionGlanceTokens","aria-label":"Token usage",children:[s.jsx("div",{className:"pi-sessionGlanceTokenBars",children:e.map(i=>s.jsx("span",{className:"pi-sessionGlanceTokenSeg","data-kind":i.key,style:{flexGrow:t>0?Math.max(.035,i.value/t):1,flexBasis:0},title:`${i.label}: ${Ne(i.value)}`},i.key))}),s.jsx("div",{className:"pi-sessionGlanceTokenLegend",children:e.map(i=>s.jsxs("span",{children:[s.jsx("i",{"data-kind":i.key,"aria-hidden":!0}),i.label," ",s.jsx("b",{children:w(i.value)})]},i.key))})]})}function ae(e){const t=ee(e?.metadata?.session?.sessionStart);if(t!==null)return t;for(const i of e?.events??[]){const n=ee(i.at);if(n!==null)return n}return null}function ke(e,t){for(let o=(e?.events.length??0)-1;o>=0;o-=1){const r=ee(e?.events[o]?.at);if(r!==null)return r}const i=ae(e),n=e?.events.at(-1)?.t;return i!==null&&typeof n=="number"&&Number.isFinite(n)?i+n*1e3:ee(t)}function Gs(e,t){const i=ae(e),n=ke(e,t);if(i!==null&&n!==null)return ie(Math.max(0,n-i))||"—";const o=e?.events.at(-1)?.t;return typeof o=="number"&&Number.isFinite(o)&&ie(o*1e3)||"—"}function ie(e){if(typeof e!="number"||!Number.isFinite(e)||e<0)return"";const t=Math.floor(e/1e3);if(t<60)return`${t}s`;const i=Math.floor(t/60);if(i<60)return`${i}m`;const n=Math.floor(i/60),o=i%60;if(n<48)return o>0?`${n}h ${o}m`:`${n}h`;const r=Math.floor(n/24),a=n%24;return a>0?`${r}d ${a}h`:`${r}d`}function _s(e){const t=e?.metadata?.topology;if(!t)return null;const i=t.agents.length,n=t.agents.filter(u=>u.role!=="lead").length,o=t.groups.filter(u=>u.kind==="workflow").length,r=t.tasks.length,a=[];return n>0?a.push(`${n} worker${n===1?"":"s"}`):i>0&&a.push(`${i} agent${i===1?"":"s"}`),o>0&&a.push(`${o} workflow${o===1?"":"s"}`),r>0&&a.push(`${r} task${r===1?"":"s"}`),a.length?a.join(" · "):null}function Vs(e){return[...e].sort((t,i)=>xe(i.state)-xe(t.state)||i.touches-t.touches||i.lastT-t.lastT||t.path.localeCompare(i.path)).slice(0,5).map(t=>({path:t.path,kind:t.state,detail:[t.touches>1?`${w(t.touches)} touches`:"1 touch",t.lastT>0?`last ${ie(t.lastT*1e3)}`:null].filter(Boolean).join(" · ")}))}function xe(e){switch(e){case"created":return 3;case"modified":return 2;case"read":return 1}}function Ks(e){const t=new Map;for(const i of e){if(i.kind!=="tool")continue;const n=Us(i.tool||i.text),o=t.get(n)??{count:0,samples:[]};o.count+=1;const r=i.arg||i.detail||i.text;r&&o.samples.length<2&&o.samples.push(r),t.set(n,o)}return[...t.entries()].sort((i,n)=>n[1].count-i[1].count||i[0].localeCompare(n[0])).slice(0,5).map(([i,n])=>({name:i,count:n.count,detail:n.samples.join(" · ")||`${w(n.count)} uses`}))}function Us(e){return(e.trim().split(/\s+/u)[0]??"tool").replace(/[_-]+/gu," ").toLowerCase()}function Xs({usage:e,contextPct:t,topology:i,workspace:n,projectRoot:o,branch:r}){const a=[];return t!==null&&a.push({label:"Context",value:`${t}%`,detail:t>=80?"approaching limit":"within window",tone:t>=80?"warn":void 0}),(e?.serviceTier||e?.planType||e?.speed)&&a.push({label:"Budget",value:e.serviceTier??e.planType??e.speed??"usage",detail:[e.planType,e.speed].filter(Boolean).join(" · ")||"provider metadata"}),n&&o&&n!==o?a.push({label:"Worktree",value:V(n),detail:"session cwd differs from project root",tone:"warn"}):r&&a.push({label:"Repo",value:r,detail:"session branch"}),i&&a.push({label:"Topology",value:i,detail:"observed harness hierarchy"}),(e?.webSearchRequests||e?.webFetchRequests)&&a.push({label:"Network",value:`${w((e.webSearchRequests??0)+(e.webFetchRequests??0))} req`,detail:[e.webSearchRequests?`${w(e.webSearchRequests)} search`:null,e.webFetchRequests?`${w(e.webFetchRequests)} fetch`:null].filter(Boolean).join(" · ")}),a.slice(0,4)}function Ys({session:e,threads:t,nowMs:i}){return t.filter(n=>n.kind==="agent").filter(n=>n.agentId!==e?.agentId||n.work!==e?.work).sort((n,o)=>Number(o.working)-Number(n.working)||o.lastActivityAt-n.lastActivityAt).slice(0,4).map(n=>{const o=!!(e?.branch&&n.branch===e.branch),r=!!(e?.agentName&&n.agentName===e.agentName);return{thread:n,title:we(n.work,n.agentName,n.id),channel:n.conversationId?ve(n.conversationId):n.agentName,state:n.needs?"needs":n.working?"working":"recent",time:n.lastActivityAt?_(n.lastActivityAt,i):"—",participants:n.agentName,why:o?"same branch":r?"same agent":n.working?"active in project":"project thread"}})}function Y({label:e,value:t,title:i,detail:n}){return s.jsxs("span",{className:"pi-sessionGlanceField",title:i,children:[s.jsx("span",{children:e}),s.jsx("b",{children:t}),n?s.jsx("small",{children:n}):null]})}function Zs({lookup:e,session:t,threads:i,nowMs:n,route:o,navigate:r}){const[a,u]=m.useState(!1),c=m.useMemo(()=>{const x=e?.kind==="observe"?e.observe.data:null,l=x?.metadata?.session,h=x?.metadata?.usage,$=x?.events??[],d=x?.files??[],b=l?.turnCount??h?.assistantMessages??(e?.kind==="conversation"?e.session.messageCount:null),T=$.filter(U=>U.kind==="tool").length,W=d.filter(U=>U.state==="created").length,p=d.filter(U=>U.state==="modified").length,P=d.filter(U=>U.state==="read").length,O=W+p,E=zs(h),z=E!==null?Math.round(E*100):null,A=l?.cwd??e?.session?.workspaceRoot??t?.projectRoot??null,K=l?.gitBranch??e?.session?.currentBranch??t?.branch??null,q=_s(x),se=Ne(h?.totalTokens??(typeof h?.inputTokens=="number"||typeof h?.outputTokens=="number"?(h?.inputTokens??0)+(h?.outputTokens??0):null)),ye=Hs(h),Ce=O>0?[p>0?`${w(p)} mod`:null,W>0?`${w(W)} new`:null].filter(Boolean).join(" · "):P>0?"read-only":"no file trace",Ae=d.length>0?`${w(d.length)} touched`:"—",Re=Vs(d),Te=Ks($),Le=Xs({usage:h,contextPct:z,topology:q,workspace:A,projectRoot:t?.projectRoot,branch:K}),Pe=Ys({session:t,threads:i,nowMs:n});return{turnCount:b,toolCount:T,editCount:O,fileCountLabel:Ae,fileStateLabel:Ce,workspace:A,contextPct:z,showContext:z!==null,contextWarn:z!==null&&z>=80,tokenTotal:se,buckets:ye,fileSignals:Re,toolSignals:Te,contextSignals:Le,threadSignals:Pe,projectRoot:t?.projectRoot??null}},[e,t,i,n]),{turnCount:j,toolCount:v,editCount:g,fileCountLabel:C,fileStateLabel:N,workspace:L,contextPct:R,showContext:y,contextWarn:M,tokenTotal:F,buckets:I,fileSignals:D,toolSignals:k,contextSignals:S,threadSignals:B,projectRoot:f}=c;return s.jsxs("section",{className:"pi-sessionGlance","aria-label":"Session glance",children:[s.jsxs("div",{className:"pi-sessionVitals","aria-label":"Session vitals",children:[s.jsx(Y,{label:"Turns",value:w(j)}),s.jsx(Y,{label:"Tools",value:w(v)}),s.jsx(Y,{label:"Edits",value:w(g)}),s.jsx(Y,{label:"Files",value:C,detail:N!=="no file trace"?N:null}),L&&f&&L!==f?s.jsx(Y,{label:"Worktree",value:V(L),title:L}):null,y?s.jsxs("span",{className:"pi-sessionContextVital",title:"Context window usage",children:[s.jsx("span",{children:"Ctx"}),s.jsx("span",{className:"pi-sessionContextBar","aria-hidden":!0,children:s.jsx("span",{"data-warn":M||void 0,style:{width:`${R}%`}})}),s.jsxs("b",{"data-warn":M||void 0,children:[R,"%"]})]}):null,I.length>0?s.jsxs("button",{type:"button",className:"pi-sessionTokenToggle","aria-expanded":a,onClick:()=>u(x=>!x),children:[s.jsx("span",{children:"Tokens"}),s.jsx("b",{children:F}),s.jsx("i",{children:a?"▾":"▸"})]}):null]}),a&&I.length>0?s.jsx(qs,{buckets:I}):null,s.jsx(Js,{files:D,tools:k,context:S,threads:B,route:o,navigate:r})]})}function Js({files:e,tools:t,context:i,threads:n,route:o,navigate:r}){return s.jsxs("section",{className:"pi-sessionSignals","aria-label":"Session work signals",children:[s.jsxs("div",{className:"pi-sessionSignalCol",children:[s.jsxs("div",{className:"pi-sessionSignalHead",children:[s.jsx("span",{children:"Files"}),s.jsx("b",{children:w(e.length)})]}),e.length>0?s.jsx("div",{className:"pi-sessionFileList",children:e.map(a=>s.jsxs("div",{className:"pi-sessionFileRow",children:[s.jsx("span",{"data-kind":a.kind,children:a.kind}),s.jsx("code",{title:a.path,children:a.path}),s.jsx("small",{children:a.detail})]},`${a.kind}:${a.path}`))}):s.jsx("span",{className:"pi-sessionSignalEmpty",children:"No file trace yet."})]}),s.jsxs("div",{className:"pi-sessionSignalCol",children:[s.jsx("div",{className:"pi-sessionSignalHead",children:s.jsx("span",{children:"Tools · Context · Topology"})}),t.length>0?s.jsx("div",{className:"pi-sessionToolGrid",children:t.map(a=>s.jsxs("span",{className:"pi-sessionToolPill",title:a.detail,children:[s.jsx("b",{children:a.name}),s.jsx("em",{children:w(a.count)})]},a.name))}):null,i.length>0?s.jsx("div",{className:"pi-sessionContextList",children:i.map(a=>s.jsxs("div",{className:"pi-sessionContextRow",children:[s.jsx("span",{children:a.label}),s.jsx("b",{"data-tone":a.tone,children:a.value}),s.jsx("small",{children:a.detail})]},`${a.label}:${a.value}`))}):t.length===0?s.jsx("span",{className:"pi-sessionSignalEmpty",children:"Trace metadata is still resolving."}):null]}),s.jsxs("div",{className:"pi-sessionSignalCol",children:[s.jsxs("div",{className:"pi-sessionSignalHead",children:[s.jsx("span",{children:"Recent threads"}),s.jsx("b",{children:w(n.length)})]}),n.length>0?s.jsx("div",{className:"pi-sessionThreadList",children:n.map(a=>s.jsxs("button",{type:"button",className:"pi-sessionThreadRow",onClick:()=>r(be(a.thread,o)),children:[s.jsx("span",{className:"pi-sessionThreadTitle",title:a.title,children:a.title}),s.jsxs("span",{className:"pi-sessionThreadMeta",children:[s.jsx("b",{children:a.channel}),s.jsx("em",{children:a.state}),s.jsx("small",{children:a.time})]}),s.jsxs("span",{className:"pi-sessionThreadWhy",children:[a.participants," · ",a.why]})]},a.thread.id))}):s.jsx("span",{className:"pi-sessionSignalEmpty",children:"No recent agent threads."})]})]})}function ne(e){return!e||e==="—"||/^\d+\s+branches$/iu.test(e)?null:e}function Se(e,t,i,n){const o=new Map,r=(u,c)=>{const j=u??e,v=ne(c),g=j??"project",C=o.get(g);if(C)return!C.branch&&v&&(C.branch=v),C;const N={key:g,root:j,branch:v,sessions:0,work:0,moving:0,lastActivityAt:0,repoWatch:null};return o.set(g,N),N};for(const u of t){const c=r(u.root,u.branch);u.working&&(c.moving+=1),c.lastActivityAt=Math.max(c.lastActivityAt,u.lastActivityAt)}const a=(u,c)=>{const j=u??e,v=o.get(j??"project");return v||(t.length>0?o.get(e??"")??o.values().next().value:r(u,c))};for(const u of i){const c=a(u.workspaceRoot??u.projectRoot,u.branch);c.sessions+=1,u.working&&(c.moving+=1,c.branch=ne(u.branch)??c.branch),c.lastActivityAt=Math.max(c.lastActivityAt,u.lastActivityAt)}for(const u of n){const c=a(u.workspaceRoot??u.projectRoot,u.branch);c.work+=1,u.working&&(c.moving+=1,c.branch=ne(u.branch)??c.branch),c.lastActivityAt=Math.max(c.lastActivityAt,u.lastActivityAt)}return o.size===0&&r(e,null),[...o.values()].sort((u,c)=>c.moving-u.moving||c.lastActivityAt-u.lastActivityAt||(u.root??"").localeCompare(c.root??""))}function Qs(e){return e.worktrees.map(t=>({key:t.id,root:t.path,branch:t.branch.name,sessions:t.sessions.length,work:t.agents.length,moving:t.agents.some($e)?1:0,lastActivityAt:t.lastCommitAt??0,repoWatch:t}))}function et({pullRequests:e,loading:t,warnings:i,onRefresh:n,nowMs:o}){return s.jsxs("section",{className:"pi-projectPullRequests","aria-label":"Open pull requests",children:[s.jsxs("div",{className:"pi-projectPullRequestsHead",children:[s.jsx("span",{children:"Open PRs"}),s.jsx("b",{children:t&&e.length===0?"…":w(e.length)})]}),e.length>0?s.jsx("div",{className:"pi-projectPullRequestList",children:e.slice(0,6).map(r=>{const a=r.updatedAt?Date.parse(r.updatedAt):Number.NaN;return s.jsxs("a",{className:"pi-projectPullRequest",href:r.url,target:"_blank",rel:"noreferrer",children:[s.jsxs("span",{className:"pi-projectPullRequestNumber",children:["#",r.number]}),s.jsx("b",{title:r.title,children:r.title}),s.jsxs("span",{className:"pi-projectPullRequestBranch",title:`${r.headRefName} → ${r.baseRefName}`,children:[r.headRefName," → ",r.baseRefName]}),s.jsx("em",{children:r.isDraft?"draft":"open"}),s.jsx("time",{children:Number.isFinite(a)?_(a,o):"updated"})]},r.id)})}):s.jsxs("div",{className:"pi-projectPullRequestState","data-loading":t||void 0,children:[s.jsx("span",{children:t?"Checking GitHub for open pull requests…":i[0]??"No open pull requests for this repository."}),!t&&i.length>0?s.jsx("button",{type:"button",onClick:n,children:"Retry"}):null]})]})}function st(e){const t=new Set;let i=0,n=0;const o=[];for(const r of e.layers){r.files.length>0&&o.push(r.kind);for(const a of r.files)t.add(a.newPath??a.oldPath??"unknown"),i+=a.additions??0,n+=a.deletions??0}return{additions:i,deletions:n,files:[...t],layers:o}}function tt({additions:e,deletions:t}){return e+t===0?s.jsx("span",{className:"pi-projectWorktreeChurnBar","data-empty":!0}):s.jsxs("span",{className:"pi-projectWorktreeChurnBar","aria-label":`${e} additions and ${t} deletions`,children:[e>0?s.jsx("i",{"data-add":!0,style:{flexGrow:e}}):null,t>0?s.jsx("i",{"data-delete":!0,style:{flexGrow:t}}):null]})}function nt({project:e,repoProject:t,repoLoading:i,repoError:n,diffSnapshots:o,diffErrors:r,diffLoading:a,pullRequests:u,pullRequestsLoading:c,pullRequestWarnings:j,onRepositoryRefresh:v,threads:g,sessions:C,route:N,navigate:L,nowMs:R}){const y=e?.root??C[0]?.projectRoot??g[0]?.projectRoot??null,M=g.length,F=e?.sessionCount??C.length,I=e?.agentCount??0,D=Math.max(e?.lastActivityAt??0,C[0]?.lastActivityAt??0,g[0]?.lastActivityAt??0),k=e?.branches.length?e.branches:[...new Set([...C.map(l=>l.branch),...g.map(l=>l.branch)].filter(l=>!!l&&l!=="—"&&l!=="main"))],S=t?.worktrees.length?Qs(t):Se(y,e?.worktrees??[],C,g),B=S.find(l=>l.moving>0&&l.branch)?.branch??S.find(l=>l.branch)?.branch??k[0]??"main",f=y?Z(y):e?.title??N.projectSlug??"project",x=S.find(l=>l.moving>0)?.key??S.find(l=>l.branch===B)?.key??S[0]?.key;return s.jsxs("main",{className:"pi-projectOverview","aria-label":"Project overview",children:[s.jsxs("section",{className:"pi-projectSnapshot","aria-label":"Project snapshot",children:[s.jsxs("div",{className:"pi-projectRepository",children:[s.jsxs("div",{className:"pi-projectRepositoryHead",children:[s.jsx("span",{children:"Repository"}),s.jsx(rs,{size:13,strokeWidth:1.7,"aria-hidden":!0})]}),s.jsxs("div",{className:"pi-projectRepositoryIdentity",children:[s.jsx("b",{children:f}),s.jsx("span",{title:y??void 0,children:y?V(y):N.projectSlug??"project"})]}),s.jsxs("div",{className:"pi-projectRepositoryCurrent",children:[S.some(l=>l.moving>0)?s.jsx("span",{className:"pi-projectRepositoryPulse","aria-label":"Active now"}):null,s.jsxs("span",{children:[s.jsx("small",{children:"Current branch"}),s.jsx("b",{title:B,children:B})]}),s.jsx("time",{children:D?_(D,R):"no activity"})]}),F>0||I>0||M>0?s.jsxs("div",{className:"pi-projectRepositoryStats","aria-label":"Repository activity",children:[F>0?s.jsxs("span",{children:[s.jsx("b",{children:w(F)})," sessions"]}):null,I>0?s.jsxs("span",{children:[s.jsx("b",{children:w(I)})," agents"]}):null,M>0?s.jsxs("span",{children:[s.jsx("b",{children:w(M)})," threads"]}):null]}):null]}),s.jsxs("div",{className:"pi-projectWorktrees",children:[s.jsxs("div",{className:"pi-projectWorktreesHead",children:[s.jsx("span",{children:"Worktree preview"}),s.jsx("b",{children:w(S.length)})]}),s.jsx("div",{className:"pi-projectWorktreeList",children:S.slice(0,6).map(l=>{const h=l.repoWatch,$=l.root?o.get(l.root)??null:null,d=$?st($):null,b=h?Ie(h):null,T=d?.additions??b?.add??0,W=d?.deletions??b?.del??0,p=d?.files.length??(h?Math.max(h.status.changedFiles,b?.files??0):0),P=!!(p>0||h&&(!h.status.clean||h.branch.ahead>0||h.branch.behind>0)),O=u.filter(A=>A.headRefName===l.branch),E=!!(l.root&&a&&!$&&!r.has(l.root)),z=l.root?r.get(l.root)??null:"No worktree path is available.";return s.jsxs("article",{className:"pi-projectWorktree","data-active":l.key===x||void 0,"data-stranded":P||void 0,children:[s.jsx("span",{className:"pi-projectWorktreeTop",children:s.jsx("b",{title:l.branch??"main",children:l.branch??"main"})}),s.jsx("em",{title:l.root??void 0,children:l.root?V(l.root):"workspace"}),$||h?s.jsxs("div",{className:"pi-projectWorktreeDiff","data-clean":!P||void 0,children:[P?s.jsxs(s.Fragment,{children:[s.jsxs("span",{className:"pi-projectWorktreeChurn",children:[s.jsxs("b",{className:"pi-projectWorktreeAdd",children:["+",w(T)]}),s.jsxs("b",{className:"pi-projectWorktreeDel",children:["−",w(W)]}),s.jsx(tt,{additions:T,deletions:W})]}),s.jsxs("small",{children:[w(p)," changed"]})]}):s.jsx("small",{children:"clean"}),l.root?s.jsx("button",{type:"button",className:"pi-projectWorktreeOpenDiff",onClick:()=>L({view:"repo-diff",path:l.root}),children:"View diff"}):null]}):s.jsxs("div",{className:"pi-projectWorktreeDiff","data-pending":!0,children:[s.jsx("small",{children:E||i?"Reading worktree diff…":z??n??"No diff data returned."}),!E&&!i?s.jsx("button",{type:"button",className:"pi-projectWorktreeOpenDiff",onClick:v,children:"Retry"}):null]}),d&&d.files.length>0?s.jsxs("span",{className:"pi-projectWorktreeFiles",title:d.files.join(`
2
+ `),children:[d.files.slice(0,2).map(A=>Z(A)).join(" · "),d.files.length>2?` · +${d.files.length-2} more`:""]}):null,s.jsx("span",{className:"pi-projectWorktreeMeta",children:h?s.jsxs(s.Fragment,{children:[s.jsx("small",{children:h.branch.ahead>0||h.branch.behind>0?`${h.branch.ahead}↑ ${h.branch.behind}↓`:"synced"}),h.status.staged>0?s.jsxs("small",{children:[w(h.status.staged)," staged"]}):null,h.status.unstaged>0?s.jsxs("small",{children:[w(h.status.unstaged)," unstaged"]}):null,h.status.untracked>0?s.jsxs("small",{children:[w(h.status.untracked)," untracked"]}):null,h.status.conflicts>0?s.jsxs("small",{children:[w(h.status.conflicts)," conflicts"]}):null,d?.layers.map(A=>s.jsx("small",{children:A},A)),O.length>0?s.jsxs("small",{children:[O.length," PR",O.length===1?"":"s"]}):null]}):s.jsxs(s.Fragment,{children:[s.jsx("small",{children:l.lastActivityAt?_(l.lastActivityAt,R):"idle"}),s.jsxs("small",{children:[w(l.sessions)," sessions"]}),s.jsxs("small",{children:[w(l.work)," threads"]})]})})]},l.key)})}),S.length>6?s.jsxs("div",{className:"pi-projectWorktreeMore",children:["+",S.length-6," more worktrees"]}):null]})]}),s.jsx(et,{pullRequests:u,loading:c,warnings:j,onRefresh:v,nowMs:R})]})}function it({project:e,threads:t,sessions:i,route:n,navigate:o,nowMs:r}){const a=e?.root??i[0]?.projectRoot??t[0]?.projectRoot??null,u=m.useMemo(()=>Se(a,e?.worktrees??[],i,t).map(j=>j.root).filter(j=>!!j),[e?.worktrees,a,i,t]),c=ws(a,u);return s.jsx(nt,{project:e,repoProject:c.project,repoLoading:c.repoLoading,repoError:c.repoError,diffSnapshots:c.diffSnapshots,diffErrors:c.diffErrors,diffLoading:c.diffLoading,pullRequests:c.pullRequests,pullRequestsLoading:c.pullRequestsLoading,pullRequestWarnings:c.pullRequestWarnings,onRepositoryRefresh:c.refresh,threads:t,sessions:i,route:n,navigate:o,nowMs:r})}function Zn({route:e,navigate:t,zeroPreview:i=!1}){const{model:n,nowMs:o,loading:r,error:a,agents:u=Ns}=_e(e),c=!!e.projectSlug,j=c&&!je(e.sessionId)?e.sessionId??null:null,v=m.useMemo(()=>j?Fs(n.sessions,e):null,[n.sessions,e,j]),g=c?e.indexView==="agents"?"agents":e.indexView==="sessions"?"sessions":"overview":"overview",C=c?n.projects.find(f=>f.slug===e.projectSlug)??null:null,N=m.useMemo(()=>{if(i)return[];if(!c)return[];const f=e.projectSlug,x=Q(n.threads,f),l=oe(n.sessions,f);return g==="overview"?[]:g==="agents"?x.filter(h=>h.kind==="agent"):l.length>0?l:x},[n.sessions,n.threads,g,e.projectSlug,c,i]),L=m.useMemo(()=>Ve(N),[N]),R=m.useMemo(()=>L.flatMap(f=>f.items),[L]),y=n.projects.length>0||n.threads.length>0||n.sessions.length>0,M=r&&!y,F=r&&!i,I=!c&&!F&&(i||n.projects.length===0&&N.length===0),D=!c&&!I,[k,S]=m.useState(-1),B=m.useRef(new Map);return m.useEffect(()=>{!c||!e.sessionId||!je(e.sessionId)||t({...e,indexView:"sessions",sessionId:void 0,selectedAgentId:void 0})},[t,e,c]),m.useEffect(()=>{S(-1)},[e.projectSlug]),m.useEffect(()=>{function f(x){const l=document.activeElement;if(!!l&&(l.tagName==="INPUT"||l.tagName==="TEXTAREA"||l.isContentEditable))return;const $=R.length;if($){if(x.key==="ArrowDown"||x.key==="j")x.preventDefault(),S(d=>d<0?0:Math.min($-1,d+1));else if(x.key==="ArrowUp"||x.key==="k")x.preventDefault(),S(d=>d<0?0:Math.max(0,d-1));else if(x.key==="Enter"){const d=R[k<0?0:k];d&&(x.preventDefault(),t(d.kind==="session"?re(d,e):le(d,e)))}}}return document.addEventListener("keydown",f),()=>document.removeEventListener("keydown",f)},[k,R,t,e]),m.useEffect(()=>{if(k<0)return;const f=R[k];f&&B.current.get(f.id)?.scrollIntoView({block:"nearest"})},[k,R]),s.jsxs("div",{className:"s-pi s-pi-inbox","aria-busy":r||void 0,"data-loading":r||void 0,children:[c?s.jsx(Cs,{route:e,navigate:t,slug:e.projectSlug,model:n,mode:g,repoProject:null}):s.jsx("div",{className:"pi-inboxHead",children:s.jsxs("div",{className:"pi-inboxHeading",children:[s.jsx("h1",{className:"pi-inboxTitle",children:"Projects"}),s.jsx("span",{className:"pi-inboxDigest",children:Rs(n,i)})]})}),j?s.jsx(Os,{session:v,sessionRef:j,threads:Q(n.threads,e.projectSlug),route:e,navigate:t,nowMs:o}):c&&g==="overview"?s.jsx(it,{project:C,threads:Q(n.threads,e.projectSlug),sessions:oe(n.sessions,e.projectSlug),route:e,navigate:t,nowMs:o}):D?s.jsx(Ge,{model:n,agents:u,route:e,navigate:t,nowMs:o}):s.jsxs("div",{className:"pi-threads",children:[M?s.jsx(ys,{}):null,!M&&L.map(f=>{let x=0;for(const l of L){if(l.group===f.group)break;x+=l.items.length}return s.jsxs("div",{children:[s.jsxs("div",{className:"pi-sectionHead","data-tone":f.group,children:[s.jsx("span",{className:"pi-sectionLabel",children:f.label}),s.jsx("span",{className:"pi-sectionCount",children:f.items.length})]}),f.items.map((l,h)=>{const $=x+h;return s.jsx(Ss,{thread:l,crossProject:!c,selected:l.kind==="session"?Ue(l,e,n.sessions):Xe(l,e,n.threads),cursor:k===$,nowMs:o,onSelect:()=>{const d=l.kind==="session"?Ke(l,e):be(l,e);t(d)},onOpen:()=>t(l.kind==="session"?re(l,e):le(l,e)),rowRef:d=>{d?B.current.set(l.id,d):B.current.delete(l.id)}},l.id)})]},f.group)}),!M&&N.length===0?a&&!y?s.jsx(pe,{tone:"error",title:"Projects unavailable",detail:a}):I?s.jsx("div",{className:"pi-empty",children:s.jsx(Ts,{route:e,navigate:t,projects:n.projects})}):F?s.jsx("div",{className:"pi-empty",children:"Loading…"}):s.jsx(pe,{title:at(c,g)}):null]})]})}function at(e,t){return e&&t==="agents"?"No visible agents in this project.":e?"No sessions in this project yet.":"No projects yet."}export{Zn as ProjectsInbox,Ss as ThreadRow};
@@ -0,0 +1 @@
1
+ import{r as d,j as t}from"./index-CZ-05hKz.js";import{t as W}from"./time-Dhsh_2EG.js";import{p as me}from"./NewChatComposer-hlWT-nbR.js";import{F as Se,A as fe}from"./AddProjectForm-CcD6qvV8.js";import{s as xe}from"./project-overview-helpers-BQTc_Ous.js";import{u as ge,i as X,s as we,c as F,d as _,e as ve}from"./projects-inbox-D-zAb9Gp.js";import{S as Z}from"./search-D1tJSAWe.js";import{X as ye}from"./x-e3h2hDsp.js";import{C as re}from"./chevron-down-Mp9mu_yd.js";import{C as ae}from"./chevron-right-CzH-TaSF.js";import{F as le}from"./DocumentFocusViewer-DZVhS7as.js";import{c as Ne}from"./createLucideIcon-DXpqZP7I.js";import{A as Ae}from"./archive-BjcGiAy8.js";const Ce=[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]],Pe=Ne("pin",Ce),ee=4,be=4,ce="openscout.projects.pinnedSessions",de="openscout.projects.archivedSessions";function ke(e){return e.needs>0?"needs":e.working>0||e.liveSessionCount>0?"working":"idle"}function Le({rows:e=6}){return t.jsx("div",{className:"pi-railLoading","aria-hidden":"true",children:Array.from({length:e},(i,s)=>t.jsxs("div",{className:"pi-projectGroup pi-projectGroup--loading",children:[t.jsx("div",{className:"pi-projectGroupHead",children:t.jsxs("span",{className:"pi-projectPath",children:[t.jsx(le,{size:13,strokeWidth:1.6,"aria-hidden":!0}),t.jsx("span",{className:"pi-loadingLine pi-loadingLine--railProject"})]})}),t.jsxs("div",{className:"pi-projectSessionList",children:[t.jsx("span",{className:"pi-loadingLine pi-loadingLine--railSession"}),t.jsx("span",{className:"pi-loadingLine pi-loadingLine--railSession"})]})]},s))})}function Re({route:e,navigate:i,zeroPreview:s=!1}){const{model:o,nowMs:a,loading:r,error:c}=ge(e),[p,y]=d.useState(""),[S,m]=d.useState("recent"),[f,N]=d.useState(!1),[L,u]=d.useState(()=>new Set),[b,A]=d.useState(()=>new Set),[x,R]=d.useState(()=>$e()),[g,he]=d.useState(()=>Fe()),[V,B]=d.useState(!1),w=e.machineId,P=e.showEphemeral,je=r&&o.projects.length===0&&o.sessions.length===0,j=d.useMemo(()=>s?[]:o.sessions.filter(n=>!g.has(C(n))),[o.sessions,g,s]),J=d.useMemo(()=>s?[]:Ie(o.projects,j),[o.projects,j,s]),E=d.useMemo(()=>pe(J,p,S),[J,p,S]),q=p.trim().length>0,K=q?E:E.filter(n=>!X(n.project,a)),T=q?[]:E.filter(n=>X(n.project,a)),U=d.useMemo(()=>s?[]:z(j.filter(n=>x.has(C(n))&&D(n,p))),[j,x,p,s]),Y=d.useMemo(()=>s?[]:ue(j,p),[j,p,s]),Q=d.useCallback(n=>{u(l=>ne(l,n)),i({view:"agents-v2",projectSlug:n,...w?{machineId:w}:{},...P?{showEphemeral:!0}:{}})},[w,i,P]),I=d.useCallback(n=>{u(l=>ne(l,n.projectSlug)),i(we(n,{projectSlug:n.projectSlug,...w?{machineId:w}:{},...P?{showEphemeral:!0}:{}}))},[w,i,P]),M=d.useCallback(n=>{const l=C(n);R(v=>{const h=new Set(v);return h.has(l)?h.delete(l):h.add(l),oe(h),h})},[]),O=d.useCallback(n=>{const l=C(n);he(v=>{if(v.has(l))return v;const h=new Set(v);return h.add(l),_e(h),h}),R(v=>{if(!v.has(l))return v;const h=new Set(v);return h.delete(l),oe(h),h}),F(n,e,j)&&i({view:"agents-v2",projectSlug:n.projectSlug,indexView:"sessions",...w?{machineId:w}:{},...P?{showEphemeral:!0}:{}})},[w,i,j,e,P]);return t.jsxs("nav",{className:"s-pi s-pi-rail","aria-label":"Projects","aria-busy":r||void 0,"data-loading":r||void 0,children:[t.jsxs("div",{className:"pi-railFind",role:"search",children:[t.jsx(Z,{size:13,strokeWidth:1.8,"aria-hidden":!0}),t.jsx("input",{className:"pi-railFindInput",type:"search",value:p,placeholder:"Find project or session","aria-label":"Find project or session",onChange:n=>y(n.currentTarget.value)}),p?t.jsx("button",{type:"button",className:"pi-railFindClear","aria-label":"Clear",onClick:()=>y(""),children:t.jsx(ye,{size:12,strokeWidth:2,"aria-hidden":!0})}):null]}),t.jsx("div",{className:"pi-railBody",children:t.jsxs("div",{className:"pi-railGroup pi-railGroup--projects",children:[t.jsxs("div",{className:"pi-railProjectTools",children:[t.jsx("div",{className:"pi-railLabel",children:"Projects"}),t.jsxs("label",{className:"pi-railSortWrap",title:"Sort projects",children:[t.jsx("span",{className:"pi-srOnly",children:"Sort projects"}),t.jsxs("select",{className:"pi-railSort",value:S,"aria-label":"Sort projects",onChange:n=>m(n.currentTarget.value),children:[t.jsx("option",{value:"recent",children:"Recent"}),t.jsx("option",{value:"name",children:"Name"}),t.jsx("option",{value:"sessions",children:"Sessions"})]}),t.jsx(re,{size:12,strokeWidth:2,"aria-hidden":!0})]}),t.jsx("button",{type:"button",className:"pi-railAddBtn","aria-expanded":V,"aria-label":"Add project",title:"Add a project by path",onClick:()=>B(n=>!n),children:t.jsx(Se,{size:13,strokeWidth:1.8,"aria-hidden":!0})})]}),V?t.jsx(fe,{onClose:()=>B(!1)}):null,je?t.jsx(Le,{}):c&&E.length===0?t.jsx("div",{className:"pi-railEmpty",children:"Projects unavailable."}):t.jsxs(t.Fragment,{children:[U.length>0?t.jsxs("div",{className:"pi-pinnedSessions",children:[t.jsx("div",{className:"pi-pinnedLabel",children:"Pinned"}),t.jsx("div",{className:"pi-projectSessionList",children:U.map(n=>t.jsx(G,{session:n,pinned:!0,selected:F(n,e,j),showProject:!0,nowMs:a,onOpenSession:I,onTogglePinnedSession:M,onArchiveSession:O},`pinned:${n.id}`))})]}):null,Y.length>0?t.jsxs("div",{className:"pi-recentReplies","aria-label":"Latest harness replies",children:[t.jsx("div",{className:"pi-pinnedLabel",children:"Latest replies"}),t.jsx("div",{className:"pi-projectSessionList",children:Y.map(n=>t.jsx(G,{session:n,pinned:x.has(C(n)),selected:F(n,e,j),showProject:!0,nowMs:a,onOpenSession:I,onTogglePinnedSession:M,onArchiveSession:O},`reply:${n.id}`))})]}):null,K.map(n=>t.jsx(te,{group:n,selected:e.projectSlug===n.project.slug,collapsed:L.has(n.project.slug),expanded:b.has(n.project.slug),pinnedSessions:x,allSessions:j,nowMs:a,route:e,onOpenProject:Q,onOpenSession:I,onToggleCollapsed:()=>u(l=>$(l,n.project.slug)),onToggleExpanded:()=>A(l=>$(l,n.project.slug)),onTogglePinnedSession:M,onArchiveSession:O},n.project.slug)),K.length===0&&T.length===0?t.jsx("div",{className:"pi-railEmpty",children:p?"No projects matched.":"No projects yet."}):null,T.length>0?t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",className:"pi-railDisclosure","data-open":f||void 0,onClick:()=>N(n=>!n),children:[t.jsx(ae,{className:"pi-railChev",size:12,strokeWidth:2,"aria-hidden":!0}),"All projects · ",T.length," quiet"]}),f?T.map(n=>t.jsx(te,{group:n,selected:e.projectSlug===n.project.slug,collapsed:L.has(n.project.slug),expanded:b.has(n.project.slug),pinnedSessions:x,allSessions:j,nowMs:a,route:e,onOpenProject:Q,onOpenSession:I,onToggleCollapsed:()=>u(l=>$(l,n.project.slug)),onToggleExpanded:()=>A(l=>$(l,n.project.slug)),onTogglePinnedSession:M,onArchiveSession:O},n.project.slug)):null]}):null]})]})}),t.jsx("div",{className:"pi-railFoot",children:t.jsxs("button",{type:"button",className:"pi-railFootBtn",onClick:()=>i({view:"search"}),children:[t.jsx(Z,{size:13,strokeWidth:1.8,"aria-hidden":!0}),"Search agents & sessions"]})})]})}function te({group:e,selected:i,collapsed:s,expanded:o,pinnedSessions:a,allSessions:r,nowMs:c,route:p,onOpenProject:y,onOpenSession:S,onToggleCollapsed:m,onToggleExpanded:f,onTogglePinnedSession:N,onArchiveSession:L}){const{project:u,sessions:b}=e,A=z(b.filter(g=>!a.has(C(g)))),x=s?[]:o?A:A.slice(0,ee),R=Math.max(0,A.length-x.length);return t.jsxs("div",{className:"pi-projectGroup","data-selected":i||void 0,"data-state":ke(u),"data-collapsed":s||void 0,children:[t.jsxs("div",{className:"pi-projectGroupHead",children:[t.jsxs("button",{type:"button",className:"pi-projectPath","aria-expanded":i?!s:void 0,title:Oe(u),"aria-current":i?"page":void 0,"aria-label":i?s?`Expand /${u.title}`:`Collapse /${u.title}`:`Open /${u.title}`,onClick:()=>{i?m():y(u.slug)},children:[t.jsx(le,{size:13,strokeWidth:1.6,"aria-hidden":!0}),t.jsxs("span",{className:"pi-projectPathText",children:["/",u.title]})]}),t.jsx("button",{type:"button",className:"pi-projectPathToggle","aria-expanded":!s,"aria-label":s?`Expand /${u.title}`:`Collapse /${u.title}`,onClick:m,children:s?t.jsx(ae,{size:12,strokeWidth:2}):t.jsx(re,{size:12,strokeWidth:2})})]}),!s&&x.length>0?t.jsx("div",{className:"pi-projectSessionList",children:x.map(g=>t.jsx(G,{session:g,pinned:a.has(C(g)),selected:F(g,p,r),showProject:!1,nowMs:c,onOpenSession:S,onTogglePinnedSession:N,onArchiveSession:L},g.id))}):!s&&b.length===0?t.jsx("div",{className:"pi-projectSessionEmpty",children:"No sessions yet"}):null,!s&&R>0?t.jsx("button",{type:"button",className:"pi-projectShowMore",onClick:f,children:"Show more"}):!s&&o&&A.length>ee?t.jsx("button",{type:"button",className:"pi-projectShowMore",onClick:f,children:"Show less"}):null]})}function Ee(e,i){return e.session===i.session&&e.pinned===i.pinned&&e.selected===i.selected&&e.showProject===i.showProject&&e.nowMs===i.nowMs&&e.onOpenSession===i.onOpenSession&&e.onTogglePinnedSession===i.onTogglePinnedSession&&e.onArchiveSession===i.onArchiveSession}function se(e){const i=e.getBoundingClientRect();return{left:Math.min(window.innerWidth-304-12,i.right+10),top:Math.max(12,Math.min(window.innerHeight-174-12,i.top-18))}}const G=d.memo(function({session:i,pinned:s,selected:o,showProject:a,nowMs:r,onOpenSession:c,onTogglePinnedSession:p,onArchiveSession:y}){const[S,m]=d.useState(null),f=k(i);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"pi-projectSession","data-active":i.working||void 0,"data-pinned":s||void 0,"data-selected":o||void 0,onMouseEnter:N=>m(se(N.currentTarget)),onMouseLeave:()=>m(null),onFocusCapture:N=>m(se(N.currentTarget)),onBlurCapture:()=>m(null),children:[t.jsxs("button",{type:"button",className:"pi-projectSessionMain","aria-label":a?`${f} /${i.projectTitle}`:f,onClick:()=>{m(null),c(i)},children:[t.jsx("span",{className:"pi-projectSessionTitle",children:f}),a?t.jsxs("span",{className:"pi-projectSessionProject",children:["/",i.projectTitle]}):null]}),t.jsx("button",{type:"button",className:"pi-sessionPin","data-pinned":s||void 0,"aria-pressed":s,"aria-label":s?"Unpin session":"Pin session",title:s?"Unpin session":"Pin session",onClick:()=>p(i),children:t.jsx(Pe,{size:11,strokeWidth:2,"aria-hidden":!0})}),t.jsx("button",{type:"button",className:"pi-sessionArchive","aria-label":"Archive session",title:"Archive session",onClick:()=>y(i),children:t.jsx(Ae,{size:11,strokeWidth:2,"aria-hidden":!0})}),t.jsx("span",{className:"pi-projectSessionWhen",children:i.latestReplyAt?W(i.latestReplyAt,r):i.lastActivityAt?W(i.lastActivityAt,r):"-"})]}),S?t.jsx(Te,{session:i,left:S.left,top:S.top,nowMs:r}):null]})},Ee);function Te({session:e,left:i,top:s,nowMs:o}){const a=e.agentName||null,r=e.projectRoot?xe(e.projectRoot):`/${e.projectTitle}`,c=_(e);return t.jsxs("div",{className:"pi-sessionHoverCard",role:"tooltip",style:{left:i,top:s},children:[t.jsxs("div",{className:"pi-sessionHoverKicker",children:[t.jsxs("span",{children:["/",e.projectTitle]}),t.jsx("span",{children:e.lastActivityAt?W(e.lastActivityAt,o):"-"})]}),t.jsx("div",{className:"pi-sessionHoverTitle",children:k(e)}),t.jsxs("div",{className:"pi-sessionHoverContext",children:[e.working?"Live now":"Last touched"," in ",r]}),t.jsxs("div",{className:"pi-sessionHoverFacts",children:[t.jsx("span",{children:e.harness}),t.jsx("span",{children:e.working?"active":"recent"}),e.branch?t.jsx("span",{children:e.branch}):null,a?t.jsx("span",{children:a}):null]}),t.jsx("div",{className:"pi-sessionHoverRef",children:c??"No session archive yet"})]})}function Ie(e,i){return e.map(s=>{const o=ve(i,s.slug);return{project:s,sessions:z(o),lastActivityAt:o[0]?.lastActivityAt??s.lastActivityAt}})}function pe(e,i,s){const o=i.trim().toLowerCase();return[...o?e.flatMap(r=>{const c=r.project.title.toLowerCase().includes(o)||r.project.slug.toLowerCase().includes(o),p=r.sessions.filter(y=>D(y,o));return!c&&p.length===0?[]:[{...r,sessions:c?r.sessions:p}]}):e].sort((r,c)=>{switch(s){case"name":return r.project.title.localeCompare(c.project.title);case"sessions":return c.project.sessionCount-r.project.sessionCount||c.lastActivityAt-r.lastActivityAt||r.project.title.localeCompare(c.project.title);default:return c.project.liveSessionCount-r.project.liveSessionCount||c.lastActivityAt-r.lastActivityAt||c.project.sessionCount-r.project.sessionCount||r.project.title.localeCompare(c.project.title)}})}function z(e){return[...e].sort((i,s)=>(s.latestReplyAt??s.lastActivityAt)-(i.latestReplyAt??i.lastActivityAt)||Number(s.working)-Number(i.working)||ie(s)-ie(i)||k(i).localeCompare(k(s)))}function ie(e){return _(e)?2:e.agentId?1:0}function D(e,i){const s=i.trim().toLowerCase();return s?e.projectTitle.toLowerCase().includes(s)||e.projectSlug.toLowerCase().includes(s)||k(e).toLowerCase().includes(s)||e.work.toLowerCase().includes(s)||e.id.toLowerCase().includes(s)||(e.sessionId?.toLowerCase().includes(s)??!1)||(_(e)?.toLowerCase().includes(s)??!1)||e.agentName.toLowerCase().includes(s)||e.harness.toLowerCase().includes(s)||(e.branch?.toLowerCase().includes(s)??!1):!0}function ue(e,i){return[...e].filter(s=>s.latestReplyAt!==null&&D(s,i)).sort((s,o)=>(o.latestReplyAt??0)-(s.latestReplyAt??0)).slice(0,be)}function C(e){return _(e)??e.id}function k(e){if(e.latestReplyPreview){const o=e.latestReplyPreview.replace(/\s+/gu," ").trim(),a=o.length>42?`${o.slice(0,39).trim()}...`:o;return`${H(e.harness)} replied · ${a}`}const i=e.work||e.sessionId||e.id,s=i.includes("/")?me(i):i;return Me(s,e.harness)}function Me(e,i){const s=e.replace(/\.jsonl$/iu,""),o=s.match(/^rollout-(\d{4})-(\d{2})-(\d{2})T(\d{2})-(\d{2})/u);if(o)return`${H(i)} rollout ${o[4]}:${o[5]}`;const a=s.match(/^([0-9a-f]{8})-[0-9a-f-]{27,}$/iu);return a?`${H(i)} session ${a[1]}`:s.length>42?`${s.slice(0,39).trim()}...`:s}function Oe(e){return`/${e.title}`}function H(e){const i=e.trim();return i?i.charAt(0).toUpperCase()+i.slice(1).toLowerCase():"Session"}function $(e,i){const s=new Set(e);return s.has(i)?s.delete(i):s.add(i),s}function ne(e,i){if(!e.has(i))return e;const s=new Set(e);return s.delete(i),s}function $e(){if(typeof window>"u")return new Set;try{const e=window.localStorage.getItem(ce),i=e?JSON.parse(e):[];return new Set(Array.isArray(i)?i.filter(s=>typeof s=="string"):[])}catch{return new Set}}function oe(e){if(!(typeof window>"u"))try{window.localStorage.setItem(ce,JSON.stringify([...e]))}catch{}}function Fe(){if(typeof window>"u")return new Set;try{const e=window.localStorage.getItem(de),i=e?JSON.parse(e):[];return new Set(Array.isArray(i)?i.filter(s=>typeof s=="string"):[])}catch{return new Set}}function _e(e){if(!(typeof window>"u"))try{window.localStorage.setItem(de,JSON.stringify([...e]))}catch{}}const Xe=Object.freeze(Object.defineProperty({__proto__:null,ProjectsRail:Re,filterAndSortProjectGroups:pe,recentReplySessionsForRail:ue},Symbol.toStringTag,{value:"Module"}));export{Re as P,Pe as a,Xe as b};
@@ -0,0 +1 @@
1
+ import{j as i}from"./index-CZ-05hKz.js";import{u as e}from"./Provider-B2xuo3rf.js";import{d as s}from"./types-B0PlfpKc.js";import{ProjectsInbox as c}from"./ProjectsInbox-Dlt8OQ8O.js";import{P as a}from"./ProjectsRail-DCfNMmnW.js";import{ProjectAgentProfile as n}from"./ProjectAgentProfile-BLlp2e6t.js";import{i as l}from"./model-IGCUEsMy.js";/* empty css */import"./projects-inbox-D-zAb9Gp.js";import"./router-DJj2WbDg.js";import"./perf-PX8Rx0EP.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-BQ6t92tJ.js";import"./api-Co9aQ2Jw.js";import"./sse-CiOSzE5n.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BJIamJOH.js";import"./DocumentFocusViewer-DZVhS7as.js";import"./createLucideIcon-DXpqZP7I.js";import"./TextDocumentSurface-CKQP-cBT.js";import"./file-text-KijGBnME.js";import"./x-e3h2hDsp.js";import"./chevron-right-CzH-TaSF.js";import"./code-xml-Jtxsp5d1.js";import"./arrow-left-CghA0kTw.js";import"./arrow-right-iJFv3jNh.js";import"./scout-voice-BhPzrc6P.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-DFhAJkW3.js";import"./NewChatComposer-hlWT-nbR.js";import"./text-CnZ0e1-V.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-BiohlpM3.js";import"./conversation-model-CwF6Y9gx.js";import"./time-Dhsh_2EG.js";import"./index-BVlMw8x_.js";import"./HarnessMark-D5CA5uSp.js";import"./NewChatOrigin-DdpzE4kz.js";import"./chevron-down-Mp9mu_yd.js";import"./search-D1tJSAWe.js";import"./chunk-HRAB3GC3-swV8PA2k.js";import"./AgentAvatar-CYhf6twS.js";import"./SpriteAvatar-Bs68ZENy.js";import"./CrewAvatar-CTIuxp4G.js";import"./ui-LM8pS8qE.js";import"./openContent-C6XO6kr5.js";import"./SessionRefScreen-B_cTv47v.js";import"./tail-events-BMQmSx1n.js";import"./BackToPicker-4JaeRvDm.js";import"./ConversationScreen-BNULZAp2.js";import"./ConversationComposer-2HjbGPL9.js";import"./zap-nMcjPoWB.js";import"./message-markup-RkfmDfME.js";import"./mentions-CcPFMbmZ.js";import"./AgentDetailCard-UqPNpcvB.js";import"./AgentLiveActions-BwuzOE8h.js";import"./terminal-takeover-DANQfTcy.js";import"./eye-CpfyvdLq.js";import"./terminal-yN9xN-h9.js";import"./message-visibility-DwxgcgYK.js";import"./operator-attention-RqieiSY8.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";/* empty css */import"./ConversationHeader-C8vfXaTF.js";import"./AstronautSuit-Ckx7lu7G.js";import"./ConversationFeedRows-C6wUqJrx.js";import"./ConversationPanels-CNCIbpqU.js";import"./tail-display-DcliDVkW.js";import"./lane-edit-display-C_Aujldz.js";import"./use-reduced-motion-CKkhq9c5.js";import"./proxy-DnLpZIi9.js";import"./activity-Bj3Hnbj3.js";import"./message-circle-B2ddzBrX.js";import"./ConversationStatus-DZuyKsWN.js";import"./check-C18YQC90.js";import"./sparkles-Dy8p5xN8.js";import"./SessionObserve-Dsd0j05N.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-D_DMlBeT.js";import"./lane-observe-vfyACHi0.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-CdGUXxGR.js";import"./ObserveTextFlow-BSEtYTxU.js";import"./SessionObserveEvidence-DopQYDkD.js";import"./wrench-YcXMlsh2.js";import"./external-link-Ckiyzjwo.js";/* empty css */import"./CrewWorkspaces-CkPYIA46.js";import"./project-overview-helpers-BQTc_Ous.js";import"./AddProjectForm-CcD6qvV8.js";import"./agent-specialization-BIPIBW8u.js";import"./cpu-BjVis9mc.js";import"./sliders-horizontal-BPSMHhbm.js";import"./message-square-D9YYWE0x.js";import"./api-HFH8wFyb.js";import"./cache-CeWH_KzJ.js";import"./arrow-up-right-CCfZXPqD.js";import"./archive-BjcGiAy8.js";import"./AgentsSubnav-CDMjKeYC.js";import"./SecondaryNav-o2RL9H8H.js";import"./secondaryNavConfig-B9IF8wXl.js";import"./compass-0_54-vz3.js";import"./settings-2fC_G9nX.js";import"./git-branch-BQ_x8KZL.js";import"./scroll-text-DO0GQzvN.js";import"./profile-rY8jO38P.js";import"./context-budget-DX_fwUs3.js";import"./session-catalog-DNaOEzoQ.js";import"./terminal-relay-9lhzEp2V.js";/* empty css */import"./AgentDefinitionsWorkspace-srmN6-vj.js";import"./FileViewerPane-DQlpNt2S.js";import"./agent-essentials-BOMHR0_U.js";/* empty css *//* empty css */import"./ProjectAgentProfileBar-BQET-qrY.js";import"./agents-project-model-UYiamtrU.js";function f({route:o,navigate:r}){const t=l(o),m=t?`profile:${o.agentId}`:"index",p=!t&&j();return i.jsx("div",{className:"s-av2","data-view":t?"profile":"index",children:i.jsx("div",{className:"av2-stagePane",children:t?i.jsx(n,{route:o,navigate:r}):i.jsx(c,{route:o,navigate:r,zeroPreview:p})},m)})}function Cr({navigate:o}){const{route:r}=e(),t=r.view==="agents-v2"?r:{view:"agents-v2"};return i.jsxs("div",{className:"pi-projectsEmbedShell",children:[i.jsx(a,{route:t,navigate:o}),i.jsx(f,{route:t,navigate:o})]})}const Ir=s({id:"projects",label:"Projects",route:{view:"agents-v2"},webPath:"/projects",screen:"ProjectsEmbedScreen",embed:{path:"/embed/projects",profile:"macos.projects",ownsInternalRoutes:!0,rootClassName:"s-projects-embed",chrome:{showSecondaryNav:!1,showPageStatusBar:!1},hosts:{macos:!0}}});function j(){if(typeof window>"u")return!1;const o=window.location.hostname.toLowerCase();if(o!=="localhost"&&o!=="127.0.0.1"&&o!=="::1")return!1;const r=new URLSearchParams(window.location.search).get("zero")?.trim().toLowerCase();return r==="projects"||r==="project"||r==="1"||r==="true"}export{Cr as ProjectsEmbedScreen,f as ProjectsScreen,Ir as scoutSurface};
@@ -0,0 +1 @@
1
+ import{j as s}from"./index-CZ-05hKz.js";import{A as R}from"./AgentAvatar-CYhf6twS.js";import{H as y}from"./HarnessMark-D5CA5uSp.js";import{t as O}from"./time-Dhsh_2EG.js";import{s as P}from"./project-overview-helpers-BQTc_Ous.js";import{u as H,t as T,a as B,s as C,f as L,b as z}from"./projects-inbox-D-zAb9Gp.js";import{A as b}from"./arrow-up-right-CCfZXPqD.js";import"./Provider-B2xuo3rf.js";import"./router-DJj2WbDg.js";import"./perf-PX8Rx0EP.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-BQ6t92tJ.js";import"./api-Co9aQ2Jw.js";import"./sse-CiOSzE5n.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BJIamJOH.js";import"./DocumentFocusViewer-DZVhS7as.js";import"./createLucideIcon-DXpqZP7I.js";import"./TextDocumentSurface-CKQP-cBT.js";import"./file-text-KijGBnME.js";import"./x-e3h2hDsp.js";import"./chevron-right-CzH-TaSF.js";import"./code-xml-Jtxsp5d1.js";import"./arrow-left-CghA0kTw.js";import"./arrow-right-iJFv3jNh.js";import"./scout-voice-BhPzrc6P.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-DFhAJkW3.js";import"./NewChatComposer-hlWT-nbR.js";import"./text-CnZ0e1-V.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-BiohlpM3.js";import"./conversation-model-CwF6Y9gx.js";import"./index-BVlMw8x_.js";import"./NewChatOrigin-DdpzE4kz.js";import"./chevron-down-Mp9mu_yd.js";import"./search-D1tJSAWe.js";import"./chunk-HRAB3GC3-swV8PA2k.js";import"./SpriteAvatar-Bs68ZENy.js";import"./CrewAvatar-CTIuxp4G.js";import"./tail-events-BMQmSx1n.js";import"./agents-project-model-UYiamtrU.js";import"./model-IGCUEsMy.js";function V(i,o,t){if(t.sessionId){const r=L(o,t);if(r)return{kind:"session",session:r};const a=z(i,t);if(a)return{kind:"thread",thread:a}}if(t.selectedAgentId){const r=i.find(l=>l.agentId===t.selectedAgentId)??null;if(r)return{kind:"thread",thread:r};const a=o.find(l=>!l.sessionId&&l.agentId===t.selectedAgentId)??null;if(a)return{kind:"session",session:a}}return null}function p({label:i,value:o}){return s.jsxs("span",{className:"pi-stat",children:[s.jsx("span",{className:"pi-statLabel",children:i}),s.jsx("span",{className:"pi-statValue",children:o})]})}function Os({route:i,navigate:o}){const{model:t,nowMs:r,loading:a,error:l}=H(i);if(!i.sessionId&&!i.selectedAgentId)return null;const d=V(t.threads,t.sessions,i);if(!d)return s.jsxs("div",{className:"s-pi s-pi-aside",children:[s.jsx("header",{className:"pi-asideHead",children:s.jsxs("div",{className:"pi-asideIdent",children:[s.jsx("div",{className:"pi-asideTop",children:s.jsx("span",{className:"pi-asideName",children:a?"Resolving selection":l?"Project data unavailable":"Selection unavailable"})}),s.jsx("div",{className:"pi-asideSub",children:s.jsxs("span",{className:"pi-asideStatus","data-tone":a?"working":"recent",children:[a?s.jsx("span",{className:"pi-asidePulse","aria-hidden":!0}):null,a?"loading":"idle"]})})]})}),s.jsx("div",{className:"pi-asideBody",children:s.jsx("p",{className:"pi-asideMuted",children:l??"The selected item is not in the current project snapshot."})})]});const n=d.kind==="thread"?d.thread:null,e=d.kind==="session"?d.session:null,m=n?.agentName??e?.agentName??"Session",h=n?.harness??e?.harness??"session",g=n?.projectTitle??e?.projectTitle??i.projectSlug??"project",x=n?.branch??e?.branch??null,c=n?.working??e?.working??!1,f=n?.needs?"needs":c?"working":"recent",I=n?.needs?"your turn":c?"working":e?"selected":"idle",k=n?.work??e?.work??"No session detail available.",v=n?.lastActivityAt??e?.lastActivityAt??0,j=e?.sessionId??n?.sessionId??null,u=n?.projectRoot??e?.projectRoot??null,N=n?T(n,i):null,w=n?B(n,i):e?C(e,i):i,A=e?e.route?.view==="conversation"?"Open conversation":e.route?.view==="sessions"?"Open session":e.agentId?"Open agent":"Open project":n?.kind==="native"?"Open session":n?.conversationId?"Open conversation":"Open agent",S={view:"agents-v2",...i.projectSlug?{projectSlug:i.projectSlug}:{},...i.indexView?{indexView:i.indexView}:{},...i.machineId?{machineId:i.machineId}:{},...i.showEphemeral?{showEphemeral:!0}:{}};return s.jsxs("div",{className:"s-pi s-pi-aside",children:[s.jsxs("header",{className:"pi-asideHead",children:[s.jsx("span",{className:"pi-asideAvatar",children:s.jsx(R,{agent:{name:m,harness:h,state:c?"in_turn":null},placement:"row",size:38})}),s.jsxs("div",{className:"pi-asideIdent",children:[s.jsxs("div",{className:"pi-asideTop",children:[s.jsx("span",{className:"pi-asideName",title:m,children:m}),s.jsx("span",{className:"pi-asideHmark","aria-hidden":!0,children:s.jsx(y,{harness:h,size:13})}),s.jsxs("span",{className:"pi-asideProj",children:["/",g]})]}),s.jsxs("div",{className:"pi-asideSub",children:[x?s.jsx("span",{className:"pi-asideBranch",children:x}):null,s.jsxs("span",{className:"pi-asideStatus","data-tone":f,children:[c?s.jsx("span",{className:"pi-asidePulse","aria-hidden":!0}):null,I]})]})]})]}),s.jsxs("div",{className:"pi-asideBody",children:[s.jsx("h2",{className:"pi-asideHeadline",children:k}),s.jsxs("div",{className:"pi-asideReadouts",children:[s.jsx(p,{label:"Last active",value:v?O(v,r):"—"}),s.jsx(p,{label:e?"Session":"Conversations",value:e?"1":String(n?.sessionCount??0)}),s.jsx(p,{label:"Harness",value:h}),n?.contextPct!=null?s.jsx(p,{label:"Context",value:`${n.contextPct}%`}):null]}),e?s.jsxs("div",{className:"pi-asideSection",children:[s.jsx("div",{className:"pi-asideSectionHead",children:"Session context"}),s.jsxs("div",{className:"pi-asideLine",children:[j?s.jsxs("span",{title:j,children:["ref · ",j]}):s.jsx("span",{children:"No stable session reference yet."}),u?s.jsxs("span",{title:u,children:["root · ",P(u)]}):null,e.conversationId?s.jsxs("span",{title:e.conversationId,children:["conversation · ",e.conversationId]}):null]})]}):null,s.jsxs("div",{className:"pi-asideActions",children:[s.jsxs("button",{type:"button",className:"pi-asideBtn pi-asideBtnPrimary",onClick:()=>o(w),children:[A,s.jsx(b,{size:13,strokeWidth:2,"aria-hidden":!0})]}),N?s.jsxs("button",{type:"button",className:"pi-asideBtn",onClick:()=>o(N),children:["Observe",s.jsx(b,{size:13,strokeWidth:2,"aria-hidden":!0})]}):null,s.jsx("button",{type:"button",className:"pi-asideBtn",onClick:()=>o(S),children:"Clear"})]})]})]})}export{Os as ProjectsThreadAside};
@@ -0,0 +1 @@
1
+ import{r as o,j as a,a2 as _e,b as dt,y as ft,a3 as pt,a4 as ht,L as mt}from"./index-CZ-05hKz.js";import{h as $e,b as vt,au as gt}from"./router-DJj2WbDg.js";import{a as q}from"./api-Co9aQ2Jw.js";import{u as wt}from"./sse-CiOSzE5n.js";import{o as bt,i as je}from"./surface-activity-B1rgWB1i.js";import{i as yt}from"./colors-BtO5_zlx.js";import{e as Je,s as St,i as De,r as Ct,b as Et,f as kt}from"./scoutbot-BJIamJOH.js";import{F as xt,a as Tt,D as At}from"./DocumentFocusViewer-DZVhS7as.js";import{c as Ke,T as Ge}from"./TextDocumentSurface-CKQP-cBT.js";import{C as Rt}from"./chevron-right-CzH-TaSF.js";import{F as It}from"./file-text-KijGBnME.js";import{c as Nt}from"./createLucideIcon-DXpqZP7I.js";import{C as Lt}from"./code-xml-Jtxsp5d1.js";import{A as Ot}from"./arrow-left-CghA0kTw.js";import{A as _t}from"./arrow-right-iJFv3jNh.js";import{j as jt}from"./scout-voice-BhPzrc6P.js";import{i as Dt}from"./keyboard-nav-DFhAJkW3.js";import{J as Pt,N as Mt,l as ve,K as Pe,j as Me}from"./NewChatComposer-hlWT-nbR.js";import{u as Ft}from"./chunk-HRAB3GC3-swV8PA2k.js";const We={current:null,setMenu:null};function Tr(){return o.useCallback((e,t)=>{e.preventDefault(),e.stopPropagation(),We.setMenu?.({position:{x:e.clientX,y:e.clientY},items:t})},[])}function Bt({children:e}){const[t,n]=o.useState(null),r=o.useRef(null);We.setMenu=n;const s=o.useCallback(()=>{n(null)},[]);return o.useEffect(()=>{if(!t)return;const i=d=>{d.target instanceof Node&&r.current?.contains(d.target)||s()},c=d=>{d.key==="Escape"&&s()},p=()=>s(),u=d=>{d.defaultPrevented||s()};return window.addEventListener("mousedown",i,!0),window.addEventListener("keydown",c),window.addEventListener("wheel",p,!0),window.addEventListener("contextmenu",u),()=>{window.removeEventListener("mousedown",i,!0),window.removeEventListener("keydown",c),window.removeEventListener("wheel",p,!0),window.removeEventListener("contextmenu",u)}},[t,s]),o.useLayoutEffect(()=>{if(!t||!r.current)return;const i=r.current,c=i.getBoundingClientRect(),p=window.innerWidth,u=window.innerHeight;let d=t.position.x,f=t.position.y;d+c.width>p-8&&(d=p-c.width-8),f+c.height>u-8&&(f=u-c.height-8),d<8&&(d=8),f<8&&(f=8),i.style.left=`${d}px`,i.style.top=`${f}px`,i.style.visibility="visible"},[t]),a.jsxs(a.Fragment,{children:[e,t&&a.jsx("div",{ref:r,className:"s-context-menu",style:{left:t.position.x,top:t.position.y,visibility:"hidden"},role:"menu",onMouseDown:i=>i.stopPropagation(),children:t.items.map((i,c)=>i.kind==="separator"?a.jsx("div",{className:"s-context-menu-sep",role:"separator"},c):a.jsxs("button",{type:"button",className:"s-context-menu-item",role:"menuitem",onClick:()=>{i.onSelect(),s()},children:[a.jsx("span",{className:"s-context-menu-label",children:i.label}),i.shortcut&&a.jsx("span",{className:"s-context-menu-shortcut",children:i.shortcut})]},c))})]})}function Ut(e){const t=e instanceof Error?e.message:String(e);return qt(t)?"Scout server is unreachable":t}function Vt(e){return e==="Scout server is unreachable"}function qt(e){return/failed to fetch|fetch failed|networkerror|load failed|couldn'?t connect|could not connect|connection refused|econnrefused|server is unreachable/i.test(e)}const Se="openscout.operator.name",Ht=new Set(["operator","you","user","unknown","null","undefined"]);function ze(e){const t=e?.trim();return!t||t.length>64||Ht.has(t.toLowerCase())?null:t}function $t(){if(typeof window>"u")return null;try{return ze(window.localStorage.getItem(Se))}catch{return null}}function Jt(e){if(!(typeof window>"u"))try{const t=ze(e);t?window.localStorage.setItem(Se,t):window.localStorage.removeItem(Se)}catch{}}const Kt=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],Gt=Nt("chevron-up",Kt),Wt={id:"audio",canHandle:e=>e.kind==="file"&&e.mediaType.startsWith("audio/"),render:({resource:e})=>{const t=e;return a.jsx("div",{className:"s-file-preview-media-wrap",children:a.jsx("div",{className:"s-file-preview-audio-stage",children:a.jsx("audio",{className:"s-file-preview-audio",src:t.rawUrl,controls:!0})})})}},zt={id:"binary",canHandle:()=>!0,render:({resource:e})=>{const t=e;return a.jsxs("div",{className:"s-file-preview-callout",children:[a.jsxs("div",{className:"s-file-preview-callout-title",children:[t.previewReason," — open in OS"]}),a.jsxs("div",{className:"s-file-preview-callout-copy",children:["Scout can resolve this file, but it does not have an inline preview for ",t.mediaType," yet."]})]})}},Qt=new Set(["text/typescript","text/javascript","text/css","text/html","application/json","text/yaml","text/toml","text/x-shellscript","text/plain"]),Yt={id:"code",canHandle:e=>e.kind==="file"&&e.previewable&&Qt.has(e.mediaType),render:({resource:e})=>{const t=e,n=Ke({id:t.realPath,title:t.title,uri:t.realPath,mediaType:t.mediaType,value:t.content,filename:t.title,kind:"code",readOnly:!0});return a.jsx(Ge,{document:n,mode:"read",className:"s-doc-focus-document"})}},Xt={id:"directory",canHandle:e=>e.kind==="directory",render:({resource:e,openFilePreview:t})=>{const n=e,r=Zt(n.realPath,n.rootPath);return a.jsxs("div",{className:"s-file-preview-directory",children:[a.jsx("div",{className:"s-file-preview-breadcrumb","aria-label":"Directory breadcrumb",children:r.map((s,i)=>{const c=i===r.length-1;return a.jsxs("div",{className:"s-file-preview-breadcrumb-item",children:[i>0&&a.jsx(Rt,{size:12,"aria-hidden":"true"}),c?a.jsx("span",{className:"s-file-preview-breadcrumb-current",children:s.label}):a.jsx("button",{type:"button",className:"s-file-preview-breadcrumb-link",onClick:()=>t(s.path),children:s.label})]},s.path)})}),a.jsxs("div",{className:"s-file-preview-directory-list",role:"list",children:[n.entries.map(s=>a.jsxs("button",{type:"button",className:"s-file-preview-entry",onClick:()=>t(s.path),children:[a.jsx("span",{className:"s-file-preview-entry-icon","aria-hidden":"true",children:s.kind==="directory"?a.jsx(xt,{size:14}):a.jsx(It,{size:14})}),a.jsx("span",{className:"s-file-preview-entry-name",children:s.name}),a.jsx("span",{className:"s-file-preview-entry-kind",children:s.kind==="directory"?"dir":"file"})]},s.realPath)),n.entries.length===0&&a.jsx("div",{className:"s-file-preview-directory-empty",children:"This directory is empty."})]})]})}};function Zt(e,t){const n=t==="/"?"/":t.replace(/\/+$/u,""),r=e==="/"?"/":e.replace(/\/+$/u,""),s=n.split("/").filter(Boolean),i=r.split("/").filter(Boolean),c=[{label:s[s.length-1]??"/",path:n||"/"}];let p=n||"/";for(let u=s.length;u<i.length;u+=1){const d=i[u];d&&(p=p==="/"?`/${d}`:`${p}/${d}`,c.push({label:d,path:p}))}return c}const en={id:"html",canHandle:e=>e.kind==="file"&&e.previewable&&e.mediaType==="text/html",render:({resource:e})=>a.jsx("div",{className:"s-file-preview-html-wrap",children:a.jsx("iframe",{className:"s-file-preview-html-frame",src:e.kind==="file"?e.rawUrl:"",title:e.title,sandbox:"allow-forms allow-popups allow-popups-to-escape-sandbox allow-scripts",referrerPolicy:"no-referrer"})})},tn={id:"image",canHandle:e=>e.kind==="file"&&e.mediaType.startsWith("image/"),render:({resource:e})=>a.jsx("div",{className:"s-file-preview-image-wrap",children:a.jsx("div",{className:"s-file-preview-image-stage",children:a.jsx("img",{className:"s-file-preview-image",src:e.kind==="file"?e.rawUrl:"",alt:e.title})})})},nn={id:"markdown",canHandle:e=>e.kind==="file"&&e.previewable&&e.mediaType==="text/markdown",render:({resource:e})=>{const t=e,n=Ke({id:t.realPath,title:t.title,uri:t.realPath,mediaType:t.mediaType,value:t.content,filename:t.title,kind:"markdown",readOnly:!0});return a.jsx(Ge,{document:n,mode:"preview",className:"s-doc-focus-document"})}},rn={id:"video",canHandle:e=>e.kind==="file"&&e.mediaType.startsWith("video/"),render:({resource:e})=>{const t=e;return a.jsx("div",{className:"s-file-preview-media-wrap",children:a.jsx("div",{className:"s-file-preview-media-stage",children:a.jsx("video",{className:"s-file-preview-video",src:t.rawUrl,controls:!0})})})}},on=[Xt,nn,en,Yt,tn,rn,Wt,zt];function sn({path:e,onOpenPath:t,onOpenInCode:n,onClose:r}){const[s,i]=o.useState(null),[c,p]=o.useState(null),[u,d]=o.useState(!1),[f,P]=o.useState(null),D=o.useRef(null);o.useEffect(()=>{D.current=f},[f]),o.useEffect(()=>{if(!e){i(null),p(null),d(!1);return}let b=!1;return d(!0),p(null),i(null),q(`/api/file/preview?path=${encodeURIComponent(e)}`).then(y=>{b||(i(y),an(y,D.current,P))}).catch(y=>{b||p(y instanceof Error?y.message:"could not load file")}).finally(()=>{b||d(!1)}),()=>{b=!0}},[e]);const{currentIndex:M,prevPath:v,nextPath:h}=o.useMemo(()=>{if(!s||s.kind!=="file"||!f)return{currentIndex:-1,prevPath:null,nextPath:null};const b=f.files.findIndex(y=>y.realPath===s.realPath);return b<0?{currentIndex:-1,prevPath:null,nextPath:null}:{currentIndex:b,prevPath:b>0?f.files[b-1].path:null,nextPath:b<f.files.length-1?f.files[b+1].path:null}},[s,f]);if(o.useEffect(()=>{if(!e)return;const b=y=>{if(y.key==="Escape"){r();return}if(y.target instanceof HTMLElement){const g=y.target.tagName;if(g==="INPUT"||g==="TEXTAREA"||y.target.isContentEditable)return}y.metaKey||y.ctrlKey||y.altKey||(y.key==="ArrowLeft"&&v?(y.preventDefault(),t(v)):y.key==="ArrowRight"&&h?(y.preventDefault(),t(h)):y.key==="Backspace"&&f&&s?.kind==="file"&&(y.preventDefault(),t(f.dirPath)))};return window.addEventListener("keydown",b),()=>window.removeEventListener("keydown",b)},[e,r,t,v,h,f,s]),!e)return null;const w=()=>{q("/api/file/reveal",{method:"POST",body:JSON.stringify({path:s?.realPath??e})}).catch(b=>{p(b instanceof Error?b.message:"reveal failed")})},I=s?on.find(b=>b.canHandle(s))??null:null,O=!!(s&&s.kind==="file"&&f&&M>=0&&f.files.length>1),k=[];O&&f&&k.push({label:`Folder: ${f.dirTitle}`,icon:a.jsx(Gt,{size:12}),onClick:()=>t(f.dirPath),title:`Back to ${f.dirTitle} (Backspace)`}),k.push({label:"Open in Code",icon:a.jsx(Lt,{size:12}),onClick:()=>{s?.kind==="file"&&n(s.realPath,s.rootPath)},title:"Continue with this file in Scout’s Code browser",disabled:s?.kind!=="file"}),k.push({label:"Show in folder",icon:a.jsx(Tt,{size:12}),onClick:w,title:"Show this file in its operating system folder",hideLabel:!0});const j=s?ln(s):[];O&&j.unshift(`${M+1} / ${f.files.length}`);const R=s&&I?I.render({resource:s,openFilePreview:t}):null;return a.jsx(At,{open:!0,kind:cn(s),document:null,title:s?.title??e.split("/").pop()??"File",eyebrow:"File preview",subtitle:s?.realPath??e,meta:j,state:u?"Loading…":null,error:c,body:R?a.jsxs("div",{className:`s-file-preview-shell${O?" s-file-preview-shell-nav":""}`,children:[O&&a.jsx("button",{type:"button",className:"s-file-preview-side-nav s-file-preview-side-nav-left",onClick:()=>v&&t(v),disabled:!v,"aria-label":"Previous file",title:"Previous file (←)",children:a.jsx(Ot,{size:18,strokeWidth:1.8,"aria-hidden":"true"})}),a.jsx("div",{className:"s-file-preview-shell-body",children:R}),O&&a.jsx("button",{type:"button",className:"s-file-preview-side-nav s-file-preview-side-nav-right",onClick:()=>h&&t(h),disabled:!h,"aria-label":"Next file",title:"Next file (→)",children:a.jsx(_t,{size:18,strokeWidth:1.8,"aria-hidden":"true"})})]}):null,actions:k,onClose:r})}function an(e,t,n){if(e.kind==="directory"){const s=e.entries.filter(i=>i.kind==="file");n({dirPath:e.path,dirTitle:e.title,files:s});return}if(!t){n(null);return}t.files.some(s=>s.realPath===e.realPath)||n(null)}function cn(e){return!e||e.kind==="directory"||e.mediaType==="text/markdown"||e.mediaType==="text/plain"?"doc":"code"}function ln(e){return e.kind==="directory"?[`${e.entries.length} ${e.entries.length===1?"entry":"entries"}`]:[...e.previewable&&e.truncated?["truncated"]:[],un(e.sizeBytes),e.mediaType]}function un(e){return e<1024?`${e} B`:e<1024*1024?`${Math.round(e/1024)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}const Qe={activity:"idle",brief:{lastDeliveredAt:null},reminders:{dueCount:0,upcomingCount:0,due:[],next:null},voice:{available:null,setupBlocked:!1,replies:!1},error:null,session:{title:null,lastActivityAt:null},conversation:{messageCount:0,loading:!0}},Q=()=>{},Ye={focusScoutbot:Q,triggerBrief:Q,triggerAskState:Q,toggleVoiceReplies:Q,openScoutbotSettings:Q,startNewChat:Q,dismissReminder:Q,askReminderStatus:Q},Ee=o.createContext(null);function dn({children:e}){const[t,n]=o.useState(Qe),r=o.useRef(Ye),s=o.useCallback(u=>{n(d=>fn(d,u)?d:u)},[]),i=o.useCallback(u=>{r.current=u},[]),c=o.useMemo(()=>({focusScoutbot:()=>r.current.focusScoutbot(),triggerBrief:()=>r.current.triggerBrief(),triggerAskState:()=>r.current.triggerAskState(),toggleVoiceReplies:()=>r.current.toggleVoiceReplies(),openScoutbotSettings:()=>r.current.openScoutbotSettings(),startNewChat:()=>r.current.startNewChat(),dismissReminder:u=>r.current.dismissReminder(u),askReminderStatus:u=>r.current.askReminderStatus(u)}),[]),p=o.useMemo(()=>({state:t,actions:c,publishState:s,registerActions:i}),[t,c,s,i]);return a.jsx(Ee.Provider,{value:p,children:e})}function Ar(){const e=o.useContext(Ee);return e?{state:e.state,actions:e.actions}:{state:Qe,actions:Ye}}function Rr(){const e=o.useContext(Ee);return e?{publishState:e.publishState,registerActions:e.registerActions}:null}function fn(e,t){return e.activity===t.activity&&e.brief.lastDeliveredAt===t.brief.lastDeliveredAt&&e.reminders.dueCount===t.reminders.dueCount&&e.reminders.upcomingCount===t.reminders.upcomingCount&&pn(e.reminders.due,t.reminders.due)&&Xe(e.reminders.next,t.reminders.next)&&e.voice.available===t.voice.available&&e.voice.setupBlocked===t.voice.setupBlocked&&e.voice.replies===t.voice.replies&&e.error===t.error&&e.session.title===t.session.title&&e.session.lastActivityAt===t.session.lastActivityAt&&e.conversation.messageCount===t.conversation.messageCount&&e.conversation.loading===t.conversation.loading}function pn(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Xe(e[n],t[n]))return!1;return!0}function Xe(e,t){return e===t?!0:!e||!t?!1:e.id===t.id&&e.body===t.body&&e.status===t.status&&e.dueAt===t.dueAt}const hn="/api/voice/realtime/call",Ze="/api/voice/realtime/lease",et="/api/voice/realtime/settings",mn="x-openscout-realtime-voice-lease",tt="surface.realtime-voice",Ir="scout:realtime-voice-stop",Ce="scout:realtime-voice-settings",vn={noise_reduction:{type:"far_field"},turn_detection:{type:"server_vad",threshold:.6,prefix_padding_ms:300,silence_duration_ms:500,create_response:!0,interrupt_response:!0}},gn={noise_reduction:{type:"near_field"},turn_detection:{type:"server_vad",threshold:.5,prefix_padding_ms:300,silence_duration_ms:500,create_response:!0,interrupt_response:!0}},wn="/api/scoutbot/chat",nt="openscout.realtime-voice-settings";function rt(e){return q(et,{signal:e,cache:"no-store"})}function Nr(e){return q(et,{method:"PUT",body:JSON.stringify({enabled:e})})}function Lr(e){if(window.dispatchEvent(new CustomEvent(Ce,{detail:e})),!("BroadcastChannel"in window))return;const t=new BroadcastChannel(nt);t.postMessage(e),t.close()}function bn(e){const t=r=>{const s=r.detail;Fe(s)&&e(s)};window.addEventListener(Ce,t);const n="BroadcastChannel"in window?new BroadcastChannel(nt):null;return n&&(n.onmessage=r=>{Fe(r.data)&&e(r.data)}),()=>{window.removeEventListener(Ce,t),n?.close()}}function Fe(e){if(!e||typeof e!="object")return!1;const t=e;return typeof t.enabled=="boolean"&&typeof t.configuredEnabled=="boolean"&&(t.source==="settings"||t.source==="environment")&&typeof t.locked=="boolean"}const yn=25e3;async function Sn(e={}){if(ee(e.signal),!globalThis.RTCPeerConnection||!navigator.mediaDevices?.getUserMedia)throw new Error("This browser does not support realtime audio calls.");if(!(await rt(e.signal)).enabled)throw new Error("Live voice is off. Turn it on in Settings → Voice before starting a call.");ee(e.signal),e.onState?.("connecting");const n=new RTCPeerConnection,r=new Audio;r.autoplay=!0;let s=!1,i=null,c=null,p=null,u=0,d=0;const f=(h,w,I="voice")=>{d+=1,e.onTrace?.({id:`voice-${d}`,at:Date.now(),kind:I,label:h,...w?{detail:w}:{}})};let P=null;const D=()=>{if(P)return P;s=!0,e.signal?.removeEventListener("abort",v),p&&clearInterval(p),p=null,i?.getTracks().forEach(w=>w.stop()),r.pause(),r.srcObject=null,n.close();const h=c;return c=null,P=(async()=>{h&&await On(h),e.onState?.("ended")})(),P},M=()=>{D().catch(h=>{e.onError?.(h instanceof Error?h.message:"Could not release the realtime voice lease."),e.onState?.("error")})},v=()=>{M()};e.signal?.addEventListener("abort",v,{once:!0}),n.ontrack=({streams:h})=>{const w=h[0];if(!w||s)return;const[I]=w.getAudioTracks();I&&I.addEventListener("ended",()=>{s||e.onError?.("Realtime voice audio ended unexpectedly.")}),r.srcObject=w,r.play().catch(()=>{e.onError?.("Browser playback was blocked. Interact with the page, then start the call again.")})},n.onconnectionstatechange=()=>{s||(n.connectionState==="connected"?(e.onState?.("live"),f("Realtime channel connected","Scoutbot bridge is ready")):(n.connectionState==="failed"||n.connectionState==="disconnected")&&(e.onError?.("Realtime voice connection ended unexpectedly."),M()))};try{i=await Nn(e.inputDeviceName,e.signal),ee(e.signal);for(const x of i.getTracks())n.addTrack(x,i);const h=n.createDataChannel("oai-events"),w=new Set;let I=Promise.resolve(),O=!1,k=null;const j=[],R=x=>{if(s||h.readyState!=="open")return!1;try{return h.send(JSON.stringify(x)),!0}catch{return e.onError?.("Realtime voice events channel closed unexpectedly."),!1}},b=()=>{if(O||k||j.length===0)return;const x=j.shift();if(x){if(k=x,!R({type:"response.create",response:{instructions:x}})){k=null,j.unshift(x);return}O=!0}},y=x=>{j.push(x),b()};h.addEventListener("open",()=>{if(s)return;const x=In(e.inputDeviceName);if(!R({type:"session.update",session:{type:"realtime",audio:{input:x}}})){e.onError?.("Could not configure Scout's realtime microphone processing.");return}f("Scoutbot bridge ready","Live fleet context is available"),y("Open with one brief audible greeting: 'Hi, I’m Scoutbot. I can check the fleet and coordinate through Scout. What would you like to work on?'")}),h.addEventListener("error",()=>{s||e.onError?.("Realtime voice events channel closed unexpectedly.")}),h.addEventListener("message",x=>{const C=En(x.data);if(C?.type==="error"){if(ot(C.message)){k&&(j.unshift(k),k=null),O=!0,f("Scoutbot reply queued","Waiting for the current spoken response to finish","scoutbot");return}e.onError?.(C.message??"OpenAI Realtime reported an error.");return}if(C?.type==="response.created"){O=!0,k=null;return}if(C?.type==="response.done"){O=!1,k=null;for(const H of kn(C))H.name!=="ask_scoutbot"||w.has(H.callId)||(w.add(H.callId),I=I.then(()=>Cn({functionCall:H,route:e.getRoute?.()??e.route,uiContext:e.getUiContext?.(),onReply:e.onScoutbotReply,onTrace:f,send:R,requestResponse:y})).catch(J=>{e.onError?.(J instanceof Error?J.message:"Scoutbot could not complete the voice request.")}));b()}});const g=await ge(n.createOffer(),e.signal);if(await ge(n.setLocalDescription(g),e.signal),!g.sdp)throw new Error("Could not create a WebRTC offer.");const T=await fetch(hn,{method:"POST",headers:{"content-type":"application/sdp"},body:g.sdp,signal:e.signal});c=T.headers.get(mn)?.trim()||null;const L=await ge(T.text(),e.signal);if(!T.ok)throw new Error(An(L,T.status));if(!c)throw new Error("Scout started the audio connection without a concurrency lease. Please try again.");return p=setInterval(()=>{if(!c||s)return;const x=c;Ln(x).then(C=>{if(!(s||x!==c)){if(C){u=0;return}e.onError?.("Realtime voice lost its server lease. Reconnect to continue safely."),M()}}).catch(()=>{u+=1,!(u<2||s)&&(e.onError?.("Realtime voice could not renew its server lease. Check the connection and try again."),M())})},yn),await ge(n.setRemoteDescription({type:"answer",sdp:L}),e.signal),ee(e.signal),{leaseId:c,stop:D}}catch(h){throw await D(),h}}async function Cn(e){const t=xn(e.functionCall.arguments);if(!t){e.onTrace("Scoutbot request could not be read",void 0,"error"),be(e,{ok:!1,error:"The voice request did not include a usable Scoutbot prompt."});return}e.onTrace("Scoutbot is checking the control plane",t,"scoutbot");try{const n=await fetch(wn,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({body:t,route:e.route,uiContext:e.uiContext})}),r=await n.text();if(!n.ok)throw new Error(Tn(r,n.status));const s=JSON.parse(r),i=typeof s.reply?.body=="string"?s.reply.body.trim():"";if(!i)throw new Error("Scoutbot returned an empty reply.");const c=Je(i).filter(d=>d.type==="ask-agent").length,p=e.onReply?await e.onReply(i):{agentRequests:{requested:c,sent:0,failed:c}},u=St(i);e.onTrace("Scoutbot reply ready",void 0,"scoutbot"),be(e,{ok:!0,reply:u,...p.agentRequests.requested>0?{agentRequests:p.agentRequests}:{}})}catch(n){const r=n instanceof Error?n.message:"Scoutbot could not complete the voice request.";e.onTrace("Scoutbot request failed",r,"error"),be(e,{ok:!1,error:r})}}function be(e,t){if(!e.send({type:"conversation.item.create",item:{type:"function_call_output",call_id:e.functionCall.callId,output:JSON.stringify(t)}}))return;const r=t.agentRequests;e.requestResponse(t.ok?r&&r.requested>0?r.failed>0?"Answer using the Scoutbot result. Say clearly that Scoutbot tried to send the agent request automatically but delivery failed, and tell the operator to check the activity log. Be concise and do not mention tools, JSON, fences, or implementation details.":"Answer using the Scoutbot result. Say clearly that the agent request was sent automatically. Do not claim the requested work is complete. Be concise and do not mention tools, JSON, fences, or implementation details.":"Answer using the Scoutbot result. Speak the useful answer naturally and concisely. Do not mention tools, JSON, fences, or implementation details.":"Briefly tell the operator that Scoutbot could not complete the live lookup and state the returned error plainly.")}function ot(e){const t=e?.toLowerCase()??"";return t.includes("active response in progress")||t.includes("conversation already has an active response")||t.includes("response is already in progress")}function En(e){if(typeof e!="string")return null;try{const t=JSON.parse(e);return{...typeof t.type=="string"?{type:t.type}:{},...typeof t.error?.message=="string"?{message:t.error.message}:{},...t.response&&typeof t.response=="object"?{response:t.response}:{}}}catch{return null}}function kn(e){return Array.isArray(e.response?.output)?e.response.output.flatMap(t=>{if(!t||typeof t!="object")return[];const n=t;return n.type!=="function_call"||typeof n.call_id!="string"||typeof n.name!="string"||typeof n.arguments!="string"?[]:[{callId:n.call_id,name:n.name,arguments:n.arguments}]}):[]}function xn(e){try{const t=JSON.parse(e);if(typeof t.request!="string")return null;const n=t.request.trim();return n?n.slice(0,8e3):null}catch{return null}}function Tn(e,t){try{const n=JSON.parse(e);if(typeof n.error=="string"&&n.error.trim())return n.error}catch{}return`Scoutbot could not complete the live lookup (HTTP ${t}).`}function An(e,t){try{const n=JSON.parse(e);if(typeof n.error=="string"&&n.error.trim())return n.error}catch{}return`Could not start realtime voice (HTTP ${t}).`}async function ge(e,t){return t?(ee(t),new Promise((n,r)=>{const s=()=>r(ke(t));t.addEventListener("abort",s,{once:!0}),e.then(i=>{t.removeEventListener("abort",s),n(i)},i=>{t.removeEventListener("abort",s),r(i)})})):e}async function Be(e,t){return t?(ee(t),new Promise((n,r)=>{let s=!1;const i=()=>{s=!0,r(ke(t))};t.addEventListener("abort",i,{once:!0}),e.then(c=>{if(t.removeEventListener("abort",i),s||t.aborted){c.getTracks().forEach(p=>p.stop());return}n(c)},c=>{t.removeEventListener("abort",i),s||r(c)})})):e}const Ue={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,channelCount:1},Rn=/\b(?:airpods?|earbuds?|earphones?|headsets?|headphones?|buds?|hands[- ]?free)\b/iu;function In(e){return Rn.test(e?.trim()??"")?gn:vn}async function Nn(e,t){const n=await Ve(e);let r=await Be(navigator.mediaDevices.getUserMedia({audio:{...Ue,...n?{deviceId:{exact:n.deviceId}}:{}}}),t);if(!n&&e?.trim()){const s=await Ve(e),i=r.getAudioTracks?.()[0]?.label?.trim().toLocaleLowerCase()??"";if(s&&s.label.trim().toLocaleLowerCase()!==i)try{const c=await Be(navigator.mediaDevices.getUserMedia({audio:{...Ue,deviceId:{exact:s.deviceId}}}),t);r.getTracks().forEach(p=>p.stop()),r=c}catch(c){if(t?.aborted)throw r.getTracks().forEach(p=>p.stop()),c}}for(const s of r.getAudioTracks?.()??[])s.contentHint="speech";return r}async function Ve(e){const t=e?.trim().toLocaleLowerCase();if(!t||typeof navigator.mediaDevices.enumerateDevices!="function")return null;try{const n=(await navigator.mediaDevices.enumerateDevices()).filter(r=>r.kind==="audioinput"&&r.deviceId&&r.label.trim());return n.find(r=>r.label.trim().toLocaleLowerCase()===t)??n.find(r=>{const s=r.label.trim().toLocaleLowerCase();return s.includes(t)||t.includes(s)})??null}catch{return null}}function ee(e){if(e?.aborted)throw ke(e)}function ke(e){return e.reason instanceof Error?e.reason:new DOMException("Realtime voice connection was cancelled.","AbortError")}async function Ln(e){return(await fetch(`${Ze}/${encodeURIComponent(e)}`,{method:"PUT"})).ok}async function On(e){const t=await fetch(`${Ze}/${encodeURIComponent(e)}`,{method:"DELETE",keepalive:!0});if(!t.ok&&t.status!==404)throw new Error(`Could not release realtime voice lease (HTTP ${t.status}).`)}const _n=[{id:"home",label:"Home",description:"Fleet overview, briefings, and recent activity.",route:{view:"inbox"}},{id:"projects",label:"Projects",description:"Projects, agents, and project-scoped work.",route:{view:"agents-v2"},deepActions:["Open a project by projectSlug.","Open an agent by agentId."]},{id:"sessions",label:"Sessions",description:"Active and recent harness sessions.",route:{view:"sessions"},deepActions:["Open a session by sessionId."]},{id:"messages",label:"Messages",description:"Direct conversations and channels.",route:{view:"messages"},deepActions:["Open a conversation by conversationId.","Filter by all, direct messages, or channels."]},{id:"dispatch",label:"Dispatch",description:"Requests, flights, work, and delivery state.",route:{view:"broker"}},{id:"search",label:"Search",description:"Knowledge and indexed workspace search.",route:{view:"search"}},{id:"operations",label:"Operations",description:"Mission Control, live activity, agent lanes, runtime, and mesh health.",route:{view:"ops",mode:"mission"}},{id:"repositories",label:"Repositories",description:"Repository and worktree status, including diffs.",route:{view:"repos"},deepActions:["Open a repository by absolute root."]},{id:"code-browser",label:"Code Browser",description:"Read files in a project or worktree.",route:{view:"code"},deepActions:["Select a project with the project field; it accepts the displayed project name or slug.","Open a file inside it with path and optional wt.","Alternatively use absolute root and file fields.","Focus a line with line and optional endLine.","Deep links: scout://{project}/{path}, scout:///{absolute/path}, or legacy scout://code/{project}/{path}."]},{id:"terminals",label:"Terminals",description:"Observe or take over terminal sessions.",route:{view:"terminal"}},{id:"settings",label:"Settings",description:"Connections, agents, communications, credentials, voice, and devices.",route:{view:"settings"}}],jn=[{id:"comms",label:"Comms",description:"Native conversations and channels.",route:{view:"messages"},deepActions:["Open a conversation by conversationId.","Open a channel by channelId."]},{id:"projects",label:"Projects",description:"Native project and agent browser.",route:{view:"agents-v2"},deepActions:["Filter to a project by projectSlug.","Select an agent by agentId."]},{id:"terminals",label:"Terminals",description:"Native terminal workspace.",route:{view:"terminal"},deepActions:["Select an agent terminal by agentId."]},{id:"tail",label:"Tail",description:"Live agent and harness activity.",route:{view:"ops",mode:"tail"}},{id:"dispatch",label:"Dispatch",description:"Dispatch and coordination overview.",route:{view:"broker"}},{id:"agent-lanes",label:"Agent Lanes",description:"Native lane overview for active agents.",route:{view:"ops",mode:"lanes"}},{id:"repositories",label:"Repositories",description:"Native repository and worktree status.",route:{view:"repos"}},{id:"code-browser",label:"Code Browser",description:"Embedded read-only project browser.",route:{view:"code"},deepActions:["Select a project with the project field; it accepts the displayed project name or slug.","Open a file inside it with path and optional wt.","Alternatively use absolute root and file fields.","Focus a line with line and optional endLine.","Deep links: scout://{project}/{path}, scout:///{absolute/path}, or legacy scout://code/{project}/{path}."]},{id:"settings",label:"Settings",description:"Native app settings; Voice is directly addressable.",route:{view:"settings"},deepActions:["Open Voice settings with section=voice."]}];function Dn(e){const t=e==="macos";return{host:e,shellLabel:t?"Scout for macOS":"OpenScout web",destinations:t?jn:_n,rules:["When asked what navigation is available, list only these human labels and short descriptions.","Never expose internal Route.view names, aliases, URL fragments, or implementation vocabulary in the human reply.","Emit only a destination route or deep action explicitly described by this host context.","If the requested destination or deep action is absent, say it is not available in this app instead of approximating it with another page."]}}const Pn="scout:scoutbot-realtime-reply",we="scout:scoutbot-session-changed",Mn={enabled:!1,open:!1,state:"idle",leaseId:null,error:null,trace:[],chatState:null,sessionAction:null,setOpen:()=>{},startCall:async()=>{},endCall:async()=>!0,startNewChat:async()=>{},switchChat:async()=>{},updatePreferredModel:async e=>e,clearTrace:()=>{},openVoiceSettings:()=>{}},st=o.createContext(Mn);function Fn({children:e}){const{route:t,applyScoutbotUiAction:n}=at(),r=$e(tt,!0),[s,i]=o.useState(!1),c=r&&s,[p,u]=o.useState(!1),[d,f]=o.useState("idle"),[P,D]=o.useState(null),[M,v]=o.useState(null),[h,w]=o.useState([]),[I,O]=o.useState(null),[k,j]=o.useState(null),R=o.useRef(null),b=o.useRef(null),y=o.useRef(null),g=o.useRef(0),T=o.useRef(!1),L=o.useRef(!1),x=o.useRef({route:t,applyScoutbotUiAction:n});x.current={route:t,applyScoutbotUiAction:n};const C=o.useCallback((m,S,A="voice")=>{w(N=>[...N,{id:`voice-ui-${Date.now()}-${N.length}`,at:Date.now(),kind:A,label:m,...S?{detail:S}:{}}].slice(-100))},[]),H=o.useCallback(()=>w([]),[]),J=o.useCallback(async()=>{const m=await q("/api/scoutbot/session");return T.current||O(m),m},[]);o.useEffect(()=>{if(!r){i(!1);return}const m=new AbortController;let S=!1;const A=bn(N=>{i(N.enabled)});return rt(m.signal).then(N=>{S||i(N.enabled)}).catch(N=>{S||qe(N)||(i(!1),v(N instanceof Error?N.message:"Could not load live voice settings."))}),()=>{S=!0,m.abort(),A()}},[r]),o.useEffect(()=>{if(!c)return;const m=()=>{J().catch(S=>{T.current||v(S instanceof Error?S.message:"Could not load Scoutbot chats.")})};return m(),window.addEventListener(we,m),()=>window.removeEventListener(we,m)},[c,J]);const $=o.useCallback(async()=>{g.current+=1;const m=y.current;b.current?.abort(),b.current=null;const S=R.current;R.current=null;try{await S?.stop(),await m}catch(A){return T.current||(f("error"),v(A instanceof Error?A.message:"Could not end realtime voice cleanly.")),!1}return T.current||(D(null),f("ended"),C("Live voice ended","Microphone and host lease released","voice")),!0},[C]);o.useEffect(()=>{c||(u(!1),(R.current||d==="connecting"||d==="live")&&$())},[c,$,d]),o.useEffect(()=>(T.current=!1,()=>{T.current=!0,g.current+=1,b.current?.abort(),b.current=null,R.current?.stop().catch(()=>{}),R.current=null}),[]);const te=o.useCallback(async m=>{window.dispatchEvent(new CustomEvent(Pn,{detail:{body:m}}));const S=m.replace(/```[\s\S]*?```/gu,"").trim();S&&C("Scoutbot replied",S.slice(0,2e3),"scoutbot");let A=0,N=0,W=0;for(const B of Je(m))if(B.type==="ask-agent")A+=1,await Vn(B,C,v)?N+=1:W+=1;else if(B.type!=="reminder"){const _=Un(B),U=B.type==="navigate"||B.type==="view-file"?"navigation":"scoutbot";C(Bn(B),_,U),x.current.applyScoutbotUiAction(B),C(De()?"Action sent to Scout for macOS":"Action applied in OpenScout",_,U)}return await J().catch(()=>null),{agentRequests:{requested:A,sent:N,failed:W}}},[C,J]),ne=o.useCallback(()=>{const m={type:"navigate",route:{view:"settings",section:"voice"}};C("Voice settings requested",void 0,"navigation"),x.current.applyScoutbotUiAction(m)},[C]),re=o.useCallback(async()=>{if(!c){v("Turn on live voice in Settings → Voice before starting a call."),u(!1);return}if(L.current||d==="connecting"||d==="live")return;L.current=!0,b.current?.abort();const m=R.current;R.current=null;try{await m?.stop(),D(null)}catch(_){f("error"),v(_ instanceof Error?_.message:"Could not end the previous realtime voice call."),L.current=!1;return}const S=new AbortController;b.current=S;const A=g.current+1;g.current=A;let N=()=>{};const W=new Promise(_=>{N=_});y.current=W;let B=!1;v(null),w([{id:"connecting",at:Date.now(),label:"Connecting secure audio"}]),f("connecting");try{const _=await jt().then(({settings:V})=>V.inputDeviceName).catch(()=>null),U=await Sn({signal:S.signal,inputDeviceName:_,getRoute:()=>x.current.route,getUiContext:()=>Dn(De()?"macos":"web"),onState:V=>{!T.current&&g.current===A&&f(V)},onError:V=>{if(!(T.current||g.current!==A)){if(ot(V)){C("Scoutbot reply queued","Waiting for the current spoken response to finish","scoutbot");return}v(V),C("Voice issue",V,"error")}},onTrace:V=>{!T.current&&g.current===A&&w(ue=>[...ue,V].slice(-100))},onScoutbotReply:V=>!T.current&&g.current===A?te(V):{agentRequests:{requested:0,sent:0,failed:0}}});if(T.current||S.signal.aborted||g.current!==A){await U.stop();return}R.current=U,D(U.leaseId),B=!0}catch(_){if(!T.current&&g.current===A&&!qe(_)){f("error");const U=_ instanceof Error?_.message:"Could not start realtime voice.";v(U),C("Live voice could not start",U,"error")}}finally{!B&&b.current===S&&(b.current=null),N(),y.current===W&&(y.current=null),L.current=!1}},[C,te,c,d]),oe=o.useCallback(async()=>{if(!k){j("new"),v(null);try{if((R.current||d==="connecting"||d==="live")&&!await $())return;if(I?.session.messages.length===0){w([{id:`voice-chat-${Date.now()}`,at:Date.now(),kind:"scoutbot",label:"New live chat ready"}]);return}const m=await q("/api/scoutbot/session/reset",{method:"POST"});O(m),w([{id:`voice-chat-${Date.now()}`,at:Date.now(),kind:"scoutbot",label:"New live chat ready"}]),window.dispatchEvent(new CustomEvent(we,{detail:{id:m.session.id}}))}catch(m){const S=m instanceof Error?m.message:"Could not start a new Scoutbot chat.";v(S),C("Could not start a new live chat",S,"error")}finally{j(null)}}},[C,I?.session.messages.length,$,k,d]),se=o.useCallback(async m=>{if(!(!m||k||m===I?.session.id)){j(m),v(null);try{if((R.current||d==="connecting"||d==="live")&&!await $())return;const S=await q("/api/scoutbot/session/switch",{method:"POST",body:JSON.stringify({id:m})});O(S),w([{id:`voice-chat-${Date.now()}`,at:Date.now(),kind:"scoutbot",label:"Live chat restored",detail:S.session.title}]),window.dispatchEvent(new CustomEvent(we,{detail:{id:S.session.id}}))}catch(S){const A=S instanceof Error?S.message:"Could not switch Scoutbot chats.";v(A),C("Could not restore the live chat",A,"error")}finally{j(null)}}},[C,I?.session.id,$,k,d]),ie=o.useCallback(async m=>{const S=m.trim();if(!S)throw new Error("Preferred model is required.");const A=await q("/api/scoutbot/config",{method:"POST",body:JSON.stringify({model:S})});return O(N=>N&&{...N,config:{...N.config,...A.config}}),C("Scoutbot preferred model updated",A.config.model,"scoutbot"),A.config.model},[C]),ae=o.useMemo(()=>({enabled:c,open:p,state:d,leaseId:P,error:M,trace:h,chatState:I,sessionAction:k,setOpen:u,startCall:re,endCall:$,startNewChat:oe,switchChat:se,updatePreferredModel:ie,clearTrace:H,openVoiceSettings:ne}),[c,p,d,P,M,h,I,k,re,$,oe,se,ie,H,ne]);return a.jsx(st.Provider,{value:ae,children:e})}function qe(e){return(e instanceof DOMException||e instanceof Error)&&e.name==="AbortError"}function Or(){return o.useContext(st)}function Bn(e){return e.type==="navigate"?"Navigation requested":e.type==="open-scoutbot"?"Scoutbot opened its panel":e.type==="refresh"?"Scoutbot refreshed live state":"Scoutbot opened the requested file"}function Un(e){return e.type==="navigate"?JSON.stringify(e.route):e.type==="view-file"?e.path:e.reason?.trim()||e.type}async function Vn(e,t,n){t("Scoutbot is coordinating",`Asking ${e.targetLabel}`,"agent");try{const r=await q("/api/scoutbot/actions/ask",{method:"POST",body:JSON.stringify({targetLabel:e.targetLabel,targetAgentId:e.targetAgentId,body:e.body,channel:e.channel})});return t("Scoutbot sent the request",r.flightId?`${r.targetAgentId??r.targetLabel} · run ${r.flightId}`:r.targetAgentId??r.targetLabel,"agent"),!0}catch(r){const s=r instanceof Error?r.message:"Could not send to agent.";return t("Scoutbot could not send the request",s,"error"),n(s),!1}}function ye(e,t){const n=t?.trim();n&&e.add(n)}function qn(e,t){const n=new Set;return ye(n,e.authorityNodeId),ye(n,e.homeNodeId),n.size===0&&ye(n,t),n}function it(e,t,n){return t?qn(e,n).has(t):!0}function Hn(e,t,n){return t?e.filter(r=>it(r,t,n)):e}function _r(e,t,n){return t?new Set(e.filter(r=>it(r,t,n)).map(r=>r.id)):null}function Y(e,t,n){return!t&&!n||n&&e.authorityNodeId===n?!0:t?e.agentId&&t.has(e.agentId)||e.actorId&&t.has(e.actorId)||e.ownerId&&t.has(e.ownerId)||e.nextMoveOwnerId&&t.has(e.nextMoveOwnerId)?!0:!!e.participantIds?.some(r=>t.has(r)):!1}function $n(e,t,n){return Y(e,t,n)}function jr(e,t,n){return!t&&!n?e:e.filter(r=>$n(r,t,n))}function Jn(e,t){return Y(e,t)}function Kn(e,t){return t?e.filter(n=>Jn(n,t)):e}function He(e,t){return Y(e,t)}function Dr(e,t){if(!e||!t)return e;const n=e.activeAsks.filter(c=>Y(c,t)),r=e.recentCompleted.filter(c=>Y(c,t)),s=e.needsAttention.filter(c=>Y(c,t)),i=Kn(e.activity,t);return{...e,totals:{active:n.length,recentCompleted:r.length,needsAttention:s.length,activity:i.length},activeAsks:n,recentCompleted:r,needsAttention:s,activity:i}}function Pr(e,t){if(!t)return e;const n=e.activeFlights.filter(i=>Y(i,t)),r=e.childWork.filter(i=>He(i,t));return He(e,t)||n.length>0||r.length>0?{...e,activeFlights:n,childWork:r}:null}function Gn(e){return!!(e&&(e.message.trim().length>0||e.files.length>0||e.forwardContext))}function Wn(e){return[e.name,e.type,e.size,e.lastModified].join(":")}function zn(e,t){const n=new Set;return[...e,...t].filter(r=>{const s=Wn(r);return n.has(s)?!1:(n.add(s),!0)})}function Qn(e,t){const n=t.intent??e?.intent??"new-task",r=n==="route-capture",s=n==="forward-message";return{intent:n,...r&&(t.agentId??e?.agentId)?{agentId:t.agentId??e?.agentId}:{},...r&&(t.conversationId??e?.conversationId)?{conversationId:t.conversationId??e?.conversationId}:{},message:t.message??e?.message??"",files:zn(e?.files??[],t.files??[]),attachmentFeedback:t.attachmentFeedback??e?.attachmentFeedback??null,mode:r?t.preferExistingChat===void 0?e?.mode??"new-session":t.preferExistingChat?"existing-chat":"new-session":"new-session",projectPath:t.projectPath??e?.projectPath??"",projectQuery:e?.projectQuery??"",...s&&(t.forwardContext??e?.forwardContext)?{forwardContext:t.forwardContext??e?.forwardContext}:{},forwardContextMode:s?t.forwardContextMode??e?.forwardContextMode??"selected-message":"selected-message"}}function Yn({request:e,onClose:t,onOpenCapture:n}){const{agents:r,route:s,navigate:i}=at(),c=vt(s),p=Hn(r,c),u=Pt(s,p),[d,f]=o.useState(0),[P,D]=o.useState(null),[M,v]=o.useState(null),h=o.useRef(0),w=e?Qn(M,e):null,I=o.useCallback((k,j)=>{if(k.length===0)return;const R=!!(u.agentId||u.conversationId);n({intent:R?"route-capture":"new-task",files:k,attachmentFeedback:j,agentId:u.agentId??void 0,conversationId:u.conversationId??void 0,preferExistingChat:u.canUseExistingChat})},[n,u]);o.useEffect(()=>{if(!P)return;const k=window.setTimeout(()=>D(null),5e3);return()=>window.clearTimeout(k)},[P]),o.useEffect(()=>{const k=g=>{ve(g.dataTransfer)&&(g.preventDefault(),h.current+=1,f(h.current))},j=g=>{ve(g.dataTransfer)&&(g.preventDefault(),g.dataTransfer&&(g.dataTransfer.dropEffect="copy"))},R=()=>{h.current!==0&&(h.current=Math.max(0,h.current-1),f(h.current))},b=g=>{if(!ve(g.dataTransfer))return;g.preventDefault();const T=Pe(g.dataTransfer),L=T.filter(Me),x=T.length-L.length;if(h.current=0,f(0),L.length===0){D(T.length===0?"Scout could not read that file. Try the attachment picker instead.":"That file type is not supported. Drop markdown, code, an image, or a video clip.");return}const C=L.length===1?`Dropped ${L[0]?.name||"1 attachment"}.`:`Dropped ${L.length} attachments.`,H=x>0?`${C} Skipped ${x} unsupported ${x===1?"file":"files"}.`:C;D(null),I(L,H)},y=g=>{if(Dt(g.target)||!ve(g.clipboardData))return;g.preventDefault();const T=Pe(g.clipboardData),L=T.filter(Me);if(L.length===0){D(T.length===0?"Scout could not read that pasted file. Try the attachment picker instead.":"That pasted file type is not supported. Paste an image or video, or attach markdown or code.");return}I(L,L.length===1?`Pasted ${L[0]?.name||"1 attachment"}.`:`Pasted ${L.length} attachments.`)};return window.addEventListener("dragenter",k),window.addEventListener("dragover",j),window.addEventListener("dragleave",R),window.addEventListener("drop",b),window.addEventListener("paste",y),()=>{window.removeEventListener("dragenter",k),window.removeEventListener("dragover",j),window.removeEventListener("dragleave",R),window.removeEventListener("drop",b),window.removeEventListener("paste",y)}},[I]);const O=d>0&&!e;return a.jsxs(a.Fragment,{children:[O?a.jsx("div",{className:"s-capture-drop",role:"presentation",children:a.jsxs("div",{className:"s-capture-drop-card",children:[a.jsx("div",{className:"s-capture-drop-title",children:"Route capture"}),a.jsx("div",{className:"s-capture-drop-copy",children:"Drop markdown, code, an image, or a video clip to send it to the right agent or chat."})]})}):null,P?a.jsx("div",{className:"s-capture-feedback",role:"alert",children:P}):null,e?a.jsx(Mt,{agents:p,route:s,navigate:i,onClose:t,initialAgentId:w?.agentId,initialConversationId:w?.conversationId,initialMessage:w?.message,initialFiles:w?.files,initialAttachmentFeedback:w?.attachmentFeedback??void 0,initialIntent:w?.intent,initialProjectPath:w?.projectPath,initialProjectQuery:w?.projectQuery,initialForwardContext:w?.forwardContext,initialForwardContextMode:w?.forwardContextMode,defaultMode:w?.mode,draftRestored:Gn(M),onDraftChange:v,onDraftConsumed:()=>v(null)}):null]})}const xe=o.createContext(null),Xn=["hello","node.upserted","actor.registered","agent.registered","agent.endpoint.upserted","invocation.requested","flight.updated","delivery.state.changed","scout.dispatched"],Zn=new Set(Xn),er=3e4,tr=250;function nr(e,t){try{return JSON.stringify(e)===JSON.stringify(t)?e:t}catch{return t}}const rr={"--hud-bg":"oklch(0.118 0.004 260)","--hud-surface":"oklch(0.205 0.005 260)","--hud-ink":"oklch(0.975 0.006 260)","--hud-muted":"oklch(0.80 0.008 260)","--hud-dim":"oklch(0.70 0.007 260)","--hud-border":"oklch(0.975 0.006 260 / 0.08)","--hud-accent":"oklch(0.86 0.17 125)","--hud-accent-soft":"oklch(0.86 0.17 125 / 0.08)","--hud-shadow-soft":"oklch(0.08 0.004 260 / 0.42)","--hud-chrome-border":"oklch(0.975 0.006 260 / 0.04)","--hud-shadow-panel":"0 12px 34px oklch(0.08 0.004 260 / 0.45)","--hud-shadow-panel-hover":"0 14px 38px oklch(0.08 0.004 260 / 0.52)","--hud-shadow-bar":"0 -10px 28px oklch(0.08 0.004 260 / 0.38)","--hud-shadow-nav":"0 8px 24px oklch(0.08 0.004 260 / 0.32)","--hud-shadow-minimap":"0 10px 24px oklch(0.08 0.004 260 / 0.38)","--hud-status-ok":"oklch(0.80 0.15 155)","--hud-status-warn":"oklch(0.82 0.15 85)","--hud-status-error":"oklch(0.72 0.18 25)","--background":"0.132 0.004 260","--foreground":"0.965 0.006 260","--card":"0.178 0.005 260","--card-foreground":"0.965 0.006 260","--popover":"0.178 0.005 260","--popover-foreground":"0.965 0.006 260","--muted-foreground":"0.72 0.008 260","--scrim":"rgba(0, 0, 0, 0.5)","--scrim-soft":"rgba(0, 0, 0, 0.3)","--info":"#62b6ff","--shadow-card":"0 8px 22px rgba(0, 0, 0, 0.22)","--shadow-card-hover":"0 14px 36px rgba(0, 0, 0, 0.30)","--cat-gold":"#d7a978","--cat-purple":"#c58cff","--cat-sky":"#38bdf8","--scout-chrome-ink-strong":"color-mix(in srgb, var(--hud-ink) 94%, transparent)","--scout-chrome-ink":"color-mix(in srgb, var(--hud-ink) 84%, transparent)","--scout-chrome-ink-soft":"color-mix(in srgb, var(--hud-ink) 68%, transparent)","--scout-chrome-ink-faint":"color-mix(in srgb, var(--hud-ink) 64%, transparent)","--scout-chrome-ink-ghost":"color-mix(in srgb, var(--hud-ink) 56%, transparent)","--scout-chrome-hover":"color-mix(in srgb, var(--hud-ink) 5%, transparent)","--scout-chrome-active":"color-mix(in srgb, var(--hud-ink) 9%, transparent)","--scout-chrome-border-soft":"color-mix(in srgb, var(--hud-ink) 8%, transparent)","--scout-chrome-avatar-ink":"#111111","--hud-font-sans":"'Inter', ui-sans-serif, system-ui, sans-serif","--hud-font-mono":"'JetBrains Mono', ui-monospace, Menlo, monospace","--hud-font-serif":"'Spectral', 'Cormorant Garamond', Georgia, serif","--hud-font-accent-title":"'Inter Tight', var(--hud-font-sans)"},or={"--hud-bg":"oklch(0.982 0.008 78)","--hud-surface":"oklch(0.994 0.006 78)","--hud-ink":"oklch(0.26 0.018 72)","--hud-muted":"oklch(0.50 0.028 70)","--hud-dim":"oklch(0.64 0.022 72)","--hud-border":"oklch(0.86 0.016 75 / 0.92)","--hud-accent":"oklch(0.72 0.16 125)","--hud-accent-soft":"oklch(0.72 0.16 125 / 0.11)","--hud-shadow-soft":"oklch(0.42 0.02 70 / 0.11)","--hud-status-ok":"oklch(0.64 0.16 155)","--hud-status-warn":"oklch(0.72 0.15 85)","--hud-status-error":"oklch(0.62 0.19 25)","--background":"0.978 0.004 85","--foreground":"0.24 0.01 80","--card":"0.992 0.003 85","--card-foreground":"0.24 0.01 80","--popover":"0.992 0.003 85","--popover-foreground":"0.24 0.01 80","--muted-foreground":"0.56 0.014 80","--scrim":"rgba(28, 24, 20, 0.30)","--scrim-soft":"rgba(28, 24, 20, 0.16)","--info":"#2f7fd6","--shadow-card":"0 8px 22px oklch(0.42 0.02 70 / 0.09)","--shadow-card-hover":"0 14px 36px oklch(0.42 0.02 70 / 0.13)","--cat-gold":"#a9824f","--cat-purple":"#8b5cf6","--cat-sky":"#0ea5e9","--scout-chrome-ink-strong":"color-mix(in srgb, var(--hud-ink) 94%, transparent)","--scout-chrome-ink":"color-mix(in srgb, var(--hud-ink) 78%, transparent)","--scout-chrome-ink-soft":"color-mix(in srgb, var(--hud-ink) 60%, transparent)","--scout-chrome-ink-faint":"color-mix(in srgb, var(--hud-ink) 56%, transparent)","--scout-chrome-ink-ghost":"color-mix(in srgb, var(--hud-ink) 50%, transparent)","--scout-chrome-hover":"color-mix(in srgb, var(--hud-ink) 4%, transparent)","--scout-chrome-active":"color-mix(in srgb, var(--hud-ink) 8%, transparent)","--scout-chrome-border-soft":"color-mix(in srgb, var(--hud-border) 80%, transparent)","--scout-chrome-avatar-ink":"#ffffff","--hud-font-sans":"'Inter', ui-sans-serif, system-ui, sans-serif","--hud-font-mono":"'JetBrains Mono', ui-monospace, Menlo, monospace","--hud-font-serif":"'Spectral', 'Cormorant Garamond', Georgia, serif","--hud-font-accent-title":"'Inter Tight', var(--hud-font-sans)"},sr=new Set(["--hud-bg","--hud-surface","--hud-ink","--hud-muted","--hud-dim","--hud-border","--hud-accent","--hud-accent-soft","--hud-shadow-soft","--hud-chrome-border","--hud-shadow-panel","--hud-shadow-panel-hover","--hud-shadow-bar","--hud-shadow-nav","--hud-shadow-minimap","--hud-status-ok","--hud-status-warn","--hud-status-error"]);function ir(e){return Object.fromEntries(Object.entries(e==="light"?or:rr).filter(([n])=>!sr.has(n)))}function Mr(){return o.useContext(xe)}function at(){const e=o.useContext(xe);if(!e)throw new Error("useScout must be used inside ScoutProvider");return e}function Fr({children:e,initialTheme:t="dark"}){const{route:n,navigate:r,navigateBack:s,canNavigateBack:i}=gt(),c=Ft(),p=$e(tt,!0),[u,d]=o.useState([]),[f,P]=o.useState(!1),[D,M]=o.useState({status:"checking",message:null,lastCheckedAt:null}),[v,h]=o.useState(_e),[w,I]=o.useState(null),O=o.useRef(!1),[k,j]=o.useState($t),[R,b]=o.useState(!1),[y,g]=o.useState(null),[T,L]=o.useState(null),[x,C]=o.useState(""),[H,J]=o.useState(null),$=n.view==="settings",te=o.useMemo(()=>n.view!=="broker"||!n.attemptId?null:y?.id===n.attemptId?y:null,[y,n]),ne=o.useMemo(()=>n.view!=="search"||!n.hitId?null:T?.id===n.hitId?T:null,[T,n]),re=o.useMemo(()=>n.view==="agents-v2"&&n.agentId&&n.sessionId?{agentId:n.agentId,sessionId:n.sessionId}:n.view==="sessions"&&n.sessionId?{agentId:n.agentId??"",sessionId:n.sessionId}:null,[n]),oe=o.useCallback((l,E)=>{if(n.view==="agents-v2"&&n.agentId===l){r({...n,sessionId:E},{replace:!0});return}if(n.view==="sessions"){r({view:"sessions",sessionId:E,agentId:l},{replace:!0});return}r({view:"agents-v2",agentId:l,sessionId:E},{replace:!0})},[r,n]),se=o.useCallback(()=>{r({view:"settings",section:"appearance"})},[r]),ie=o.useCallback(()=>{n.view==="settings"&&r({view:"inbox"})},[r,n.view]),ae=o.useCallback(l=>{J(l??{intent:"new-task"})},[]),m=o.useCallback(()=>J(null),[]),S=o.useCallback(l=>{g(l),!(n.view==="broker"&&n.attemptId===l.id)&&r({view:"broker",attemptId:l.id,...n.view==="broker"&&n.filter?{filter:n.filter}:{}},{replace:n.view==="broker"})},[r,n]),A=o.useCallback(()=>{g(null),n.view==="broker"&&n.attemptId&&r({view:"broker",...n.filter?{filter:n.filter}:{}},{replace:!0})},[r,n]),N=o.useCallback((l,E,F)=>{if(L(l),typeof E=="string"&&C(E.trim()),n.view==="search"&&n.hitId===l.id)return;const K=F??(n.view==="search"?n.filters:void 0);r({view:"search",...n.view==="search"&&n.mode?{mode:n.mode}:{},...K?{filters:K}:{},hitId:l.id},{replace:n.view==="search"})},[r,n]),W=o.useCallback(()=>{L(null),C(""),n.view==="search"&&n.hitId&&r({view:"search",...n.mode?{mode:n.mode}:{},...n.filters?{filters:n.filters}:{}},{replace:!0})},[r,n]),B=o.useMemo(()=>dt(),[]),_=c?.resolvedTheme??t,U=c?.template??"hudson",V=o.useMemo(()=>({...ir(_),...B??{}}),[B,_]),ue=o.useCallback(l=>{h(E=>({...E,...l}))},[]);o.useEffect(()=>{!f||u.length===0||h(l=>{const E=ft(l.agentCharacters,u);return E===l.agentCharacters?l:{...l,agentCharacters:E}})},[u,f]),o.useEffect(()=>{pt(_,U,v),ht(v)},[U,v,_]),o.useEffect(()=>{const l=E=>{E.key!==null&&E.key!==mt||h(_e())};return window.addEventListener("storage",l),()=>window.removeEventListener("storage",l)},[]);const Te=o.useMemo(()=>Ct(u),[u]),Ae=Te?.id??Et(u),Re=Te?.conversationId??null,de=o.useRef(null),X=o.useRef(null),fe=n.view==="ops"?"/api/agents":"/api/agents?detail=summary",pe=o.useCallback(()=>{M({status:"online",message:null,lastCheckedAt:Date.now()})},[]),he=o.useCallback(l=>{const E=Ut(l);M({status:Vt(E)?"offline":"degraded",message:E,lastCheckedAt:Date.now()})},[]),G=o.useCallback(async()=>{const l=de.current;if(l&&(await l.promise,l.url===fe))return;const E=(async()=>{try{const F=await q(fe);d(K=>nr(K,F)),pe()}catch(F){he(F)}finally{P(!0)}})();de.current={url:fe,promise:E};try{await E}finally{de.current?.promise===E&&(de.current=null)}},[fe,he,pe]),z=o.useCallback(async()=>{try{const l=await q("/api/onboarding/state");O.current=!1,I(l);const E=l.operatorName?.trim()||l.operatorNameSuggestion?.trim()||null;j(E),Jt(E),pe()}catch(l){he(l),O.current=!0,I({hasLocalConfig:!0,hasProjectConfig:!0,hasOperatorName:!0,localConfigPath:null,projectRoot:null,currentDirectory:null,operatorName:null,operatorNameSuggestion:null,needed:!1})}},[he,pe]),Ie=o.useCallback(()=>{b(!0),q("/api/onboarding/skip",{method:"POST",body:"{}"}).then(()=>z()).catch(()=>null)},[z]);o.useEffect(()=>{G(),z()},[G,z]),o.useEffect(()=>{const l=()=>{je()&&(G(),O.current&&z())},E=window.setInterval(l,er),F=bt(l);return()=>{window.clearInterval(E),F()}},[G,z]);const Ne=o.useMemo(()=>u.filter(l=>yt(l.state)).length,[u]),[ct,Le]=o.useState(null),ce=o.useCallback(l=>{l?.trim()&&Le(l.trim())},[]),le=o.useCallback(()=>Le(null),[]),Z=o.useCallback(l=>{if(!kt(l))switch(l.type){case"navigate":r(l.route);break;case"focus-composer":window.dispatchEvent(new CustomEvent("scout:composer-focus"));break;case"open-scoutbot":window.dispatchEvent(new CustomEvent("scout:scoutbot-panel-open",{detail:l}));break;case"refresh":G();break;case"view-file":ce(l.path);break}},[r,ce,G]),lt=o.useCallback((l,E)=>{const F=l.trim(),K=E.trim();if(!F||!K)return;const Oe=n.view==="conversation"||n.view==="messages"?n.conversationId:window.location.pathname==="/embed/thread"&&new URLSearchParams(window.location.search).get("conversationId")?.trim()||void 0;le(),Z({type:"navigate",route:{view:"code",root:K,file:F,...Oe?{returnConversationId:Oe}:{}}})},[Z,le,n]),me=o.useRef({applyScoutbotUiAction:Z});me.current={applyScoutbotUiAction:Z},wt(l=>{je()&&Zn.has(l.kind)&&(X.current!==null&&window.clearTimeout(X.current),X.current=window.setTimeout(()=>{X.current=null,G()},tr))}),o.useEffect(()=>()=>{X.current!==null&&window.clearTimeout(X.current)},[]),o.useEffect(()=>{const l=E=>{const F=E.detail,K=F&&typeof F=="object"&&"type"in F?F:null;K&&me.current.applyScoutbotUiAction(K)};return window.addEventListener("scout:scoutbot-ui-action",l),window.scoutScoutbot={applyUiAction:E=>me.current.applyScoutbotUiAction(E),navigate:E=>me.current.applyScoutbotUiAction({type:"navigate",route:E})},()=>{window.removeEventListener("scout:scoutbot-ui-action",l),window.scoutScoutbot?.applyUiAction&&delete window.scoutScoutbot}},[]);const ut=o.useMemo(()=>({route:n,navigate:r,navigateBack:s,canNavigateBack:i,agents:u,agentsLoaded:f,onlineCount:Ne,apiConnection:D,reload:G,appearanceDetails:v,updateAppearanceDetails:ue,onboarding:w,operatorName:k,refreshOnboarding:z,onboardingSkipped:R,skipOnboarding:Ie,settingsOpen:$,openSettings:se,closeSettings:ie,scoutbotAgentId:Ae,scoutbotConversationId:Re,applyScoutbotUiAction:Z,selectedBrokerAttempt:te,inspectBrokerAttempt:S,clearBrokerAttempt:A,selectedKnowledgeHit:ne,selectedKnowledgeQuery:x,inspectKnowledgeHit:N,clearKnowledgeHit:W,focusedSession:re,focusSession:oe,openFilePreview:ce,closeFilePreview:le,openContextCapture:ae,closeContextCapture:m}),[n,r,s,i,u,f,Ne,D,G,v,ue,w,k,z,R,Ie,$,se,ie,Ae,Re,Z,te,S,A,ne,x,N,W,re,oe,ce,le,ae,m]);return a.jsx(xe.Provider,{value:ut,children:a.jsx("div",{"data-scout-theme-mode":_,"data-scout-palette":v.palette,"data-scout-contrast":v.contrast,"data-scout-accent":v.accent,"data-scout-shell":v.shell,"data-scout-avatar-style":v.avatarStyle,"data-hudson-theme":_,"data-hudson-template":U,style:{...V},children:a.jsx("div",{"data-scout-theme":_,style:{display:"contents"},children:a.jsx(Bt,{children:a.jsxs(dn,{children:[p?a.jsx(Fn,{children:e}):e,a.jsx(sn,{path:ct,onOpenPath:ce,onOpenInCode:lt,onClose:le}),a.jsx(Yn,{request:H,onClose:m,onOpenCapture:ae})]})})})})})}export{Bt as C,rr as D,or as L,xe as S,Tr as a,Kn as b,Mr as c,Hn as d,jr as e,Ut as f,Dr as g,Fr as h,Vt as i,Pr as j,Gt as k,Rr as l,_r as m,tt as n,Or as o,we as p,Pn as q,Ir as r,Dn as s,Ar as t,at as u,rt as v,Nr as w,Lr as x};
@@ -0,0 +1 @@
1
+ import{j as r}from"./index-CZ-05hKz.js";import{s as $,b as E}from"./colors-BtO5_zlx.js";import{A as M}from"./AgentAvatar-CYhf6twS.js";function q({name:a,meta:i,sub:s,tone:o="neutral",agent:t,avatarName:c,avatarKind:e="user",leadingIcon:n,caret:l,active:j,selected:v,unread:N,depth:f=0,detail:d,expanded:h,activityLabel:w,worktreeLabel:u,activityTone:g="working",actions:p,pinned:x,onClick:k,onKeyDown:b,onContextMenu:y,onPointerEnter:C,onPointerLeave:P,title:R,tabIndex:z}){const A=l?l==="open":d!==void 0?!!h:void 0,B=["rr-row",f===1&&"rr-row--child",j&&"rr-row--active",v&&"rr-row--selected",N&&"rr-row--unread",h&&"rr-row--expanded",w&&"rr-row--motion",x&&"rr-row--pinned",p&&"rr-row--has-actions"].filter(Boolean).join(" ");return r.jsxs("div",{className:B,children:[r.jsxs("button",{type:"button",className:"rr-row-head",onClick:k,onKeyDown:b,onContextMenu:y,onPointerEnter:C,onPointerLeave:P,title:R,tabIndex:z,"aria-expanded":A,children:[r.jsx(T,{icon:n,tone:o,caret:l,agent:t,avatarName:c,avatarKind:e}),r.jsxs("span",{className:"rr-row-body",children:[r.jsxs("span",{className:"rr-row-name",children:[x?r.jsx("span",{className:"rr-row-pin-mark","aria-label":"Pinned",title:"Pinned",children:r.jsx(S,{})}):null,a]}),s&&r.jsx("span",{className:"rr-row-sub",children:s}),u&&r.jsx("span",{className:"rr-row-worktree",children:u}),w&&r.jsxs("span",{className:`rr-row-activity rr-row-activity--${g}`,children:[r.jsxs("span",{className:"rr-row-activity-bars","aria-hidden":!0,children:[r.jsx("span",{}),r.jsx("span",{}),r.jsx("span",{}),r.jsx("span",{})]}),r.jsx("span",{className:"rr-row-activity-label",children:w})]})]}),i&&r.jsx("span",{className:"rr-row-meta",children:i})]}),p?r.jsx("div",{className:"rr-row-actions",onClick:L=>L.stopPropagation(),children:p}):null,h&&d&&r.jsx("div",{className:"rr-row-detail",children:d})]})}function T({icon:a,tone:i,caret:s,agent:o,avatarName:t,avatarKind:c}){if(s)return r.jsx("span",{className:`rr-row-caret rr-row-caret--leading rr-row-caret--${s}`,"aria-hidden":!0,children:r.jsx(G,{open:s==="open"})});if(t||o){if(c==="channel")return r.jsx("span",{className:"rr-row-hash","aria-hidden":!0,children:"#"});const n=m(i),l=n==="active"||n==="available"||n==="working"||n==="in_turn";return r.jsx("span",{className:"rr-row-avatar-wrap","aria-hidden":!0,children:r.jsx(M,{agent:o,name:t??o?.name,placement:"row",size:20,tile:!0,presence:l})})}if(a)return r.jsx("span",{className:"rr-row-icon","aria-hidden":!0,children:a});const e=m(i);return r.jsx("span",{className:`rr-row-dot rr-row-dot--${e}`,style:e==="active"||e==="available"?{background:$(e)}:void 0,"aria-hidden":!0})}function G({open:a}){return r.jsx("svg",{className:`rr-chevron${a?" rr-chevron--open":""}`,viewBox:"0 0 12 12",width:"12",height:"12",fill:"none","aria-hidden":!0,children:r.jsx("path",{d:"M4.25 3L7.75 6L4.25 9",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})})}function m(a){return a==="channel"||a==="dm"||a==="neutral"?a:E(a)}function S(){return r.jsx("svg",{width:"9",height:"9",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":!0,children:r.jsx("path",{d:"M9.8 1.6 14.4 6.2a1 1 0 0 1-.2 1.6l-2.7 1.1-.9 3.4a.7.7 0 0 1-1.2.3L6.3 9.5 2.8 13 1.7 11.9l3.5-3.5L2.1 5.3a.7.7 0 0 1 .3-1.2l3.4-.9 1.1-2.7a1 1 0 0 1 1.6-.2Z"})})}export{q as R};
@@ -0,0 +1 @@
1
+ .rr-row{display:flex;flex-direction:column;border-bottom:1px solid color-mix(in srgb,var(--ink) 5%,transparent)}.rr-row-head{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-xs) var(--space-lg);border:0;background:transparent;text-align:left;cursor:pointer;font-family:inherit;min-width:0;min-height:0;transition:background .12s}.rr-row-head:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)}.rr-row-head:focus-visible{outline:1px solid var(--accent);outline-offset:-1px}.rr-row--child .rr-row-head{padding-left:var(--space-4xl)}.rr-row--active .rr-row-head{background:color-mix(in srgb,var(--accent) 9%,transparent);box-shadow:inset 2px 0 0 0 var(--accent)}.rr-row--selected .rr-row-head{background:color-mix(in srgb,var(--accent) 10%,transparent);box-shadow:inset 2px 0 0 0 var(--accent)}.rr-row--expanded .rr-row-head{background:color-mix(in srgb,var(--accent) 6%,transparent)}.rr-row--motion .rr-row-head{background:linear-gradient(90deg,color-mix(in srgb,var(--green) 7%,transparent),transparent 64%),transparent}.rr-row--active.rr-row--motion .rr-row-head{background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 16%,transparent),transparent 70%),color-mix(in srgb,var(--accent) 9%,transparent)}.rr-row-dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:color-mix(in srgb,var(--dim) 55%,transparent)}.rr-row-dot--unavailable,.rr-row-dot--offline{background:color-mix(in srgb,var(--dim) 45%,transparent)}.rr-row-dot--channel,.rr-row-dot--dm{background:color-mix(in srgb,var(--ink) 28%,transparent)}.rr-row-avatar-wrap{flex:0 0 auto;position:relative;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center}.rr-row-avatar{width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;color:color-mix(in srgb,var(--bg) 92%,transparent);letter-spacing:0;text-transform:uppercase;-webkit-user-select:none;user-select:none}.rr-row-presence{position:absolute;right:-2px;bottom:-2px;width:7px;height:7px;border-radius:50%;border:1.5px solid var(--surface)}.rr-row-hash{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:5px;background:color-mix(in srgb,var(--ink) 6%,transparent);border:1px solid color-mix(in srgb,var(--border) 40%,transparent);color:color-mix(in srgb,var(--ink) 70%,transparent);font-family:var(--font-mono);font-size:11px;font-weight:700;-webkit-user-select:none;user-select:none;transition:background-color .12s,border-color .12s,color .12s}.rr-row-head:hover .rr-row-hash{background:color-mix(in srgb,var(--ink) 10%,transparent);border-color:color-mix(in srgb,var(--border) 60%,transparent);color:var(--ink)}.rr-row--active .rr-row-hash{background:color-mix(in srgb,var(--accent) 14%,transparent);border-color:color-mix(in srgb,var(--accent) 60%,transparent);color:var(--accent)}.rr-row-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;font-family:var(--font-mono);font-size:var(--text-md);color:var(--dim)}.rr-row-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}.rr-row-name{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;color:color-mix(in srgb,var(--ink) 88%,transparent);letter-spacing:.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .12s}.rr-row-head:hover .rr-row-name{color:var(--ink)}.rr-row--active .rr-row-name{font-weight:600;color:var(--ink)}.rr-row--unread .rr-row-name{font-weight:650;color:var(--ink)}.rr-row--unread .rr-row-meta{color:var(--ink);font-weight:600}.rr-row-sub{font-family:var(--font-mono);font-size:var(--text-2xs);color:color-mix(in srgb,var(--ink) 58%,transparent);letter-spacing:var(--tracking-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rr-row--active .rr-row-sub{color:color-mix(in srgb,var(--ink) 78%,transparent)}.rr-row-worktree{overflow:hidden;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-3xs);letter-spacing:var(--tracking-sm);text-overflow:ellipsis;white-space:nowrap}.rr-row-activity{min-height:12px;display:inline-flex;align-items:center;gap:var(--space-xs);margin-top:1px;color:var(--green);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:650;letter-spacing:var(--tracking-md);text-transform:uppercase}.rr-row-activity--pending{color:var(--accent)}.rr-row-activity--attention{color:var(--amber)}.rr-row-activity-bars{flex:0 0 auto;width:18px;height:10px;display:inline-grid;grid-template-columns:repeat(4,1fr);align-items:end;gap:2px}.rr-row-activity-bars span{display:block;min-height:3px;border-radius:var(--radius-pill);background:currentColor;opacity:.45;animation:rr-row-activity-rise 1.05s ease-in-out infinite}.rr-row-activity-bars span:nth-child(1){height:38%;animation-delay:0ms}.rr-row-activity-bars span:nth-child(2){height:72%;animation-delay:.11s}.rr-row-activity-bars span:nth-child(3){height:52%;animation-delay:.22s}.rr-row-activity-bars span:nth-child(4){height:84%;animation-delay:.33s}.rr-row-activity-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes rr-row-activity-rise{0%,to{opacity:.38;transform:scaleY(.66)}45%{opacity:1;transform:scaleY(1)}}@media(prefers-reduced-motion:reduce){.rr-row-activity-bars span{animation:none;opacity:.8;transform:none}}.rr-row-meta{flex:0 0 auto;font-family:var(--font-mono);font-size:var(--text-2xs);color:color-mix(in srgb,var(--ink) 58%,transparent);letter-spacing:var(--tracking-sm)}.rr-row-caret{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;color:color-mix(in srgb,var(--ink) 45%,transparent);border-radius:var(--radius-sm);transition:color .12s,background .12s}.rr-row-caret--leading{width:14px;height:14px;color:color-mix(in srgb,var(--ink) 50%,transparent)}.rr-row-head:hover .rr-row-caret{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.rr-row--unread .rr-row-caret--leading{color:var(--accent)}.rr-chevron{display:block;transition:transform .16s ease}.rr-chevron--open{transform:rotate(90deg)}.rr-row-detail{padding:var(--space-2xs) var(--space-lg) var(--space-sm) var(--space-4xl);background:color-mix(in srgb,var(--accent) 3%,transparent);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--muted);line-height:var(--leading-snug)}.rr-row-detail-preview{color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.rr-spec-list{margin:0;display:flex;flex-direction:column;gap:var(--space-3xs)}.rr-spec{display:grid;grid-template-columns:56px 1fr;column-gap:var(--space-sm);align-items:baseline;margin:0}.rr-spec-label{margin:0;font-size:var(--text-2xs);letter-spacing:var(--tracking-xl);text-transform:uppercase;color:var(--dim);white-space:nowrap}.rr-spec-value{margin:0;font-size:var(--text-sm);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rr-row{position:relative}.rr-row-name{display:inline-flex;align-items:center;gap:5px;max-width:100%}.rr-row-pin-mark{flex:none;display:inline-flex;color:var(--accent);opacity:.9}.rr-row-actions{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:none;align-items:center;gap:2px;padding:1px;border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 92%,var(--bg));border:1px solid color-mix(in srgb,var(--border) 70%,transparent);box-shadow:0 4px 12px #01020259;z-index:2}.rr-row--has-actions:hover .rr-row-actions,.rr-row--has-actions:focus-within .rr-row-actions{display:inline-flex}.rr-row--has-actions:hover .rr-row-meta,.rr-row--has-actions:focus-within .rr-row-meta{opacity:0}.rr-row-action{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;padding:0 5px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-sm);cursor:pointer}.rr-row-action:hover{background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink)}.rr-row-action--on,.rr-row-action--on:hover{color:var(--accent)}
@@ -0,0 +1 @@
1
+ import{r as o,j as n}from"./index-CZ-05hKz.js";/* empty css */import{D as O}from"./DataTable-6IDhanr5.js";import{p as W,a as L}from"./api-Co9aQ2Jw.js";import{t as U,n as R,f as Y}from"./time-Dhsh_2EG.js";import{u as G}from"./tail-events-BMQmSx1n.js";import{o as Q}from"./openContent-C6XO6kr5.js";import{u as X}from"./Provider-B2xuo3rf.js";/* empty css */import"./perf-PX8Rx0EP.js";import"./index-BWHgHrtv.js";import"./router-DJj2WbDg.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-BQ6t92tJ.js";import"./sse-CiOSzE5n.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BJIamJOH.js";import"./DocumentFocusViewer-DZVhS7as.js";import"./createLucideIcon-DXpqZP7I.js";import"./TextDocumentSurface-CKQP-cBT.js";import"./file-text-KijGBnME.js";import"./x-e3h2hDsp.js";import"./chevron-right-CzH-TaSF.js";import"./code-xml-Jtxsp5d1.js";import"./arrow-left-CghA0kTw.js";import"./arrow-right-iJFv3jNh.js";import"./scout-voice-BhPzrc6P.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-DFhAJkW3.js";import"./NewChatComposer-hlWT-nbR.js";import"./text-CnZ0e1-V.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-BiohlpM3.js";import"./conversation-model-CwF6Y9gx.js";import"./index-BVlMw8x_.js";import"./HarnessMark-D5CA5uSp.js";import"./NewChatOrigin-DdpzE4kz.js";import"./chevron-down-Mp9mu_yd.js";import"./search-D1tJSAWe.js";import"./chunk-HRAB3GC3-swV8PA2k.js";const q=1e4,J=500,$=1e3,Z=6e4,D="/api/tail/discover",_=`/api/tail/recent?limit=${J}`,P=3e4,tt=[{key:"status",label:"status",cls:"s-atop-col-status",kind:"text",sortable:!1,defaultWidth:96,minWidth:70,render:t=>n.jsxs("span",{className:`s-atop-status s-atop-status--${t.status}`,children:[n.jsx("span",{className:"s-atop-status-dot","aria-hidden":"true"}),t.statusLabel]})},{key:"session",label:"session",cls:"s-atop-col-agent",kind:"text",sortable:!1,defaultWidth:168,minWidth:110,maxWidth:280,render:t=>n.jsxs("div",{className:"s-atop-agent-cell",title:t.sessionId??t.refId,children:[n.jsx("span",{className:`s-atop-chip s-atop-chip--harness s-atop-chip--harness-${st(t.source)}`,children:t.source}),n.jsx("span",{className:"s-atop-agent-id",children:t.refId.slice(0,8)})]})},{key:"project",label:"project",cls:"s-atop-col-project",kind:"text",sortable:!1,defaultWidth:200,minWidth:96,maxWidth:360,render:t=>n.jsx("span",{title:t.cwd??t.project,children:t.project})},{key:"updated",label:"updated",cls:"s-atop-col-last",kind:"time",sortable:!1,defaultWidth:86,minWidth:64,render:t=>n.jsx("span",{title:Y(t.mtimeMs),children:U(Math.max(R(t.mtimeMs)??0,R(t.lastEvent?.ts)??0))||"-"})},{key:"size",label:"size",cls:"s-atop-col-runtime",kind:"number",sortable:!1,defaultWidth:80,minWidth:64,render:t=>nt(t.size)},{key:"path",label:"path",kind:"text",sortable:!1,defaultWidth:360,minWidth:160,maxWidth:800,render:t=>n.jsx("span",{title:t.transcriptPath,children:t.cwd??t.transcriptPath})}];function z(t){const i=t?.trim();if(!i)return null;const r=F(i);return r.endsWith(".jsonl")?r.slice(0,-6):r}function F(t){const i=t.replace(/[\\/]+$/,"");return i.split(/[\\/]/).filter(Boolean).at(-1)??i}function et(t){const r=t.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean);return r.pop(),r.at(-1)??""}function st(t){return t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"unknown"}function nt(t){if(!Number.isFinite(t)||t<0)return"-";if(t<1024)return`${t} B`;const i=t/1024;if(i<1024)return`${i.toFixed(i>=10?0:1)} KiB`;const r=i/1024;return`${r.toFixed(r>=10?0:1)} MiB`}function at(t,i){return i?[t.refId,t.sessionId??"",t.source,t.project,t.cwd??"",t.transcriptPath,t.lastEvent?.summary??"",t.process?.command??""].join(" ").toLowerCase().includes(i.toLowerCase()):!0}function B(t){return`${t.source}\0${t.cwd??""}`}function ot(t){return`${t.source}\0${t.cwd??""}`}function it(t,i,r){if(!t?.transcripts?.length)return[];const d=new Map;for(const s of i){const l=d.get(s.sessionId);(!l||s.ts>l.ts)&&d.set(s.sessionId,s)}const h=new Map;for(const s of t.processes){if(!s.cwd)continue;const l=h.get(B(s));(!l||s.pid<l.pid)&&h.set(B(s),s)}return t.transcripts.map(s=>{const l=z(s.sessionId)??z(s.transcriptPath);if(!l)return null;const u=s.sessionId?d.get(s.sessionId)??null:null,x=h.get(ot(s))??null,m=Math.max(s.mtimeMs,u?.ts??0),j=!!x||r-m<=Z,p=s.project?.trim()||(s.cwd?F(s.cwd):et(s.transcriptPath))||"unknown";return{refId:l,source:s.source||"unknown",project:p,cwd:s.cwd,transcriptPath:s.transcriptPath,sessionId:s.sessionId,mtimeMs:s.mtimeMs,size:s.size,status:j?"run":"idle",statusLabel:j?"active":"idle",lastEvent:u,process:x}}).filter(s=>s!==null).sort((s,l)=>{const u=Math.max(s.mtimeMs,s.lastEvent?.ts??0);return Math.max(l.mtimeMs,l.lastEvent?.ts??0)-u||s.project.localeCompare(l.project)})}function Gt({navigate:t}){const{route:i}=X(),[r]=o.useState(()=>W(D,P)),[d,h]=o.useState(r),[s,l]=o.useState(()=>W(_,P)?.events??[]),[u,x]=o.useState(r===null),[m,j]=o.useState(""),[p,S]=o.useState("all"),[y,k]=o.useState(0),[N,C]=o.useState(null),[T,V]=o.useState(Date.now()),b=o.useRef(null),I=o.useCallback(async()=>{C(null);try{h(await L(D))}catch(e){C(e instanceof Error?e.message:String(e))}finally{x(!1)}},[]);o.useEffect(()=>{I();const e=setInterval(()=>{I()},q);return()=>clearInterval(e)},[I]),o.useEffect(()=>{let e=!1;return(async()=>{try{const a=await L(_);e||l(a.events??[])}catch{}})(),()=>{e=!0}},[]),G(e=>{l(a=>a.length>=$?[...a.slice(a.length-$+1),e]:[...a,e])}),o.useEffect(()=>{const e=setInterval(()=>V(Date.now()),15e3);return()=>clearInterval(e)},[]);const f=o.useMemo(()=>it(d,s,T),[d,s,T]),H=o.useMemo(()=>[...new Set(f.map(e=>e.source))].sort(),[f]),c=o.useMemo(()=>f.filter(e=>(p==="all"||e.source===p)&&at(e,m.trim())),[f,p,m]);o.useEffect(()=>{y>=c.length&&k(Math.max(0,c.length-1))},[c.length,y]);const M=o.useCallback(e=>{e&&Q(t,{view:"sessions",sessionId:e.refId},{returnTo:i})},[t,i]);o.useEffect(()=>{const e=a=>{const E=a.target,A=E instanceof HTMLInputElement||E instanceof HTMLTextAreaElement||(E?.isContentEditable??!1);if(a.key==="/"&&!A){a.preventDefault(),b.current?.focus();return}if(A){a.key==="Escape"&&E===b.current&&(j(""),b.current?.blur());return}if(a.key==="ArrowDown"||a.key==="j"){a.preventDefault(),k(w=>c.length===0?0:Math.min(c.length-1,w+1));return}if(a.key==="ArrowUp"||a.key==="k"){a.preventDefault(),k(w=>Math.max(0,w-1));return}(a.key==="Enter"||a.key==="o")&&(a.preventDefault(),M(c[y]))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[c,y,M]);const K=N?[]:c,g=o.useCallback(e=>`${e.source}:${e.transcriptPath}`,[]),v=o.useMemo(()=>new Map(c.map((e,a)=>[g(e),a])),[c,g]);return n.jsxs("div",{className:"s-atop s-atop--sessions",children:[n.jsxs("div",{className:"s-atop-fbar",children:[n.jsxs("label",{className:"s-atop-search",children:[n.jsx("span",{className:"s-atop-search-prompt",children:"/"}),n.jsx("input",{ref:b,className:"s-atop-search-input",placeholder:"filter sessions",value:m,onChange:e=>j(e.target.value)}),n.jsx("kbd",{className:"s-atop-search-kbd",children:"/"})]}),n.jsx("span",{className:"s-atop-fbar-label",children:"source"}),n.jsxs("button",{type:"button",className:`s-atop-pill${p==="all"?" s-atop-pill--on":""}`,onClick:()=>S("all"),children:["all",n.jsx("span",{className:"s-atop-pill-ct",children:f.length})]}),H.map(e=>n.jsxs("button",{type:"button",className:`s-atop-pill${p===e?" s-atop-pill--on":""}`,onClick:()=>S(e),children:[e,n.jsx("span",{className:"s-atop-pill-ct",children:f.filter(a=>a.source===e).length})]},e)),n.jsx("div",{className:"s-atop-fbar-spacer"})]}),n.jsx(O,{rows:K,columns:tt,rowId:g,storageKey:"openscout.sessions.cols",rowBindings:e=>({onMouseEnter:()=>{const a=v.get(e);a!=null&&k(a)},onFocus:()=>{const a=v.get(e);a!=null&&k(a)}}),onRowClick:e=>M(e),rowClassName:e=>v.get(g(e))===y?"s-atop-row--selected":void 0,empty:N?{title:"Discovery failed",body:N}:{title:"No raw sessions",body:m?"No sessions match the current filter.":"No transcript sessions were discovered."},loading:u,density:"compact",className:"s-atop-data-table",ariaLabel:"Raw sessions"}),n.jsxs("div",{className:"s-atop-keys",children:[n.jsxs("span",{children:[n.jsx("kbd",{children:"/"}),"filter"]}),n.jsxs("span",{children:[n.jsx("kbd",{children:"j/k"}),"select"]}),n.jsxs("span",{children:[n.jsx("kbd",{children:"enter"}),"open"]}),n.jsx("span",{className:"s-atop-keys-spacer"}),n.jsxs("span",{className:"s-atop-keys-count",children:[n.jsx("strong",{children:c.length})," sessions"]})]})]})}export{Gt as RawSessionsTable};