@openscout/scout 0.2.91 → 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 (508) hide show
  1. package/README.md +19 -17
  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-DtTfn4Zk.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-Dtc02KUO.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-BRAkw8YJ.js → AgentLaneCard-Z-aOBR3W.js} +1 -1
  14. package/dist/client/assets/{AgentLaneChrome-T8QE5742.js → AgentLaneChrome-CyhA1reW.js} +1 -1
  15. package/dist/client/assets/AgentLaneDetailSheet-BNzjMjIH.js +4 -0
  16. package/dist/client/assets/{AgentLaneSummaryResize-FyYweLo_.js → AgentLaneSummaryResize-Box8-_rS.js} +1 -1
  17. package/dist/client/assets/AgentLanesEmbedScreen-BmLnN4on.js +1 -0
  18. package/dist/client/assets/{AgentLanesPreflight-Cil3dNwu.js → AgentLanesPreflight-5B6sXvRB.js} +1 -1
  19. package/dist/client/assets/AgentLanesView-DHyzVBk6.js +2 -0
  20. package/dist/client/assets/{AgentLiveActions-DwScaVRF.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-D6WgIDb-.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-Cu93j-Ga.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-BjCOBLze.js → CodeDiffPane-Cn8Y9hAt.js} +1 -1
  36. package/dist/client/assets/{CodeProjectPicker-NSGdCaK0.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-Dzqiaha4.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-C3a7hJWO.js → EmbeddableSurfacesLab-BKUFJMCV.js} +1 -1
  53. package/dist/client/assets/{EmptyState-CYNJZMrZ.js → EmptyState-CeBl0iGd.js} +1 -1
  54. package/dist/client/assets/{FileViewerPane-Fwt8_KmD.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-DrE57dUq.js → HarnessMark-D5CA5uSp.js} +1 -1
  58. package/dist/client/assets/HarnessesScreen-DhFXq1qz.js +1 -0
  59. package/dist/client/assets/{HerdrSession-1eVu9Owj.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-CbPVg3fr.js → KnowledgeSearchInspector-CZPyVNSw.js} +1 -1
  64. package/dist/client/assets/KnowledgeSearchScreen-mGTKIg00.js +1 -0
  65. package/dist/client/assets/{LaneToolHoverCard-BkBcDYm-.js → LaneToolHoverCard-D_DMlBeT.js} +1 -1
  66. package/dist/client/assets/LaneTraceDetailSheet-BEHg3LmH.js +1 -0
  67. package/dist/client/assets/{LaneTraceEventFocus-BmMmPTyJ.js → LaneTraceEventFocus-DVimcizS.js} +1 -1
  68. package/dist/client/assets/{MeshCanvas-DwkjsiJ5.js → MeshCanvas-BOuZx4AM.js} +2 -2
  69. package/dist/client/assets/{MeshCanvasMinimap-vmCpU1sD.js → MeshCanvasMinimap-wL-1N94e.js} +1 -1
  70. package/dist/client/assets/MeshScreen-DMY9Bmh5.js +1 -0
  71. package/dist/client/assets/{MeshTopologyView-BD2xLE2C.js → MeshTopologyView-DiDcX5f4.js} +2 -2
  72. package/dist/client/assets/MessagesScreen-Eulveud3.js +1 -0
  73. package/dist/client/assets/{MissionContextRail-D5MEP2f4.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-DXPvX-hh.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-C5QWwZCn.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-xjzjcJ_c.js → RepoDiffEmbedScreen-DXWoRF_c.js} +1 -1
  101. package/dist/client/assets/{RepoDiffPageScreen-DRzIY-dk.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-BENBUt5-.js → ScoutSurface-UsRy0t-I.js} +1 -1
  107. package/dist/client/assets/{ScoutbotFxLab-Bk2ZsfPp.js → ScoutbotFxLab-Fmdfboxs.js} +1 -1
  108. package/dist/client/assets/{SecondaryNav-B4IsujYh.js → SecondaryNav-o2RL9H8H.js} +1 -1
  109. package/dist/client/assets/{SessionEmbedScreen-CPfH-jqN.js → SessionEmbedScreen-RD5XOx7R.js} +1 -1
  110. package/dist/client/assets/{SessionObserve-B-SkP3tu.js → SessionObserve-Dsd0j05N.js} +9 -9
  111. package/dist/client/assets/{SessionObserveEvidence-CF5jnH3-.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-DH8yYDks.js → ShikiPane-BfHc_3pM.js} +1 -1
  118. package/dist/client/assets/{SlidePanel-RFXJpfUa.js → SlidePanel-C-q7XwTa.js} +1 -1
  119. package/dist/client/assets/SpriteAvatar-Bs68ZENy.js +1 -0
  120. package/dist/client/assets/{StatusPill-9uy70ttd.js → StatusPill-ZZQwxB1a.js} +1 -1
  121. package/dist/client/assets/{TailView-6bIrgdxN.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-BcP9vvji.js → TextDocumentSurface-CKQP-cBT.js} +1 -1
  126. package/dist/client/assets/{TmuxPeek-IaWqCgyJ.js → TmuxPeek-V9dGESfO.js} +1 -1
  127. package/dist/client/assets/{VoicePermissionsPanel-C80iZxgy.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-DS0u0Itf.js → activity-Bj3Hnbj3.js} +1 -1
  131. package/dist/client/assets/{addon-fit-CN888B3D.js → addon-fit-BL-NTWRU.js} +1 -1
  132. package/dist/client/assets/{addon-webgl-CoAnanQS.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-CuK4G_zS.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-BET9ev6q.js → arc.es-IR5r6sj_.js} +1 -1
  145. package/dist/client/assets/archive-BjcGiAy8.js +1 -0
  146. package/dist/client/assets/{arrow-down-DxxPnPwh.js → arrow-down-BydciYFZ.js} +1 -1
  147. package/dist/client/assets/{arrow-left-CXDkJuCg.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-Bj8RjSqW.js → arrow-up-right-CCfZXPqD.js} +1 -1
  150. package/dist/client/assets/{bot-BSGSicKC.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-BfA0T8UD.js → check-C18YQC90.js} +1 -1
  154. package/dist/client/assets/{chevron-down-BVg09D6U.js → chevron-down-Mp9mu_yd.js} +1 -1
  155. package/dist/client/assets/{chevron-right-CaEwYkxE.js → chevron-right-CzH-TaSF.js} +1 -1
  156. package/dist/client/assets/{chunk-HRAB3GC3-HhKwnZCi.js → chunk-HRAB3GC3-swV8PA2k.js} +1 -1
  157. package/dist/client/assets/{chunk-JTPDIGGW-DX2eTIQ_.js → chunk-JTPDIGGW-BKXqcLKw.js} +3 -3
  158. package/dist/client/assets/{chunk-T65CQEWV-D-bOfuCH.js → chunk-T65CQEWV-vYbNJ8E6.js} +1 -1
  159. package/dist/client/assets/{chunk-YOZR3KYS-oS9dlQCI.js → chunk-YOZR3KYS-U65yUmqt.js} +1 -1
  160. package/dist/client/assets/{clock-C3TUL7D7.js → clock-B4PTFi5m.js} +1 -1
  161. package/dist/client/assets/{code-xml-Dbvjk9Kw.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-DmC_Ak3z.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-C79v_7D-.js → copy-Dtpx4FOE.js} +1 -1
  185. package/dist/client/assets/cpu-BjVis9mc.js +1 -0
  186. package/dist/client/assets/{createLucideIcon-DCq_3fQn.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-Dd8xaveL.js → external-link-Ckiyzjwo.js} +1 -1
  192. package/dist/client/assets/{eye-DkU59kfl.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-BITQqGtF.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-C06GMiwD.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-CHo_xmjw.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-B6ybJlHJ.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-B-l2Wj3-.js → loader-circle-BiohlpM3.js} +1 -1
  233. package/dist/client/assets/{local-agents-Wof5knTJ.js → local-agents-wUIaBcEr.js} +1 -1
  234. package/dist/client/assets/{mentions-BjXfeF7t.js → mentions-CcPFMbmZ.js} +1 -1
  235. package/dist/client/assets/mesh-buckets-ByyFXdKT.js +1 -0
  236. package/dist/client/assets/{mesh-ops-C1gq8zKf.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-B56D3f77.js → mesh-view-store-BpxGm71b.js} +1 -1
  240. package/dist/client/assets/{message-circle-BwVx5X0q.js → message-circle-B2ddzBrX.js} +1 -1
  241. package/dist/client/assets/{message-markup-DlVX-iuc.js → message-markup-RkfmDfME.js} +1 -1
  242. package/dist/client/assets/{message-square-BnkG6tae.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-CMgIVjLJ.js → mission-control-store-Bf4b54MV.js} +1 -1
  246. package/dist/client/assets/{observe-DVHAcIrv.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-Bg2hd27j.js → page-status-BptpTdQ-.js} +1 -1
  249. package/dist/client/assets/{paperclip-DblaLD_N.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-BAI0t5g9.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-BGtkyCG9.js → radio-Dm1ItnA4.js} +1 -1
  258. package/dist/client/assets/{refresh-cw-DtF8xPqX.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-c4PAdFYZ.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-BWh18pt_.js → rocket-DOwXHKWA.js} +1 -1
  272. package/dist/client/assets/router-DJj2WbDg.js +1 -0
  273. package/dist/client/assets/{scope-views-Dm2_-NPi.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-DZb3mmYo.js → scroll-text-DO0GQzvN.js} +1 -1
  278. package/dist/client/assets/{search-1QMVOxF3.js → search-D1tJSAWe.js} +1 -1
  279. package/dist/client/assets/secondaryNavConfig-B9IF8wXl.js +1 -0
  280. package/dist/client/assets/{selection-bridge-O9C4kGfF.js → selection-bridge-i2S9zpf8.js} +1 -1
  281. package/dist/client/assets/{send-horizontal-DbyEkGql.js → send-horizontal-CgLppsIC.js} +1 -1
  282. package/dist/client/assets/{server-Bncn9S7r.js → server-Dymv5Emh.js} +1 -1
  283. package/dist/client/assets/{session-catalog-DC6BlBBC.js → session-catalog-DNaOEzoQ.js} +1 -1
  284. package/dist/client/assets/{session-table-BUPq9Viy.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-CMe8Bay1.js → sliders-horizontal-BPSMHhbm.js} +1 -1
  287. package/dist/client/assets/{sparkles-_7cTZsIH.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-C12pfUax.js → tail-events-BMQmSx1n.js} +1 -1
  292. package/dist/client/assets/{terminal-relay-BgfVJXIL.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--05EYhJm.js → terminal-takeover-DANQfTcy.js} +1 -1
  296. package/dist/client/assets/{terminal-xGf_F3y7.js → terminal-yN9xN-h9.js} +1 -1
  297. package/dist/client/assets/{runtime-picker-BXKJbLot.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-Cnwa4hTK.js → use-fleet-active-asks-BeAdcl09.js} +1 -1
  301. package/dist/client/assets/{use-mesh-ops-items-BRFm37oY.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-FkMreOOb.js → use-scout-dev-flags-B2KCzPxn.js} +1 -1
  304. package/dist/client/assets/{useAgentHoverCard-DvPZSJK3.js → useAgentHoverCard-CHBsxcbp.js} +1 -1
  305. package/dist/client/assets/useContentSecondaryNav-D0mUhxTF.js +1 -0
  306. package/dist/client/assets/{usePierreRuntime-C8WJ0X3F.js → usePierreRuntime-DUuXH5yp.js} +1 -1
  307. package/dist/client/assets/{wrench-_tHBGTop.js → wrench-YcXMlsh2.js} +1 -1
  308. package/dist/client/assets/{x-CrGUKNRv.js → x-e3h2hDsp.js} +1 -1
  309. package/dist/client/assets/{xterm-Ks-VlLTq.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 +19862 -77878
  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/dist/scout-web-server.mjs +2 -96660
  329. package/package.json +6 -3
  330. package/dist/client/assets/ActivityScreen-BUeb4ERK.js +0 -1
  331. package/dist/client/assets/AgentAvatar-CneOa70z.js +0 -1
  332. package/dist/client/assets/AgentConfigurationScreen-CkZ7EjZh.js +0 -1
  333. package/dist/client/assets/AgentDefinitionsWorkspace-0Y3kqMtv.js +0 -1
  334. package/dist/client/assets/AgentFloorView-B5raPB_U.js +0 -1
  335. package/dist/client/assets/AgentInfoScreen-DFG4ElZD.js +0 -1
  336. package/dist/client/assets/AgentLaneDetailSheet-C8RYotnv.js +0 -4
  337. package/dist/client/assets/AgentLanesEmbedScreen-Br7cmZVO.js +0 -1
  338. package/dist/client/assets/AgentLanesView-DPfO8MOo.js +0 -2
  339. package/dist/client/assets/AgentSessions-DKoWA0Lm.js +0 -6
  340. package/dist/client/assets/AgentsConsole-DoBIWGoq.js +0 -1
  341. package/dist/client/assets/AgentsScreen-JuUiSuwY.js +0 -1
  342. package/dist/client/assets/AgentsSubnav-BV0WAgzf.js +0 -1
  343. package/dist/client/assets/AtopView-ycxMrRwp.js +0 -1
  344. package/dist/client/assets/BriefingDetailScreen-Zw-taW1s.js +0 -6
  345. package/dist/client/assets/BriefingsScreen-BerYOoWS.js +0 -1
  346. package/dist/client/assets/BrokerScreen-CeN90URH.js +0 -5
  347. package/dist/client/assets/ChatCollapsedStrip-DdKyMSEM.js +0 -1
  348. package/dist/client/assets/CodeScreen-CA9Sq6Dx.js +0 -1
  349. package/dist/client/assets/ContextMenu-DnFcmfMR.js +0 -1
  350. package/dist/client/assets/ConversationComposer-CjRXFkvY.js +0 -1
  351. package/dist/client/assets/ConversationFeedRows-CgRTIpAv.js +0 -1
  352. package/dist/client/assets/ConversationHeader-CRmdtuL7.js +0 -1
  353. package/dist/client/assets/ConversationPanels-DCkcLIHk.js +0 -2
  354. package/dist/client/assets/ConversationScreen-Br0QQ3xo.js +0 -1
  355. package/dist/client/assets/ConversationScreen-yIKEsm-8.css +0 -1
  356. package/dist/client/assets/ConversationStatus-BJ1CMbAv.js +0 -1
  357. package/dist/client/assets/DispatchAftermath-B0WMg_z3.js +0 -1
  358. package/dist/client/assets/DocumentFocusViewer-CZVVIAD5.js +0 -1
  359. package/dist/client/assets/FleetSearch-Dsi_l2KW.js +0 -1
  360. package/dist/client/assets/FleetSearch-EXOe8ulE.css +0 -1
  361. package/dist/client/assets/FlightObserveScreen-g_tiGmvz.js +0 -1
  362. package/dist/client/assets/FollowScreen-Bb_rcrzi.js +0 -1
  363. package/dist/client/assets/HarnessesScreen-CAsCJ_tG.js +0 -1
  364. package/dist/client/assets/HomeHero-DEl-WBsT.css +0 -1
  365. package/dist/client/assets/HomeHero-W445QrG1.js +0 -1
  366. package/dist/client/assets/KnowledgeSearchScreen-C1lN1xJk.js +0 -1
  367. package/dist/client/assets/LaneTraceDetailSheet-CzTd44rf.js +0 -1
  368. package/dist/client/assets/MeshScreen-CkMepUpT.js +0 -1
  369. package/dist/client/assets/MessageComposerSuggestions-qbalTne_.js +0 -1
  370. package/dist/client/assets/MessagesScreen-C8UynyLC.js +0 -1
  371. package/dist/client/assets/MissionControlView-K_I7eftL.js +0 -1
  372. package/dist/client/assets/MissionFocusOverlay-CWKLdUKG.js +0 -1
  373. package/dist/client/assets/MissionLeftAgentRow-ByGrNAcs.js +0 -1
  374. package/dist/client/assets/MissionLogPane-ZwHJ137T.js +0 -1
  375. package/dist/client/assets/NewAgentModal-Do9aVvan.js +0 -1
  376. package/dist/client/assets/NewChatComposer-DKlNX1UA.js +0 -19
  377. package/dist/client/assets/ObserveEmbedScreen-Dghsq2on.js +0 -2
  378. package/dist/client/assets/ObserveTextFlow-DWNlmTVm.js +0 -2
  379. package/dist/client/assets/ObservedTopologyPanel-BlmGoxCE.js +0 -2
  380. package/dist/client/assets/OpenScoutAppShell-DDqQi-oe.js +0 -87
  381. package/dist/client/assets/OpsAgentsView-Bn_fGBdo.js +0 -1
  382. package/dist/client/assets/OpsScreen-DHnT-Q9R.js +0 -1
  383. package/dist/client/assets/OpsSubnav-CJRD7MjM.js +0 -1
  384. package/dist/client/assets/PlanView-B6gKo543.js +0 -1
  385. package/dist/client/assets/ProjectAgentProfile-Be1VOkI4.js +0 -1
  386. package/dist/client/assets/ProjectAgentProfileHero-DC7Dd8VL.js +0 -1
  387. package/dist/client/assets/ProjectsInbox-DCLrDmj1.js +0 -2
  388. package/dist/client/assets/ProjectsRail-C4hiXYSb.js +0 -1
  389. package/dist/client/assets/ProjectsScreen-jruZRjgD.js +0 -1
  390. package/dist/client/assets/ProjectsThreadAside-DYmL2dCY.js +0 -1
  391. package/dist/client/assets/Provider-p-xuaAoE.js +0 -1
  392. package/dist/client/assets/RailRow-Cf9LOiEj.css +0 -1
  393. package/dist/client/assets/RailRow-bRkkXIpR.js +0 -1
  394. package/dist/client/assets/RawSessionsTable-B7WKmXrk.js +0 -1
  395. package/dist/client/assets/RealtimeVoiceScreen-BzP3BQq9.js +0 -1
  396. package/dist/client/assets/RepoDiffViewer-CNDp01KM.js +0 -7
  397. package/dist/client/assets/RepoDiffViewerLazy-b6vjYxez.js +0 -2
  398. package/dist/client/assets/ReposScreen-CpaLC_NU.js +0 -6
  399. package/dist/client/assets/ScoutDeckSurface-DkpZ-0DH.js +0 -1
  400. package/dist/client/assets/ScoutbotBroadcastChip-CGZyxS5H.js +0 -2
  401. package/dist/client/assets/ScoutbotRealtimeVoiceCall-n63LdBZs.js +0 -1
  402. package/dist/client/assets/SessionRefScreen-C-4jjmVG.js +0 -1
  403. package/dist/client/assets/SessionsScreen-HAjFvmIq.js +0 -1
  404. package/dist/client/assets/SettingsDrawer-DATxwZrn.js +0 -3
  405. package/dist/client/assets/SettingsDrawer-UX7pFJU_.css +0 -1
  406. package/dist/client/assets/SettingsScreen-Bu53X7J_.js +0 -1
  407. package/dist/client/assets/SpriteAvatar-CEYdCzem.js +0 -1
  408. package/dist/client/assets/Terminal-BI6km7H4.js +0 -1
  409. package/dist/client/assets/TerminalEmbedScreen-D4JOWwtm.js +0 -1
  410. package/dist/client/assets/WorkDetailScreen-CweZ6fEd.js +0 -5
  411. package/dist/client/assets/WorkFilesViewer-Dy_-06iI.js +0 -1
  412. package/dist/client/assets/agent-identity-BxCsXnDp.js +0 -1
  413. package/dist/client/assets/agent-lane-detail-BNNm6FNu.js +0 -2
  414. package/dist/client/assets/api-h5zurxmi.js +0 -1
  415. package/dist/client/assets/broker-display-pp33bLsu.js +0 -2
  416. package/dist/client/assets/collapsed-strip-Dz-of2SM.css +0 -1
  417. package/dist/client/assets/content-BQuEedeL.js +0 -1
  418. package/dist/client/assets/content-BUae-L_N.js +0 -1
  419. package/dist/client/assets/content-BfG98J1k.js +0 -1
  420. package/dist/client/assets/content-BkVTfkAC.js +0 -1
  421. package/dist/client/assets/content-BsNMos_d.js +0 -1
  422. package/dist/client/assets/content-C2TZOKSE.js +0 -1
  423. package/dist/client/assets/content-CCn98eSk.js +0 -1
  424. package/dist/client/assets/content-CJuH5cDP.js +0 -1
  425. package/dist/client/assets/content-CYnPp9yo.js +0 -1
  426. package/dist/client/assets/content-CcrUhm4P.js +0 -1
  427. package/dist/client/assets/content-CiOMtgQc.js +0 -1
  428. package/dist/client/assets/content-CxuVONeQ.js +0 -1
  429. package/dist/client/assets/content-Dmq9n1_L.js +0 -1
  430. package/dist/client/assets/content-DskHP2NI.js +0 -1
  431. package/dist/client/assets/content-DvvzL2HK.js +0 -1
  432. package/dist/client/assets/content-snCAUbwv.js +0 -1
  433. package/dist/client/assets/conversation-model-CHwHZNw-.js +0 -1
  434. package/dist/client/assets/conversation-motion-features-DPiGTO21.js +0 -1
  435. package/dist/client/assets/ctx-panel-B4s49N9e.css +0 -1
  436. package/dist/client/assets/discover-IEnbrH8_.js +0 -2
  437. package/dist/client/assets/embed-entry-XUPb-AzL.js +0 -2
  438. package/dist/client/assets/gestures-B5rLNRpi.js +0 -1
  439. package/dist/client/assets/harnesses-screen-DBZoTZz8.css +0 -1
  440. package/dist/client/assets/home-moving-signal-Bs635mVw.js +0 -1
  441. package/dist/client/assets/home-moving-signal-CAa0V91u.css +0 -1
  442. package/dist/client/assets/home-now-card-VxlLjg1A.js +0 -1
  443. package/dist/client/assets/hooks-BWiLxTw1.js +0 -2
  444. package/dist/client/assets/index-9as_JTUs.css +0 -1
  445. package/dist/client/assets/index-BTj2MguM.js +0 -1
  446. package/dist/client/assets/index-BZovGpDk.js +0 -10
  447. package/dist/client/assets/index-CvF09yvf.css +0 -1
  448. package/dist/client/assets/index-DiiEQwdc.js +0 -1
  449. package/dist/client/assets/index-vbaJ8sin.js +0 -1
  450. package/dist/client/assets/inspector-panel-C96HcyK5.js +0 -2
  451. package/dist/client/assets/left-Bk3XnxPD.css +0 -1
  452. package/dist/client/assets/left-BuJ0wJW1.js +0 -2
  453. package/dist/client/assets/left-C6Zj3cR4.js +0 -1
  454. package/dist/client/assets/left-CCoobxPS.css +0 -1
  455. package/dist/client/assets/left-COMAiMfB.js +0 -2
  456. package/dist/client/assets/left-Ce4WKYPK.js +0 -1
  457. package/dist/client/assets/left-DMJkmJOF.js +0 -1
  458. package/dist/client/assets/left-DrCbY6ja.js +0 -1
  459. package/dist/client/assets/left-agents-BuSyVNGE.js +0 -1
  460. package/dist/client/assets/left-default-DRHywOKX.js +0 -1
  461. package/dist/client/assets/left-l92tw5Kc.js +0 -1
  462. package/dist/client/assets/left-lanes-4-aUyyrV.js +0 -1
  463. package/dist/client/assets/left-mission-e849d_Td.js +0 -1
  464. package/dist/client/assets/left-plan-MchYwAB_.js +0 -2
  465. package/dist/client/assets/library-DygjpA6u.js +0 -1
  466. package/dist/client/assets/mesh-buckets-CfAukILK.js +0 -1
  467. package/dist/client/assets/message-visibility-kJM8XcSG.js +0 -1
  468. package/dist/client/assets/mission-control-m3BTDQ9l.css +0 -1
  469. package/dist/client/assets/model-Co0zkMIc.js +0 -1
  470. package/dist/client/assets/plan-view-D56fneVF.css +0 -1
  471. package/dist/client/assets/profile-3Q4sUtvJ.js +0 -1
  472. package/dist/client/assets/projects-inbox-COZ23dLR.css +0 -1
  473. package/dist/client/assets/projects-inbox-Da2hYEn6.js +0 -1
  474. package/dist/client/assets/resolve-panes-D4tlKNCT.js +0 -1
  475. package/dist/client/assets/resolve-sidebar-context-B27lj3Ci.js +0 -1
  476. package/dist/client/assets/right-B8qg3JdB.js +0 -1
  477. package/dist/client/assets/right-BU_W1kSH.js +0 -1
  478. package/dist/client/assets/right-BlR7h0US.js +0 -1
  479. package/dist/client/assets/right-BwgwTGGd.js +0 -1
  480. package/dist/client/assets/right-ByptvkVX.js +0 -1
  481. package/dist/client/assets/right-CUP-NIDG.js +0 -1
  482. package/dist/client/assets/right-Ch_jrNe2.js +0 -1
  483. package/dist/client/assets/right-Dd2DscRz.js +0 -1
  484. package/dist/client/assets/right-DmVHd8Xj.js +0 -1
  485. package/dist/client/assets/router-63XV_E7f.js +0 -1
  486. package/dist/client/assets/runtime-picker-vhm0gtLs.css +0 -1
  487. package/dist/client/assets/scout-voice-D8Q5sZOL.js +0 -1
  488. package/dist/client/assets/secondaryNavConfig-c0cz3MkJ.js +0 -1
  489. package/dist/client/assets/sse-Bb0EOcU9.js +0 -1
  490. package/dist/client/assets/system-surfaces-redesign-B7GQhfpw.css +0 -1
  491. package/dist/client/assets/terminal-screen-BqVnCwl0.css +0 -1
  492. package/dist/client/assets/terminal-sessions-AmSgHklm.js +0 -1
  493. package/dist/client/assets/text-DsBWV_4k.js +0 -1
  494. package/dist/client/assets/use-conversation-list-DWX02INv.js +0 -1
  495. package/dist/client/assets/use-reduced-motion-C8cWvIZ3.js +0 -1
  496. package/dist/client/assets/useContentSecondaryNav-CNlrhvvx.js +0 -1
  497. package/dist/highlights-eq9cgrbb.scm +0 -604
  498. package/dist/highlights-ghv9g403.scm +0 -205
  499. package/dist/highlights-hk7bwhj4.scm +0 -284
  500. package/dist/highlights-r812a2qc.scm +0 -150
  501. package/dist/highlights-x6tmsnaa.scm +0 -115
  502. package/dist/injections-73j83es3.scm +0 -27
  503. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  504. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  505. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  506. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  507. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
  508. /package/dist/client/assets/{document-focus-viewer-BSC_JwVE.css → DocumentFocusViewer-BSC_JwVE.css} +0 -0
@@ -1,2 +1,2 @@
1
- import{r as c,j as e}from"./index-BZovGpDk.js";import{S as ps}from"./SlidePanel-RFXJpfUa.js";import{H as A,h as $}from"./HarnessMark-DrE57dUq.js";import{a as Q}from"./api-h5zurxmi.js";import{d as ms,n as hs}from"./time-Dhsh_2EG.js";import{i as fs,c as js,s as es,T as ts,b as as}from"./tail-display-BRcJltQa.js";import{u as xs}from"./tail-events-C12pfUax.js";import{o as ys}from"./openContent-C6XO6kr5.js";import{u as gs}from"./Provider-p-xuaAoE.js";import"./lane-edit-display-C_Aujldz.js";import"./index-BWHgHrtv.js";import"./router-63XV_E7f.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-AmSgHklm.js";import"./sse-Bb0EOcU9.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-DnFcmfMR.js";import"./DocumentFocusViewer-CZVVIAD5.js";import"./createLucideIcon-DCq_3fQn.js";import"./TextDocumentSurface-BcP9vvji.js";/* empty css */import"./file-text-BITQqGtF.js";import"./x-CrGUKNRv.js";import"./chevron-right-CaEwYkxE.js";import"./code-xml-Dbvjk9Kw.js";import"./arrow-left-CXDkJuCg.js";import"./scout-voice-D8Q5sZOL.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-CHo_xmjw.js";import"./MessageComposerSuggestions-qbalTne_.js";import"./NewChatComposer-DKlNX1UA.js";import"./runtime-picker-BXKJbLot.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-B-l2Wj3-.js";import"./index-DiiEQwdc.js";import"./conversation-model-CHwHZNw-.js";import"./NewChatOrigin-DXPvX-hh.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BVg09D6U.js";import"./search-1QMVOxF3.js";import"./chunk-HRAB3GC3-HhKwnZCi.js";const Z=5e3,bs=500,ks=3e4,ls="openscout:tail-display-mode",E={"scout-managed":"scout","hudson-managed":"hudson",unattributed:"native"},rs={"scout-managed":"sc","hudson-managed":"hu",unattributed:"na"};function Ns(s){return s?.trim().toLowerCase()||"unknown"}function ws(s,t){const l=new Map,o=s?.transcripts?.length?s.transcripts:s?.processes.length?s.processes:t;for(const r of o){const i=Ns(r.source);l.set(i,(l.get(i)??0)+1)}return[...l.entries()].map(([r,i])=>({source:r,count:i})).sort((r,i)=>i.count-r.count||r.source.localeCompare(i.source))}function Ss(s){return ms(s,{milliseconds:!0})||"—"}function $s(s,t,l=1){return`${s.id}:${s.ts}:${l}:${t}`}function Es(){try{const s=sessionStorage.getItem(ls);if(s==="work"||s==="all")return s}catch{}return"work"}const Is=/\b(error|failed|failure|exception|panic|timeout|timed out|refused|crash|fatal|non[- ]?zero|exit(?:ed)? with code [1-9])\b/i,Ts=/\b(warn(?:ing)?|deprecated|retry|rate limit|rate-limited|blocked|skipped|interrupted|aborted|stale|conflict|permission denied|denied)\b/i;function is(s){const t=s.replace(/[_-]+/g," ");return Is.test(t)?"error":Ts.test(t)?"warn":null}function v(s){return!(s==null||s===!1||typeof s=="string"&&!s.trim())}function Y(s,t=0){if(s==null||t>4||typeof s=="string"||typeof s!="object")return null;if(Array.isArray(s)){let o=null;for(const r of s.slice(0,40)){const i=Y(r,t+1);if(i==="error")return"error";o??=i}return o}let l=null;for(const[o,r]of Object.entries(s).slice(0,80)){const i=o.toLowerCase();if((i==="is_error"||i==="failed")&&r===!0||i==="error"&&v(r))return"error";if((i==="warning"||i==="warn")&&v(r)&&(l="warn"),typeof r=="string"&&(i==="level"||i==="severity"||i==="status"||i==="type"||i==="subtype")){const d=is(r);if(d==="error")return"error";l??=d}const m=Y(r,t+1);if(m==="error")return"error";l??=m}return l}function ns(s){const t=Y(s.raw);if(t==="error")return"error";if(s.kind==="tool-result"||s.kind==="system"||s.kind==="other"){const l=is(s.summary);return l==="error"?"error":t??l}return t}function Cs(s,t){return t==="all"?!0:t==="warn-plus"?s!=null:s==="error"}function Ls(s){switch(s){case"errors-only":return"errors";case"warn-plus":return"warnings or errors";case"all":return"all session events"}}function _s(s,t,l=null,o="all"){if(!t)return!0;const r=E[s.harness],i=l==="error"?"error failed failure issue":l==="warn"?"warn warning issue":"",d=(o==="context"?[s.project,s.cwd,s.sessionId,s.source,s.harness,r,i]:[s.summary,s.project,s.cwd,s.sessionId,s.source,s.harness,r,i]).join(" ").toLowerCase(),u=t.toLowerCase().split("|").map(p=>p.trim()).filter(Boolean);return u.length===0?!0:u.some(p=>d.includes(p))}function Rs(s){try{return JSON.stringify(s,null,2)??""}catch{return String(s)}}function Ds(s){return[["time",P(s.ts)],["kind",s.kind],["project",s.project],["cwd",s.cwd||"—"],["session",s.sessionId||"—"],["source",$(s.source)],["origin",E[s.harness]],["pid",s.parentPid!=null?`${s.pid} <- ${s.parentPid}`:String(s.pid)]].map(([l,o])=>`${l}: ${o}`).join(`
2
- `)}function Ms(s){const t=$(s.source),l=E[s.harness],o=Rs(s.raw??s),r=[{label:"Time",value:P(s.ts)},{label:"Kind",value:s.kind},{label:"Project",value:s.project},{label:"Cwd",value:s.cwd||"—"},{label:"Session",value:s.sessionId||"—"},{label:"Source",value:t},{label:"Origin",value:l},{label:"Pid",value:s.parentPid!=null?`${s.pid} <- ${s.parentPid}`:String(s.pid)}];return{source:"tail",focus:"item",title:`${s.kind} · ${t}`,meta:`${P(s.ts)} · ${s.project} · ${es(s.sessionId)}`,body:s.summary,metadata:r,copy:[{label:"Copy message",value:s.summary},{label:"Copy metadata",value:Ds(s)},{label:"Copy raw",value:o}],action:s.sessionId?{label:"Open session",route:{view:"sessions",sessionId:s.sessionId}}:null}}function ss(s){if(typeof window>"u")return;const t=window;t.scoutOpsDetailSnapshot=s,window.dispatchEvent(new CustomEvent("scout:ops-detail",{detail:s}))}function Le({navigate:s,initialFilter:t,variant:l="tail",chrome:o="full",filterLabel:r,filterScope:i="all"}={}){const{route:m}=gs(),d=l==="issues",u=o==="embedded",[p,f]=c.useState([]),[b,os]=c.useState(null),[y,I]=c.useState(t??""),[O,T]=c.useState(!!t&&!u),[j,H]=c.useState("warn-plus"),[x,B]=c.useState(!1),[w,z]=c.useState(0),[k,J]=c.useState(null),[g,U]=c.useState(Es),C=c.useRef(null),N=c.useRef(null),cs=c.useRef(!0),us=c.useCallback(a=>{f(n=>n.length>=Z?[...n.slice(n.length-Z+1),a]:[...n,a])},[]);xs(us),c.useEffect(()=>{I(t??""),T(!!t&&!u)},[u,t]),c.useEffect(()=>{try{sessionStorage.setItem(ls,g)}catch{}},[g]),c.useEffect(()=>{let a=!1;return(async()=>{try{const n=new URLSearchParams({limit:String(bs)});(u||t)&&n.set("transcripts","true");const h=await Q(`/api/tail/recent?${n.toString()}`);a||f(h.events??[])}catch{}})(),()=>{a=!0}},[u,t]),c.useEffect(()=>{if(!u)return ss(k?Ms(k):null),()=>ss(null)},[u,k]);const K=c.useCallback(async()=>{try{const a=await Q("/api/tail/discover");os(a)}catch{}},[]);c.useEffect(()=>{K();const a=setInterval(()=>{K()},ks);return()=>clearInterval(a)},[K]);const L=c.useMemo(()=>p.map(a=>({event:a,severity:ns(a)})),[p]),V=c.useMemo(()=>{let a=0,n=0;for(const h of L)h.severity==="error"&&n++,h.severity==="warn"&&a++;return{warn:a,error:n,total:a+n}},[L]),G=c.useMemo(()=>L.filter(({event:a,severity:n})=>d&&!Cs(n,j)?!1:_s(a,y,n,i)),[L,y,i,j,d]),S=c.useMemo(()=>{const a=G.filter(({event:n})=>g==="all"||!fs(n));return js(a.map(n=>({event:n.event,meta:n.severity})))},[g,G]);c.useLayoutEffect(()=>{const a=C.current;if(a){if(x){z(n=>n+1);return}a.scrollTop=a.scrollHeight}},[S,x]);const ds=c.useCallback(()=>{const a=C.current;if(!a)return;const h=a.scrollHeight-a.scrollTop-a.clientHeight<24;cs.current=h,h?(B(!1),z(0)):x||B(!0)},[x]),W=c.useCallback(a=>{I(a),T(!0),requestAnimationFrame(()=>N.current?.focus())},[]),q=c.useCallback(a=>{!a||!s||ys(s,{view:"sessions",sessionId:a},{returnTo:m})},[s,m]),_=c.useCallback(()=>{const a=C.current;a&&(a.scrollTop=a.scrollHeight,B(!1),z(0))},[]);c.useEffect(()=>{if(u)return;const a=n=>{const h=n.target,D=h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||(h?.isContentEditable??!1);if(n.key==="/"&&!D){n.preventDefault(),T(!0),requestAnimationFrame(()=>N.current?.focus());return}if(n.key==="Escape"&&O&&document.activeElement===N.current){n.preventDefault(),T(!1),N.current?.blur(),I("");return}(n.key==="g"||n.key==="G")&&!D&&(n.preventDefault(),_())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[u,O,_]);const R=b?.totals?.transcripts??b?.transcripts?.length??0,X=c.useMemo(()=>ws(b,p),[b,p]);return e.jsxs("div",{className:`s-tail s-tail--${o}`,children:[e.jsxs("div",{className:`s-tail-status${d?" s-tail-status--issues":""}`,children:[e.jsxs("span",{className:"s-tail-status-cluster s-tail-status-cluster--metrics",children:[e.jsx("span",{className:`s-tail-live-dot${x?" s-tail-live-dot--paused":""}`,"aria-hidden":"true"}),e.jsx("span",{className:`s-tail-status-state${x?" s-tail-status-state--paused":""}`,children:x?"paused":"live"})]}),!d&&e.jsxs("span",{className:"s-tail-status-cluster s-tail-status-cluster--display",children:[e.jsx("span",{className:"s-tail-status-key",children:"view"}),e.jsxs("span",{className:"s-tail-issue-filter",role:"group","aria-label":"Tail display mode",children:[e.jsx("button",{type:"button",className:`s-tail-issue-filter-btn${g==="work"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>U("work"),"aria-pressed":g==="work",children:"work"}),e.jsxs("button",{type:"button",className:`s-tail-issue-filter-btn${g==="all"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>U("all"),"aria-pressed":g==="all",children:["all:",G.length]})]})]}),d&&e.jsxs("span",{className:"s-tail-status-cluster s-tail-status-cluster--issues",children:[e.jsx("span",{className:"s-tail-status-key",children:"flt"}),e.jsxs("span",{className:"s-tail-issue-filter",role:"group","aria-label":"Alert severity filter",children:[e.jsxs("button",{type:"button",className:`s-tail-issue-filter-btn${j==="errors-only"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>H("errors-only"),"aria-pressed":j==="errors-only",children:["err:",V.error]}),e.jsxs("button",{type:"button",className:`s-tail-issue-filter-btn${j==="warn-plus"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>H("warn-plus"),"aria-pressed":j==="warn-plus",children:["wrn+:",V.total]}),e.jsxs("button",{type:"button",className:`s-tail-issue-filter-btn${j==="all"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>H("all"),"aria-pressed":j==="all",children:["all:",p.length]})]})]}),e.jsx("span",{className:"s-tail-status-spacer"}),e.jsxs("span",{className:"s-tail-status-cluster s-tail-status-cluster--harnesses",children:[e.jsx("span",{className:"s-tail-status-key",children:"src"}),e.jsx("span",{className:"s-tail-status-inline",children:X.length>0?X.slice(0,4).map(a=>e.jsxs("span",{className:"s-tail-status-src",children:[e.jsx(A,{harness:a.source,size:10,title:null}),e.jsxs("span",{children:[$(a.source),":",a.count]})]},a.source)):e.jsx("span",{className:"s-tail-status-src",children:"—"})})]}),y&&u&&e.jsxs("span",{className:"s-tail-status-filter",title:y,children:["q=",r??"filtered"]})]}),O&&e.jsxs("div",{className:"s-tail-filter",children:[e.jsx("span",{className:"s-tail-filter-prompt",children:"/"}),e.jsx("input",{ref:N,className:"s-tail-filter-input",value:y,placeholder:"substring across summary · project · session",onChange:a=>I(a.target.value),onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),N.current?.blur())},autoFocus:!0,spellCheck:!1}),e.jsx("span",{className:"s-tail-filter-hint",children:"esc to clear"})]}),e.jsxs("div",{className:"s-tail-body",ref:C,onScroll:ds,children:[S.length===0?e.jsxs("div",{className:"s-tail-empty",children:[e.jsxs("span",{className:"s-tail-empty-title",children:[d?"No alert events":"Waiting for events",e.jsx("span",{className:"s-tail-empty-cursor","aria-hidden":"true"})]}),e.jsx("span",{className:"s-tail-empty-body",children:y?u?e.jsxs(e.Fragment,{children:["no events match ",e.jsx("strong",{children:r??"this work filter"})]}):e.jsxs(e.Fragment,{children:["no events match filter ",e.jsx("strong",{children:y})]}):d?e.jsxs(e.Fragment,{children:["no ",Ls(j)," in the buffered session tail"]}):R?e.jsxs(e.Fragment,{children:["watching ",R," transcript",R===1?"":"s"," · no events yet"]}):e.jsx(e.Fragment,{children:"agent tool calls, messages, and system events stream here"})}),!R&&!y&&e.jsxs("span",{className:"s-tail-empty-hint",children:["Start a session to see traffic",e.jsx("span",{className:"s-tail-empty-hint-sep",children:" · "}),e.jsx("code",{children:"scout watch --tail"})]})]}):S.map(({event:a,repeatCount:n,meta:h},D)=>e.jsx(As,{event:a,repeatCount:n,issueSeverity:h,selected:k===a,onSelect:J,onProjectClick:W,onSessionClick:q},$s(a,D,n))),x&&w>0&&e.jsxs("div",{className:"s-tail-divider",onClick:_,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),_())},role:"button",tabIndex:0,"aria-label":`Resume live tail · ${w} new`,children:["── paused · ",w," new · click or press G to jump back to live ──"]})]}),u?e.jsxs("div",{className:"s-tail-keys s-tail-keys--embedded",children:[e.jsxs("span",{children:[S.length," / ",p.length," lines buffered"]}),x&&w>0&&e.jsxs("span",{children:[w," new"]})]}):e.jsxs("div",{className:"s-tail-keys",children:[e.jsxs("span",{children:[e.jsx("kbd",{children:"j"}),e.jsx("kbd",{children:"k"})," scroll"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"/"})," filter"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"G"})," live"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"esc"})," clr"]}),e.jsx("span",{className:"s-tail-keys-spacer"}),e.jsxs("span",{children:[S.length,"/",p.length," buf"]})]}),u&&k&&e.jsx(Ps,{event:k,onClose:()=>J(null),onProjectClick:W,onSessionClick:q})]})}function As({event:s,repeatCount:t=1,issueSeverity:l,selected:o,onSelect:r,onProjectClick:i,onSessionClick:m}){const d=E[s.harness],u=$(s.source),p=l?` s-tail-row--issue s-tail-row--issue-${l}`:"";return e.jsxs("div",{className:`s-tail-row s-tail-row--${s.kind}${p}${o?" s-tail-row--selected":""}`,role:"button",tabIndex:0,onClick:()=>r(s),onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),r(s))},children:[e.jsx("span",{className:"s-tail-cell-time",children:Ss(s.ts)}),e.jsxs("span",{className:"s-tail-token s-tail-token--harness",title:`source: ${u}`,children:[e.jsx(A,{harness:s.source,size:11,title:null}),e.jsx("span",{className:"s-tail-harness-label",children:u})]}),e.jsx("span",{className:"s-tail-token s-tail-token--origin",title:`origin: ${d}`,children:rs[s.harness]}),e.jsxs("span",{className:"s-tail-cell-context",children:[e.jsx(F,{className:"s-tail-link s-tail-link--project",onClick:i?()=>i(s.project):void 0,title:`Filter to ${s.project}`,children:s.project}),e.jsx("span",{className:"s-tail-sep",children:"/"}),e.jsx(F,{className:"s-tail-link s-tail-link--session",onClick:m&&s.sessionId?()=>m(s.sessionId):void 0,title:s.sessionId?`Open session ${s.sessionId}`:void 0,children:es(s.sessionId)}),e.jsx("span",{className:"s-tail-sep",children:":"}),e.jsx("span",{className:"s-tail-cell-pid",title:s.pid>0?`pid ${s.pid}`:"file-backed log",children:s.pid>0?s.pid:"log"})]}),e.jsxs("span",{className:"s-tail-kind",title:s.kind,children:[e.jsx("span",{className:`s-tail-glyph s-tail-glyph--${s.kind}`,children:ts[s.kind]}),e.jsx("span",{className:"s-tail-kind-label",children:as[s.kind]})]}),e.jsxs("span",{className:"s-tail-summary",children:[l==="error"?"✕ ":l==="warn"?"△ ":null,s.summary,t>1?e.jsxs("span",{className:"s-tail-repeat",title:`${t} identical events collapsed`,children:[" ","×",t]}):null]})]})}function F({className:s,onClick:t,title:l,children:o}){return t?e.jsx("span",{className:`${s} s-tail-link--active`,role:"link",tabIndex:0,title:l,onClick:r=>{r.stopPropagation(),t()},onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),r.stopPropagation(),t())},children:o}):e.jsx("span",{className:s,title:l,children:o})}function P(s){const t=hs(s);if(t===null)return"—";const l=new Date(t),o=l.getFullYear(),r=String(l.getMonth()+1).padStart(2,"0"),i=String(l.getDate()).padStart(2,"0"),m=String(l.getHours()).padStart(2,"0"),d=String(l.getMinutes()).padStart(2,"0"),u=String(l.getSeconds()).padStart(2,"0"),p=String(l.getMilliseconds()).padStart(3,"0");return`${o}-${r}-${i} ${m}:${d}:${u}.${p}`}function M(s){return(JSON.stringify(s,null,2)??"undefined").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/("(?:\\.|[^"\\])*"\s*:)|("(?:\\.|[^"\\])*")|\b(true|false|null)\b|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/g,(o,r,i,m,d)=>r?`<span class="s-tail-jk">${r}</span>`:i?`<span class="s-tail-js">${i}</span>`:m?`<span class="s-tail-jl">${m}</span>`:d?`<span class="s-tail-jn">${d}</span>`:o)}function Fs(s){if(!s||typeof s!="object")return null;const t=s,o=t.message?.content??t.content;return Array.isArray(o)?o:typeof o=="string"?[{type:"text",text:o}]:null}function Ps({event:s,onClose:t,onProjectClick:l,onSessionClick:o}){const[r,i]=c.useState(!0),m=E[s.harness],d=$(s.source),u=ns(s),p=Fs(s.raw);return e.jsxs(ps,{open:!0,onClose:t,side:"right",owner:"openscout.tail",resizable:!0,defaultSize:620,minSize:400,maxSize:960,ariaLabel:"Tail event detail",children:[e.jsxs("div",{className:"s-slide-header s-tail-sheet-header",children:[e.jsx("span",{className:`s-tail-glyph s-tail-glyph--${s.kind}`,children:ts[s.kind]}),e.jsx("span",{className:"s-tail-sheet-kind",children:as[s.kind]}),u&&e.jsx("span",{className:`s-tail-token s-tail-token--issue-${u}`,children:u==="error"?"✕":"△"}),e.jsxs("span",{className:"s-tail-token s-tail-token--harness",children:[e.jsx(A,{harness:s.source,size:12,title:null}),e.jsx("span",{className:"s-tail-harness-label",children:d})]}),e.jsx("span",{className:"s-tail-token s-tail-token--origin",title:`origin: ${m}`,children:rs[s.harness]}),e.jsx("span",{className:"s-slide-spacer"}),e.jsx("span",{className:"s-tail-sheet-time",children:P(s.ts)}),e.jsx("button",{type:"button",className:"s-slide-close",onClick:t,"aria-label":"Close",children:"×"})]}),e.jsxs("div",{className:"s-slide-body s-tail-sheet-body",children:[e.jsx("section",{className:"s-tail-sheet-section",children:e.jsxs("div",{className:"s-tail-sheet-grid",children:[e.jsx("span",{className:"s-tail-sheet-key",children:"project"}),e.jsx("span",{className:"s-tail-sheet-val",children:e.jsx(F,{className:"s-tail-link s-tail-link--project",onClick:l?()=>l(s.project):void 0,title:`Filter to ${s.project}`,children:s.project})}),e.jsx("span",{className:"s-tail-sheet-key",children:"cwd"}),e.jsx("span",{className:"s-tail-sheet-val s-tail-sheet-val--mono",children:s.cwd||"—"}),e.jsx("span",{className:"s-tail-sheet-key",children:"session"}),e.jsx("span",{className:"s-tail-sheet-val s-tail-sheet-val--mono",children:e.jsx(F,{className:"s-tail-link s-tail-link--session",onClick:o&&s.sessionId?()=>o(s.sessionId):void 0,title:s.sessionId?`Open session ${s.sessionId}`:void 0,children:s.sessionId||"—"})}),e.jsx("span",{className:"s-tail-sheet-key",children:"harness"}),e.jsxs("span",{className:"s-tail-sheet-val s-tail-sheet-val--harness",children:[e.jsx(A,{harness:s.source,size:13,title:null}),e.jsx("span",{children:d})]}),e.jsx("span",{className:"s-tail-sheet-key",children:"origin"}),e.jsx("span",{className:"s-tail-sheet-val s-tail-sheet-val--mono",children:m}),e.jsx("span",{className:"s-tail-sheet-key",children:"pid"}),e.jsxs("span",{className:"s-tail-sheet-val s-tail-sheet-val--mono",children:[s.pid,s.parentPid!=null?` ← ${s.parentPid}`:""]})]})}),e.jsxs("section",{className:"s-tail-sheet-section",children:[e.jsx("h4",{className:"s-tail-sheet-h",children:"summary"}),e.jsx("div",{className:"s-tail-sheet-summary",children:s.summary})]}),p&&p.length>0&&e.jsxs("section",{className:"s-tail-sheet-section",children:[e.jsx("h4",{className:"s-tail-sheet-h",children:"content"}),p.map((f,b)=>e.jsx(Os,{block:f},b))]}),e.jsxs("section",{className:"s-tail-sheet-section",children:[e.jsxs("button",{type:"button",className:"s-tail-sheet-toggle",onClick:()=>i(f=>!f),children:[r?"▾":"▸"," raw event"]}),r&&e.jsx("pre",{className:"s-tail-sheet-json",dangerouslySetInnerHTML:{__html:M(s.raw??s)}})]})]})]})}function Os({block:s}){if(s.type==="text"){const t=s.text??"";return e.jsx("div",{className:"s-tail-sheet-text",children:t})}if(s.type==="tool_use"){const t=s;return e.jsxs("div",{className:"s-tail-sheet-block s-tail-sheet-block--tool",children:[e.jsxs("div",{className:"s-tail-sheet-block-head",children:[e.jsx("span",{className:"s-tail-glyph s-tail-glyph--tool",children:"*"}),e.jsx("span",{className:"s-tail-sheet-block-title",children:t.name??"tool_use"})]}),e.jsx("pre",{className:"s-tail-sheet-json",dangerouslySetInnerHTML:{__html:M(t.input??{})}})]})}if(s.type==="tool_result"){const t=s,l=typeof t.content=="string";return e.jsxs("div",{className:`s-tail-sheet-block s-tail-sheet-block--tool-result${t.is_error?" s-tail-sheet-block--err":""}`,children:[e.jsxs("div",{className:"s-tail-sheet-block-head",children:[e.jsx("span",{className:"s-tail-glyph s-tail-glyph--tool-result",children:"="}),e.jsxs("span",{className:"s-tail-sheet-block-title",children:["tool_result",t.is_error?" · error":""]})]}),l?e.jsx("pre",{className:"s-tail-sheet-pre",children:t.content}):e.jsx("pre",{className:"s-tail-sheet-json",dangerouslySetInnerHTML:{__html:M(t.content??{})}})]})}return e.jsxs("div",{className:"s-tail-sheet-block",children:[e.jsxs("div",{className:"s-tail-sheet-block-head",children:[e.jsx("span",{className:"s-tail-glyph s-tail-glyph--other",children:"·"}),e.jsx("span",{className:"s-tail-sheet-block-title",children:s.type})]}),e.jsx("pre",{className:"s-tail-sheet-json",dangerouslySetInnerHTML:{__html:M(s)}})]})}export{Le as TailView};
1
+ import{r as c,j as e}from"./index-CZ-05hKz.js";import{S as ps}from"./SlidePanel-C-q7XwTa.js";import{H as A,h as $}from"./HarnessMark-D5CA5uSp.js";import{a as Q}from"./api-Co9aQ2Jw.js";import{d as ms,n as hs}from"./time-Dhsh_2EG.js";import{i as fs,c as js,s as es,T as ts,d as as}from"./tail-display-DcliDVkW.js";import{u as xs}from"./tail-events-BMQmSx1n.js";import{o as ys}from"./openContent-C6XO6kr5.js";import{u as gs}from"./Provider-B2xuo3rf.js";import"./perf-PX8Rx0EP.js";import"./lane-edit-display-C_Aujldz.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"./NewChatOrigin-DdpzE4kz.js";import"./chevron-down-Mp9mu_yd.js";import"./search-D1tJSAWe.js";import"./chunk-HRAB3GC3-swV8PA2k.js";const Z=5e3,bs=500,ks=3e4,ls="openscout:tail-display-mode",E={"scout-managed":"scout","hudson-managed":"hudson",unattributed:"native"},rs={"scout-managed":"sc","hudson-managed":"hu",unattributed:"na"};function Ns(s){return s?.trim().toLowerCase()||"unknown"}function ws(s,t){const l=new Map,o=s?.transcripts?.length?s.transcripts:s?.processes.length?s.processes:t;for(const r of o){const i=Ns(r.source);l.set(i,(l.get(i)??0)+1)}return[...l.entries()].map(([r,i])=>({source:r,count:i})).sort((r,i)=>i.count-r.count||r.source.localeCompare(i.source))}function Ss(s){return ms(s,{milliseconds:!0})||"—"}function $s(s,t,l=1){return`${s.id}:${s.ts}:${l}:${t}`}function Es(){try{const s=sessionStorage.getItem(ls);if(s==="work"||s==="all")return s}catch{}return"work"}const Is=/\b(error|failed|failure|exception|panic|timeout|timed out|refused|crash|fatal|non[- ]?zero|exit(?:ed)? with code [1-9])\b/i,Ts=/\b(warn(?:ing)?|deprecated|retry|rate limit|rate-limited|blocked|skipped|interrupted|aborted|stale|conflict|permission denied|denied)\b/i;function is(s){const t=s.replace(/[_-]+/g," ");return Is.test(t)?"error":Ts.test(t)?"warn":null}function v(s){return!(s==null||s===!1||typeof s=="string"&&!s.trim())}function Y(s,t=0){if(s==null||t>4||typeof s=="string"||typeof s!="object")return null;if(Array.isArray(s)){let o=null;for(const r of s.slice(0,40)){const i=Y(r,t+1);if(i==="error")return"error";o??=i}return o}let l=null;for(const[o,r]of Object.entries(s).slice(0,80)){const i=o.toLowerCase();if((i==="is_error"||i==="failed")&&r===!0||i==="error"&&v(r))return"error";if((i==="warning"||i==="warn")&&v(r)&&(l="warn"),typeof r=="string"&&(i==="level"||i==="severity"||i==="status"||i==="type"||i==="subtype")){const d=is(r);if(d==="error")return"error";l??=d}const m=Y(r,t+1);if(m==="error")return"error";l??=m}return l}function ns(s){const t=Y(s.raw);if(t==="error")return"error";if(s.kind==="tool-result"||s.kind==="system"||s.kind==="other"){const l=is(s.summary);return l==="error"?"error":t??l}return t}function Cs(s,t){return t==="all"?!0:t==="warn-plus"?s!=null:s==="error"}function Ls(s){switch(s){case"errors-only":return"errors";case"warn-plus":return"warnings or errors";case"all":return"all session events"}}function _s(s,t,l=null,o="all"){if(!t)return!0;const r=E[s.harness],i=l==="error"?"error failed failure issue":l==="warn"?"warn warning issue":"",d=(o==="context"?[s.project,s.cwd,s.sessionId,s.source,s.harness,r,i]:[s.summary,s.project,s.cwd,s.sessionId,s.source,s.harness,r,i]).join(" ").toLowerCase(),u=t.toLowerCase().split("|").map(p=>p.trim()).filter(Boolean);return u.length===0?!0:u.some(p=>d.includes(p))}function Rs(s){try{return JSON.stringify(s,null,2)??""}catch{return String(s)}}function Ds(s){return[["time",P(s.ts)],["kind",s.kind],["project",s.project],["cwd",s.cwd||"—"],["session",s.sessionId||"—"],["source",$(s.source)],["origin",E[s.harness]],["pid",s.parentPid!=null?`${s.pid} <- ${s.parentPid}`:String(s.pid)]].map(([l,o])=>`${l}: ${o}`).join(`
2
+ `)}function Ms(s){const t=$(s.source),l=E[s.harness],o=Rs(s.raw??s),r=[{label:"Time",value:P(s.ts)},{label:"Kind",value:s.kind},{label:"Project",value:s.project},{label:"Cwd",value:s.cwd||"—"},{label:"Session",value:s.sessionId||"—"},{label:"Source",value:t},{label:"Origin",value:l},{label:"Pid",value:s.parentPid!=null?`${s.pid} <- ${s.parentPid}`:String(s.pid)}];return{source:"tail",focus:"item",title:`${s.kind} · ${t}`,meta:`${P(s.ts)} · ${s.project} · ${es(s.sessionId)}`,body:s.summary,metadata:r,copy:[{label:"Copy message",value:s.summary},{label:"Copy metadata",value:Ds(s)},{label:"Copy raw",value:o}],action:s.sessionId?{label:"Open session",route:{view:"sessions",sessionId:s.sessionId}}:null}}function ss(s){if(typeof window>"u")return;const t=window;t.scoutOpsDetailSnapshot=s,window.dispatchEvent(new CustomEvent("scout:ops-detail",{detail:s}))}function Ie({navigate:s,initialFilter:t,variant:l="tail",chrome:o="full",filterLabel:r,filterScope:i="all"}={}){const{route:m}=gs(),d=l==="issues",u=o==="embedded",[p,f]=c.useState([]),[b,os]=c.useState(null),[y,I]=c.useState(t??""),[O,T]=c.useState(!!t&&!u),[j,H]=c.useState("warn-plus"),[x,B]=c.useState(!1),[w,z]=c.useState(0),[k,J]=c.useState(null),[g,U]=c.useState(Es),C=c.useRef(null),N=c.useRef(null),cs=c.useRef(!0),us=c.useCallback(a=>{f(n=>n.length>=Z?[...n.slice(n.length-Z+1),a]:[...n,a])},[]);xs(us),c.useEffect(()=>{I(t??""),T(!!t&&!u)},[u,t]),c.useEffect(()=>{try{sessionStorage.setItem(ls,g)}catch{}},[g]),c.useEffect(()=>{let a=!1;return(async()=>{try{const n=new URLSearchParams({limit:String(bs)});(u||t)&&n.set("transcripts","true");const h=await Q(`/api/tail/recent?${n.toString()}`);a||f(h.events??[])}catch{}})(),()=>{a=!0}},[u,t]),c.useEffect(()=>{if(!u)return ss(k?Ms(k):null),()=>ss(null)},[u,k]);const K=c.useCallback(async()=>{try{const a=await Q("/api/tail/discover");os(a)}catch{}},[]);c.useEffect(()=>{K();const a=setInterval(()=>{K()},ks);return()=>clearInterval(a)},[K]);const L=c.useMemo(()=>p.map(a=>({event:a,severity:ns(a)})),[p]),V=c.useMemo(()=>{let a=0,n=0;for(const h of L)h.severity==="error"&&n++,h.severity==="warn"&&a++;return{warn:a,error:n,total:a+n}},[L]),G=c.useMemo(()=>L.filter(({event:a,severity:n})=>d&&!Cs(n,j)?!1:_s(a,y,n,i)),[L,y,i,j,d]),S=c.useMemo(()=>{const a=G.filter(({event:n})=>g==="all"||!fs(n));return js(a.map(n=>({event:n.event,meta:n.severity})))},[g,G]);c.useLayoutEffect(()=>{const a=C.current;if(a){if(x){z(n=>n+1);return}a.scrollTop=a.scrollHeight}},[S,x]);const ds=c.useCallback(()=>{const a=C.current;if(!a)return;const h=a.scrollHeight-a.scrollTop-a.clientHeight<24;cs.current=h,h?(B(!1),z(0)):x||B(!0)},[x]),W=c.useCallback(a=>{I(a),T(!0),requestAnimationFrame(()=>N.current?.focus())},[]),q=c.useCallback(a=>{!a||!s||ys(s,{view:"sessions",sessionId:a},{returnTo:m})},[s,m]),_=c.useCallback(()=>{const a=C.current;a&&(a.scrollTop=a.scrollHeight,B(!1),z(0))},[]);c.useEffect(()=>{if(u)return;const a=n=>{const h=n.target,D=h instanceof HTMLInputElement||h instanceof HTMLTextAreaElement||(h?.isContentEditable??!1);if(n.key==="/"&&!D){n.preventDefault(),T(!0),requestAnimationFrame(()=>N.current?.focus());return}if(n.key==="Escape"&&O&&document.activeElement===N.current){n.preventDefault(),T(!1),N.current?.blur(),I("");return}(n.key==="g"||n.key==="G")&&!D&&(n.preventDefault(),_())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[u,O,_]);const R=b?.totals?.transcripts??b?.transcripts?.length??0,X=c.useMemo(()=>ws(b,p),[b,p]);return e.jsxs("div",{className:`s-tail s-tail--${o}`,children:[e.jsxs("div",{className:`s-tail-status${d?" s-tail-status--issues":""}`,children:[e.jsxs("span",{className:"s-tail-status-cluster s-tail-status-cluster--metrics",children:[e.jsx("span",{className:`s-tail-live-dot${x?" s-tail-live-dot--paused":""}`,"aria-hidden":"true"}),e.jsx("span",{className:`s-tail-status-state${x?" s-tail-status-state--paused":""}`,children:x?"paused":"live"})]}),!d&&e.jsxs("span",{className:"s-tail-status-cluster s-tail-status-cluster--display",children:[e.jsx("span",{className:"s-tail-status-key",children:"view"}),e.jsxs("span",{className:"s-tail-issue-filter",role:"group","aria-label":"Tail display mode",children:[e.jsx("button",{type:"button",className:`s-tail-issue-filter-btn${g==="work"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>U("work"),"aria-pressed":g==="work",children:"work"}),e.jsxs("button",{type:"button",className:`s-tail-issue-filter-btn${g==="all"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>U("all"),"aria-pressed":g==="all",children:["all:",G.length]})]})]}),d&&e.jsxs("span",{className:"s-tail-status-cluster s-tail-status-cluster--issues",children:[e.jsx("span",{className:"s-tail-status-key",children:"flt"}),e.jsxs("span",{className:"s-tail-issue-filter",role:"group","aria-label":"Alert severity filter",children:[e.jsxs("button",{type:"button",className:`s-tail-issue-filter-btn${j==="errors-only"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>H("errors-only"),"aria-pressed":j==="errors-only",children:["err:",V.error]}),e.jsxs("button",{type:"button",className:`s-tail-issue-filter-btn${j==="warn-plus"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>H("warn-plus"),"aria-pressed":j==="warn-plus",children:["wrn+:",V.total]}),e.jsxs("button",{type:"button",className:`s-tail-issue-filter-btn${j==="all"?" s-tail-issue-filter-btn--active":""}`,onClick:()=>H("all"),"aria-pressed":j==="all",children:["all:",p.length]})]})]}),e.jsx("span",{className:"s-tail-status-spacer"}),e.jsxs("span",{className:"s-tail-status-cluster s-tail-status-cluster--harnesses",children:[e.jsx("span",{className:"s-tail-status-key",children:"src"}),e.jsx("span",{className:"s-tail-status-inline",children:X.length>0?X.slice(0,4).map(a=>e.jsxs("span",{className:"s-tail-status-src",children:[e.jsx(A,{harness:a.source,size:10,title:null}),e.jsxs("span",{children:[$(a.source),":",a.count]})]},a.source)):e.jsx("span",{className:"s-tail-status-src",children:"—"})})]}),y&&u&&e.jsxs("span",{className:"s-tail-status-filter",title:y,children:["q=",r??"filtered"]})]}),O&&e.jsxs("div",{className:"s-tail-filter",children:[e.jsx("span",{className:"s-tail-filter-prompt",children:"/"}),e.jsx("input",{ref:N,className:"s-tail-filter-input",value:y,placeholder:"substring across summary · project · session",onChange:a=>I(a.target.value),onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),N.current?.blur())},autoFocus:!0,spellCheck:!1}),e.jsx("span",{className:"s-tail-filter-hint",children:"esc to clear"})]}),e.jsxs("div",{className:"s-tail-body",ref:C,onScroll:ds,children:[S.length===0?e.jsxs("div",{className:"s-tail-empty",children:[e.jsxs("span",{className:"s-tail-empty-title",children:[d?"No alert events":"Waiting for events",e.jsx("span",{className:"s-tail-empty-cursor","aria-hidden":"true"})]}),e.jsx("span",{className:"s-tail-empty-body",children:y?u?e.jsxs(e.Fragment,{children:["no events match ",e.jsx("strong",{children:r??"this work filter"})]}):e.jsxs(e.Fragment,{children:["no events match filter ",e.jsx("strong",{children:y})]}):d?e.jsxs(e.Fragment,{children:["no ",Ls(j)," in the buffered session tail"]}):R?e.jsxs(e.Fragment,{children:["watching ",R," transcript",R===1?"":"s"," · no events yet"]}):e.jsx(e.Fragment,{children:"agent tool calls, messages, and system events stream here"})}),!R&&!y&&e.jsxs("span",{className:"s-tail-empty-hint",children:["Start a session to see traffic",e.jsx("span",{className:"s-tail-empty-hint-sep",children:" · "}),e.jsx("code",{children:"scout watch --tail"})]})]}):S.map(({event:a,repeatCount:n,meta:h},D)=>e.jsx(As,{event:a,repeatCount:n,issueSeverity:h,selected:k===a,onSelect:J,onProjectClick:W,onSessionClick:q},$s(a,D,n))),x&&w>0&&e.jsxs("div",{className:"s-tail-divider",onClick:_,onKeyDown:a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),_())},role:"button",tabIndex:0,"aria-label":`Resume live tail · ${w} new`,children:["── paused · ",w," new · click or press G to jump back to live ──"]})]}),u?e.jsxs("div",{className:"s-tail-keys s-tail-keys--embedded",children:[e.jsxs("span",{children:[S.length," / ",p.length," lines buffered"]}),x&&w>0&&e.jsxs("span",{children:[w," new"]})]}):e.jsxs("div",{className:"s-tail-keys",children:[e.jsxs("span",{children:[e.jsx("kbd",{children:"j"}),e.jsx("kbd",{children:"k"})," scroll"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"/"})," filter"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"G"})," live"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"esc"})," clr"]}),e.jsx("span",{className:"s-tail-keys-spacer"}),e.jsxs("span",{children:[S.length,"/",p.length," buf"]})]}),u&&k&&e.jsx(Ps,{event:k,onClose:()=>J(null),onProjectClick:W,onSessionClick:q})]})}function As({event:s,repeatCount:t=1,issueSeverity:l,selected:o,onSelect:r,onProjectClick:i,onSessionClick:m}){const d=E[s.harness],u=$(s.source),p=l?` s-tail-row--issue s-tail-row--issue-${l}`:"";return e.jsxs("div",{className:`s-tail-row s-tail-row--${s.kind}${p}${o?" s-tail-row--selected":""}`,role:"button",tabIndex:0,onClick:()=>r(s),onKeyDown:f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),r(s))},children:[e.jsx("span",{className:"s-tail-cell-time",children:Ss(s.ts)}),e.jsxs("span",{className:"s-tail-token s-tail-token--harness",title:`source: ${u}`,children:[e.jsx(A,{harness:s.source,size:11,title:null}),e.jsx("span",{className:"s-tail-harness-label",children:u})]}),e.jsx("span",{className:"s-tail-token s-tail-token--origin",title:`origin: ${d}`,children:rs[s.harness]}),e.jsxs("span",{className:"s-tail-cell-context",children:[e.jsx(F,{className:"s-tail-link s-tail-link--project",onClick:i?()=>i(s.project):void 0,title:`Filter to ${s.project}`,children:s.project}),e.jsx("span",{className:"s-tail-sep",children:"/"}),e.jsx(F,{className:"s-tail-link s-tail-link--session",onClick:m&&s.sessionId?()=>m(s.sessionId):void 0,title:s.sessionId?`Open session ${s.sessionId}`:void 0,children:es(s.sessionId)}),e.jsx("span",{className:"s-tail-sep",children:":"}),e.jsx("span",{className:"s-tail-cell-pid",title:s.pid>0?`pid ${s.pid}`:"file-backed log",children:s.pid>0?s.pid:"log"})]}),e.jsxs("span",{className:"s-tail-kind",title:s.kind,children:[e.jsx("span",{className:`s-tail-glyph s-tail-glyph--${s.kind}`,children:ts[s.kind]}),e.jsx("span",{className:"s-tail-kind-label",children:as[s.kind]})]}),e.jsxs("span",{className:"s-tail-summary",children:[l==="error"?"✕ ":l==="warn"?"△ ":null,s.summary,t>1?e.jsxs("span",{className:"s-tail-repeat",title:`${t} identical events collapsed`,children:[" ","×",t]}):null]})]})}function F({className:s,onClick:t,title:l,children:o}){return t?e.jsx("span",{className:`${s} s-tail-link--active`,role:"link",tabIndex:0,title:l,onClick:r=>{r.stopPropagation(),t()},onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),r.stopPropagation(),t())},children:o}):e.jsx("span",{className:s,title:l,children:o})}function P(s){const t=hs(s);if(t===null)return"—";const l=new Date(t),o=l.getFullYear(),r=String(l.getMonth()+1).padStart(2,"0"),i=String(l.getDate()).padStart(2,"0"),m=String(l.getHours()).padStart(2,"0"),d=String(l.getMinutes()).padStart(2,"0"),u=String(l.getSeconds()).padStart(2,"0"),p=String(l.getMilliseconds()).padStart(3,"0");return`${o}-${r}-${i} ${m}:${d}:${u}.${p}`}function M(s){return(JSON.stringify(s,null,2)??"undefined").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/("(?:\\.|[^"\\])*"\s*:)|("(?:\\.|[^"\\])*")|\b(true|false|null)\b|(-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?)/g,(o,r,i,m,d)=>r?`<span class="s-tail-jk">${r}</span>`:i?`<span class="s-tail-js">${i}</span>`:m?`<span class="s-tail-jl">${m}</span>`:d?`<span class="s-tail-jn">${d}</span>`:o)}function Fs(s){if(!s||typeof s!="object")return null;const t=s,o=t.message?.content??t.content;return Array.isArray(o)?o:typeof o=="string"?[{type:"text",text:o}]:null}function Ps({event:s,onClose:t,onProjectClick:l,onSessionClick:o}){const[r,i]=c.useState(!0),m=E[s.harness],d=$(s.source),u=ns(s),p=Fs(s.raw);return e.jsxs(ps,{open:!0,onClose:t,side:"right",owner:"openscout.tail",resizable:!0,defaultSize:620,minSize:400,maxSize:960,ariaLabel:"Tail event detail",children:[e.jsxs("div",{className:"s-slide-header s-tail-sheet-header",children:[e.jsx("span",{className:`s-tail-glyph s-tail-glyph--${s.kind}`,children:ts[s.kind]}),e.jsx("span",{className:"s-tail-sheet-kind",children:as[s.kind]}),u&&e.jsx("span",{className:`s-tail-token s-tail-token--issue-${u}`,children:u==="error"?"✕":"△"}),e.jsxs("span",{className:"s-tail-token s-tail-token--harness",children:[e.jsx(A,{harness:s.source,size:12,title:null}),e.jsx("span",{className:"s-tail-harness-label",children:d})]}),e.jsx("span",{className:"s-tail-token s-tail-token--origin",title:`origin: ${m}`,children:rs[s.harness]}),e.jsx("span",{className:"s-slide-spacer"}),e.jsx("span",{className:"s-tail-sheet-time",children:P(s.ts)}),e.jsx("button",{type:"button",className:"s-slide-close",onClick:t,"aria-label":"Close",children:"×"})]}),e.jsxs("div",{className:"s-slide-body s-tail-sheet-body",children:[e.jsx("section",{className:"s-tail-sheet-section",children:e.jsxs("div",{className:"s-tail-sheet-grid",children:[e.jsx("span",{className:"s-tail-sheet-key",children:"project"}),e.jsx("span",{className:"s-tail-sheet-val",children:e.jsx(F,{className:"s-tail-link s-tail-link--project",onClick:l?()=>l(s.project):void 0,title:`Filter to ${s.project}`,children:s.project})}),e.jsx("span",{className:"s-tail-sheet-key",children:"cwd"}),e.jsx("span",{className:"s-tail-sheet-val s-tail-sheet-val--mono",children:s.cwd||"—"}),e.jsx("span",{className:"s-tail-sheet-key",children:"session"}),e.jsx("span",{className:"s-tail-sheet-val s-tail-sheet-val--mono",children:e.jsx(F,{className:"s-tail-link s-tail-link--session",onClick:o&&s.sessionId?()=>o(s.sessionId):void 0,title:s.sessionId?`Open session ${s.sessionId}`:void 0,children:s.sessionId||"—"})}),e.jsx("span",{className:"s-tail-sheet-key",children:"harness"}),e.jsxs("span",{className:"s-tail-sheet-val s-tail-sheet-val--harness",children:[e.jsx(A,{harness:s.source,size:13,title:null}),e.jsx("span",{children:d})]}),e.jsx("span",{className:"s-tail-sheet-key",children:"origin"}),e.jsx("span",{className:"s-tail-sheet-val s-tail-sheet-val--mono",children:m}),e.jsx("span",{className:"s-tail-sheet-key",children:"pid"}),e.jsxs("span",{className:"s-tail-sheet-val s-tail-sheet-val--mono",children:[s.pid,s.parentPid!=null?` ← ${s.parentPid}`:""]})]})}),e.jsxs("section",{className:"s-tail-sheet-section",children:[e.jsx("h4",{className:"s-tail-sheet-h",children:"summary"}),e.jsx("div",{className:"s-tail-sheet-summary",children:s.summary})]}),p&&p.length>0&&e.jsxs("section",{className:"s-tail-sheet-section",children:[e.jsx("h4",{className:"s-tail-sheet-h",children:"content"}),p.map((f,b)=>e.jsx(Os,{block:f},b))]}),e.jsxs("section",{className:"s-tail-sheet-section",children:[e.jsxs("button",{type:"button",className:"s-tail-sheet-toggle",onClick:()=>i(f=>!f),children:[r?"▾":"▸"," raw event"]}),r&&e.jsx("pre",{className:"s-tail-sheet-json",dangerouslySetInnerHTML:{__html:M(s.raw??s)}})]})]})]})}function Os({block:s}){if(s.type==="text"){const t=s.text??"";return e.jsx("div",{className:"s-tail-sheet-text",children:t})}if(s.type==="tool_use"){const t=s;return e.jsxs("div",{className:"s-tail-sheet-block s-tail-sheet-block--tool",children:[e.jsxs("div",{className:"s-tail-sheet-block-head",children:[e.jsx("span",{className:"s-tail-glyph s-tail-glyph--tool",children:"*"}),e.jsx("span",{className:"s-tail-sheet-block-title",children:t.name??"tool_use"})]}),e.jsx("pre",{className:"s-tail-sheet-json",dangerouslySetInnerHTML:{__html:M(t.input??{})}})]})}if(s.type==="tool_result"){const t=s,l=typeof t.content=="string";return e.jsxs("div",{className:`s-tail-sheet-block s-tail-sheet-block--tool-result${t.is_error?" s-tail-sheet-block--err":""}`,children:[e.jsxs("div",{className:"s-tail-sheet-block-head",children:[e.jsx("span",{className:"s-tail-glyph s-tail-glyph--tool-result",children:"="}),e.jsxs("span",{className:"s-tail-sheet-block-title",children:["tool_result",t.is_error?" · error":""]})]}),l?e.jsx("pre",{className:"s-tail-sheet-pre",children:t.content}):e.jsx("pre",{className:"s-tail-sheet-json",dangerouslySetInnerHTML:{__html:M(t.content??{})}})]})}return e.jsxs("div",{className:"s-tail-sheet-block",children:[e.jsxs("div",{className:"s-tail-sheet-block-head",children:[e.jsx("span",{className:"s-tail-glyph s-tail-glyph--other",children:"·"}),e.jsx("span",{className:"s-tail-sheet-block-title",children:s.type})]}),e.jsx("pre",{className:"s-tail-sheet-json",dangerouslySetInnerHTML:{__html:M(s)}})]})}export{Ie as TailView};
@@ -0,0 +1 @@
1
+ import{j as e,r as l,I as ss,J as ts}from"./index-CZ-05hKz.js";/* empty css */import{u as Ys,a as Vs}from"./Provider-B2xuo3rf.js";import{a as fe}from"./api-Co9aQ2Jw.js";import{c as Ws}from"./clipboard-e3fSpeo7.js";import{d as Gs,c as Kt}from"./colors-BtO5_zlx.js";import{r as ee,S as ns,a as rs,w as Ae,s as Ut,b as Bt,d as Ht,c as qt,e as Js,f as Ee,g as Yt}from"./terminal-relay-9lhzEp2V.js";import{p as Xs,g as Zs,f as Qs,b as et,h as st,s as K,d as Ze,j as Qe,r as tt,i as nt,t as as,e as rt,k as Vt,m as Gt,n as Jt}from"./terminal-sessions-BQ6t92tJ.js";import{H as Xt,u as is,a as Zt,c as Qt,h as en,b as sn,A as tn}from"./HerdrSession-BRhs5LIR.js";import{D as nn,c as rn,P as an,d as ls,s as Ye,T as ln,a as on}from"./session-table-PTQVoTyc.js";import{u as os,T as cn}from"./chunk-JTPDIGGW-BKXqcLKw.js";import{u as Me,L as cs}from"./chunk-YOZR3KYS-U65yUmqt.js";import{q as dn}from"./terminal-takeover-DANQfTcy.js";import{t as mn}from"./time-Dhsh_2EG.js";import{B as ke}from"./BackToPicker-4JaeRvDm.js";import{T as at}from"./TmuxPeek-V9dGESfO.js";import{TerminalHeaderMount as un}from"./TerminalHeaderMount-BnBLOPbb.js";import{R as ds}from"./refresh-cw-BRn9Oxxl.js";import{E as ms}from"./external-link-Ckiyzjwo.js";import{P as pe}from"./plus-CuU_X0-8.js";import{T as B}from"./terminal-yN9xN-h9.js";import{c as it}from"./createLucideIcon-DXpqZP7I.js";import{Z as lt}from"./zap-nMcjPoWB.js";import{S as pn}from"./text-CnZ0e1-V.js";import{X as be}from"./x-e3h2hDsp.js";import{E as hn}from"./eye-CpfyvdLq.js";import"./router-DJj2WbDg.js";import"./perf-PX8Rx0EP.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"./DocumentFocusViewer-DZVhS7as.js";import"./TextDocumentSurface-CKQP-cBT.js";import"./file-text-KijGBnME.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"./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"./loader-circle-BiohlpM3.js";import"./chunk-HRAB3GC3-swV8PA2k.js";import"./check-C18YQC90.js";import"./copy-Dtpx4FOE.js";import"./arrow-down-BydciYFZ.js";/* empty css */import"./voice-levels-Dcr3jglk.js";const ot=6,ct=2;function Le(s){if(s.layout?.mode)return{mode:s.layout.mode,...s.layout.columns===void 0?{}:{columns:fn(s.layout.columns)}};const t=s.cellCount??0,n=Pe(s.columns??ct);return t<=1?{mode:"solo"}:n>=t?{mode:"lanes",columns:n}:{mode:"grid",columns:n}}function De(s,t){const n=Math.max(1,Math.floor(t.tileCount)||1);if(s.mode==="solo")return 1;if(s.columns===void 0||s.columns==="dynamic"){const i=s.mode==="lanes"?n:Math.ceil(Math.sqrt(n));return Math.max(1,Math.min(ot,i))}return Pe(s.columns)}function fn(s){return s==="dynamic"?"dynamic":Pe(s)}function kn(s){if(s.mode==="solo")return"Solo";const t=s.mode==="lanes"?"Lanes":"Grid";return s.columns===void 0||s.columns==="dynamic"?`${t} · dynamic`:`${t} · ${s.columns} column${s.columns===1?"":"s"}`}function Pe(s){return typeof s!="number"||!Number.isFinite(s)?ct:Math.max(1,Math.min(ot,Math.floor(s)))}const bn=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],dt=it("ellipsis",bn);const xn=[["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M3 12h18",key:"1i2n21"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]],mt=it("grid-2x2",xn),us=6;function jn(s="main",t="Main"){return{version:1,activeWorkspaceId:s,workspaces:[{id:s,name:t,tiles:[]}]}}function ps(){return{version:1,activeWorkspaceId:"",workspaces:[]}}function As(s,t,n={}){const i=()=>n.allowEmpty?ps():jn();if(!s||typeof s!="object")return i();const d=s;if(!Array.isArray(d.workspaces))return i();const o=[],m=new Set;for(const c of d.workspaces){if(!c||typeof c!="object")continue;const k=typeof c.id=="string"?c.id.trim():"",x=typeof c.name=="string"?c.name.trim():"";if(!k||!x||m.has(k)||!Array.isArray(c.tiles))continue;m.add(k);const g=typeof c.purpose=="string"?c.purpose.trim():"",N=gn(c.columns),M=yn(c.layout),L=typeof c.updatedAt=="number"&&Number.isFinite(c.updatedAt)&&c.updatedAt>=0?c.updatedAt:null;o.push({id:k,name:x,tiles:c.tiles.filter(t),...g?{purpose:g}:{},...N?{columns:N}:{},...M?{layout:M}:{},...L===null?{}:{updatedAt:L}})}return o.length===0?i():{version:1,activeWorkspaceId:typeof d.activeWorkspaceId=="string"&&m.has(d.activeWorkspaceId)?d.activeWorkspaceId:o[0].id,workspaces:o}}function yn(s){if(!s||typeof s!="object")return null;const t=s;if(t.mode!=="solo"&&t.mode!=="lanes"&&t.mode!=="grid")return null;if(t.columns===void 0)return{mode:t.mode};if(t.columns==="dynamic")return{mode:t.mode,columns:"dynamic"};const n=Pe(t.columns);return{mode:t.mode,columns:n}}function gn(s){if(typeof s!="number"||!Number.isFinite(s))return null;const t=Math.floor(s);return t<1?null:Math.min(t,us)}function Ls(s,t){const n=t.id.trim();if(!n)return s;const i={...t,id:n},o=s.workspaces.some(m=>m.id===n)?s.workspaces.map(m=>m.id===n?i:m):[i,...s.workspaces];return{...s,activeWorkspaceId:n,workspaces:o}}function Ds(s,t,n){const i=s.workspaces.findIndex(u=>u.id===t);if(i<0)return s;const d=s.workspaces[i],o={...d,...n};return Object.keys(n).every(u=>d[u]===o[u])?s:{...s,workspaces:s.workspaces.map((u,c)=>c===i?o:u)}}function Sn(s,t){return t===s.activeWorkspaceId||!s.workspaces.some(n=>n.id===t)?s:{...s,activeWorkspaceId:t}}function wn(s,t,n={}){if(s.workspaces.length<=1)return n.allowEmpty&&s.workspaces[0]?.id===t?ps():s;const i=s.workspaces.findIndex(m=>m.id===t);if(i<0)return s;const d=s.workspaces.filter(m=>m.id!==t),o=s.activeWorkspaceId===t?d[Math.min(i,d.length-1)].id:s.activeWorkspaceId;return{...s,activeWorkspaceId:o,workspaces:d}}function Nn(s,t,n){return n>1?{axis:"horizontal",edge:s.x<t.left+t.width/2?"before":"after"}:{axis:"vertical",edge:s.y<t.top+t.height/2?"before":"after"}}function vn(s,t,n,i){if(t===n)return[...s];const d=s.findIndex(x=>x.id===t),o=s.findIndex(x=>x.id===n);if(d<0||o<0)return[...s];const m=[...s],[u]=m.splice(d,1);if(!u)return[...s];const c=m.findIndex(x=>x.id===n),k=i==="after"?c+1:c;return m.splice(Math.max(0,k),0,u),m}const Cn="openscout.terminal.workspaces.v1",Tn=2,In="openscout.terminal.workspace-view.v1",Ve=2;function We(s){const t=typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID().slice(0,8):Math.random().toString(36).slice(2,10);return`${s}-${Date.now().toString(36)}-${t}`}const Rn=24;function ut(s,t,n){const i=t.replace(/[^A-Za-z0-9_-]+/gu,"-").replace(/^[^A-Za-z0-9_]+/u,"").slice(0,Rn).replace(/-+$/u,""),d=En(JSON.stringify([n,t,s]));return`scout-${s}-${i||"cell"}-${d}`}function En(s){let t=2166136261;for(let n=0;n<s.length;n+=1)t^=s.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return t.toString(16).padStart(8,"0")}function ue(s,t="shell"){return{id:We("cell"),kind:"fresh",backend:s,agent:t}}function Ps(s){if(!s||typeof s!="object")return!1;const t=s;return typeof t.id!="string"||!t.id.trim()?!1:t.kind==="fresh"?typeof t.backend=="string"&&typeof t.agent=="string":t.kind==="registered"?typeof t.terminalSessionId=="string"&&typeof t.terminalSurfaceKey=="string":!1}function Os(s){return{id:s.id,name:s.name,...s.purpose?{purpose:s.purpose}:{},columns:s.columns,...s.layout?{layout:s.layout}:{},updatedAt:s.updatedAt,tiles:s.cells.map(t=>t.surfaceId&&t.terminalSessionId?{id:t.id,kind:"registered",terminalSessionId:t.terminalSessionId,terminalSurfaceKey:t.surfaceId}:{id:t.id,kind:"fresh",backend:Wn(t.intent.hostId)?t.intent.hostId:"pty",agent:"shell"})}}function Ge(s,t={}){return{id:s.id,name:s.name,purpose:s.purpose??"",columns:De(Le({layout:s.layout,columns:s.columns,cellCount:s.tiles.length}),{tileCount:s.tiles.length}),layout:Le({layout:s.layout,columns:s.columns,cellCount:s.tiles.length}),cells:s.tiles.map(n=>n.kind==="registered"?{id:n.id,surfaceId:n.terminalSurfaceKey,terminalSessionId:n.terminalSessionId,intent:Mn(n,t.sessions??[])}:{id:n.id,intent:{hostId:n.backend,sessionName:n.backend==="pty"?null:ut(n.backend,n.id,s.id)}})}}function Mn(s,t){const n=Xs(s.terminalSurfaceKey),i=t.find(d=>d.id===s.terminalSessionId||d.surfaces.some(o=>Zs(o,s.terminalSurfaceKey)));return{...n?{hostId:n.backend,sessionName:n.hostSession}:{},...i?.cwd?{cwd:i.cwd}:{},...i?.harness?{harness:i.harness}:{},...i?.resumeCommand?{resumeCommand:i.resumeCommand}:{}}}function Wn(s){return s==="pty"||s==="tmux"||s==="zellij"||s==="herdr"}function An(s){if(!Array.isArray(s))return As(s,Ps,{allowEmpty:!0});const t=s.flatMap(n=>{if(!n||typeof n!="object")return[];const i=n;if(typeof i.id!="string"||!i.id.trim())return[];const d=Array.isArray(i.cells)?i.cells:[];return[{id:i.id,name:typeof i.name=="string"&&i.name.trim()?i.name:i.id,purpose:i.purpose,columns:i.columns,updatedAt:i.updatedAt,tiles:d.map((o,m)=>({...o,id:`${i.id}-${m}`}))}]});return As({activeWorkspaceId:t[0]?.id??"",workspaces:t},Ps,{allowEmpty:!0})}function Ln(s,t,n){const i=s.find(d=>d.id===t);return i?i.capabilities.control.includes(n)||i.capabilities.harnessControl.includes(n):!1}function Dn(s,t){return s.find(n=>n.id===t)??null}function Pn(s){return[{value:"pty",label:"Shell",detail:"Disposable local shell",relayAttach:!0},...s.filter(t=>t.availability.installed&&t.capabilities.create).map(t=>({value:t.id,label:t.label,detail:t.description,relayAttach:t.capabilities.relayAttach})).sort((t,n)=>Number(n.relayAttach)-Number(t.relayAttach)||t.value.localeCompare(n.value))]}async function On(){return fe("/api/terminal-workspaces")}async function zs(s){return(await fe(`/api/terminal-workspaces/${encodeURIComponent(s.id)}`,{method:"PUT",body:JSON.stringify(s)})).workspace}async function zn(s,t){return fe(`/api/terminal-workspaces/${encodeURIComponent(s)}/cells/${encodeURIComponent(t)}/revive`,{method:"POST",body:"{}"})}async function $n(s){return(await fe(`/api/terminal-workspaces/${encodeURIComponent(s)}`,{method:"DELETE"})).deleted}function _n(s){const t=new Map;for(const n of s?.cells??[])t.set(n.cellId,n);return t}const $s="scout:terminal-send-line";function Fn(s){const t=s.detail;if(!t||typeof t!="object"||!("line"in t))return null;const n=t.line;return typeof n=="string"&&n.trim().length>0?n:null}const Q=["multiplexer","agent","session"];function Kn(s,t){if(t==="Home")return Q[0];if(t==="End")return Q[Q.length-1];const n=t==="ArrowRight"||t==="ArrowDown"?1:t==="ArrowLeft"||t==="ArrowUp"?-1:0;if(n===0)return null;const d=(Q.indexOf(s)+n+Q.length)%Q.length;return Q[d]??null}function Je(s){return`terminal-picker-tab-${s}`}function _s(){return"terminal-picker-panel"}const he=typeof window>"u"?l.useEffect:l.useLayoutEffect,Un="openscout.terminal.picker-view.v1",Bn="openscout.terminal.picker-source.v1",Fs={mode:"grid",columns:"dynamic"},Ks=[{mode:"solo",label:"Solo",detail:"One terminal, full width",minimumCells:1},{mode:"lanes",label:"Lanes",detail:"Side by side, one row",minimumCells:2},{mode:"grid",label:"Grid",detail:"Rows and columns",minimumCells:4}],pt=[{value:"shell",label:"Shell"},{value:"codex",label:"Codex"},{value:"claude",label:"Claude"},{value:"pi",label:"Pi"}],Xe="'JetBrainsMono Nerd Font', 'JetBrainsMonoNL Nerd Font', 'MesloLGS Nerd Font Mono', 'Hack Nerd Font Mono', 'JetBrains Mono', monospace",Us=s=>{},Hn=()=>{};function qn(){if(typeof window>"u")return{fontFamily:Xe,fontSize:13};const s=new URLSearchParams(window.location.search),t=s.get("terminalFontFamily")?.trim(),n=Number(s.get("terminalFontSize"));return{fontFamily:t?`'${t.replaceAll("'","\\'")}', ${Xe}`:Xe,fontSize:Number.isFinite(n)&&n>=9&&n<=32?n:13}}function hs(s){const t=qn();return e.jsx(cn,{...s,renderer:s.renderer??"dom",fontFamily:t.fontFamily,fontSize:t.fontSize})}function Yn(s,t){const[n,i]=l.useState({state:"loading",sessions:[]}),d=l.useCallback(()=>{i(m=>({state:"loading",sessions:m.sessions})),Qs({includeDiscovered:!0}).then(m=>{i({state:"ready",sessions:m})}).catch(m=>{i(u=>({state:"failed",sessions:u.sessions,error:m instanceof Error?m.message:String(m)}))})},[]);return l.useEffect(()=>{d()},[d]),{target:l.useMemo(()=>tt(n.sessions,s,t),[n.sessions,s,t]),loadState:n.state,loadSessions:d,hasSessionHint:!!s}}function Vn(s,t,n){const i=Ut(t,n),[d,o]=l.useState(i?{state:"preparing"}:{state:"ready"}),[m,u]=l.useState(0);return l.useEffect(()=>{if(!i||!s){o({state:"ready"});return}let c=!1;return o({state:"preparing"}),fe(`/api/agents/${encodeURIComponent(s)}/session-catalog`).then(k=>{if(k.resumeCommand)return dn({command:k.resumeCommand,cwd:k.resumeCwd,agentId:s})}).then(()=>{c||o({state:"ready"})}).catch(k=>{c||o({state:"failed",error:k instanceof Error?k.message:String(k)})}),()=>{c=!0}},[s,i,m]),{ready:d.state==="ready",label:d.state==="failed"?"TAKEOVER FAILED":"PREPARING TAKEOVER",status:d.state==="failed"?d.error:"Resolving live session...",onRetry:d.state==="failed"?()=>u(c=>c+1):void 0}}function Gn(s){const{agentId:t,agent:n,mode:i,navigate:d,registeredTarget:o,showContextMenu:m}=s,{hosts:u}=is(),c=n?Gs(n.name):"var(--accent)",k=l.useRef(null),x=o?as(o.surface):ee(n),g=i==="observe",N=o?.session.cwd??n?.cwd??n?.projectRoot??void 0,M=ss(),L=ts(),S=Bt({agentId:t,agent:n,registeredTarget:o,terminalSurface:x,relayUrl:M,harness:o?.session.harness??n?.harness,cwd:N,mode:i}),f=os({url:S.scopedRelayUrl,healthUrl:L,autoConnect:!0,...g?{}:{sessionKey:S.relayStorageSessionKey},...S.surfaceOptions??{},...S.orphanTTL?{orphanTTL:S.orphanTTL}:{},...S.cwd?{cwd:S.cwd}:{},...S.relayAgent?{agent:S.relayAgent}:{},controlMode:S.controlMode});he(()=>{f.resize(ns,rs)},[f.resize]);const v=l.useMemo(()=>g?{...f,sendInput:Us,sendLine:Us,restart:Hn}:f,[g,f]),w=Ht({agentId:t,registeredTarget:o}),O=Ae(w,i),I=l.useCallback(()=>{const j=k.current;j?.querySelector(".xterm-helper-textarea")?.focus(),j?.querySelector(".xterm")?.focus()},[]);l.useEffect(()=>{const j=$=>{const D=$.detail?.line;return typeof D=="string"&&D.length>0?D:null},_=$=>{const D=j($);!D||g||(v.sendInput(D),I())},P=$=>{const D=j($);!D||g||(v.sendLine(D),I())};return window.addEventListener("scout:terminal-send-input",_),window.addEventListener("scout:terminal-send-line",P),()=>{window.removeEventListener("scout:terminal-send-input",_),window.removeEventListener("scout:terminal-send-line",P)}},[I,g,v]);const R=l.useCallback(j=>x?qt(x,j):null,[x]),W=l.useCallback(()=>{Ws(Js(O))},[O]),H=l.useCallback(()=>{g||!navigator.clipboard?.readText||navigator.clipboard.readText().then(j=>{j&&v.sendInput(j)}).catch(()=>{})},[g,v]),b=l.useCallback(()=>{Ee(S.relayStorageSessionKey);const j=R("detach");if(j){j.finally(()=>f.disconnect());return}f.disconnect()},[S.relayStorageSessionKey,f,R]),A=l.useCallback(()=>{Ee(S.relayStorageSessionKey);const j=R("force-quit-bridge");if(j){j.finally(()=>{f.connect(),window.setTimeout(I,250)});return}f.connect(),window.setTimeout(I,250)},[S.relayStorageSessionKey,I,f,R]),E=l.useCallback(()=>{if(g)return;const j=R("interrupt");j?j.catch(()=>v.sendInput("")):v.sendInput(""),I()},[I,g,R,v]),U=l.useCallback(()=>{if(g)return;const j=R("quit");j?j.catch(()=>v.sendInput("")):v.sendInput(""),I()},[I,g,R,v]),V=l.useCallback(()=>{if(g)return;const j=R("stop-job");if(j){j.finally(I);return}I()},[I,g,R]),le=l.useCallback(()=>{if(Ee(S.relayStorageSessionKey),x&&!window.confirm(`Force quit Claude in ${Qe(x.sessionName)}?`))return;const j=R("force-quit");if(j){j.finally(()=>f.disconnect());return}const _=f.sessionId;if(!_){f.disconnect();return}Yt(_).catch(()=>{}).finally(()=>f.disconnect())},[S.relayStorageSessionKey,f,R,x]),z=l.useCallback(()=>{if(!x||!window.confirm(`Restart Claude in ${Qe(x.sessionName)} and resume its latest session?`))return;Ee(S.relayStorageSessionKey);const j=R("restart-resume");j&&j.finally(()=>{f.disconnect(),window.setTimeout(()=>{f.connect(),window.setTimeout(I,250)},600)})},[S.relayStorageSessionKey,I,f,R,x]),X=l.useCallback(j=>{d(Ae(w,j))},[d,w]),se=l.useCallback(()=>{d(w)},[d,w]),te=l.useMemo(()=>{const j=x?.backend??null,_=D=>Ln(u,j,D),P=[];(!j||_("detach"))&&P.push({kind:"action",label:"Leave this session running",onSelect:b}),P.push({kind:"action",label:"Reconnect",onSelect:A});const $=[];return _("restart-resume")&&$.push({kind:"action",label:"Restart Claude and resume",onSelect:z}),_("force-quit")&&$.push({kind:"action",label:"Force quit Claude",onSelect:le}),$.length>0&&P.push({kind:"separator"},...$),P},[b,le,A,z,u,x?.backend]),oe=l.useCallback(j=>{m(j,te)},[te,m]),xe=l.useCallback(j=>{const _=typeof window>"u"?"":window.getSelection()?.toString()??"",P=[];_.trim()&&P.push({kind:"action",label:"Copy Selection",shortcut:"⌘C",onSelect:()=>{Ws(_)}}),g||P.push({kind:"action",label:"Paste",shortcut:"⌘V",onSelect:H},{kind:"action",label:"Send Ctrl-C",shortcut:"⌃C",onSelect:E},{kind:"action",label:"Quit With Ctrl-D",shortcut:"⌃D",onSelect:U},{kind:"action",label:"Stop Running Job",onSelect:V}),P.length>0&&P.push({kind:"separator"}),P.push({kind:"action",label:"Focus Terminal",onSelect:I},...te,{kind:"separator"},{kind:"action",label:g?"Open Takeover":"Open Observe",onSelect:()=>X(g?"takeover":"observe")},{kind:"action",label:"Open Summary",onSelect:se},{kind:"action",label:"Copy Terminal Link",onSelect:W}),m(j,P)},[W,I,E,X,se,H,U,g,te,m,V]);return{color:c,terminalBodyRef:k,terminalSurface:x,readOnly:g,relay:f,terminalRelay:v,healthUrl:L,scopedRelayUrl:S.scopedRelayUrl,hasViewActions:!!(o||x),canSignalTerminal:!g&&!!(x||f.status==="connected"),canStopTerminalJob:!g&&!!x,handleSessionMenu:oe,handleTerminalContextMenu:xe,openMode:X,openSummary:se,interruptTerminal:E,quitTerminal:U,stopTerminalJob:V,terminalRouteBase:w}}function Jn({agent:s,agentId:t,color:n,navigate:i,label:d,status:o,onRetry:m}){return e.jsxs("div",{className:"s-term",children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsx(ke,{slot:"terminal",fallback:{view:"terminal"},navigate:i,className:"s-term-back"}),s&&e.jsxs("div",{className:"s-term-agent",children:[e.jsx("div",{className:"s-ops-avatar",style:{"--size":"18px",background:n},children:s.name[0]?.toUpperCase()}),e.jsx("span",{className:"s-term-agent-name",children:s.name}),s.handle&&e.jsxs("span",{className:"s-term-agent-handle",children:["@",s.handle]})]}),e.jsx("span",{className:"s-term-label",children:d}),e.jsx("div",{className:"s-term-status",children:m?"OFFLINE":"CONNECTING"})]}),e.jsx("div",{className:"s-term-body s-term-body--placeholder",children:e.jsxs("div",{className:"s-term-placeholder",children:[e.jsx("span",{children:o}),m&&e.jsx("button",{type:"button",onClick:m,children:"Retry"})]})})]})}function Xn({target:s,navigate:t}){const n=l.useMemo(()=>et([s.session]).find(m=>K(m.surface)===K(s.surface)),[s]),i={view:"terminal",terminalSessionId:s.session.id,terminalSurfaceKey:K(s.surface)},d=Vt(s.session,s.surface),o=Gt(s);return e.jsx("div",{className:"s-term s-term--summary",children:e.jsxs("div",{className:"s-term-summary",children:[e.jsxs("div",{className:"s-term-summary-main",children:[e.jsx(ke,{slot:"terminal",fallback:{view:"terminal"},navigate:t,className:"s-term-back"}),e.jsxs("div",{className:"s-term-summary-mark",children:[e.jsx(B,{size:18,strokeWidth:1.7}),e.jsx("span",{children:"Terminal"})]}),e.jsxs("div",{className:"s-term-summary-heading",children:[e.jsx("h1",{children:n?.title??s.surface.sessionName}),e.jsxs("p",{children:[s.surface.backend," · ",d]})]}),e.jsxs("div",{className:"s-term-summary-actions",children:[e.jsxs("button",{type:"button",className:"s-term-summary-action s-term-summary-action--primary",onClick:()=>t(Ae(i,"takeover")),children:[e.jsx(cs,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Enter"})]}),e.jsxs("button",{type:"button",className:"s-term-summary-action",onClick:()=>t(Ae(i,"observe")),children:[e.jsx(hn,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Observe"})]})]})]}),e.jsx("div",{className:"s-term-summary-preview",children:e.jsx(at,{surface:as(s.surface),lines:26,columns:112,pollMs:3e4,idlePollMs:3e4,className:"s-term-preview-peek"})}),e.jsx("dl",{className:"s-term-summary-details",children:o.map(([m,u])=>e.jsxs("div",{className:"s-term-summary-detail",children:[e.jsx("dt",{children:m}),e.jsx("dd",{title:u,children:u})]},m))})]})})}function fs({agentId:s,agent:t,mode:n,navigate:i,registeredTarget:d,embedded:o=!1,tileActions:m}){const u=Vs(),c=Gn({agentId:s,agent:t,mode:n,navigate:i,registeredTarget:d,showContextMenu:u});return e.jsxs("div",{className:`s-term${o?" s-term--embedded":""}`,children:[e.jsxs("div",{className:"s-term-bar s-term-bar--takeover",children:[e.jsxs("div",{className:"s-term-bar-left",children:[!o&&e.jsx(ke,{slot:"terminal",fallback:{view:"terminal"},navigate:i,className:"s-term-back"}),t&&e.jsxs("div",{className:"s-term-agent",children:[e.jsx("div",{className:"s-ops-avatar",style:{"--size":"18px",background:c.color},children:t.name[0]?.toUpperCase()}),e.jsx("span",{className:"s-term-agent-name",children:t.name}),t.handle&&e.jsxs("span",{className:"s-term-agent-handle",children:["@",t.handle]})]}),d&&e.jsxs("div",{className:"s-term-registered-chip",children:[e.jsx(B,{size:14,strokeWidth:1.8}),e.jsx("span",{children:d.session.harness}),e.jsx("span",{children:d.session.sourceSessionId})]})]}),e.jsxs("div",{className:"s-term-bar-meta",children:[e.jsx("span",{className:"s-term-label",children:c.terminalSurface?c.readOnly?"TERMINAL OBSERVE":"TERMINAL TAKEOVER":"TAKEOVER"}),c.terminalSurface&&e.jsx("span",{className:"s-term-session",title:c.terminalSurface.sessionName,children:Qe(c.terminalSurface.sessionName)})]}),e.jsxs("div",{className:"s-term-bar-actions",children:[c.hasViewActions&&e.jsxs("div",{className:"s-term-action-cluster s-term-action-cluster--view","aria-label":"Terminal view actions",children:[d&&e.jsx("button",{type:"button",className:"s-term-action",onClick:c.openSummary,title:"Leave the terminal canvas and show the session summary",children:"Summary"}),c.terminalSurface&&e.jsx("button",{type:"button",className:"s-term-action",onClick:()=>c.openMode(c.readOnly?"takeover":"observe"),title:c.readOnly?"Switch to interactive takeover":"Switch to read-only terminal observe",children:c.readOnly?"Takeover":"Observe"})]}),(c.canSignalTerminal||c.canStopTerminalJob)&&e.jsxs("div",{className:"s-term-action-cluster s-term-action-cluster--signals","aria-label":"Terminal signal actions",children:[c.canSignalTerminal&&e.jsxs("button",{type:"button",className:"s-term-action s-term-action--warn",onClick:c.interruptTerminal,title:"Send Ctrl-C to the terminal",children:[e.jsx(lt,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Ctrl-C"})]}),c.canSignalTerminal&&e.jsxs("button",{type:"button",className:"s-term-action s-term-action--warn",onClick:c.quitTerminal,title:"Send Ctrl-D / EOF to the terminal",children:[e.jsx(an,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Quit"})]}),c.canStopTerminalJob&&e.jsxs("button",{type:"button",className:"s-term-action s-term-action--warn",onClick:c.stopTerminalJob,title:"Stop Claude's current shell/tool job without quitting Claude",children:[e.jsx(pn,{size:12,strokeWidth:2}),e.jsx("span",{children:"Stop Job"})]})]}),e.jsxs("button",{type:"button",className:"s-term-action s-term-session-menu",onClick:c.handleSessionMenu,title:"Open session, recovery, and external handoff actions",children:[e.jsx(dt,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Session"})]}),e.jsx("div",{className:"s-term-status",children:c.relay.status==="connected"?"LIVE":c.relay.status==="connecting"?"CONNECTING":"OFFLINE"}),m]})]}),e.jsx("div",{ref:c.terminalBodyRef,className:"s-term-body",onContextMenuCapture:c.handleTerminalContextMenu,children:e.jsx(hs,{relay:c.terminalRelay,readOnly:c.readOnly,quiet:!0,configItems:[...c.terminalSurface?[{label:"backend",value:c.terminalSurface.backend},{label:"session",value:c.terminalSurface.sessionName},...c.terminalSurface.paneId?[{label:"pane",value:c.terminalSurface.paneId}]:[],...c.terminalSurface.socketDir?[{label:"socket",value:c.terminalSurface.socketDir}]:[],{label:"mode",value:c.readOnly?"read-only":"takeover"}]:[],{label:"ws",value:c.scopedRelayUrl},{label:"health",value:c.healthUrl}]})})]})}function Zn({terminalSessionId:s,terminalSurfaceKey:t,mode:n,navigate:i}){const{target:d,loadState:o,loadSessions:m,hasSessionHint:u}=Yn(s,t);return d&&n?e.jsx(fs,{agent:null,mode:n,navigate:i,registeredTarget:d},`${K(d.surface)}:${n}`):d?e.jsx(Xn,{target:d,navigate:i}):e.jsx("div",{className:"s-term s-term--empty-main",children:e.jsxs("div",{className:"s-term-empty-main-mark",children:[e.jsx(B,{size:18,strokeWidth:1.6}),e.jsx("span",{children:o==="loading"?"Loading terminal":o==="failed"?"Terminal list unavailable":u?"Terminal unavailable":"Select a terminal"}),o==="failed"&&e.jsx("button",{type:"button",className:"s-term-empty-action",onClick:m,children:"Retry"})]})})}function Qn(s,t){return s.kind!=="fresh"||!s.sessionName?!1:t.some(n=>n.surfaces.some(i=>i.backend===s.backend&&i.sessionName===s.sessionName&&i.state!=="exited"))}function ie(s){return`${s.session.id}:${K(s.surface)}`}function er(s,t,n){if(s.kind==="fresh")return{id:s.id,kind:"fresh",backend:s.backend,agent:s.agent,...s.backend==="pty"?{}:{sessionName:ut(s.backend,s.id,n)}};const i=tt(t,s.terminalSessionId,s.terminalSurfaceKey);return i?{id:s.id,kind:"registered",target:i}:{id:s.id,kind:"unavailable",terminalSessionId:s.terminalSessionId,terminalSurfaceKey:s.terminalSurfaceKey}}function Y(s){return{session:s.session,surface:s.surface}}function sr(s){const t=s.backend;return t!=="pty"&&!nt(t)?null:{view:"terminal",terminalBackend:t,terminalAgent:s.agent,terminalTabId:s.id,...s.sessionName?{terminalSessionName:s.sessionName}:{},...s.zellijSocketDir?{zellijSocketDir:s.zellijSocketDir}:{}}}function tr(s,t="takeover"){return{view:"terminal",terminalSessionId:s.session.id,terminalSurfaceKey:K(s.surface),mode:t}}function ht(s,t){if(typeof window>"u"){t(s);return}window.open(Js(s),"_blank","noopener,noreferrer")}function nr({navigate:s}){const{agents:t}=Ys(),n=Vs(),{hosts:i}=is(),d=l.useMemo(()=>Pn(i),[i]),[o,m]=Me(Cn,ps(),{version:Tn,migrate:An}),[u,c]=Me(In,"library"),k=l.useRef(new Map),[x,g]=l.useState(null),[N,M]=l.useState(""),[L,S]=l.useState(""),[f,v]=l.useState(Fs),[w,O]=l.useState(()=>Array.from({length:4},()=>ue("pty"))),[I,R]=l.useState(0),[W,H]=l.useState({state:"loading",sessions:[]}),[b,A]=l.useState(0),[E,U]=l.useState(!0),[V,le]=Me(Un,"list"),[z,X]=Me(Bn,"multiplexer"),[se,te]=l.useState(nn),[oe,xe]=l.useState(null),[j,_]=l.useState([]),[P,$]=l.useState(null),[D,xs]=l.useState(null),[bt,js]=l.useState(null),[xt,ys]=l.useState(!1),[je,gs]=l.useState(null),[jt,Oe]=l.useState(null),ye=l.useRef(null),ge=l.useRef(null),Se=l.useRef("after"),we=l.useRef(null),Ne=l.useRef(null),ze=l.useRef(!1),G=l.useCallback((r={})=>{r.silent||H(a=>({state:"loading",sessions:a.sessions})),Qs({includeDiscovered:!0}).then(a=>H({state:"ready",sessions:a})).catch(a=>{r.silent||H(p=>({state:"failed",sessions:p.sessions,error:a instanceof Error?a.message:String(a)}))})},[]);l.useEffect(()=>{G()},[G]),l.useEffect(()=>{const r=()=>{document.visibilityState==="visible"&&G({silent:!0})},a=window.setInterval(r,8e3);return window.addEventListener("focus",r),document.addEventListener("visibilitychange",r),()=>{window.clearInterval(a),window.removeEventListener("focus",r),document.removeEventListener("visibilitychange",r)}},[G]),l.useEffect(()=>{let r=!1;return On().then(a=>{if(!r){_(a.resolutions);for(const p of a.workspaces)k.current.set(p.id,JSON.stringify(Ge(Os(p),{sessions:W.sessions})));a.workspaces.length!==0&&m(p=>{let h=p;for(const y of a.workspaces)h=Ls(h,Os(y));return{...h,activeWorkspaceId:p.activeWorkspaceId||h.activeWorkspaceId}})}}).catch(()=>{}),()=>{r=!0}},[m]);const Ss=l.useMemo(()=>et(W.sessions),[W.sessions]),q=l.useMemo(()=>Ss.filter(r=>r.surface.state!=="exited"),[Ss]),{managed:ne}=l.useMemo(()=>st(q),[q]),ce=l.useMemo(()=>q.filter(r=>r.origin==="scout"),[q]),ve=l.useMemo(()=>ur(t).filter(r=>!!ee(r)),[t]),Ce=ne.find(r=>r.id===oe)??ne[0]??null;l.useEffect(()=>{Ce?.id!==oe&&xe(Ce?.id??null)},[Ce?.id,oe]);const $e=l.useMemo(()=>{if(z==="multiplexer")return ne;if(z==="session")return ce;const r=new Set;return ve.flatMap(a=>{const p=q.find(h=>ks(h,[a])?.id===a.id);return!p||r.has(p.id)?[]:(r.add(p.id),[p])})},[ce,q,ne,z,ve]),ws=W.state==="failed"?W.error:null,_e=o.workspaces,T=o.workspaces.find(r=>r.id===o.activeWorkspaceId)??null,re=Le({layout:T?.layout,columns:T?.columns,cellCount:T?.tiles.length??0}),J=l.useMemo(()=>(T?.tiles??[]).map(r=>er(r,W.sessions,T?.id??"")),[T?.id,T?.tiles,W.sessions]),Fe=De(re,{tileCount:J.length});l.useEffect(()=>{if(!T||!k.current.has(T.id))return;const r=Ge(T,{sessions:W.sessions}),a=JSON.stringify(r);k.current.get(T.id)!==a&&(k.current.set(T.id,a),zs(r).catch(p=>$(p instanceof Error?p.message:String(p))))},[T,W.sessions]);const ae=u==="workspace"&&!T?"library":u,F=l.useCallback(r=>{m(a=>{const p=a.workspaces.find(y=>y.id===a.activeWorkspaceId);if(!p)return a;const h=r(p.tiles);return h===p.tiles?a:Ds(a,p.id,{tiles:h,updatedAt:Date.now()})})},[m]),Te=l.useCallback(r=>{m(a=>a.activeWorkspaceId?Ds(a,a.activeWorkspaceId,{layout:r,updatedAt:Date.now()}):a)},[m]),yt=l.useCallback(r=>{m(a=>Sn(a,r.id)),U(!1),c("workspace")},[m,c]),gt=l.useCallback(()=>{c("library")},[c]),de=l.useCallback(r=>{g(r?.id??null),M(r?.name??""),S(r?.purpose??""),v(r?Le({layout:r.layout,columns:r.columns,cellCount:r.tiles.length}):Fs),O(r?.tiles??Array.from({length:4},()=>ue("pty"))),R(0),c("builder")},[c]),St=l.useCallback(r=>{v(a=>r.mode==="solo"?{mode:"solo"}:{mode:r.mode,columns:a.columns??"dynamic"}),O(a=>a.length>=r.minimumCells?a:[...a,...Array.from({length:r.minimumCells-a.length},()=>ue("pty"))]),R(a=>Math.max(0,Math.min(a,r.minimumCells-1)))},[]),wt=l.useCallback(r=>{v(a=>a.mode==="solo"?{mode:"lanes",columns:r}:{...a,columns:r})},[]),Nt=l.useCallback(()=>{O(r=>{const a=[...r,ue("pty")];return R(a.length-1),a})},[]),vt=l.useCallback(r=>{O(a=>{if(a.length<=1)return a;const p=a.filter((h,y)=>y!==r);return R(h=>Math.min(h,p.length-1)),p})},[]),Ct=l.useCallback(()=>{const r=N.trim();if(!r)return;const a={id:x??We("workspace"),name:r,purpose:L.trim(),columns:De(f,{tileCount:w.length}),layout:f,tiles:w,updatedAt:Date.now()};m(h=>Ls(h,a));const p=Ge(a,{sessions:W.sessions});k.current.set(a.id,JSON.stringify(p)),zs(p).catch(h=>$(h instanceof Error?h.message:String(h))),U(!1),c("workspace")},[x,m,c,W.sessions,w,f,N,L]),Tt=l.useCallback(r=>{m(a=>wn(a,r,{allowEmpty:!0})),$n(r).catch(()=>{})},[m]),Ns=l.useCallback((r,a="shell")=>{F(p=>[...p,ue(r,a)])},[F]),me=l.useCallback((r,a)=>{const p={kind:"registered",terminalSessionId:r.session.id,terminalSurfaceKey:K(r.surface)};F(h=>{const y=h.some(C=>C.kind==="registered"&&C.terminalSessionId===p.terminalSessionId&&Ze(C.terminalSurfaceKey,p.terminalSurfaceKey));return a?h.some(C=>C.id===a)?h.map(C=>C.id===a?{...p,id:C.id}:C):h:y?h:[...h,{...p,id:We("cell")}]})},[F]),Ke=l.useCallback(r=>{me(r)},[me]),Ue=l.useMemo(()=>new Set(J.filter(r=>r.kind==="registered").map(r=>ie(r.target))),[J]),Ie=l.useCallback(r=>{r?.currentTarget.hasPointerCapture(r.pointerId)&&r.currentTarget.releasePointerCapture(r.pointerId),we.current=null,Ne.current=null,ze.current=!1,xs(null),js(null),ys(!1)},[]),It=l.useCallback((r,a)=>{const p=r.target;r.button!==0||p instanceof Element&&p.closest("button, a")||(we.current={pointerId:r.pointerId,target:Y(a),targetId:ie(Y(a)),startX:r.clientX,startY:r.clientY},r.currentTarget.setPointerCapture(r.pointerId))},[]),Rt=l.useCallback(r=>{const a=we.current;if(!a||a.pointerId!==r.pointerId||Math.hypot(r.clientX-a.startX,r.clientY-a.startY)<6&&!D)return;D||xs(a.targetId);const h=document.querySelector(".s-term--workspace");if(h){const Ms=h.getBoundingClientRect();r.clientY<Ms.top+72&&(h.scrollTop-=28),r.clientY>Ms.bottom-72&&(h.scrollTop+=28)}const y=document.elementFromPoint(r.clientX,r.clientY),C=y?.closest(".s-term-workspace-cell"),Z=!!(y?.closest(".s-term-workspace-add-cell")||!C&&y?.closest(".s-term--workspace")&&!y?.closest(".s-term-picker")),Es=Z?null:C?.dataset.terminalTileId??null;Ne.current=Es,ze.current=Z,js(Es),ys(Z)},[D]),Et=l.useCallback(r=>{const a=we.current;!a||a.pointerId!==r.pointerId||(ze.current?me(a.target):Ne.current&&me(a.target,Ne.current),Ie(r))},[Ie,me]),Mt=l.useCallback(r=>{Ie(r)},[Ie]),Wt=l.useCallback(()=>{const r=$e.map(Y);r.length!==0&&F(a=>{const p=a.filter(y=>y.kind==="registered"),h=r.filter(y=>!p.some(C=>C.kind==="registered"&&C.terminalSessionId===y.session.id&&Ze(C.terminalSurfaceKey,K(y.surface)))).map(y=>({id:We("cell"),kind:"registered",terminalSessionId:y.session.id,terminalSurfaceKey:K(y.surface)}));return h.length===0?a:[...a,...h]})},[$e,F]),Be=l.useCallback(r=>{F(a=>{const p=a.filter(h=>h.id!==r);return p.length===a.length?a:p})},[F]),vs=l.useCallback((r,a,p)=>{r!==a&&F(h=>vn(h,r,a,p))},[F]),He=l.useCallback((r,a)=>{F(p=>{const h=p.findIndex(Z=>Z.id===r),y=h+a;if(h<0||y<0||y>=p.length)return p;const C=[...p];return[C[h],C[y]]=[C[y],C[h]],C})},[F]),Cs=l.useCallback((r,a)=>{F(p=>p.map(h=>h.id===r?{id:h.id,kind:"fresh",backend:a,agent:"shell"}:h))},[F]),Re=l.useCallback(()=>[...Ks.map(r=>({kind:"action",label:r.label,onSelect:()=>Te(r.mode==="solo"?{mode:"solo"}:{mode:r.mode,columns:re.columns??"dynamic"})})),...re.mode==="solo"?[]:[{kind:"separator"},{kind:"action",label:"Dynamic columns",onSelect:()=>Te({...re,columns:"dynamic"})},...Array.from({length:us},(r,a)=>({kind:"action",label:a===0?"One column":`${a+1} columns`,onSelect:()=>Te({...re,columns:a+1})}))],{kind:"separator"},{kind:"action",label:"Edit workspace…",onSelect:()=>T&&de(T)}],[T,Te,de,re]),Ts=l.useCallback(r=>{n(r,Re())},[Re,n]),At=l.useCallback(r=>{n(r,pt.map(a=>({kind:"action",label:a.value==="shell"?"New shell":`New ${a.label} terminal`,onSelect:()=>Ns("pty",a.value)})))},[Ns,n]),Lt=l.useCallback((r,a)=>{const p=J.findIndex(y=>y.id===a.id),h=[];p>0&&h.push({kind:"action",label:"Move left",onSelect:()=>He(a.id,-1)}),p>=0&&p<J.length-1&&h.push({kind:"action",label:"Move right",onSelect:()=>He(a.id,1)}),h.length>0&&h.push({kind:"separator"}),h.push(...d.map(y=>({kind:"action",label:y.value==="pty"?"Replace with a disposable shell":`Replace with a session that survives (${y.label})`,onSelect:()=>Cs(a.id,y.value)})),{kind:"separator"},{kind:"action",label:"Remove cell",onSelect:()=>Be(a.id)},{kind:"separator"},...Re()),n(r,h)},[Be,Re,He,Cs,n,d,J]),Dt=l.useCallback((r,a)=>{const p=r.target;r.button===0&&p instanceof Element&&p.closest(".s-term-bar")&&!p.closest("button, a")&&(ye.current={pointerId:r.pointerId,tileId:a,startX:r.clientX,startY:r.clientY},r.currentTarget.setPointerCapture(r.pointerId))},[]),Pt=l.useCallback(r=>{const a=ye.current;if(!a||a.pointerId!==r.pointerId||Math.hypot(r.clientX-a.startX,r.clientY-a.startY)<6&&!je)return;je||gs(a.tileId);const h=document.elementFromPoint(r.clientX,r.clientY)?.closest(".s-term-workspace-cell"),y=h?.dataset.terminalTileId??null;if(!h||!y||y===a.tileId){ge.current=null,Se.current="after",Oe(null);return}const C=h.getBoundingClientRect(),Z=Nn({x:r.clientX,y:r.clientY},{left:C.left,top:C.top,width:C.width,height:C.height},Fe);ge.current=y,Se.current=Z.edge,Oe(y)},[je,Fe]),Is=l.useCallback(r=>{const a=ye.current;if(!a||a.pointerId!==r.pointerId)return;const p=ge.current;p&&vs(a.tileId,p,Se.current),r.currentTarget.hasPointerCapture(r.pointerId)&&r.currentTarget.releasePointerCapture(r.pointerId),ye.current=null,ge.current=null,Se.current="after",gs(null),Oe(null)},[vs]),Ot=l.useMemo(()=>_n(j.find(r=>r.workspaceId===T?.id)),[T?.id,j]),Rs=l.useCallback(r=>{te(a=>rn(a,r))},[]),zt=l.useCallback((r,a)=>{const p=Kn(a,r.key);p&&(r.preventDefault(),X(p),document.getElementById(Je(p))?.focus())},[X]),$t=l.useCallback(()=>{G(),A(r=>r+1)},[G]),_t=l.useCallback(r=>{T&&zn(T.id,r).then(()=>{$(null),G()}).catch(a=>$(a instanceof Error?a.message:String(a)))},[T,G]),Ft=l.useCallback(()=>{c(T?"workspace":"library")},[T,c]),qe=e.jsx(un,{children:e.jsxs("div",{className:"s-term-topline","aria-label":"Terminal workspace controls",children:[e.jsxs("div",{className:"s-term-topline-context",children:[e.jsx("strong",{children:ae==="builder"?x?"Edit workspace":"New workspace":ae==="library"?"Workspaces":T?.name??"Workspace"}),e.jsxs("span",{children:[_e.length," workspace",_e.length===1?"":"s",e.jsx("i",{"aria-hidden":"true",children:"·"}),q.length," terminal",q.length===1?"":"s"]})]}),e.jsxs("div",{className:"s-term-topline-actions",children:[e.jsxs("a",{className:"s-term-topline-button",href:"scout://terminal",title:"Open this terminal workspace in the Scout app",children:[e.jsx(ms,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Open in Scout"})]}),ae==="library"?e.jsxs("button",{type:"button",className:"s-term-topline-button is-primary",onClick:()=>de(),children:[e.jsx(pe,{size:13,strokeWidth:1.9}),e.jsx("span",{children:"New workspace"})]}):ae==="builder"?e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"s-term-topline-button",onClick:Ft,children:"Cancel"}),e.jsx("button",{type:"button",className:"s-term-topline-button is-primary",onClick:Ct,disabled:!N.trim(),children:x?"Save":"Create"})]}):e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"s-term-topline-button",onClick:gt,children:"Workspaces"}),e.jsxs("button",{type:"button",className:"s-term-topline-button is-primary",onClick:At,children:[e.jsx(pe,{size:13,strokeWidth:1.9}),e.jsx("span",{children:"New"})]}),e.jsxs("button",{type:"button",className:"s-term-topline-button",onClick:()=>U(r=>!r),"aria-pressed":E,children:[e.jsx(B,{size:13,strokeWidth:1.8}),e.jsx("span",{children:E?"Hide picker":"Show picker"})]}),e.jsx("button",{type:"button",className:"s-term-topline-icon",onClick:Ts,title:"Workspace layout and settings","aria-label":"Workspace layout and settings",children:e.jsx(dt,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-topline-icon",onClick:$t,disabled:W.state==="loading",title:"Reload terminal inventory and previews","aria-label":"Reload terminal inventory and previews",children:e.jsx(ds,{size:13,strokeWidth:1.8})})]})]})]})});return ae==="library"?e.jsx(rr,{header:qe,workspaces:_e,sessionsReady:W.state!=="loading",onOpen:yt,onCreate:()=>de(),onEdit:de,onDelete:Tt}):ae==="builder"?e.jsx(ir,{header:qe,editing:!!x,name:N,purpose:L,modes:Ks,layout:f,startOptions:d,cells:w,selectedSlot:I,terminalItems:q,onNameChange:M,onPurposeChange:S,onApplyMode:St,onColumnsChange:wt,onSelectSlot:R,onAddCell:Nt,onRemoveCell:vt,pickerView:V,pickerSort:se,onPickerView:le,onPickerSort:Rs,onAssignFresh:(r,a="shell")=>O(p=>p.map((h,y)=>y===I?{id:h.id,kind:"fresh",backend:r,agent:a}:h)),onAssignRegistered:r=>O(a=>a.map((p,h)=>h===I?{id:p.id,kind:"registered",terminalSessionId:r.session.id,terminalSurfaceKey:K(r.surface)}:p))}):e.jsxs("div",{className:"s-term s-term--workspace",children:[qe,e.jsxs("div",{className:"s-term-workspace",children:[e.jsx("h1",{className:"s-term-visually-hidden",children:T?.name??"Terminal workspace"}),ws&&e.jsxs("div",{className:"s-term-home-error",children:[e.jsx("span",{children:"Terminal registry unavailable"}),e.jsx("code",{children:ws})]}),P&&e.jsxs("div",{className:"s-term-home-error",children:[e.jsx("span",{children:"This workspace is not saved to Scout — it will not follow you to another device"}),e.jsx("code",{children:P})]}),(J.length>0||E)&&e.jsxs("div",{className:"s-term-workspace-grid","aria-label":"Terminal tiles",style:{"--terminal-grid-columns":Fe},onContextMenu:Ts,children:[J.map(r=>e.jsx("div",{className:`s-term-workspace-cell${je===r.id?" s-term-workspace-cell--dragging":""}${jt===r.id||bt===r.id?" s-term-workspace-cell--drop-target":""}`,"data-terminal-tile-id":r.id,onPointerDownCapture:a=>Dt(a,r.id),onPointerMove:Pt,onPointerUp:Is,onPointerCancel:Is,onContextMenu:a=>Lt(a,r),children:e.jsx(cr,{tile:r,navigate:s,onClose:Be,resolution:Ot.get(r.id)??null,onRevive:_t,live:Qn(r,W.sessions)})},`${r.id}:${b}`)),E&&e.jsxs("button",{type:"button",className:`s-term-workspace-add-cell${xt?" s-term-workspace-add-cell--target":""}`,onClick:()=>U(!0),children:[e.jsx(pe,{size:20,strokeWidth:1.7}),e.jsx("strong",{children:"New slot"}),e.jsx("span",{children:D?"Drop to add":"Drag a terminal here"})]})]}),e.jsxs("section",{className:`s-term-picker${E?"":" s-term-picker--collapsed"}`,"aria-labelledby":"terminal-picker-title",onPointerDownCapture:r=>{const a=r.target;if(!(a instanceof Element))return;const p=a.closest("[data-picker-item-id]")?.dataset.pickerItemId,h=q.find(y=>y.id===p);h&&It(r,h)},onPointerMove:Rt,onPointerUp:Et,onPointerCancel:Mt,children:[e.jsxs("header",{className:"s-term-picker-head",children:[e.jsxs("div",{className:"s-term-picker-title",children:[e.jsx(B,{size:14,strokeWidth:1.8}),e.jsx("h2",{id:"terminal-picker-title",children:"Add to workspace"})]}),e.jsxs("div",{className:"s-term-picker-actions",children:[E&&z==="session"&&e.jsx("div",{className:"s-term-picker-views",role:"group","aria-label":"Picker view",children:["list","table"].map(r=>e.jsx("button",{type:"button",className:V===r?"is-selected":"",onClick:()=>le(r),"aria-pressed":V===r,children:r==="list"?"List":"Table"},r))}),E&&e.jsxs("button",{type:"button",className:"s-term-workspace-action",onClick:Wt,disabled:$e.length===0,children:[e.jsx(cs,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Add all"})]}),e.jsxs("button",{type:"button",className:"s-term-picker-toggle",onClick:()=>U(r=>!r),"aria-expanded":E,children:[e.jsx("span",{children:E?"Hide":"Show terminal picker"}),e.jsx("span",{"aria-hidden":"true",children:E?"⌄":"⌃"})]})]})]}),E&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"s-term-picker-sources",role:"tablist","aria-label":"Ways to find a terminal",children:[{source:"multiplexer",label:"Multiplexer setups",detail:"Multi-pane · Herdr, tmux, Zellij",count:ne.length,icon:mt},{source:"agent",label:"Agent sessions",detail:"Agent-owned · managed terminals",count:ve.length,icon:lt},{source:"session",label:"Recent sessions",detail:"Individual · previously opened by Scout",count:ce.length,icon:B}].map(({source:r,label:a,detail:p,count:h,icon:y})=>e.jsxs("button",{type:"button",role:"tab",id:Je(r),"aria-controls":_s(),className:z===r?"is-selected":"","aria-selected":z===r,tabIndex:z===r?0:-1,onClick:()=>X(r),onKeyDown:C=>zt(C,r),children:[e.jsx(y,{size:16,strokeWidth:1.7,"aria-hidden":"true"}),e.jsxs("span",{children:[e.jsx("strong",{children:a}),e.jsx("small",{children:p})]}),e.jsx("em",{"aria-label":`${W.state==="loading"?"Loading":h} ${a.toLowerCase()}`,children:W.state==="loading"?"·":h})]},r))}),e.jsxs("div",{className:"s-term-picker-panel",role:"tabpanel",id:_s(),"aria-labelledby":Je(z),children:[e.jsx("p",{className:"s-term-picker-hint",children:z==="multiplexer"?"Preview a complete multiplexer setup, then open it or add the host-owned layout to this workspace.":z==="agent"?"Start from ownership: open the terminal associated with a managed agent, or add that surface here.":"Return to individual terminal sessions Scout has already opened or registered."}),z==="multiplexer"?e.jsx(lr,{items:ne,selectedId:Ce?.id??null,attachedIds:Ue,draggedTargetId:D,onSelect:xe,onAttach:Ke,navigate:s}):z==="agent"?e.jsx(or,{agents:ve,items:q,attachedIds:Ue,onAttach:Ke,navigate:s}):ce.length===0&&W.state!=="loading"?e.jsxs("div",{className:"s-term-picker-empty s-term-picker-empty--explained",children:[e.jsx("strong",{children:"No recent sessions yet"}),e.jsx("span",{children:"Open or register a terminal session and it will appear here."})]}):e.jsx(kt,{items:ce,view:V,sort:se,attachedIds:Ue,draggedTargetId:D,onSort:Rs,onAttach:Ke,navigate:s,groupManaged:!1})]})]})]})]})]})}function rr({header:s,workspaces:t,sessionsReady:n,onOpen:i,onCreate:d,onEdit:o,onDelete:m}){return e.jsxs("div",{className:"s-term s-term--workspace-library",children:[s,e.jsxs("main",{className:"s-term-workspace-library",children:[e.jsx("h1",{className:"s-term-visually-hidden",children:"Terminal workspaces"}),t.length===0?e.jsxs("section",{className:"s-term-workspace-library-empty",children:[e.jsx(mt,{size:24,strokeWidth:1.5}),e.jsx("h2",{children:"Create your first terminal workspace"}),e.jsx("p",{children:"Choose a layout, give it a purpose, place sessions, then enter the grid."}),e.jsxs("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:d,children:[e.jsx(pe,{size:14,strokeWidth:1.9}),e.jsx("span",{children:"Create workspace"})]})]}):e.jsx("div",{className:"s-term-workspace-library-grid",children:t.map(u=>e.jsxs("article",{className:"s-term-workspace-card",children:[e.jsx("div",{className:"s-term-workspace-card-preview",style:{"--terminal-grid-columns":u.columns??Ve},children:u.tiles.map(c=>e.jsx("span",{className:c.kind==="registered"?"is-session":"is-shell"},c.id))}),e.jsxs("div",{className:"s-term-workspace-card-copy",children:[e.jsxs("span",{children:[u.columns??Ve," column",(u.columns??Ve)===1?"":"s"," · ",u.tiles.length," cells"]}),e.jsx("h2",{children:u.name}),e.jsx("p",{children:u.purpose||"No purpose added yet."})]}),e.jsxs("div",{className:"s-term-workspace-card-actions",children:[e.jsx("button",{type:"button",className:"s-term-workspace-action",onClick:()=>o(u),children:"Edit"}),e.jsx("button",{type:"button",className:"s-term-workspace-action",onClick:()=>m(u.id),children:"Delete"}),e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>i(u),disabled:!n,children:"Enter workspace"})]})]},u.id))})]})]})}function es(s,t){return s==="solo"?1:s==="lanes"?Math.max(2,Math.min(4,t)):Math.max(2,Math.min(3,t))}function ar(s,t){return s==="solo"?1:s==="lanes"?es(s,t):es(s,t)*2}function ir({header:s,editing:t,name:n,purpose:i,modes:d,layout:o,startOptions:m,cells:u,selectedSlot:c,terminalItems:k,onNameChange:x,onPurposeChange:g,onApplyMode:N,onColumnsChange:M,onSelectSlot:L,onAddCell:S,onRemoveCell:f,pickerView:v,pickerSort:w,onPickerView:O,onPickerSort:I,onAssignFresh:R,onAssignRegistered:W}){const H=De(o,{tileCount:u.length});return e.jsxs("div",{className:"s-term s-term--workspace-builder",children:[s,e.jsxs("main",{className:"s-term-workspace-builder",children:[e.jsx("h1",{className:"s-term-visually-hidden",children:t?"Edit terminal workspace":"Create terminal workspace"}),e.jsxs("section",{className:"s-term-workspace-builder-identity","aria-label":"Workspace identity",children:[e.jsxs("label",{children:[e.jsx("span",{children:"Name"}),e.jsx("input",{value:n,onChange:b=>x(b.target.value),placeholder:"Release desk",autoFocus:!0})]}),e.jsxs("label",{children:[e.jsx("span",{children:"Purpose"}),e.jsx("input",{value:i,onChange:b=>g(b.target.value),placeholder:"Cross-project release monitoring"})]})]}),e.jsxs("section",{className:"s-term-workspace-builder-layout","aria-labelledby":"workspace-layout-title",children:[e.jsxs("div",{className:"s-term-workspace-builder-section-head",children:[e.jsxs("div",{children:[e.jsx("span",{children:"Step 1"}),e.jsx("h2",{id:"workspace-layout-title",children:"Choose the layout"})]}),e.jsxs("p",{children:[kn(o)," · ",u.length," cell",u.length===1?"":"s"]})]}),e.jsx("div",{className:"s-term-grid-presets","aria-label":"Workspace layout",children:d.map(b=>e.jsxs("button",{type:"button",className:`s-term-grid-preset${b.mode===o.mode?" s-term-grid-preset--selected":""}`,onClick:()=>N(b),"aria-pressed":b.mode===o.mode,children:[e.jsx("span",{className:"s-term-grid-preset-map",style:{"--terminal-preset-columns":es(b.mode,H)},"aria-hidden":"true",children:Array.from({length:ar(b.mode,H)},(A,E)=>e.jsx("i",{},E))}),e.jsx("span",{className:"s-term-grid-preset-label",children:b.label}),e.jsx("span",{className:"s-term-grid-preset-detail",children:b.detail})]},b.mode))}),o.mode!=="solo"&&e.jsxs("div",{className:"s-term-workspace-builder-columns",role:"group","aria-label":"Columns",children:[e.jsx("span",{children:"Columns"}),e.jsx("button",{type:"button",className:o.columns==="dynamic"||o.columns===void 0?"is-selected":"",onClick:()=>M("dynamic"),"aria-pressed":o.columns==="dynamic"||o.columns===void 0,title:"Fit the columns to the number of tiles",children:"Dynamic"}),Array.from({length:us},(b,A)=>e.jsx("button",{type:"button",className:o.columns===A+1?"is-selected":"",onClick:()=>M(A+1),"aria-pressed":o.columns===A+1,children:A+1},A)),(o.columns==="dynamic"||o.columns===void 0)&&e.jsxs("em",{children:[H," right now"]})]})]}),e.jsxs("section",{className:"s-term-workspace-builder-placement","aria-labelledby":"workspace-placement-title",children:[e.jsxs("div",{className:"s-term-workspace-builder-section-head",children:[e.jsxs("div",{children:[e.jsx("span",{children:"Step 2"}),e.jsx("h2",{id:"workspace-placement-title",children:"Place terminals"})]}),e.jsx("p",{children:"Select a cell, then choose a session or shell. Add as many cells as the work needs."})]}),e.jsxs("div",{className:"s-term-workspace-builder-canvas",children:[e.jsxs("div",{className:"s-term-workspace-builder-grid",style:{"--terminal-grid-columns":H},children:[u.map((b,A)=>{const E=b.kind==="registered"?k.find(U=>U.session.id===b.terminalSessionId&&Ze(K(U.surface),b.terminalSurfaceKey)):null;return e.jsxs("div",{className:`s-term-workspace-builder-cell${c===A?" is-selected":""}`,children:[e.jsxs("button",{type:"button",className:"s-term-workspace-builder-cell-select",onClick:()=>L(A),"aria-pressed":c===A,children:[e.jsx("span",{children:String(A+1).padStart(2,"0")}),e.jsx(B,{size:17,strokeWidth:1.7}),e.jsx("strong",{children:b.kind==="registered"?E?.title??"Unavailable session":bs(b.backend,b.agent).title}),e.jsx("small",{children:b.kind==="registered"?E?.cwdLabel||E?.detail:b.backend})]}),u.length>1&&e.jsx("button",{type:"button",className:"s-term-workspace-builder-cell-remove",onClick:()=>f(A),title:"Remove this cell","aria-label":`Remove cell ${A+1}`,children:e.jsx(be,{size:13,strokeWidth:1.9})})]},b.id)}),e.jsxs("button",{type:"button",className:"s-term-workspace-builder-cell s-term-workspace-builder-cell--add",onClick:S,children:[e.jsx(pe,{size:18,strokeWidth:1.7}),e.jsx("strong",{children:"Add cell"})]})]}),e.jsxs("aside",{className:"s-term-workspace-builder-source",children:[e.jsxs("span",{children:["Cell ",String(c+1).padStart(2,"0")]}),e.jsx("h3",{children:"Start something new"}),e.jsxs("div",{className:"s-term-workspace-builder-source-actions",children:[pt.map(b=>e.jsx("button",{type:"button",onClick:()=>R("pty",b.value),children:b.label},b.value)),m.filter(b=>b.value!=="pty").map(b=>e.jsxs("button",{type:"button",onClick:()=>R(b.value,"shell"),title:b.relayAttach?b.detail:`${b.detail} — Scout starts it; open it in ${b.label} to use it`,children:[b.label,!b.relayAttach&&e.jsx("sup",{"aria-label":"opens outside Scout",children:" ↗"})]},b.value))]}),e.jsxs("div",{className:"s-term-workspace-builder-source-head",children:[e.jsx("h3",{children:"Or use a live session"}),e.jsx("div",{className:"s-term-picker-views",role:"group","aria-label":"Session picker view",children:["list","table"].map(b=>e.jsx("button",{type:"button",className:v===b?"is-selected":"",onClick:()=>O(b),"aria-pressed":v===b,children:b==="list"?"List":"Table"},b))})]}),e.jsx("div",{className:"s-term-workspace-builder-sessions",children:k.length===0?e.jsx("span",{className:"s-term-workspace-builder-no-sessions",children:"No live sessions"}):e.jsx(kt,{items:k,view:v,sort:w,attachedIds:new Set,draggedTargetId:null,onSort:I,onAttach:b=>{const A=k.find(E=>E.session.id===b.session.id&&E.surface.sessionName===b.surface.sessionName);A&&W(A)}})})]})]})]})]})]})}function ft({item:s,attached:t,dragging:n,selected:i=!1,onSelect:d,onAttach:o,onOpen:m}){const u=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"s-term-picker-grip","aria-hidden":"true",children:"⠿"}),e.jsxs("div",{className:"s-term-picker-item-main",children:[e.jsx("strong",{title:s.surface.sessionName,children:s.title}),e.jsx("span",{title:s.session.cwd??s.detail,children:s.cwdLabel||s.detail})]}),e.jsxs("div",{className:"s-term-picker-item-meta",children:[e.jsx("span",{children:s.surface.backend}),e.jsx("span",{children:ls(s)}),e.jsx("span",{title:s.session.cwd??void 0,children:s.project})]})]});return e.jsxs("article",{className:`s-term-picker-item${t?" s-term-picker-item--attached":""}${n?" s-term-picker-item--dragging":""}${i?" s-term-picker-item--selected":""}${d?" s-term-picker-item--selectable":""}`,"data-picker-item-id":s.id,role:d?"listitem":void 0,children:[d?e.jsx("button",{type:"button",className:"s-term-picker-item-summary s-term-picker-item-select","aria-pressed":i,onClick:d,children:u}):e.jsx("div",{className:"s-term-picker-item-summary",children:u}),m&&e.jsx("button",{type:"button",className:"s-term-picker-add",onClick:m,children:"Open"}),e.jsx("button",{type:"button",className:"s-term-picker-add",onClick:()=>o(Y(s)),disabled:t,children:t?"In grid":"Add"})]})}function lr({items:s,selectedId:t,attachedIds:n,draggedTargetId:i,onSelect:d,onAttach:o,navigate:m}){const u=s.find(k=>k.id===t)??s[0]??null;if(!u)return e.jsx("div",{className:"s-term-picker-empty",children:"No multiplexers discovered"});const c=as(u.surface);return e.jsxs("div",{className:"s-term-picker-explorer",children:[e.jsx("div",{className:"s-term-picker-list s-term-picker-list--explorer",role:"list","aria-label":"Managed multiplexers",children:s.map(k=>{const x=Y(k),g=ie(x);return e.jsx(ft,{item:k,attached:n.has(g),dragging:i===g,selected:k.id===u.id,onSelect:()=>d(k.id),onAttach:o,onOpen:()=>m({view:"terminal",terminalSessionId:k.session.id,terminalSurfaceKey:K(k.surface)})},k.id)})}),e.jsxs("section",{className:"s-term-picker-preview","aria-label":`${u.title} live preview`,children:[e.jsxs("div",{className:"s-term-picker-preview-title",children:[e.jsxs("div",{children:[e.jsx("strong",{children:u.title}),e.jsxs("span",{children:[u.surface.backend," · ",u.project," · ",ls(u)]})]}),e.jsx("span",{children:pr(u,ks(u,[]))})]}),c?e.jsx(at,{surface:c,lines:28,columns:112,className:"s-term-multiplexer-peek"}):e.jsx("div",{className:"s-term-picker-empty",children:"This host does not expose a web preview"})]})]})}function or({agents:s,items:t,attachedIds:n,onAttach:i,navigate:d}){return s.length===0?e.jsx("div",{className:"s-term-picker-empty",children:"No terminal-backed agents"}):e.jsx("div",{className:"s-term-picker-list","aria-label":"Terminal-backed agents",children:s.map(o=>{const m=ee(o),u=t.find(x=>ks(x,[o])?.id===o.id)??null,c=u?Y(u):null,k=c?n.has(ie(c)):!1;return e.jsxs("article",{className:`s-term-picker-item${k?" s-term-picker-item--attached":""}`,"data-picker-item-id":u?.id,children:[e.jsx("span",{className:"s-term-picker-grip","aria-hidden":"true",children:e.jsx("span",{className:"s-term-picker-agent-dot","data-state":o.state})}),e.jsxs("div",{className:"s-term-picker-item-main",children:[e.jsx("strong",{title:o.name,children:o.name}),e.jsx("span",{title:o.cwd??o.projectRoot??void 0,children:o.handle?`@${o.handle}`:rt(o.cwd??o.projectRoot)})]}),e.jsxs("div",{className:"s-term-picker-item-meta",children:[e.jsx("span",{children:m?.backend??o.harness}),e.jsx("span",{children:Kt(o.state)}),e.jsx("span",{children:fr(o)})]}),e.jsx("button",{type:"button",className:"s-term-picker-add",onClick:()=>d({view:"terminal",agentId:o.id,mode:"takeover"}),children:"Open"}),e.jsx("button",{type:"button",className:"s-term-picker-add",onClick:()=>c&&i(c),disabled:!c||k,title:c?void 0:"This agent has no registered terminal surface to add",children:k?"In grid":"Add"})]},o.id)})})}function kt({items:s,view:t,sort:n,attachedIds:i,draggedTargetId:d,onSort:o,onAttach:m,navigate:u,groupManaged:c=!0}){const k=l.useMemo(()=>Ye(s,n),[s,n]),{managed:x,regular:g}=l.useMemo(()=>c?st(s):{managed:[],regular:s},[c,s]),N=l.useMemo(()=>Ye(x,n),[x,n]),M=l.useMemo(()=>Ye(g,n),[g,n]),L=f=>{u?.({view:"terminal",terminalSessionId:f.session.id,terminalSurfaceKey:K(f.surface)})},S=(f,v)=>{const w=ie(Y(f));return e.jsx(ft,{item:f,attached:i.has(w),dragging:d===w,onAttach:m,onOpen:v&&u?()=>L(f):void 0},f.id)};return t==="table"?e.jsx("div",{className:"s-term-picker-table-wrap",children:e.jsxs("table",{className:"s-term-picker-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[ln.map(f=>e.jsx("th",{scope:"col","aria-sort":n.column===f.id?n.direction==="asc"?"ascending":"descending":"none",children:e.jsxs("button",{type:"button",onClick:()=>o(f.id),children:[e.jsx("span",{children:f.label}),e.jsx("em",{"aria-hidden":"true",children:n.column===f.id?n.direction==="asc"?"▲":"▼":"·"})]})},f.id)),e.jsx("th",{scope:"col","aria-label":"Place"})]})}),e.jsx("tbody",{children:k.map(f=>{const v=ie(Y(f)),w=on(f);return e.jsxs("tr",{"data-picker-item-id":f.id,className:i.has(v)?"is-attached":void 0,children:[e.jsx("td",{title:f.surface.sessionName,children:f.title}),e.jsx("td",{children:f.surface.backend}),e.jsx("td",{children:ls(f)}),e.jsx("td",{title:f.session.cwd??void 0,children:f.project}),e.jsx("td",{children:w?mn(w):"—"}),e.jsx("td",{children:e.jsx("button",{type:"button",className:"s-term-picker-add",onClick:()=>m(Y(f)),disabled:i.has(v),children:i.has(v)?"In grid":"Add"})})]},f.id)})})]})}):e.jsxs("div",{className:"s-term-picker-list","aria-label":"Available terminals",children:[N.length>0&&e.jsxs("section",{className:"s-term-picker-group","aria-label":"Managed sessions",children:[e.jsx("h3",{className:"s-term-picker-group-title",children:"Managed sessions"}),N.map(f=>S(f,!0))]}),N.length>0&&M.length>0?e.jsxs("section",{className:"s-term-picker-group","aria-label":"Terminals",children:[e.jsx("h3",{className:"s-term-picker-group-title",children:"Terminals"}),M.map(f=>S(f,!1))]}):M.map(f=>S(f,!1))]})}function cr({tile:s,navigate:t,onClose:n,resolution:i,onRevive:d,live:o=!1}){if(s.kind==="registered")return s.target.surface.backend==="herdr"?e.jsx(Bs,{tileId:s.id,backend:"herdr",sessionName:s.target.surface.sessionName,live:s.target.surface.state==="live",onClose:n,navigate:t}):e.jsx(mr,{tile:s,navigate:t,onClose:n});if(s.kind==="unavailable"){const m=i?.status==="revivable"&&!!d;return e.jsxs("section",{className:"s-term-workspace-tile s-term-workspace-tile--unavailable","aria-label":"Unavailable terminal session",children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsxs("div",{className:"s-term-bar-left",children:[e.jsx("span",{className:"s-term-workspace-tile-mark",children:e.jsx(B,{size:14,strokeWidth:1.8})}),e.jsx("span",{className:"s-term-workspace-tile-name",children:"Not running"})]}),e.jsx("div",{className:"s-term-bar-actions",children:e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>n(s.id),title:"Remove cell","aria-label":"Remove cell",children:e.jsx(be,{size:14,strokeWidth:1.8})})})]}),e.jsxs("div",{className:"s-term-workspace-unavailable-body",children:[e.jsx(B,{size:22,strokeWidth:1.5}),e.jsx("strong",{children:m?"This tile is not running.":"This saved session is not currently live."}),e.jsx("span",{children:i?.detail??"Show the terminal picker to replace it, or wait for the session to reconnect."}),m&&e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>d?.(s.id),children:"Start it again"})]})]})}return!nt(s.backend)&&s.backend!=="pty"?e.jsx(Bs,{tileId:s.id,backend:s.backend,sessionName:s.sessionName,live:o,onClose:n,navigate:t}):e.jsx(dr,{tile:s,navigate:t,onClose:n})}function Bs({tileId:s,backend:t,sessionName:n,live:i,onClose:d,navigate:o}){const{hosts:m}=is(),u=Dn(m,t),[c,k]=l.useState("idle"),[x,g]=l.useState(null),N=t==="herdr",{topology:M}=Zt(N?n??null:null,{enabled:N&&i}),L=l.useCallback(()=>{n&&(k("starting"),g(null),Qt(t,{sessionName:n}).then(()=>k("idle")).catch(w=>{k("failed"),g(w instanceof Error?w.message:String(w))}))},[t,n]),S=l.useCallback(()=>{if(!o||!n)return;const w=Jt(t,n);w&&o({view:"terminal",terminalSurfaceKey:w})},[o,t,n]),f=l.useCallback(()=>{!o||!n||o(en(n))},[o,n]),v=N&&M?.running?M.workspaces.flatMap(w=>w.tabs):[];return e.jsxs("section",{className:"s-term-workspace-tile s-term-workspace-tile--hosted","aria-label":`${u?.label??t} session`,children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsxs("div",{className:"s-term-bar-left",children:[e.jsx("span",{className:"s-term-workspace-tile-mark",children:e.jsx(B,{size:14,strokeWidth:1.8})}),e.jsx("span",{className:"s-term-workspace-tile-name",children:u?.label??t})]}),e.jsxs("div",{className:"s-term-bar-meta",children:[e.jsx("span",{className:"s-term-label",children:i?"running":"not running"}),n&&e.jsx("span",{className:"s-term-session",title:n,children:n})]}),e.jsxs("div",{className:"s-term-bar-actions",children:[N&&i&&n&&o&&e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:f,title:"Enter — open a live web terminal attached to this session","aria-label":"Enter — open a live web terminal attached to this session",children:e.jsx(cs,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>d(s),title:"Remove cell","aria-label":"Remove cell",children:e.jsx(be,{size:14,strokeWidth:1.8})})]})]}),v.length>0?e.jsx("button",{type:"button",className:"s-term-workspace-hosted-body s-term-workspace-hosted-body--link",onClick:S,children:v.map(w=>{const O=sn(w);return e.jsxs("span",{className:"s-term-workspace-hosted-tab",children:[e.jsx("span",{className:"s-term-workspace-hosted-tab-dots",children:O.statuses.map((I,R)=>e.jsx(tn,{status:I},`${w.tabId}:${R}`))}),e.jsx("span",{className:"s-term-workspace-hosted-tab-label",children:O.label}),e.jsx("span",{className:"s-term-workspace-hosted-tab-count",children:O.statuses.length})]},w.tabId)})}):e.jsxs("div",{className:"s-term-workspace-unavailable-body",children:[e.jsx(B,{size:22,strokeWidth:1.5}),e.jsx("strong",{children:i?`Running in ${u?.label??t}`:"Not running yet"}),e.jsx("span",{children:i?`Scout keeps this session for you. Open it in ${u?.label??t} to use it.`:`Scout can start a ${u?.label??t} session and keep it for you.`}),!i&&e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:L,disabled:c==="starting"||!n,children:c==="starting"?"Starting…":"Start it"}),x&&e.jsx("code",{children:x})]})]})}function dr({tile:s,navigate:t,onClose:n}){const i=l.useRef(null),d=ss(),o=ts(),m=bs(s.backend,s.agent),u=sr(s),c=["scout-terminal-workspace",s.id,s.backend,s.agent,s.sessionName??"pty"].join("-"),k=os({url:d,healthUrl:o,autoConnect:!0,sessionKey:c,backend:s.backend,...s.sessionName?{terminalSession:s.sessionName}:{},...s.backend==="tmux"&&s.sessionName?{tmuxSession:s.sessionName}:{},...s.backend==="zellij"&&s.sessionName?{zellijSession:s.sessionName}:{},...s.backend==="zellij"&&s.zellijSocketDir?{zellijSocketDir:s.zellijSocketDir}:{},...s.backend==="herdr"&&s.sessionName?{tmuxSession:s.sessionName}:{},agent:s.agent,controlMode:"takeover"});he(()=>{k.resize(ns,rs)},[k.resize]);const x=l.useCallback(()=>{u&&ht(u,t)},[t,u]);return e.jsx("section",{className:"s-term-workspace-tile","aria-label":m.title,children:e.jsxs("div",{className:"s-term s-term--embedded",children:[e.jsxs("div",{className:"s-term-bar s-term-bar--fresh",children:[e.jsxs("div",{className:"s-term-bar-left",children:[e.jsx("span",{className:"s-term-workspace-tile-mark",children:e.jsx(B,{size:14,strokeWidth:1.8})}),e.jsx("span",{className:"s-term-workspace-tile-name",children:m.title})]}),e.jsxs("div",{className:"s-term-bar-meta",children:[e.jsx("span",{className:"s-term-label",children:s.backend}),e.jsx("span",{className:"s-term-session",children:m.detail})]}),e.jsxs("div",{className:"s-term-bar-actions",children:[e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:()=>k.restart(),title:"Restart terminal","aria-label":"Restart terminal",children:e.jsx(ds,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:x,title:"Open terminal in a new window","aria-label":"Open terminal in a new window",children:e.jsx(ms,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>n(s.id),title:"Close tile","aria-label":"Close tile",children:e.jsx(be,{size:14,strokeWidth:1.8})})]})]}),e.jsx("div",{ref:i,className:"s-term-body",onMouseDown:()=>{i.current?.querySelector(".xterm-helper-textarea")?.focus(),i.current?.querySelector(".xterm")?.focus()},children:e.jsx(hs,{relay:k,quiet:!0,configItems:[{label:"backend",value:s.backend},{label:"agent",value:s.agent},...s.sessionName?[{label:"session",value:s.sessionName}]:[],...s.zellijSocketDir?[{label:"socket",value:s.zellijSocketDir}]:[],{label:"ws",value:d},{label:"health",value:o}]})})]})})}function mr({tile:s,navigate:t,onClose:n}){const i=l.useCallback(()=>{ht(tr(s.target),t)},[t,s.target]);return e.jsx("section",{className:"s-term-workspace-tile","aria-label":s.target.surface.sessionName,children:e.jsx(fs,{agent:null,mode:"takeover",navigate:t,registeredTarget:s.target,embedded:!0,tileActions:e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:i,title:"Open terminal in a new window","aria-label":"Open terminal in a new window",children:e.jsx(ms,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>n(s.id),title:"Close tile","aria-label":"Close tile",children:e.jsx(be,{size:14,strokeWidth:1.8})})]})})})}function ur(s){return[...s].filter(t=>!t.retiredFromFleet).sort((t,n)=>{const i=+!!ee(n)-+!!ee(t);if(i!==0)return i;const d=(n.updatedAt??0)-(t.updatedAt??0);return d!==0?d:t.name.localeCompare(n.name)})}function ks(s,t){const n=K(s.surface),i=t.find(o=>{const m=ee(o);return m?Zs(m,n):!1});if(i)return i;const d=new Set([s.session.id,s.session.sourceSessionId,s.surface.sessionName].map(o=>o.trim()).filter(Boolean));return t.find(o=>[o.harnessSessionId,o.conversationId,o.terminalSurface?.sessionName].some(m=>m&&d.has(m)))??null}function pr(s,t){const n=Hs(s.session.metadata,"currentCommand"),i=rt(Hs(s.session.metadata,"currentPath"));if(n&&i)return`${n} in ${i}`;if(n)return`running ${n}`;if(t?.handle)return`owned by @${t.handle}`;if(t)return`owned by ${t.name}`;if(s.surface.paneId)return`pane ${s.surface.paneId}`;const d=hr(s.session.metadata,"windows");return d!==null?`${d} window${d===1?"":"s"}`:`${s.surface.backend} surface`}function Hs(s,t){const n=s?.[t];return typeof n=="string"&&n.trim()?n.trim():null}function hr(s,t){const n=s?.[t];return typeof n=="number"&&Number.isFinite(n)?n:null}function fr(s){return s.project??qs(s.projectRoot)??qs(s.cwd)??s.workspaceQualifier??s.definitionId}function qs(s){const t=s?.trim().replace(/\/+$/u,"");return t?t.split("/").pop()||t:null}function kr({route:s,navigate:t}){const n=l.useRef(null),i=s.terminalBackend??"pty",d=s.terminalAgent??"shell",o=s.terminalTabId??"adhoc",m=i==="pty"?void 0:`scout-${i}-${o}`,u=s.terminalSessionName??m,c=ss(),k=ts(),x=bs(i,d),g=["scout-terminal-new",i,d,u??o].join("-"),N=os({url:c,healthUrl:k,autoConnect:!0,sessionKey:g,backend:i,...u?{terminalSession:u}:{},...i==="tmux"&&u?{tmuxSession:u}:{},...i==="zellij"&&u?{zellijSession:u}:{},...i==="zellij"&&s.zellijSocketDir?{zellijSocketDir:s.zellijSocketDir}:{},...i==="herdr"&&u?{tmuxSession:u}:{},agent:d,controlMode:"takeover"}),M=l.useRef([]),L=l.useRef({status:N.status,sendLine:N.sendLine});return L.current={status:N.status,sendLine:N.sendLine},he(()=>{const S=f=>{const v=Fn(f);if(!v)return;const w=L.current;if(w.status==="connected"){w.sendLine(v);return}M.current=[...M.current.slice(-15),v]};return window.addEventListener($s,S),()=>window.removeEventListener($s,S)},[]),he(()=>{if(N.status!=="connected"||M.current.length===0)return;const S=M.current;M.current=[];for(const f of S)N.sendLine(f)},[N.sendLine,N.status]),he(()=>{N.resize(ns,rs)},[N.resize]),e.jsxs("div",{className:"s-term",children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsx(ke,{slot:"terminal",fallback:{view:"terminal"},navigate:t,className:"s-term-back"}),e.jsx("span",{className:"s-term-label",children:x.title}),e.jsx("div",{className:"s-term-status",children:x.detail}),e.jsx("div",{className:"s-term-actions",children:e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:()=>N.restart(),title:"Restart terminal","aria-label":"Restart terminal",children:e.jsx(ds,{size:14,strokeWidth:1.8})})})]}),e.jsx("div",{ref:n,className:"s-term-body",onMouseDown:()=>{n.current?.querySelector(".xterm-helper-textarea")?.focus(),n.current?.querySelector(".xterm")?.focus()},children:e.jsx(hs,{relay:N,quiet:!0,configItems:[{label:"backend",value:i},{label:"agent",value:d},...u?[{label:"session",value:u}]:[],...s.zellijSocketDir?[{label:"socket",value:s.zellijSocketDir}]:[],{label:"ws",value:c},{label:"health",value:k}]})})]})}function bs(s,t){const n=t==="shell"?"Shell":t==="codex"?"Codex":t==="pi"?"Pi":"Claude";return s==="pty"?{title:n,detail:"fresh PTY tab"}:{title:`${n} ${s}`,detail:`fresh ${s} backed tab`}}function br({agentId:s,agent:t,mode:n,navigate:i,children:d}){const o=Vn(s,t,n);return o.ready?e.jsx(e.Fragment,{children:d}):e.jsx(Jn,{agent:t,agentId:s,color:Gs(t.name),navigate:i,label:o.label,status:o.status,onRetry:o.onRetry})}function xr({navigate:s}){return e.jsx("div",{className:"s-term",children:e.jsxs("div",{className:"s-term-bar",children:[e.jsx(ke,{slot:"terminal",fallback:{view:"terminal"},navigate:s,className:"s-term-back"}),e.jsx("span",{className:"s-term-label",children:"Terminal"}),e.jsx("div",{className:"s-term-status",children:"Resolving agent..."})]})})}function jr({route:s,navigate:t}){const{agentId:n,mode:i,terminalSessionId:d,terminalSurfaceKey:o}=s,{agents:m}=Ys();if(s.terminalBackend)return e.jsx(kr,{route:s,navigate:t});const u=s.terminalSurfaceKey?Xs(s.terminalSurfaceKey):null;if(!n&&u?.backend==="herdr")return e.jsx(Xt,{sessionName:u.hostSession,navigate:t});if(!n)return!d&&!o?e.jsx(nr,{navigate:t}):e.jsx(Zn,{terminalSessionId:d,terminalSurfaceKey:o,mode:i,navigate:t});const c=m.find(g=>g.id===n)??null;if(!c)return e.jsx(xr,{navigate:t});const k=ee(c),x=k?`${k.backend}:${c.id}:${k.sessionName}:${i??"takeover"}`:`takeover:${n}:${i??"takeover"}`;return e.jsx(br,{agentId:n,agent:c,mode:i,navigate:t,children:e.jsx(fs,{agentId:n,agent:c,mode:i,navigate:t})},x)}function wa({agentId:s,mode:t,terminalSessionId:n,terminalSurfaceKey:i,navigate:d}){const o={view:"terminal",agentId:s,mode:t,terminalSessionId:n,terminalSurfaceKey:i};return e.jsx(jr,{route:o,navigate:d})}export{jr as TerminalContent,wa as TerminalScreen};
@@ -0,0 +1 @@
1
+ import{r as e,j as l,a as A,b as C,S as k}from"./index-CZ-05hKz.js";import{L as y,D as T,f as L,S as x,C as R}from"./Provider-B2xuo3rf.js";import{a as P}from"./api-Co9aQ2Jw.js";import{i as I}from"./colors-BtO5_zlx.js";import{r as j,a as D}from"./router-DJj2WbDg.js";import{TerminalContent as H}from"./Terminal-D7zqHwHV.js";import"./sse-CiOSzE5n.js";import"./index-BWHgHrtv.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"./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"./perf-PX8Rx0EP.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-BQ6t92tJ.js";/* empty css */import"./clipboard-e3fSpeo7.js";import"./terminal-relay-9lhzEp2V.js";import"./HerdrSession-BRhs5LIR.js";import"./chunk-YOZR3KYS-U65yUmqt.js";import"./arrow-down-BydciYFZ.js";import"./terminal-yN9xN-h9.js";import"./refresh-cw-BRn9Oxxl.js";import"./check-C18YQC90.js";import"./copy-Dtpx4FOE.js";import"./eye-CpfyvdLq.js";import"./session-table-PTQVoTyc.js";import"./chunk-JTPDIGGW-BKXqcLKw.js";import"./terminal-takeover-DANQfTcy.js";import"./BackToPicker-4JaeRvDm.js";import"./TmuxPeek-V9dGESfO.js";/* empty css */import"./TerminalHeaderMount-BnBLOPbb.js";import"./external-link-Ckiyzjwo.js";import"./plus-CuU_X0-8.js";import"./zap-nMcjPoWB.js";function g(){const t=new URLSearchParams(window.location.search).get("route")?.trim()||"/terminal",s=j(t);return s.view==="terminal"?s:{view:"terminal"}}function S(o){const t=new URLSearchParams(window.location.search);return t.set("route",D(o)),t.has("profile")||t.set("profile","macos.terminal"),`${window.location.pathname}?${t.toString()}${window.location.hash}`}function Ke(){const[o,t]=e.useState(()=>g()),s=!!(o.terminalBackend||o.agentId||o.terminalSessionId||o.terminalSurfaceKey);e.useEffect(()=>{const i=()=>t(g());return window.addEventListener("popstate",i),()=>window.removeEventListener("popstate",i)},[]);const n=e.useCallback(i=>{if(i.view!=="terminal"){const p={view:"terminal"},a=S(p);window.history.pushState(null,"",a),t(p);return}const c=S(i);window.history.pushState(null,"",c),t(i)},[]);return l.jsx(M,{route:o,navigate:n,children:l.jsx("div",{className:`s-terminal-embed${s?" s-terminal-embed--surface":""}`,children:l.jsx(H,{route:o,navigate:n})})})}function M({route:o,navigate:t,children:s}){const[n,i]=e.useState([]),[c,p]=e.useState({status:"checking",message:null,lastCheckedAt:null}),a=e.useRef(null),u=e.useMemo(()=>A(),[]),f=e.useMemo(()=>C(),[]),b=e.useMemo(()=>({...u==="light"?y:T,...f??{}}),[u,f]),w=e.useCallback(()=>{p({status:"online",message:null,lastCheckedAt:Date.now()})},[]),h=e.useCallback(r=>{p({status:"offline",message:L(r),lastCheckedAt:Date.now()})},[]),m=e.useCallback(async()=>{if(a.current)return a.current;const r=(async()=>{try{i(await P("/api/agents")),w()}catch(d){h(d)}})();a.current=r;try{await r}finally{a.current=null}},[h,w]);e.useEffect(()=>{m()},[m]),e.useEffect(()=>{const r=()=>{document.visibilityState!=="hidden"&&m()},d=window.setInterval(r,15e3);return window.addEventListener("focus",r),document.addEventListener("visibilitychange",r),()=>{window.clearInterval(d),window.removeEventListener("focus",r),document.removeEventListener("visibilitychange",r)}},[m]);const v=e.useMemo(()=>n.filter(r=>I(r.state)).length,[n]),E=e.useMemo(()=>({route:o,navigate:t,navigateBack:()=>{typeof window<"u"&&window.history.back()},canNavigateBack:typeof window<"u"&&window.history.length>1,agents:n,agentsLoaded:c.status!=="checking",onlineCount:v,apiConnection:c,appearanceDetails:k,updateAppearanceDetails:()=>{},reload:m,onboarding:null,operatorName:null,refreshOnboarding:async()=>{},onboardingSkipped:!0,skipOnboarding:()=>{},settingsOpen:!1,openSettings:()=>{},closeSettings:()=>{},scoutbotAgentId:"scoutbot",scoutbotConversationId:null,applyScoutbotUiAction:()=>{},selectedBrokerAttempt:null,inspectBrokerAttempt:()=>{},clearBrokerAttempt:()=>{},selectedKnowledgeHit:null,selectedKnowledgeQuery:"",inspectKnowledgeHit:()=>{},clearKnowledgeHit:()=>{},focusedSession:null,focusSession:()=>{},openFilePreview:()=>{},closeFilePreview:()=>{},openContextCapture:()=>{},closeContextCapture:()=>{}}),[n,c,t,v,m,o]);return l.jsx(x.Provider,{value:E,children:l.jsx("div",{"data-scout-theme":u,"data-scout-theme-mode":u,style:b,children:l.jsx(R,{children:s})})})}export{Ke as TerminalEmbedScreen};
@@ -0,0 +1 @@
1
+ import{r as e,j as a}from"./index-CZ-05hKz.js";import{r as c}from"./index-BVlMw8x_.js";const u="scout-terminal-header-slot",d=typeof window>"u"?e.useEffect:e.useLayoutEffect;function r(){return typeof document>"u"?null:document.getElementById(u)}function m({children:t}){const[o,s]=e.useState(r);d(()=>{s(r())},[]);const n=o?.isConnected?o:null;return n?c.createPortal(t,n):a.jsx("div",{className:"s-term-inline-header","data-scout-terminal-header-fallback":"",children:t})}export{u as SCOUT_TERMINAL_HEADER_SLOT_ID,m as TerminalHeaderMount};
@@ -1,4 +1,4 @@
1
- import{j as i,r as I}from"./index-BZovGpDk.js";const N={cjs:"javascript",css:"css",htm:"html",html:"html",js:"javascript",jsx:"javascript",json:"json",mjs:"javascript",md:"markdown",mdx:"markdown",sh:"shell",ts:"typescript",tsx:"typescript",txt:"plain"},L=new Set(["cjs","css","htm","html","js","jsx","json","mjs","sh","ts","tsx"]);function b(t){const s=(t.filename??t.title??t.uri??"").split(/[?#]/)[0],n=s.split("/").pop()??s,r=n.lastIndexOf(".");return r>=0?n.slice(r+1).toLowerCase():""}function S(t){const e=t.mediaType?.toLowerCase()??"";return e.includes("json")?"json":e.includes("markdown")?"markdown":e.includes("javascript")?"javascript":e.includes("typescript")?"typescript":e.includes("html")?"html":e.includes("css")?"css":e.includes("shell")||e.includes("x-sh")?"shell":N[b(t)]??"plain"}function E(t){const e=t.mediaType?.toLowerCase()??"",s=b(t);if(e.includes("markdown")||s==="md"||s==="mdx")return"markdown";if(e.includes("json")||e.includes("javascript")||e.includes("typescript")||e.includes("html")||e.includes("xml")||e.includes("css")||L.has(s))return"code";if(e.startsWith("text/")||s==="txt")return"text";const n=t.value.trim();return/^#{1,6}\s+/m.test(n)||/```[\s\S]*```/.test(n)?"markdown":"text"}function it(t){const e=t.title??t.filename??t.uri?.split("/").pop()??"Untitled",s=t.language??S(t);return{id:t.id??t.uri??e,title:e,uri:t.uri,mediaType:t.mediaType,language:s,kind:t.kind??E(t),value:t.value,readOnly:t.readOnly}}function ct({document:t,mode:e,className:s}){const n=e??(t.kind==="markdown"?"preview":"read"),r=t.kind==="markdown"&&n==="preview"?i.jsx(k,{markdown:t.value}):i.jsx(W,{document:t});return i.jsx("div",{className:`s-text-document-surface s-text-document-surface-${t.kind}${s?` ${s}`:""}`,children:r})}function W({document:t}){const e=I.useMemo(()=>_(t.value,t.language??t.kind),[t.language,t.kind,t.value]);return i.jsx("pre",{className:"s-text-document-code","data-language":t.language??t.kind,children:i.jsx("code",{children:e})})}function k({markdown:t}){const e=A(t);return i.jsx("div",{className:"s-text-document-markdown",children:e.length>0?e:i.jsx("p",{})})}function A(t){const e=t.replace(/\r\n/g,`
1
+ import{j as i,r as I}from"./index-CZ-05hKz.js";const N={cjs:"javascript",css:"css",htm:"html",html:"html",js:"javascript",jsx:"javascript",json:"json",mjs:"javascript",md:"markdown",mdx:"markdown",sh:"shell",ts:"typescript",tsx:"typescript",txt:"plain"},L=new Set(["cjs","css","htm","html","js","jsx","json","mjs","sh","ts","tsx"]);function b(t){const s=(t.filename??t.title??t.uri??"").split(/[?#]/)[0],n=s.split("/").pop()??s,r=n.lastIndexOf(".");return r>=0?n.slice(r+1).toLowerCase():""}function S(t){const e=t.mediaType?.toLowerCase()??"";return e.includes("json")?"json":e.includes("markdown")?"markdown":e.includes("javascript")?"javascript":e.includes("typescript")?"typescript":e.includes("html")?"html":e.includes("css")?"css":e.includes("shell")||e.includes("x-sh")?"shell":N[b(t)]??"plain"}function E(t){const e=t.mediaType?.toLowerCase()??"",s=b(t);if(e.includes("markdown")||s==="md"||s==="mdx")return"markdown";if(e.includes("json")||e.includes("javascript")||e.includes("typescript")||e.includes("html")||e.includes("xml")||e.includes("css")||L.has(s))return"code";if(e.startsWith("text/")||s==="txt")return"text";const n=t.value.trim();return/^#{1,6}\s+/m.test(n)||/```[\s\S]*```/.test(n)?"markdown":"text"}function it(t){const e=t.title??t.filename??t.uri?.split("/").pop()??"Untitled",s=t.language??S(t);return{id:t.id??t.uri??e,title:e,uri:t.uri,mediaType:t.mediaType,language:s,kind:t.kind??E(t),value:t.value,readOnly:t.readOnly}}function ct({document:t,mode:e,className:s}){const n=e??(t.kind==="markdown"?"preview":"read"),r=t.kind==="markdown"&&n==="preview"?i.jsx(k,{markdown:t.value}):i.jsx(W,{document:t});return i.jsx("div",{className:`s-text-document-surface s-text-document-surface-${t.kind}${s?` ${s}`:""}`,children:r})}function W({document:t}){const e=I.useMemo(()=>_(t.value,t.language??t.kind),[t.language,t.kind,t.value]);return i.jsx("pre",{className:"s-text-document-code","data-language":t.language??t.kind,children:i.jsx("code",{children:e})})}function k({markdown:t}){const e=A(t);return i.jsx("div",{className:"s-text-document-markdown",children:e.length>0?e:i.jsx("p",{})})}function A(t){const e=t.replace(/\r\n/g,`
2
2
  `).split(`
3
3
  `),s=[];let n=0;for(;n<e.length;){const r=e[n]??"";if(!r.trim()){n+=1;continue}const c=/^```(\S*)\s*$/.exec(r);if(c){const l=[];for(n+=1;n<e.length&&!/^```\s*$/.test(e[n]??"");)l.push(e[n]??""),n+=1;n<e.length&&(n+=1),s.push({kind:"code",content:l.join(`
4
4
  `),language:c[1]||void 0});continue}const a=/^(#{1,6})\s+(.+)$/.exec(r);if(a){s.push({kind:"heading",depth:z(a[1].length),content:a[2].trim()}),n+=1;continue}if(/^ {0,3}([-*_])(?:\s*\1){2,}\s*$/.test(r)){s.push({kind:"hr"}),n+=1;continue}if(/^>\s?/.test(r)){const l=[];for(;n<e.length&&/^>\s?/.test(e[n]??"");)l.push((e[n]??"").replace(/^>\s?/,"")),n+=1;s.push({kind:"blockquote",content:l.join(" ")});continue}const o=/^(\s*)([-*+]|\d+[.)])\s+(.+)$/.exec(r);if(o){const l=/\d/.test(o[2]),m=[];for(;n<e.length;){const f=/^(\s*)([-*+]|\d+[.)])\s+(.+)$/.exec(e[n]??"");if(!f||/\d/.test(f[2])!==l)break;m.push(f[3]),n+=1}s.push({kind:"list",ordered:l,items:m});continue}const u=y(e,n);if(u){s.push(u.block),n=u.nextIndex;continue}const p=[];for(;n<e.length;){const l=e[n]??"";if(!l.trim()||/^```/.test(l)||/^(#{1,6})\s+/.test(l)||/^ {0,3}([-*_])(?:\s*\1){2,}\s*$/.test(l)||/^>\s?/.test(l)||/^(\s*)([-*+]|\d+[.)])\s+/.test(l)||y(e,n))break;p.push(l.trim()),n+=1}s.push({kind:"paragraph",content:p.join(" ")})}return s.map((r,c)=>C(r,c))}function z(t){return t<=1?1:t===2?2:t===3?3:t===4?4:t===5?5:6}function C(t,e){switch(t.kind){case"heading":{const n=`h${t.depth}`;return i.jsx(n,{children:d(t.content)},e)}case"paragraph":return i.jsx("p",{children:d(t.content)},e);case"blockquote":return i.jsx("blockquote",{children:d(t.content)},e);case"list":{const n=t.ordered?"ol":"ul";return i.jsx(n,{children:t.items.map((r,c)=>i.jsx("li",{children:d(r)},`${e}:${c}`))},e)}case"code":const s=$(t.language);return i.jsx("pre",{className:"s-text-document-fenced-code","data-language":s,children:i.jsx("code",{children:_(t.content,s)})},e);case"hr":return i.jsx("hr",{},e);case"table":return i.jsx("div",{className:"s-text-document-table-wrap",children:i.jsxs("table",{className:"s-text-document-table",children:[i.jsx("thead",{children:i.jsx("tr",{children:t.headers.map((n,r)=>i.jsx("th",{"data-align":t.alignments[r]??void 0,children:d(n)},`${e}:h:${r}`))})}),i.jsx("tbody",{children:t.rows.map((n,r)=>i.jsx("tr",{children:n.map((c,a)=>i.jsx("td",{"data-align":t.alignments[a]??void 0,children:d(c)},`${e}:r:${r}:${a}`))},`${e}:r:${r}`))})]})},e)}}function y(t,e){const s=w(t[e]??""),n=R(t[e+1]??"");if(!s||!n||s.length!==n.length)return null;const r=s.length,c=[];let a=e+2;for(;a<t.length;){const o=w(t[a]??"");if(!o||o.length<2)break;c.push(T(o,r)),a+=1}return{block:{kind:"table",alignments:n,headers:T(s,r),rows:c},nextIndex:a}}function w(t){const e=t.trim();if(!e.includes("|"))return null;let s=e;s.startsWith("|")&&(s=s.slice(1)),s.endsWith("|")&&!s.endsWith("\\|")&&(s=s.slice(0,-1));const n=[];let r="";for(let c=0;c<s.length;c+=1){const a=s[c];if(a==="\\"&&s[c+1]==="|"){r+="|",c+=1;continue}if(a==="|"){n.push(r.trim()),r="";continue}r+=a}return n.push(r.trim()),n.length>=2?n:null}function R(t){const e=w(t);if(!e||e.length<2)return null;const s=[];for(const n of e){const r=n.replace(/\s/g,"");if(!/^:?-{3,}:?$/u.test(r))return null;r.startsWith(":")&&r.endsWith(":")?s.push("center"):r.endsWith(":")?s.push("right"):r.startsWith(":")?s.push("left"):s.push(null)}return s}function T(t,e){const s=t.slice(0,e);for(;s.length<e;)s.push("");return s}const M=/\/\/[^\n]*|\/\*[\s\S]*?\*\/|`(?:\\[\s\S]|[^`\\])*`|'(?:\\.|[^'\\\n])*'|"(?:\\.|[^"\\\n])*"|\b\d+(?:\.\d+)?(?:e[+-]?\d+)?n?\b|\b[A-Za-z_$][\w$]*\b|=>|[{}()[\].,;:?]|[-+*/%=&|!<>~^]+/giu,D=/"(?:\\.|[^"\\])*"|-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b|\b(?:true|false|null)\b|[{}\[\]:,]/giu,O=/\/\*[\s\S]*?\*\/|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|#[0-9a-f]{3,8}\b|@[a-z-]+|--[a-z0-9-]+|[a-z-]+(?=\s*:)|\b\d+(?:\.\d+)?(?:%|px|r?em|vh|vw|vmin|vmax|s|ms|deg|fr)?\b|[{}():;,]|\.[a-z_][\w-]*|#[a-z_][\w-]*|[a-z_][\w-]*/giu,v=/<!--[\s\S]*?-->|<!doctype[^>]*>|<\/?[a-z][\w:-]*|\/?>|[a-z_:][\w:.-]*(?==)|=|"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|&[a-z0-9#]+;/giu,P=/#[^\n]*|"(?:\\.|[^"\\])*"|'[^']*'|\$\{?[\w?@#$!-]+\}?|--?[A-Za-z0-9][\w-]*(?:=[^\s]+)?|\b(?:case|cd|do|done|echo|elif|else|esac|exit|export|fi|for|function|if|in|local|return|set|source|test|then|unset|while)\b|\b\d+\b|[|&;(){}<>]/giu,H=new Set(["abstract","as","async","await","break","case","catch","class","const","continue","declare","default","delete","do","else","enum","export","extends","finally","for","from","function","get","if","implements","import","in","infer","interface","is","keyof","let","new","of","private","protected","public","readonly","return","satisfies","set","static","switch","throw","try","type","typeof","var","void","while","with","yield"]),B=new Set(["false","null","super","this","true","undefined"]);function _(t,e){switch($(e)){case"css":return g(t,O,Z);case"html":return g(t,v,U);case"javascript":case"typescript":return g(t,M,K);case"json":return g(t,D,q);case"shell":return g(t,P,Y);default:return[t]}}function g(t,e,s){const n=[];let r=0,c=0;e.lastIndex=0;let a;for(;(a=e.exec(t))!==null;){const o=a[0];if(!o){e.lastIndex+=1;continue}a.index>r&&n.push(t.slice(r,a.index));const u=s(o,a.index,a.index+o.length,t);n.push(u?i.jsx("span",{className:`s-syntax s-syntax-${u}`,children:o},`syntax-${c++}`):o),r=a.index+o.length}return r<t.length&&n.push(t.slice(r)),n.length>0?n:[t]}function $(t){const e=String(t??"").toLowerCase().replace(/^\./,"");return e==="bash"||e==="sh"||e==="shell"||e==="zsh"?"shell":e==="css"||e==="scss"?"css":e==="html"||e==="htm"||e==="xml"||e==="svg"?"html":e==="js"||e==="jsx"||e==="javascript"||e==="mjs"||e==="cjs"?"javascript":e==="json"||e==="jsonc"?"json":e==="markdown"||e==="md"||e==="mdx"?"markdown":e==="ts"||e==="tsx"||e==="typescript"?"typescript":"plain"}function K(t,e,s,n){return t.startsWith("//")||t.startsWith("/*")?"comment":x(t)?"string":/^\d/u.test(t)?"number":H.has(t)?"keyword":B.has(t)?"literal":/^[A-Z][\w$]*$/u.test(t)?"type":/^[A-Za-z_$][\w$]*$/u.test(t)&&n.slice(s).trimStart().startsWith("(")?"function":/^[{}()[\].,;:?]$/u.test(t)?"punctuation":/^(?:=>|[-+*/%=&|!<>~^]+)$/u.test(t)?"operator":null}function q(t,e,s,n){return x(t)?n.slice(s).trimStart().startsWith(":")?"property":"string":/^-?\d/u.test(t)?"number":t==="true"||t==="false"||t==="null"?"literal":"punctuation"}function Z(t,e,s,n){return t.startsWith("/*")?"comment":x(t)?"string":t.startsWith("@")?"keyword":t.startsWith("#")&&/^#[0-9a-f]/iu.test(t)||/^\d/u.test(t)?"number":t.startsWith(".")||t.startsWith("#")?"tag":/^--/u.test(t)||n.slice(s).trimStart().startsWith(":")?"property":/^[{}():;,]$/u.test(t)?"punctuation":null}function U(t){return t.startsWith("<!--")?"comment":/^<!doctype/iu.test(t)||t.startsWith("&")?"meta":t.startsWith("<")?"tag":x(t)?"string":t==="="?"operator":t===">"||t==="/>"?"punctuation":"attribute"}function Y(t){return t.startsWith("#")?"comment":x(t)?"string":t.startsWith("$")?"property":t.startsWith("-")?"attribute":/^\d/u.test(t)?"number":/^[|&;(){}<>]$/u.test(t)?"operator":G.has(t)?"keyword":null}const G=new Set(["case","cd","do","done","echo","elif","else","esac","exit","export","fi","for","function","if","in","local","return","set","source","test","then","unset","while"]);function x(t){return t.startsWith('"')||t.startsWith("'")||t.startsWith("`")}const J=/`([^`]+)`/y,X=/\[([^\]]+)\]\(([^)\s]+)\)/y,F=/\*\*\*(.+?)\*\*\*/y,Q=/\*\*(.+?)\*\*/y,V=/__(.+?)__(?!\w)/y,tt=/~~(.+?)~~/y,et=/\*(?!\s)([^*]+?)\*/y,nt=/_(?!\s)([^_]+?)_(?!\w)/y;function h(t,e,s){t.lastIndex=s;const n=t.exec(e);return n&&n.index===s?n:null}function d(t){const e=[];let s="",n=0,r=0;const c=()=>{s&&(e.push(s),s="")};for(;n<t.length;){const a=n===0||/[^\w]/.test(t[n-1]??""),o=h(J,t,n);if(o){c(),e.push(i.jsx("code",{children:o[1]},r++)),n+=o[0].length;continue}const u=h(X,t,n);if(u){c();const j=st(u[2]);e.push(j?i.jsx("a",{href:j,target:"_blank",rel:"noreferrer",children:d(u[1])},r++):i.jsx("span",{children:d(u[1])},r++)),n+=u[0].length;continue}const p=h(F,t,n);if(p){c(),e.push(i.jsx("strong",{children:i.jsx("em",{children:d(p[1])})},r++)),n+=p[0].length;continue}const l=h(Q,t,n)??(a?h(V,t,n):null);if(l){c(),e.push(i.jsx("strong",{children:d(l[1])},r++)),n+=l[0].length;continue}const m=h(tt,t,n);if(m){c(),e.push(i.jsx("del",{children:d(m[1])},r++)),n+=m[0].length;continue}const f=h(et,t,n)??(a?h(nt,t,n):null);if(f){c(),e.push(i.jsx("em",{children:d(f[1])},r++)),n+=f[0].length;continue}s+=t[n],n+=1}return c(),e}function st(t){if(!t)return null;try{const e=new URL(t);return e.protocol==="http:"||e.protocol==="https:"||e.protocol==="mailto:"?t:null}catch{return null}}export{ct as T,it as c};
@@ -1 +1 @@
1
- import{r as l,j as a}from"./index-BZovGpDk.js";import{a as D}from"./api-h5zurxmi.js";import{f as v}from"./time-Dhsh_2EG.js";/* empty css */import{R as F}from"./refresh-cw-DtF8xPqX.js";const M=44,B=132,H=3500,V=7e3;function W(e,t){return!!(e&&e.available===t.available&&e.sessionId===t.sessionId&&e.body===t.body&&e.lineCount===t.lineCount&&e.columnCount===t.columnCount&&e.truncated===t.truncated&&e.reason===t.reason)}function q(e){const t=new URLSearchParams({lines:String(e.lines),cols:String(e.columns)});return e.agentId?`/api/agents/${encodeURIComponent(e.agentId)}/tmux-peek?${t.toString()}`:e.surface?(t.set("backend",e.surface.backend),t.set("sessionName",e.surface.sessionName),`/api/terminal-sessions/peek?${t.toString()}`):null}function ee({agentId:e,surface:t,enabled:x=!0,lines:E=M,columns:L=B,pollMs:h=H,idlePollMs:u=V,className:N}){const[n,T]=l.useState(null),[k,m]=l.useState(!1),[A,b]=l.useState(null),[U,K]=l.useState(0),c=q({agentId:e,surface:t,lines:E,columns:L});if(l.useEffect(()=>{T(null),b(null),m(!1)},[c]),l.useEffect(()=>{if(!x||!c){m(!1);return}let r=!1,f,y=!0;const R=d=>{window.clearTimeout(f),f=window.setTimeout(()=>{S()},d)},S=async()=>{if(r)return;if(document.visibilityState!=="visible"){R(u);return}y&&m(!0);let d=h;try{const i=await D(c);if(r)return;b(null),T(o=>o&&W(o.payload,i)?o.steady?o:{...o,steady:!0}:{payload:i,observedAt:o?.observedAt??i.capturedAt,changedAt:o?i.capturedAt:null,steady:!1}),d=i.available?h:u}catch(i){if(r)return;b(i instanceof Error?i.message:String(i)),d=u}finally{r||(y&&m(!1),y=!1,R(d))}},$=()=>{document.visibilityState==="visible"&&(window.clearTimeout(f),S())};return S(),document.addEventListener("visibilitychange",$),()=>{r=!0,window.clearTimeout(f),document.removeEventListener("visibilitychange",$)}},[x,u,c,h,U]),!x||!c)return null;const s=n?.payload??null,g=s?.body??"",p=s?.lineCount??E,j=s?.columnCount??L,w=6,I=1.32,O={"--tmux-peek-columns":String(j),"--tmux-peek-rows":String(p),"--tmux-peek-font-size":`${w}px`,"--tmux-peek-line-height":String(I),"--tmux-peek-height":`${Math.ceil(p*w*I+18)}px`},C=!!(s?.available&&g),X=A||(k&&!n?"Loading terminal peek...":s?.available===!1?s.reason??"No tmux pane is available.":C?null:s?.available?"Pane is empty.":"Loading terminal peek..."),_=n?n.changedAt&&!n.steady?"Changed":n.steady?"At rest":"Peeked":null,P=n?.changedAt??n?.observedAt??null,z=n?n.changedAt?n.steady?`No terminal content change since ${v(n.changedAt)}`:`Terminal content changed ${v(n.changedAt)}`:`First terminal peek observed ${v(n.observedAt)}`:void 0;return a.jsxs("div",{className:`ctx-panel-tmux-peek${N?` ${N}`:""}`,style:O,children:[a.jsxs("div",{className:"ctx-panel-tmux-peek-head",children:[a.jsx("span",{children:"Terminal peek"}),a.jsxs("span",{className:"ctx-panel-tmux-peek-grid",children:[j,"x",p]}),s?.sessionId&&a.jsx("span",{className:"ctx-panel-tmux-peek-session",title:s.sessionId,children:s.sessionId.length>12?s.sessionId.slice(0,10):s.sessionId}),_&&P&&a.jsx("time",{className:"ctx-panel-tmux-peek-state",dateTime:new Date(P).toISOString(),title:z,children:_}),a.jsxs("button",{type:"button",className:"ctx-panel-tmux-peek-refresh",onClick:()=>K(r=>r+1),disabled:k,title:"Refresh terminal peek","aria-label":"Refresh terminal peek",children:[a.jsx(F,{size:12,strokeWidth:1.8}),a.jsx("span",{children:k?"Refreshing":"Refresh"})]})]}),C?a.jsx("pre",{className:"ctx-panel-tmux-peek-screen",children:g}):a.jsx("div",{className:"ctx-panel-tmux-peek-empty",children:X}),s?.truncated&&g&&a.jsxs("div",{className:"ctx-panel-tmux-peek-foot",children:["Last ",p," rows from tmux pane"]})]})}export{ee as T};
1
+ import{r as l,j as a}from"./index-CZ-05hKz.js";import{a as D}from"./api-Co9aQ2Jw.js";import{f as v}from"./time-Dhsh_2EG.js";/* empty css */import{R as F}from"./refresh-cw-BRn9Oxxl.js";const M=44,B=132,H=3500,V=7e3;function W(e,t){return!!(e&&e.available===t.available&&e.sessionId===t.sessionId&&e.body===t.body&&e.lineCount===t.lineCount&&e.columnCount===t.columnCount&&e.truncated===t.truncated&&e.reason===t.reason)}function q(e){const t=new URLSearchParams({lines:String(e.lines),cols:String(e.columns)});return e.agentId?`/api/agents/${encodeURIComponent(e.agentId)}/tmux-peek?${t.toString()}`:e.surface?(t.set("backend",e.surface.backend),t.set("sessionName",e.surface.sessionName),`/api/terminal-sessions/peek?${t.toString()}`):null}function ee({agentId:e,surface:t,enabled:x=!0,lines:E=M,columns:L=B,pollMs:h=H,idlePollMs:u=V,className:N}){const[n,T]=l.useState(null),[k,m]=l.useState(!1),[A,b]=l.useState(null),[U,K]=l.useState(0),c=q({agentId:e,surface:t,lines:E,columns:L});if(l.useEffect(()=>{T(null),b(null),m(!1)},[c]),l.useEffect(()=>{if(!x||!c){m(!1);return}let r=!1,f,y=!0;const R=d=>{window.clearTimeout(f),f=window.setTimeout(()=>{S()},d)},S=async()=>{if(r)return;if(document.visibilityState!=="visible"){R(u);return}y&&m(!0);let d=h;try{const i=await D(c);if(r)return;b(null),T(o=>o&&W(o.payload,i)?o.steady?o:{...o,steady:!0}:{payload:i,observedAt:o?.observedAt??i.capturedAt,changedAt:o?i.capturedAt:null,steady:!1}),d=i.available?h:u}catch(i){if(r)return;b(i instanceof Error?i.message:String(i)),d=u}finally{r||(y&&m(!1),y=!1,R(d))}},$=()=>{document.visibilityState==="visible"&&(window.clearTimeout(f),S())};return S(),document.addEventListener("visibilitychange",$),()=>{r=!0,window.clearTimeout(f),document.removeEventListener("visibilitychange",$)}},[x,u,c,h,U]),!x||!c)return null;const s=n?.payload??null,g=s?.body??"",p=s?.lineCount??E,j=s?.columnCount??L,w=6,I=1.32,O={"--tmux-peek-columns":String(j),"--tmux-peek-rows":String(p),"--tmux-peek-font-size":`${w}px`,"--tmux-peek-line-height":String(I),"--tmux-peek-height":`${Math.ceil(p*w*I+18)}px`},C=!!(s?.available&&g),X=A||(k&&!n?"Loading terminal peek...":s?.available===!1?s.reason??"No tmux pane is available.":C?null:s?.available?"Pane is empty.":"Loading terminal peek..."),_=n?n.changedAt&&!n.steady?"Changed":n.steady?"At rest":"Peeked":null,P=n?.changedAt??n?.observedAt??null,z=n?n.changedAt?n.steady?`No terminal content change since ${v(n.changedAt)}`:`Terminal content changed ${v(n.changedAt)}`:`First terminal peek observed ${v(n.observedAt)}`:void 0;return a.jsxs("div",{className:`ctx-panel-tmux-peek${N?` ${N}`:""}`,style:O,children:[a.jsxs("div",{className:"ctx-panel-tmux-peek-head",children:[a.jsx("span",{children:"Terminal peek"}),a.jsxs("span",{className:"ctx-panel-tmux-peek-grid",children:[j,"x",p]}),s?.sessionId&&a.jsx("span",{className:"ctx-panel-tmux-peek-session",title:s.sessionId,children:s.sessionId.length>12?s.sessionId.slice(0,10):s.sessionId}),_&&P&&a.jsx("time",{className:"ctx-panel-tmux-peek-state",dateTime:new Date(P).toISOString(),title:z,children:_}),a.jsxs("button",{type:"button",className:"ctx-panel-tmux-peek-refresh",onClick:()=>K(r=>r+1),disabled:k,title:"Refresh terminal peek","aria-label":"Refresh terminal peek",children:[a.jsx(F,{size:12,strokeWidth:1.8}),a.jsx("span",{children:k?"Refreshing":"Refresh"})]})]}),C?a.jsx("pre",{className:"ctx-panel-tmux-peek-screen",children:g}):a.jsx("div",{className:"ctx-panel-tmux-peek-empty",children:X}),s?.truncated&&g&&a.jsxs("div",{className:"ctx-panel-tmux-peek-foot",children:["Last ",p," rows from tmux pane"]})]})}export{ee as T};
@@ -1 +1 @@
1
- import{j as n,r as h}from"./index-BZovGpDk.js";import{r as w,o as g}from"./scout-voice-D8Q5sZOL.js";import"./fx-z37u1o2z.js";const p={microphone:{label:"Microphone",privacyPane:"Microphone",hint:"Scout Menu captures audio for web dictation. The browser never records.",appLabel:"Scout Menu"},speechRecognition:{label:"Speech recognition",privacyPane:"Speech Recognition",hint:"Live partials and Apple Speech fallback while Parakeet warms.",appLabel:"Scout Menu"}};function x(e){return e?e.granted?"ok":e.canRequest?"warn":e.status==="denied"||e.status==="restricted"?"fail":"warn":"idle"}function y(e){if(!e)return"Unknown";if(e.granted)return"Granted";switch(e.status){case"notDetermined":return"Not requested";case"denied":return"Denied";case"restricted":return"Restricted";case"authorized":return"Granted";default:return e.status}}function M(e,s){return e?e.granted?`${p[s].appLabel} is allowed to use ${p[s].label.toLowerCase()}.`:e.canRequest?`Click Request to show the macOS permission dialog for ${p[s].appLabel}.`:e.status==="denied"?`Choose Retry access. Scout Menu will open macOS ${p[s].privacyPane} settings and detect the change automatically.`:e.status==="restricted"?`${p[s].label} access is restricted on this Mac.`:`${p[s].appLabel} needs ${p[s].label.toLowerCase()} access before dictation works.`:"Launch Scout Menu on this Mac, then refresh."}function j(e){return!!(e&&!e.granted&&!e.canRequest&&e.status!=="unknown")}function R(e){return!!(e&&!e.granted&&e.status!=="restricted"&&e.status!=="unknown")}function L({hostOnline:e,micPermission:s,speechPermission:r,modelReady:l}){const c=s?.granted??!1,d=r?.granted??!1,u=e&&c&&d;let i="fail",t="Scout Menu not connected",a="Launch Scout Menu on this Mac. Web dictation uses the Scout voice host — not the browser microphone.";return e&&!c&&(s?.status==="denied"||s?.status==="restricted")?(i="fail",t="Microphone blocked for Scout Menu",a=s?.status==="restricted"?"Microphone access is restricted on this Mac.":"Choose Retry access below. Scout will open the right macOS pane and detect the change."):e&&!c&&s?.canRequest?(i="warn",t="Microphone access needed",a="Request permission below or tap the mic in chat. Scout Menu will show the macOS prompt."):e&&c&&!d&&(r?.status==="denied"||r?.status==="restricted")?(i="warn",t="Speech recognition blocked for Scout Menu",a=r?.status==="restricted"?"Speech recognition is restricted on this Mac.":"Open Privacy & Security → Speech Recognition to change it."):e&&c&&!d?(i="warn",t="Speech recognition needed",a="Request access below or tap the mic in chat. Scout Menu will show the macOS prompt."):e&&u?(i="ok",t=l?"Dictation ready":"Dictation ready · model warming",a="Scout Menu is running as the voice host. The browser does not capture audio."):e&&(i="warn",t="Voice host connected",a="Finish permissions below to enable dictation."),n.jsxs("div",{className:`s-voice-host-banner s-voice-host-banner--${i}`,children:[n.jsx("div",{className:"s-voice-host-banner-dot","aria-hidden":!0}),n.jsxs("div",{className:"s-voice-host-banner-copy",children:[n.jsx("div",{className:"s-voice-host-banner-title",children:t}),n.jsx("div",{className:"s-voice-host-banner-detail",children:a}),n.jsxs("div",{className:"s-voice-host-banner-meta",children:[n.jsx("span",{children:"Voice host · Scout Menu"}),n.jsx("span",{children:e?"Connected":"Offline"}),n.jsx("span",{children:"Capture · native"})]})]})]})}function f({kind:e,status:s,disabled:r,onActionError:l,onRefresh:c}){const[d,u]=h.useState(!1),i=h.useRef(s),t=p[e],a=x(s);h.useEffect(()=>{i.current=s},[s]);const m=h.useCallback(async()=>{for(let o=0;o<30;o+=1)if(await new Promise(S=>window.setTimeout(S,1e3)),await c(),i.current?.granted)return},[c]),v=h.useCallback(async()=>{u(!0);try{await w(e),await m()}catch(o){l(o instanceof Error?o.message:String(o))}finally{u(!1)}},[e,l,m]),b=h.useCallback(async()=>{u(!0);try{await g(e)}catch(o){l(o instanceof Error?o.message:String(o))}finally{u(!1)}},[e,l]);return n.jsxs("div",{className:`s-voice-permission-card s-voice-permission-card--${a}`,children:[n.jsxs("div",{className:"s-voice-permission-card-head",children:[n.jsx("span",{className:"s-voice-permission-card-dot","aria-hidden":!0}),n.jsxs("div",{children:[n.jsx("div",{className:"s-voice-permission-card-label",children:t.label}),n.jsxs("div",{className:"s-voice-permission-card-app",children:["via ",t.appLabel]})]}),n.jsx("span",{className:`s-voice-permission-card-status s-voice-permission-card-status--${a}`,children:y(s)})]}),n.jsx("p",{className:"s-voice-permission-card-hint",children:t.hint}),n.jsx("p",{className:"s-voice-permission-card-detail",children:M(s,e)}),n.jsxs("div",{className:"s-voice-permission-card-actions",children:[R(s)?n.jsx("button",{type:"button",className:"s-voice-permission-btn s-voice-permission-btn--primary",disabled:r||d,onClick:()=>{v()},children:d?s?.canRequest?"Requesting…":"Waiting for macOS…":s?.canRequest?"Request access":"Retry access"}):null,j(s)?n.jsxs("button",{type:"button",className:"s-voice-permission-btn",disabled:r||d,onClick:()=>{b()},children:["Open Privacy & Security → ",t.privacyPane]}):null]})]})}function P({permissions:e,hostOnline:s,disabled:r,onError:l,onRefresh:c}){const d=e?.find(i=>i.kind==="microphone")??null,u=e?.find(i=>i.kind==="speechRecognition")??null;return n.jsxs("div",{className:"s-voice-permissions-panel",children:[n.jsx(f,{kind:"microphone",status:s?d:null,disabled:r||!s,onActionError:l,onRefresh:c}),n.jsx(f,{kind:"speechRecognition",status:s?u:null,disabled:r||!s,onActionError:l,onRefresh:c}),s?null:n.jsx("p",{className:"s-voice-permissions-offline",children:"Scout Menu is not reporting to this web server. Permissions are managed on the Mac where Scout Menu runs."})]})}export{L as VoiceHostStatusBanner,P as VoicePermissionsPanel};
1
+ import{j as n,r as h}from"./index-CZ-05hKz.js";import{r as w,o as g}from"./scout-voice-BhPzrc6P.js";import"./fx-z37u1o2z.js";const p={microphone:{label:"Microphone",privacyPane:"Microphone",hint:"Scout Menu captures audio for web dictation. The browser never records.",appLabel:"Scout Menu"},speechRecognition:{label:"Speech recognition",privacyPane:"Speech Recognition",hint:"Live partials and Apple Speech fallback while Parakeet warms.",appLabel:"Scout Menu"}};function x(e){return e?e.granted?"ok":e.canRequest?"warn":e.status==="denied"||e.status==="restricted"?"fail":"warn":"idle"}function y(e){if(!e)return"Unknown";if(e.granted)return"Granted";switch(e.status){case"notDetermined":return"Not requested";case"denied":return"Denied";case"restricted":return"Restricted";case"authorized":return"Granted";default:return e.status}}function M(e,s){return e?e.granted?`${p[s].appLabel} is allowed to use ${p[s].label.toLowerCase()}.`:e.canRequest?`Click Request to show the macOS permission dialog for ${p[s].appLabel}.`:e.status==="denied"?`Choose Retry access. Scout Menu will open macOS ${p[s].privacyPane} settings and detect the change automatically.`:e.status==="restricted"?`${p[s].label} access is restricted on this Mac.`:`${p[s].appLabel} needs ${p[s].label.toLowerCase()} access before dictation works.`:"Launch Scout Menu on this Mac, then refresh."}function j(e){return!!(e&&!e.granted&&!e.canRequest&&e.status!=="unknown")}function R(e){return!!(e&&!e.granted&&e.status!=="restricted"&&e.status!=="unknown")}function L({hostOnline:e,micPermission:s,speechPermission:r,modelReady:l}){const c=s?.granted??!1,d=r?.granted??!1,u=e&&c&&d;let i="fail",t="Scout Menu not connected",a="Launch Scout Menu on this Mac. Web dictation uses the Scout voice host — not the browser microphone.";return e&&!c&&(s?.status==="denied"||s?.status==="restricted")?(i="fail",t="Microphone blocked for Scout Menu",a=s?.status==="restricted"?"Microphone access is restricted on this Mac.":"Choose Retry access below. Scout will open the right macOS pane and detect the change."):e&&!c&&s?.canRequest?(i="warn",t="Microphone access needed",a="Request permission below or tap the mic in chat. Scout Menu will show the macOS prompt."):e&&c&&!d&&(r?.status==="denied"||r?.status==="restricted")?(i="warn",t="Speech recognition blocked for Scout Menu",a=r?.status==="restricted"?"Speech recognition is restricted on this Mac.":"Open Privacy & Security → Speech Recognition to change it."):e&&c&&!d?(i="warn",t="Speech recognition needed",a="Request access below or tap the mic in chat. Scout Menu will show the macOS prompt."):e&&u?(i="ok",t=l?"Dictation ready":"Dictation ready · model warming",a="Scout Menu is running as the voice host. The browser does not capture audio."):e&&(i="warn",t="Voice host connected",a="Finish permissions below to enable dictation."),n.jsxs("div",{className:`s-voice-host-banner s-voice-host-banner--${i}`,children:[n.jsx("div",{className:"s-voice-host-banner-dot","aria-hidden":!0}),n.jsxs("div",{className:"s-voice-host-banner-copy",children:[n.jsx("div",{className:"s-voice-host-banner-title",children:t}),n.jsx("div",{className:"s-voice-host-banner-detail",children:a}),n.jsxs("div",{className:"s-voice-host-banner-meta",children:[n.jsx("span",{children:"Voice host · Scout Menu"}),n.jsx("span",{children:e?"Connected":"Offline"}),n.jsx("span",{children:"Capture · native"})]})]})]})}function f({kind:e,status:s,disabled:r,onActionError:l,onRefresh:c}){const[d,u]=h.useState(!1),i=h.useRef(s),t=p[e],a=x(s);h.useEffect(()=>{i.current=s},[s]);const m=h.useCallback(async()=>{for(let o=0;o<30;o+=1)if(await new Promise(S=>window.setTimeout(S,1e3)),await c(),i.current?.granted)return},[c]),v=h.useCallback(async()=>{u(!0);try{await w(e),await m()}catch(o){l(o instanceof Error?o.message:String(o))}finally{u(!1)}},[e,l,m]),b=h.useCallback(async()=>{u(!0);try{await g(e)}catch(o){l(o instanceof Error?o.message:String(o))}finally{u(!1)}},[e,l]);return n.jsxs("div",{className:`s-voice-permission-card s-voice-permission-card--${a}`,children:[n.jsxs("div",{className:"s-voice-permission-card-head",children:[n.jsx("span",{className:"s-voice-permission-card-dot","aria-hidden":!0}),n.jsxs("div",{children:[n.jsx("div",{className:"s-voice-permission-card-label",children:t.label}),n.jsxs("div",{className:"s-voice-permission-card-app",children:["via ",t.appLabel]})]}),n.jsx("span",{className:`s-voice-permission-card-status s-voice-permission-card-status--${a}`,children:y(s)})]}),n.jsx("p",{className:"s-voice-permission-card-hint",children:t.hint}),n.jsx("p",{className:"s-voice-permission-card-detail",children:M(s,e)}),n.jsxs("div",{className:"s-voice-permission-card-actions",children:[R(s)?n.jsx("button",{type:"button",className:"s-voice-permission-btn s-voice-permission-btn--primary",disabled:r||d,onClick:()=>{v()},children:d?s?.canRequest?"Requesting…":"Waiting for macOS…":s?.canRequest?"Request access":"Retry access"}):null,j(s)?n.jsxs("button",{type:"button",className:"s-voice-permission-btn",disabled:r||d,onClick:()=>{b()},children:["Open Privacy & Security → ",t.privacyPane]}):null]})]})}function P({permissions:e,hostOnline:s,disabled:r,onError:l,onRefresh:c}){const d=e?.find(i=>i.kind==="microphone")??null,u=e?.find(i=>i.kind==="speechRecognition")??null;return n.jsxs("div",{className:"s-voice-permissions-panel",children:[n.jsx(f,{kind:"microphone",status:s?d:null,disabled:r||!s,onActionError:l,onRefresh:c}),n.jsx(f,{kind:"speechRecognition",status:s?u:null,disabled:r||!s,onActionError:l,onRefresh:c}),s?null:n.jsx("p",{className:"s-voice-permissions-offline",children:"Scout Menu is not reporting to this web server. Permissions are managed on the Mac where Scout Menu runs."})]})}export{L as VoiceHostStatusBanner,P as VoicePermissionsPanel};
@@ -0,0 +1,5 @@
1
+ import{r as h,j as e}from"./index-CZ-05hKz.js";import{D as Z}from"./DocumentFocusViewer-DZVhS7as.js";import{S as O}from"./StatusPill-ZZQwxB1a.js";import{c as J}from"./TextDocumentSurface-CKQP-cBT.js";import{WorkFilesViewer as he}from"./WorkFilesViewer-BjJS7GyM.js";import{r as C}from"./mentions-CcPFMbmZ.js";import{p as D,a as Y}from"./api-Co9aQ2Jw.js";import{u as W,m as ue,j as me}from"./Provider-B2xuo3rf.js";import{b as ke}from"./router-DJj2WbDg.js";import{u as fe}from"./sse-CiOSzE5n.js";import{w as pe,c as ve}from"./status-tone-BM_zuRy1.js";import{t as $}from"./time-Dhsh_2EG.js";import{B as E}from"./BackToPicker-4JaeRvDm.js";import{o as f}from"./openContent-C6XO6kr5.js";import{TailView as xe}from"./TailView-Q4FVMsUH.js";import{M}from"./message-square-D9YYWE0x.js";import{R as V}from"./radio-Dm1ItnA4.js";import{c as P}from"./createLucideIcon-DXpqZP7I.js";import{E as ee}from"./external-link-Ckiyzjwo.js";import{A as se}from"./activity-Bj3Hnbj3.js";import{F as K}from"./file-text-KijGBnME.js";import{C as we}from"./code-xml-Jtxsp5d1.js";import"./x-e3h2hDsp.js";import"./chevron-right-CzH-TaSF.js";import"./chevron-down-Mp9mu_yd.js";import"./perf-PX8Rx0EP.js";import"./colors-BtO5_zlx.js";import"./index-BVlMw8x_.js";import"./AgentDetailCard-UqPNpcvB.js";import"./AgentLiveActions-BwuzOE8h.js";import"./terminal-takeover-DANQfTcy.js";import"./eye-CpfyvdLq.js";import"./terminal-yN9xN-h9.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BJIamJOH.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"./search-D1tJSAWe.js";import"./chunk-HRAB3GC3-swV8PA2k.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-BQ6t92tJ.js";import"./index-BWHgHrtv.js";import"./SlidePanel-C-q7XwTa.js";import"./tail-display-DcliDVkW.js";import"./lane-edit-display-C_Aujldz.js";import"./tail-events-BMQmSx1n.js";const je=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],ge=P("book-open",je);const Ne=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",key:"116196"}]],U=P("clipboard",Ne);const ye=[["path",{d:"M20 10a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1h-2.5a1 1 0 0 1-.8-.4l-.9-1.2A1 1 0 0 0 15 3h-2a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"hod4my"}],["path",{d:"M20 21a1 1 0 0 0 1-1v-3a1 1 0 0 0-1-1h-2.9a1 1 0 0 1-.88-.55l-.42-.85a1 1 0 0 0-.92-.6H13a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1Z",key:"w4yl2u"}],["path",{d:"M3 5a2 2 0 0 0 2 2h3",key:"f2jnh7"}],["path",{d:"M3 3v13a2 2 0 0 0 2 2h3",key:"k8epm1"}]],z=P("folder-tree",ye),H=3e4;function B(s){return`/api/work/${encodeURIComponent(s)}`}function G(s){switch(s){case"review":return"In review";case"waiting":return"Waiting";case"working":return"Working";case"done":return"Done";default:return s.replace(/_/g," ")}}function Ie(s){switch(s){case"badge":return"Noteworthy";case"interrupt":return"Blocked signal";default:return null}}function be({detail:s,signal:t,ownerLabel:r,nextMoveLabel:n}){const i=n==="—"?r:n;return s.attention==="interrupt"?{eyebrow:"Network signal",title:`Blocker surfaced for ${i}`,body:s.conversationId?"Open the thread if you want the blocking context.":"No thread is attached; the record and timeline hold the current context.",tone:"blocked"}:t?{eyebrow:"Network signal",title:`Plan activity from ${i}`,body:s.conversationId?"A plan or spec discussion is active in the agent network. Open the thread only if you want context.":"A plan or spec discussion is active in the agent network, but no thread is attached yet.",tone:"attention"}:s.activeFlights.length>0||s.state==="in_turn"||s.state==="in_flight"?{eyebrow:"Next move",title:`${r} is working`,body:s.conversationId?"The thread has the freshest working context.":"Watch the flight list and timeline for the next update.",tone:"active"}:s.state==="waiting"||s.state==="review"?{eyebrow:"Next move",title:`Waiting on ${n}`,body:s.conversationId?"The thread has the current unblock context.":"No thread is attached; ownership and timeline are the best context.",tone:"quiet"}:s.state==="done"?{eyebrow:"Outcome",title:"Work is done",body:s.conversationId?"The thread keeps the handoff and final context.":"The record and timeline are preserved here.",tone:"quiet"}:{eyebrow:"Next move",title:n==="—"?"No next owner set":`Next move: ${n}`,body:s.conversationId?"The thread has the latest context.":"Use the record and timeline to decide where this should go next.",tone:"quiet"}}function v({children:s,icon:t,onClick:r,primary:n=!1,disabled:i=!1}){return e.jsxs("button",{type:"button",className:`s-work-action-button${n?" s-work-action-button-primary":""}`,onClick:r,disabled:i,children:[t,e.jsx("span",{children:s})]})}function te(s){const t=s?.toLowerCase()??"";return t.includes("mcp")?"MCP request":t.includes("cli")?"CLI request":t?`${s} request`:"Scout request"}function ne(s){const t=s.primaryInvocation,r=t?.targetAgentName??t?.targetAgentId??s.ownerName??s.ownerId??"The agent";switch(t?.state??s.activeFlights[0]?.state??s.state){case"running":return`${r} is running in background. Synchronous wait may have expired, but the Run is still active.`;case"waking":return`${r} is waking up for this Run.`;case"queued":return`${r} has the Run queued.`;case"waiting":case"review":return`${r} paused and is waiting for the next move.`;case"completed":case"done":return`${r} completed this Run.`;case"failed":return`${r} reported a failure for this Run.`;case"cancelled":return"This Run was cancelled.";default:return`${r} is attached to this work item.`}}function Se(s){const t=s.primaryInvocation;return[`Work: ${s.id}`,`State: ${s.currentPhase}`,t?`Source: ${te(t.source)}`:null,t?.targetAgentName||t?.targetAgentId?`Resolved agent: ${t.targetAgentName??t.targetAgentId}`:null,t?.requestedHarness?`Requested harness: ${t.requestedHarness}`:null,t?.requestedModel?`Requested model: ${t.requestedModel}`:null,t?.requestedReasoningEffort?`Requested effort: ${t.requestedReasoningEffort}`:null,t?.resolvedHarness?`Resolved harness: ${t.resolvedHarness}`:null,t?.resolvedModel?`Resolved model: ${t.resolvedModel}`:null,t?.resolvedReasoningEffort?`Resolved effort: ${t.resolvedReasoningEffort}`:null,t?.observedModel?`Observed model: ${t.observedModel}`:null,t?.observedReasoningEffort?`Observed effort: ${t.observedReasoningEffort}`:null,t?.resolvedSessionId?`Session: ${t.resolvedSessionId}`:null,t?.flightId?`Flight: ${t.flightId}`:null,t?.invocationId?`Invocation: ${t.invocationId}`:null,s.conversationId?`Conversation: ${s.conversationId}`:null,ne(s)].filter(Boolean).join(`
2
+ `)}function $e(s){const t=s.primaryInvocation;return[`workId=${s.id}`,t?.flightId?`flightId=${t.flightId}`:null,t?.invocationId?`invocationId=${t.invocationId}`:null,s.conversationId?`conversationId=${s.conversationId}`:null,t?.targetAgentId?`agentId=${t.targetAgentId}`:null,t?.resolvedSessionId?`sessionId=${t.resolvedSessionId}`:null].filter(Boolean).join(`
3
+ `)}function Q(s){navigator.clipboard?.writeText(s)}function Ce({detail:s,navigate:t}){const{route:r}=W(),n=s.primaryInvocation,i=oe(s).query,o=$e(s),u=te(n?.source),k=n?.targetAgentName??n?.targetAgentId??s.ownerName??s.ownerId??"—",j=n?.task??re(s)??s.summary??"No original prompt captured.",x=n?.resolvedSessionId?{view:"sessions",sessionId:n.resolvedSessionId,...n.targetAgentId?{agentId:n.targetAgentId}:{}}:n?.targetAgentId?{view:"agents-v2",agentId:n.targetAgentId,tab:"observe"}:null,g=n?.resolvedSessionId?"Observe session":"Observe agent",p={view:"ops",mode:"tail",...i?{tailQuery:i}:{},workId:s.id,...n?.flightId?{flightId:n.flightId}:{},...n?.invocationId?{invocationId:n.invocationId}:{},...s.conversationId?{conversationId:s.conversationId}:{},...n?.resolvedSessionId?{sessionId:n.resolvedSessionId}:{},...n?.targetAgentId?{targetAgentId:n.targetAgentId}:{}};return e.jsxs("section",{className:"s-work-casefile-section s-work-ask-overview","data-kind":"ask","data-work-id":s.id,"data-flight-id":n?.flightId??void 0,"data-invocation-id":n?.invocationId??void 0,"data-agent-id":n?.targetAgentId??void 0,children:[e.jsx("div",{className:"s-work-ask-head",children:e.jsxs("div",{children:[e.jsxs("div",{className:"s-work-ask-badges",children:[e.jsx("span",{className:"s-work-ask-badge s-work-ask-badge-primary",children:"RUN created"}),e.jsx("span",{className:"s-work-ask-badge",children:u}),n?.state&&e.jsx("span",{className:"s-work-ask-badge",children:n.state})]}),e.jsx("h2",{className:"s-agent-section-title s-work-ask-title",children:"Message / work source of truth"}),e.jsx("p",{className:"s-work-ask-lifecycle",children:ne(s)})]})}),e.jsxs("div",{className:"s-work-ask-grid",children:[e.jsxs("div",{className:"s-work-ask-prompt",children:[e.jsx("span",{className:"s-work-ask-label",children:"Original prompt"}),e.jsx("p",{children:C(j)})]}),e.jsxs("dl",{className:"s-work-ask-facts",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Requested harness"}),e.jsx("dd",{children:n?.requestedHarness??"default"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Requested model"}),e.jsx("dd",{children:n?.requestedModel??"default"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Requested effort"}),e.jsx("dd",{children:n?.requestedReasoningEffort??"default"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Resolved agent"}),e.jsx("dd",{children:k})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Resolved harness"}),e.jsx("dd",{children:n?.resolvedHarness??"—"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Resolved model"}),e.jsx("dd",{children:n?.resolvedModel??"—"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Resolved effort"}),e.jsx("dd",{children:n?.resolvedReasoningEffort??"—"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Observed model"}),e.jsx("dd",{children:n?.observedModel??"—"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Observed effort"}),e.jsx("dd",{children:n?.observedReasoningEffort??"—"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Session"}),e.jsx("dd",{children:n?.resolvedSessionId??n?.targetSessionId??"—"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Flight"}),e.jsx("dd",{children:n?.flightId??"—"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Invocation"}),e.jsx("dd",{children:n?.invocationId??"—"})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Work"}),e.jsx("dd",{children:s.id})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Conversation"}),e.jsx("dd",{children:s.conversationId??"—"})]})]})]}),e.jsxs("div",{className:"s-work-ask-actions",children:[x&&e.jsx(v,{primary:!0,icon:e.jsx(V,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>f(t,x,{returnTo:r}),children:g}),e.jsx(v,{icon:e.jsx(U,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>Q(Se(s)),children:"Copy status"}),s.conversationId&&e.jsx(v,{icon:e.jsx(M,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>f(t,{view:"conversation",conversationId:s.conversationId},{returnTo:r}),children:"Open chat"}),e.jsx(v,{icon:e.jsx(ee,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>f(t,{view:"work",workId:s.id},{returnTo:r}),children:"Open work"}),n?.resolvedSessionId&&e.jsx(v,{icon:e.jsx(V,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>f(t,{view:"sessions",sessionId:n.resolvedSessionId},{returnTo:r}),children:"Open session"}),e.jsx(v,{icon:e.jsx(se,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>f(t,p,{returnTo:r}),children:"Scout tail"}),o&&e.jsx(v,{icon:e.jsx(U,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>Q(o),children:"Copy MCP ids"}),s.conversationId&&e.jsx(v,{icon:e.jsx(M,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>f(t,{view:"conversation",conversationId:s.conversationId},{returnTo:r}),children:"Nudge agent"})]})]})}function Me({detail:s,navigate:t}){const r=!!s.conversationId,n=s.inventory??Te(s),i=n.materials.filter(l=>l.kind==="plan"||l.kind==="spec"),o=n.materials.filter(l=>l.kind==="doc"),u=n.materials.filter(l=>l.kind==="code"||l.kind==="test"||l.kind==="config"||l.kind==="asset"||l.kind==="other"),k=i.length>0,j=o.length>0,x=re(s),g=i[0]?Ae(i[0]):x??"No plan or spec file detected yet.",p=[...i,...o,...u].filter(l=>l.status!=="deleted"),[I,N]=h.useState(!1),[m,d]=h.useState(null),[b,y]=h.useState(null),[T,w]=h.useState(null),[R,a]=h.useState(null),[ae,_]=h.useState(!1),[de,le]=h.useState("all"),A=h.useCallback(l=>{N(!1),d(l)},[]),ce=h.useCallback(()=>{d(null),N(!0)},[]),q=h.useCallback(l=>{N(!1),d(null),le(l),_(!0)},[]);return h.useEffect(()=>{m&&!p.some(l=>l.id===m)&&d(null)},[m,p]),h.useEffect(()=>{if(!m){y(null),w(null),a(null);return}let l=!1;return a(m),w(null),Y(`/api/work/${encodeURIComponent(s.id)}/material?materialId=${encodeURIComponent(m)}`).then(S=>{l||y(S)}).catch(S=>{l||(y(null),w(S instanceof Error?S.message:String(S)))}).finally(()=>{l||a(null)}),()=>{l=!0}},[s.id,m]),e.jsxs("section",{className:"s-work-casefile-section s-work-materials-section",children:[e.jsxs("div",{className:"s-agent-section-heading",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"s-agent-section-title",children:"Work materials"}),e.jsxs("p",{className:"s-work-section-note",children:[Re(n.mode)," · ",n.source," evidence · ",n.confidence," confidence"]})]}),e.jsxs("div",{className:"s-work-inventory-meta","aria-label":"Inventory totals",children:[e.jsxs("span",{children:[n.totals.materials," files"]}),e.jsxs("span",{children:[n.totals.agents," agents"]}),e.jsxs("span",{children:[n.totals.sessions," sessions"]})]})]}),e.jsxs("div",{className:"s-work-material-grid",children:[e.jsxs("article",{className:"s-work-material-card s-work-material-card-primary",children:[e.jsxs("div",{className:"s-work-material-head",children:[e.jsx("span",{className:"s-work-material-icon","aria-hidden":"true",children:e.jsx(K,{size:15,strokeWidth:1.8})}),e.jsxs("div",{children:[e.jsx("div",{className:"s-work-material-kicker",children:k?"Plans & specs":"Brief"}),e.jsx("div",{className:"s-work-material-title",children:k?`${i.length} surfaced`:x?"Original request":"No plan file yet"})]})]}),e.jsx("p",{className:"s-work-material-copy",children:g}),e.jsx(F,{materials:i.slice(0,3),empty:"No plan or spec files detected yet.",selectedId:m,onOpen:A}),e.jsxs("div",{className:"s-work-material-card-actions",children:[x&&e.jsxs("button",{type:"button",className:`s-work-material-link${I?" s-work-material-link-active":""}`,onClick:ce,children:[e.jsx(K,{"aria-hidden":"true",size:13,strokeWidth:1.8}),"View request"]}),i.length>3&&e.jsxs("button",{type:"button",className:"s-work-material-link",onClick:()=>q("plan"),children:[e.jsx(z,{"aria-hidden":"true",size:13,strokeWidth:1.8}),"View all ",i.length]})]})]}),e.jsxs("div",{className:`s-work-material-evidence-stack${j?"":" s-work-material-evidence-stack-single"}`,children:[j&&e.jsxs("article",{className:"s-work-material-card s-work-material-card-docs",children:[e.jsxs("div",{className:"s-work-material-head",children:[e.jsx("span",{className:"s-work-material-icon","aria-hidden":"true",children:e.jsx(ge,{size:15,strokeWidth:1.8})}),e.jsxs("div",{children:[e.jsx("div",{className:"s-work-material-kicker",children:"Docs"}),e.jsxs("div",{className:"s-work-material-title",children:[o.length," documents"]})]})]}),e.jsx(F,{materials:o.slice(0,3),empty:"Docs from git or trace evidence will appear here.",selectedId:m,onOpen:A}),o.length>3&&e.jsx("div",{className:"s-work-material-card-actions",children:e.jsxs("button",{type:"button",className:"s-work-material-link",onClick:()=>q("doc"),children:[e.jsx(z,{"aria-hidden":"true",size:13,strokeWidth:1.8}),"View all ",o.length]})})]}),e.jsxs("article",{className:"s-work-material-card s-work-material-card-code",children:[e.jsxs("div",{className:"s-work-material-head",children:[e.jsx("span",{className:"s-work-material-icon","aria-hidden":"true",children:e.jsx(we,{size:15,strokeWidth:1.8})}),e.jsxs("div",{children:[e.jsx("div",{className:"s-work-material-kicker",children:"Code"}),e.jsx("div",{className:"s-work-material-title",children:u.length>0?`${u.length} related files`:"No code yet"})]})]}),e.jsx(F,{materials:u.slice(0,5),empty:"Changed code from git or session traces will appear here.",selectedId:m,onOpen:A}),u.length>5&&e.jsx("div",{className:"s-work-material-card-actions",children:e.jsxs("button",{type:"button",className:"s-work-material-link",onClick:()=>q("code"),children:[e.jsx(z,{"aria-hidden":"true",size:13,strokeWidth:1.8}),"View all ",u.length]})})]})]})]}),e.jsx(We,{detail:s,summary:x,open:I,hasThread:r,navigate:t,onClose:()=>N(!1)}),e.jsx(qe,{material:p.find(l=>l.id===m)??null,content:b,loading:!!R,error:T,onClose:()=>d(null)}),e.jsx(he,{workId:s.id,workTitle:s.title,materials:p,open:ae,initialKind:de,onClose:()=>_(!1)}),n.limitations.length>0&&e.jsx("div",{className:"s-work-inventory-note",children:n.limitations[0]})]})}function We({detail:s,summary:t,open:r,hasThread:n,navigate:i,onClose:o}){const{route:u}=W();if(!r||!t)return null;const k=J({id:`${s.id}:brief`,title:"Original request",uri:`scout://work/${s.id}/brief`,mediaType:"text/markdown",value:`# Original request
4
+
5
+ ${t}`,readOnly:!0});return e.jsx(Z,{kind:"ask",document:k,title:"Original request",eyebrow:"Brief",subtitle:s.title,meta:["request",n?"thread linked":"threadless"],mode:"preview",actions:n&&s.conversationId?[{label:"Thread",icon:e.jsx(M,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>f(i,{view:"conversation",conversationId:s.conversationId},{returnTo:u}),title:"Open source thread"}]:[],onClose:o})}function re(s){const t=[...s.timeline].sort((i,o)=>i.at-o.at),r=t.find(i=>i.kind==="collaboration_event"&&i.detailKind==="created"&&i.summary),n=t.find(i=>i.kind==="message"&&i.summary);return r?.summary??n?.summary??null}function Te(s){return{workId:s.id,generatedAt:Date.now(),mode:"trace-only",source:"broker",confidence:"low",agents:[],sessions:[],materials:[],totals:{materials:0,plans:0,specs:0,docs:0,code:0,tests:0,config:0,assets:0,agents:0,sessions:0},limitations:["Inventory is not available from this server yet."]}}function Re(s){switch(s){case"isolated-git-worktree":return"Isolated git worktree";case"shared-git-repo":return"Shared git repo";case"explicit-artifacts":return"Explicit artifacts";default:return"Trace-only"}}function Ae(s){const t=s.diffStat?`+${s.diffStat.additions} / -${s.diffStat.deletions}`:s.status;return`${s.path} · ${t} · ${s.confidence} confidence`}function F({materials:s,empty:t,selectedId:r,onOpen:n}){return s.length===0?e.jsx("div",{className:"s-work-material-empty",children:t}):e.jsx("div",{className:"s-work-material-list",children:s.map(i=>e.jsxs("button",{type:"button",className:`s-work-material-row${r===i.id?" s-work-material-row-active":""}`,title:i.path,onClick:()=>n?.(i.id),disabled:!n||i.status==="deleted",children:[e.jsx("div",{className:"s-work-material-path",children:i.path}),e.jsxs("div",{className:"s-work-material-row-meta",children:[e.jsx("span",{children:i.status}),i.diffStat&&e.jsxs("span",{children:["+",i.diffStat.additions," -",i.diffStat.deletions]}),e.jsx("span",{children:i.confidence})]})]},i.id))})}function qe({material:s,content:t,loading:r,error:n,onClose:i}){if(!s)return null;const o=t?J({id:t.materialId,title:t.title,uri:t.uri,mediaType:t.mediaType,value:t.content,readOnly:!0}):null;return e.jsx(Z,{kind:Oe(s),document:o,title:s.path,eyebrow:s.kind==="spec"?"Spec":s.kind,subtitle:t?.uri??s.worktreeRoot??void 0,meta:[s.status,s.confidence,...t?[X(t.sizeBytes)]:[]],mode:o?.kind==="markdown"?"preview":"read",state:r||!t&&!n?"Loading file...":null,error:r?null:n,notice:t?.truncated?`Preview truncated at ${X(t.content.length)}.`:null,onClose:i})}function Oe(s){return s.kind==="plan"||s.kind==="spec"?"plan":s.kind==="doc"?"doc":"code"}function X(s){return s<1024?`${s} B`:s<1024*1024?`${Math.round(s/1024)} KB`:`${(s/(1024*1024)).toFixed(1)} MB`}function ie(s){const t=s.split(".");return t[t.length-1]||s}function c(s,t){const r=t?.trim();!r||r.length<3||s.add(r)}function L(s,t){c(s,t);const n=t?.trim().replace(/\/+$/,"")?.split("/").filter(Boolean).at(-1);n&&n.length>=3&&s.add(n)}function Ee(s){return s.replace(/^\/Users\/[^/]+/,"~")}function oe(s){const t=new Set,r=[],n=s.ownerName??s.ownerId??s.nextMoveOwnerName??s.nextMoveOwnerId;c(t,s.id),c(t,s.conversationId),c(t,s.ownerId),c(t,s.nextMoveOwnerId),c(t,s.ownerName),c(t,s.nextMoveOwnerName);for(const o of s.activeFlights)c(t,o.id),c(t,o.invocationId),c(t,o.agentId),c(t,o.agentName),c(t,o.conversationId),c(t,o.collaborationRecordId);for(const o of s.inventory?.agents??[])c(t,o.id),c(t,o.name),c(t,o.sessionId),L(t,o.cwd),L(t,o.projectRoot);const i=s.inventory?.sessions.find(o=>o.cwd)??s.inventory?.sessions[0]??null;for(const o of s.inventory?.sessions??[])c(t,o.id),c(t,o.conversationId),c(t,o.agentId),c(t,o.agentName),L(t,o.cwd);return n&&r.push(n),i?.cwd&&r.push(Ee(i.cwd)),{query:[...t].slice(0,20).join("|"),label:r.length>0?r.join(" · "):`Case ${ie(s.id)}`}}function ze(s){return s.kind==="message"?s.title||(s.detailKind==="agent"?"reply":"thread update"):s.kind==="flight_started"?"agent output":s.kind==="flight_completed"?s.detailKind==="completed"?"reply":s.detailKind??"flight":s.detailKind==="created"?"request created":s.title??s.kind.replace(/_/g," ")}function Be({detail:s}){const t=s.timeline.slice(0,18);return t.length===0?null:e.jsxs("section",{className:"s-work-casefile-section s-work-timeline-panel",children:[e.jsx("div",{className:"s-agent-section-heading",children:e.jsxs("div",{children:[e.jsx("h2",{className:"s-agent-section-title",children:"Timeline"}),e.jsx("p",{className:"s-work-section-note",children:"Run lifecycle, follow-up requirements, flight state, and replies attached to this work item."})]})}),e.jsx("div",{className:"s-work-timeline-list",children:t.map(r=>e.jsxs("article",{className:`s-work-timeline-row s-work-timeline-row-${r.kind}`,"data-kind":r.kind,"data-flight-id":r.flightId??void 0,"data-work-id":s.id,"data-conversation-id":r.conversationId??s.conversationId??void 0,children:[e.jsx("span",{className:"s-work-timeline-badge",children:ze(r)}),e.jsxs("div",{className:"s-work-timeline-body",children:[e.jsxs("div",{className:"s-work-timeline-meta",children:[e.jsx("span",{children:r.actorName??r.actorId??"system"}),e.jsx("span",{children:$(r.at)})]}),r.summary&&e.jsx("p",{children:C(r.summary)})]})]},r.id))})]})}function Fe({detail:s,navigate:t}){const{route:r}=W(),n=oe(s);return e.jsxs("section",{className:"s-work-casefile-section s-work-tail-section",children:[e.jsxs("div",{className:"s-agent-section-heading s-work-tail-heading",children:[e.jsxs("div",{children:[e.jsxs("h2",{className:"s-agent-section-title s-work-tail-title",children:[e.jsx(se,{"aria-hidden":"true",size:15,strokeWidth:1.8}),"Live tail"]}),e.jsxs("p",{className:"s-work-section-note",children:["Filtered to ",n.label]})]}),e.jsx(v,{icon:e.jsx(ee,{"aria-hidden":"true",size:13,strokeWidth:1.8}),onClick:()=>f(t,{view:"ops",mode:"tail",tailQuery:n.query||void 0},{returnTo:r}),children:"Scout tail"})]}),e.jsx("div",{className:"s-work-tail-frame",children:e.jsx(xe,{navigate:t,initialFilter:n.query,filterLabel:n.label,filterScope:"context",chrome:"embedded"})})]})}function _s({workId:s,navigate:t}){const{agents:r,route:n}=W(),[i]=h.useState(()=>D(B(s),H)),[o,u]=h.useState(i),[k,j]=h.useState(null),[x,g]=h.useState(i!==null),p=h.useCallback(async()=>{j(null);try{const a=await Y(B(s));u(a)}catch(a){j(a instanceof Error?a.message:String(a)),u(null)}finally{g(!0)}},[s]);h.useEffect(()=>{const a=D(B(s),H);a?(u(a),g(!0)):g(!1),p()},[p,s]),fe(()=>{p()});const I=ke(n),N=h.useMemo(()=>ue(r,I),[r,I]),m=h.useMemo(()=>o?me(o,N):null,[o,N]);if(!x)return e.jsxs("div",{children:[e.jsx(E,{slot:"work",fallback:{view:"inbox"},navigate:t}),e.jsx("div",{className:"s-empty",children:e.jsx("p",{children:"Loading…"})})]});if(!o||!m)return e.jsxs("div",{className:"s-work-not-found",children:[e.jsx(E,{slot:"work",fallback:{view:"inbox"},navigate:t}),e.jsxs("div",{className:"s-work-not-found-body",children:[e.jsx("div",{className:"s-work-not-found-glyph","aria-hidden":"true",children:"□"}),e.jsx("h2",{className:"s-work-not-found-title",children:o?"Work item outside this machine scope":"Work item not found"}),e.jsx("p",{className:"s-work-not-found-sub",children:o?"Clear the machine scope or switch machines to inspect this work item.":"This work item may have been removed or does not exist on this broker."}),k&&e.jsx("p",{className:"s-work-not-found-detail",children:k})]})]});const d=m,b=Ie(d.attention),y=d.ownerName??d.ownerId??"Unassigned",T=d.nextMoveOwnerName??d.nextMoveOwnerId??"—",w=be({detail:d,signal:b,ownerLabel:y,nextMoveLabel:T}),R=d.activeFlights.length>0||d.childWork.length>0;return e.jsxs("div",{className:"s-work-detail s-work-casefile",children:[e.jsxs("div",{className:"s-work-casefile-topbar",children:[e.jsx(E,{slot:"work",fallback:{view:"inbox"},navigate:t}),e.jsxs("span",{className:"s-work-casefile-record",children:["Case ",ie(d.id)]})]}),k&&e.jsx("p",{className:"s-error",children:k}),e.jsxs("section",{className:"s-work-casefile-hero",children:[e.jsxs("div",{className:"s-work-casefile-hero-main",children:[e.jsxs("div",{className:"s-work-casefile-title-row",children:[e.jsx("h1",{className:"s-work-casefile-title",children:d.title}),e.jsx(O,{tone:pe(d),variant:"pill",children:d.currentPhase})]}),d.lastMeaningfulSummary&&e.jsx("div",{className:"s-work-casefile-summary",children:C(d.lastMeaningfulSummary)}),e.jsxs("div",{className:"s-work-casefile-meta",children:[e.jsxs("span",{children:["Updated ",$(d.updatedAt)]}),e.jsx("span",{children:y}),e.jsx("span",{children:G(d.state)}),b&&e.jsx("span",{children:b}),d.priority&&e.jsxs("span",{children:["Priority ",d.priority]})]})]}),e.jsxs("aside",{className:`s-work-next-move s-work-next-move-${w.tone}`,children:[e.jsx("div",{className:"s-work-next-move-kicker",children:w.eyebrow}),e.jsx("div",{className:"s-work-next-move-title",children:w.title}),e.jsx("p",{className:"s-work-next-move-copy",children:w.body}),e.jsx("div",{className:"s-work-next-move-actions",children:d.conversationId&&e.jsx(v,{primary:!0,icon:e.jsx(M,{"aria-hidden":"true",size:14,strokeWidth:1.8}),onClick:()=>f(t,{view:"conversation",conversationId:d.conversationId},{returnTo:n}),children:"Open thread"})})]})]}),e.jsxs("div",{className:"s-work-casefile-layout s-work-casefile-layout-main",children:[e.jsxs("div",{className:"s-work-casefile-main s-work-casefile-main-materials",children:[e.jsx(Ce,{detail:d,navigate:t}),e.jsx(Me,{detail:d,navigate:t}),e.jsx(Be,{detail:d})]}),e.jsx(Fe,{detail:d,navigate:t}),R&&e.jsxs("div",{className:"s-work-casefile-main s-work-casefile-main-lower",children:[d.activeFlights.length>0&&e.jsxs("section",{className:"s-work-casefile-section",children:[e.jsx("div",{className:"s-agent-section-heading",children:e.jsx("h2",{className:"s-agent-section-title",children:"Flights"})}),e.jsx("div",{className:"s-work-flight-list",children:d.activeFlights.map(a=>e.jsxs("button",{type:"button",className:"s-work-flight-card",onClick:a.conversationId?()=>f(t,{view:"conversation",conversationId:a.conversationId},{returnTo:n}):void 0,disabled:!a.conversationId,children:[e.jsxs("div",{className:"s-work-flight-card-header",children:[e.jsx("span",{className:"s-work-flight-card-title",children:a.agentName??a.agentId}),e.jsx(O,{tone:"working",variant:"pill",children:a.state})]}),e.jsxs("div",{className:"s-work-flight-card-meta",children:[e.jsx("span",{children:a.startedAt?`Started ${$(a.startedAt)}`:"Start time unavailable"}),a.completedAt&&e.jsxs("span",{children:["Completed ",$(a.completedAt)]})]}),a.summary&&e.jsx("div",{className:"s-work-flight-card-copy",children:a.summary})]},a.id))})]}),d.childWork.length>0&&e.jsxs("section",{className:"s-work-casefile-section",children:[e.jsx("div",{className:"s-agent-section-heading",children:e.jsx("h2",{className:"s-agent-section-title",children:"Child work"})}),e.jsx("div",{className:"s-work-related-list",children:d.childWork.map(a=>e.jsxs("button",{type:"button",className:"s-work-related-card",onClick:()=>f(t,{view:"work",workId:a.id},{returnTo:n}),children:[e.jsxs("div",{className:"s-work-related-card-header",children:[e.jsx("span",{className:"s-work-related-card-title",children:a.title}),e.jsx(O,{tone:ve(a),variant:"pill",children:a.currentPhase})]}),e.jsxs("div",{className:"s-work-related-card-meta",children:[e.jsx("span",{children:a.ownerName??a.ownerId??"Unassigned"}),e.jsx("span",{children:G(a.state)}),e.jsx("span",{children:$(a.lastMeaningfulAt)})]}),a.lastMeaningfulSummary&&e.jsx("div",{className:"s-work-related-card-copy",children:C(a.lastMeaningfulSummary)})]},a.id))})]})]})]})]})}export{_s as WorkDetailScreen};
@@ -0,0 +1 @@
1
+ import{r as c,j as e}from"./index-CZ-05hKz.js";import{D as F,F as T,a as E}from"./DocumentFocusViewer-DZVhS7as.js";import{c as D,T as M}from"./TextDocumentSurface-CKQP-cBT.js";import{a as R}from"./api-Co9aQ2Jw.js";import{C as L}from"./chevron-right-CzH-TaSF.js";import{C as W}from"./chevron-down-Mp9mu_yd.js";import{c as z}from"./createLucideIcon-DXpqZP7I.js";import{F as B}from"./file-text-KijGBnME.js";import"./x-e3h2hDsp.js";import"./perf-PX8Rx0EP.js";const A=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],O=z("image",A),P=new Set(["png","jpg","jpeg","gif","webp","avif","svg"]),g=[{value:"all",label:"All"},{value:"plan",label:"Plans"},{value:"doc",label:"Docs"},{value:"code",label:"Code"},{value:"test",label:"Tests"},{value:"config",label:"Config"},{value:"asset",label:"Assets"}];function U(s){const t=s.split("/").pop()??s,l=t.lastIndexOf(".");return l>=0?t.slice(l+1).toLowerCase():""}function v(s){return P.has(U(s.path))}function _(s){const t={type:"dir",children:[]};for(const l of s){const a=l.path.split("/").filter(Boolean);if(a.length===0)continue;let n=t;for(let f=0;f<a.length-1;f+=1){const i=a[f],p=a.slice(0,f+1).join("/");let o=n.children.find(d=>d.type==="dir"&&d.name===i);o||(o={type:"dir",name:i,path:p,children:[]},n.children.push(o)),n=o}n.children.push({type:"file",name:a[a.length-1],path:l.path,material:l})}return b(t),N(t.children)}function b(s){if(s.type==="dir"){s.children.sort((t,l)=>t.type!==l.type?t.type==="dir"?-1:1:t.name.localeCompare(l.name));for(const t of s.children)b(t)}}function N(s){return s.map(t=>{if(t.type!=="dir")return t;let l=t;for(;l.children.length===1&&l.children[0].type==="dir";){const a=l.children[0];l={type:"dir",name:`${l.name}/${a.name}`,path:a.path,children:a.children}}return{...l,children:N(l.children)}})}function G(s){switch(s){case"added":return"A";case"modified":return"M";case"deleted":return"D";case"renamed":return"R";case"untracked":return"?";case"observed":return null}}function y({node:s,depth:t,selectedId:l,collapsed:a,onToggle:n,onSelect:f}){if(s.type==="dir"){const u=a.has(s.path);return e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",className:"s-work-files-tree-row s-work-files-tree-dir",style:{paddingLeft:`${8+t*12}px`},onClick:()=>n(s.path),children:[e.jsx("span",{className:"s-work-files-tree-chevron","aria-hidden":"true",children:u?e.jsx(L,{size:12,strokeWidth:1.8}):e.jsx(W,{size:12,strokeWidth:1.8})}),e.jsx("span",{className:"s-work-files-tree-icon","aria-hidden":"true",children:u?e.jsx(T,{size:12,strokeWidth:1.8}):e.jsx(E,{size:12,strokeWidth:1.8})}),e.jsx("span",{className:"s-work-files-tree-name",children:s.name||"/"})]}),!u&&s.children.map(m=>e.jsx(y,{node:m,depth:t+1,selectedId:l,collapsed:a,onToggle:n,onSelect:f},m.type==="dir"?`d:${m.path}`:`f:${m.material.id}`))]})}const i=s.material.id===l,p=v(s.material),o=G(s.material.status),d=s.material.status==="deleted";return e.jsxs("button",{type:"button",className:`s-work-files-tree-row s-work-files-tree-file${i?" s-work-files-tree-file-selected":""}`,style:{paddingLeft:`${8+t*12}px`},onClick:()=>f(s.material),disabled:d,title:s.path,children:[e.jsx("span",{className:"s-work-files-tree-chevron","aria-hidden":"true"}),e.jsx("span",{className:"s-work-files-tree-icon","aria-hidden":"true",children:p?e.jsx(O,{size:12,strokeWidth:1.8}):e.jsx(B,{size:12,strokeWidth:1.8})}),e.jsx("span",{className:"s-work-files-tree-name",children:s.name}),o&&e.jsx("span",{className:`s-work-files-tree-status s-work-files-tree-status-${s.material.status}`,"aria-label":s.material.status,children:o})]})}function V({path:s}){const t=s.split("/").filter(Boolean);if(t.length===0)return e.jsx("span",{className:"s-work-files-breadcrumb",children:s});const l=t[t.length-1],a=t.slice(0,-1).join("/");return e.jsxs("span",{className:"s-work-files-breadcrumb",children:[a&&e.jsxs("span",{className:"s-work-files-breadcrumb-folder",children:[a,"/"]}),e.jsx("span",{className:"s-work-files-breadcrumb-name",children:l})]})}function K({workId:s,material:t}){const l=v(t),[a,n]=c.useState(null),[f,i]=c.useState(null),[p,o]=c.useState(!1);if(c.useEffect(()=>{if(l){n(null),i(null),o(!1);return}let u=!1;return o(!0),i(null),n(null),R(`/api/work/${encodeURIComponent(s)}/material?materialId=${encodeURIComponent(t.id)}`).then(m=>{u||n(m)}).catch(m=>{u||i(m instanceof Error?m.message:String(m))}).finally(()=>{u||o(!1)}),()=>{u=!0}},[l,t.id,s]),l){const u=`/api/work/${encodeURIComponent(s)}/material/raw?materialId=${encodeURIComponent(t.id)}`;return e.jsx("div",{className:"s-work-files-pane s-work-files-pane-image",children:e.jsx("img",{src:u,alt:t.path,className:"s-work-files-image"})})}if(p&&!a)return e.jsx("div",{className:"s-work-files-pane-state",children:"Loading file…"});if(f)return e.jsx("div",{className:"s-work-files-pane-state s-work-files-pane-error",children:f});if(!a)return e.jsx("div",{className:"s-work-files-pane-state",children:"No content."});const d=D({id:a.materialId,title:a.title,uri:a.uri,mediaType:a.mediaType,value:a.content,readOnly:!0});return e.jsxs("div",{className:"s-work-files-pane",children:[e.jsx(M,{document:d,mode:d.kind==="markdown"?"preview":"read"}),a.truncated&&e.jsxs("div",{className:"s-work-files-pane-notice",children:["Preview truncated at ",Math.round(a.content.length/1024)," KB."]})]})}function re({workId:s,workTitle:t,materials:l,open:a,initialKind:n="all",onClose:f}){const i=c.useMemo(()=>l.filter(r=>r.status!=="deleted"),[l]),[p,o]=c.useState(n),[d,u]=c.useState(null),[m,C]=c.useState(()=>new Set);c.useEffect(()=>{a&&o(n)},[n,a]);const x=c.useMemo(()=>p==="all"?i:p==="plan"?i.filter(r=>r.kind==="plan"||r.kind==="spec"):i.filter(r=>r.kind===p),[i,p]),j=c.useMemo(()=>_(x),[x]);c.useEffect(()=>{if(!d&&x.length>0){u(x[0].id);return}d&&!x.some(r=>r.id===d)&&u(x[0]?.id??null)},[x,d]);const S=c.useCallback(r=>{u(r.id)},[]),I=c.useCallback(r=>{C(k=>{const h=new Set(k);return h.has(r)?h.delete(r):h.add(r),h})},[]),w=x.find(r=>r.id===d)??null,$=c.useMemo(()=>{const r={all:i.length};for(const k of g)k.value!=="all"&&(r[k.value]=i.filter(h=>k.value==="plan"?h.kind==="plan"||h.kind==="spec":h.kind===k.value).length);return r},[i]);return e.jsx(F,{open:a,kind:"code",document:null,title:`Files · ${i.length}`,eyebrow:"Work materials",subtitle:t,focusable:!0,onClose:f,body:e.jsxs("div",{className:"s-work-files-layout",children:[e.jsxs("aside",{className:"s-work-files-tree","aria-label":"File tree",children:[e.jsx("div",{className:"s-work-files-tree-filters",role:"tablist",children:g.map(r=>{const k=$[r.value]??0;if(r.value!=="all"&&k===0)return null;const h=r.value===p;return e.jsxs("button",{type:"button",role:"tab","aria-selected":h,className:`s-work-files-tree-filter${h?" s-work-files-tree-filter-active":""}`,onClick:()=>o(r.value),children:[e.jsx("span",{children:r.label}),e.jsx("span",{className:"s-work-files-tree-filter-count",children:k})]},r.value)})}),e.jsx("div",{className:"s-work-files-tree-list",children:j.length===0?e.jsx("div",{className:"s-work-files-tree-empty",children:"No files match this filter."}):j.map(r=>e.jsx(y,{node:r,depth:0,selectedId:d,collapsed:m,onToggle:I,onSelect:S},r.type==="dir"?`d:${r.path}`:`f:${r.material.id}`))})]}),e.jsx("section",{className:"s-work-files-content","aria-label":"File preview",children:w?e.jsxs(e.Fragment,{children:[e.jsxs("header",{className:"s-work-files-content-head",children:[e.jsx(V,{path:w.path}),e.jsxs("div",{className:"s-work-files-content-meta",children:[e.jsx("span",{children:w.kind}),e.jsx("span",{children:w.status}),w.diffStat&&e.jsxs("span",{children:["+",w.diffStat.additions," -",w.diffStat.deletions]})]})]}),e.jsx(K,{workId:s,material:w})]}):e.jsx("div",{className:"s-work-files-pane-state",children:"Select a file to preview."})})]})})}export{re as WorkFilesViewer};
@@ -1 +1 @@
1
- import{c as t}from"./createLucideIcon-DCq_3fQn.js";const c=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],o=t("activity",c);export{o as A};
1
+ import{c as t}from"./createLucideIcon-DXpqZP7I.js";const c=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],o=t("activity",c);export{o as A};