@openscout/scout 0.2.78 → 0.2.80

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 (428) hide show
  1. package/README.md +19 -0
  2. package/bin/scoutd +0 -0
  3. package/dist/build-manifest.json +3 -3
  4. package/dist/client/assets/ActivityScreen-BXm6nJ6L.js +1 -0
  5. package/dist/client/assets/{AddProjectForm-DMnobKch.js → AddProjectForm-CtEiLQnm.js} +1 -1
  6. package/dist/client/assets/{AgentAvatar-D90c1Rzk.js → AgentAvatar-CszU5eaU.js} +1 -1
  7. package/dist/client/assets/AgentConfigurationScreen-CfBXxrsD.js +1 -0
  8. package/dist/client/assets/AgentDefinitionsWorkspace-4Z0aN8AR.js +1 -0
  9. package/dist/client/assets/{AgentDetailCard-BcRBRp88.js → AgentDetailCard-sZuHl1de.js} +1 -1
  10. package/dist/client/assets/AgentFloorView-DMivAYHU.js +1 -0
  11. package/dist/client/assets/AgentInfoScreen-CPkLg1pK.js +1 -0
  12. package/dist/client/assets/{AgentLaneCard-RrNnDZu8.js → AgentLaneCard-nB68f2CI.js} +1 -1
  13. package/dist/client/assets/{AgentLaneChrome-D9ZwUKrl.js → AgentLaneChrome-O9Yf0uR-.js} +1 -1
  14. package/dist/client/assets/AgentLaneDetailSheet-BfhpaEQ3.js +4 -0
  15. package/dist/client/assets/{AgentLaneSummaryResize-BhFmGNzT.js → AgentLaneSummaryResize-Ct3b0TQR.js} +1 -1
  16. package/dist/client/assets/AgentLanesEmbedScreen-CjHMvy3v.js +1 -0
  17. package/dist/client/assets/{AgentLanesPreflight-eSAoDsPi.js → AgentLanesPreflight-DNGvZvjd.js} +1 -1
  18. package/dist/client/assets/AgentLanesView-DqRK5-d2.js +2 -0
  19. package/dist/client/assets/{AgentLiveActions-DBtnD0qE.js → AgentLiveActions-DI4ooSHW.js} +1 -1
  20. package/dist/client/assets/{AgentSessions-DyqOf4nG.js → AgentSessions-BxWIPkWh.js} +2 -2
  21. package/dist/client/assets/AgentsConsole-D6VHSCfZ.js +1 -0
  22. package/dist/client/assets/AgentsScreen-zR6b2bUL.js +1 -0
  23. package/dist/client/assets/AgentsSubnav-q0xcZi6C.js +1 -0
  24. package/dist/client/assets/{AtopView-BCkae3e1.js → AtopView-VZkk40v0.js} +1 -1
  25. package/dist/client/assets/BackToPicker-DZg_4nHL.js +1 -0
  26. package/dist/client/assets/{BriefingDetailScreen-BwFyysT8.js → BriefingDetailScreen-BZU4qMwE.js} +1 -1
  27. package/dist/client/assets/{BriefingsScreen-BQEevztH.js → BriefingsScreen-Bfc3tqPp.js} +1 -1
  28. package/dist/client/assets/{BrokerMetadataPanel-7UjcuNjd.js → BrokerMetadataPanel-CaFe6kdh.js} +1 -1
  29. package/dist/client/assets/BrokerScreen-Chh8sGen.js +5 -0
  30. package/dist/client/assets/{ChatCollapsedStrip-CQSYSd8s.js → ChatCollapsedStrip-Cov54p9V.js} +1 -1
  31. package/dist/client/assets/CodeDiffPane-C1ebFt-Y.js +1 -0
  32. package/dist/client/assets/{CodeProjectPicker-DqKFCpLU.js → CodeProjectPicker-tsCly-f3.js} +1 -1
  33. package/dist/client/assets/CodeScreen-D0hpZNLP.js +1 -0
  34. package/dist/client/assets/{ContextMenu-bARZqTzD.js → ContextMenu-N-Z6X0Z1.js} +1 -1
  35. package/dist/client/assets/ConversationComposer-CiEF7dhd.js +1 -0
  36. package/dist/client/assets/ConversationFeedRows-5it6QNBV.js +1 -0
  37. package/dist/client/assets/ConversationHeader-BGgbITvr.js +1 -0
  38. package/dist/client/assets/ConversationPanels-vI9YuQJh.js +2 -0
  39. package/dist/client/assets/ConversationScreen-C-PrCRz1.js +1 -0
  40. package/dist/client/assets/ConversationScreen-yIKEsm-8.css +1 -0
  41. package/dist/client/assets/ConversationStatus-COEj5loj.js +1 -0
  42. package/dist/client/assets/{DataTable-E8s_MmoA.js → DataTable-BoofV-_4.js} +1 -1
  43. package/dist/client/assets/{DispatchAftermath-Dpe88DFX.js → DispatchAftermath-OXYlMbT1.js} +1 -1
  44. package/dist/client/assets/{DocumentFocusViewer-BeVwwl26.js → DocumentFocusViewer-BCG2kOmd.js} +1 -1
  45. package/dist/client/assets/{EmbeddableSurfacesLab-BQqFQVnI.js → EmbeddableSurfacesLab-C2SZvrHJ.js} +1 -1
  46. package/dist/client/assets/{EmptyState-4F9XDFQm.js → EmptyState-DypEjx0V.js} +1 -1
  47. package/dist/client/assets/{FileViewerPane-CLgUhSm4.js → FileViewerPane-CXCq-oKj.js} +1 -1
  48. package/dist/client/assets/{FleetSearch-Dz5euQJe.js → FleetSearch-Dj7-CfNi.js} +1 -1
  49. package/dist/client/assets/FlightObserveScreen-Yq5NtQQJ.js +1 -0
  50. package/dist/client/assets/FollowScreen-DRgYuAvp.js +1 -0
  51. package/dist/client/assets/HarnessMark-BE-YSyci.js +1 -0
  52. package/dist/client/assets/HarnessesScreen-L-emPcXd.js +1 -0
  53. package/dist/client/assets/HerdrSession-DKFCJMst.js +4 -0
  54. package/dist/client/assets/{HomeHero-B3uYd-pP.js → HomeHero-CAEg8Yg5.js} +1 -1
  55. package/dist/client/assets/KnowledgeSearchInspector-C2EZsQ5i.js +1 -0
  56. package/dist/client/assets/KnowledgeSearchScreen-DvdOFh-b.js +1 -0
  57. package/dist/client/assets/{LaneToolHoverCard-Bla0gBdm.js → LaneToolHoverCard-DrPXYZvQ.js} +1 -1
  58. package/dist/client/assets/LaneTraceDetailSheet-Dl7foF88.js +1 -0
  59. package/dist/client/assets/{LaneTraceEventFocus-BF9ERP5O.js → LaneTraceEventFocus-X4-DDFEo.js} +1 -1
  60. package/dist/client/assets/{MeshCanvas-DFEPkpqY.js → MeshCanvas-rtCBD7s6.js} +2 -2
  61. package/dist/client/assets/{MeshCanvasMinimap-CyVFYixr.js → MeshCanvasMinimap-CuvXOkc7.js} +1 -1
  62. package/dist/client/assets/MeshScreen-D5zzTn0o.js +1 -0
  63. package/dist/client/assets/{MeshTopologyView-CalkZghg.js → MeshTopologyView-CeTShs-U.js} +2 -2
  64. package/dist/client/assets/{MessageComposerSuggestions-DpxN9WiB.js → MessageComposerSuggestions-Cs9u-F_3.js} +1 -1
  65. package/dist/client/assets/MessagesScreen-BhOJ7_tj.js +1 -0
  66. package/dist/client/assets/MissionContextRail-0O-Zu1Tn.js +1 -0
  67. package/dist/client/assets/MissionControlView-D2JO9u-y.js +1 -0
  68. package/dist/client/assets/{MissionFocusOverlay-wlCmWDCT.js → MissionFocusOverlay-LnjmqBiW.js} +1 -1
  69. package/dist/client/assets/MissionLeftAgentRow-nc1Jyq3D.js +1 -0
  70. package/dist/client/assets/MissionLogPane-lZ9vUftY.js +1 -0
  71. package/dist/client/assets/{NewAgentModal-Bg-eWHpY.js → NewAgentModal-K1cvdmZr.js} +1 -1
  72. package/dist/client/assets/NewChatComposer-C5LT7MF7.css +1 -0
  73. package/dist/client/assets/NewChatComposer-DXDxV2Mh.js +19 -0
  74. package/dist/client/assets/{NewChatOrigin-Bk2OyVjI.js → NewChatOrigin-CnjoswTG.js} +1 -1
  75. package/dist/client/assets/ObserveEmbedScreen-CRpzYf0Y.js +2 -0
  76. package/dist/client/assets/{ObserveTextFlow-rsFj_rVo.js → ObserveTextFlow-DJxQc2H6.js} +2 -2
  77. package/dist/client/assets/{ObservedTopologyPanel-DyUeV98H.js → ObservedTopologyPanel-C1AQM0Mq.js} +1 -1
  78. package/dist/client/assets/OpenScoutAppShell-DrHYD_pd.js +87 -0
  79. package/dist/client/assets/OpsAgentsView-BnMX0vEY.js +1 -0
  80. package/dist/client/assets/OpsScreen-BeC0lieE.js +1 -0
  81. package/dist/client/assets/OpsSubnav-D5Bpowtk.js +1 -0
  82. package/dist/client/assets/{PlanView-C1CjH3PG.js → PlanView-DDXdC19M.js} +1 -1
  83. package/dist/client/assets/ProjectAgentProfile-zE1cApxw.js +1 -0
  84. package/dist/client/assets/{ProjectAgentProfileBar-CtTpj6fU.js → ProjectAgentProfileBar-MODhG0P6.js} +1 -1
  85. package/dist/client/assets/ProjectAgentProfileHero-C1ImgGDu.js +1 -0
  86. package/dist/client/assets/ProjectsInbox-C3Jd6JTk.js +2 -0
  87. package/dist/client/assets/{ProjectsRail-BgiuV4LR.js → ProjectsRail-B1zrQLZe.js} +1 -1
  88. package/dist/client/assets/ProjectsScreen-PW_NH5VK.js +1 -0
  89. package/dist/client/assets/ProjectsThreadAside-DaCEUWN1.js +1 -0
  90. package/dist/client/assets/Provider-DSsb2gLR.js +1 -0
  91. package/dist/client/assets/{RailRow-BoGxAHNF.js → RailRow-DerXOXQS.js} +1 -1
  92. package/dist/client/assets/RawSessionsTable-LWEvXJzj.js +1 -0
  93. package/dist/client/assets/RealtimeVoiceScreen-XtxbCjOs.js +1 -0
  94. package/dist/client/assets/{RepoDiffEmbedScreen-C0rumUME.js → RepoDiffEmbedScreen-C9oLCcZX.js} +1 -1
  95. package/dist/client/assets/{RepoDiffPageScreen-DMv6DioL.js → RepoDiffPageScreen-CGEMAv2Z.js} +1 -1
  96. package/dist/client/assets/RepoDiffViewer-CB8PSVey.js +7 -0
  97. package/dist/client/assets/RepoDiffViewerLazy-DIxkiMto.js +2 -0
  98. package/dist/client/assets/{ReposScreen-CB_YBWYf.js → ReposScreen-BN1lVjOj.js} +2 -2
  99. package/dist/client/assets/{ScoutDeckSurface-CxIYFyWx.js → ScoutDeckSurface-BCpl0QCx.js} +1 -1
  100. package/dist/client/assets/{ScoutSurface-CYz_TcWC.js → ScoutSurface-BEnDlynn.js} +1 -1
  101. package/dist/client/assets/{ScoutbotBroadcastChip-L_R9atj0.js → ScoutbotBroadcastChip-z9R_pC_U.js} +1 -1
  102. package/dist/client/assets/{ScoutbotFxLab-CgiZMDMW.js → ScoutbotFxLab-fAROyIfz.js} +1 -1
  103. package/dist/client/assets/{ScoutbotRealtimeVoiceCall-FMQOr1Np.js → ScoutbotRealtimeVoiceCall-CDyFJX8m.js} +1 -1
  104. package/dist/client/assets/{SecondaryNav-B3-nh5dM.js → SecondaryNav-Hv5AJ3Fv.js} +1 -1
  105. package/dist/client/assets/SessionEmbedScreen-CDRpQc3g.js +1 -0
  106. package/dist/client/assets/SessionObserve-BmmJ8dEh.js +12 -0
  107. package/dist/client/assets/SessionObserve-CLrHfAKZ.css +1 -0
  108. package/dist/client/assets/SessionObserveEvidence-CEedIk2a.js +1 -0
  109. package/dist/client/assets/SessionRefScreen-Dk-O4OVt.js +1 -0
  110. package/dist/client/assets/SessionsScreen-BJEjuo2X.js +1 -0
  111. package/dist/client/assets/{SettingsDrawer-XfdAa_nD.js → SettingsDrawer-DL-SVLdd.js} +3 -3
  112. package/dist/client/assets/SettingsDrawer-UX7pFJU_.css +1 -0
  113. package/dist/client/assets/SettingsScreen-DJ-BhBwR.js +1 -0
  114. package/dist/client/assets/{ShikiPane-Ap1iPxYb.js → ShikiPane-B7O4if20.js} +1 -1
  115. package/dist/client/assets/{SlidePanel-COwtoJqR.js → SlidePanel-B3gc5HnM.js} +1 -1
  116. package/dist/client/assets/SpriteAvatar-BpQDpOkq.js +1 -0
  117. package/dist/client/assets/{StatusPill-DhBL__p8.js → StatusPill-B33sQinT.js} +1 -1
  118. package/dist/client/assets/{TailView-DGj_5HA9.js → TailView-DL3YZkzE.js} +2 -2
  119. package/dist/client/assets/Terminal-Dp1FSGIS.js +1 -0
  120. package/dist/client/assets/TerminalEmbedScreen-DP9IM4xf.js +1 -0
  121. package/dist/client/assets/{TextDocumentSurface-BpAw4eQS.js → TextDocumentSurface-DRjctOIt.js} +1 -1
  122. package/dist/client/assets/{TmuxPeek-m1osv33Q.js → TmuxPeek-DNC4uWky.js} +1 -1
  123. package/dist/client/assets/{VoicePermissionsPanel-DsK53ar4.js → VoicePermissionsPanel-WLN0V-Xv.js} +1 -1
  124. package/dist/client/assets/{WorkDetailScreen-Bx0JimPC.js → WorkDetailScreen-D2Yl0mYZ.js} +3 -3
  125. package/dist/client/assets/{WorkFilesViewer-Btl6C2Q1.js → WorkFilesViewer-BbVfcUN-.js} +1 -1
  126. package/dist/client/assets/{activity-CA8qS6PI.js → activity-BxwKkT8z.js} +1 -1
  127. package/dist/client/assets/{addon-fit-BZ-kXjeN.js → addon-fit-B9O2vJoh.js} +1 -1
  128. package/dist/client/assets/{addon-webgl-D9-EQVEK.js → addon-webgl-BhRZFDcn.js} +1 -1
  129. package/dist/client/assets/{agent-essentials-BSY1o46q.js → agent-essentials-SrzMYEXV.js} +1 -1
  130. package/dist/client/assets/agent-identity-BxCsXnDp.js +1 -0
  131. package/dist/client/assets/agent-lane-card-BkWVDYM8.css +1 -0
  132. package/dist/client/assets/{agent-lane-card-model-r2frk57c.js → agent-lane-card-model-DSWdGu-v.js} +1 -1
  133. package/dist/client/assets/agent-lane-detail-BNNm6FNu.js +2 -0
  134. package/dist/client/assets/{agent-lane-preview-CmHVe3dU.js → agent-lane-preview-C33Dwpn7.js} +1 -1
  135. package/dist/client/assets/{agent-lanes-model-B4YTt4OF.js → agent-lanes-model-CPgQRenB.js} +2 -2
  136. package/dist/client/assets/{arc.es-CQBb-dVu.js → arc.es-NlJw-19N.js} +1 -1
  137. package/dist/client/assets/{arrow-down-BPLe0am9.js → arrow-down-D3-IbArq.js} +1 -1
  138. package/dist/client/assets/{arrow-left-DEZzHiPS.js → arrow-left-_vS7itsV.js} +1 -1
  139. package/dist/client/assets/{arrow-up-right-ClxBnsi7.js → arrow-up-right-CcrWONpD.js} +1 -1
  140. package/dist/client/assets/{bot-eu8pBNvI.js → bot-BRINYlC6.js} +1 -1
  141. package/dist/client/assets/{check-DjgFiBxb.js → check-COxArFXG.js} +1 -1
  142. package/dist/client/assets/{chevron-down-BGk5qoEw.js → chevron-down-DRCbnzyY.js} +1 -1
  143. package/dist/client/assets/{chevron-right-XiIHsk4m.js → chevron-right-CNE6QAVr.js} +1 -1
  144. package/dist/client/assets/chunk-HRAB3GC3-CAeEKaf5.js +1 -0
  145. package/dist/client/assets/chunk-JTPDIGGW-s6WbxdjC.js +46 -0
  146. package/dist/client/assets/{chunk-T65CQEWV-CrzwSeEt.js → chunk-T65CQEWV-CiZ_ICHW.js} +1 -1
  147. package/dist/client/assets/chunk-YOZR3KYS-DLOc92uD.js +2 -0
  148. package/dist/client/assets/clock-CyfvRmj6.js +1 -0
  149. package/dist/client/assets/{code-xml-B6jOCM4V.js → code-xml--LjSM4Mv.js} +1 -1
  150. package/dist/client/assets/content-7ZeCPAEt.js +1 -0
  151. package/dist/client/assets/content-BHUcUCH5.js +1 -0
  152. package/dist/client/assets/content-BUhvLPkv.js +1 -0
  153. package/dist/client/assets/content-BomQ5YWo.js +1 -0
  154. package/dist/client/assets/content-C39ELNgC.js +1 -0
  155. package/dist/client/assets/content-C4RYKHut.js +1 -0
  156. package/dist/client/assets/content-CCiZfG4H.js +1 -0
  157. package/dist/client/assets/content-CDpDtVI-.js +1 -0
  158. package/dist/client/assets/content-CO-9CeFd.js +1 -0
  159. package/dist/client/assets/content-CuOLxp1x.js +1 -0
  160. package/dist/client/assets/content-CvtLIjXS.js +1 -0
  161. package/dist/client/assets/content-CzwTUb9n.js +1 -0
  162. package/dist/client/assets/content-DQXbo2RO.js +1 -0
  163. package/dist/client/assets/content-DRTQ9QQb.js +1 -0
  164. package/dist/client/assets/content-LCELs6zg.js +1 -0
  165. package/dist/client/assets/content-Uqt8AG-s.css +1 -0
  166. package/dist/client/assets/content-qsDjA4Au.js +1 -0
  167. package/dist/client/assets/{context-budget-CbB4BDcO.js → context-budget-DX_fwUs3.js} +1 -1
  168. package/dist/client/assets/{conversation-icons-IIG5ha6D.js → conversation-icons-c-hXv7hY.js} +1 -1
  169. package/dist/client/assets/conversation-model-CHwHZNw-.js +1 -0
  170. package/dist/client/assets/conversation-motion-features-T8vF9zED.js +1 -0
  171. package/dist/client/assets/{copy-CQGYbxdu.js → copy-4LfKIdQJ.js} +1 -1
  172. package/dist/client/assets/{createLucideIcon-OpA4Amw5.js → createLucideIcon-ClCdc3F9.js} +1 -1
  173. package/dist/client/assets/discover-7Ks00w-M.js +2 -0
  174. package/dist/client/assets/embed-entry-n2ThmSSX.js +2 -0
  175. package/dist/client/assets/{external-link-CXBytO9o.js → external-link-CnaI1QFS.js} +1 -1
  176. package/dist/client/assets/{eye-0PvebX_a.js → eye-BFlhMzQL.js} +1 -1
  177. package/dist/client/assets/{file-text-BODxCjcz.js → file-text-DG-pufl1.js} +1 -1
  178. package/dist/client/assets/{gestures-CcwOTu8C.js → gestures-CxG3Dphs.js} +1 -1
  179. package/dist/client/assets/home-live-action-BkqGLVRY.js +1 -0
  180. package/dist/client/assets/home-moving-signal-aNJusIzL.js +1 -0
  181. package/dist/client/assets/home-now-card-BQK4EFHx.js +1 -0
  182. package/dist/client/assets/{home-now-card-nano-BcjnOU9H.js → home-now-card-nano-CdtzqSIF.js} +1 -1
  183. package/dist/client/assets/hooks-Dst1TH7n.js +2 -0
  184. package/dist/client/assets/inbox-thread-redesign-B_1ocqaX.css +1 -0
  185. package/dist/client/assets/index-9as_JTUs.css +1 -0
  186. package/dist/client/assets/index-CU9dtwJk.js +1 -0
  187. package/dist/client/assets/{index-DMiGbrBt.js → index-CzVeWScw.js} +6 -6
  188. package/dist/client/assets/index-Dewd56RX.js +1 -0
  189. package/dist/client/assets/index-_YQXKEhb.js +1 -0
  190. package/dist/client/assets/{inspector-panel-DPoCWxKs.js → inspector-panel-DgOM8nCo.js} +2 -2
  191. package/dist/client/assets/keyboard-nav-BJnFoFDP.js +1 -0
  192. package/dist/client/assets/knowledge-search-D_bLoYtC.css +1 -0
  193. package/dist/client/assets/{lane-observe-D0rfKDnU.js → lane-observe-BA3g9aVd.js} +1 -1
  194. package/dist/client/assets/{lane-roster-store-D8x1jac2.js → lane-roster-store-pR4ZaYQm.js} +1 -1
  195. package/dist/client/assets/left-BhzPp-_E.js +1 -0
  196. package/dist/client/assets/left-CN1MABD0.js +2 -0
  197. package/dist/client/assets/left-DDgbsio7.js +1 -0
  198. package/dist/client/assets/left-Dpf2R9uD.js +1 -0
  199. package/dist/client/assets/left-HwwbMVtl.js +2 -0
  200. package/dist/client/assets/left-YfH0daht.js +1 -0
  201. package/dist/client/assets/left-agents-CYUwAy2Z.js +1 -0
  202. package/dist/client/assets/left-default-vEGZALPv.js +1 -0
  203. package/dist/client/assets/left-lanes-bphF-vlX.js +1 -0
  204. package/dist/client/assets/left-mission-B54-c3hq.js +1 -0
  205. package/dist/client/assets/left-np5USKqG.js +1 -0
  206. package/dist/client/assets/left-plan-BNBuDoPQ.js +2 -0
  207. package/dist/client/assets/library-DbCVJG_O.js +1 -0
  208. package/dist/client/assets/{loader-circle-CbHjZsz1.js → loader-circle-Byb9kSFx.js} +1 -1
  209. package/dist/client/assets/{local-agents--00gLMqr.js → local-agents-DBaUbP-_.js} +1 -1
  210. package/dist/client/assets/{mentions-jSuTGeet.js → mentions-fbQJ2mBI.js} +1 -1
  211. package/dist/client/assets/mesh-ops-B1kDjizF.css +1 -0
  212. package/dist/client/assets/mesh-ops-Cnw3vwAu.js +1 -0
  213. package/dist/client/assets/{mesh-view-store-CWidRbTE.js → mesh-view-store-Btlyc7rW.js} +1 -1
  214. package/dist/client/assets/{message-circle-CG-96zts.js → message-circle-aGOfQWm2.js} +1 -1
  215. package/dist/client/assets/{message-markup-3J9pi3nx.js → message-markup-mGF07emJ.js} +1 -1
  216. package/dist/client/assets/{message-square-DSaGpjFU.js → message-square-CIXda-Y7.js} +1 -1
  217. package/dist/client/assets/mission-control-m3BTDQ9l.css +1 -0
  218. package/dist/client/assets/{mission-control-store-BlnEhiCq.js → mission-control-store-CcoNeQHG.js} +1 -1
  219. package/dist/client/assets/mission-wall-CocIM1cF.js +1 -0
  220. package/dist/client/assets/{model-CpAxGuis.js → model-IGCUEsMy.js} +1 -1
  221. package/dist/client/assets/{observe-CuLGD9Zp.js → observe-BNFzh-7B.js} +1 -1
  222. package/dist/client/assets/openAgent-Dbv5wfuL.js +1 -0
  223. package/dist/client/assets/{page-status-DpkedE1F.js → page-status-DDvNdA8s.js} +1 -1
  224. package/dist/client/assets/paperclip-DfpJkR4s.js +1 -0
  225. package/dist/client/assets/{plus--b1raV_O.js → plus-CmFQp9Uj.js} +1 -1
  226. package/dist/client/assets/profile-s3KRbip1.js +1 -0
  227. package/dist/client/assets/{projects-inbox-CHyUFQ6w.js → projects-inbox-Diddml6e.js} +1 -1
  228. package/dist/client/assets/{radio-Bz8ZePxj.js → radio-PauJIekM.js} +1 -1
  229. package/dist/client/assets/{refresh-cw-BBmAnCB7.js → refresh-cw-4oeFn1Jn.js} +1 -1
  230. package/dist/client/assets/repo-diff-DyYmQMSA.css +1 -0
  231. package/dist/client/assets/resolve-panes-cp6eNewO.js +1 -0
  232. package/dist/client/assets/resolve-sidebar-context-Dbo-5PWx.js +1 -0
  233. package/dist/client/assets/right-09W2JJFg.js +1 -0
  234. package/dist/client/assets/right-B-MKhiJ6.js +1 -0
  235. package/dist/client/assets/right-B91Zl8lQ.js +1 -0
  236. package/dist/client/assets/{right-DjRXbnRP.js → right-BcFnuse9.js} +1 -1
  237. package/dist/client/assets/right-BdtMzn35.js +1 -0
  238. package/dist/client/assets/right-BqmKXLtf.js +1 -0
  239. package/dist/client/assets/right-BzeB-Dpt.js +1 -0
  240. package/dist/client/assets/right-CkGOs-sq.js +1 -0
  241. package/dist/client/assets/right-CzGiNBzB.js +1 -0
  242. package/dist/client/assets/right-Dc7uqv7l.js +1 -0
  243. package/dist/client/assets/{rocket-BSNS_rLs.js → rocket-C-AskjZH.js} +1 -1
  244. package/dist/client/assets/router-B-K15T7B.js +1 -0
  245. package/dist/client/assets/{runtime-picker-Bcl5iIX5.js → runtime-picker-BCQD7d4K.js} +1 -1
  246. package/dist/client/assets/{scope-views-U-ucT9m0.js → scope-views-BhkbIFPY.js} +1 -1
  247. package/dist/client/assets/{scout-voice-CU5c0LGi.js → scout-voice-S5_YZ2v8.js} +1 -1
  248. package/dist/client/assets/{scroll-text-D6Pdnar7.js → scroll-text-BV-BB7v-.js} +1 -1
  249. package/dist/client/assets/{search-CWfZtOt2.js → search-C3bSJluv.js} +1 -1
  250. package/dist/client/assets/secondaryNavConfig-Bg4Tc0gT.js +1 -0
  251. package/dist/client/assets/{selection-bridge-16pk1qyG.js → selection-bridge-B1dmkX3P.js} +1 -1
  252. package/dist/client/assets/{send-horizontal-Bg5-QggH.js → send-horizontal-CqogPmbY.js} +1 -1
  253. package/dist/client/assets/{server-CPp4ZJhZ.js → server-Brw5Y1Gh.js} +1 -1
  254. package/dist/client/assets/{session-catalog-BmoyVTJ_.js → session-catalog-9FqXmjBw.js} +1 -1
  255. package/dist/client/assets/session-table-1xdSxSXq.js +1 -0
  256. package/dist/client/assets/{sliders-horizontal-1oW76Xc9.js → sliders-horizontal-CUiOH26y.js} +1 -1
  257. package/dist/client/assets/sparkles-BjCA3Evu.js +1 -0
  258. package/dist/client/assets/{sse-CjIkKo46.js → sse-QcU9bikk.js} +1 -1
  259. package/dist/client/assets/synthetic-agent-routing-aduMYO7P.js +1 -0
  260. package/dist/client/assets/system-surfaces-redesign-B7GQhfpw.css +1 -0
  261. package/dist/client/assets/{tail-display-BdyoLvzY.js → tail-display-BRcJltQa.js} +2 -2
  262. package/dist/client/assets/{tail-events-D19uAGe3.js → tail-events-C6K7bCWB.js} +1 -1
  263. package/dist/client/assets/{terminal-B9AOZQKR.js → terminal-DrTkVXIj.js} +1 -1
  264. package/dist/client/assets/{terminal-relay-CWbJ1RCW.js → terminal-relay-BkXjjSkq.js} +1 -1
  265. package/dist/client/assets/{terminal-screen-19jAI0Cw.css → terminal-screen-BqVnCwl0.css} +1 -1
  266. package/dist/client/assets/terminal-sessions-C3qU8tnY.js +1 -0
  267. package/dist/client/assets/{terminal-takeover-B8UeD9OX.js → terminal-takeover-KvmTwABa.js} +1 -1
  268. package/dist/client/assets/{time-DltNTpLl.js → time-Dhsh_2EG.js} +1 -1
  269. package/dist/client/assets/{use-conversation-list-Byab41G6.js → use-conversation-list-C5sF6WBR.js} +1 -1
  270. package/dist/client/assets/{use-fleet-active-asks-BIbQx5AS.js → use-fleet-active-asks-BOMPW0nl.js} +1 -1
  271. package/dist/client/assets/use-mesh-ops-items-Co05vcTV.js +1 -0
  272. package/dist/client/assets/{use-reduced-motion-RRBkmVkk.js → use-reduced-motion-Dla-G_Jz.js} +1 -1
  273. package/dist/client/assets/use-scout-dev-flags-BOQF3fW2.js +1 -0
  274. package/dist/client/assets/{useAgentHoverCard-DMrbBif0.js → useAgentHoverCard-FtCmY-b9.js} +1 -1
  275. package/dist/client/assets/useContentSecondaryNav-BX7Sq7vy.js +1 -0
  276. package/dist/client/assets/usePierreRuntime-Bo4lD7Ui.js +50 -0
  277. package/dist/client/assets/{wrench-Bkc_0lKF.js → wrench-CeCdjiPF.js} +1 -1
  278. package/dist/client/assets/{x-D3GElQbe.js → x-D4X_y1j_.js} +1 -1
  279. package/dist/client/assets/{xterm-BKR8oAkR.js → xterm-D2a5wrkJ.js} +1 -1
  280. package/dist/client/index.html +2 -2
  281. package/dist/drizzle/0007_lean_venus.sql +26 -0
  282. package/dist/drizzle/0008_luxuriant_ted_forrester.sql +1 -0
  283. package/dist/drizzle/meta/0007_snapshot.json +5767 -0
  284. package/dist/drizzle/meta/0008_snapshot.json +5774 -0
  285. package/dist/drizzle/meta/_journal.json +14 -0
  286. package/dist/main.mjs +29271 -4824
  287. package/dist/node/main.mjs +31635 -11915
  288. package/dist/openscout-terminal-relay.mjs +16 -4
  289. package/dist/pairing-runtime-controller.mjs +37812 -16924
  290. package/dist/runtime/base-daemon.mjs +109 -18
  291. package/dist/runtime/broker-daemon.mjs +22247 -2746
  292. package/dist/runtime/broker-process-manager.mjs +122 -12
  293. package/dist/runtime/mesh-discover.mjs +90 -13
  294. package/dist/scout-control-plane-web.mjs +23083 -3481
  295. package/dist/scout-web-server.mjs +23083 -3481
  296. package/dist/statusline.mjs +2 -0
  297. package/package.json +3 -1
  298. package/dist/client/assets/ActivityScreen-Cu_1V4bq.js +0 -1
  299. package/dist/client/assets/AgentConfigurationScreen-BqfOz90D.js +0 -1
  300. package/dist/client/assets/AgentDefinitionsWorkspace-CUpUrY57.js +0 -1
  301. package/dist/client/assets/AgentFloorView-8LoAEBwS.js +0 -1
  302. package/dist/client/assets/AgentInfoScreen-DZs2_ibL.js +0 -1
  303. package/dist/client/assets/AgentLaneDetailSheet-BXbPls9N.js +0 -5
  304. package/dist/client/assets/AgentLanesEmbedScreen-W3qs022h.js +0 -1
  305. package/dist/client/assets/AgentLanesView-B9vuEEmZ.js +0 -2
  306. package/dist/client/assets/AgentsConsole-BgiYP2wR.js +0 -1
  307. package/dist/client/assets/AgentsScreen-DBi8x4MB.js +0 -1
  308. package/dist/client/assets/AgentsSubnav-DIEO4NPx.js +0 -1
  309. package/dist/client/assets/BackToPicker-BRvfostO.js +0 -1
  310. package/dist/client/assets/BrokerScreen-7ekklu88.js +0 -5
  311. package/dist/client/assets/CodeDiffPane-DDPt6KPh.js +0 -1
  312. package/dist/client/assets/CodeScreen-BxCrpRHd.js +0 -1
  313. package/dist/client/assets/ConversationComposer-Bla3DDvM.js +0 -1
  314. package/dist/client/assets/ConversationFeedRows-B_gPxcqA.js +0 -1
  315. package/dist/client/assets/ConversationHeader-DE3FC0m-.js +0 -1
  316. package/dist/client/assets/ConversationPanels-DLek4H6A.js +0 -2
  317. package/dist/client/assets/ConversationScreen-BDRhx-RU.js +0 -1
  318. package/dist/client/assets/ConversationScreen-C9yMAMYF.css +0 -1
  319. package/dist/client/assets/ConversationStatus-BwVLiiO4.js +0 -1
  320. package/dist/client/assets/FlightObserveScreen-6RpZYwVz.js +0 -1
  321. package/dist/client/assets/FollowScreen-DZ4qfYOY.js +0 -1
  322. package/dist/client/assets/HarnessMark-Cbv3Ib0c.js +0 -1
  323. package/dist/client/assets/HarnessesScreen-CznAImej.js +0 -1
  324. package/dist/client/assets/KnowledgeSearchInspector-Dgdkfvvz.js +0 -1
  325. package/dist/client/assets/KnowledgeSearchScreen-DJDGGaqC.js +0 -1
  326. package/dist/client/assets/LaneTraceDetailSheet-D1CspRbl.js +0 -1
  327. package/dist/client/assets/MeshScreen-DFgevn8N.js +0 -1
  328. package/dist/client/assets/MessagesScreen-C8YKW10Y.js +0 -1
  329. package/dist/client/assets/MissionControlView-lUeAiSVg.js +0 -1
  330. package/dist/client/assets/MissionLeftAgentRow-BpZWntfl.js +0 -1
  331. package/dist/client/assets/MissionLogPane-__MVtEl9.js +0 -1
  332. package/dist/client/assets/NewChatComposer-Cs6OsxK6.js +0 -19
  333. package/dist/client/assets/NewChatComposer-W-t-L4oV.css +0 -1
  334. package/dist/client/assets/ObserveEmbedScreen-y2EpuqRZ.js +0 -2
  335. package/dist/client/assets/OpenScoutAppShell-C_URc8sV.js +0 -87
  336. package/dist/client/assets/OpsAgentsView-UN7iOscs.js +0 -1
  337. package/dist/client/assets/OpsScreen-Buf3LKjb.js +0 -1
  338. package/dist/client/assets/OpsSubnav-DsuXzHah.js +0 -1
  339. package/dist/client/assets/ProjectAgentProfile-DJusrAV-.js +0 -1
  340. package/dist/client/assets/ProjectAgentProfileHero-BFwNJo_N.js +0 -1
  341. package/dist/client/assets/ProjectsInbox-GhVMxOhw.js +0 -2
  342. package/dist/client/assets/ProjectsScreen-eNUBy4YU.js +0 -1
  343. package/dist/client/assets/ProjectsThreadAside-CoBgnHmr.js +0 -1
  344. package/dist/client/assets/Provider-C7UKGHQy.js +0 -1
  345. package/dist/client/assets/RawSessionsTable-DL8y_eEy.js +0 -1
  346. package/dist/client/assets/RealtimeVoiceScreen-ffS-39zy.js +0 -1
  347. package/dist/client/assets/RepoDiffViewer-D_exm6xK.js +0 -7
  348. package/dist/client/assets/RepoDiffViewerLazy-BPgF92Bg.js +0 -2
  349. package/dist/client/assets/SessionEmbedScreen-BVC7yvWF.js +0 -1
  350. package/dist/client/assets/SessionObserve-BpggNO_M.css +0 -1
  351. package/dist/client/assets/SessionObserve-yfXFafp8.js +0 -12
  352. package/dist/client/assets/SessionRefScreen-DRgJu7Jo.js +0 -1
  353. package/dist/client/assets/SessionsScreen-D6XUsZfA.js +0 -1
  354. package/dist/client/assets/SettingsDrawer-CmJt72ww.css +0 -1
  355. package/dist/client/assets/SettingsScreen-Cy8z-EuR.js +0 -1
  356. package/dist/client/assets/SpriteAvatar-DyaGuhik.js +0 -1
  357. package/dist/client/assets/Terminal-CqvGbjXU.js +0 -1
  358. package/dist/client/assets/TerminalEmbedScreen-DuZZFFzW.js +0 -1
  359. package/dist/client/assets/agent-chat-Bfjd9y6c.js +0 -1
  360. package/dist/client/assets/agent-lane-card-Dm7YWoew.css +0 -1
  361. package/dist/client/assets/agent-lane-detail-Djm3YJEa.js +0 -1
  362. package/dist/client/assets/chunk-YOZR3KYS-Bet8khjg.js +0 -47
  363. package/dist/client/assets/content-BDt9VBPk.js +0 -1
  364. package/dist/client/assets/content-BIXf4cKR.js +0 -1
  365. package/dist/client/assets/content-BLm0NBJM.js +0 -1
  366. package/dist/client/assets/content-C2EwTb2y.js +0 -1
  367. package/dist/client/assets/content-C5UbLsDF.js +0 -1
  368. package/dist/client/assets/content-CHU0wwA3.css +0 -1
  369. package/dist/client/assets/content-CR3vdrYY.js +0 -1
  370. package/dist/client/assets/content-CSPVmo2s.js +0 -1
  371. package/dist/client/assets/content-C_FGqx1X.js +0 -1
  372. package/dist/client/assets/content-CvlVUOG8.js +0 -1
  373. package/dist/client/assets/content-D5kJmfgl.js +0 -1
  374. package/dist/client/assets/content-DTpQsomG.js +0 -1
  375. package/dist/client/assets/content-DikVsqLf.js +0 -1
  376. package/dist/client/assets/content-DlUe5Ono.js +0 -1
  377. package/dist/client/assets/content-GIBv_55n.js +0 -1
  378. package/dist/client/assets/content-Q2oclDzi.js +0 -1
  379. package/dist/client/assets/conversation-model-B47vYmWN.js +0 -1
  380. package/dist/client/assets/conversation-motion-features-BdAONVls.js +0 -1
  381. package/dist/client/assets/discover-C1YwpBDE.js +0 -2
  382. package/dist/client/assets/embed-entry-BAcGL3g9.js +0 -2
  383. package/dist/client/assets/home-live-action-B22u89j7.js +0 -1
  384. package/dist/client/assets/home-moving-signal-CK147hxn.js +0 -1
  385. package/dist/client/assets/home-now-card-BgvNWuea.js +0 -1
  386. package/dist/client/assets/hooks-B6y_O2FB.js +0 -2
  387. package/dist/client/assets/inbox-thread-redesign-Bz4FjWzr.css +0 -1
  388. package/dist/client/assets/index-BcuhqXLe.js +0 -1
  389. package/dist/client/assets/index-CJXzfjo9.js +0 -1
  390. package/dist/client/assets/index-DQPvraRS.js +0 -1
  391. package/dist/client/assets/index-DxGoC5l5.css +0 -1
  392. package/dist/client/assets/keyboard-nav-2kv_tGUS.js +0 -1
  393. package/dist/client/assets/knowledge-search-CVxQwxPn.js +0 -1
  394. package/dist/client/assets/knowledge-search-DjrQdiiW.css +0 -1
  395. package/dist/client/assets/left-C--GiIh8.js +0 -2
  396. package/dist/client/assets/left-Cj7Rt89X.js +0 -1
  397. package/dist/client/assets/left-CpNEtFEg.js +0 -1
  398. package/dist/client/assets/left-CzXAuK_t.js +0 -2
  399. package/dist/client/assets/left-agents-Bo9sO1by.js +0 -1
  400. package/dist/client/assets/left-bN4PCAXa.js +0 -1
  401. package/dist/client/assets/left-default-DV9GdvYi.js +0 -1
  402. package/dist/client/assets/left-jYYGAOYD.js +0 -1
  403. package/dist/client/assets/left-lanes-D0l_Co7V.js +0 -1
  404. package/dist/client/assets/left-mission-Ci7zREkQ.js +0 -1
  405. package/dist/client/assets/left-plan-D4U1uflW.js +0 -2
  406. package/dist/client/assets/library-D-RxGiCw.js +0 -1
  407. package/dist/client/assets/mission-control-D3ikEPND.css +0 -1
  408. package/dist/client/assets/openAgent-Bjt57GdM.js +0 -1
  409. package/dist/client/assets/profile-CVRziEDA.js +0 -1
  410. package/dist/client/assets/repo-diff-C9Qs-bEn.css +0 -1
  411. package/dist/client/assets/resolve-panes-r9B3mpW7.js +0 -1
  412. package/dist/client/assets/resolve-sidebar-context-DcG8xGaB.js +0 -1
  413. package/dist/client/assets/right-BHeiIaty.js +0 -1
  414. package/dist/client/assets/right-BkgKo9VT.js +0 -1
  415. package/dist/client/assets/right-BpEU5jWE.js +0 -1
  416. package/dist/client/assets/right-CRZXoy-X.js +0 -1
  417. package/dist/client/assets/right-ChF_pbPy.js +0 -1
  418. package/dist/client/assets/right-DMoUT3KN.js +0 -1
  419. package/dist/client/assets/right-T4Ue6EqM.js +0 -1
  420. package/dist/client/assets/right-wzrLXKur.js +0 -1
  421. package/dist/client/assets/router-Bq5dwf78.js +0 -1
  422. package/dist/client/assets/secondaryNavConfig-DqUIp0Es.js +0 -1
  423. package/dist/client/assets/session-table-DZcrKoIH.js +0 -1
  424. package/dist/client/assets/sparkles-ClfRJQ6w.js +0 -1
  425. package/dist/client/assets/system-surfaces-redesign-CD26LFc0.css +0 -1
  426. package/dist/client/assets/terminal-sessions-D5CIR2OL.js +0 -1
  427. package/dist/client/assets/useContentSecondaryNav-DMl1WNm7.js +0 -1
  428. package/dist/client/assets/usePierreRuntime-wC-yMtBb.js +0 -50
@@ -1 +0,0 @@
1
- import{r as l,j as e,z as qe,A as He}from"./index-DMiGbrBt.js";/* empty css */import{u as Ts}from"./ContextMenu-bARZqTzD.js";import{a as X}from"./api-h5zurxmi.js";import{c as ks}from"./clipboard-e3fSpeo7.js";import{d as Is}from"./colors-BtO5_zlx.js";import{r as Ce,S as Ve,a as Ye,w as Te,s as ht,b as ft,d as kt,c as bt,e as Rs,f as Ne,g as xt}from"./terminal-relay-CWbJ1RCW.js";import{p as yt,k as jt,f as Es,b as Ws,s as U,c as Ue,m as Ke,r as As,d as Ms,o as gt,q as St,t as Ls}from"./terminal-sessions-D5CIR2OL.js";import{D as Nt,a as wt,L as Ds,P as vt,s as Ct,T as Tt,b as It,c as zs}from"./session-table-DZcrKoIH.js";import{u as Je,a as Oe,T as Rt}from"./chunk-YOZR3KYS-Bet8khjg.js";import{q as Et}from"./terminal-takeover-B8UeD9OX.js";import{t as Wt}from"./time-DltNTpLl.js";import{u as Os}from"./Provider-C7UKGHQy.js";import{B as me}from"./BackToPicker-BRvfostO.js";import{T as At}from"./TmuxPeek-m1osv33Q.js";import{R as Ge}from"./refresh-cw-BBmAnCB7.js";import{c as Xe}from"./createLucideIcon-OpA4Amw5.js";import{P as te}from"./plus--b1raV_O.js";import{T as K}from"./terminal-B9AOZQKR.js";import{S as Mt}from"./runtime-picker-Bcl5iIX5.js";import{X as ue}from"./x-D3GElQbe.js";import{E as Lt}from"./eye-0PvebX_a.js";import{E as Ps}from"./external-link-CXBytO9o.js";import"./router-Bq5dwf78.js";import"./arrow-down-BPLe0am9.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./loader-circle-CbHjZsz1.js";/* empty css */import"./voice-levels-Dcr3jglk.js";const _s=6,$s=2;function Ie(s){if(s.layout?.mode)return{mode:s.layout.mode,...s.layout.columns===void 0?{}:{columns:Dt(s.layout.columns)}};const t=s.cellCount??0,r=We(s.columns??$s);return t<=1?{mode:"solo"}:r>=t?{mode:"lanes",columns:r}:{mode:"grid",columns:r}}function Re(s,t){const r=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"?r:Math.ceil(Math.sqrt(r));return Math.max(1,Math.min(_s,i))}return We(s.columns)}function Dt(s){return s==="dynamic"?"dynamic":We(s)}function zt(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 We(s){return typeof s!="number"||!Number.isFinite(s)?$s:Math.max(1,Math.min(_s,Math.floor(s)))}const Ot=[["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"}]],Pt=Xe("ellipsis",Ot);const _t=[["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"}]],de=Xe("grid-2x2",_t);const $t=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],Ft=Xe("zap",$t),Qe=6;function Ut(s="main",t="Main"){return{version:1,activeWorkspaceId:s,workspaces:[{id:s,name:t,tiles:[]}]}}function Ze(){return{version:1,activeWorkspaceId:"",workspaces:[]}}function bs(s,t,r={}){const i=()=>r.allowEmpty?Ze():Ut();if(!s||typeof s!="object")return i();const c=s;if(!Array.isArray(c.workspaces))return i();const m=[],d=new Set;for(const o of c.workspaces){if(!o||typeof o!="object")continue;const x=typeof o.id=="string"?o.id.trim():"",b=typeof o.name=="string"?o.name.trim():"";if(!x||!b||d.has(x)||!Array.isArray(o.tiles))continue;d.add(x);const S=typeof o.purpose=="string"?o.purpose.trim():"",C=Bt(o.columns),L=Kt(o.layout),z=typeof o.updatedAt=="number"&&Number.isFinite(o.updatedAt)&&o.updatedAt>=0?o.updatedAt:null;m.push({id:x,name:b,tiles:o.tiles.filter(t),...S?{purpose:S}:{},...C?{columns:C}:{},...L?{layout:L}:{},...z===null?{}:{updatedAt:z}})}return m.length===0?i():{version:1,activeWorkspaceId:typeof c.activeWorkspaceId=="string"&&d.has(c.activeWorkspaceId)?c.activeWorkspaceId:m[0].id,workspaces:m}}function Kt(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 r=We(t.columns);return{mode:t.mode,columns:r}}function Bt(s){if(typeof s!="number"||!Number.isFinite(s))return null;const t=Math.floor(s);return t<1?null:Math.min(t,Qe)}function xs(s,t){const r=t.id.trim();if(!r)return s;const i={...t,id:r},m=s.workspaces.some(d=>d.id===r)?s.workspaces.map(d=>d.id===r?i:d):[i,...s.workspaces];return{...s,activeWorkspaceId:r,workspaces:m}}function ys(s,t,r){const i=s.workspaces.findIndex(h=>h.id===t);if(i<0)return s;const c=s.workspaces[i],m={...c,...r};return Object.keys(r).every(h=>c[h]===m[h])?s:{...s,workspaces:s.workspaces.map((h,o)=>o===i?m:h)}}function qt(s,t){return t===s.activeWorkspaceId||!s.workspaces.some(r=>r.id===t)?s:{...s,activeWorkspaceId:t}}function Ht(s,t,r={}){if(s.workspaces.length<=1)return r.allowEmpty&&s.workspaces[0]?.id===t?Ze():s;const i=s.workspaces.findIndex(d=>d.id===t);if(i<0)return s;const c=s.workspaces.filter(d=>d.id!==t),m=s.activeWorkspaceId===t?c[Math.min(i,c.length-1)].id:s.activeWorkspaceId;return{...s,activeWorkspaceId:m,workspaces:c}}function Vt(s,t,r){return r>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 Yt(s,t,r,i){if(t===r)return[...s];const c=s.findIndex(b=>b.id===t),m=s.findIndex(b=>b.id===r);if(c<0||m<0)return[...s];const d=[...s],[h]=d.splice(c,1);if(!h)return[...s];const o=d.findIndex(b=>b.id===r),x=i==="after"?o+1:o;return d.splice(Math.max(0,x),0,h),d}const Jt="openscout.terminal.workspaces.v1",Gt=2,Xt="openscout.terminal.workspace-view.v1",Pe=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 Qt=24;function Fs(s,t,r){const i=t.replace(/[^A-Za-z0-9_-]+/gu,"-").replace(/^[^A-Za-z0-9_]+/u,"").slice(0,Qt).replace(/-+$/u,""),c=Zt(JSON.stringify([r,t,s]));return`scout-${s}-${i||"cell"}-${c}`}function Zt(s){let t=2166136261;for(let r=0;r<s.length;r+=1)t^=s.charCodeAt(r),t=Math.imul(t,16777619)>>>0;return t.toString(16).padStart(8,"0")}function le(s,t="shell"){return{id:we("cell"),kind:"fresh",backend:s,agent:t}}function js(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 gs(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:sn(t.intent.hostId)?t.intent.hostId:"pty",agent:"shell"})}}function _e(s,t={}){return{id:s.id,name:s.name,purpose:s.purpose??"",columns:Re(Ie({layout:s.layout,columns:s.columns,cellCount:s.tiles.length}),{tileCount:s.tiles.length}),layout:Ie({layout:s.layout,columns:s.columns,cellCount:s.tiles.length}),cells:s.tiles.map(r=>r.kind==="registered"?{id:r.id,surfaceId:r.terminalSurfaceKey,terminalSessionId:r.terminalSessionId,intent:en(r,t.sessions??[])}:{id:r.id,intent:{hostId:r.backend,sessionName:r.backend==="pty"?null:Fs(r.backend,r.id,s.id)}})}}function en(s,t){const r=yt(s.terminalSurfaceKey),i=t.find(c=>c.id===s.terminalSessionId||c.surfaces.some(m=>jt(m,s.terminalSurfaceKey)));return{...r?{hostId:r.backend,sessionName:r.hostSession}:{},...i?.cwd?{cwd:i.cwd}:{},...i?.harness?{harness:i.harness}:{},...i?.resumeCommand?{resumeCommand:i.resumeCommand}:{}}}function sn(s){return s==="pty"||s==="tmux"||s==="zellij"||s==="herdr"}function tn(s){if(!Array.isArray(s))return bs(s,js,{allowEmpty:!0});const t=s.flatMap(r=>{if(!r||typeof r!="object")return[];const i=r;if(typeof i.id!="string"||!i.id.trim())return[];const c=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:c.map((m,d)=>({...m,id:`${i.id}-${d}`}))}]});return bs({activeWorkspaceId:t[0]?.id??"",workspaces:t},js,{allowEmpty:!0})}function nn(s,t,r){const i=s.find(c=>c.id===t);return i?i.capabilities.control.includes(r)||i.capabilities.harnessControl.includes(r):!1}function rn(s,t){return s.find(r=>r.id===t)??null}function an(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,r)=>Number(r.relayAttach)-Number(t.relayAttach)||t.value.localeCompare(r.value))]}async function on(){return X("/api/terminal-hosts")}async function ln(s,t){return X(`/api/terminal-hosts/${encodeURIComponent(s)}/sessions`,{method:"POST",body:JSON.stringify(t)})}let ve=null,$e=null;function cn(){return ve?Promise.resolve(ve):($e??=on().then(s=>(ve=s,s)).finally(()=>{$e=null}),$e)}function es(){const[s,t]=l.useState(ve);return l.useEffect(()=>{if(s)return;let r=!1;return cn().then(i=>{r||t(i)}).catch(()=>{}),()=>{r=!0}},[s]),{hosts:s?.hosts??[],preferredHostId:s?.preferredHostId??null,loaded:s!==null}}async function dn(){return X("/api/terminal-workspaces")}async function Ss(s){return(await X(`/api/terminal-workspaces/${encodeURIComponent(s.id)}`,{method:"PUT",body:JSON.stringify(s)})).workspace}async function mn(s,t){return X(`/api/terminal-workspaces/${encodeURIComponent(s)}/cells/${encodeURIComponent(t)}/revive`,{method:"POST",body:"{}"})}async function un(s){return(await X(`/api/terminal-workspaces/${encodeURIComponent(s)}`,{method:"DELETE"})).deleted}function pn(s){const t=new Map;for(const r of s?.cells??[])t.set(r.cellId,r);return t}const Ns="scout:terminal-send-line";function hn(s){const t=s.detail;if(!t||typeof t!="object"||!("line"in t))return null;const r=t.line;return typeof r=="string"&&r.trim().length>0?r:null}const ce=typeof window>"u"?l.useEffect:l.useLayoutEffect,fn="openscout.terminal.picker-view.v1",ws={mode:"grid",columns:"dynamic"},vs=[{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}],kn=[{value:"shell",label:"Shell"},{value:"codex",label:"Codex"},{value:"claude",label:"Claude"},{value:"pi",label:"Pi"}],Fe="'JetBrainsMono Nerd Font', 'JetBrainsMonoNL Nerd Font', 'MesloLGS Nerd Font Mono', 'Hack Nerd Font Mono', 'JetBrains Mono', monospace",Cs=s=>{},bn=()=>{};function xn(){if(typeof window>"u")return{fontFamily:Fe,fontSize:13};const s=new URLSearchParams(window.location.search),t=s.get("terminalFontFamily")?.trim(),r=Number(s.get("terminalFontSize"));return{fontFamily:t?`'${t.replaceAll("'","\\'")}', ${Fe}`:Fe,fontSize:Number.isFinite(r)&&r>=9&&r<=32?r:13}}function ss(s){const t=xn();return e.jsx(Rt,{...s,renderer:s.renderer??"dom",fontFamily:t.fontFamily,fontSize:t.fontSize})}function yn(s,t){const[r,i]=l.useState({state:"loading",sessions:[]}),c=l.useCallback(()=>{i(d=>({state:"loading",sessions:d.sessions})),Es({includeDiscovered:!0}).then(d=>{i({state:"ready",sessions:d})}).catch(d=>{i(h=>({state:"failed",sessions:h.sessions,error:d instanceof Error?d.message:String(d)}))})},[]);return l.useEffect(()=>{c()},[c]),{target:l.useMemo(()=>As(r.sessions,s,t),[r.sessions,s,t]),loadState:r.state,loadSessions:c,hasSessionHint:!!s}}function jn(s,t,r){const i=ht(t,r),[c,m]=l.useState(i?{state:"preparing"}:{state:"ready"}),[d,h]=l.useState(0);return l.useEffect(()=>{if(!i||!s){m({state:"ready"});return}let o=!1;return m({state:"preparing"}),X(`/api/agents/${encodeURIComponent(s)}/session-catalog`).then(x=>{if(x.resumeCommand)return Et({command:x.resumeCommand,cwd:x.resumeCwd,agentId:s})}).then(()=>{o||m({state:"ready"})}).catch(x=>{o||m({state:"failed",error:x instanceof Error?x.message:String(x)})}),()=>{o=!0}},[s,i,d]),{ready:c.state==="ready",label:c.state==="failed"?"TAKEOVER FAILED":"PREPARING TAKEOVER",status:c.state==="failed"?c.error:"Resolving live session...",onRetry:c.state==="failed"?()=>h(o=>o+1):void 0}}function gn(s){const{agentId:t,agent:r,mode:i,navigate:c,registeredTarget:m,showContextMenu:d}=s,{hosts:h}=es(),o=r?Is(r.name):"var(--accent)",x=l.useRef(null),b=m?Ls(m.surface):Ce(r),S=i==="observe",C=m?.session.cwd??r?.cwd??r?.projectRoot??void 0,L=qe(),z=He(),N=ft({agentId:t,agent:r,registeredTarget:m,terminalSurface:b,relayUrl:L,harness:m?.session.harness??r?.harness,cwd:C,mode:i}),j=Je({url:N.scopedRelayUrl,healthUrl:z,autoConnect:!0,...S?{}:{sessionKey:N.relayStorageSessionKey},...N.surfaceOptions??{},...N.orphanTTL?{orphanTTL:N.orphanTTL}:{},...N.cwd?{cwd:N.cwd}:{},...N.relayAgent?{agent:N.relayAgent}:{},controlMode:N.controlMode});ce(()=>{j.resize(Ve,Ye)},[j.resize]);const I=l.useMemo(()=>S?{...j,sendInput:Cs,sendLine:Cs,restart:bn}:j,[S,j]),A=kt({agentId:t,registeredTarget:m}),$=Te(A,i),T=l.useCallback(()=>{const k=x.current;k?.querySelector(".xterm-helper-textarea")?.focus(),k?.querySelector(".xterm")?.focus()},[]);l.useEffect(()=>{const k=P=>{const _=P.detail?.line;return typeof _=="string"&&_.length>0?_:null},D=P=>{const _=k(P);!_||S||(I.sendInput(_),T())},M=P=>{const _=k(P);!_||S||(I.sendLine(_),T())};return window.addEventListener("scout:terminal-send-input",D),window.addEventListener("scout:terminal-send-line",M),()=>{window.removeEventListener("scout:terminal-send-input",D),window.removeEventListener("scout:terminal-send-line",M)}},[T,S,I]);const R=l.useCallback(k=>b?bt(b,k):null,[b]),E=l.useCallback(()=>{ks(Rs($))},[$]),q=l.useCallback(()=>{S||!navigator.clipboard?.readText||navigator.clipboard.readText().then(k=>{k&&I.sendInput(k)}).catch(()=>{})},[S,I]),B=l.useCallback(()=>{Ne(N.relayStorageSessionKey);const k=R("detach");if(k){k.finally(()=>j.disconnect());return}j.disconnect()},[N.relayStorageSessionKey,j,R]),f=l.useCallback(()=>{Ne(N.relayStorageSessionKey);const k=R("force-quit-bridge");if(k){k.finally(()=>{j.connect(),window.setTimeout(T,250)});return}j.connect(),window.setTimeout(T,250)},[N.relayStorageSessionKey,T,j,R]),g=l.useCallback(()=>{if(S)return;const k=R("interrupt");k?k.catch(()=>I.sendInput("")):I.sendInput(""),T()},[T,S,R,I]),W=l.useCallback(()=>{if(S)return;const k=R("quit");k?k.catch(()=>I.sendInput("")):I.sendInput(""),T()},[T,S,R,I]),F=l.useCallback(()=>{if(S)return;const k=R("stop-job");if(k){k.finally(T);return}T()},[T,S,R]),ne=l.useCallback(()=>{if(Ne(N.relayStorageSessionKey),b&&!window.confirm(`Force quit Claude in ${Ke(b.sessionName)}?`))return;const k=R("force-quit");if(k){k.finally(()=>j.disconnect());return}const D=j.sessionId;if(!D){j.disconnect();return}xt(D).catch(()=>{}).finally(()=>j.disconnect())},[N.relayStorageSessionKey,j,R,b]),re=l.useCallback(()=>{if(!b||!window.confirm(`Restart Claude in ${Ke(b.sessionName)} and resume its latest session?`))return;Ne(N.relayStorageSessionKey);const k=R("restart-resume");k&&k.finally(()=>{j.disconnect(),window.setTimeout(()=>{j.connect(),window.setTimeout(T,250)},600)})},[N.relayStorageSessionKey,T,j,R,b]),ae=l.useCallback(k=>{c(Te(A,k))},[c,A]),Q=l.useCallback(()=>{c(A)},[c,A]),Z=l.useMemo(()=>{const k=b?.backend??null,D=_=>nn(h,k,_),M=[];(!k||D("detach"))&&M.push({kind:"action",label:"Leave this session running",onSelect:B}),M.push({kind:"action",label:"Reconnect",onSelect:f});const P=[];return D("restart-resume")&&P.push({kind:"action",label:"Restart Claude and resume",onSelect:re}),D("force-quit")&&P.push({kind:"action",label:"Force quit Claude",onSelect:ne}),P.length>0&&M.push({kind:"separator"},...P),M},[B,ne,f,re,h,b?.backend]),pe=l.useCallback(k=>{d(k,Z)},[Z,d]),ee=l.useCallback(k=>{const D=typeof window>"u"?"":window.getSelection()?.toString()??"",M=[];D.trim()&&M.push({kind:"action",label:"Copy Selection",shortcut:"⌘C",onSelect:()=>{ks(D)}}),S||M.push({kind:"action",label:"Paste",shortcut:"⌘V",onSelect:q},{kind:"action",label:"Send Ctrl-C",shortcut:"⌃C",onSelect:g},{kind:"action",label:"Quit With Ctrl-D",shortcut:"⌃D",onSelect:W},{kind:"action",label:"Stop Running Job",onSelect:F}),M.length>0&&M.push({kind:"separator"}),M.push({kind:"action",label:"Focus Terminal",onSelect:T},...Z,{kind:"separator"},{kind:"action",label:S?"Open Takeover":"Open Observe",onSelect:()=>ae(S?"takeover":"observe")},{kind:"action",label:"Open Summary",onSelect:Q},{kind:"action",label:"Copy Terminal Link",onSelect:E}),d(k,M)},[E,T,g,ae,Q,q,W,S,Z,d,F]);return{color:o,terminalBodyRef:x,terminalSurface:b,readOnly:S,relay:j,terminalRelay:I,healthUrl:z,scopedRelayUrl:N.scopedRelayUrl,hasViewActions:!!(m||b),canSignalTerminal:!S&&!!(b||j.status==="connected"),canStopTerminalJob:!S&&!!b,handleSessionMenu:pe,handleTerminalContextMenu:ee,openMode:ae,openSummary:Q,interruptTerminal:g,quitTerminal:W,stopTerminalJob:F,terminalRouteBase:A}}function Sn({agent:s,agentId:t,color:r,navigate:i,label:c,status:m,onRetry:d}){return e.jsxs("div",{className:"s-term",children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsx(me,{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:r},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:c}),e.jsx("div",{className:"s-term-status",children:d?"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:m}),d&&e.jsx("button",{type:"button",onClick:d,children:"Retry"})]})})]})}function Nn({target:s,navigate:t}){const r=l.useMemo(()=>Ws([s.session]).find(d=>U(d.surface)===U(s.surface)),[s]),i={view:"terminal",terminalSessionId:s.session.id,terminalSurfaceKey:U(s.surface)},c=gt(s.session,s.surface),m=St(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(me,{slot:"terminal",fallback:{view:"terminal"},navigate:t,className:"s-term-back"}),e.jsxs("div",{className:"s-term-summary-mark",children:[e.jsx(K,{size:18,strokeWidth:1.7}),e.jsx("span",{children:"Terminal"})]}),e.jsxs("div",{className:"s-term-summary-heading",children:[e.jsx("h1",{children:r?.title??s.surface.sessionName}),e.jsxs("p",{children:[s.surface.backend," · ",c]})]}),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(Te(i,"takeover")),children:[e.jsx(Ds,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Enter"})]}),e.jsxs("button",{type:"button",className:"s-term-summary-action",onClick:()=>t(Te(i,"observe")),children:[e.jsx(Lt,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Observe"})]})]})]}),e.jsx("div",{className:"s-term-summary-preview",children:e.jsx(At,{surface:Ls(s.surface),lines:26,columns:112,pollMs:3e4,idlePollMs:3e4,className:"s-term-preview-peek"})}),e.jsx("dl",{className:"s-term-summary-details",children:m.map(([d,h])=>e.jsxs("div",{className:"s-term-summary-detail",children:[e.jsx("dt",{children:d}),e.jsx("dd",{title:h,children:h})]},d))})]})})}function ts({agentId:s,agent:t,mode:r,navigate:i,registeredTarget:c,embedded:m=!1,tileActions:d}){const h=Ts(),o=gn({agentId:s,agent:t,mode:r,navigate:i,registeredTarget:c,showContextMenu:h});return e.jsxs("div",{className:`s-term${m?" 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:[!m&&e.jsx(me,{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:o.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]})]}),c&&e.jsxs("div",{className:"s-term-registered-chip",children:[e.jsx(K,{size:14,strokeWidth:1.8}),e.jsx("span",{children:c.session.harness}),e.jsx("span",{children:c.session.sourceSessionId})]})]}),e.jsxs("div",{className:"s-term-bar-meta",children:[e.jsx("span",{className:"s-term-label",children:o.terminalSurface?o.readOnly?"TERMINAL OBSERVE":"TERMINAL TAKEOVER":"TAKEOVER"}),o.terminalSurface&&e.jsx("span",{className:"s-term-session",title:o.terminalSurface.sessionName,children:Ke(o.terminalSurface.sessionName)})]}),e.jsxs("div",{className:"s-term-bar-actions",children:[o.hasViewActions&&e.jsxs("div",{className:"s-term-action-cluster s-term-action-cluster--view","aria-label":"Terminal view actions",children:[c&&e.jsx("button",{type:"button",className:"s-term-action",onClick:o.openSummary,title:"Leave the terminal canvas and show the session summary",children:"Summary"}),o.terminalSurface&&e.jsx("button",{type:"button",className:"s-term-action",onClick:()=>o.openMode(o.readOnly?"takeover":"observe"),title:o.readOnly?"Switch to interactive takeover":"Switch to read-only terminal observe",children:o.readOnly?"Takeover":"Observe"})]}),(o.canSignalTerminal||o.canStopTerminalJob)&&e.jsxs("div",{className:"s-term-action-cluster s-term-action-cluster--signals","aria-label":"Terminal signal actions",children:[o.canSignalTerminal&&e.jsxs("button",{type:"button",className:"s-term-action s-term-action--warn",onClick:o.interruptTerminal,title:"Send Ctrl-C to the terminal",children:[e.jsx(Ft,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Ctrl-C"})]}),o.canSignalTerminal&&e.jsxs("button",{type:"button",className:"s-term-action s-term-action--warn",onClick:o.quitTerminal,title:"Send Ctrl-D / EOF to the terminal",children:[e.jsx(vt,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Quit"})]}),o.canStopTerminalJob&&e.jsxs("button",{type:"button",className:"s-term-action s-term-action--warn",onClick:o.stopTerminalJob,title:"Stop Claude's current shell/tool job without quitting Claude",children:[e.jsx(Mt,{size:12,strokeWidth:2}),e.jsx("span",{children:"Stop Job"})]})]}),e.jsxs("button",{type:"button",className:"s-term-action s-term-session-menu",onClick:o.handleSessionMenu,title:"Open session, recovery, and external handoff actions",children:[e.jsx(Pt,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Session"})]}),e.jsx("div",{className:"s-term-status",children:o.relay.status==="connected"?"LIVE":o.relay.status==="connecting"?"CONNECTING":"OFFLINE"}),d]})]}),e.jsx("div",{ref:o.terminalBodyRef,className:"s-term-body",onContextMenuCapture:o.handleTerminalContextMenu,children:e.jsx(ss,{relay:o.terminalRelay,readOnly:o.readOnly,quiet:!0,configItems:[...o.terminalSurface?[{label:"backend",value:o.terminalSurface.backend},{label:"session",value:o.terminalSurface.sessionName},...o.terminalSurface.paneId?[{label:"pane",value:o.terminalSurface.paneId}]:[],...o.terminalSurface.socketDir?[{label:"socket",value:o.terminalSurface.socketDir}]:[],{label:"mode",value:o.readOnly?"read-only":"takeover"}]:[],{label:"ws",value:o.scopedRelayUrl},{label:"health",value:o.healthUrl}]})})]})}function wn({terminalSessionId:s,terminalSurfaceKey:t,mode:r,navigate:i}){const{target:c,loadState:m,loadSessions:d,hasSessionHint:h}=yn(s,t);return c&&r?e.jsx(ts,{agent:null,mode:r,navigate:i,registeredTarget:c},`${U(c.surface)}:${r}`):c?e.jsx(Nn,{target:c,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(K,{size:18,strokeWidth:1.6}),e.jsx("span",{children:m==="loading"?"Loading terminal":m==="failed"?"Terminal list unavailable":h?"Terminal unavailable":"Select a terminal"}),m==="failed"&&e.jsx("button",{type:"button",className:"s-term-empty-action",onClick:d,children:"Retry"})]})})}function vn(s,t){return s.kind!=="fresh"||!s.sessionName?!1:t.some(r=>r.surfaces.some(i=>i.backend===s.backend&&i.sessionName===s.sessionName&&i.state!=="exited"))}function Ee(s){return`${s.session.id}:${U(s.surface)}`}function Cn(s,t,r){if(s.kind==="fresh")return{id:s.id,kind:"fresh",backend:s.backend,agent:s.agent,...s.backend==="pty"?{}:{sessionName:Fs(s.backend,s.id,r)}};const i=As(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 G(s){return{session:s.session,surface:s.surface}}function Tn(s){const t=s.backend;return t!=="pty"&&!Ms(t)?null:{view:"terminal",terminalBackend:t,terminalAgent:s.agent,terminalTabId:s.id,...s.sessionName?{terminalSessionName:s.sessionName}:{},...s.zellijSocketDir?{zellijSocketDir:s.zellijSocketDir}:{}}}function In(s,t="takeover"){return{view:"terminal",terminalSessionId:s.session.id,terminalSurfaceKey:U(s.surface),mode:t}}function Us(s,t){if(typeof window>"u"){t(s);return}window.open(Rs(s),"_blank","noopener,noreferrer")}function Rn({navigate:s}){const{agents:t}=Os(),r=Ts(),{hosts:i}=es(),c=l.useMemo(()=>an(i),[i]),[m,d]=Oe(Jt,Ze(),{version:Gt,migrate:tn}),[h,o]=Oe(Xt,"library"),x=l.useRef(new Map),[b,S]=l.useState(null),[C,L]=l.useState(""),[z,N]=l.useState(""),[j,I]=l.useState(ws),[A,$]=l.useState(()=>Array.from({length:4},()=>le("pty"))),[T,R]=l.useState(0),[E,q]=l.useState({state:"loading",sessions:[]}),[B,f]=l.useState(0),[g,W]=l.useState(!0),[F,ne]=Oe(fn,"list"),[re,ae]=l.useState(Nt),[Q,Z]=l.useState([]),[pe,ee]=l.useState(null),[k,D]=l.useState(null),[M,P]=l.useState(null),[_,rs]=l.useState(!1),[he,as]=l.useState(null),[Bs,Ae]=l.useState(null),fe=l.useRef(null),ke=l.useRef(null),be=l.useRef("after"),xe=l.useRef(null),ye=l.useRef(null),Me=l.useRef(!1),H=l.useCallback((n={})=>{n.silent||q(a=>({state:"loading",sessions:a.sessions})),Es({includeDiscovered:!0}).then(a=>q({state:"ready",sessions:a})).catch(a=>{n.silent||q(u=>({state:"failed",sessions:u.sessions,error:a instanceof Error?a.message:String(a)}))})},[]);l.useEffect(()=>{H()},[H]),l.useEffect(()=>{const n=()=>{document.visibilityState==="visible"&&H({silent:!0})},a=window.setInterval(n,8e3);return window.addEventListener("focus",n),document.addEventListener("visibilitychange",n),()=>{window.clearInterval(a),window.removeEventListener("focus",n),document.removeEventListener("visibilitychange",n)}},[H]),l.useEffect(()=>{let n=!1;return dn().then(a=>{if(!n){Z(a.resolutions);for(const u of a.workspaces)x.current.set(u.id,JSON.stringify(_e(gs(u),{sessions:E.sessions})));a.workspaces.length!==0&&d(u=>{let p=u;for(const y of a.workspaces)p=xs(p,gs(y));return{...p,activeWorkspaceId:u.activeWorkspaceId||p.activeWorkspaceId}})}}).catch(()=>{}),()=>{n=!0}},[d]);const is=l.useMemo(()=>Ws(E.sessions),[E.sessions]),V=l.useMemo(()=>is.filter(n=>n.surface.state!=="exited"),[is]);l.useMemo(()=>Pn(t),[t]);const os=E.state==="failed"?E.error:null,qs=m.workspaces,w=m.workspaces.find(n=>n.id===m.activeWorkspaceId)??null,se=Ie({layout:w?.layout,columns:w?.columns,cellCount:w?.tiles.length??0}),Y=l.useMemo(()=>(w?.tiles??[]).map(n=>Cn(n,E.sessions,w?.id??"")),[w?.id,w?.tiles,E.sessions]),Le=Re(se,{tileCount:Y.length});l.useEffect(()=>{if(!w||!x.current.has(w.id))return;const n=_e(w,{sessions:E.sessions}),a=JSON.stringify(n);x.current.get(w.id)!==a&&(x.current.set(w.id,a),Ss(n).catch(u=>ee(u instanceof Error?u.message:String(u))))},[w,E.sessions]);const ls=h==="workspace"&&!w?"library":h,O=l.useCallback(n=>{d(a=>{const u=a.workspaces.find(y=>y.id===a.activeWorkspaceId);if(!u)return a;const p=n(u.tiles);return p===u.tiles?a:ys(a,u.id,{tiles:p,updatedAt:Date.now()})})},[d]),je=l.useCallback(n=>{d(a=>a.activeWorkspaceId?ys(a,a.activeWorkspaceId,{layout:n,updatedAt:Date.now()}):a)},[d]),Hs=l.useCallback(n=>{d(a=>qt(a,n.id)),W(!1),o("workspace")},[d,o]),Vs=l.useCallback(()=>{o("library")},[o]),ie=l.useCallback(n=>{S(n?.id??null),L(n?.name??""),N(n?.purpose??""),I(n?Ie({layout:n.layout,columns:n.columns,cellCount:n.tiles.length}):ws),$(n?.tiles??Array.from({length:4},()=>le("pty"))),R(0),o("builder")},[o]),Ys=l.useCallback(n=>{I(a=>n.mode==="solo"?{mode:"solo"}:{mode:n.mode,columns:a.columns??"dynamic"}),$(a=>a.length>=n.minimumCells?a:[...a,...Array.from({length:n.minimumCells-a.length},()=>le("pty"))]),R(a=>Math.max(0,Math.min(a,n.minimumCells-1)))},[]),Js=l.useCallback(n=>{I(a=>a.mode==="solo"?{mode:"lanes",columns:n}:{...a,columns:n})},[]),Gs=l.useCallback(()=>{$(n=>{const a=[...n,le("pty")];return R(a.length-1),a})},[]),Xs=l.useCallback(n=>{$(a=>{if(a.length<=1)return a;const u=a.filter((p,y)=>y!==n);return R(p=>Math.min(p,u.length-1)),u})},[]),Qs=l.useCallback(()=>{const n=C.trim();if(!n)return;const a={id:b??we("workspace"),name:n,purpose:z.trim(),columns:Re(j,{tileCount:A.length}),layout:j,tiles:A,updatedAt:Date.now()};d(p=>xs(p,a));const u=_e(a,{sessions:E.sessions});x.current.set(a.id,JSON.stringify(u)),Ss(u).catch(p=>ee(p instanceof Error?p.message:String(p))),W(!1),o("workspace")},[b,d,o,E.sessions,A,j,C,z]),Zs=l.useCallback(n=>{d(a=>Ht(a,n,{allowEmpty:!0})),un(n).catch(()=>{})},[d]),cs=l.useCallback((n,a="shell")=>{O(u=>[...u,le(n,a)])},[O]),oe=l.useCallback((n,a)=>{const u={kind:"registered",terminalSessionId:n.session.id,terminalSurfaceKey:U(n.surface)};O(p=>{const y=p.some(v=>v.kind==="registered"&&v.terminalSessionId===u.terminalSessionId&&Ue(v.terminalSurfaceKey,u.terminalSurfaceKey));return a?p.some(v=>v.id===a)?p.map(v=>v.id===a?{...u,id:v.id}:v):p:y?p:[...p,{...u,id:we("cell")}]})},[O]),et=l.useCallback(n=>{oe(n)},[oe]),st=l.useMemo(()=>new Set(Y.filter(n=>n.kind==="registered").map(n=>Ee(n.target))),[Y]),ge=l.useCallback(n=>{n?.currentTarget.hasPointerCapture(n.pointerId)&&n.currentTarget.releasePointerCapture(n.pointerId),xe.current=null,ye.current=null,Me.current=!1,D(null),P(null),rs(!1)},[]),tt=l.useCallback((n,a)=>{const u=n.target;n.button!==0||u instanceof Element&&u.closest("button, a")||(xe.current={pointerId:n.pointerId,target:G(a),targetId:Ee(G(a)),startX:n.clientX,startY:n.clientY},n.currentTarget.setPointerCapture(n.pointerId))},[]),nt=l.useCallback(n=>{const a=xe.current;if(!a||a.pointerId!==n.pointerId||Math.hypot(n.clientX-a.startX,n.clientY-a.startY)<6&&!k)return;k||D(a.targetId);const p=document.querySelector(".s-term--workspace");if(p){const fs=p.getBoundingClientRect();n.clientY<fs.top+72&&(p.scrollTop-=28),n.clientY>fs.bottom-72&&(p.scrollTop+=28)}const y=document.elementFromPoint(n.clientX,n.clientY),v=y?.closest(".s-term-workspace-cell"),J=!!(y?.closest(".s-term-workspace-add-cell")||!v&&y?.closest(".s-term--workspace")&&!y?.closest(".s-term-picker")),hs=J?null:v?.dataset.terminalTileId??null;ye.current=hs,Me.current=J,P(hs),rs(J)},[k]),rt=l.useCallback(n=>{const a=xe.current;!a||a.pointerId!==n.pointerId||(Me.current?oe(a.target):ye.current&&oe(a.target,ye.current),ge(n))},[ge,oe]),at=l.useCallback(n=>{ge(n)},[ge]),it=l.useCallback(()=>{const n=V.map(G);n.length!==0&&O(a=>{const u=a.filter(y=>y.kind==="registered"),p=n.filter(y=>!u.some(v=>v.kind==="registered"&&v.terminalSessionId===y.session.id&&Ue(v.terminalSurfaceKey,U(y.surface)))).map(y=>({id:we("cell"),kind:"registered",terminalSessionId:y.session.id,terminalSurfaceKey:U(y.surface)}));return p.length===0?a:[...a,...p]})},[V,O]),De=l.useCallback(n=>{O(a=>{const u=a.filter(p=>p.id!==n);return u.length===a.length?a:u})},[O]),ds=l.useCallback((n,a,u)=>{n!==a&&O(p=>Yt(p,n,a,u))},[O]),ze=l.useCallback((n,a)=>{O(u=>{const p=u.findIndex(J=>J.id===n),y=p+a;if(p<0||y<0||y>=u.length)return u;const v=[...u];return[v[p],v[y]]=[v[y],v[p]],v})},[O]),ms=l.useCallback((n,a)=>{O(u=>u.map(p=>p.id===n?{id:p.id,kind:"fresh",backend:a,agent:"shell"}:p))},[O]),Se=l.useCallback(()=>[...vs.map(n=>({kind:"action",label:n.label,onSelect:()=>je(n.mode==="solo"?{mode:"solo"}:{mode:n.mode,columns:se.columns??"dynamic"})})),...se.mode==="solo"?[]:[{kind:"separator"},{kind:"action",label:"Dynamic columns",onSelect:()=>je({...se,columns:"dynamic"})},...Array.from({length:Qe},(n,a)=>({kind:"action",label:a===0?"One column":`${a+1} columns`,onSelect:()=>je({...se,columns:a+1})}))],{kind:"separator"},{kind:"action",label:"Edit workspace…",onSelect:()=>w&&ie(w)}],[w,je,ie,se]),ot=l.useCallback(n=>{r(n,Se())},[Se,r]),lt=l.useCallback((n,a)=>{const u=Y.findIndex(y=>y.id===a.id),p=[];u>0&&p.push({kind:"action",label:"Move left",onSelect:()=>ze(a.id,-1)}),u>=0&&u<Y.length-1&&p.push({kind:"action",label:"Move right",onSelect:()=>ze(a.id,1)}),p.length>0&&p.push({kind:"separator"}),p.push(...c.map(y=>({kind:"action",label:y.value==="pty"?"Replace with a disposable shell":`Replace with a session that survives (${y.label})`,onSelect:()=>ms(a.id,y.value)})),{kind:"separator"},{kind:"action",label:"Remove cell",onSelect:()=>De(a.id)},{kind:"separator"},...Se()),r(n,p)},[De,Se,ze,ms,r,c,Y]),ct=l.useCallback((n,a)=>{const u=n.target;n.button===0&&u instanceof Element&&u.closest(".s-term-bar")&&!u.closest("button, a")&&(fe.current={pointerId:n.pointerId,tileId:a,startX:n.clientX,startY:n.clientY},n.currentTarget.setPointerCapture(n.pointerId))},[]),dt=l.useCallback(n=>{const a=fe.current;if(!a||a.pointerId!==n.pointerId||Math.hypot(n.clientX-a.startX,n.clientY-a.startY)<6&&!he)return;he||as(a.tileId);const p=document.elementFromPoint(n.clientX,n.clientY)?.closest(".s-term-workspace-cell"),y=p?.dataset.terminalTileId??null;if(!p||!y||y===a.tileId){ke.current=null,be.current="after",Ae(null);return}const v=p.getBoundingClientRect(),J=Vt({x:n.clientX,y:n.clientY},{left:v.left,top:v.top,width:v.width,height:v.height},Le);ke.current=y,be.current=J.edge,Ae(y)},[he,Le]),us=l.useCallback(n=>{const a=fe.current;if(!a||a.pointerId!==n.pointerId)return;const u=ke.current;u&&ds(a.tileId,u,be.current),n.currentTarget.hasPointerCapture(n.pointerId)&&n.currentTarget.releasePointerCapture(n.pointerId),fe.current=null,ke.current=null,be.current="after",as(null),Ae(null)},[ds]),mt=l.useMemo(()=>pn(Q.find(n=>n.workspaceId===w?.id)),[w?.id,Q]),ps=l.useCallback(n=>{ae(a=>wt(a,n))},[]),ut=l.useCallback(()=>{H(),f(n=>n+1)},[H]),pt=l.useCallback(n=>{w&&mn(w.id,n).then(()=>{ee(null),H()}).catch(a=>ee(a instanceof Error?a.message:String(a)))},[w,H]);return ls==="library"?e.jsx(En,{workspaces:qs,sessionsReady:E.state!=="loading",onOpen:Hs,onCreate:()=>ie(),onEdit:ie,onDelete:Zs}):ls==="builder"?e.jsx(An,{editing:!!b,name:C,purpose:z,modes:vs,layout:j,startOptions:c,cells:A,selectedSlot:T,terminalItems:V,onNameChange:L,onPurposeChange:N,onApplyMode:Ys,onColumnsChange:Js,onSelectSlot:R,onAddCell:Gs,onRemoveCell:Xs,pickerView:F,pickerSort:re,onPickerView:ne,onPickerSort:ps,onAssignFresh:(n,a="shell")=>$(u=>u.map((p,y)=>y===T?{id:p.id,kind:"fresh",backend:n,agent:a}:p)),onAssignRegistered:n=>$(a=>a.map((u,p)=>p===T?{id:u.id,kind:"registered",terminalSessionId:n.session.id,terminalSurfaceKey:U(n.surface)}:u)),onCancel:()=>{o(w?"workspace":"library")},onSave:Qs}):e.jsx("div",{className:"s-term s-term--workspace",children:e.jsxs("div",{className:"s-term-workspace",children:[e.jsxs("header",{className:"s-term-workspace-head",children:[e.jsxs("div",{className:"s-term-workspace-title",children:[e.jsxs("span",{className:"s-term-summary-mark",children:[e.jsx(de,{size:18,strokeWidth:1.7}),e.jsxs("span",{children:["Workspaces / ",w?.name??"Workspace"]})]}),e.jsx("h1",{children:w?.name??"Workspace"}),w?.purpose&&e.jsx("p",{children:w.purpose})]}),e.jsxs("div",{className:"s-term-workspace-actions","aria-label":"Terminal workspace actions",children:[e.jsx("button",{type:"button",className:"s-term-workspace-action",onClick:Vs,children:e.jsx("span",{children:"All workspaces"})}),e.jsxs("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>w&&ie(w),children:[e.jsx(de,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Edit workspace"})]}),e.jsxs("button",{type:"button",className:"s-term-workspace-action",onClick:()=>cs("pty"),title:"Add a shell tile",children:[e.jsx(te,{size:14,strokeWidth:1.9}),e.jsx("span",{children:"Shell"})]}),e.jsxs("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>cs("pty","codex"),title:"Add a Codex TUI tile",children:[e.jsx(te,{size:14,strokeWidth:1.9}),e.jsx("span",{children:"Codex"})]}),e.jsxs("button",{type:"button",className:"s-term-workspace-action",onClick:()=>W(n=>!n),title:g?"Hide terminal picker":"Show terminal picker","aria-pressed":g,children:[e.jsx(K,{size:14,strokeWidth:1.8}),e.jsx("span",{children:g?"Hide picker":"Show picker"})]}),e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:ut,disabled:E.state==="loading",title:"Reload all terminal tiles","aria-label":"Reload all terminal tiles",children:e.jsx(Ge,{size:14,strokeWidth:1.8})})]})]}),os&&e.jsxs("div",{className:"s-term-home-error",children:[e.jsx("span",{children:"Terminal registry unavailable"}),e.jsx("code",{children:os})]}),pe&&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:pe})]}),(Y.length>0||g)&&e.jsxs("div",{className:"s-term-workspace-grid","aria-label":"Terminal tiles",style:{"--terminal-grid-columns":Le},onContextMenu:ot,children:[Y.map(n=>e.jsx("div",{className:`s-term-workspace-cell${he===n.id?" s-term-workspace-cell--dragging":""}${Bs===n.id||M===n.id?" s-term-workspace-cell--drop-target":""}`,"data-terminal-tile-id":n.id,onPointerDownCapture:a=>ct(a,n.id),onPointerMove:dt,onPointerUp:us,onPointerCancel:us,onContextMenu:a=>lt(a,n),children:e.jsx(Ln,{tile:n,navigate:s,onClose:De,resolution:mt.get(n.id)??null,onRevive:pt,live:vn(n,E.sessions)})},`${n.id}:${B}`)),g&&e.jsxs("button",{type:"button",className:`s-term-workspace-add-cell${_?" s-term-workspace-add-cell--target":""}`,onClick:()=>W(!0),children:[e.jsx(te,{size:20,strokeWidth:1.7}),e.jsx("strong",{children:"New slot"}),e.jsx("span",{children:k?"Drop to add":"Drag a terminal here"})]})]}),e.jsxs("section",{className:`s-term-picker${g?"":" s-term-picker--collapsed"}`,"aria-labelledby":"terminal-picker-title",onPointerDownCapture:n=>{const a=n.target;if(!(a instanceof Element))return;const u=a.closest("[data-picker-item-id]")?.dataset.pickerItemId,p=V.find(y=>y.id===u);p&&tt(n,p)},onPointerMove:nt,onPointerUp:rt,onPointerCancel:at,children:[e.jsxs("header",{className:"s-term-picker-head",children:[e.jsxs("div",{className:"s-term-picker-title",children:[e.jsx(K,{size:14,strokeWidth:1.8}),e.jsx("h2",{id:"terminal-picker-title",children:"Terminal picker"}),e.jsx("span",{children:E.state==="loading"?"syncing":V.length})]}),e.jsxs("div",{className:"s-term-picker-actions",children:[g&&e.jsx("div",{className:"s-term-picker-views",role:"group","aria-label":"Picker view",children:["list","table"].map(n=>e.jsx("button",{type:"button",className:F===n?"is-selected":"",onClick:()=>ne(n),"aria-pressed":F===n,children:n==="list"?"List":"Table"},n))}),g&&e.jsxs("button",{type:"button",className:"s-term-workspace-action",onClick:it,disabled:V.length===0,children:[e.jsx(Ds,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Attach all"})]}),e.jsxs("button",{type:"button",className:"s-term-picker-toggle",onClick:()=>W(n=>!n),"aria-expanded":g,children:[e.jsx("span",{children:g?"Hide":"Show terminal picker"}),e.jsx("span",{"aria-hidden":"true",children:g?"⌄":"⌃"})]})]})]}),g&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"s-term-picker-hint",children:"Drag a terminal onto a cell to place it, or onto New slot to grow the grid."}),V.length===0&&E.state!=="loading"?e.jsx("div",{className:"s-term-picker-empty",children:"No live terminals"}):e.jsx(Ks,{items:V,view:F,sort:re,attachedIds:st,draggedTargetId:k,onSort:ps,onAttach:et})]})]})]})})}function En({workspaces:s,sessionsReady:t,onOpen:r,onCreate:i,onEdit:c,onDelete:m}){return e.jsx("div",{className:"s-term s-term--workspace-library",children:e.jsxs("main",{className:"s-term-workspace-library",children:[e.jsxs("header",{className:"s-term-workspace-library-head",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"s-term-summary-mark",children:[e.jsx(de,{size:18,strokeWidth:1.7}),e.jsx("span",{children:"Terminals"})]}),e.jsx("h1",{children:"Workspaces"}),e.jsx("p",{children:"Saved terminal layouts for projects, roles, and cross-project operations."})]}),e.jsxs("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:i,children:[e.jsx(te,{size:14,strokeWidth:1.9}),e.jsx("span",{children:"New workspace"})]})]}),s.length===0?e.jsxs("section",{className:"s-term-workspace-library-empty",children:[e.jsx(de,{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:i,children:[e.jsx(te,{size:14,strokeWidth:1.9}),e.jsx("span",{children:"Create workspace"})]})]}):e.jsx("div",{className:"s-term-workspace-library-grid",children:s.map(d=>e.jsxs("article",{className:"s-term-workspace-card",children:[e.jsx("div",{className:"s-term-workspace-card-preview",style:{"--terminal-grid-columns":d.columns??Pe},children:d.tiles.map(h=>e.jsx("span",{className:h.kind==="registered"?"is-session":"is-shell"},h.id))}),e.jsxs("div",{className:"s-term-workspace-card-copy",children:[e.jsxs("span",{children:[d.columns??Pe," column",(d.columns??Pe)===1?"":"s"," · ",d.tiles.length," cells"]}),e.jsx("h2",{children:d.name}),e.jsx("p",{children:d.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:()=>c(d),children:"Edit"}),e.jsx("button",{type:"button",className:"s-term-workspace-action",onClick:()=>m(d.id),children:"Delete"}),e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>r(d),disabled:!t,children:"Enter workspace"})]})]},d.id))})]})})}function Be(s,t){return s==="solo"?1:s==="lanes"?Math.max(2,Math.min(4,t)):Math.max(2,Math.min(3,t))}function Wn(s,t){return s==="solo"?1:s==="lanes"?Be(s,t):Be(s,t)*2}function An({editing:s,name:t,purpose:r,modes:i,layout:c,startOptions:m,cells:d,selectedSlot:h,terminalItems:o,onNameChange:x,onPurposeChange:b,onApplyMode:S,onColumnsChange:C,onSelectSlot:L,onAddCell:z,onRemoveCell:N,pickerView:j,pickerSort:I,onPickerView:A,onPickerSort:$,onAssignFresh:T,onAssignRegistered:R,onCancel:E,onSave:q}){const B=Re(c,{tileCount:d.length});return e.jsx("div",{className:"s-term s-term--workspace-builder",children:e.jsxs("main",{className:"s-term-workspace-builder",children:[e.jsxs("header",{className:"s-term-workspace-builder-head",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"s-term-summary-mark",children:[e.jsx(de,{size:18,strokeWidth:1.7}),e.jsx("span",{children:"Workspace builder"})]}),e.jsx("h1",{children:s?"Edit workspace":"Create a workspace"}),e.jsx("p",{children:"Define the job, choose the grid, and place the sessions before entering."})]}),e.jsxs("div",{className:"s-term-workspace-builder-actions",children:[e.jsx("button",{type:"button",className:"s-term-workspace-action",onClick:E,children:"Cancel"}),e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:q,disabled:!t.trim(),children:s?"Save and enter":"Create and enter"})]})]}),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:t,onChange:f=>x(f.target.value),placeholder:"Release desk",autoFocus:!0})]}),e.jsxs("label",{children:[e.jsx("span",{children:"Purpose"}),e.jsx("input",{value:r,onChange:f=>b(f.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:[zt(c)," · ",d.length," cell",d.length===1?"":"s"]})]}),e.jsx("div",{className:"s-term-grid-presets","aria-label":"Workspace layout",children:i.map(f=>e.jsxs("button",{type:"button",className:`s-term-grid-preset${f.mode===c.mode?" s-term-grid-preset--selected":""}`,onClick:()=>S(f),"aria-pressed":f.mode===c.mode,children:[e.jsx("span",{className:"s-term-grid-preset-map",style:{"--terminal-preset-columns":Be(f.mode,B)},"aria-hidden":"true",children:Array.from({length:Wn(f.mode,B)},(g,W)=>e.jsx("i",{},W))}),e.jsx("span",{className:"s-term-grid-preset-label",children:f.label}),e.jsx("span",{className:"s-term-grid-preset-detail",children:f.detail})]},f.mode))}),c.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:c.columns==="dynamic"||c.columns===void 0?"is-selected":"",onClick:()=>C("dynamic"),"aria-pressed":c.columns==="dynamic"||c.columns===void 0,title:"Fit the columns to the number of tiles",children:"Dynamic"}),Array.from({length:Qe},(f,g)=>e.jsx("button",{type:"button",className:c.columns===g+1?"is-selected":"",onClick:()=>C(g+1),"aria-pressed":c.columns===g+1,children:g+1},g)),(c.columns==="dynamic"||c.columns===void 0)&&e.jsxs("em",{children:[B," 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":B},children:[d.map((f,g)=>{const W=f.kind==="registered"?o.find(F=>F.session.id===f.terminalSessionId&&Ue(U(F.surface),f.terminalSurfaceKey)):null;return e.jsxs("div",{className:`s-term-workspace-builder-cell${h===g?" is-selected":""}`,children:[e.jsxs("button",{type:"button",className:"s-term-workspace-builder-cell-select",onClick:()=>L(g),"aria-pressed":h===g,children:[e.jsx("span",{children:String(g+1).padStart(2,"0")}),e.jsx(K,{size:17,strokeWidth:1.7}),e.jsx("strong",{children:f.kind==="registered"?W?.title??"Unavailable session":ns(f.backend,f.agent).title}),e.jsx("small",{children:f.kind==="registered"?W?.cwdLabel||W?.detail:f.backend})]}),d.length>1&&e.jsx("button",{type:"button",className:"s-term-workspace-builder-cell-remove",onClick:()=>N(g),title:"Remove this cell","aria-label":`Remove cell ${g+1}`,children:e.jsx(ue,{size:13,strokeWidth:1.9})})]},f.id)}),e.jsxs("button",{type:"button",className:"s-term-workspace-builder-cell s-term-workspace-builder-cell--add",onClick:z,children:[e.jsx(te,{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(h+1).padStart(2,"0")]}),e.jsx("h3",{children:"Start something new"}),e.jsxs("div",{className:"s-term-workspace-builder-source-actions",children:[kn.map(f=>e.jsx("button",{type:"button",onClick:()=>T("pty",f.value),children:f.label},f.value)),m.filter(f=>f.value!=="pty").map(f=>e.jsxs("button",{type:"button",onClick:()=>T(f.value,"shell"),title:f.relayAttach?f.detail:`${f.detail} — Scout starts it; open it in ${f.label} to use it`,children:[f.label,!f.relayAttach&&e.jsx("sup",{"aria-label":"opens outside Scout",children:" ↗"})]},f.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(f=>e.jsx("button",{type:"button",className:j===f?"is-selected":"",onClick:()=>A(f),"aria-pressed":j===f,children:f==="list"?"List":"Table"},f))})]}),e.jsx("div",{className:"s-term-workspace-builder-sessions",children:o.length===0?e.jsx("span",{className:"s-term-workspace-builder-no-sessions",children:"No live sessions"}):e.jsx(Ks,{items:o,view:j,sort:I,attachedIds:new Set,draggedTargetId:null,onSort:$,onAttach:f=>{const g=o.find(W=>W.session.id===f.session.id&&W.surface.sessionName===f.surface.sessionName);g&&R(g)}})})]})]})]})]})})}function Mn({item:s,attached:t,dragging:r,onAttach:i}){return e.jsxs("article",{className:`s-term-picker-item${t?" s-term-picker-item--attached":""}${r?" s-term-picker-item--dragging":""}`,"data-picker-item-id":s.id,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:zs(s)}),e.jsx("span",{title:s.session.cwd??void 0,children:s.project})]}),e.jsx("button",{type:"button",className:"s-term-picker-add",onClick:()=>i(G(s)),disabled:t,children:t?"In grid":"Add"})]})}function Ks({items:s,view:t,sort:r,attachedIds:i,draggedTargetId:c,onSort:m,onAttach:d}){const h=l.useMemo(()=>Ct(s,r),[s,r]);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:[Tt.map(o=>e.jsx("th",{scope:"col","aria-sort":r.column===o.id?r.direction==="asc"?"ascending":"descending":"none",children:e.jsxs("button",{type:"button",onClick:()=>m(o.id),children:[e.jsx("span",{children:o.label}),e.jsx("em",{"aria-hidden":"true",children:r.column===o.id?r.direction==="asc"?"▲":"▼":"·"})]})},o.id)),e.jsx("th",{scope:"col","aria-label":"Place"})]})}),e.jsx("tbody",{children:h.map(o=>{const x=Ee(G(o)),b=It(o);return e.jsxs("tr",{"data-picker-item-id":o.id,className:i.has(x)?"is-attached":void 0,children:[e.jsx("td",{title:o.surface.sessionName,children:o.title}),e.jsx("td",{children:o.surface.backend}),e.jsx("td",{children:zs(o)}),e.jsx("td",{title:o.session.cwd??void 0,children:o.project}),e.jsx("td",{children:b?Wt(b):"—"}),e.jsx("td",{children:e.jsx("button",{type:"button",className:"s-term-picker-add",onClick:()=>d(G(o)),disabled:i.has(x),children:i.has(x)?"In grid":"Add"})})]},o.id)})})]})}):e.jsx("div",{className:"s-term-picker-list","aria-label":"Available terminals",children:h.map(o=>{const x=Ee(G(o));return e.jsx(Mn,{item:o,attached:i.has(x),dragging:c===x,onAttach:d},o.id)})})}function Ln({tile:s,navigate:t,onClose:r,resolution:i,onRevive:c,live:m=!1}){if(s.kind==="registered")return e.jsx(On,{tile:s,navigate:t,onClose:r});if(s.kind==="unavailable"){const d=i?.status==="revivable"&&!!c;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(K,{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:()=>r(s.id),title:"Remove cell","aria-label":"Remove cell",children:e.jsx(ue,{size:14,strokeWidth:1.8})})})]}),e.jsxs("div",{className:"s-term-workspace-unavailable-body",children:[e.jsx(K,{size:22,strokeWidth:1.5}),e.jsx("strong",{children:d?"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."}),d&&e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>c?.(s.id),children:"Start it again"})]})]})}return!Ms(s.backend)&&s.backend!=="pty"?e.jsx(Dn,{tile:s,onClose:r,live:m}):e.jsx(zn,{tile:s,navigate:t,onClose:r})}function Dn({tile:s,onClose:t,live:r}){const{hosts:i}=es(),c=rn(i,s.backend),[m,d]=l.useState("idle"),[h,o]=l.useState(null),x=l.useCallback(()=>{s.sessionName&&(d("starting"),o(null),ln(s.backend,{sessionName:s.sessionName}).then(()=>d("idle")).catch(b=>{d("failed"),o(b instanceof Error?b.message:String(b))}))},[s.backend,s.sessionName]);return e.jsxs("section",{className:"s-term-workspace-tile s-term-workspace-tile--hosted","aria-label":`${c?.label??s.backend} 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(K,{size:14,strokeWidth:1.8})}),e.jsx("span",{className:"s-term-workspace-tile-name",children:c?.label??s.backend})]}),e.jsx("div",{className:"s-term-bar-meta",children:e.jsx("span",{className:"s-term-label",children:r?"running":"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:()=>t(s.id),title:"Remove cell","aria-label":"Remove cell",children:e.jsx(ue,{size:14,strokeWidth:1.8})})})]}),e.jsxs("div",{className:"s-term-workspace-unavailable-body",children:[e.jsx(K,{size:22,strokeWidth:1.5}),e.jsx("strong",{children:r?`Running in ${c?.label??s.backend}`:"Not running yet"}),e.jsx("span",{children:r?`Scout keeps this session for you. Open it in ${c?.label??s.backend} to use it.`:`Scout can start a ${c?.label??s.backend} session and keep it for you.`}),!r&&e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:x,disabled:m==="starting"||!s.sessionName,children:m==="starting"?"Starting…":"Start it"}),h&&e.jsx("code",{children:h})]})]})}function zn({tile:s,navigate:t,onClose:r}){const i=l.useRef(null),c=qe(),m=He(),d=ns(s.backend,s.agent),h=Tn(s),o=["scout-terminal-workspace",s.id,s.backend,s.agent,s.sessionName??"pty"].join("-"),x=Je({url:c,healthUrl:m,autoConnect:!0,sessionKey:o,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}:{},agent:s.agent,controlMode:"takeover"});ce(()=>{x.resize(Ve,Ye)},[x.resize]);const b=l.useCallback(()=>{h&&Us(h,t)},[t,h]);return e.jsx("section",{className:"s-term-workspace-tile","aria-label":d.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(K,{size:14,strokeWidth:1.8})}),e.jsx("span",{className:"s-term-workspace-tile-name",children:d.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:d.detail})]}),e.jsxs("div",{className:"s-term-bar-actions",children:[e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:()=>x.restart(),title:"Restart terminal","aria-label":"Restart terminal",children:e.jsx(Ge,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:b,title:"Open terminal in a new window","aria-label":"Open terminal in a new window",children:e.jsx(Ps,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>r(s.id),title:"Close tile","aria-label":"Close tile",children:e.jsx(ue,{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(ss,{relay:x,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:c},{label:"health",value:m}]})})]})})}function On({tile:s,navigate:t,onClose:r}){const i=l.useCallback(()=>{Us(In(s.target),t)},[t,s.target]);return e.jsx("section",{className:"s-term-workspace-tile","aria-label":s.target.surface.sessionName,children:e.jsx(ts,{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(Ps,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>r(s.id),title:"Close tile","aria-label":"Close tile",children:e.jsx(ue,{size:14,strokeWidth:1.8})})]})})})}function Pn(s){return[...s].filter(t=>!t.retiredFromFleet).sort((t,r)=>{const i=+!!Ce(r)-+!!Ce(t);if(i!==0)return i;const c=(r.updatedAt??0)-(t.updatedAt??0);return c!==0?c:t.name.localeCompare(r.name)})}function _n({route:s,navigate:t}){const r=l.useRef(null),i=s.terminalBackend??"pty",c=s.terminalAgent??"shell",m=s.terminalTabId??"adhoc",d=i==="pty"?void 0:`scout-${i}-${m}`,h=s.terminalSessionName??d,o=qe(),x=He(),b=ns(i,c),S=["scout-terminal-new",i,c,h??m].join("-"),C=Je({url:o,healthUrl:x,autoConnect:!0,sessionKey:S,backend:i,...h?{terminalSession:h}:{},...i==="tmux"&&h?{tmuxSession:h}:{},...i==="zellij"&&h?{zellijSession:h}:{},...i==="zellij"&&s.zellijSocketDir?{zellijSocketDir:s.zellijSocketDir}:{},agent:c,controlMode:"takeover"}),L=l.useRef([]),z=l.useRef({status:C.status,sendLine:C.sendLine});return z.current={status:C.status,sendLine:C.sendLine},ce(()=>{const N=j=>{const I=hn(j);if(!I)return;const A=z.current;if(A.status==="connected"){A.sendLine(I);return}L.current=[...L.current.slice(-15),I]};return window.addEventListener(Ns,N),()=>window.removeEventListener(Ns,N)},[]),ce(()=>{if(C.status!=="connected"||L.current.length===0)return;const N=L.current;L.current=[];for(const j of N)C.sendLine(j)},[C.sendLine,C.status]),ce(()=>{C.resize(Ve,Ye)},[C.resize]),e.jsxs("div",{className:"s-term",children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsx(me,{slot:"terminal",fallback:{view:"terminal"},navigate:t,className:"s-term-back"}),e.jsx("span",{className:"s-term-label",children:b.title}),e.jsx("div",{className:"s-term-status",children:b.detail}),e.jsx("div",{className:"s-term-actions",children:e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:()=>C.restart(),title:"Restart terminal","aria-label":"Restart terminal",children:e.jsx(Ge,{size:14,strokeWidth:1.8})})})]}),e.jsx("div",{ref:r,className:"s-term-body",onMouseDown:()=>{r.current?.querySelector(".xterm-helper-textarea")?.focus(),r.current?.querySelector(".xterm")?.focus()},children:e.jsx(ss,{relay:C,quiet:!0,configItems:[{label:"backend",value:i},{label:"agent",value:c},...h?[{label:"session",value:h}]:[],...s.zellijSocketDir?[{label:"socket",value:s.zellijSocketDir}]:[],{label:"ws",value:o},{label:"health",value:x}]})})]})}function ns(s,t){const r=t==="shell"?"Shell":t==="codex"?"Codex":t==="pi"?"Pi":"Claude";return s==="pty"?{title:r,detail:"fresh PTY tab"}:{title:`${r} ${s}`,detail:`fresh ${s} backed tab`}}function $n({agentId:s,agent:t,mode:r,navigate:i,children:c}){const m=jn(s,t,r);return m.ready?e.jsx(e.Fragment,{children:c}):e.jsx(Sn,{agent:t,agentId:s,color:Is(t.name),navigate:i,label:m.label,status:m.status,onRetry:m.onRetry})}function Fn({navigate:s}){return e.jsx("div",{className:"s-term",children:e.jsxs("div",{className:"s-term-bar",children:[e.jsx(me,{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 Un({route:s,navigate:t}){const{agentId:r,mode:i,terminalSessionId:c,terminalSurfaceKey:m}=s,{agents:d}=Os();if(s.terminalBackend)return e.jsx(_n,{route:s,navigate:t});if(!r)return!c&&!m?e.jsx(Rn,{navigate:t}):e.jsx(wn,{terminalSessionId:c,terminalSurfaceKey:m,mode:i,navigate:t});const h=d.find(b=>b.id===r)??null;if(!h)return e.jsx(Fn,{navigate:t});const o=Ce(h),x=o?`${o.backend}:${h.id}:${o.sessionName}:${i??"takeover"}`:`takeover:${r}:${i??"takeover"}`;return e.jsx($n,{agentId:r,agent:h,mode:i,navigate:t,children:e.jsx(ts,{agentId:r,agent:h,mode:i,navigate:t})},x)}function Ur({agentId:s,mode:t,terminalSessionId:r,terminalSurfaceKey:i,navigate:c}){const m={view:"terminal",agentId:s,mode:t,terminalSessionId:r,terminalSurfaceKey:i};return e.jsx(Un,{route:m,navigate:c})}export{Un as TerminalContent,Ur as TerminalScreen};
@@ -1 +0,0 @@
1
- import{r as e,j as l,a as A,b as C,S as k}from"./index-DMiGbrBt.js";import{C as y}from"./ContextMenu-bARZqTzD.js";import{a as T}from"./api-h5zurxmi.js";import{L,D as x,f as R,S as P}from"./Provider-C7UKGHQy.js";import{i as I}from"./colors-BtO5_zlx.js";import{r as j,a as D}from"./router-Bq5dwf78.js";import{TerminalContent as H}from"./Terminal-CqvGbjXU.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./time-DltNTpLl.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./terminal-sessions-D5CIR2OL.js";/* empty css */import"./clipboard-e3fSpeo7.js";import"./terminal-relay-CWbJ1RCW.js";import"./session-table-DZcrKoIH.js";import"./chunk-YOZR3KYS-Bet8khjg.js";import"./arrow-down-BPLe0am9.js";import"./terminal-takeover-B8UeD9OX.js";import"./BackToPicker-BRvfostO.js";import"./TmuxPeek-m1osv33Q.js";/* empty css */import"./refresh-cw-BBmAnCB7.js";import"./plus--b1raV_O.js";import"./terminal-B9AOZQKR.js";import"./eye-0PvebX_a.js";import"./external-link-CXBytO9o.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 Fe(){const[o,t]=e.useState(()=>g()),s=!!(o.terminalBackend||o.agentId||o.terminalSessionId||o.terminalSurfaceKey);e.useEffect(()=>{const n=()=>t(g());return window.addEventListener("popstate",n),()=>window.removeEventListener("popstate",n)},[]);const i=e.useCallback(n=>{if(n.view!=="terminal"){const p={view:"terminal"},a=S(p);window.history.pushState(null,"",a),t(p);return}const c=S(n);window.history.pushState(null,"",c),t(n)},[]);return l.jsx(M,{route:o,navigate:i,children:l.jsx("div",{className:`s-terminal-embed${s?" s-terminal-embed--surface":""}`,children:l.jsx(H,{route:o,navigate:i})})})}function M({route:o,navigate:t,children:s}){const[i,n]=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"?L:x,...f??{}}),[u,f]),h=e.useCallback(()=>{p({status:"online",message:null,lastCheckedAt:Date.now()})},[]),w=e.useCallback(r=>{p({status:"offline",message:R(r),lastCheckedAt:Date.now()})},[]),m=e.useCallback(async()=>{if(a.current)return a.current;const r=(async()=>{try{n(await T("/api/agents")),h()}catch(d){w(d)}})();a.current=r;try{await r}finally{a.current=null}},[w,h]);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(()=>i.filter(r=>I(r.state)).length,[i]),E=e.useMemo(()=>({route:o,navigate:t,agents:i,agentsLoaded:c.status!=="checking",onlineCount:v,apiConnection:c,appearanceDetails:k,updateAppearanceDetails:()=>{},reload:m,onboarding: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:()=>{}}),[i,c,t,v,m,o]);return l.jsx(P.Provider,{value:E,children:l.jsx("div",{"data-scout-theme":u,"data-scout-theme-mode":u,style:b,children:l.jsx(y,{children:s})})})}export{Fe as TerminalEmbedScreen};
@@ -1 +0,0 @@
1
- import{a as c}from"./api-h5zurxmi.js";async function n(t){const i=t.conversationId?.trim();if(i)return i;const o=t.projectRoot?.trim()||t.cwd?.trim(),r=await c("/api/conversations/direct",{method:"POST",body:JSON.stringify({agentId:t.id,targetLabel:t.selector??t.defaultSelector??t.name,...o?{projectPath:o}:{}})}),e=r.chatId?.trim()??r.conversationId?.trim()??r.cId?.trim()??r.id?.trim();if(!e)throw new Error("Chat was created, but no chat id was returned.");return e}export{n as e};
@@ -1 +0,0 @@
1
- .s-lane-card{position:relative;display:flex;flex-direction:column;min-height:0;height:100%;background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 2%,transparent),color-mix(in srgb,var(--ink) .5%,transparent))}.s-lane-card--working{background:linear-gradient(180deg,color-mix(in srgb,var(--green) 2%,transparent),color-mix(in srgb,var(--ink) .5%,transparent))}.s-lane-card-hit{position:absolute;inset:0;z-index:1;appearance:none;border:0;padding:0;margin:0;background:transparent;cursor:pointer}@keyframes slc-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.03)}}@keyframes slc-blink{0%,90%,to{transform:scaleY(1)}95%{transform:scaleY(.12)}}@keyframes slc-shimmer{0%,to{opacity:.95}50%{opacity:.5}}.s-lane-card--working .s-lane-card-anchor--av{transform-origin:center;animation:slc-breathe 3.6s ease-in-out infinite}.s-lane-card--working .s-lane-card-anchor--av .sprite-cell--eye{transform-box:fill-box;transform-origin:center;animation:slc-blink 4.8s ease-in-out infinite}.s-lane-card--working .s-lane-card-anchor--av .sprite-cell--accent{animation:slc-shimmer 2.8s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.s-lane-card--working .s-lane-card-anchor--av,.s-lane-card--working .s-lane-card-anchor--av .sprite-cell--eye,.s-lane-card--working .s-lane-card-anchor--av .sprite-cell--accent{animation:none}}.s-agent-lanes--low-motion .s-lane-card--working .s-lane-card-anchor--av,.s-agent-lanes--low-motion .s-lane-card--working .s-lane-card-anchor--av .sprite-cell--eye,.s-agent-lanes--low-motion .s-lane-card--working .s-lane-card-anchor--av .sprite-cell--accent{animation:none}.s-lane-card-head{position:relative;display:flex;align-items:flex-start;gap:12px;padding:16px 16px 12px}.s-lane-card-anchor{position:relative;display:inline-flex;flex:none}.s-lane-card-ident{display:flex;flex-direction:column;gap:4px;flex:1 1 auto;min-width:0;padding-top:0}.s-lane-card-name{font-family:var(--font-sans);font-size:var(--text-2xl);line-height:18px;font-weight:600;letter-spacing:0;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.s-lane-card-meta{flex:0 1 auto;display:flex;align-items:flex-start;gap:8px;min-width:176px;max-width:62%;padding-top:0}.s-lane-card-anchor--hm{align-self:flex-start;margin-top:0}.s-lane-card-meta-lines{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:1 1 auto;min-width:0;text-align:right}.s-lane-card-meta-run{display:flex;align-items:center;justify-content:flex-end;gap:8px;width:100%;min-width:0;height:16px;font-family:var(--font-mono);font-size:var(--text-sm);line-height:16px}.s-lane-card-meta-model{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.s-lane-card-meta-effort{color:var(--dim);flex:none}.s-lane-card-meta-sid{display:inline-flex;align-items:center;justify-content:flex-end;gap:4px;width:100%;height:16px;font-family:var(--font-mono);font-size:var(--text-2xs);line-height:16px;color:var(--dim);min-width:0}.s-lane-card-meta-sid .s-lane-card-val{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.s-lane-card-sel{-webkit-user-select:text;user-select:text;cursor:text;position:relative;z-index:2}.s-lane-card-fieldc{position:relative;width:fit-content;max-width:100%;border-radius:var(--radius-sm);transition:background .11s ease}.s-lane-card-fieldc:hover{background:color-mix(in srgb,var(--ink) 4%,transparent)}.s-lane-card-fieldc:hover,.s-lane-card-fieldc:focus-within{z-index:2}.s-lane-card-fieldc--trail{padding-right:22px;margin-right:-22px}.s-lane-card-fieldc--lead{padding-left:22px;margin-left:-22px}.s-lane-card-modelwrap{display:inline-flex;align-items:center;min-width:0}.s-lane-card-copydot{position:absolute;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:0;border:0;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--muted);cursor:pointer;opacity:0;pointer-events:none;transition:opacity .11s ease,color .11s ease,background .11s ease;z-index:3}.s-lane-card-copydot--trail{right:3px}.s-lane-card-copydot--lead{left:3px}.s-lane-card-fieldc:hover>.s-lane-card-copydot,.s-lane-card-fieldc:focus-within>.s-lane-card-copydot{opacity:1;pointer-events:auto}.s-lane-card-copydot:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 16%,transparent)}.s-lane-card-copydot:focus-visible{outline:none;opacity:1;pointer-events:auto;box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 55%,transparent)}.s-lane-card-copydot--done,.s-lane-card-copydot--done:hover{opacity:1;pointer-events:auto;color:var(--green);background:color-mix(in srgb,var(--green) 20%,transparent)}.s-lane-card-copydot svg{display:block}@media(prefers-reduced-motion:reduce){.s-lane-card-copydot{transition:none}}.s-lane-card-namebox{display:inline-flex;align-items:center;gap:6px;min-width:0}.s-lane-card-authority{flex:none;border:1px solid color-mix(in srgb,var(--amber) 42%,transparent);border-radius:999px;padding:1px 5px 0;font-family:var(--font-mono);font-size:var(--text-3xs);line-height:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--amber);background:color-mix(in srgb,var(--amber) 8%,transparent);cursor:help;position:relative;z-index:3}.s-lane-card-d{display:inline-flex;align-items:center;gap:4px;min-width:0;height:16px;font-family:var(--font-mono);font-size:var(--text-sm);line-height:16px;color:var(--muted)}.s-lane-card-d .s-lane-card-val{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.s-lane-card-d--strong{color:var(--ink)}.s-lane-card-gmark{color:var(--dim);flex:none}.s-lane-card-gchar{color:var(--dim);flex:none;font-size:var(--text-sm);line-height:1}.s-lane-card-hmark{color:var(--muted);display:inline-flex;flex:none;transition:color .2s ease}.s-lane-card--working .s-lane-card-hmark{color:var(--ink)}.s-lane-card-time{font-family:var(--font-mono);font-size:var(--text-xs);line-height:16px;color:var(--dim)}.s-lane-card-caret{flex:none;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin:-2px -6px -2px 0;border:0;background:transparent;color:var(--dim);border-radius:var(--radius-sm);cursor:pointer;transition:color .14s ease,background .14s ease}.s-lane-card-caret:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 6%,transparent)}.s-lane-card-caret svg{transition:transform .16s ease}.s-lane-card--collapsed .s-lane-card-caret svg{transform:rotate(-90deg)}.s-lane-card-meta-foot{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:flex-end;gap:8px;width:100%;height:16px;margin-top:0}.s-lane-card-meta-foot .s-lane-card-time{display:inline-flex;align-items:center;gap:6px}.s-lane-card-time-dot{width:4px;height:4px;border-radius:50%;background:color-mix(in srgb,var(--ink) 28%,transparent)}.s-lane-card--working .s-lane-card-time-dot{background:var(--green);box-shadow:0 0 0 2px color-mix(in srgb,var(--green) 18%,transparent);animation:slc-dot-pulse 2.4s ease-in-out infinite}@keyframes slc-dot-pulse{0%,to{box-shadow:0 0 0 2px color-mix(in srgb,var(--green) 18%,transparent)}50%{box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 7%,transparent)}}@media(prefers-reduced-motion:reduce){.s-lane-card--working .s-lane-card-time-dot{animation:none}}.s-agent-lanes--low-motion .s-lane-card--working .s-lane-card-time-dot{animation:none}.s-lane-card-summary{flex:none;--lane-screen: color-mix(in srgb, #000 30%, var(--bg));margin:0 16px 12px;padding:8px 12px;border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:var(--radius-sm);background:var(--lane-screen);display:flex;flex-direction:column;justify-content:center;gap:8px;min-height:48px}.s-lane-card--working .s-lane-card-summary{border-color:color-mix(in srgb,var(--green) 11%,color-mix(in srgb,var(--ink) 10%,transparent))}[data-scout-theme-mode=light] .s-lane-card-summary{--lane-screen: color-mix(in srgb, var(--ink) 5%, var(--bg))}.s-lane-card-current{display:flex;gap:8px;font-size:var(--text-md);line-height:16px;color:var(--ink)}.s-lane-card-prompt{flex:none;font-family:var(--font-mono);font-weight:600;line-height:16px;color:color-mix(in srgb,var(--accent) 72%,var(--muted))}.s-lane-card-current--console .s-lane-card-head-text{font-family:var(--font-mono);font-size:var(--text-md);letter-spacing:0;color:color-mix(in srgb,var(--ink) 92%,transparent)}.s-lane-card-headwrap{position:relative;flex:1 1 auto;min-width:0;z-index:2}.s-lane-card-headpop{position:absolute;left:0;top:calc(100% + 6px);z-index:20;min-width:240px;max-width:min(420px,90vw);max-height:280px;overflow:auto;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--ink) 14%,transparent);background:color-mix(in srgb,#000 38%,var(--surface));box-shadow:0 10px 28px color-mix(in srgb,#000 48%,transparent);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-md);line-height:1.5;white-space:pre-wrap;word-break:break-word;opacity:0;transform:translateY(-3px);pointer-events:none;transition:opacity .12s ease,transform .12s ease}.s-lane-card-current--console .s-lane-card-headpop{font-family:var(--font-mono);font-size:var(--text-md)}.s-lane-card-headwrap:hover .s-lane-card-headpop,.s-lane-card-headwrap:focus-within .s-lane-card-headpop{opacity:1;transform:translateY(0);pointer-events:auto}.s-lane-card-head-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.s-lane-card-dir{font-family:var(--font-mono);flex:none;font-weight:600;color:var(--dim)}.s-lane-card-wait{display:inline-flex;align-items:center;gap:8px;font-size:var(--text-md);line-height:16px;color:var(--muted)}.s-lane-card-wait-dot{flex:none;width:5px;height:5px;border-radius:50%;background:color-mix(in srgb,var(--muted) 55%,transparent)}.s-lane-card-wait--working .s-lane-card-wait-dot{background:var(--accent);animation:s-lane-card-wait-pulse 1.4s ease-in-out infinite}.s-lane-card-wait-label{font-family:var(--font-mono);letter-spacing:.01em}@keyframes s-lane-card-wait-pulse{0%,to{opacity:.4;transform:scale(.82)}50%{opacity:1;transform:scale(1.12)}}@media(prefers-reduced-motion:reduce){.s-lane-card-wait--working .s-lane-card-wait-dot{animation:none;opacity:.9}}.s-lane-card-accs{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 16px 12px;min-height:24px}.s-lane-card-accs-tools,.s-lane-card-vitals{display:flex;flex-wrap:wrap;align-items:center}.s-lane-card-accs-tools{gap:6px}.s-lane-card-vitals{gap:14px;margin-left:auto}.s-lane-card-accs-empty{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:0;color:var(--dim);opacity:.65}.s-lane-card-accs-tools .s-lane-card-instr{padding:3px 8px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--ink) 4%,transparent);transition:background .11s ease}.s-lane-card-accs-tools .s-lane-card-instr--pop:hover{background:color-mix(in srgb,var(--ink) 9%,transparent)}.s-lane-card-accs-tools .s-lane-card-instr--pop .s-lane-card-instr-val{text-decoration:none}.s-lane-card-cockpit-tokens{flex:none;margin:-4px 16px 10px}.s-lane-card-cockpit-tokens-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 2px 7px}.s-lane-card-cockpit-tokens-label{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-sans);font-size:var(--text-xs);color:var(--muted)}.s-lane-card-cockpit-tokens-mark{font-size:var(--text-sm);line-height:1;color:color-mix(in srgb,var(--ink) 55%,transparent)}.s-lane-card-cockpit-tokens-hint{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink);font-variant-numeric:tabular-nums}.s-lane-card-cockpit-dials{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;border:1px solid color-mix(in srgb,var(--ink) 8%,transparent);border-radius:7px;overflow:hidden;background:color-mix(in srgb,var(--ink) 8%,transparent)}.s-lane-card-cockpit-dial{display:flex;flex-direction:column;gap:var(--space-3xs);padding:var(--space-sm) var(--space-md);min-width:0;min-height:52px;background:color-mix(in srgb,#000 30%,var(--bg))}.s-lane-card-cockpit-dial-value{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.s-lane-card-cockpit-dial-label{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-sm);text-transform:lowercase;color:var(--dim)}.s-lane-card-cockpit-files{flex:none;margin:-4px 16px 10px}.s-lane-card-cockpit-files-list{display:flex;flex-direction:column;gap:1px;border:1px solid color-mix(in srgb,var(--ink) 8%,transparent);border-radius:7px;overflow:hidden;background:color-mix(in srgb,var(--ink) 8%,transparent)}.s-lane-card-cockpit-file{display:flex;align-items:baseline;gap:var(--space-sm);padding:5px var(--space-md);min-width:0;background:color-mix(in srgb,#000 30%,var(--bg));font-family:var(--font-mono);font-size:var(--text-2xs)}.s-lane-card-cockpit-file-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.s-lane-card-cockpit-file--more{color:var(--dim)}.s-lane-card-instr{position:relative;display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);line-height:1}.s-lane-card-instr-val{font-size:var(--text-sm);color:var(--ink);font-variant-numeric:tabular-nums}.s-lane-card-instr-label{font-size:var(--text-2xs);letter-spacing:.04em;text-transform:lowercase;color:var(--dim)}.s-lane-card-instr--ctx{gap:6px}.s-lane-card-instr--ctx-pending .s-lane-card-instr-val{color:var(--dim)}.s-lane-card-instr--ctx-pending .s-lane-card-gauge{opacity:.55}.s-lane-card-gauge{position:relative;width:34px;height:4px;border-radius:2px;background:color-mix(in srgb,var(--ink) 12%,transparent);overflow:hidden}.s-lane-card-gauge-fill{position:absolute;inset:0 auto 0 0;height:100%;border-radius:2px;background:var(--accent)}.s-lane-card-instr--pop{z-index:2;cursor:default}.s-lane-card-instr--pop .s-lane-card-instr-val{text-decoration:underline;text-decoration-style:dotted;text-decoration-color:color-mix(in srgb,var(--ink) 28%,transparent);text-underline-offset:3px}.s-lane-card-pop{position:absolute;left:0;top:calc(100% + 8px);z-index:20;display:flex;flex-direction:column;gap:5px;min-width:210px;max-width:320px;max-height:260px;overflow:auto;padding:8px 10px;border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--ink) 14%,transparent);background:color-mix(in srgb,#000 38%,var(--surface));box-shadow:0 10px 28px color-mix(in srgb,#000 48%,transparent);opacity:0;transform:translateY(-6px);pointer-events:none;transition:opacity .15s ease,transform .17s cubic-bezier(.22,1,.36,1)}.s-lane-card-instr--pop:hover .s-lane-card-pop,.s-lane-card-instr--pop:focus-within .s-lane-card-pop{opacity:1;transform:translateY(0);pointer-events:auto}@media(prefers-reduced-motion:reduce){.s-lane-card-pop{transition:opacity .15s ease;transform:none}}.s-lane-card-pop-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}.s-lane-card-pop-count{color:var(--muted)}.s-lane-card-pop-list{display:flex;flex-direction:column;gap:3px}.s-lane-card-pop-row{display:flex;gap:8px;align-items:baseline;font-family:var(--font-mono);font-size:var(--text-sm);min-width:0}.s-lane-card-pop-mark{flex:none;width:26px;font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.04em;text-transform:uppercase;color:var(--dim)}.s-lane-card-pop-mark--mod,.s-lane-card-pop-mark--new{color:var(--muted)}.s-lane-card-pop-mark--tool{font-size:var(--text-sm);text-transform:none;color:color-mix(in srgb,var(--accent) 70%,var(--muted))}.s-lane-card-pop-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.s-lane-card-pop-more{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim);padding-left:34px}.s-lane-card-files{display:flex;flex-direction:column;gap:2px}.s-lane-card-file{display:flex;gap:8px;align-items:baseline;font-family:var(--font-mono);font-size:var(--text-sm);min-width:0}.s-lane-card-fstate{color:var(--dim);text-transform:uppercase;font-size:var(--text-2xs);letter-spacing:.04em;width:24px;flex:none}.s-lane-card-fstate--mod,.s-lane-card-fstate--new{color:var(--muted)}.s-lane-card-fpath{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.s-lane-card-fmore{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim);padding-left:32px}.s-lane-card>.s-agent-lane-trace{flex:1;min-height:0}.s-lane-card-gl{position:absolute;opacity:0;transition:opacity .16s ease;pointer-events:none;z-index:6}.s-lane-card-gl-t,.s-lane-card-gl-b{left:-600px;right:-600px;height:1px;background:repeating-linear-gradient(90deg,color-mix(in srgb,var(--ink) 26%,transparent) 0 3px,transparent 3px 6px)}.s-lane-card-gl-l,.s-lane-card-gl-r{top:-600px;bottom:-600px;width:1px;background:repeating-linear-gradient(0deg,color-mix(in srgb,var(--ink) 26%,transparent) 0 3px,transparent 3px 6px)}.s-lane-card-gl-t{top:0}.s-lane-card-gl-b{bottom:0}.s-lane-card-gl-l{left:0}.s-lane-card-gl-r{right:0}.s-lane-card-anchor--av:hover .s-lane-card-gl{opacity:1}.s-lane-card .s-agent-lane-body{position:relative;container-type:size;-webkit-mask-image:linear-gradient(to bottom,#000 0,#000 calc(100% - 56px),transparent 100%);mask-image:linear-gradient(to bottom,#000 0,#000 calc(100% - 56px),transparent 100%)}.s-lane-card--working .s-agent-lane-body:after{content:"";position:absolute;top:0;left:calc(var(--space-lg) + 64px);width:3px;height:18px;border-radius:3px;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--accent) 70%,transparent),transparent);filter:blur(.5px);pointer-events:none;z-index:1;will-change:transform,opacity;animation:slc-spine-flow 9s linear infinite}@keyframes slc-spine-flow{0%{transform:translate(-50%,-24px);opacity:0}8%{opacity:.9}92%{opacity:.9}to{transform:translate(-50%,100cqh);opacity:0}}@media(prefers-reduced-motion:reduce){.s-lane-card--working .s-agent-lane-body:after{animation:none;display:none}}
@@ -1 +0,0 @@
1
- import{p as g}from"./lane-observe-D0rfKDnU.js";import{o as m,a as w}from"./tail-display-BdyoLvzY.js";function x(e){const{agent:s,observe:t}=e,n=t?.metadata?.session,a=t?.events??[],i=t?.files??[];return{tools:a.filter(o=>o.kind==="tool").length,edits:a.filter(o=>o.kind==="tool"&&w(o.tool)).length,reads:a.filter(o=>o.kind==="tool"&&m(o.tool)).length,thinks:a.filter(o=>o.kind==="think").length,files:i.length,events:a.length,model:n?.model??s.model??null,branch:n?.gitBranch??s.branch??null,harness:s.harness??n?.adapterType??null,cwd:n?.cwd??s.cwd??s.projectRoot??null,sessionId:n?.externalSessionId??s.harnessSessionId??null,usage:t?.metadata?.usage??null}}function S(e,s=10){return!e||e.files.length===0?[]:g(e.files).sort((t,n)=>{const a=t.state==="read"?0:1,i=n.state==="read"?0:1;return a!==i?i-a:n.lastT-t.lastT}).slice(0,s)}function j(e,s=220){const t=e.summary?.trim()||e.body.trim()||e.rawText.trim();if(!t)return"";const n=t.replace(/\s+/g," ").trim();return n.length<=s?n:`${n.slice(0,Math.max(0,s-1)).trimEnd()}…`}function k(e){const s=e.replace(/\\/g,"/").replace(/\/+$/g,""),t=s.lastIndexOf("/");return t>=0?s.slice(t+1):s}function u(e){return e.toLowerCase().replace(/[^a-z0-9_/-]+/g," ").split(/\s+/).map(s=>s.trim()).filter(s=>s.length>=4).filter(s=>!["plan","plans","todo","work","task","docs","markdown"].includes(s)).slice(0,8)}function L(e,s){const{agent:t,observe:n,source:a}=s,i=n?.metadata?.session,o=[t.project,t.name,t.branch,t.harness,t.workspaceQualifier,t.harnessSessionId,i?.cwd,i?.gitBranch,i?.model,...n?.files.map(r=>r.path)??[],...n?.events.slice(-12).flatMap(r=>[r.arg,r.text,r.detail])??[]].filter(Boolean).join(" ").toLowerCase();if(!o)return 0;const c=e.path.toLowerCase(),f=k(c).toLowerCase(),d=e.title.toLowerCase();let l=0;e.agentId&&e.agentId===t.id&&(l+=10),e.agentName&&e.agentName===t.name&&(l+=6),e.workspaceName&&t.project&&e.workspaceName.toLowerCase()===t.project.toLowerCase()&&(l+=5),c&&o.includes(c)&&(l+=8),f&&o.includes(f)&&(l+=6),d.length>8&&o.includes(d)&&(l+=6);for(const r of e.tags)r.length>=3&&o.includes(r.toLowerCase())&&(l+=2);for(const r of u(e.title))o.includes(r)&&(l+=1);for(const r of e.steps.slice(0,8))for(const h of u(r.text).slice(0,3))o.includes(h)&&(l+=1);return a==="scout"&&e.source==="openscout"&&(l+=2),l}function p(e,s,t=4){return e.map(n=>({document:n,score:L(n,s)})).filter(n=>n.score>=t).sort((n,a)=>a.score-n.score||a.document.updatedAt-n.document.updatedAt)}function b(e,s,t=4){return p(e,s).filter(n=>n.document.steps.length>0).slice(0,t).map(n=>n.document)}function C(e,s,t=6){return p(e,s).filter(n=>n.document.steps.length===0).slice(0,t).map(n=>n.document)}function y(e,s,t={}){return{plans:b(e,s,t.plans??4),docs:C(e,s,t.docs??6)}}export{S as a,x as b,j as d,y as r};
@@ -1,47 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/xterm-BKR8oAkR.js","assets/index-DMiGbrBt.js","assets/index-DxGoC5l5.css","assets/addon-fit-BZ-kXjeN.js","assets/addon-webgl-D9-EQVEK.js"])))=>i.map(i=>d[i]);
2
- import{r as o,j as n,_ as Xe}from"./index-DMiGbrBt.js";import{n as Pt}from"./Provider-C7UKGHQy.js";import{c as Ct}from"./createLucideIcon-OpA4Amw5.js";import{A as Ft}from"./arrow-down-BPLe0am9.js";const Ht=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],Wt=Ct("arrow-up-down",Ht);const Vt=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],Ut=Ct("arrow-up",Vt);var xt=["terminal:ack"];function Tn(e={}){const{url:t="ws://localhost:3600",healthUrl:r,token:s,systemPrompt:a,cwd:i,workspaceFiles:u,autoConnect:k=!1,sessionKey:ae,orphanTTL:se,backend:G,controlMode:N="owner",tmuxSession:P,zellijSession:we,zellijSocketDir:ke,agent:Z,provider:ie,model:J,flowControl:je}=e,S=ae?`hudson.relay.${ae}`:null,$e=()=>{if(!S)return null;try{const d=localStorage.getItem(S);if(!d)return null;if(d.startsWith("{")){const p=JSON.parse(d);return typeof p.id!="string"?null:{id:p.id,reconnectToken:typeof p.reconnectToken=="string"?p.reconnectToken:null}}return{id:d,reconnectToken:null}}catch{return null}},g=o.useCallback((d,p=null)=>{if(S)try{d?localStorage.setItem(S,JSON.stringify({id:d,reconnectToken:p})):localStorage.removeItem(S)}catch{}},[S]),[ge,I]=o.useState("disconnected"),[Oe,ee]=o.useState(null),[Ne,w]=o.useState(null),[Ce,X]=o.useState(null),[A,Re]=o.useState(i||"~"),_=o.useRef(null),O=o.useRef(null),ce=o.useRef({cols:80,rows:24}),B=o.useRef(!1),Y=o.useRef([]),D=o.useRef(0),oe=o.useRef(0),he=o.useRef(0),F=o.useRef(A);F.current=A;const le=o.useRef(!1),be=o.useRef(null);le.current||(le.current=!0,be.current=$e());const v=o.useRef(be.current?.id??null),z=o.useRef(be.current?.reconnectToken??null),j=o.useRef(null),te=o.useRef(null),re=o.useRef(null),ne=o.useRef(new Set),$=je?.maxBufferedBytes??512*1024,T=o.useCallback(d=>{const p=_.current;p&&p.readyState===WebSocket.OPEN&&p.send(JSON.stringify(d))},[]),Ee=o.useCallback((d,p)=>{typeof d=="number"&&p===he.current&&T({type:"terminal:ack",seq:d})},[T]),R=o.useCallback(()=>{he.current+=1,Y.current=[],D.current=0},[]),q=o.useCallback((d,p=null)=>{const Q=he.current;if(!d){Ee(p,Q);return}let H=!1;const pe=()=>{H||(H=!0,Ee(p,Q))};if(j.current)try{j.current(d,pe)}catch{pe()}else for(Y.current.push({data:d,seq:p,ack:pe}),D.current+=d.length;D.current>$&&Y.current.length>0;){const W=Y.current.shift();if(!W)break;D.current-=W.data.length,W.ack()}if(ne.current.size>0)for(const W of ne.current)try{W(d)}catch{}},[Ee,$]),U=o.useCallback((d,p)=>{typeof d!="number"||typeof p!="number"||d<=0||p<=0||(re.current={cols:d,rows:p},te.current?.(d,p))},[]),ue=o.useCallback(()=>{const d=_.current;d&&(d.close(),_.current=null)},[]),l=o.useCallback(()=>{oe.current+=1,O.current&&(clearTimeout(O.current),O.current=null),ue(),B.current=!1,I("disconnected")},[ue]),x=o.useCallback(()=>{const d=F.current;return{type:"session:init",cols:ce.current.cols,rows:ce.current.rows,clientCapabilities:[...xt],...a?{systemPrompt:a}:{},...d?{cwd:d}:{},...u?{workspaceFiles:u}:{},...se?{orphanTTL:se}:{},...G?{backend:G}:{},...N!=="owner"?{controlMode:N}:{},...P?{tmuxSession:P}:{},...we?{zellijSession:we}:{},...ke?{zellijSocketDir:ke}:{},...Z?{agent:Z}:{},...ie?{provider:ie}:{},...J?{model:J}:{}}},[Z,G,N,J,se,ie,a,P,u,we,ke]),b=o.useCallback(()=>{B.current||(B.current=!0,v.current?T({type:"session:reconnect",sessionId:v.current,...z.current?{reconnectToken:z.current}:{},cols:ce.current.cols,rows:ce.current.rows,clientCapabilities:[...xt],...N!=="owner"?{controlMode:N}:{}}):T(x()))},[T,x,N]),y=o.useCallback(async()=>{const d=oe.current+1;oe.current=d,ue(),he.current+=1,B.current=!1,I("connecting"),w(null),X(null);const p=r||`${t.replace(/^ws(s?):\/\//,"http$1://")}/health`;try{const W=await fetch(p,{signal:AbortSignal.timeout(2e3)});if(!W.ok)throw new Error(`Relay health check failed: ${W.status}`)}catch{if(oe.current!==d)return;I("error"),w("Relay service is not running");return}if(oe.current!==d)return;ue();const Q=s?`${t}${t.includes("?")?"&":"?"}token=${encodeURIComponent(s)}`:t,H=new WebSocket(Q);_.current=H;const pe=()=>oe.current===d&&_.current===H;H.onopen=()=>{if(!pe()){H.close();return}b()},H.onmessage=W=>{if(pe())try{const C=JSON.parse(W.data);switch(C.type){case"session:ready":U(C.cols,C.rows),v.current=C.sessionId,z.current=typeof C.reconnectToken=="string"?C.reconnectToken:null,g(C.sessionId,z.current),ee(C.sessionId),I("connected"),w(null),X(null);break;case"terminal:dimensions":U(C.cols,C.rows);break;case"session:expired":{v.current=null,z.current=null,g(null),B.current=!1,R(),q("\x1B[2J\x1B[H",null),T(x()),B.current=!0;break}case"session:error":I("error"),w(C.error||"Session failed to start");break;case"terminal:data":q(C.data||"",typeof C.seq=="number"?C.seq:null);break;case"session:exit":v.current=null,z.current=null,g(null),R(),ee(null),X(C.exitCode??null),C.exitCode!==0?(I("error"),w(C.reason||`Process exited with code ${C.exitCode}`)):I("disconnected");break;case"session:detached":v.current=null,z.current=null,g(null),ee(null);break}}catch{}},H.onclose=()=>{pe()&&(_.current=null,B.current=!1,I(W=>W==="error"?W:"disconnected"))},H.onerror=()=>{pe()&&(I("error"),w("Could not connect to relay"))}},[t,r,s,b,ue,T,q,x,g,R]),de=o.useCallback(d=>{N!=="observe"&&T({type:"terminal:input",data:d})},[N,T]),Ae=o.useCallback(d=>{N!=="observe"&&T({type:"terminal:input",data:d+"\r"})},[N,T]),fe=o.useCallback((d,p)=>{ce.current={cols:d,rows:p},B.current&&T({type:"terminal:resize",cols:d,rows:p})},[T]),M=o.useCallback(d=>{if(j.current=d,!d||Y.current.length===0)return;const p=Y.current;Y.current=[],D.current=0;for(const Q of p)try{d(Q.data,Q.ack)}catch{Q.ack()}},[]),L=o.useCallback(d=>{te.current=d;const p=re.current;d&&p&&d(p.cols,p.rows)},[]),Se=o.useCallback(d=>(ne.current.add(d),()=>{ne.current.delete(d)}),[]);o.useEffect(()=>(k&&y(),()=>{l()}),[]);const me=o.useCallback(()=>{l(),v.current=null,z.current=null,ee(null),g(null),R(),w(null),X(null),O.current=setTimeout(()=>{O.current=null,y()},200)},[l,y,g,R]);return{status:ge,sessionId:Oe,error:Ne,exitCode:Ce,cwd:A,controlMode:N,setCwd:Re,onData:M,onDimensions:L,subscribeData:Se,sendInput:de,sendLine:Ae,resize:fe,connect:y,disconnect:l,restart:me}}var Kt={titleBarInset:0,dragRegionProps:{},onInteractiveMouseDown:void 0,isSSR:!0,apiBaseUrl:"",serviceApiUrl:""},Gt=o.createContext(Kt);function Jt(){return o.useContext(Gt)}var gt="hudson:terminal:voice-transcript",ht="hudson:terminal:voice-submit",In='[data-hudson-terminal-drawer-content="true"]',Xt=o.createContext(void 0),Yt={background:"#091112",foreground:"#d7e5e2",cursor:"#35d7d0",cursorAccent:"#091112",selectionBackground:"#173739",selectionForeground:"#f3fbf9",black:"#091112",red:"#ff6b6b",green:"#35d07f",yellow:"#f5c451",blue:"#62b4ff",magenta:"#ff7ab6",cyan:"#32d5ca",white:"#d7e5e2",brightBlack:"#667777",brightRed:"#ff8f8f",brightGreen:"#5ee79f",brightYellow:"#ffd36e",brightBlue:"#8dccff",brightMagenta:"#ff9fca",brightCyan:"#67eee3",brightWhite:"#ffffff"},qt={background:"#f7faf9",foreground:"#111a19",cursor:"#006f6a",cursorAccent:"#f7faf9",selectionBackground:"#c0e7e2",selectionForeground:"#0d1716",black:"#111a19",red:"#9f1f18",green:"#006c46",yellow:"#704600",blue:"#075985",magenta:"#9d174d",cyan:"#006f6a",white:"#dbe5e2",brightBlack:"#52635f",brightRed:"#c2271f",brightGreen:"#007f55",brightYellow:"#865b00",brightBlue:"#0369a1",brightMagenta:"#be185d",brightCyan:"#007f89",brightWhite:"#ffffff"},Qt=`
3
- .xterm { cursor: text; position: relative; user-select: none; -ms-user-select: none; -webkit-user-select: none; }
4
- .xterm.focus, .xterm:focus { outline: none; }
5
- .xterm .xterm-helpers { position: absolute; top: 0; z-index: 5; }
6
- .xterm .xterm-helper-textarea { padding: 0; border: 0; margin: 0; position: absolute; opacity: 0; left: -9999em; top: 0; width: 0; height: 0; z-index: -5; white-space: nowrap; overflow: hidden; resize: none; }
7
- .xterm .composition-view { background: var(--hud-terminal-bg, #091112); color: var(--hud-terminal-fg, #d7e5e2); display: none; position: absolute; white-space: nowrap; z-index: 1; }
8
- .xterm .composition-view.active { display: block; }
9
- .xterm .xterm-viewport { background-color: var(--hud-terminal-bg, transparent); overflow-y: scroll; cursor: default; position: absolute; right: 0; left: 0; top: 0; bottom: 0; }
10
- .xterm .xterm-screen { position: relative; }
11
- .xterm .xterm-screen canvas { position: absolute; left: 0; top: 0; }
12
- .xterm-char-measure-element { display: inline-block; visibility: hidden; position: absolute; top: 0; left: -9999em; line-height: normal; }
13
- .xterm.enable-mouse-events { cursor: default; }
14
- .xterm.xterm-cursor-pointer, .xterm .xterm-cursor-pointer { cursor: pointer; }
15
- .xterm.column-select.focus { cursor: crosshair; }
16
- .xterm .xterm-accessibility:not(.debug), .xterm .xterm-message { position: absolute; left: 0; top: 0; bottom: 0; right: 0; z-index: 10; color: transparent; pointer-events: none; }
17
- .xterm .xterm-accessibility-tree:not(.debug) *::selection { color: transparent; }
18
- .xterm .xterm-accessibility-tree { font-family: monospace; user-select: text; white-space: pre; }
19
- .xterm .xterm-accessibility-tree > div { transform-origin: left; width: fit-content; }
20
- .xterm .live-region { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
21
- .xterm-dim { opacity: 1 !important; }
22
- .xterm-underline-1 { text-decoration: underline; }
23
- .xterm-underline-2 { text-decoration: double underline; }
24
- .xterm-underline-3 { text-decoration: wavy underline; }
25
- .xterm-underline-4 { text-decoration: dotted underline; }
26
- .xterm-underline-5 { text-decoration: dashed underline; }
27
- .xterm-overline { text-decoration: overline; }
28
- .xterm-overline.xterm-underline-1 { text-decoration: overline underline; }
29
- .xterm-overline.xterm-underline-2 { text-decoration: overline double underline; }
30
- .xterm-overline.xterm-underline-3 { text-decoration: overline wavy underline; }
31
- .xterm-overline.xterm-underline-4 { text-decoration: overline dotted underline; }
32
- .xterm-overline.xterm-underline-5 { text-decoration: overline dashed underline; }
33
- .xterm-strikethrough { text-decoration: line-through; }
34
- .xterm-screen .xterm-decoration-container .xterm-decoration { z-index: 6; position: absolute; }
35
- .xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer { z-index: 7; }
36
- .xterm-decoration-overview-ruler { z-index: 8; position: absolute; top: 0; right: 0; pointer-events: none; }
37
- .xterm-decoration-top { z-index: 2; position: relative; }
38
- .xterm .xterm-scrollable-element > .scrollbar { cursor: default; }
39
- .xterm .xterm-scrollable-element > .scrollbar > .scra { cursor: pointer; font-size: 11px !important; }
40
- .xterm .xterm-scrollable-element > .visible { opacity: 1; background: rgba(0,0,0,0); transition: opacity 100ms linear; z-index: 11; }
41
- .xterm .xterm-scrollable-element > .invisible { opacity: 0; pointer-events: none; }
42
- .xterm .xterm-scrollable-element > .invisible.fade { transition: opacity 800ms linear; }
43
- .xterm .xterm-scrollable-element > .shadow { position: absolute; display: none; }
44
- .xterm .xterm-scrollable-element > .shadow.top { display: block; top: 0; left: 3px; height: 3px; width: 100%; }
45
- .xterm .xterm-scrollable-element > .shadow.left { display: block; top: 3px; left: 0; height: 100%; width: 3px; }
46
- `;function Zt(){if(typeof document>"u"||document.querySelector("[data-xterm-css]"))return;const e=document.createElement("style");e.setAttribute("data-xterm-css",""),e.textContent=Qt,document.head.appendChild(e)}function Ye(e,t){if(typeof e!="object"||e===null)return;const r=e,s=r[t];if(s)return s;const a=r.default;if(!(typeof a!="object"||a===null))return a[t]}function bt(e,t){if(!e||t&&!e.closest(t))return!1;const r=e.getBoundingClientRect();if(r.width<=0||r.height<=0)return!1;const s=window.getComputedStyle(e);return s.display!=="none"&&s.visibility!=="hidden"}var er="\x1B[13;2u",yt="\r";function tr(e){return new Promise((t,r)=>{const s=new FileReader;s.onload=()=>{const a=s.result;t(a.split(",")[1])},s.onerror=r,s.readAsDataURL(e)})}function rr({relay:e,fontSize:t=12,fontFamily:r="'JetBrains Mono', 'Hack Nerd Font', monospace",scrollback:s=5e3,renderer:a="auto",readOnly:i=!1,ariaLabel:u="Terminal",className:k,style:ae,colorScheme:se="auto",configItems:G,onOpenSettings:N,onStartService:P,quiet:we=!1,voiceVisibilityScope:ke,imageUploadUrl:Z,onReady:ie,onDispose:J,onResize:je,onRendererChange:S},$e){const{status:g,error:ge,exitCode:I,cwd:Oe,setCwd:ee,sendInput:Ne,resize:w,onData:Ce,onDimensions:X,connect:A,disconnect:Re,controlMode:_="owner"}=e,O=i||_==="observe",ce=o.useContext(Xt),B=ke===!1?void 0:ke??ce,[Y,D]=o.useState(!1),{apiBaseUrl:oe}=Jt(),he=Pt(),F=se==="auto"?he?.resolvedTheme==="light"?"light":"dark":se,le=F==="light"?qt:Yt,be=F==="light"?4.5:3,v=o.useRef(null),z=o.useRef(null),j=o.useRef(null),te=o.useRef(null),re=o.useRef(null),ne=o.useRef(!1),[$,T]=o.useState(!1),[Ee,R]=o.useState(!1),q=o.useRef(0),U=o.useRef(O),ue=o.useRef(null),l=o.useRef(null),x=o.useRef(null),b=o.useRef(null),y=o.useRef(ie),de=o.useRef(J),Ae=o.useRef(je),fe=o.useRef(S);o.useEffect(()=>{U.current=O,O&&(re.current=null,ne.current=!1,q.current=0,R(!1))},[O]),o.useEffect(()=>{y.current=ie},[ie]),o.useEffect(()=>{de.current=J},[J]),o.useEffect(()=>{Ae.current=je},[je]),o.useEffect(()=>{fe.current=S},[S]),o.useEffect(()=>{const c=v.current;if(!c)return;const f=m=>{m.key===" "&&!m.metaKey&&!m.ctrlKey&&!m.altKey&&m.stopPropagation()};return c.addEventListener("keydown",f),()=>c.removeEventListener("keydown",f)},[]);const M=Z===void 0?`${oe}/api/relay/upload`:Z,L=o.useCallback(c=>{U.current||Ne(c)},[Ne]),Se=o.useCallback((c,f)=>{if(!Number.isFinite(c)||!Number.isFinite(f)||c<=0||f<=0)return;const m=ue.current;m&&m.cols===c&&m.rows===f||(ue.current={cols:c,rows:f},w(c,f),Ae.current?.(c,f))},[w]),me=o.useCallback(()=>{const c=te.current,f=j.current;if(!c||!f)return null;try{const m=c.proposeDimensions();return m?((_!=="observe"||!l.current)&&c.fit(),Se(m.cols,m.rows),l.current??{cols:f.cols,rows:f.rows}):null}catch{return null}},[_,Se]),d=o.useCallback(()=>{x.current===null&&(x.current=window.requestAnimationFrame(()=>{x.current=null,me()}))},[me]);o.useImperativeHandle($e,()=>({focus:()=>{j.current?.focus()},fit:me,clear:()=>{j.current?.clear()},getDimensions:()=>{const c=j.current;return c?{cols:c.cols,rows:c.rows}:null},getTerminal:()=>j.current}),[me]);const p=o.useCallback(c=>{const f=c.transcript.replace(/\s+/g," ").trim();f&&L(c.submit?`${f}${yt}`:f)},[L]),Q=o.useCallback(()=>{L(yt)},[L]);o.useEffect(()=>{const c=f=>{if(U.current||!bt(v.current,B))return;const m=f.detail;if(!(!m||typeof m.transcript!="string")){if(g==="connected"){p(m);return}re.current=m,g!=="connecting"&&A()}};return window.addEventListener(gt,c),()=>window.removeEventListener(gt,c)},[A,p,g,B]),o.useEffect(()=>{if(g!=="connected"||!re.current)return;const c=re.current;re.current=null,p(c)},[p,g]),o.useEffect(()=>{const c=()=>{if(!U.current&&bt(v.current,B)){if(g==="connected"){Q();return}ne.current=!0,g!=="connecting"&&A()}};return window.addEventListener(ht,c),()=>window.removeEventListener(ht,c)},[A,Q,g,B]),o.useEffect(()=>{g!=="connected"||!ne.current||(ne.current=!1,Q())},[Q,g]);const H=o.useCallback(async c=>{if(!M)return null;try{const f=await tr(c),m=await fetch(M,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c.name,data:f})}),{path:K}=await m.json();return K||null}catch(f){return console.error("File upload failed:",f),null}},[M]);o.useEffect(()=>{const c=v.current;if(!c)return;const f=async m=>{if(!m.clipboardData||!M)return;const K=Array.from(m.clipboardData.items).filter(ye=>ye.type.startsWith("image/"));if(K.length!==0&&(m.preventDefault(),m.stopPropagation(),!U.current))for(const ye of K){const Be=ye.getAsFile();if(!Be)continue;const ze=await H(Be);ze&&L(ze)}};return c.addEventListener("paste",f),()=>c.removeEventListener("paste",f)},[L,H,M]);const pe=o.useCallback(c=>{if(c.preventDefault(),U.current||!M){c.dataTransfer.dropEffect="none";return}c.dataTransfer.dropEffect="copy"},[M]),W=o.useCallback(c=>{if(c.preventDefault(),U.current||!M){q.current=0,R(!1);return}q.current++,c.dataTransfer.types.includes("Files")&&R(!0)},[M]),C=o.useCallback(c=>{if(c.preventDefault(),U.current){q.current=0,R(!1);return}q.current--,q.current===0&&R(!1)},[]),Lt=o.useCallback(async c=>{if(c.preventDefault(),q.current=0,R(!1),U.current||!M)return;const f=Array.from(c.dataTransfer.files).filter(m=>m.type.startsWith("image/"));if(f.length!==0)for(const m of f){const K=await H(m);K&&L(K)}},[L,H,M]);o.useEffect(()=>{let c=!1,f=null;T(!1);async function m(){const[K,ye,Be]=await Promise.all([Xe(()=>import("./xterm-BKR8oAkR.js").then(E=>E.x),__vite__mapDeps([0,1,2])),Xe(()=>import("./addon-fit-BZ-kXjeN.js").then(E=>E.a),__vite__mapDeps([3,1,2])),Xe(()=>import("./addon-webgl-D9-EQVEK.js").then(E=>E.a),__vite__mapDeps([4,1,2])).catch(()=>null)]),ze=Ye(K,"Terminal"),dt=Ye(ye,"FitAddon"),ft=Be?Ye(Be,"WebglAddon"):void 0;if(!ze||!dt){console.error("[TerminalRelay] @xterm/xterm or @xterm/addon-fit missing constructors",{xtermMod:K,fitMod:ye});return}if(Zt(),c||!z.current)return;f=new ze({fontSize:t,fontFamily:r,theme:le,minimumContrastRatio:be,cursorBlink:!0,cursorStyle:"bar",allowTransparency:!0,scrollback:s,convertEol:!1,allowProposedApi:!0});const mt=new dt;f.loadAddon(mt),f.open(z.current),j.current=f,te.current=mt;let pt="dom";if(a!=="dom"&&ft)try{const E=new ft;E.onContextLoss(()=>{E.dispose(),fe.current?.("dom")}),f.loadAddon(E),pt="webgl"}catch{}fe.current?.(pt),me(),f.attachCustomKeyEventHandler(E=>E.type==="keydown"&&E.key==="Enter"&&E.shiftKey&&!E.ctrlKey&&!E.altKey&&!E.metaKey?(E.preventDefault(),E.stopPropagation(),L(er),!1):!0),f.onData(E=>{L(E)}),T(!0),y.current?.(f)}return m(),()=>{c=!0,T(!1),x.current!==null&&(window.cancelAnimationFrame(x.current),x.current=null),f&&(f.dispose(),j.current=null,te.current=null),de.current?.()}},[me,a,s,L]),o.useEffect(()=>{const c=j.current;c&&(c.options.fontSize=t,c.options.fontFamily=r,me())},[me,t,r]),o.useEffect(()=>{const c=j.current;c&&(c.options.theme=le,c.options.minimumContrastRatio=be)},[be,le]),o.useEffect(()=>{if(!(!$||!X))return X((c,f)=>{l.current={cols:c,rows:f};const m=j.current;m&&(m.cols!==c||m.rows!==f)&&m.resize(c,f)}),()=>X(null)},[$,X]),o.useEffect(()=>{if($)return Ce((c,f)=>{let m=!1;const K=()=>{m||(m=!0,f())},ye=j.current;if(!ye){K();return}try{ye.write(c,K)}catch{K()}}),()=>{Ce(null)}},[$,Ce]),o.useEffect(()=>{const c=z.current;if(!c||!$)return;const f=new ResizeObserver(()=>{d()});return f.observe(c),()=>{f.disconnect(),x.current!==null&&(window.cancelAnimationFrame(x.current),x.current=null)}},[$,d]),o.useEffect(()=>{g==="connected"&&j.current&&j.current.focus()},[g]);const Ot=o.useCallback(()=>{g==="connected"&&j.current&&j.current.focus()},[g]),Bt=g==="error"&&ge==="Relay service is not running",zt=o.useCallback(async()=>{if(P){D(!0);try{await P()&&(b.current&&clearTimeout(b.current),b.current=setTimeout(()=>{b.current=null,A()},500))}finally{D(!1)}}},[P,A]);o.useEffect(()=>()=>{b.current&&(clearTimeout(b.current),b.current=null)},[]);let _e=null;return Bt?_e=n.jsxs("div",{className:"flex flex-col items-center gap-4 max-w-xs text-center px-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-amber-500/10 border border-amber-500/20 flex items-center justify-center",children:n.jsx("span",{className:"text-amber-400 text-[14px]",children:"!"})}),n.jsxs("div",{children:[n.jsx("div",{className:"text-[12px] text-foreground font-medium mb-1",children:"Relay service not running"}),n.jsx("div",{className:"text-[11px] text-muted-foreground/80 leading-relaxed",children:P?"Start the relay service to open a terminal session.":"Start the relay service from the Workspace Manager."})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[P&&n.jsx("button",{type:"button",onClick:zt,disabled:Y,className:"text-[11px] px-4 py-1.5 rounded-full border border-accent/30 text-accent hover:bg-accent/10 transition-colors font-medium disabled:opacity-50",children:Y?"Starting":"Start Service"}),n.jsx("button",{type:"button",onClick:()=>A(),className:"text-[11px] px-3 py-1.5 rounded-full border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:"Retry"}),N&&n.jsx("button",{type:"button",onClick:N,className:"text-[11px] px-3 py-1.5 rounded-full border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:"Settings"})]})]}):g==="error"&&ge?_e=n.jsxs("div",{className:"flex flex-col items-center gap-3 max-w-md text-center px-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-red-500/10 flex items-center justify-center",children:n.jsx("span",{className:"text-red-400 text-sm",children:"!"})}),n.jsx("span",{className:"text-red-400 text-[12px] font-medium",children:"Session failed"}),n.jsx("code",{className:"text-[11px] text-muted-foreground bg-muted/80 px-3 py-2 rounded-md whitespace-pre-wrap leading-relaxed max-h-32 overflow-y-auto w-full text-left",children:ge}),I!==null&&I!==0&&n.jsxs("span",{className:"text-[10px] text-muted-foreground/60",children:["Exit code ",I]}),n.jsx("button",{type:"button",onClick:()=>A(),className:"text-[11px] px-3 py-1 rounded-full border border-cyan-500/30 text-cyan-400 hover:bg-cyan-500/10 transition-colors",children:"Retry"})]}):g==="disconnected"&&!we?_e=n.jsxs("div",{className:"flex flex-col items-center gap-4 max-w-xs text-center px-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-muted border border-border flex items-center justify-center",children:n.jsx("span",{className:"text-muted-foreground/80 text-[14px]",children:"▷"})}),n.jsxs("div",{children:[n.jsx("div",{className:"text-[12px] text-foreground font-medium mb-1",children:"Terminal relay disconnected"}),n.jsx("div",{className:"text-[11px] text-muted-foreground/80 leading-relaxed",children:"Set working directory and connect."})]}),n.jsxs("form",{className:"w-full",onSubmit:c=>{c.preventDefault(),A()},children:[n.jsx("label",{className:"text-[10px] font-mono text-muted-foreground/80 uppercase tracking-wider mb-1 block text-left",children:"Working Directory"}),n.jsx("input",{type:"text",value:Oe,onChange:c=>ee(c.target.value),placeholder:"~/dev/my-project",className:"w-full bg-muted/80 border border-border/50 rounded px-3 py-1.5 text-[11px] font-mono text-foreground placeholder:text-muted-foreground/60 outline-none focus:border-accent/40 transition-colors",spellCheck:!1,autoComplete:"off"})]}),G&&G.length>0&&n.jsx("div",{className:"w-full grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-[10px] font-mono bg-muted/60 border border-border/40 rounded-md px-3 py-2",children:G.map(c=>n.jsxs("div",{className:"contents",children:[n.jsx("span",{className:"text-muted-foreground/80",children:c.label}),n.jsx("span",{className:"text-muted-foreground truncate text-left",children:c.value})]},c.label))}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("button",{type:"button",onClick:()=>A(),className:"text-[11px] px-4 py-1.5 rounded-full border border-cyan-500/30 text-cyan-400 hover:bg-cyan-500/10 transition-colors font-medium",children:"Connect"}),N&&n.jsx("button",{type:"button",onClick:N,className:"text-[11px] px-3 py-1.5 rounded-full border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:"Settings"})]})]}):g==="connecting"&&!we&&(_e=n.jsxs("div",{className:"flex flex-col items-center gap-3 text-center",children:[n.jsx("div",{className:"w-6 h-6 border-2 border-muted-foreground/30 border-t-cyan-500 rounded-full animate-spin"}),n.jsx("span",{className:"text-[12px] text-muted-foreground",children:"Connecting to relay"}),n.jsx("button",{type:"button",onClick:()=>{Re()},className:"text-[10px] px-3 py-1 rounded-full border border-border text-muted-foreground/80 hover:text-foreground hover:bg-muted transition-colors",children:"Cancel"})]})),n.jsxs("div",{ref:v,className:k?`relative flex flex-col h-full overflow-hidden ${k}`:"relative flex flex-col h-full overflow-hidden",style:ae,role:"application","aria-label":O?`${u} (read only)`:u,"data-readonly":O?"true":void 0,onClick:Ot,onDragOver:pe,onDragEnter:W,onDragLeave:C,onDrop:Lt,children:[_e&&n.jsx("div",{className:"flex items-center justify-center h-full font-mono text-[12px] absolute inset-0 z-10 bg-background/95",children:_e}),Ee&&n.jsx("div",{className:"absolute inset-0 z-20 flex items-center justify-center bg-cyan-500/10 border-2 border-dashed border-cyan-500/50 rounded pointer-events-none",children:n.jsx("span",{className:"text-cyan-400 font-mono text-sm",children:"Drop image to get path"})}),n.jsx("div",{ref:z,className:"flex-1 min-h-0 min-w-0 overflow-hidden",style:{visibility:_e?"hidden":"visible",backgroundColor:le.background,"--hud-terminal-bg":le.background,"--hud-terminal-fg":le.foreground}})]})}var nr=o.forwardRef(rr);nr.displayName="TerminalRelay";function Ve(e){if(typeof window>"u")return null;try{return e==="local"?window.localStorage:window.sessionStorage}catch{return null}}function sr(e,t){const r=Ve(e);if(!r)return null;try{return r.getItem(t)}catch{return null}}function or(e,t,r){const s=Ve(e);if(!s)return!1;try{return s.setItem(t,r),!0}catch{return!1}}function ar(e,t){const r=Ve(e);if(!r)return!1;try{return r.removeItem(t),!0}catch{return!1}}function ir(e){const t=Ve(e);if(!t)return[];try{const r=[],s=t.length;for(let a=0;a<s;a++){const i=t.key(a);typeof i=="string"&&r.push(i)}return r}catch{return[]}}var Et={getItem(e){return sr("local",e)},setItem(e,t){return or("local",e,t)},removeItem(e){return ar("local",e)},keys(){return ir("local")},isAvailable(){return Ve("local")!==null}};function cr(e="h",t=12){const r=globalThis.crypto;if(r&&typeof r.randomUUID=="function"){const a=r.randomUUID().replace(/-/g,"").slice(0,t);return e?`${e}_${a}`:a}if(r&&typeof r.getRandomValues=="function"){const a=new Uint8Array(Math.ceil(t/2));r.getRandomValues(a);const i=Array.from(a,u=>u.toString(16).padStart(2,"0")).join("").slice(0,t);return e?`${e}_${i}`:i}const s=Math.random().toString(36).slice(2,2+t);return e?`${e}_${s}`:s}var lr=200,ur=()=>Date.now(),dr=()=>cr("h",12),fr=e=>e instanceof Error?{name:e.name,message:e.message}:{message:String(e)},mr=()=>{const e=globalThis;return e.H_OBSERVABILITY===!0||e.H_DEBUG===!0},pr=class{constructor(){this.sinks=new Map}get size(){return this.sinks.size}add(e,t={}){const r=t.kinds?new Set(t.kinds):null;return this.sinks.set(e,{kinds:r}),()=>{this.sinks.delete(e)}}emit(e){for(const[t,r]of this.sinks)if(!(r.kinds&&!r.kinds.has(e.kind)))try{t(e)}catch{}}},xr=class{constructor(e){this.owner=e}log(e,t,r={}){const s={id:this.owner.createId(),kind:"log",timestamp:this.owner.now(),level:e,message:t,category:r.category,data:r.data};return this.owner.emit(s),s}debug(e,t){return this.log("debug",e,t)}info(e,t){return this.log("info",e,t)}warn(e,t){return this.log("warn",e,t)}error(e,t){return this.log("error",e,t)}},gr=class{constructor(e){this.owner=e}counter(e,t=1,r={}){return this.record("counter",e,t,r)}gauge(e,t,r={}){return this.record("gauge",e,t,r)}timing(e,t,r={}){return this.record("timing",e,t,{...r,unit:r.unit??"ms"})}record(e,t,r,s){const a={id:this.owner.createId(),kind:"metric",timestamp:this.owner.now(),metricType:e,name:t,value:r,category:s.category,unit:s.unit,tags:s.tags,data:s.data};return this.owner.emit(a),a}},hr=class{constructor(e,t){this.owner=e,this.event=t,this.ended=!1,this.owner.emit({...t})}end(e){if(this.ended)return this.event;const t=this.owner.now();return this.ended=!0,this.event.endTime=t,this.event.durationMs=Math.max(0,t-this.event.startTime),this.event.status="ok",e&&(this.event.data={...this.event.data,...e}),this.owner.emit({...this.event}),this.event}error(e,t){if(this.ended)return this.event;const r=this.owner.now();return this.ended=!0,this.event.endTime=r,this.event.durationMs=Math.max(0,r-this.event.startTime),this.event.status="error",this.event.error=fr(e),t&&(this.event.data={...this.event.data,...t}),this.owner.emit({...this.event}),this.event}},br=class{constructor(e){this.owner=e}start(e,t={}){const r=this.owner.createId(),s=this.owner.now(),a={id:r,kind:"span",timestamp:s,name:e,traceId:t.traceId??r,parentId:t.parentId,startTime:s,status:"active",category:t.category,data:t.data};return new hr(this.owner,a)}},yr=class St{constructor(t={}){this.logger=new xr(this),this.metrics=new gr(this),this.trace=new br(this),this.sinks=new pr,this.buffer=[],this.enabled=t.enabled??!0,this.maxBufferSize=Math.max(0,t.maxBufferSize??lr),this.nowFn=t.now??ur,this.createIdFn=t.createId??dr}static global(t={}){return new St({...t,enabled:t.enabled??mr()})}get isEnabled(){return this.enabled}setEnabled(t){this.enabled=t}subscribe(t,r={}){const s=this.sinks.add(t,r);if(r.replay)for(const a of this.buffer)r.kinds&&!r.kinds.includes(a.kind)||t(a);return s}flush(){const t=this.buffer.slice();return this.buffer.length=0,t}snapshot(){return this.buffer.slice()}emit(t){return this.enabled&&(this.remember(t),this.sinks.size>0&&this.sinks.emit(t)),t}now(){return this.nowFn()}createId(){return this.createIdFn()}remember(t){this.maxBufferSize!==0&&(this.buffer.push(t),this.buffer.length>this.maxBufferSize&&this.buffer.splice(0,this.buffer.length-this.maxBufferSize))}},Ue=yr.global(),vr=100,wr=class{constructor(e={}){this.entries=[],this.listeners=new Set,this.maxEntries=Math.max(0,e.maxEntries??vr)}snapshot(){return this.entries}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}add(e){return this.maxEntries===0||(this.entries=[e,...this.entries].slice(0,this.maxEntries),this.notify()),e}update(e,t){let r=!1;this.entries=this.entries.map(s=>s.id!==e?s:(r=!0,t(s))),r&&this.notify()}clear(){this.entries.length!==0&&(this.entries=[],this.notify())}notify(){for(const e of this.listeners)try{e()}catch{}}};new wr;var Tt="hudsonTrace",kr=new Set(["cat","find","fd","grep","head","ls","pwd","rg","sed","tail","wc","which"]),jr=new Set(["branch","diff","ls-files","log","rev-parse","show","status"]),It=new Set(["","agent.task"]);function Nr(e,t){const r=e.filter(Me),s=Sr(r);if(t==="raw")return{events:r,hiddenDetailEvents:0,collapsedEvents:0,relatedEventsByTrace:s};const a=Er(r),i=[];let u=0;for(const k of a.values())(t==="details"||Ir(k))&&(u+=k.length,i.push(Tr(k)));return{events:i,hiddenDetailEvents:Math.max(0,r.length-u),collapsedEvents:Math.max(0,u-i.length),relatedEventsByTrace:s}}function Me(e){const t=V(e);return e.category==="agent-action"||t.triggeredBy==="agent"||t.source==="workspace-ai"}function V(e){return e.data&&typeof e.data=="object"&&!Array.isArray(e.data)?e.data:{}}function h(e,t){const r=e[t];return typeof r=="string"&&r.trim()?r:null}function Le(e){return e.kind==="span"?e.traceId:h(V(e),"traceId")}function at(e){return h(V(e),"parentTraceId")}function Je(e){const t=V(e).metadata;if(!ct(t))return null;const r=t.command;return Array.isArray(r)&&r.every(s=>typeof s=="string")?r:typeof r=="string"&&r.trim()?r.trim().split(/\s+/):null}function rt(e){if(!e||e.length===0)return!1;const t=_t(e[0]);if(kr.has(t))return!0;if(t==="git"){const r=e.find((s,a)=>a>0&&!s.startsWith("-"));return r?jr.has(r):!1}return!1}function it(e){const t=V(e),r=h(t,"appId")??h(t,"targetAppId");if(r)return r;const s=h(t,"action")??h(t,"playbook")??h(t,"commandId"),a=s&&!It.has(s)?Ar(s):null;if(a)return a;const i=Je(e);for(const u of i??[]){const k=At(u);if(k)return k}return null}function Cr(e){const t=V(e)[Tt];if(!ct(t))return null;const r=h(t,"traceId"),s=Pe(t,"eventCount"),a=Pe(t,"startedAt"),i=Pe(t,"endedAt"),u=Pe(t,"durationMs"),k=Pe(t,"hiddenDetailEvents")??0;return!r||s===void 0||a===void 0||i===void 0||u===void 0?null:{traceId:r,eventCount:s,startedAt:a,endedAt:i,durationMs:u,hiddenDetailEvents:k}}function Rt(e){if(!e||e.length===0)return null;const t=_t(e[0]),r=e.map(_r).find(Boolean);return rt(e)?r?`Read ${r} with ${t}`:`Read with ${t}`:t==="bun"&&e[1]==="run"&&e[2]?`Run bun ${e[2]}`:e.slice(0,4).join(" ")}function vt(e){return!e||e==="agent.task"?"Agent task":e.replace(/^hudson\./,"").replace(/[._:-]+/g," ").replace(/\s+/g," ").trim().split(" ").map((r,s)=>s===0?Dr(r):r).join(" ")}function Er(e){const t=new Map;for(const r of e){const s=Le(r)??r.id,a=t.get(s);a?a.push(r):t.set(s,[r])}return t}function Sr(e){const t=new Map,r=(s,a)=>{if(!s)return;const i=t.get(s);i?i.some(u=>u.id===a.id)||i.push(a):t.set(s,[a])};for(const s of e)r(Le(s)??s.id,s),r(at(s),s),r(s.kind==="span"?s.parentId??null:null,s);for(const s of t.values())s.sort((a,i)=>a.timestamp-i.timestamp);return t}function Tr(e){const t=[...e].sort((u,k)=>u.timestamp-k.timestamp),r=Qe(t,u=>qe(u)===3)??Qe(t,u=>qe(u)===2)??Qe(t,u=>qe(u)===1)??t[t.length-1],s=Le(r)??r.id,a=t[0]?.timestamp??r.timestamp,i=t[t.length-1]?.timestamp??r.timestamp;return{...r,data:{...V(r),[Tt]:{traceId:s,eventCount:t.length,startedAt:a,endedAt:i,durationMs:Math.max(0,i-a),hiddenDetailEvents:Math.max(0,t.length-1)}}}}function Ir(e){return e.every(t=>at(t))?!1:e.some(t=>{if(t.kind==="span")return!0;const r=V(t),s=h(r,"action")??h(r,"playbook")??"",a=!It.has(s),i=Je(t);return a||h(r,"commandId")||it(t)&&!i||Rr(r)&&!rt(i)?!0:!!(i&&!rt(i))})}function Rr(e){const t=e.args;return ct(t)&&typeof t.prompt=="string"&&t.prompt.trim().length>0}function qe(e){if(e.kind==="span")return e.status==="error"?3:e.status==="ok"?2:e.status==="active"?1:0;const t=h(V(e),"status")??(e.kind==="log"?e.level:void 0);return t==="failed"||t==="error"?3:t==="completed"||t==="ok"?2:t==="started"||t==="active"?1:0}function Qe(e,t){for(let r=e.length-1;r>=0;r--)if(t(e[r]))return e[r]}function Ar(e){if(!e)return null;const[t]=e.split(/[.:_-]/);return t||null}function At(e){const t=e.match(/(?:^|\/)app\/apps\/([^/\s]+)/);return t?t[1]:null}function _r(e){const t=At(e);return t||null}function _t(e){return e.split("/").pop()??e}function ct(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Pe(e,t){const r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Dr(e){return e&&`${e[0].toUpperCase()}${e.slice(1)}`}var $r=o.createContext(null);function Mr(){return o.useContext($r)}function Lr(e){const t=Mr();return!t||e.startsWith("inst:")||e.startsWith("hudson.ws.")?e:`inst:${t.instanceId}:${e}`}function Or(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e.__v=="number"&&"value"in e}function Br(e,t){const r=Et.getItem(e);if(!r)return;let s;try{s=JSON.parse(r)}catch{return}const a=t?.version;if(a===void 0)return s;const[i,u]=Or(s)?[s.value,s.__v]:[s,0];if(u===a)return i;if(t?.migrate)try{return t.migrate(i,u)}catch{return}}function zr(e,t,r){let s;try{s=JSON.stringify(r===void 0?t:{__v:r,value:t})}catch{return}if(typeof s=="string"&&Et.setItem(e,s))try{window.dispatchEvent(new CustomEvent("hudson:saved",{detail:{key:e}}))}catch{}}var Pr=()=>()=>{},Fr=()=>!0,Hr=()=>!1;function Wr(){return o.useSyncExternalStore(Pr,Fr,Hr)}function Vr(e,t,r={}){const s=Wr(),a=Lr(e),i=r.enabled??!0,{version:u}=r,[k,ae]=o.useState(t),se=o.useRef(!1);if(s&&i&&!se.current){se.current=!0;const G=Br(a,r);G!==void 0&&ae(G)}return o.useEffect(()=>{!s||!i||zr(a,k,u)},[a,k,s,i,u]),[k,ae]}var Ur=["debug","info","warn","error"],Kr=["log","metric","span"],Gr="hudson:open-app",Ze=340,Ge=440,wt=900,Jr=420,Xr="hudson.hud-logger.inspector-width",Yr=1,kt={key:"time",direction:"desc"},jt="grid-cols-[62px_64px_76px_58px_72px_112px_128px_minmax(260px,1fr)_92px]";function qr(e){return typeof e!="number"||e===380?Ge:e}function Dt(e=Ue,t={}){const r=t.maxEvents??200,[s,a]=o.useState(()=>e.snapshot().slice(-r).reverse());return o.useEffect(()=>{const i=()=>{a(e.snapshot().slice(-r).reverse())},u=e.subscribe(i);return i(),u},[r,e]),s}function $t(e){const t=new Map;for(const r of e){if(r.kind!=="span")continue;(!t.get(r.id)||r.status!=="active")&&t.set(r.id,r.status)}return{total:e.length,errors:e.filter(r=>r.kind==="log"&&r.level==="error").length,warnings:e.filter(r=>r.kind==="log"&&r.level==="warn").length,agentActions:e.filter(Me).length,activeSpans:Array.from(t.values()).filter(r=>r==="active").length,lastEvent:e[0]??null}}function Qr(e=Ue,t={}){const r=Dt(e,t);return o.useMemo(()=>$t(r),[r])}function Rn({observability:e=Ue,maxEvents:t=200,label:r="Logs",className:s="",showCounts:a=!1}){const i=Qr(e,{maxEvents:t}),u=i.errors>0?"red":i.warnings>0||i.activeSpans>0?"amber":"emerald";return n.jsxs("span",{className:`inline-flex min-w-0 items-center gap-2 font-mono text-[9px] font-light uppercase tracking-[0.18em] ${vn(u)} ${s}`,title:`${i.total} events, ${i.errors} errors, ${i.activeSpans} active spans`,children:[n.jsx("span",{className:`h-1.5 w-1.5 rounded-full ${wn(u)}`}),n.jsx("span",{children:r}),a&&i.errors>0?n.jsxs("span",{className:"tabular-nums font-semibold",children:[i.errors," err"]}):a&&i.warnings>0?n.jsxs("span",{className:"tabular-nums",children:[i.warnings," warn"]}):null]})}function An({observability:e=Ue,events:t,replayEvents:r,maxEvents:s=200,title:a="HudLogger",className:i="",emptyMessage:u="No events match the current filters.",showHeader:k=!0,showInspector:ae=!0,initialTail:se=!0,initialScope:G="all"}){const N=Dt(e,{maxEvents:s}),P=o.useMemo(()=>t?t.slice(0,s):!r||r.length===0?N:yn(r,N,s),[t,r,N,s]),[we,ke]=o.useState(null),[Z,ie]=o.useState("all"),[J,je]=o.useState("all"),[S,$e]=o.useState(G),[g,ge]=o.useState(G==="agent-actions"?"actions":"raw"),[I,Oe]=o.useState(""),[ee,Ne]=o.useState(se),[w,Ce]=o.useState(kt),[X,A]=o.useState(null),[Re,_]=Vr(Xr,Ge,{version:Yr,migrate:qr}),O=o.useRef(null),ce=o.useRef(null),[B,Y]=o.useState(!1),D=o.useMemo(()=>Nr(P,S==="agent-actions"?g:"raw"),[g,P,S]),oe=S==="agent-actions"?D.events:P,he=o.useMemo(()=>oe.filter(l=>{if(J!=="all"&&l.kind!==J||Z!=="all"&&(l.kind!=="log"||l.level!==Z))return!1;if(!I.trim())return!0;const x=Le(l)??l.id,b=D.relatedEventsByTrace.get(x)??[];return dn(l,b).includes(I.trim().toLowerCase())}),[D.relatedEventsByTrace,J,Z,I,oe]),F=o.useMemo(()=>gn(he,w),[he,w]),be=ee&&w.key==="time"&&w.direction==="desc"?F[0]?Te(F[0]):null:we,v=F.find(l=>Te(l)===be)??F[0]??null,z=v?Le(v)??v.id:null,j=z?D.relatedEventsByTrace.get(z)??[]:[],te=o.useMemo(()=>$t(P),[P]),re=o.useCallback(async(l,x)=>{await bn(l)&&(A(x),window.setTimeout(()=>{A(y=>y===x?null:y)},1200))},[]),ne=o.useCallback(l=>{Ne(!1),ke(Te(l))},[]),$=o.useCallback(l=>{Ne(!1),Ce(x=>x.key!==l?{key:l,direction:xn(l)}:{key:l,direction:x.direction==="asc"?"desc":"asc"})},[]),T=o.useCallback(()=>{ee||Ce(kt),Ne(l=>!l)},[ee]),Ee=o.useCallback(l=>{const x=nt(l);!x||typeof window>"u"||window.dispatchEvent(new CustomEvent(Gr,{detail:{appId:x,workspaceId:on(l),source:"hud-logger"}}))},[]),R=o.useCallback((l,x)=>{const b=Math.min(wt,Math.max(Ze,x-Jr));return Math.max(Ze,Math.min(b,l))},[]),q=o.useCallback(l=>{if(l.button!==0)return;const x=O.current,b=ce.current;if(!x||!b)return;l.preventDefault();const y=l.clientX,de=b.getBoundingClientRect().width;Y(!0),document.body.style.cursor="col-resize",document.body.style.userSelect="none";const Ae=M=>{const L=x.getBoundingClientRect().width,Se=R(de+(y-M.clientX),L);b.style.setProperty("--inspector-width",`${Se}px`)},fe=M=>{const L=x.getBoundingClientRect().width,Se=R(de+(y-M.clientX),L);_(Se),Y(!1),document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",Ae),window.removeEventListener("pointerup",fe),window.removeEventListener("pointercancel",fe)};window.addEventListener("pointermove",Ae),window.addEventListener("pointerup",fe),window.addEventListener("pointercancel",fe)},[R,_]),U=o.useCallback(()=>{_(Ge)},[_]);o.useEffect(()=>{if(typeof window>"u")return;const l=O.current;if(!l)return;const x=new ResizeObserver(()=>{const b=l.getBoundingClientRect().width;_(y=>{const de=R(y,b);return de===y?y:de})});return x.observe(l),()=>x.disconnect()},[R,_]);const ue=o.useMemo(()=>({"--inspector-width":`${Re}px`}),[Re]);return n.jsxs("section",{ref:O,className:`flex min-h-[520px] flex-col overflow-hidden rounded-md border border-border bg-background text-foreground lg:flex-row ${i}`,children:[n.jsxs("main",{className:"flex min-h-0 min-w-0 flex-col border-b border-border/70 lg:flex-1 lg:border-b-0",children:[k&&n.jsxs("div",{className:"shrink-0 border-b border-border/70 bg-card/80 px-3 py-2.5",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx(en,{ariaLabel:"copy filtered table",copied:X==="table",disabled:F.length===0,label:"copy all",onClick:()=>{re(mn(F),"table")}}),n.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 font-mono text-[11px] font-normal uppercase tracking-[0.14em] text-muted-foreground",children:[n.jsx("span",{children:a}),n.jsxs("span",{className:"text-accent",children:[F.length," shown"]}),n.jsxs("span",{children:[te.total," buffered"]}),n.jsxs("span",{children:[te.agentActions," agent"]}),n.jsxs("span",{children:[te.errors," errors"]}),te.activeSpans>0&&n.jsxs("span",{className:"text-warning",children:[te.activeSpans," active"]}),S==="agent-actions"&&g!=="raw"&&D.hiddenDetailEvents>0&&n.jsxs("span",{children:[D.hiddenDetailEvents," detail hidden"]}),S==="agent-actions"&&D.collapsedEvents>0&&n.jsxs("span",{children:[D.collapsedEvents," collapsed"]})]})]}),n.jsxs("label",{className:"mt-2 flex min-w-0 items-center gap-2 rounded-md border border-border/70 bg-muted/20 px-2.5 py-2 font-mono text-[13px] font-normal text-accent transition-colors focus-within:border-accent/40 focus-within:bg-muted/30",children:[n.jsx("span",{className:"shrink-0 text-success",children:"$"}),n.jsx("input",{value:I,onChange:l=>Oe(l.target.value),placeholder:"grep message, category, payload",className:"min-w-0 flex-1 bg-transparent text-foreground outline-none placeholder:text-muted-foreground"})]}),n.jsxs("details",{className:"mt-2 text-left",children:[n.jsx("summary",{className:"cursor-pointer font-mono text-[11px] font-normal uppercase tracking-[0.14em] text-muted-foreground hover:text-foreground",children:"filters / controls"}),n.jsxs("div",{className:"mt-3 grid gap-3 border-t border-border/60 pt-3 md:grid-cols-[1fr_1fr_1fr_1fr_auto]",children:[n.jsxs(Ke,{label:"Scope",children:[n.jsx(ve,{active:S==="all",onClick:()=>$e("all"),children:"all"}),n.jsx(ve,{active:S==="agent-actions",onClick:()=>$e("agent-actions"),children:"agent actions"})]}),S==="agent-actions"?n.jsxs(Ke,{label:"Rows",children:[n.jsx(ve,{active:g==="actions",onClick:()=>ge("actions"),children:"actions"}),n.jsx(ve,{active:g==="details",onClick:()=>ge("details"),children:"details"}),n.jsx(ve,{active:g==="raw",onClick:()=>ge("raw"),children:"raw"})]}):n.jsx("div",{}),n.jsxs(Ke,{label:"Kind",children:[n.jsx(ve,{active:J==="all",onClick:()=>je("all"),children:"all"}),Kr.map(l=>n.jsx(ve,{active:J===l,onClick:()=>je(l),children:l},l))]}),n.jsxs(Ke,{label:"Level",children:[n.jsx(ve,{active:Z==="all",onClick:()=>ie("all"),children:"all"}),Ur.map(l=>n.jsx(ve,{active:Z===l,onClick:()=>ie(l),children:l},l))]}),n.jsx("div",{className:"flex flex-wrap items-end gap-2",children:n.jsxs("button",{type:"button",onClick:T,className:`rounded-md border px-2.5 py-1.5 font-mono text-[11px] font-normal uppercase tracking-[0.12em] transition-colors ${ee?"border-accent/30 bg-accent/10 text-accent":"border-border/70 bg-muted/20 text-muted-foreground hover:border-border hover:text-foreground"}`,children:["tail ",ee?"on":"off"]})})]})]})]}),n.jsx("div",{className:"max-h-[650px] overflow-auto lg:max-h-none lg:flex-1 lg:min-h-0",children:n.jsxs("div",{className:"min-w-[980px] font-mono text-[11px] font-normal",children:[n.jsxs("div",{className:`sticky top-0 z-10 grid min-h-8 ${jt} items-center border-b border-border/70 bg-card px-3 py-1.5 font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:[n.jsx("span",{className:"sticky left-0 bg-card pr-2",children:"Copy"}),n.jsx("span",{children:"Open"}),n.jsx(De,{column:"time",label:"Time",sort:w,onSort:$}),n.jsx(De,{column:"kind",label:"Kind",sort:w,onSort:$}),n.jsx(De,{column:"level",label:"Level",sort:w,onSort:$}),n.jsx(De,{column:"category",label:"Category",sort:w,onSort:$}),n.jsx(De,{column:"target",label:"Target",sort:w,onSort:$}),n.jsx(De,{column:"message",label:"Message",sort:w,onSort:$}),n.jsx(De,{column:"id",label:"Id",sort:w,onSort:$})]}),F.map(l=>{const x=nt(l),b=Te(l);return n.jsxs("div",{role:"button",tabIndex:0,onClick:()=>ne(l),onKeyDown:y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),ne(l))},className:`grid min-h-[34px] w-full ${jt} items-center border-b border-l-2 px-3 py-2 text-left transition-colors ${v&&Te(v)===b?"border-b-border/40 border-l-accent bg-accent/[0.08]":"border-b-border/40 border-l-transparent hover:bg-muted/30"}`,children:[n.jsx("button",{type:"button","aria-label":`copy row ${st(l.id)}`,onClick:y=>{y.stopPropagation(),re(ot(l).join(" "),`row:${b}`)},className:`sticky left-0 z-[1] justify-self-start rounded border border-border/70 px-1.5 py-0.5 font-mono text-[10px] font-normal uppercase tracking-[0.1em] text-muted-foreground transition-colors hover:border-accent/30 hover:text-accent ${v&&Te(v)===b?"bg-accent/[0.08]":"bg-background"}`,children:X===`row:${b}`?"copied":"copy"}),x?n.jsx("button",{type:"button","aria-label":`open ${He(l)}`,onClick:y=>{y.stopPropagation(),Ee(l)},className:"justify-self-start rounded border border-border/70 bg-muted/20 px-1.5 py-0.5 font-mono text-[10px] font-normal uppercase tracking-[0.1em] text-muted-foreground transition-colors hover:border-accent/30 hover:text-accent",children:"open"}):n.jsx("span",{className:"text-muted-foreground/45",children:"-"}),n.jsx("span",{className:"tabular-nums text-muted-foreground",children:ut(l)}),n.jsx("span",{className:"uppercase tracking-[0.13em] text-muted-foreground",children:l.kind}),n.jsx("span",{className:`uppercase tracking-[0.13em] ${lt(l)}`,children:xe(l)}),n.jsx("span",{className:"truncate uppercase tracking-[0.13em] text-muted-foreground",children:l.category??"-"}),n.jsx("span",{className:"truncate font-sans text-[12px] font-normal normal-case tracking-normal text-muted-foreground",children:He(l)}),n.jsx("span",{className:"truncate font-sans text-[13px] font-normal normal-case tracking-normal text-foreground",children:Ie(l)}),n.jsx("span",{className:"truncate text-muted-foreground",children:st(l.id)})]},b)}),F.length===0&&n.jsx("div",{className:"border-b border-border/40 px-3 py-5 font-sans text-[13px] text-muted-foreground",children:u})]})})]}),ae&&n.jsxs(n.Fragment,{children:[n.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize payload inspector","aria-valuenow":Re,"aria-valuemin":Ze,"aria-valuemax":wt,title:"Drag to resize · Double-click to reset",onPointerDown:q,onDoubleClick:U,className:`group hidden shrink-0 cursor-col-resize items-stretch justify-center transition-colors lg:flex lg:w-[5px] ${B?"bg-accent/15":"hover:bg-accent/10"}`,children:n.jsx("div",{className:`w-px transition-colors ${B?"bg-accent/80":"bg-border group-hover:bg-accent/60"}`})}),n.jsx("aside",{ref:ce,style:ue,className:"flex w-full shrink-0 flex-col bg-background lg:w-[var(--inspector-width)]",children:n.jsx(Zr,{copied:v?X===`inspector:${Te(v)}`:!1,event:v,relatedEvents:j,onCopyRow:l=>{re(ot(l).join(" "),`inspector:${Te(l)}`)},onOpenTarget:Ee})})]})]})}function Zr({copied:e,event:t,relatedEvents:r,onCopyRow:s,onOpenTarget:a}){const i=t?nt(t):null;return n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[n.jsxs("div",{className:"flex shrink-0 items-center justify-between gap-2 border-b border-border/70 bg-card/40 px-3 py-2.5 lg:px-4",children:[n.jsx("div",{className:"font-mono text-[11px] font-medium uppercase tracking-[0.15em] text-foreground/80",children:"Payload inspector"}),t?n.jsxs("div",{className:"flex items-center gap-2",children:[i?n.jsx("button",{type:"button",onClick:()=>a(t),className:"rounded-md border border-border/70 bg-muted/20 px-2 py-1 font-mono text-[11px] font-normal uppercase tracking-[0.11em] text-muted-foreground transition hover:border-accent/30 hover:text-accent",children:"open app"}):null,n.jsx("button",{type:"button",onClick:()=>s(t),className:"rounded-md border border-border/70 bg-muted/20 px-2 py-1 font-mono text-[11px] font-normal uppercase tracking-[0.11em] text-muted-foreground transition hover:border-accent/30 hover:text-accent",children:e?"copied":"copy row"}),n.jsx("div",{className:`font-mono text-[11px] uppercase tracking-[0.12em] ${lt(t)}`,children:xe(t)})]}):null]}),n.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-3 lg:px-4 lg:py-4",children:t?n.jsxs("div",{className:"grid gap-3",children:[n.jsxs("div",{className:"overflow-hidden rounded-md border border-accent/25 bg-accent/[0.07]",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-b border-accent/15 px-3 py-2",children:[n.jsx(tn,{event:t}),n.jsx("span",{className:"font-mono text-[11px] uppercase tracking-[0.12em] text-muted-foreground",children:t.kind})]}),n.jsxs("div",{className:"px-3 py-2",children:[n.jsx("div",{className:"font-mono text-[11px] font-medium uppercase tracking-[0.13em] text-accent",children:"selected event"}),n.jsx("div",{className:"mt-1 break-words text-[14px] font-normal leading-5 text-foreground",children:Ie(t)})]})]}),an(t).map(u=>n.jsx(rn,{section:u},u.title)),n.jsx(nn,{events:r,selectedId:t.id}),n.jsx(et,{label:"payload.data",value:t.data??{}}),t.kind==="metric"&&t.tags?n.jsx(et,{label:"metric.tags",value:t.tags}):null,t.kind==="span"&&t.error?n.jsx(et,{label:"span.error",value:t.error}):null]}):n.jsx("div",{className:"rounded-md border border-border/60 bg-muted/20 p-4 text-[13px] leading-6 text-muted-foreground",children:"No event selected."})})]})}function Ke({label:e,children:t}){return n.jsxs("div",{children:[n.jsx("div",{className:"font-mono text-[11px] uppercase tracking-[0.14em] text-muted-foreground",children:e}),n.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:t})]})}function ve({active:e,onClick:t,children:r}){return n.jsx("button",{type:"button",onClick:t,className:`rounded-md border px-2 py-1 font-mono text-[11px] uppercase tracking-[0.1em] transition-colors ${e?"border-accent/30 bg-accent/10 text-accent":"border-border/70 bg-muted/20 text-muted-foreground hover:border-border hover:text-foreground"}`,children:r})}function De({column:e,label:t,sort:r,onSort:s}){const a=r.key===e,i=a?r.direction==="asc"?Ut:Ft:Wt,u=r.direction==="asc"?"ascending":"descending";return n.jsxs("button",{type:"button","aria-label":`Sort by ${t}${a?`, currently ${u}`:""}`,"aria-pressed":a,onClick:()=>s(e),className:`flex min-w-0 items-center gap-1.5 text-left uppercase tracking-[0.14em] transition ${a?"text-accent":"text-muted-foreground hover:text-foreground"}`,children:[n.jsx("span",{className:"min-w-0 truncate",children:t}),n.jsx(i,{size:10,strokeWidth:1.75,"aria-hidden":"true",className:"shrink-0"})]})}function en({ariaLabel:e,copied:t,disabled:r=!1,label:s,onClick:a}){return n.jsx("button",{type:"button","aria-label":e,disabled:r,onClick:a,className:"rounded-md border border-border/70 bg-muted/20 px-2 py-1 font-mono text-[11px] font-normal uppercase tracking-[0.11em] text-muted-foreground transition hover:border-accent/30 hover:text-accent disabled:cursor-not-allowed disabled:opacity-40",children:t?"copied":s})}function tn({event:e}){const t=xe(e),r=Fe(e),s=r==="red"?"border-destructive/30 bg-destructive/10 text-destructive":r==="amber"?"border-warning/30 bg-warning/10 text-warning":r==="emerald"?"border-success/30 bg-success/10 text-success":"border-accent/30 bg-accent/10 text-accent";return n.jsx("span",{className:`rounded-full border px-2 py-0.5 font-mono text-[10px] uppercase tracking-[0.11em] ${s}`,children:t})}function rn({section:e}){return n.jsxs("section",{className:"overflow-hidden rounded-md border border-border/60 bg-muted/15",children:[n.jsx("div",{className:"border-b border-border/50 bg-muted/30 px-3 py-2 font-mono text-[10px] font-medium uppercase tracking-[0.14em] text-foreground/70",children:e.title}),n.jsx("div",{className:"divide-y divide-border/40",children:e.rows.map(t=>n.jsx(sn,{row:t},`${e.title}-${t.label}`))})]})}function nn({events:e,selectedId:t}){return e.length<=1?null:n.jsxs("section",{className:"overflow-hidden rounded-md border border-border/60 bg-muted/15",children:[n.jsxs("div",{className:"flex items-center justify-between border-b border-border/50 bg-muted/30 px-3 py-2",children:[n.jsx("div",{className:"font-mono text-[10px] font-medium uppercase tracking-[0.14em] text-foreground/70",children:"Trace lines"}),n.jsx("div",{className:"font-mono text-[10px] font-light uppercase tracking-[0.12em] text-muted-foreground",children:e.length})]}),n.jsx("div",{className:"divide-y divide-border/40",children:e.map(r=>{const s=Rt(Je(r));return n.jsxs("div",{className:`grid grid-cols-[74px_82px_minmax(0,1fr)] gap-2 px-3 py-1.5 ${r.id===t?"bg-accent/10":""}`,children:[n.jsx("span",{className:"font-mono text-[10px] tabular-nums text-muted-foreground",children:ut(r)}),n.jsx("span",{className:`font-mono text-[10px] uppercase tracking-[0.11em] ${lt(r)}`,children:xe(r)}),n.jsx("span",{className:"min-w-0 truncate text-[12px] text-foreground/80",children:s??Ie(r)})]},`${r.id}-${r.timestamp}`)})})]})}function sn({row:e}){return n.jsxs("div",{className:"grid grid-cols-[96px_minmax(0,1fr)] items-start gap-3 px-3 py-2",children:[n.jsx("div",{className:"font-mono text-[10px] font-light uppercase tracking-[0.12em] text-muted-foreground",children:e.label}),n.jsx("div",{className:`min-w-0 break-words text-[12px] leading-5 ${e.mono?"font-mono tabular-nums":"font-sans"} ${cn(e.tone)}`,children:e.value})]})}function et({label:e,value:t}){return n.jsxs("div",{className:"overflow-hidden rounded-md border border-border/60 bg-muted/15",children:[n.jsx("div",{className:"border-b border-border/50 bg-muted/30 px-3 py-2 font-mono text-[10px] font-medium uppercase tracking-[0.14em] text-foreground/70",children:e}),n.jsx("pre",{className:"max-h-[360px] overflow-auto whitespace-pre-wrap break-words p-3 font-mono text-[12px] font-light leading-5 text-foreground/80 lg:max-h-none lg:overflow-x-auto",children:JSON.stringify(t,null,2)})]})}function nt(e){return it(e)}function on(e){const t=V(e);return h(t,"workspaceId")??h(t,"targetWorkspaceId")}function He(e){const t=V(e),r=it(e);return h(t,"appName")??h(t,"appId")??r??h(t,"workspaceName")??h(t,"workspaceId")??h(t,"serviceId")??h(t,"target")??"-"}function an(e){const t=[{title:"Identity",rows:[{label:"id",value:e.id,mono:!0},{label:"kind",value:e.kind,tone:"cyan",mono:!0},{label:"category",value:e.category??"none",mono:!0}]},{title:"Signal",rows:[{label:ln(e),value:xe(e),tone:Fe(e),mono:!0},{label:"timestamp",value:tt(e.timestamp),mono:!0}]}];if(Me(e)){const r=V(e),s=Le(e),a=at(e);t.push({title:"Agent Action",rows:[{label:"source",value:h(r,"source")??"agent",mono:!0},{label:"status",value:h(r,"status")??xe(e),tone:Fe(e),mono:!0},{label:"action",value:h(r,"action")??Ie(e),mono:!0},{label:"target",value:He(e),mono:!0},{label:"workspace",value:h(r,"workspaceName")??h(r,"workspaceId")??"unknown",mono:!0},...s?[{label:"trace",value:s,mono:!0}]:[],...a?[{label:"parent",value:a,mono:!0}]:[]]});const i=fn(e),u=Cr(e);(i||u)&&t.push({title:"Request",rows:[...i?[{label:"prompt",value:i}]:[],...u?[{label:"lines",value:String(u.eventCount),mono:!0},{label:"duration",value:`${u.durationMs}ms`,mono:!0}]:[]]})}return e.kind==="log"&&t.push({title:"Log",rows:[{label:"message",value:e.message},{label:"level",value:e.level,tone:Fe(e),mono:!0}]}),e.kind==="metric"&&t.push({title:"Metric",rows:[{label:"name",value:e.name},{label:"type",value:e.metricType,tone:"emerald",mono:!0},{label:"value",value:un(e),tone:"emerald",mono:!0},{label:"unit",value:e.unit??"none",mono:!0}]}),e.kind==="span"&&t.push({title:"Trace",rows:[{label:"name",value:e.name},{label:"trace id",value:e.traceId,mono:!0},{label:"parent id",value:e.parentId??"none",mono:!0},{label:"status",value:e.status,tone:Fe(e),mono:!0},{label:"duration",value:e.durationMs===void 0?"active":`${e.durationMs}ms`,mono:!0},{label:"started",value:tt(e.startTime),mono:!0},{label:"ended",value:e.endTime===void 0?"pending":tt(e.endTime),mono:!0}]}),t}function Ie(e){if(e.kind==="log"){if(Me(e)){const t=V(e),r=Rt(Je(e));if(r){const u=h(t,"status");return u?`${r} ${u}`:r}const s=h(t,"action")??h(t,"commandId")??e.message,a=h(t,"status"),i=vt(s);return a?`${i} ${a}`:i}return e.message}return Me(e)?vt(e.name):e.name}function xe(e){return e.kind==="log"?Me(e)?h(V(e),"status")??e.level:e.level:e.kind==="metric"?e.metricType:e.status}function lt(e){const t=xe(e);return t==="error"||t==="failed"?"text-destructive":t==="warn"||t==="active"||t==="started"?"text-warning":e.kind==="metric"||t==="ok"||t==="completed"?"text-success":"text-accent"}function Fe(e){const t=xe(e);return t==="error"||t==="failed"?"red":t==="warn"||t==="active"||t==="started"?"amber":e.kind==="metric"||t==="ok"||t==="completed"?"emerald":"cyan"}function cn(e="neutral"){return e==="red"?"text-destructive":e==="amber"?"text-warning":e==="emerald"?"text-success":e==="cyan"?"text-accent":"text-foreground"}function ln(e){return e.kind==="log"?"level":e.kind==="metric"?"type":"status"}function un(e){return`${e.value}${e.unit?` ${e.unit}`:""}`}function tt(e){const t=new Date(e);return`${t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}.${String(t.getMilliseconds()).padStart(3,"0")}`}function st(e){return e.length>10?e.slice(-10):e}function Te(e){return e.kind==="span"?`${e.kind}:${e.id}:${e.status}:${e.endTime??"active"}`:`${e.kind}:${e.id}:${e.timestamp}`}function ut(e){return new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function ot(e){return[ut(e),e.kind,xe(e),e.category??"",He(e),Ie(e),e.id,JSON.stringify(e.data??{})].map(pn)}function dn(e,t){return[Ie(e),e.category??"",JSON.stringify(e.data??{}),...t.map(s=>`${Ie(s)} ${JSON.stringify(s.data??{})}`)].join(" ").toLowerCase()}function fn(e){const r=V(e).args,s=r&&typeof r=="object"&&!Array.isArray(r)?r.prompt:void 0;return typeof s!="string"||!s.trim()?null:s.replace(/\s+/g," ").trim().slice(0,360)}function mn(e){return[["time","kind","signal","category","target","message","id","payload"].join(" "),...e.map(t=>ot(t).join(" "))].join(`
47
- `)}function pn(e){return e.replace(/\s+/g," ").trim()}function xn(e){return e==="time"?"desc":"asc"}function gn(e,t){const r=t.direction==="asc"?1:-1;return e.map((s,a)=>({event:s,index:a})).sort((s,a)=>{const i=hn(Nt(s.event,t.key),Nt(a.event,t.key));return i===0?s.index-a.index:i*r}).map(({event:s})=>s)}function Nt(e,t){switch(t){case"time":return e.timestamp;case"kind":return e.kind;case"level":return xe(e);case"category":return e.category??"";case"target":return He(e);case"message":return Ie(e);case"id":return st(e.id)}}function hn(e,t){return typeof e=="number"&&typeof t=="number"?e-t:String(e).localeCompare(String(t),void 0,{numeric:!0,sensitivity:"base"})}async function bn(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly","true"),t.style.position="fixed",t.style.left="-9999px",t.style.top="0",document.body.appendChild(t),t.focus(),t.select();try{return document.execCommand("copy")}finally{document.body.removeChild(t)}}function yn(e,t,r){const s=new Set,a=[];for(const i of t)s.has(i.id)||(s.add(i.id),a.push(i));for(let i=e.length-1;i>=0;i--){const u=e[i];s.has(u.id)||(s.add(u.id),a.push(u))}return a.sort((i,u)=>u.timestamp-i.timestamp),a.slice(0,r)}function vn(e){return e==="red"?"text-destructive":e==="amber"?"text-warning":"text-success"}function wn(e){return e==="red"?"bg-destructive":e==="amber"?"bg-warning":"bg-success"}function Mt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function kn(e,t){const r=e.toLowerCase();return r.includes("secret")||r.includes("token")||r.includes("password")||r.includes("apikey")||r.includes("api_key")||t[0]==="set_environment_variable"&&r==="value"}function We(e,t=[]){if(Array.isArray(e))return e.map(s=>We(s,t));if(!Mt(e))return e;const r={};for(const[s,a]of Object.entries(e))r[s]=kn(s,t)?"[redacted]":We(a,[...t,s]);return r}function jn(e){if(e)return e instanceof Error?{name:e.name,message:e.message}:Mt(e)?We(e):{message:String(e)}}function _n(e,t=Ue){const r=e.status??"started",s=r==="failed"?"error":"info";return t.logger[s]("hudson.agent.action",{category:"agent-action",data:{triggeredBy:"agent",source:e.source??"external",origin:e.origin,actor:e.actor,status:r,toolset:e.toolset,chatId:e.chatId,action:e.action,commandId:e.commandId,appId:e.appId,appName:e.appName,workspaceId:e.workspaceId,workspaceName:e.workspaceName,traceId:e.traceId,parentTraceId:e.parentTraceId,args:e.args?We(e.args,[e.action??""]):void 0,metadata:e.metadata?We(e.metadata):void 0,error:jn(e.error)}})}export{In as H,nr as T,Vr as a,Jt as b,cr as c,Xt as d,Ue as e,An as f,Rn as g,_n as l,Tn as u};
@@ -1 +0,0 @@
1
- import{j as o}from"./index-DMiGbrBt.js";import{OpsScreen as i}from"./OpsScreen-Buf3LKjb.js";/* empty css */import"./Provider-C7UKGHQy.js";import"./router-Bq5dwf78.js";import"./terminal-sessions-D5CIR2OL.js";import"./api-h5zurxmi.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./time-DltNTpLl.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";/* empty css */import"./page-status-DpkedE1F.js";import"./AgentLanesView-B9vuEEmZ.js";/* empty css */import"./tail-events-D19uAGe3.js";import"./observe-CuLGD9Zp.js";import"./types-B0PlfpKc.js";import"./AgentAvatar-D90c1Rzk.js";import"./SpriteAvatar-DyaGuhik.js";import"./SessionObserve-yfXFafp8.js";import"./bash-format-BRV5C6Gv.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-Bla0gBdm.js";import"./lane-observe-D0rfKDnU.js";import"./lane-ask-display-B6iCAVcd.js";import"./mentions-jSuTGeet.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./openContent-C6XO6kr5.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";import"./message-markup-3J9pi3nx.js";import"./ObservedTopologyPanel-DyUeV98H.js";import"./ObserveTextFlow-rsFj_rVo.js";import"./use-reduced-motion-RRBkmVkk.js";import"./message-circle-CG-96zts.js";import"./wrench-Bkc_0lKF.js";import"./external-link-CXBytO9o.js";import"./AgentFloorView-8LoAEBwS.js";/* empty css */import"./agent-lanes-model-B4YTt4OF.js";import"./context-budget-CbB4BDcO.js";import"./lane-roster-store-D8x1jac2.js";import"./AgentLanesPreflight-eSAoDsPi.js";import"./AgentLaneChrome-D9ZwUKrl.js";import"./AgentLaneCard-RrNnDZu8.js";/* empty css */import"./AgentLaneSummaryResize-BhFmGNzT.js";import"./clipboard-e3fSpeo7.js";import"./agent-lane-card-model-r2frk57c.js";import"./agent-lane-preview-CmHVe3dU.js";import"./AgentLaneDetailSheet-BXbPls9N.js";import"./SlidePanel-COwtoJqR.js";import"./agent-lane-detail-Djm3YJEa.js";import"./LaneTraceDetailSheet-D1CspRbl.js";import"./LaneTraceEventFocus-BF9ERP5O.js";import"./MissionControlView-lUeAiSVg.js";/* empty css */import"./mission-control-store-BlnEhiCq.js";import"./MissionFocusOverlay-wlCmWDCT.js";import"./mission-control-model-C0fByIjm.js";import"./MissionLogPane-__MVtEl9.js";import"./OpsAgentsView-UN7iOscs.js";/* empty css */import"./DataTable-E8s_MmoA.js";/* empty css */import"./useAgentHoverCard-DMrbBif0.js";import"./sliders-horizontal-1oW76Xc9.js";import"./PlanView-C1CjH3PG.js";/* empty css */import"./AtopView-BCkae3e1.js";/* empty css */import"./TailView-DGj_5HA9.js";import"./useContentSecondaryNav-DMl1WNm7.js";import"./OpsSubnav-DsuXzHah.js";import"./SecondaryNav-B3-nh5dM.js";import"./secondaryNavConfig-DqUIp0Es.js";import"./message-square-DSaGpjFU.js";import"./scroll-text-D6Pdnar7.js";function st({route:r,navigate:t}){return r.view!=="ops"?null:o.jsx(i,{navigate:t,mode:r.mode,tailQuery:r.tailQuery})}export{st as OpsContent};
@@ -1 +0,0 @@
1
- import{j as i}from"./index-DMiGbrBt.js";import{AgentInfoScreen as r}from"./AgentInfoScreen-DZs2_ibL.js";import{AgentsScreen as m}from"./AgentsScreen-DBi8x4MB.js";/* empty css */import"./colors-BtO5_zlx.js";import"./conversation-model-B47vYmWN.js";import"./time-DltNTpLl.js";import"./api-h5zurxmi.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./text-DsBWV_4k.js";import"./Provider-C7UKGHQy.js";import"./router-Bq5dwf78.js";import"./terminal-sessions-D5CIR2OL.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./openContent-C6XO6kr5.js";import"./BackToPicker-BRvfostO.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";import"./ObservedTopologyPanel-DyUeV98H.js";/* empty css */import"./AgentsSubnav-DIEO4NPx.js";import"./SecondaryNav-B3-nh5dM.js";import"./secondaryNavConfig-DqUIp0Es.js";import"./message-square-DSaGpjFU.js";import"./scroll-text-D6Pdnar7.js";import"./library-D-RxGiCw.js";/* empty css */import"./SpriteAvatar-DyaGuhik.js";import"./AgentSessions-DyqOf4nG.js";import"./clipboard-e3fSpeo7.js";import"./agents-project-model-UYiamtrU.js";import"./profile-CVRziEDA.js";import"./AgentAvatar-D90c1Rzk.js";import"./context-budget-CbB4BDcO.js";import"./session-catalog-BmoyVTJ_.js";import"./terminal-relay-CWbJ1RCW.js";import"./ConversationScreen-BDRhx-RU.js";import"./ConversationComposer-Bla3DDvM.js";import"./message-markup-3J9pi3nx.js";import"./mentions-jSuTGeet.js";import"./AgentDetailCard-BcRBRp88.js";import"./message-visibility-kJM8XcSG.js";import"./sessionRead-CvFz2RHv.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-DE3FC0m-.js";import"./ConversationFeedRows-B_gPxcqA.js";import"./ConversationPanels-DLek4H6A.js";import"./use-reduced-motion-RRBkmVkk.js";import"./activity-CA8qS6PI.js";import"./message-circle-CG-96zts.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./tail-events-D19uAGe3.js";import"./ConversationStatus-BwVLiiO4.js";import"./conversation-icons-IIG5ha6D.js";import"./SessionObserve-yfXFafp8.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-Bla0gBdm.js";import"./lane-observe-D0rfKDnU.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObserveTextFlow-rsFj_rVo.js";import"./wrench-Bkc_0lKF.js";import"./external-link-CXBytO9o.js";import"./AgentDefinitionsWorkspace-CUpUrY57.js";import"./project-overview-helpers-BQTc_Ous.js";import"./FileViewerPane-CLgUhSm4.js";/* empty css */import"./agent-essentials-BSY1o46q.js";/* empty css *//* empty css */function _t({route:t,navigate:o}){return t.view==="agent-info"?i.jsx(r,{conversationId:t.conversationId,navigate:o}):t.view==="agents-v2"?i.jsx(m,{navigate:o,selectedAgentId:t.agentId,conversationId:t.conversationId,tab:t.tab,activeRoute:t}):null}export{_t as AgentsContent};
@@ -1 +0,0 @@
1
- import{j as o}from"./index-DMiGbrBt.js";import{SessionRefScreen as t}from"./SessionRefScreen-DRgJu7Jo.js";import{SessionsScreen as m}from"./SessionsScreen-D6XUsZfA.js";import{FlightObserveScreen as p}from"./FlightObserveScreen-6RpZYwVz.js";import"./api-h5zurxmi.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./tail-events-D19uAGe3.js";import"./BackToPicker-BRvfostO.js";import"./router-Bq5dwf78.js";import"./terminal-sessions-D5CIR2OL.js";import"./ConversationScreen-BDRhx-RU.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./createLucideIcon-OpA4Amw5.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./colors-BtO5_zlx.js";import"./time-DltNTpLl.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./keyboard-nav-2kv_tGUS.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./x-D3GElQbe.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./file-text-BODxCjcz.js";import"./ConversationComposer-Bla3DDvM.js";import"./Provider-C7UKGHQy.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./message-markup-3J9pi3nx.js";import"./mentions-jSuTGeet.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./openContent-C6XO6kr5.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";import"./message-visibility-kJM8XcSG.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";import"./AgentAvatar-D90c1Rzk.js";import"./SpriteAvatar-DyaGuhik.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-DE3FC0m-.js";import"./ConversationFeedRows-B_gPxcqA.js";import"./ConversationPanels-DLek4H6A.js";import"./use-reduced-motion-RRBkmVkk.js";import"./activity-CA8qS6PI.js";import"./message-circle-CG-96zts.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./ConversationStatus-BwVLiiO4.js";import"./conversation-icons-IIG5ha6D.js";import"./SessionObserve-yfXFafp8.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-Bla0gBdm.js";import"./lane-observe-D0rfKDnU.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-DyUeV98H.js";import"./ObserveTextFlow-rsFj_rVo.js";import"./wrench-Bkc_0lKF.js";import"./external-link-CXBytO9o.js";/* empty css */import"./RawSessionsTable-DL8y_eEy.js";/* empty css */import"./DataTable-E8s_MmoA.js";/* empty css *//* empty css */function Ki({route:i,navigate:r}){return i.view!=="sessions"?null:i.flightId?o.jsx(p,{route:{...i,flightId:i.flightId},navigate:r}):i.sessionId?o.jsx(t,{sessionRef:i.sessionId,navigate:r}):o.jsx(m,{navigate:r})}export{Ki as SessionsContent};
@@ -1 +0,0 @@
1
- import{r as a,j as s}from"./index-DMiGbrBt.js";import Mt from"./HomeHero-B3uYd-pP.js";import{TailView as xt}from"./TailView-DGj_5HA9.js";import{a as F}from"./api-h5zurxmi.js";import{u as yt}from"./observe-CuLGD9Zp.js";import{u as St}from"./sse-CjIkKo46.js";import{i as Q,o as kt}from"./surface-activity-B1rgWB1i.js";import{n as x,c as We,t as be}from"./time-DltNTpLl.js";import{b as jt,u as Nt}from"./router-Bq5dwf78.js";import{a as Ve,n as Pe}from"./colors-BtO5_zlx.js";import{e as At}from"./agent-chat-Bfjd9y6c.js";import{r as It,R as Et,e as Ct,a as Lt}from"./NewChatComposer-Cs6OsxK6.js";import{M as Rt}from"./runtime-picker-Bcl5iIX5.js";import{u as _t,m as Ot,e as Tt,h as Ht}from"./Provider-C7UKGHQy.js";import{r as $t}from"./operator-attention-BwSPeheT.js";import{e as Wt,i as ze,o as Ue,f as Pt,g as Bt}from"./agent-lanes-model-B4YTt4OF.js";import{HomeMovingSignalList as Ft}from"./home-moving-signal-CK147hxn.js";import{E as qt}from"./external-link-CXBytO9o.js";const Me="openscout:persistent-state-change";function Kt(e,t){typeof window>"u"||window.dispatchEvent(new CustomEvent(Me,{detail:{key:e,value:t}}))}function Be(e){try{return window.localStorage.getItem(e)}catch{return null}}function ye(e,t){try{window.localStorage.setItem(e,t)}catch{}Kt(e,t)}function Se(e){const[t,n]=a.useState(()=>typeof window>"u"?null:Be(e));return a.useEffect(()=>{n(Be(e));const o=i=>{const u=i.detail;!u||u.key!==e||n(u.value)},r=i=>{i.key===e&&n(i.newValue)};return window.addEventListener(Me,o),window.addEventListener("storage",r),()=>{window.removeEventListener(Me,o),window.removeEventListener("storage",r)}},[e]),t}function Vs(e,t){const n=Se(e),o=n===null?t:n==="true",r=a.useCallback(i=>{ye(e,i?"true":"false")},[e]);return[o,r]}function Dt(e,t){const n=Se(e),o=n===null?Number.NaN:Number(n),r=Number.isFinite(o)?o:t,i=a.useCallback(u=>{ye(e,String(u))},[e]);return[r,i]}function Fe(e,t){const o=Se(e)??t,r=a.useCallback(i=>{ye(e,i)},[e]);return[o,r]}const X=30*6e4,de="30m",Qe="recent",ue=[{key:"5m",label:"5m",windowMs:5*6e4},{key:"30m",label:"30m",windowMs:X},{key:"4h",label:"4h",windowMs:240*6e4},{key:"24h",label:"24h",windowMs:1440*6e4}],le={working:0,native:1,observed:2};function Gt(e){const t=e?.trim();return ue.some(n=>n.key===t)?t:de}function Vt(e){return ue.find(t=>t.key===e)??ue[1]}function zt(e){return e==="grouped"?"grouped":Qe}function Ut(e,t,n){if(n==="grouped"){const i=le[e.bucket]-le[t.bucket];if(i!==0)return i}const o=t.lastActivityAt-e.lastActivityAt;if(o!==0)return o;const r=le[e.bucket]-le[t.bucket];return r!==0?r:e.id.localeCompare(t.id)}function Ye(e,t,n=X){const o=x(e);return o!==null&&t-o<=n}function Je(e){const t=e?.trim().toLowerCase();return t?t==="pi"||t==="grok-acp"||t==="grok"?"grok":t:null}function Qt(e,t,n,o=[],r=X,i=de){return!!(n||Ve(e.state)||Wt(e,t,i)||Ze(e,o,t,r))}function Yt(e,t){const n=Je(e.harness);return n?n===t.source?.trim().toLowerCase():!1}function Ze(e,t,n,o=X){const r=e.harnessSessionId?.trim();if(!r)return!1;const i=n-o;return t.some(u=>{const d=x(u.ts);if(d===null||d<i||!Yt(e,u))return!1;const m=u.sessionId?.trim();return!!(m&&m===r)})}function Jt(e){const{agent:t,observeEntry:n,tailEvents:o,nowMs:r,movingAsk:i,windowMs:u=X}=e;if(i)return!0;const d=n?.data;if(ze(d))return!0;const m=Ue(d);return!!(m!==null&&r-m<=u||Ze(t,o,r,u)||Ve(t.state)&&Ye(t.updatedAt,r,u))}function Zt(e,t){const n=e?.metadata?.session,o=e?.metadata?.usage,r=o?.contextInputTokens,i=o?.contextWindowTokens,u=typeof r=="number"&&typeof i=="number"&&i>0?Math.min(100,Math.round(r/i*100)):null;return{sessionId:n?.externalSessionId??t?.sessionId??null,model:n?.model??t?.model??null,contextPct:u}}function Xe(e){if(!e)return null;const t=e.sessionId?.trim()||e.data?.metadata?.session?.externalSessionId?.trim();if(t)return`session:${t}`;const n=e.historyPath?.trim()||e.data?.metadata?.session?.threadPath?.trim();return n?`history:${n}`:null}function Xt(e){const t=e.observe?.metadata?.session,n=t?.externalSessionId?.trim();if(n)return`session:${n}`;const o=t?.threadPath?.trim();return o?`history:${o}`:null}function qe(e,t){const n=t?.sessionId?.trim()||t?.data?.metadata?.session?.externalSessionId?.trim(),o=e.harnessSessionId?.trim();return!!(n&&o&&n===o)}function es(e,t){const n=new Map,o=[];for(const r of e){const i=t[r.id],u=Xe(i);if(!u){o.push(r);continue}const d=n.get(u);if(d===void 0){n.set(u,o.length),o.push(r);continue}const m=o[d];!qe(m,t[m.id])&&qe(r,i)&&(o[d]=r)}return o}function pe(e,t){const{observeEntry:n,tailEvents:o,nowMs:r,movingAsk:i}=t;if(i)return x(i.updatedAt)??r;if(ze(n?.data))return r;const u=Ue(n?.data);if(u!==null)return u;const d=e.harnessSessionId?.trim(),m=Je(e.harness);let g=0;if(d)for(const b of o){if(m&&b.source!==m||b.sessionId?.trim()!==d)continue;const A=x(b.ts);A!==null&&(g=Math.max(g,A))}return g>0?g:x(e.updatedAt)??0}const ts=9;function ss(e){const{lanes:t}=Pt({transcripts:e.transcripts,tailEvents:e.tailEvents,processes:e.processes??[],scoutAgents:e.agents,observeCache:e.observeCache??{},now:e.nowMs,workingOnly:!0,horizon:e.horizon??de});return t.filter(n=>n.source==="native")}const $=[{label:"30m",value:30*6e4,activityLimit:80},{label:"6h",value:360*6e4,activityLimit:250},{label:"24h",value:1440*6e4,activityLimit:800}],Ke=$[2].value,ns="openscout.home.lookbackMs.v1",os="openscout.home.movingWindow.v1",is="openscout.home.movingSort.v1",as=6e4,rs=3e4,cs=3;function ls(e,t){const n=x(e);if(n===null)return"—";const o=Math.max(0,Math.floor((t-n)/1e3));if(o<60)return`${o}s`;const r=Math.floor(o/60);if(r<60)return`${r}m`;const i=Math.floor(r/60);return i<48?`${i}h`:`${Math.floor(i/24)}d`}function us(e,t=140){const n=(e??"").replace(/\s+/g," ").trim();return n?n.length>t?`${n.slice(0,t-1)}…`:n:""}function ds(e){return{handoff_sent:"handed off",handoff_received:"received handoff",flight_updated:"replied",ask_sent:"sent a request",ask_replied:"answered",message_sent:"said",message_received:"received"}[e]??e.replace(/[._]/g," ")}function ms(e){return e.conversationId?{view:"conversation",conversationId:e.conversationId}:e.recordId?{view:"work",workId:e.recordId}:e.agentId?{view:"agents-v2",agentId:e.agentId}:null}function fs(e){const t=Math.round(e/6e4);if(t<60)return`${t}m`;const n=t/60;return`${Number.isInteger(n)?n:n.toFixed(1)}h`}function xe(e){if(!Number.isFinite(e)||e<=0)return"now";const t=Math.floor(e/1e3);if(t<60)return`${t}s`;const n=Math.floor(t/60);if(n<60)return`${n}m`;const o=Math.floor(n/60);return o<48?`${o}h`:`${Math.floor(o/24)}d`}function vs(e,t,n){if(e.length===0)return null;const o=e.map(m=>x(m.ts)).filter(m=>m!==null).sort((m,g)=>g-m);if(o.length===0)return null;const r=o[0],i=o[o.length-1];let u=0;for(let m=1;m<o.length;m++)u=Math.max(u,o[m-1]-o[m]);const d=n-t;return u=Math.max(u,i-d),{count:e.length,lastAgoMs:Math.max(0,n-r),longestGapMs:Math.max(0,u)}}function hs(e){const t=e.map(o=>Math.sqrt(o)),n=[.56,.28,.11,.05];return t.map((o,r)=>{let i=0,u=0;for(let d=-3;d<=3;d++){const m=r+d;if(m<0||m>=t.length)continue;const g=n[Math.abs(d)]??0;i+=t[m]*g,u+=g}return u>0?i/u:0})}function gs(e,t,n){if(e.length<2||t.length===0)return e;const o=Math.max(1,e[1].ts-e[0].ts),r=e[0].ts,i=e[e.length-1].ts+o,u=e.map(g=>g.count);for(const g of t){const b=x(g.ts);if(b===null||b<r||b>n||b>=i)continue;const A=Math.floor((b-r)/o);A>=0&&A<u.length&&(u[A]=(u[A]??0)+1)}const d=hs(u),m=Math.max(1,...d);return e.map((g,b)=>({...g,count:u[b]??g.count,value:(d[b]??0)/m}))}function we(e){return e.status==="fulfilled"?null:ps(e.reason instanceof Error?e.reason.message:String(e.reason))}function ps(e){return/failed to fetch|networkerror|load failed|couldn't connect|connection refused/i.test(e)?"Scout server is unreachable":e}function ws(e){return e==="Scout server is unreachable"}function De({navigate:e}){const{agents:t,onboarding:n,reload:o,route:r}=_t(),i=jt(r),u=a.useMemo(()=>Ot(t,i),[t,i]),d=a.useMemo(()=>Tt(t,i),[t,i]),[m,g]=a.useState(null),[b,A]=a.useState([]),[q,ee]=a.useState("trailing 7d"),[K,te]=a.useState("3h buckets"),[w,se]=a.useState([]),[D,ne]=a.useState(null),[oe,I]=a.useState([]),[y,ie]=a.useState(!0),[f,S]=a.useState(!1),[M,W]=a.useState(null),[P,et]=a.useState(null),Y=a.useRef(null),ke=a.useRef(0),je=a.useRef(0),me=a.useRef(null);a.useEffect(()=>{me.current=m},[m]);const G=a.useCallback(async(c=!1)=>(await F(`/api/service-budgets${c?"?refresh=1":""}`,{cache:"no-store"})).gauges??[],[]),V=a.useMemo(()=>Ht(m,u),[m,u]),[L,Ne]=Dt(ns,Ke),J=a.useMemo(()=>$.find(c=>c.value===L)??$[$.length-1],[L]),[tt,st]=Fe(os,de),B=Gt(tt),_=Vt(B),[nt,ot]=Fe(is,Qe),ae=zt(nt),Ae=a.useMemo(()=>Bt(B),[B]),E=a.useCallback(async(c="initial")=>{const l=++ke.current;!(me.current!==null)&&c!=="background"?(ie(!0),W(null)):S(!0);const p=new URLSearchParams({activityLookbackMs:String(J.value),activityLimit:String(J.activityLimit)}).toString(),[C,T,j]=await Promise.allSettled([F(`/api/fleet?${p}`),F("/api/heartrate"),o()]);if(l!==ke.current)return;C.status==="fulfilled"&&(me.current=C.value,g(C.value)),T.status==="fulfilled"&&(A(T.value.buckets),ee(T.value.windowLabel),te(T.value.bucketLabel??""));const H=[we(C),we(T),we(j)].filter(U=>!!U);W(H[0]??null),H.length<4&&et(Date.now()),ie(!1),S(!1)},[o,J]),it=a.useCallback(()=>{Q()&&(Y.current||(Y.current=setTimeout(()=>{Y.current=null,E("background")},250)))},[E]);a.useEffect(()=>(E(),()=>{Y.current&&clearTimeout(Y.current)}),[E]),St(it),a.useEffect(()=>{let c=!1;const l=async()=>{try{const C=await G();c||I(C)}catch{}};l();const v=setInterval(()=>{Q()&&l()},as),p=()=>{document.visibilityState==="visible"&&Q()&&l()};return window.addEventListener("focus",p),document.addEventListener("visibilitychange",p),()=>{c=!0,clearInterval(v),window.removeEventListener("focus",p),document.removeEventListener("visibilitychange",p)}},[G]);const Z=a.useCallback(async()=>{try{const c=new URLSearchParams({limit:String(Ae),transcripts:"true"}),[l,v]=await Promise.all([F(`/api/tail/recent?${c.toString()}`),F("/api/tail/discover").catch(()=>null)]);se(l.events??[]),v&&ne(v)}catch{}},[Ae]);a.useEffect(()=>{Z();const c=setInterval(()=>{Q()&&Z()},rs);return()=>clearInterval(c)},[Z]),a.useEffect(()=>{const c=setInterval(()=>{Q()&&E("background")},15e3);return()=>clearInterval(c)},[E]),a.useEffect(()=>kt(()=>{const l=Date.now();l-je.current<1e3||(je.current=l,E("background"),G().then(I).catch(()=>null),Z())}),[G,E,Z]);const[h,at]=a.useState(()=>Date.now());a.useEffect(()=>{const c=setInterval(()=>{Q()&&at(Date.now())},1e3);return()=>clearInterval(c)},[]);const Ie=a.useMemo(()=>(V?.activeAsks??[]).filter(c=>c.status==="queued"||c.status==="working"),[V]),re=a.useMemo(()=>Ie.filter(c=>Ye(c.updatedAt,h,_.windowMs)),[Ie,_.windowMs,h]),O=a.useMemo(()=>{const c=new Map;for(const l of re){const v=c.get(l.agentId),p=x(l.updatedAt)??0,C=x(v?.updatedAt)??0;(!v||p>C)&&c.set(l.agentId,l)}return c},[re]),rt=a.useMemo(()=>d.filter(c=>Qt(c,h,O.has(c.id),w,_.windowMs,B)),[d,O,_.windowMs,B,h,w]),k=yt(rt),R=a.useMemo(()=>{const l=d.filter(v=>Jt({agent:v,observeEntry:k[v.id],tailEvents:w,nowMs:h,movingAsk:O.get(v.id),windowMs:_.windowMs})).sort((v,p)=>pe(p,{observeEntry:k[p.id],tailEvents:w,nowMs:h,movingAsk:O.get(p.id)})-pe(v,{observeEntry:k[v.id],tailEvents:w,nowMs:h,movingAsk:O.get(v.id)}));return es(l,k)},[d,O,_.windowMs,k,w,h]);a.useMemo(()=>{const c={};for(const l of R)c[l.id]=Zt(k[l.id]?.data);return c},[k,R]);const Ee=a.useMemo(()=>new Set(R.map(c=>c.id)),[R]),Ce=a.useMemo(()=>{const c=new Set;for(const l of R){const v=Xe(k[l.id]);v&&c.add(v)}return c},[k,R]),Le=a.useMemo(()=>ss({agents:d,tailEvents:w,transcripts:D?.transcripts??[],processes:D?.processes??[],observeCache:k,nowMs:h,horizon:B}).filter(l=>{if(Ee.has(l.agent.id))return!1;const v=Xt(l);return!(v&&Ce.has(v))}).sort((l,v)=>v.lastActiveAt-l.lastActiveAt),[d,B,k,h,D,w,Ee,Ce]),fe=a.useMemo(()=>re.filter(c=>!R.some(l=>l.id===c.agentId)).sort((c,l)=>We(c.updatedAt,l.updatedAt)),[R,re]),Re=h-L,N=a.useMemo(()=>{const c=(V?.activity??[]).filter(l=>(x(l.ts)??0)>=Re);return c.filter((l,v)=>{const p=c[v-1];return p?!(p.title===l.title&&p.summary===l.summary&&p.conversationId===l.conversationId&&Math.abs((x(p.ts)??0)-(x(l.ts)??0))<=5e3):!0})},[V?.activity,Re]),ve=a.useMemo(()=>vs(N,L,h),[N,L,h]),he=N.length>=J.activityLimit,ct=a.useMemo(()=>{const c=$.findIndex(l=>l.value===L);return c>=0&&c<$.length-1?$[c+1]:null},[L]),lt=new Date,ut=Nt("ops.control",!0),ge=n?.operatorName?.trim()||n?.operatorNameSuggestion?.trim()||"operator",dt=a.useMemo(()=>gs(b,w,h),[b,w,h]),_e=a.useMemo(()=>{const c=h-_.windowMs,l=V?.activity??[],v=new Set(d.map(j=>j.name.toLowerCase())),p=new Set(d.map(j=>j.id)),C=new Set(["agent_message","status_message","ask_opened","ask_working","ask_failed","handoff_sent","collaboration_event"]),T=new Map;for(const j of l){const H=x(j.ts);if(H===null||H<c||!C.has(j.kind))continue;const U=j.actorName?.trim();if(!U||U.toLowerCase()===ge.toLowerCase()||v.has(U.toLowerCase())||j.agentId&&p.has(j.agentId))continue;const He=U.toLowerCase(),$e=T.get(He),bt=x($e?.ts)??0;(!$e||H>bt)&&T.set(He,j)}return[...T.values()].sort((j,H)=>We(j.ts,H.ts))},[V?.activity,_.windowMs,h,d,ge]),mt=y?"syncing":M?`${ws(M)?"offline":"sync issue"} · ${P?be(P):"waiting"}`:P?`updated ${be(P)}`:"waiting",ft=a.useCallback(()=>{E("manual"),G(!0).then(c=>I(c)).catch(()=>{})},[G,E]),vt={now:lt,operatorName:ge,syncLabel:mt,error:M,loading:y,refreshing:f,onRefresh:ft,navigate:e,opsEnabled:ut,heartrate:dt,heartrateWindow:q,heartrateBucketLabel:K,heartrateVisibleEventThreshold:cs,serviceGauges:oe},ht=!y&&!M&&N.length===0&&L>=Ke,gt=!y&&!M&&N.length===0,pt=y||N.length>0||!!M||!ht,Oe=a.useMemo(()=>[...R.map(l=>({bucket:"working",id:l.id,agent:l,lastActivityAt:pe(l,{observeEntry:k[l.id],tailEvents:w,nowMs:h,movingAsk:O.get(l.id)})})),...Le.map(l=>({bucket:"native",id:l.id,lane:l,lastActivityAt:l.lastActiveAt})),..._e.map(l=>({bucket:"observed",id:l.id,actor:l,lastActivityAt:x(l.ts)??0}))].sort((l,v)=>Ut(l,v,ae)),[O,ae,Le,h,k,_e,w,R]),Te=Oe.slice(0,ts),ce=Te.length,z=Oe.length+fe.length,wt=z>ce&&ce>0?`What's moving · ${ce} of ${z}`:`What's moving · ${z}`;return s.jsx("div",{className:"s-fleet-home",children:s.jsxs("div",{className:"s-fleet-home-inner",children:[s.jsx(Mt,{...vt}),(z>0||y)&&s.jsxs("div",{className:"s-fleet-section",children:[s.jsx(Ge,{label:y&&z===0?"What's moving":wt,right:s.jsxs("div",{className:"s-moving-controls",children:[s.jsx(bs,{sort:ae,onSortChange:ot,windowKey:_.key,onWindowChange:st}),s.jsx("button",{className:"s-link-btn",onClick:()=>e({view:"mesh"}),children:"open mesh ↗"})]})}),y&&z===0?s.jsx(ys,{}):s.jsxs(s.Fragment,{children:[ce>0&&s.jsx(Ft,{cards:Te,sort:ae,nowMs:h,movingAskByAgent:O,observeCache:k,navigate:e}),fe.length>0&&s.jsx("div",{className:"s-moving-ask-list",children:fe.map(c=>s.jsx(Ms,{ask:c,navigate:e},c.invocationId))})]})]}),pt&&s.jsxs("div",{className:"s-fleet-section",children:[s.jsx(Ge,{label:`Live activity · ${N.length}${he?"+":""}`,right:s.jsx(xs,{value:L,onChange:Ne,refreshing:f&&!y})}),ve&&s.jsxs("div",{className:"s-fleet-live-shape",children:[s.jsxs("span",{children:["last ",xe(ve.lastAgoMs)," ago"]}),s.jsx("span",{children:"·"}),s.jsxs("span",{children:["longest gap ",xe(ve.longestGapMs)]}),he&&s.jsxs(s.Fragment,{children:[s.jsx("span",{children:"·"}),s.jsxs("span",{style:{color:"var(--amber)"},children:["showing ",Math.min(N.length,30)," of ",J.activityLimit,"+ (capped)"]})]}),!he&&N.length>30&&s.jsxs(s.Fragment,{children:[s.jsx("span",{children:"·"}),s.jsxs("span",{children:["showing 30 of ",N.length]})]})]}),y&&N.length===0?s.jsx(Ss,{}):N.length===0?s.jsx(ks,{lookbackMs:L,nextOption:ct,onWiden:c=>Ne(c.value),loadedAt:P,nowMs:h,error:M,onRetry:()=>{E("manual")}}):s.jsx("div",{className:"s-mc-stream s-fleet-live-stream",children:N.slice(0,30).map(c=>s.jsx(As,{item:c,nowMs:h,onOpen:()=>{const l=ms(c);l&&e(l)}},c.id))})]}),gt&&s.jsx("div",{className:"s-fleet-section s-fleet-section--quiet-start",children:s.jsx(Ns,{agents:d,navigate:e})})]})})}function Ge({label:e,right:t}){return s.jsxs("div",{className:"s-section-rule",children:[s.jsx("span",{className:"s-eyebrow",children:e}),s.jsx("span",{className:"s-section-rule-line"}),t&&s.jsx("span",{className:"s-section-rule-right",children:t})]})}function bs({sort:e,onSortChange:t,windowKey:n,onWindowChange:o}){return s.jsxs("div",{className:"s-moving-controlset","aria-label":"Moving cards controls",children:[s.jsxs("div",{className:"s-mc-window s-moving-window",role:"group","aria-label":"Moving sort",children:[s.jsx("span",{className:"s-mc-window-label",children:"Sort"}),s.jsx("div",{className:"s-mc-window-tabs",children:[["recent","Recent"],["grouped","Grouped"]].map(([r,i])=>s.jsx("button",{type:"button",className:`s-mc-window-tab${e===r?" is-active":""}`,onClick:()=>t(r),children:i},r))})]}),s.jsxs("div",{className:"s-mc-window s-moving-window",role:"group","aria-label":"Moving activity window",children:[s.jsx("span",{className:"s-mc-window-label",children:"Window"}),s.jsx("div",{className:"s-mc-window-tabs",children:ue.map(r=>s.jsx("button",{type:"button",className:`s-mc-window-tab${n===r.key?" is-active":""}`,onClick:()=>o(r.key),children:r.label},r.key))})]})]})}function Ms({ask:e,navigate:t}){const n=$t(e);return s.jsxs("button",{className:"s-moving-ask-row",onClick:()=>t(n),children:[s.jsx("span",{className:"s-moving-ask-agent",children:e.agentName??e.agentId}),s.jsx("span",{className:"s-moving-ask-title",children:e.summary??e.task}),s.jsx("span",{className:"s-moving-ask-state",children:e.statusLabel}),s.jsx("span",{className:"s-moving-ask-time",children:be(e.updatedAt)})]})}function xs({value:e,onChange:t,refreshing:n}){return s.jsxs("div",{className:"s-mc-window",role:"group","aria-label":"Lookback window",children:[s.jsxs("span",{className:"s-mc-window-label",children:["Lookback",n&&s.jsx("span",{className:"s-mc-window-refreshing","aria-label":"refreshing"})]}),s.jsx("div",{className:"s-mc-window-tabs",children:$.map(o=>s.jsx("button",{type:"button",className:`s-mc-window-tab${o.value===e?" is-active":""}`,onClick:()=>t(o.value),children:o.label},o.value))})]})}function ys(){return s.jsx("div",{className:"s-moving-signal-stage s-moving-signal-skeleton","aria-hidden":"true",children:s.jsx("div",{className:"s-moving-signal-list",children:[0,1,2,3,4].map(e=>s.jsxs("div",{className:"s-moving-signal-row s-moving-signal-row--skeleton",children:[s.jsx("span",{className:"s-moving-signal-skeleton-age"}),s.jsx("span",{}),s.jsx("span",{className:"s-moving-signal-skeleton-where"}),s.jsx("span",{className:"s-moving-signal-skeleton-action"})]},e))})})}function Ss(){return s.jsx("div",{className:"s-mc-stream s-fleet-live-stream s-fleet-live-stream--skeleton","aria-hidden":"true",children:[0,1,2,3,4].map(e=>s.jsxs("div",{className:"s-fleet-live-skeleton-row",children:[s.jsx("span",{className:"s-fleet-live-skeleton-time"}),s.jsx("span",{className:"s-fleet-live-skeleton-actor"}),s.jsx("span",{className:"s-fleet-live-skeleton-text"})]},e))})}function ks({lookbackMs:e,nextOption:t,onWiden:n,loadedAt:o,nowMs:r,error:i,onRetry:u}){if(i)return s.jsxs("div",{className:"s-mc-empty s-fleet-live-empty",children:[s.jsx("div",{className:"s-fleet-live-empty-title",children:"Couldn’t load activity."}),s.jsx("div",{className:"s-fleet-live-empty-detail",children:i}),s.jsx("div",{className:"s-fleet-live-empty-actions",children:s.jsx("button",{type:"button",className:"s-link-btn",onClick:u,children:"Try again"})})]});const d=o?`Polled ${xe(Math.max(0,r-o))} ago.`:"Polling…";return s.jsxs("div",{className:"s-mc-empty s-fleet-live-empty",children:[s.jsxs("div",{className:"s-fleet-live-empty-title",children:["Quiet — no activity in the last ",fs(e),"."]}),s.jsx("div",{className:"s-fleet-live-empty-detail",children:d}),t&&s.jsx("div",{className:"s-fleet-live-empty-actions",children:s.jsxs("button",{type:"button",className:"s-link-btn",onClick:()=>n(t),children:["Widen to ",t.label," →"]})})]})}function js(e){return[...e].sort((t,n)=>{const o=Pe(t.state),r=Pe(n.state);return(o==="callable"?0:o==="in_turn"||o==="in_flight"?1:2)-(r==="callable"?0:r==="in_turn"||r==="in_flight"?1:2)||t.name.localeCompare(n.name)})}function Ns({agents:e,navigate:t}){const n=a.useMemo(()=>js(e),[e]),[o,r]=a.useState(()=>n[0]?.id??""),i=n.find(f=>f.id===o)??null,[u,d]=a.useState(null),[m,g]=a.useState(""),[b,A]=a.useState(i?.harness?.trim()??""),[q,ee]=a.useState(i?.model?.trim()??""),[K,te]=a.useState("medium"),[w,se]=a.useState(!1),[D,ne]=a.useState(null),oe=u??Et;a.useEffect(()=>{n.some(f=>f.id===o)||r(n[0]?.id??"")},[o,n]),a.useEffect(()=>{A(i?.harness?.trim()??""),ee(i?.model?.trim()??"")},[i?.id]),a.useEffect(()=>{const f=i?.projectRoot?.trim()||i?.cwd?.trim(),S=new URLSearchParams({scope:"global+project"});f&&S.set("projectRoot",f);let M=!1;return F(`/api/runner/options?${S.toString()}`).then(W=>{!M&&W.schemaVersion==="openscout.runtime-capabilities.v1"&&d(W)}).catch(()=>{}),()=>{M=!0}},[i?.cwd,i?.projectRoot]);const I=b||i?.harness?.trim()||"",y=a.useMemo(()=>{const f=It(oe);return I&&!f.harnesses.some(S=>S.value===I)?{...f,harnesses:[...f.harnesses,{value:I,label:I,models:[{value:"",label:"Default",note:"harness picks"}]}]}:f},[oe,I]);a.useEffect(()=>{const f=Ct(y,I,q);!f||f.some(S=>S.value===K)||te(f.find(S=>S.value==="medium")?.value??f[0]?.value??"")},[y,I,q,K]);const ie=async f=>{const S=m.trim();if(!(!i||!S||w)){se(!0),ne(null);try{const M=await At(i),W=await F("/api/send",{method:"POST",body:JSON.stringify({body:S,chatId:M,execution:{harness:b||void 0,model:q||void 0,reasoningEffort:K||void 0}})});g("");const P=W.conversationId??M;t({view:"conversation",conversationId:P})}catch(M){ne(M instanceof Error?M.message:String(M))}finally{se(!1)}}};return s.jsxs("div",{className:"s-quiet-start",children:[s.jsxs("div",{className:"s-quiet-panel s-quiet-panel--tail",children:[s.jsxs("div",{className:"s-quiet-panel-head",children:[s.jsx("span",{className:"s-eyebrow",children:"Local tail"}),s.jsxs("button",{type:"button",className:"s-icon-btn",title:"Open tail",onClick:()=>t({view:"ops",mode:"tail"}),children:[s.jsx(qt,{size:14,"aria-hidden":"true"}),s.jsx("span",{children:"Open tail"})]})]}),s.jsx("div",{className:"s-quiet-tail-frame",children:s.jsx(xt,{navigate:t,chrome:"embedded"})})]}),s.jsxs("div",{className:"s-quiet-panel s-quiet-panel--ask",children:[s.jsx("div",{className:"s-quiet-panel-head",children:s.jsx("span",{className:"s-eyebrow",children:"Message"})}),s.jsx("div",{className:"s-quiet-compose",children:s.jsx(Rt,{density:"panel",value:m,onChange:g,onSend:()=>{ie()},placeholder:"Type a message…",disabled:w||!i,sending:w,canSend:!w&&!!i&&m.trim().length>0,header:s.jsxs("div",{className:"s-quiet-target-row s-quiet-target-row--in-compose",children:[s.jsx("label",{className:"s-quiet-label",htmlFor:"home-catchup-agent",children:"To"}),s.jsx("select",{id:"home-catchup-agent",className:"s-quiet-select s-quiet-select--target",value:o,onChange:f=>r(f.target.value),disabled:n.length===0||w,children:n.length===0?s.jsx("option",{value:"",children:"No registered agents"}):n.map(f=>s.jsx("option",{value:f.id,children:f.name},f.id))})]}),tools:s.jsx(Lt,{catalog:y,value:{harness:I,model:q,effort:K},onChange:f=>{A(f.harness===(i?.harness?.trim()??"")?"":f.harness),ee(f.model),te(f.effort)},disabled:w||!i})})}),D&&s.jsx("div",{className:"s-quiet-error",children:D})]})]})}function As({item:e,nowMs:t,onOpen:n}){const o=e.actorName??"—",r=ds(e.kind),i=us(e.title??e.summary,110);return s.jsxs("button",{type:"button",className:"s-mc-stream-row",onClick:n,children:[s.jsx("span",{className:"s-mc-stream-time",children:ls(e.ts,t)}),s.jsx("span",{className:"s-mc-stream-actor",children:o}),s.jsx("span",{className:"s-mc-stream-verb",children:r}),s.jsx("span",{className:"s-mc-stream-text",children:i})]})}const zs=Object.freeze(Object.defineProperty({__proto__:null,HomeContent:De,HomeScreen:De},Symbol.toStringTag,{value:"Module"}));export{De as H,Dt as a,Fe as b,zs as c,Vs as u};
@@ -1 +0,0 @@
1
- import{j as t}from"./index-DMiGbrBt.js";import{WorkDetailScreen as i}from"./WorkDetailScreen-Bx0JimPC.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./StatusPill-DhBL__p8.js";import"./status-tone-BM_zuRy1.js";import"./WorkFilesViewer-Btl6C2Q1.js";import"./api-h5zurxmi.js";import"./chevron-right-XiIHsk4m.js";import"./chevron-down-BGk5qoEw.js";import"./mentions-jSuTGeet.js";import"./colors-BtO5_zlx.js";import"./index-CJXzfjo9.js";import"./Provider-C7UKGHQy.js";import"./router-Bq5dwf78.js";import"./terminal-sessions-D5CIR2OL.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./time-DltNTpLl.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./search-CWfZtOt2.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./openContent-C6XO6kr5.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";import"./BackToPicker-BRvfostO.js";import"./TailView-DGj_5HA9.js";import"./SlidePanel-COwtoJqR.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./tail-events-D19uAGe3.js";import"./message-square-DSaGpjFU.js";import"./radio-Bz8ZePxj.js";import"./external-link-CXBytO9o.js";import"./activity-CA8qS6PI.js";function fr({route:r,navigate:o}){return r.view!=="work"?null:t.jsx(i,{workId:r.workId,navigate:o})}export{fr as WorkContent};