@openscout/scout 0.2.78 → 0.2.79

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 (391) 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-DnqqRSlS.js +1 -0
  5. package/dist/client/assets/{AddProjectForm-DMnobKch.js → AddProjectForm-BoVtelSP.js} +1 -1
  6. package/dist/client/assets/{AgentAvatar-D90c1Rzk.js → AgentAvatar-CufDA4A-.js} +1 -1
  7. package/dist/client/assets/AgentConfigurationScreen-CJqoMA0J.js +1 -0
  8. package/dist/client/assets/AgentDefinitionsWorkspace-FpEkb-tu.js +1 -0
  9. package/dist/client/assets/{AgentDetailCard-BcRBRp88.js → AgentDetailCard-DxxVkgT1.js} +1 -1
  10. package/dist/client/assets/AgentFloorView-CycUn0Lv.js +1 -0
  11. package/dist/client/assets/AgentInfoScreen-CAQAxpAK.js +1 -0
  12. package/dist/client/assets/{AgentLaneCard-RrNnDZu8.js → AgentLaneCard-DTUvE96I.js} +1 -1
  13. package/dist/client/assets/{AgentLaneChrome-D9ZwUKrl.js → AgentLaneChrome-BfVygkgL.js} +1 -1
  14. package/dist/client/assets/{AgentLaneDetailSheet-BXbPls9N.js → AgentLaneDetailSheet-CWs9wKWk.js} +1 -1
  15. package/dist/client/assets/{AgentLaneSummaryResize-BhFmGNzT.js → AgentLaneSummaryResize-CMgzYvAA.js} +1 -1
  16. package/dist/client/assets/AgentLanesEmbedScreen-BUCW4nUj.js +1 -0
  17. package/dist/client/assets/{AgentLanesPreflight-eSAoDsPi.js → AgentLanesPreflight-KWfLcaNB.js} +1 -1
  18. package/dist/client/assets/AgentLanesView-CxfbV8Kd.js +2 -0
  19. package/dist/client/assets/{AgentLiveActions-DBtnD0qE.js → AgentLiveActions-CZdAInEu.js} +1 -1
  20. package/dist/client/assets/{AgentSessions-DyqOf4nG.js → AgentSessions-Bkr0lyry.js} +2 -2
  21. package/dist/client/assets/AgentsConsole-WtFVqaPJ.js +1 -0
  22. package/dist/client/assets/AgentsScreen-BMXvuiA2.js +1 -0
  23. package/dist/client/assets/AgentsSubnav-BTNjPYoA.js +1 -0
  24. package/dist/client/assets/{AtopView-BCkae3e1.js → AtopView-_OKDlZ1h.js} +1 -1
  25. package/dist/client/assets/BackToPicker-CkUmHuuo.js +1 -0
  26. package/dist/client/assets/{BriefingDetailScreen-BwFyysT8.js → BriefingDetailScreen-i54EtZKW.js} +1 -1
  27. package/dist/client/assets/{BriefingsScreen-BQEevztH.js → BriefingsScreen-CBrHojlQ.js} +1 -1
  28. package/dist/client/assets/{BrokerMetadataPanel-7UjcuNjd.js → BrokerMetadataPanel-opTLuZU6.js} +1 -1
  29. package/dist/client/assets/{BrokerScreen-7ekklu88.js → BrokerScreen-CObCQvoy.js} +2 -2
  30. package/dist/client/assets/{ChatCollapsedStrip-CQSYSd8s.js → ChatCollapsedStrip-Dr2vmKXQ.js} +1 -1
  31. package/dist/client/assets/CodeDiffPane-CLOGjwul.js +1 -0
  32. package/dist/client/assets/{CodeProjectPicker-DqKFCpLU.js → CodeProjectPicker-DTV8hR6A.js} +1 -1
  33. package/dist/client/assets/CodeScreen-BXqi72NK.js +1 -0
  34. package/dist/client/assets/{ContextMenu-bARZqTzD.js → ContextMenu-BlBQhpax.js} +1 -1
  35. package/dist/client/assets/{ConversationComposer-Bla3DDvM.js → ConversationComposer-BBNPa5S9.js} +1 -1
  36. package/dist/client/assets/ConversationFeedRows-BuejHMCY.js +1 -0
  37. package/dist/client/assets/ConversationHeader-DXMT-YXv.js +1 -0
  38. package/dist/client/assets/ConversationPanels-DHCtilQF.js +2 -0
  39. package/dist/client/assets/ConversationScreen-DSxIt9pq.css +1 -0
  40. package/dist/client/assets/ConversationScreen-Dz2d_Z_F.js +1 -0
  41. package/dist/client/assets/ConversationStatus-DSgdVofa.js +1 -0
  42. package/dist/client/assets/{DataTable-E8s_MmoA.js → DataTable-0DwuXyvW.js} +1 -1
  43. package/dist/client/assets/{DispatchAftermath-Dpe88DFX.js → DispatchAftermath-BrreQifA.js} +1 -1
  44. package/dist/client/assets/{DocumentFocusViewer-BeVwwl26.js → DocumentFocusViewer-DU_9BHsD.js} +1 -1
  45. package/dist/client/assets/{EmbeddableSurfacesLab-BQqFQVnI.js → EmbeddableSurfacesLab-DdaswbfI.js} +1 -1
  46. package/dist/client/assets/{EmptyState-4F9XDFQm.js → EmptyState-CoL-QuUO.js} +1 -1
  47. package/dist/client/assets/{FileViewerPane-CLgUhSm4.js → FileViewerPane-C9Ly01Ef.js} +1 -1
  48. package/dist/client/assets/{FleetSearch-Dz5euQJe.js → FleetSearch-DlWTLl-v.js} +1 -1
  49. package/dist/client/assets/FlightObserveScreen-C-9S0nA5.js +1 -0
  50. package/dist/client/assets/{FollowScreen-DZ4qfYOY.js → FollowScreen--Q04xSSE.js} +1 -1
  51. package/dist/client/assets/{HarnessMark-Cbv3Ib0c.js → HarnessMark-Dm_qm1Ku.js} +1 -1
  52. package/dist/client/assets/HarnessesScreen-Y54viPX8.js +1 -0
  53. package/dist/client/assets/{HomeHero-B3uYd-pP.js → HomeHero-Cfsow7qL.js} +1 -1
  54. package/dist/client/assets/KnowledgeSearchInspector-DKashKoH.js +1 -0
  55. package/dist/client/assets/KnowledgeSearchScreen-DsdDz8wY.js +1 -0
  56. package/dist/client/assets/{LaneToolHoverCard-Bla0gBdm.js → LaneToolHoverCard-BzehBmdi.js} +1 -1
  57. package/dist/client/assets/LaneTraceDetailSheet-CBf_aNZx.js +1 -0
  58. package/dist/client/assets/{LaneTraceEventFocus-BF9ERP5O.js → LaneTraceEventFocus-DYvHfs_3.js} +1 -1
  59. package/dist/client/assets/{MeshCanvas-DFEPkpqY.js → MeshCanvas-DIjlrMPU.js} +2 -2
  60. package/dist/client/assets/{MeshCanvasMinimap-CyVFYixr.js → MeshCanvasMinimap-DEq-PkF0.js} +1 -1
  61. package/dist/client/assets/MeshScreen-TgDtz-1l.js +1 -0
  62. package/dist/client/assets/{MeshTopologyView-CalkZghg.js → MeshTopologyView-BMHpH5BU.js} +2 -2
  63. package/dist/client/assets/{MessageComposerSuggestions-DpxN9WiB.js → MessageComposerSuggestions-zAUUcLOv.js} +1 -1
  64. package/dist/client/assets/MessagesScreen-BTQL0UcE.js +1 -0
  65. package/dist/client/assets/{MissionControlView-lUeAiSVg.js → MissionControlView-D59SPnAm.js} +1 -1
  66. package/dist/client/assets/{MissionFocusOverlay-wlCmWDCT.js → MissionFocusOverlay-C7cPt6eU.js} +1 -1
  67. package/dist/client/assets/MissionLeftAgentRow-CxlH3dON.js +1 -0
  68. package/dist/client/assets/{MissionLogPane-__MVtEl9.js → MissionLogPane-Ye3YlF9s.js} +1 -1
  69. package/dist/client/assets/{NewAgentModal-Bg-eWHpY.js → NewAgentModal-DprvD4EK.js} +1 -1
  70. package/dist/client/assets/NewChatComposer-B5FnPyzS.js +19 -0
  71. package/dist/client/assets/{NewChatOrigin-Bk2OyVjI.js → NewChatOrigin--pHWUb4V.js} +1 -1
  72. package/dist/client/assets/ObserveEmbedScreen-CfvrnOiZ.js +2 -0
  73. package/dist/client/assets/{ObserveTextFlow-rsFj_rVo.js → ObserveTextFlow-CBitljxi.js} +2 -2
  74. package/dist/client/assets/{ObservedTopologyPanel-DyUeV98H.js → ObservedTopologyPanel-Dv6fbHzW.js} +1 -1
  75. package/dist/client/assets/OpenScoutAppShell-BIp0WitK.js +87 -0
  76. package/dist/client/assets/OpsAgentsView-CoBfAigH.js +1 -0
  77. package/dist/client/assets/OpsScreen-Bbo0W64T.js +1 -0
  78. package/dist/client/assets/OpsSubnav-CoN8utF8.js +1 -0
  79. package/dist/client/assets/{PlanView-C1CjH3PG.js → PlanView-DYtt8H37.js} +1 -1
  80. package/dist/client/assets/ProjectAgentProfile-FiiIcB5R.js +1 -0
  81. package/dist/client/assets/{ProjectAgentProfileBar-CtTpj6fU.js → ProjectAgentProfileBar-B3IvVbqS.js} +1 -1
  82. package/dist/client/assets/ProjectAgentProfileHero-D5E8yvDj.js +1 -0
  83. package/dist/client/assets/ProjectsInbox-BWiXjGi7.js +2 -0
  84. package/dist/client/assets/{ProjectsRail-BgiuV4LR.js → ProjectsRail-DEDS-M1c.js} +1 -1
  85. package/dist/client/assets/ProjectsScreen-Cxk4CuYn.js +1 -0
  86. package/dist/client/assets/ProjectsThreadAside-BF66ugT5.js +1 -0
  87. package/dist/client/assets/Provider-tFc3jqZ4.js +1 -0
  88. package/dist/client/assets/{RailRow-BoGxAHNF.js → RailRow-BTlVAnHS.js} +1 -1
  89. package/dist/client/assets/RawSessionsTable-BsGVgZB3.js +1 -0
  90. package/dist/client/assets/RealtimeVoiceScreen-B0Bem5Rc.js +1 -0
  91. package/dist/client/assets/{RepoDiffEmbedScreen-C0rumUME.js → RepoDiffEmbedScreen-CtTdlQ2A.js} +1 -1
  92. package/dist/client/assets/{RepoDiffPageScreen-DMv6DioL.js → RepoDiffPageScreen-BRvaVYoC.js} +1 -1
  93. package/dist/client/assets/RepoDiffViewer-Bo0gREMj.js +7 -0
  94. package/dist/client/assets/RepoDiffViewerLazy-C8UPk4oo.js +2 -0
  95. package/dist/client/assets/{ReposScreen-CB_YBWYf.js → ReposScreen-BBkJf8xT.js} +2 -2
  96. package/dist/client/assets/{ScoutDeckSurface-CxIYFyWx.js → ScoutDeckSurface-Bi9ov9Bm.js} +1 -1
  97. package/dist/client/assets/{ScoutSurface-CYz_TcWC.js → ScoutSurface-DEQg_7Io.js} +1 -1
  98. package/dist/client/assets/{ScoutbotBroadcastChip-L_R9atj0.js → ScoutbotBroadcastChip-DJXuyn73.js} +1 -1
  99. package/dist/client/assets/{ScoutbotFxLab-CgiZMDMW.js → ScoutbotFxLab-BgsuLDjo.js} +1 -1
  100. package/dist/client/assets/{ScoutbotRealtimeVoiceCall-FMQOr1Np.js → ScoutbotRealtimeVoiceCall-Bzyl0BCS.js} +1 -1
  101. package/dist/client/assets/{SecondaryNav-B3-nh5dM.js → SecondaryNav-Bks0CO2h.js} +1 -1
  102. package/dist/client/assets/SessionEmbedScreen-b0Zgmfx5.js +1 -0
  103. package/dist/client/assets/SessionObserve-CLrHfAKZ.css +1 -0
  104. package/dist/client/assets/SessionObserve-Dlx5vDaV.js +12 -0
  105. package/dist/client/assets/SessionObserveEvidence-ChBD1d4c.js +1 -0
  106. package/dist/client/assets/SessionRefScreen-D7TfPYPN.js +1 -0
  107. package/dist/client/assets/SessionsScreen-BlknOWAd.js +1 -0
  108. package/dist/client/assets/{SettingsDrawer-XfdAa_nD.js → SettingsDrawer-C587L1i1.js} +3 -3
  109. package/dist/client/assets/SettingsDrawer-UX7pFJU_.css +1 -0
  110. package/dist/client/assets/SettingsScreen-BIlYxv_a.js +1 -0
  111. package/dist/client/assets/{ShikiPane-Ap1iPxYb.js → ShikiPane-I_OTW5NO.js} +1 -1
  112. package/dist/client/assets/{SlidePanel-COwtoJqR.js → SlidePanel-FCqT1zO3.js} +1 -1
  113. package/dist/client/assets/SpriteAvatar-CQs-jC-v.js +1 -0
  114. package/dist/client/assets/{StatusPill-DhBL__p8.js → StatusPill-CbABggnQ.js} +1 -1
  115. package/dist/client/assets/{TailView-DGj_5HA9.js → TailView-C_MXVSum.js} +2 -2
  116. package/dist/client/assets/Terminal-DwZyo8kA.js +1 -0
  117. package/dist/client/assets/TerminalEmbedScreen-Czp3tQyd.js +1 -0
  118. package/dist/client/assets/{TextDocumentSurface-BpAw4eQS.js → TextDocumentSurface-C-9EtYqt.js} +1 -1
  119. package/dist/client/assets/{TmuxPeek-m1osv33Q.js → TmuxPeek-Dz1gJ2pU.js} +1 -1
  120. package/dist/client/assets/{VoicePermissionsPanel-DsK53ar4.js → VoicePermissionsPanel-MfICy9kk.js} +1 -1
  121. package/dist/client/assets/{WorkDetailScreen-Bx0JimPC.js → WorkDetailScreen-Cs7kdllj.js} +3 -3
  122. package/dist/client/assets/{WorkFilesViewer-Btl6C2Q1.js → WorkFilesViewer-CF-nhtZ4.js} +1 -1
  123. package/dist/client/assets/{activity-CA8qS6PI.js → activity-WhBf3FXP.js} +1 -1
  124. package/dist/client/assets/{addon-fit-BZ-kXjeN.js → addon-fit-q-x_HytU.js} +1 -1
  125. package/dist/client/assets/{addon-webgl-D9-EQVEK.js → addon-webgl-fhhvEA9h.js} +1 -1
  126. package/dist/client/assets/{agent-essentials-BSY1o46q.js → agent-essentials-DyJiUGpZ.js} +1 -1
  127. package/dist/client/assets/agent-identity-xQHedtLl.js +1 -0
  128. package/dist/client/assets/agent-lane-card-BkWVDYM8.css +1 -0
  129. package/dist/client/assets/{agent-lane-card-model-r2frk57c.js → agent-lane-card-model-BCIwPjEh.js} +1 -1
  130. package/dist/client/assets/{agent-lane-detail-Djm3YJEa.js → agent-lane-detail-Cw4QVAgH.js} +1 -1
  131. package/dist/client/assets/{agent-lane-preview-CmHVe3dU.js → agent-lane-preview-BtnfNyFR.js} +1 -1
  132. package/dist/client/assets/{agent-lanes-model-B4YTt4OF.js → agent-lanes-model-Bl6xfviL.js} +1 -1
  133. package/dist/client/assets/{arc.es-CQBb-dVu.js → arc.es-DPJ0xRV6.js} +1 -1
  134. package/dist/client/assets/{arrow-down-BPLe0am9.js → arrow-down-DsD-dYj-.js} +1 -1
  135. package/dist/client/assets/{arrow-left-DEZzHiPS.js → arrow-left-WjQIN9J6.js} +1 -1
  136. package/dist/client/assets/{arrow-up-right-ClxBnsi7.js → arrow-up-right-CtTDrZJr.js} +1 -1
  137. package/dist/client/assets/{bot-eu8pBNvI.js → bot-B_Uzf4_O.js} +1 -1
  138. package/dist/client/assets/{check-DjgFiBxb.js → check-BbgHJX8u.js} +1 -1
  139. package/dist/client/assets/{chevron-down-BGk5qoEw.js → chevron-down-BFai6ZfE.js} +1 -1
  140. package/dist/client/assets/{chevron-right-XiIHsk4m.js → chevron-right-CyUa1zXx.js} +1 -1
  141. package/dist/client/assets/chunk-HRAB3GC3-CvwpNg-G.js +1 -0
  142. package/dist/client/assets/{chunk-T65CQEWV-CrzwSeEt.js → chunk-T65CQEWV-DI4NKdNq.js} +1 -1
  143. package/dist/client/assets/{chunk-YOZR3KYS-Bet8khjg.js → chunk-YOZR3KYS-BW85tiCr.js} +3 -3
  144. package/dist/client/assets/clock-DviOalxA.js +1 -0
  145. package/dist/client/assets/{code-xml-B6jOCM4V.js → code-xml-05TD3uOC.js} +1 -1
  146. package/dist/client/assets/content-2u_eV3fX.js +1 -0
  147. package/dist/client/assets/content-5irOghrY.js +1 -0
  148. package/dist/client/assets/content-8Z_0CwtD.js +1 -0
  149. package/dist/client/assets/content-B38YRDBu.js +1 -0
  150. package/dist/client/assets/content-BE3uK0LB.js +1 -0
  151. package/dist/client/assets/{content-C2EwTb2y.js → content-BtIxSqVY.js} +1 -1
  152. package/dist/client/assets/content-CFsPAihU.js +1 -0
  153. package/dist/client/assets/content-CKj5g5tu.js +1 -0
  154. package/dist/client/assets/{content-D5kJmfgl.js → content-CLDWXf9Z.js} +1 -1
  155. package/dist/client/assets/content-CRr73E0r.js +1 -0
  156. package/dist/client/assets/content-CVR75_Uj.js +1 -0
  157. package/dist/client/assets/content-Czdp7_JQ.js +1 -0
  158. package/dist/client/assets/content-D0_EJ6nP.js +1 -0
  159. package/dist/client/assets/content-DNmxpNhD.js +1 -0
  160. package/dist/client/assets/content-XpbI9uxd.js +1 -0
  161. package/dist/client/assets/content-cyxWdgKQ.js +1 -0
  162. package/dist/client/assets/{context-budget-CbB4BDcO.js → context-budget-DX_fwUs3.js} +1 -1
  163. package/dist/client/assets/{conversation-icons-IIG5ha6D.js → conversation-icons-DohQL6GI.js} +1 -1
  164. package/dist/client/assets/conversation-model-C4yb6_FA.js +1 -0
  165. package/dist/client/assets/conversation-motion-features-CifSdJtm.js +1 -0
  166. package/dist/client/assets/{copy-CQGYbxdu.js → copy-CwCAivnc.js} +1 -1
  167. package/dist/client/assets/{createLucideIcon-OpA4Amw5.js → createLucideIcon-DlxlBfLC.js} +1 -1
  168. package/dist/client/assets/discover-DoiAJo4Z.js +2 -0
  169. package/dist/client/assets/embed-entry-D1Or9S4d.js +2 -0
  170. package/dist/client/assets/{external-link-CXBytO9o.js → external-link-CnjcXf32.js} +1 -1
  171. package/dist/client/assets/{eye-0PvebX_a.js → eye-So8tNNK6.js} +1 -1
  172. package/dist/client/assets/{file-text-BODxCjcz.js → file-text-i3xTDUjJ.js} +1 -1
  173. package/dist/client/assets/{gestures-CcwOTu8C.js → gestures-CgvAMd6F.js} +1 -1
  174. package/dist/client/assets/{home-moving-signal-CK147hxn.js → home-moving-signal-BdkERL6B.js} +1 -1
  175. package/dist/client/assets/home-now-card-lLkv6nQs.js +1 -0
  176. package/dist/client/assets/{home-now-card-nano-BcjnOU9H.js → home-now-card-nano-CkLHUQ4J.js} +1 -1
  177. package/dist/client/assets/hooks-BPLDD9yu.js +2 -0
  178. package/dist/client/assets/inbox-thread-redesign-B_1ocqaX.css +1 -0
  179. package/dist/client/assets/index-DGoLx89y.js +1 -0
  180. package/dist/client/assets/index-DITWsjFb.css +1 -0
  181. package/dist/client/assets/index-m6dFtY5f.js +1 -0
  182. package/dist/client/assets/index-pY8-Mz7y.js +1 -0
  183. package/dist/client/assets/{index-DMiGbrBt.js → index-sUomXsrf.js} +6 -6
  184. package/dist/client/assets/{inspector-panel-DPoCWxKs.js → inspector-panel-DhXd-YbT.js} +2 -2
  185. package/dist/client/assets/{keyboard-nav-2kv_tGUS.js → keyboard-nav-BhZZ5HEq.js} +1 -1
  186. package/dist/client/assets/knowledge-search-D_bLoYtC.css +1 -0
  187. package/dist/client/assets/{lane-observe-D0rfKDnU.js → lane-observe-DrhKkQ3A.js} +1 -1
  188. package/dist/client/assets/{lane-roster-store-D8x1jac2.js → lane-roster-store-NE15Oe6M.js} +1 -1
  189. package/dist/client/assets/left-B6eawimv.js +1 -0
  190. package/dist/client/assets/left-BL2uBHe0.js +2 -0
  191. package/dist/client/assets/left-BNJguPDG.js +1 -0
  192. package/dist/client/assets/left-BvCtvN0f.js +1 -0
  193. package/dist/client/assets/left-CfBb6bxM.js +1 -0
  194. package/dist/client/assets/left-DTrlBF0h.js +2 -0
  195. package/dist/client/assets/left-agents-DsOHgDCY.js +1 -0
  196. package/dist/client/assets/left-d4hlBBxY.js +1 -0
  197. package/dist/client/assets/left-default-BRCwoCJr.js +1 -0
  198. package/dist/client/assets/left-lanes-DNtoRzoV.js +1 -0
  199. package/dist/client/assets/left-mission-DsTu2X5Y.js +1 -0
  200. package/dist/client/assets/left-plan-CtySjsXC.js +2 -0
  201. package/dist/client/assets/library-CLpgWNJO.js +1 -0
  202. package/dist/client/assets/{loader-circle-CbHjZsz1.js → loader-circle-lWOOKezu.js} +1 -1
  203. package/dist/client/assets/{local-agents--00gLMqr.js → local-agents-C7fDHLVC.js} +1 -1
  204. package/dist/client/assets/{mentions-jSuTGeet.js → mentions-CY_wPZc5.js} +1 -1
  205. package/dist/client/assets/mesh-ops-B1kDjizF.css +1 -0
  206. package/dist/client/assets/mesh-ops-Kn8pCtyJ.js +1 -0
  207. package/dist/client/assets/{mesh-view-store-CWidRbTE.js → mesh-view-store-D14ihwkF.js} +1 -1
  208. package/dist/client/assets/{message-circle-CG-96zts.js → message-circle-C5UZ6fO7.js} +1 -1
  209. package/dist/client/assets/{message-markup-3J9pi3nx.js → message-markup-C8Nx04sP.js} +1 -1
  210. package/dist/client/assets/{message-square-DSaGpjFU.js → message-square-BD-4UUdc.js} +1 -1
  211. package/dist/client/assets/{mission-control-store-BlnEhiCq.js → mission-control-store-xQHVQdm8.js} +1 -1
  212. package/dist/client/assets/{model-CpAxGuis.js → model-IGCUEsMy.js} +1 -1
  213. package/dist/client/assets/{observe-CuLGD9Zp.js → observe-uJfIlIUV.js} +1 -1
  214. package/dist/client/assets/{page-status-DpkedE1F.js → page-status-BymFEFai.js} +1 -1
  215. package/dist/client/assets/paperclip-DL9BXPp2.js +1 -0
  216. package/dist/client/assets/{plus--b1raV_O.js → plus-C9lTjsgd.js} +1 -1
  217. package/dist/client/assets/profile-BqY5tesX.js +1 -0
  218. package/dist/client/assets/{projects-inbox-CHyUFQ6w.js → projects-inbox-DfVmGFFk.js} +1 -1
  219. package/dist/client/assets/{radio-Bz8ZePxj.js → radio-DedMyP8J.js} +1 -1
  220. package/dist/client/assets/{refresh-cw-BBmAnCB7.js → refresh-cw-D8PFyhUa.js} +1 -1
  221. package/dist/client/assets/repo-diff-DyYmQMSA.css +1 -0
  222. package/dist/client/assets/resolve-panes-1xeZMuaw.js +1 -0
  223. package/dist/client/assets/resolve-sidebar-context-PLr32WHN.js +1 -0
  224. package/dist/client/assets/right-1x7HzabC.js +1 -0
  225. package/dist/client/assets/{right-DjRXbnRP.js → right-C1sIsSHR.js} +1 -1
  226. package/dist/client/assets/right-CFzPUzlF.js +1 -0
  227. package/dist/client/assets/right-CRKyeJDk.js +1 -0
  228. package/dist/client/assets/right-CagzkLWg.js +1 -0
  229. package/dist/client/assets/right-CsV149pN.js +1 -0
  230. package/dist/client/assets/right-DITNyG2s.js +1 -0
  231. package/dist/client/assets/right-E3nNcLE3.js +1 -0
  232. package/dist/client/assets/right-eUQvSjd7.js +1 -0
  233. package/dist/client/assets/right-ozp4nM44.js +1 -0
  234. package/dist/client/assets/{rocket-BSNS_rLs.js → rocket-CriBwkHM.js} +1 -1
  235. package/dist/client/assets/router-Dja9_ygK.js +1 -0
  236. package/dist/client/assets/{runtime-picker-Bcl5iIX5.js → runtime-picker-DOZpZOlt.js} +1 -1
  237. package/dist/client/assets/{scope-views-U-ucT9m0.js → scope-views-BF_RvGKU.js} +1 -1
  238. package/dist/client/assets/{scout-voice-CU5c0LGi.js → scout-voice-BZ4KqADJ.js} +1 -1
  239. package/dist/client/assets/{scroll-text-D6Pdnar7.js → scroll-text-BIYf6g6N.js} +1 -1
  240. package/dist/client/assets/{search-CWfZtOt2.js → search-DCT_EvPr.js} +1 -1
  241. package/dist/client/assets/secondaryNavConfig-Drb7wPG4.js +1 -0
  242. package/dist/client/assets/{selection-bridge-16pk1qyG.js → selection-bridge-CJOTyYQs.js} +1 -1
  243. package/dist/client/assets/{send-horizontal-Bg5-QggH.js → send-horizontal-DDwOgEs3.js} +1 -1
  244. package/dist/client/assets/{server-CPp4ZJhZ.js → server-CHZCp3cF.js} +1 -1
  245. package/dist/client/assets/{session-catalog-BmoyVTJ_.js → session-catalog-XhGxCtP-.js} +1 -1
  246. package/dist/client/assets/{session-table-DZcrKoIH.js → session-table-sAVe44a4.js} +1 -1
  247. package/dist/client/assets/{sliders-horizontal-1oW76Xc9.js → sliders-horizontal-B9Nj-Y4J.js} +1 -1
  248. package/dist/client/assets/sparkles-up7pVlX-.js +1 -0
  249. package/dist/client/assets/{sse-CjIkKo46.js → sse-CVoGDiKW.js} +1 -1
  250. package/dist/client/assets/{tail-events-D19uAGe3.js → tail-events-CTipUIli.js} +1 -1
  251. package/dist/client/assets/{terminal-B9AOZQKR.js → terminal-DXQISjZn.js} +1 -1
  252. package/dist/client/assets/{terminal-relay-CWbJ1RCW.js → terminal-relay-B5Sma7fK.js} +1 -1
  253. package/dist/client/assets/{terminal-takeover-B8UeD9OX.js → terminal-takeover-X97KCSJk.js} +1 -1
  254. package/dist/client/assets/{time-DltNTpLl.js → time-Dhsh_2EG.js} +1 -1
  255. package/dist/client/assets/{use-conversation-list-Byab41G6.js → use-conversation-list-B1T6J_qE.js} +1 -1
  256. package/dist/client/assets/{use-fleet-active-asks-BIbQx5AS.js → use-fleet-active-asks-DLofGhhK.js} +1 -1
  257. package/dist/client/assets/use-mesh-ops-items-ByGZk8rU.js +1 -0
  258. package/dist/client/assets/{use-reduced-motion-RRBkmVkk.js → use-reduced-motion-Cvk-HRKg.js} +1 -1
  259. package/dist/client/assets/use-scout-dev-flags-BHvg3G2c.js +1 -0
  260. package/dist/client/assets/{useAgentHoverCard-DMrbBif0.js → useAgentHoverCard-D5e8Qg1z.js} +1 -1
  261. package/dist/client/assets/useContentSecondaryNav-ZfBNi3d4.js +1 -0
  262. package/dist/client/assets/usePierreRuntime-DIVunfX0.js +50 -0
  263. package/dist/client/assets/{wrench-Bkc_0lKF.js → wrench-pEVd8JnN.js} +1 -1
  264. package/dist/client/assets/{x-D3GElQbe.js → x-0XjXwGqq.js} +1 -1
  265. package/dist/client/assets/{xterm-BKR8oAkR.js → xterm-CRLlV1Xp.js} +1 -1
  266. package/dist/client/index.html +2 -2
  267. package/dist/drizzle/0007_lean_venus.sql +26 -0
  268. package/dist/drizzle/0008_luxuriant_ted_forrester.sql +1 -0
  269. package/dist/drizzle/meta/0007_snapshot.json +5767 -0
  270. package/dist/drizzle/meta/0008_snapshot.json +5774 -0
  271. package/dist/drizzle/meta/_journal.json +14 -0
  272. package/dist/main.mjs +27836 -4437
  273. package/dist/node/main.mjs +31770 -12098
  274. package/dist/pairing-runtime-controller.mjs +37653 -16847
  275. package/dist/runtime/base-daemon.mjs +109 -18
  276. package/dist/runtime/broker-daemon.mjs +22018 -2739
  277. package/dist/runtime/broker-process-manager.mjs +122 -12
  278. package/dist/runtime/mesh-discover.mjs +90 -13
  279. package/dist/scout-control-plane-web.mjs +22453 -3299
  280. package/dist/scout-web-server.mjs +22453 -3299
  281. package/dist/statusline.mjs +2 -0
  282. package/package.json +3 -1
  283. package/dist/client/assets/ActivityScreen-Cu_1V4bq.js +0 -1
  284. package/dist/client/assets/AgentConfigurationScreen-BqfOz90D.js +0 -1
  285. package/dist/client/assets/AgentDefinitionsWorkspace-CUpUrY57.js +0 -1
  286. package/dist/client/assets/AgentFloorView-8LoAEBwS.js +0 -1
  287. package/dist/client/assets/AgentInfoScreen-DZs2_ibL.js +0 -1
  288. package/dist/client/assets/AgentLanesEmbedScreen-W3qs022h.js +0 -1
  289. package/dist/client/assets/AgentLanesView-B9vuEEmZ.js +0 -2
  290. package/dist/client/assets/AgentsConsole-BgiYP2wR.js +0 -1
  291. package/dist/client/assets/AgentsScreen-DBi8x4MB.js +0 -1
  292. package/dist/client/assets/AgentsSubnav-DIEO4NPx.js +0 -1
  293. package/dist/client/assets/BackToPicker-BRvfostO.js +0 -1
  294. package/dist/client/assets/CodeDiffPane-DDPt6KPh.js +0 -1
  295. package/dist/client/assets/CodeScreen-BxCrpRHd.js +0 -1
  296. package/dist/client/assets/ConversationFeedRows-B_gPxcqA.js +0 -1
  297. package/dist/client/assets/ConversationHeader-DE3FC0m-.js +0 -1
  298. package/dist/client/assets/ConversationPanels-DLek4H6A.js +0 -2
  299. package/dist/client/assets/ConversationScreen-BDRhx-RU.js +0 -1
  300. package/dist/client/assets/ConversationScreen-C9yMAMYF.css +0 -1
  301. package/dist/client/assets/ConversationStatus-BwVLiiO4.js +0 -1
  302. package/dist/client/assets/FlightObserveScreen-6RpZYwVz.js +0 -1
  303. package/dist/client/assets/HarnessesScreen-CznAImej.js +0 -1
  304. package/dist/client/assets/KnowledgeSearchInspector-Dgdkfvvz.js +0 -1
  305. package/dist/client/assets/KnowledgeSearchScreen-DJDGGaqC.js +0 -1
  306. package/dist/client/assets/LaneTraceDetailSheet-D1CspRbl.js +0 -1
  307. package/dist/client/assets/MeshScreen-DFgevn8N.js +0 -1
  308. package/dist/client/assets/MessagesScreen-C8YKW10Y.js +0 -1
  309. package/dist/client/assets/MissionLeftAgentRow-BpZWntfl.js +0 -1
  310. package/dist/client/assets/NewChatComposer-Cs6OsxK6.js +0 -19
  311. package/dist/client/assets/ObserveEmbedScreen-y2EpuqRZ.js +0 -2
  312. package/dist/client/assets/OpenScoutAppShell-C_URc8sV.js +0 -87
  313. package/dist/client/assets/OpsAgentsView-UN7iOscs.js +0 -1
  314. package/dist/client/assets/OpsScreen-Buf3LKjb.js +0 -1
  315. package/dist/client/assets/OpsSubnav-DsuXzHah.js +0 -1
  316. package/dist/client/assets/ProjectAgentProfile-DJusrAV-.js +0 -1
  317. package/dist/client/assets/ProjectAgentProfileHero-BFwNJo_N.js +0 -1
  318. package/dist/client/assets/ProjectsInbox-GhVMxOhw.js +0 -2
  319. package/dist/client/assets/ProjectsScreen-eNUBy4YU.js +0 -1
  320. package/dist/client/assets/ProjectsThreadAside-CoBgnHmr.js +0 -1
  321. package/dist/client/assets/Provider-C7UKGHQy.js +0 -1
  322. package/dist/client/assets/RawSessionsTable-DL8y_eEy.js +0 -1
  323. package/dist/client/assets/RealtimeVoiceScreen-ffS-39zy.js +0 -1
  324. package/dist/client/assets/RepoDiffViewer-D_exm6xK.js +0 -7
  325. package/dist/client/assets/RepoDiffViewerLazy-BPgF92Bg.js +0 -2
  326. package/dist/client/assets/SessionEmbedScreen-BVC7yvWF.js +0 -1
  327. package/dist/client/assets/SessionObserve-BpggNO_M.css +0 -1
  328. package/dist/client/assets/SessionObserve-yfXFafp8.js +0 -12
  329. package/dist/client/assets/SessionRefScreen-DRgJu7Jo.js +0 -1
  330. package/dist/client/assets/SessionsScreen-D6XUsZfA.js +0 -1
  331. package/dist/client/assets/SettingsDrawer-CmJt72ww.css +0 -1
  332. package/dist/client/assets/SettingsScreen-Cy8z-EuR.js +0 -1
  333. package/dist/client/assets/SpriteAvatar-DyaGuhik.js +0 -1
  334. package/dist/client/assets/Terminal-CqvGbjXU.js +0 -1
  335. package/dist/client/assets/TerminalEmbedScreen-DuZZFFzW.js +0 -1
  336. package/dist/client/assets/agent-lane-card-Dm7YWoew.css +0 -1
  337. package/dist/client/assets/content-BDt9VBPk.js +0 -1
  338. package/dist/client/assets/content-BIXf4cKR.js +0 -1
  339. package/dist/client/assets/content-BLm0NBJM.js +0 -1
  340. package/dist/client/assets/content-C5UbLsDF.js +0 -1
  341. package/dist/client/assets/content-CR3vdrYY.js +0 -1
  342. package/dist/client/assets/content-CSPVmo2s.js +0 -1
  343. package/dist/client/assets/content-C_FGqx1X.js +0 -1
  344. package/dist/client/assets/content-CvlVUOG8.js +0 -1
  345. package/dist/client/assets/content-DTpQsomG.js +0 -1
  346. package/dist/client/assets/content-DikVsqLf.js +0 -1
  347. package/dist/client/assets/content-DlUe5Ono.js +0 -1
  348. package/dist/client/assets/content-GIBv_55n.js +0 -1
  349. package/dist/client/assets/content-Q2oclDzi.js +0 -1
  350. package/dist/client/assets/conversation-model-B47vYmWN.js +0 -1
  351. package/dist/client/assets/conversation-motion-features-BdAONVls.js +0 -1
  352. package/dist/client/assets/discover-C1YwpBDE.js +0 -2
  353. package/dist/client/assets/embed-entry-BAcGL3g9.js +0 -2
  354. package/dist/client/assets/home-now-card-BgvNWuea.js +0 -1
  355. package/dist/client/assets/hooks-B6y_O2FB.js +0 -2
  356. package/dist/client/assets/inbox-thread-redesign-Bz4FjWzr.css +0 -1
  357. package/dist/client/assets/index-BcuhqXLe.js +0 -1
  358. package/dist/client/assets/index-CJXzfjo9.js +0 -1
  359. package/dist/client/assets/index-DQPvraRS.js +0 -1
  360. package/dist/client/assets/index-DxGoC5l5.css +0 -1
  361. package/dist/client/assets/knowledge-search-CVxQwxPn.js +0 -1
  362. package/dist/client/assets/knowledge-search-DjrQdiiW.css +0 -1
  363. package/dist/client/assets/left-C--GiIh8.js +0 -2
  364. package/dist/client/assets/left-Cj7Rt89X.js +0 -1
  365. package/dist/client/assets/left-CpNEtFEg.js +0 -1
  366. package/dist/client/assets/left-CzXAuK_t.js +0 -2
  367. package/dist/client/assets/left-agents-Bo9sO1by.js +0 -1
  368. package/dist/client/assets/left-bN4PCAXa.js +0 -1
  369. package/dist/client/assets/left-default-DV9GdvYi.js +0 -1
  370. package/dist/client/assets/left-jYYGAOYD.js +0 -1
  371. package/dist/client/assets/left-lanes-D0l_Co7V.js +0 -1
  372. package/dist/client/assets/left-mission-Ci7zREkQ.js +0 -1
  373. package/dist/client/assets/left-plan-D4U1uflW.js +0 -2
  374. package/dist/client/assets/library-D-RxGiCw.js +0 -1
  375. package/dist/client/assets/profile-CVRziEDA.js +0 -1
  376. package/dist/client/assets/repo-diff-C9Qs-bEn.css +0 -1
  377. package/dist/client/assets/resolve-panes-r9B3mpW7.js +0 -1
  378. package/dist/client/assets/resolve-sidebar-context-DcG8xGaB.js +0 -1
  379. package/dist/client/assets/right-BHeiIaty.js +0 -1
  380. package/dist/client/assets/right-BkgKo9VT.js +0 -1
  381. package/dist/client/assets/right-BpEU5jWE.js +0 -1
  382. package/dist/client/assets/right-CRZXoy-X.js +0 -1
  383. package/dist/client/assets/right-ChF_pbPy.js +0 -1
  384. package/dist/client/assets/right-DMoUT3KN.js +0 -1
  385. package/dist/client/assets/right-T4Ue6EqM.js +0 -1
  386. package/dist/client/assets/right-wzrLXKur.js +0 -1
  387. package/dist/client/assets/router-Bq5dwf78.js +0 -1
  388. package/dist/client/assets/secondaryNavConfig-DqUIp0Es.js +0 -1
  389. package/dist/client/assets/sparkles-ClfRJQ6w.js +0 -1
  390. package/dist/client/assets/useContentSecondaryNav-DMl1WNm7.js +0 -1
  391. package/dist/client/assets/usePierreRuntime-wC-yMtBb.js +0 -50
@@ -1 +1 @@
1
- import{r as i,j as a}from"./index-DMiGbrBt.js";/* empty css */import{a as M}from"./api-h5zurxmi.js";import{u as ee,s as se,c as te,t as B,a as A,b as H}from"./mission-control-store-BlnEhiCq.js";import{u as ne}from"./observe-CuLGD9Zp.js";import{e as Q}from"./agent-chat-Bfjd9y6c.js";import{f as ie}from"./tail-display-BdyoLvzY.js";import{u as re}from"./tail-events-D19uAGe3.js";import{FocusOverlay as ae}from"./MissionFocusOverlay-wlCmWDCT.js";import{b as oe,s as le,f as ce,c as de,m as ue,a as me,W as he,M as fe}from"./MissionLogPane-__MVtEl9.js";import{A as pe}from"./mission-control-model-C0fByIjm.js";import"./colors-BtO5_zlx.js";import"./surface-activity-B1rgWB1i.js";import"./lane-edit-display-C_Aujldz.js";import"./index-BWHgHrtv.js";import"./keyboard-nav-2kv_tGUS.js";import"./time-DltNTpLl.js";import"./text-DsBWV_4k.js";import"./page-status-DpkedE1F.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"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";const x=4e3,ve=250,we=3e4,Ie=1500,Se=1800;function ye(s,o){return s.map(n=>({id:n.id,name:n.name,handle:n.handle,state:n.state,project:n.project,branch:n.branch,harness:n.harness,model:n.model,sessionIds:o.get(n.id)??[]}))}function Ae(s){return{id:`native:${s.source}:${s.sessionId}`,definitionId:`native:${s.source}:${s.sessionId}`,name:`${s.source} · ${s.project}`,handle:s.sessionId.slice(0,8),agentClass:"native-session",harness:s.source,state:s.live?"working":"ready",projectRoot:s.cwd,cwd:s.cwd,updatedAt:s.lastActiveAt,createdAt:null,transport:"tail",selector:null,defaultSelector:null,nodeQualifier:null,workspaceQualifier:null,wakePolicy:null,capabilities:[],project:s.project,branch:s.attribution==="unattributed"?"native session":s.attribution,role:"native session",model:null,harnessSessionId:s.sessionId,terminalSurface:null,harnessLogPath:s.logPath,conversationId:null,homeNodeId:null,homeNodeName:null,ownerId:null,ownerName:null,ownerHandle:null,staleLocalRegistration:!1,retiredFromFleet:!1,replacedByAgentId:null}}function z(s){return s.agentClass==="native-session"||s.id.startsWith("native:")}function Ee(s,o){const n=s.harnessSessionId?.trim();if(!n)throw new Error("This native session has no session id to continue.");const E=s.projectRoot?.trim()||s.cwd?.trim();if(!E)throw new Error("This native session has no project path to route from.");const b=s.harness?.trim(),p=s.model?.trim();return{target:{projectPath:E},execution:{session:"existing",targetSessionId:n,...b?{harness:b}:{},...p?{model:p}:{}},agent:{persistence:"one_time",...s.handle?.trim()?{handle:s.handle.trim()}:{}},seed:{instructions:o}}}async function be(s,o){if(z(s)){await M("/api/sessions",{method:"POST",body:JSON.stringify(Ee(s,o))});return}const n=await Q(s);await M("/api/send",{method:"POST",body:JSON.stringify({body:o,chatId:n,execution:{...s.harness?.trim()?{harness:s.harness.trim()}:{},...s.model?.trim()?{model:s.model.trim()}:{}}})})}function Ne(s,o,n){return s.live?"active":s.lastActiveAt>0&&o-s.lastActiveAt<=n?"recent":"idle"}function Ye({navigate:s,agents:o}){const n=ee(),{activityFilter:E,sourceFilter:b,activityWindowMs:p,groupMode:C,query:k,focusedId:g,revealRequest:v}=n,[P,_]=i.useState([]),[F,K]=i.useState(null),[S,U]=i.useState(()=>Date.now()),R=ne(o),j=i.useRef([]);re(e=>{j.current.push(e)}),i.useEffect(()=>{const e=setInterval(()=>{if(j.current.length===0)return;const t=j.current;j.current=[],_(r=>{const d=new Set(r.map(f=>f.id)),m=t.filter(f=>!f.id||!d.has(f.id));if(m.length===0)return r;const l=r.concat(m);return l.length>x?l.slice(l.length-x):l})},ve);return()=>clearInterval(e)},[]),i.useEffect(()=>{const e=setInterval(()=>U(Date.now()),1e4);return()=>clearInterval(e)},[]),i.useEffect(()=>{let e=!1;return M(`/api/tail/recent?limit=${Ie}`).then(t=>{if(e)return;const r=t.events??[];_(d=>{const m=new Set(d.map(f=>f.id)),l=r.filter(f=>!m.has(f.id)).concat(d);return l.length>x?l.slice(l.length-x):l})}).catch(()=>{}),()=>{e=!0}},[]),i.useEffect(()=>{let e=!1;const t=async()=>{try{const d=await M("/api/tail/discover");e||K(d)}catch{}};t();const r=setInterval(()=>{t()},we);return()=>{e=!0,clearInterval(r)}},[]);const O=i.useMemo(()=>{const e=new Map;for(const t of o){const r=R[t.id],d=[t.harnessSessionId,r?.sessionId,r?.data.metadata?.session?.externalSessionId].map(m=>m?.trim()).filter(m=>!!m);e.set(t.id,[...new Set(d)])}return e},[o,R]),y=i.useMemo(()=>oe({events:ie(P),transcripts:F?.transcripts??[],agents:ye(o,O),now:S,liveWindowMs:pe}),[o,F?.transcripts,S,O,P]),[w,T]=i.useState(null),h=i.useMemo(()=>{const e=le(ce(y,{sourceFilter:b,activityFilter:E,query:k,now:S,activeWindowMs:p}),C);if(!w)return e;const t=e.find(r=>r.id===w);return t?[t,...e.filter(r=>r.id!==w)]:e},[E,p,C,y,S,w,k,b]),W=i.useRef(null),[$,J]=i.useState({w:0,h:0});i.useEffect(()=>{const e=W.current;if(!e)return;const t=new ResizeObserver(([r])=>{J({w:r.contentRect.width,h:r.contentRect.height})});return t.observe(e),()=>t.disconnect()},[]);const u=i.useMemo(()=>de(h.length,$),[h.length,$]),L=i.useMemo(()=>h.slice(0,u.shown),[h,u.shown]);i.useEffect(()=>{se(h.map(e=>({id:e.id,name:e.agent?.name??me(e),handle:e.agent?.handle??ue(e),harness:e.source,branch:e.agent?.branch??null,project:e.project,model:e.agent?.model??null,state:e.agent?.state??null,agentClass:e.agent?"agent":"native-session",updatedAt:e.lastActiveAt,source:e.agent||e.attribution==="scout-managed"?"scout":"native",activity:Ne(e,S,p),lastActiveAt:e.lastActiveAt})))},[p,S,h]);const[G,D]=i.useState(null),V=i.useRef(null),N=i.useRef(null);i.useEffect(()=>{v&&V.current!==v.serial&&(V.current=v.serial,T(v.id),D(v.id),N.current&&clearTimeout(N.current),N.current=setTimeout(()=>D(null),Se),te(v.serial))},[v]),i.useEffect(()=>()=>{N.current&&clearTimeout(N.current)},[]);const I=g?y.find(e=>e.id===g)??null:null,c=i.useMemo(()=>{if(!I)return null;if(I.agent){const e=o.find(t=>t.id===I.agent.id);if(e)return e}return Ae(I)},[o,I]),X=I?.agent?R[I.agent.id]?.data??null:null;i.useEffect(()=>{const e=t=>{const r=t.target;if(!(r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.isContentEditable)){if(t.key==="Escape"){g?A(null):n.selectedIds.length>0?H():w&&T(null);return}if((t.metaKey||t.ctrlKey)&&t.key==="a"){if(n.visibleAgents.length===0)return;t.preventDefault();const d=n.visibleAgents.map(l=>l.id);if(d.every(l=>n.selectedIds.includes(l))){H();return}for(const l of d)n.selectedIds.includes(l)||B(l)}}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[g,n.selectedIds,n.visibleAgents,w]);const Y=i.useCallback(e=>{s({view:"ops",mode:"tail",tailQuery:e.sessionId})},[s]),Z=L.reduce((e,t)=>e+t.lines.length,0),q=y.length-h.length;return a.jsxs("div",{className:"s-wall",children:[a.jsxs("div",{className:"s-wall-status",children:[a.jsx("span",{className:"s-wall-status-key",children:"logs"}),a.jsxs("span",{className:"s-wall-status-value",children:[u.shown,"/",h.length]}),a.jsx("span",{className:"s-wall-status-key",children:"grid"}),a.jsx("span",{className:"s-wall-status-value",children:u.cols>0?`${u.cols}×${u.rows}`:"—"}),a.jsx("span",{className:"s-wall-status-key",children:"lines"}),a.jsx("span",{className:"s-wall-status-value",children:Z}),u.hidden>0&&a.jsxs("span",{className:"s-wall-status-hidden",title:"Least recently active logs are withheld to keep panes readable",children:[u.hidden," withheld"]}),q>0&&a.jsxs("span",{className:"s-wall-status-hidden",title:"Sessions discovery knows of that have produced no output to tail",children:[q," quiet"]}),w&&a.jsx("button",{type:"button",className:"s-wall-status-pin",onClick:()=>T(null),children:"unpin"})]}),a.jsx("div",{ref:W,className:"s-wall-grid",style:{gridTemplateColumns:`repeat(${Math.max(1,u.cols)}, minmax(0, 1fr))`,gridTemplateRows:`repeat(${Math.max(1,u.rows)}, minmax(0, 1fr))`,gap:he},children:L.length===0?a.jsxs("div",{className:"s-wall-empty",children:[a.jsx("div",{className:"s-wall-empty-title",children:y.length===0?"No logs on the wire":"No matching logs"}),a.jsx("div",{className:"s-wall-empty-sub",children:y.length===0?"Panes appear as sessions start writing to their transcripts.":"Widen the activity window or clear the filter."})]}):L.map(e=>a.jsx(fe,{log:e,selected:n.selectedIds.includes(e.id),revealed:G===e.id,onOpen:()=>A(e.id),onToggleSelected:()=>B(e.id),onOpenLog:()=>Y(e)},e.id))}),c&&a.jsx(ae,{agent:c,observe:X,onClose:()=>A(null),onSend:e=>be(c,e),onOpenConversation:()=>{if(A(null),z(c)&&c.harnessSessionId){s({view:"sessions",sessionId:c.harnessSessionId});return}Q(c).then(e=>s({view:"conversation",conversationId:e})).catch(()=>s({view:"agents-v2",agentId:c.id,tab:"message"}))},onTail:()=>{A(null),s({view:"ops",mode:"tail",tailQuery:c.harnessSessionId??c.handle??c.name})},onProfile:()=>{A(null),s({view:"agents-v2",agentId:c.id})}})]})}export{Ye as MissionControlView};
1
+ import{r as i,j as a}from"./index-sUomXsrf.js";/* empty css */import{a as M}from"./api-h5zurxmi.js";import{u as ee,s as se,c as te,t as B,a as A,b as H}from"./mission-control-store-xQHVQdm8.js";import{u as ne}from"./observe-uJfIlIUV.js";import{e as Q}from"./agent-chat-Bfjd9y6c.js";import{f as ie}from"./tail-display-BdyoLvzY.js";import{u as re}from"./tail-events-CTipUIli.js";import{FocusOverlay as ae}from"./MissionFocusOverlay-C7cPt6eU.js";import{b as oe,s as le,f as ce,c as de,m as ue,a as me,W as he,M as fe}from"./MissionLogPane-Ye3YlF9s.js";import{A as pe}from"./mission-control-model-C0fByIjm.js";import"./colors-BtO5_zlx.js";import"./surface-activity-B1rgWB1i.js";import"./lane-edit-display-C_Aujldz.js";import"./index-BWHgHrtv.js";import"./keyboard-nav-BhZZ5HEq.js";import"./time-Dhsh_2EG.js";import"./text-DsBWV_4k.js";import"./page-status-BymFEFai.js";import"./runtime-picker-DOZpZOlt.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./createLucideIcon-DlxlBfLC.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";const x=4e3,ve=250,we=3e4,Ie=1500,Se=1800;function ye(s,o){return s.map(n=>({id:n.id,name:n.name,handle:n.handle,state:n.state,project:n.project,branch:n.branch,harness:n.harness,model:n.model,sessionIds:o.get(n.id)??[]}))}function Ae(s){return{id:`native:${s.source}:${s.sessionId}`,definitionId:`native:${s.source}:${s.sessionId}`,name:`${s.source} · ${s.project}`,handle:s.sessionId.slice(0,8),agentClass:"native-session",harness:s.source,state:s.live?"working":"ready",projectRoot:s.cwd,cwd:s.cwd,updatedAt:s.lastActiveAt,createdAt:null,transport:"tail",selector:null,defaultSelector:null,nodeQualifier:null,workspaceQualifier:null,wakePolicy:null,capabilities:[],project:s.project,branch:s.attribution==="unattributed"?"native session":s.attribution,role:"native session",model:null,harnessSessionId:s.sessionId,terminalSurface:null,harnessLogPath:s.logPath,conversationId:null,homeNodeId:null,homeNodeName:null,ownerId:null,ownerName:null,ownerHandle:null,staleLocalRegistration:!1,retiredFromFleet:!1,replacedByAgentId:null}}function z(s){return s.agentClass==="native-session"||s.id.startsWith("native:")}function Ee(s,o){const n=s.harnessSessionId?.trim();if(!n)throw new Error("This native session has no session id to continue.");const E=s.projectRoot?.trim()||s.cwd?.trim();if(!E)throw new Error("This native session has no project path to route from.");const b=s.harness?.trim(),p=s.model?.trim();return{target:{projectPath:E},execution:{session:"existing",targetSessionId:n,...b?{harness:b}:{},...p?{model:p}:{}},agent:{persistence:"one_time",...s.handle?.trim()?{handle:s.handle.trim()}:{}},seed:{instructions:o}}}async function be(s,o){if(z(s)){await M("/api/sessions",{method:"POST",body:JSON.stringify(Ee(s,o))});return}const n=await Q(s);await M("/api/send",{method:"POST",body:JSON.stringify({body:o,chatId:n,execution:{...s.harness?.trim()?{harness:s.harness.trim()}:{},...s.model?.trim()?{model:s.model.trim()}:{}}})})}function Ne(s,o,n){return s.live?"active":s.lastActiveAt>0&&o-s.lastActiveAt<=n?"recent":"idle"}function Ye({navigate:s,agents:o}){const n=ee(),{activityFilter:E,sourceFilter:b,activityWindowMs:p,groupMode:C,query:k,focusedId:g,revealRequest:v}=n,[P,_]=i.useState([]),[F,K]=i.useState(null),[S,U]=i.useState(()=>Date.now()),R=ne(o),j=i.useRef([]);re(e=>{j.current.push(e)}),i.useEffect(()=>{const e=setInterval(()=>{if(j.current.length===0)return;const t=j.current;j.current=[],_(r=>{const d=new Set(r.map(f=>f.id)),m=t.filter(f=>!f.id||!d.has(f.id));if(m.length===0)return r;const l=r.concat(m);return l.length>x?l.slice(l.length-x):l})},ve);return()=>clearInterval(e)},[]),i.useEffect(()=>{const e=setInterval(()=>U(Date.now()),1e4);return()=>clearInterval(e)},[]),i.useEffect(()=>{let e=!1;return M(`/api/tail/recent?limit=${Ie}`).then(t=>{if(e)return;const r=t.events??[];_(d=>{const m=new Set(d.map(f=>f.id)),l=r.filter(f=>!m.has(f.id)).concat(d);return l.length>x?l.slice(l.length-x):l})}).catch(()=>{}),()=>{e=!0}},[]),i.useEffect(()=>{let e=!1;const t=async()=>{try{const d=await M("/api/tail/discover");e||K(d)}catch{}};t();const r=setInterval(()=>{t()},we);return()=>{e=!0,clearInterval(r)}},[]);const O=i.useMemo(()=>{const e=new Map;for(const t of o){const r=R[t.id],d=[t.harnessSessionId,r?.sessionId,r?.data.metadata?.session?.externalSessionId].map(m=>m?.trim()).filter(m=>!!m);e.set(t.id,[...new Set(d)])}return e},[o,R]),y=i.useMemo(()=>oe({events:ie(P),transcripts:F?.transcripts??[],agents:ye(o,O),now:S,liveWindowMs:pe}),[o,F?.transcripts,S,O,P]),[w,T]=i.useState(null),h=i.useMemo(()=>{const e=le(ce(y,{sourceFilter:b,activityFilter:E,query:k,now:S,activeWindowMs:p}),C);if(!w)return e;const t=e.find(r=>r.id===w);return t?[t,...e.filter(r=>r.id!==w)]:e},[E,p,C,y,S,w,k,b]),W=i.useRef(null),[$,J]=i.useState({w:0,h:0});i.useEffect(()=>{const e=W.current;if(!e)return;const t=new ResizeObserver(([r])=>{J({w:r.contentRect.width,h:r.contentRect.height})});return t.observe(e),()=>t.disconnect()},[]);const u=i.useMemo(()=>de(h.length,$),[h.length,$]),L=i.useMemo(()=>h.slice(0,u.shown),[h,u.shown]);i.useEffect(()=>{se(h.map(e=>({id:e.id,name:e.agent?.name??me(e),handle:e.agent?.handle??ue(e),harness:e.source,branch:e.agent?.branch??null,project:e.project,model:e.agent?.model??null,state:e.agent?.state??null,agentClass:e.agent?"agent":"native-session",updatedAt:e.lastActiveAt,source:e.agent||e.attribution==="scout-managed"?"scout":"native",activity:Ne(e,S,p),lastActiveAt:e.lastActiveAt})))},[p,S,h]);const[G,D]=i.useState(null),V=i.useRef(null),N=i.useRef(null);i.useEffect(()=>{v&&V.current!==v.serial&&(V.current=v.serial,T(v.id),D(v.id),N.current&&clearTimeout(N.current),N.current=setTimeout(()=>D(null),Se),te(v.serial))},[v]),i.useEffect(()=>()=>{N.current&&clearTimeout(N.current)},[]);const I=g?y.find(e=>e.id===g)??null:null,c=i.useMemo(()=>{if(!I)return null;if(I.agent){const e=o.find(t=>t.id===I.agent.id);if(e)return e}return Ae(I)},[o,I]),X=I?.agent?R[I.agent.id]?.data??null:null;i.useEffect(()=>{const e=t=>{const r=t.target;if(!(r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.isContentEditable)){if(t.key==="Escape"){g?A(null):n.selectedIds.length>0?H():w&&T(null);return}if((t.metaKey||t.ctrlKey)&&t.key==="a"){if(n.visibleAgents.length===0)return;t.preventDefault();const d=n.visibleAgents.map(l=>l.id);if(d.every(l=>n.selectedIds.includes(l))){H();return}for(const l of d)n.selectedIds.includes(l)||B(l)}}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[g,n.selectedIds,n.visibleAgents,w]);const Y=i.useCallback(e=>{s({view:"ops",mode:"tail",tailQuery:e.sessionId})},[s]),Z=L.reduce((e,t)=>e+t.lines.length,0),q=y.length-h.length;return a.jsxs("div",{className:"s-wall",children:[a.jsxs("div",{className:"s-wall-status",children:[a.jsx("span",{className:"s-wall-status-key",children:"logs"}),a.jsxs("span",{className:"s-wall-status-value",children:[u.shown,"/",h.length]}),a.jsx("span",{className:"s-wall-status-key",children:"grid"}),a.jsx("span",{className:"s-wall-status-value",children:u.cols>0?`${u.cols}×${u.rows}`:"—"}),a.jsx("span",{className:"s-wall-status-key",children:"lines"}),a.jsx("span",{className:"s-wall-status-value",children:Z}),u.hidden>0&&a.jsxs("span",{className:"s-wall-status-hidden",title:"Least recently active logs are withheld to keep panes readable",children:[u.hidden," withheld"]}),q>0&&a.jsxs("span",{className:"s-wall-status-hidden",title:"Sessions discovery knows of that have produced no output to tail",children:[q," quiet"]}),w&&a.jsx("button",{type:"button",className:"s-wall-status-pin",onClick:()=>T(null),children:"unpin"})]}),a.jsx("div",{ref:W,className:"s-wall-grid",style:{gridTemplateColumns:`repeat(${Math.max(1,u.cols)}, minmax(0, 1fr))`,gridTemplateRows:`repeat(${Math.max(1,u.rows)}, minmax(0, 1fr))`,gap:he},children:L.length===0?a.jsxs("div",{className:"s-wall-empty",children:[a.jsx("div",{className:"s-wall-empty-title",children:y.length===0?"No logs on the wire":"No matching logs"}),a.jsx("div",{className:"s-wall-empty-sub",children:y.length===0?"Panes appear as sessions start writing to their transcripts.":"Widen the activity window or clear the filter."})]}):L.map(e=>a.jsx(fe,{log:e,selected:n.selectedIds.includes(e.id),revealed:G===e.id,onOpen:()=>A(e.id),onToggleSelected:()=>B(e.id),onOpenLog:()=>Y(e)},e.id))}),c&&a.jsx(ae,{agent:c,observe:X,onClose:()=>A(null),onSend:e=>be(c,e),onOpenConversation:()=>{if(A(null),z(c)&&c.harnessSessionId){s({view:"sessions",sessionId:c.harnessSessionId});return}Q(c).then(e=>s({view:"conversation",conversationId:e})).catch(()=>s({view:"agents-v2",agentId:c.id,tab:"message"}))},onTail:()=>{A(null),s({view:"ops",mode:"tail",tailQuery:c.harnessSessionId??c.handle??c.name})},onProfile:()=>{A(null),s({view:"agents-v2",agentId:c.id})}})]})}export{Ye as MissionControlView};
@@ -1 +1 @@
1
- import{r as f,j as e}from"./index-DMiGbrBt.js";import{d as w,c as N,n as $}from"./colors-BtO5_zlx.js";import{u as C}from"./keyboard-nav-2kv_tGUS.js";import{t as j}from"./time-DltNTpLl.js";import{f as M}from"./text-DsBWV_4k.js";import{s as v}from"./page-status-DpkedE1F.js";import{M as S}from"./runtime-picker-Bcl5iIX5.js";import"./index-CJXzfjo9.js";import{K as k}from"./mission-control-model-C0fByIjm.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./createLucideIcon-OpA4Amw5.js";function Q({agent:s,observe:a,onClose:l,onSend:o,onOpenConversation:r,onTail:d,onProfile:h}){const p=w(s.name),{ref:m,onKeyDown:u}=C(),[i,n]=f.useState("profile"),c=t=>{if(u(t),t.defaultPrevented)return;const y=t.target;y instanceof HTMLInputElement||y instanceof HTMLTextAreaElement||(y?.isContentEditable??!1)||(t.key==="1"?(t.preventDefault(),n("profile")):t.key==="2"?(t.preventDefault(),n("activity")):t.key==="3"&&(t.preventDefault(),n("message")))};return e.jsx("div",{className:"s-mission-overlay",onClick:l,children:e.jsxs("div",{ref:m,role:"dialog","aria-modal":"true","aria-labelledby":"mission-overlay-title",onClick:t=>t.stopPropagation(),onKeyDown:c,tabIndex:-1,className:"s-mission-overlay-dialog",children:[e.jsxs("div",{className:"s-mission-overlay-header",children:[e.jsx("div",{className:"s-ops-avatar",style:{"--size":"28px",background:p},children:s.name[0]?.toUpperCase()}),e.jsxs("div",{className:"s-mission-overlay-identity",children:[e.jsxs("div",{className:"s-mission-overlay-name",id:"mission-overlay-title",children:[s.name," ",e.jsx("span",{className:"s-mission-overlay-handle",children:s.handle?`@${s.handle}`:""})]}),e.jsxs("div",{className:"s-mission-overlay-meta",children:[s.project??"—"," · ",s.branch??"main"," · ",N(s.state)]})]}),e.jsx("button",{className:"s-mission-overlay-close",onClick:l,"aria-label":"Close (Esc)",title:"Close (Esc)",children:"✕"})]}),e.jsxs("div",{className:"s-mission-overlay-tabs",role:"tablist",children:[e.jsxs("div",{className:"s-mission-overlay-tabs-group",children:[e.jsx("button",{type:"button",role:"tab","aria-selected":i==="profile",className:`s-mission-overlay-tab${i==="profile"?" s-mission-overlay-tab--active":""}`,onClick:()=>n("profile"),children:"Profile"}),e.jsx("button",{type:"button",role:"tab","aria-selected":i==="activity",className:`s-mission-overlay-tab${i==="activity"?" s-mission-overlay-tab--active":""}`,onClick:()=>n("activity"),children:"Activity"}),e.jsx("button",{type:"button",role:"tab","aria-selected":i==="message",className:`s-mission-overlay-tab${i==="message"?" s-mission-overlay-tab--active":""}`,onClick:()=>n("message"),children:"Message"})]}),e.jsxs("div",{className:"s-mission-overlay-tabs-action",children:[i==="profile"&&e.jsx("button",{type:"button",className:"s-mission-overlay-jump",onClick:h,...v({label:`Open profile · ${s.handle??s.name}`,route:`/agents/${s.id}`}),children:"Open profile ↗"}),i==="activity"&&e.jsx("button",{type:"button",className:"s-mission-overlay-jump",onClick:d,...v({label:`Tail · ${s.handle??s.name}`,route:`/ops/tail?q=${encodeURIComponent(s.handle??s.name)}`}),children:"Open in Tail ↗"}),i==="message"&&e.jsx("button",{type:"button",className:"s-mission-overlay-jump",onClick:r,...v({label:`Open conversation with ${s.handle??s.name}`,...s.conversationId?{route:`/c/${s.conversationId}`}:{}}),children:"Open conversation ↗"})]})]}),e.jsxs("div",{className:"s-mission-overlay-body",children:[i==="profile"&&e.jsx(E,{agent:s}),i==="activity"&&e.jsx(D,{agent:s,observe:a,onOpenConversation:r,onMessage:()=>n("message")}),i==="message"&&e.jsx(O,{agent:s,onSend:o,onOpenConversation:r})]})]})})}function E({agent:s}){const a=[["MODEL",[s.harness,s.model].filter(Boolean).join("/")||"—"],["AT",[s.project,s.branch].filter(Boolean).join("/")||"—"],["CWD",s.cwd||s.projectRoot||"—"],["AGENT",s.agentClass||"—"],["ROLE",s.role||s.transport||"—"],["MACHINE",s.authorityNodeName??s.homeNodeName??s.authorityNodeId??s.homeNodeId??"—"],["OWNER",s.ownerHandle??s.ownerName??s.ownerId??"—"],["SPAWNED",s.createdAt?j(s.createdAt):"—"],["STATE",N(s.state)]];return e.jsx("div",{className:"s-focus-tab",children:e.jsx("dl",{className:"s-focus-spec",children:a.map(([l,o])=>e.jsxs("div",{className:"s-focus-spec-row",children:[e.jsx("dt",{className:"s-focus-spec-label",children:l}),e.jsx("dd",{className:"s-focus-spec-value",title:o,children:o})]},l))})})}const T={tool:"▸",think:"·",ask:"?",message:"✉",note:"•",system:"◇",boot:"↑"};function A(s,a){if(a){const o=Date.now()-(a+s*1e3);return o<6e4?`${Math.max(0,Math.round(o/1e3))}s`:o<36e5?`${Math.round(o/6e4)}m`:o<864e5?`${Math.round(o/36e5)}h`:`${Math.round(o/864e5)}d`}const l=Math.max(0,Math.round(s));return l<60?`${l}s`:l<3600?`${Math.round(l/60)}m`:`${Math.round(l/3600)}h`}function I(s){if(s.kind==="tool"){const a=s.tool??"tool";return s.arg?`${a} · ${s.arg}`:a}return s.kind==="ask"?s.text||"request received":s.text||s.detail||k[s.kind]||s.kind}function D({agent:s,observe:a,onOpenConversation:l,onMessage:o}){const r=a?.events??[],d=a?.metadata?.usage,h=typeof a?.metadata?.session?.sessionStart=="number"?(a?.metadata?.session).sessionStart:null,p=r.slice(-14).reverse(),m=d?.assistantMessages??r.filter(t=>t.kind==="message").length,u=r.filter(t=>t.kind==="tool").length,i=r.filter(t=>t.kind==="tool"&&(t.tool==="edit"||t.tool==="write")).length,n=a?.contextUsage&&a.contextUsage.length>0?Math.round(a.contextUsage[a.contextUsage.length-1]*100):null,c=n!==null?`${n}%`:d?.contextWindowTokens&&d?.contextInputTokens?`${Math.round(d.contextInputTokens/d.contextWindowTokens*100)}%`:"—";return e.jsxs("div",{className:"s-focus-tab s-focus-tab--activity-preview",children:[e.jsxs("dl",{className:"s-focus-stats",children:[e.jsx(b,{label:"Turns",value:m||"—"}),e.jsx(b,{label:"Tools",value:u||"—"}),e.jsx(b,{label:"Edits",value:i||"—"}),e.jsx(b,{label:"Context",value:c})]}),p.length===0?e.jsx(L,{agent:s,onOpenConversation:l,onMessage:o}):e.jsx("ul",{className:"s-focus-activity-list",children:p.map(t=>e.jsxs("li",{className:`s-focus-activity-row s-focus-activity-row--${t.kind}`,children:[e.jsx("span",{className:"s-focus-activity-time",children:A(t.t,h)}),e.jsx("span",{className:"s-focus-activity-glyph","aria-hidden":!0,children:T[t.kind]??"·"}),e.jsx("span",{className:"s-focus-activity-kind",children:k[t.kind]??t.kind}),e.jsx("span",{className:"s-focus-activity-text",children:I(t)})]},t.id))})]})}function L({agent:s,onOpenConversation:a,onMessage:l}){const o=M(s.role),r=[s.harness,s.model].filter(Boolean).join("/"),d=[s.project,s.branch].filter(Boolean).join("/"),h=$(s.state),p=N(h),m=s.createdAt?j(s.createdAt):null,u=s.updatedAt?j(s.updatedAt):null,i=s.homeNodeName??s.homeNodeId,n=s.ownerHandle??s.ownerName??s.ownerId,c=[];return o&&c.push({label:"Role",value:o}),r&&c.push({label:"Stack",value:r}),d&&c.push({label:"At",value:d}),i&&c.push({label:"Home",value:i}),n&&c.push({label:"Owner",value:n}),m&&c.push({label:"Spawned",value:m}),c.push({label:"State",value:p}),u&&c.push({label:"Last seen",value:u}),e.jsxs("div",{className:"s-focus-activity-empty s-focus-activity-empty--rich",children:[e.jsxs("div",{className:"s-focus-activity-empty-head",children:[e.jsx("span",{className:"s-focus-activity-empty-eyebrow",children:"No tool or turn events recorded"}),e.jsx("span",{className:"s-focus-activity-empty-title",children:s.handle??s.name})]}),e.jsx("dl",{className:"s-focus-activity-empty-facts",children:c.map(t=>e.jsxs("div",{className:"s-focus-activity-empty-fact",children:[e.jsx("dt",{children:t.label}),e.jsx("dd",{title:t.value,children:t.value})]},t.label))}),e.jsxs("div",{className:"s-focus-activity-empty-actions",children:[e.jsx("button",{type:"button",className:"s-focus-activity-empty-btn",onClick:a,...v({label:`Open conversation with ${s.handle??s.name}`,...s.conversationId?{route:`/c/${s.conversationId}`}:{}}),children:"Open conversation ↗"}),e.jsx("button",{type:"button",className:"s-focus-activity-empty-btn s-focus-activity-empty-btn--primary",onClick:l,...v({label:`Compose message · ${s.handle??s.name}`}),children:"Send a message"})]})]})}function b({label:s,value:a}){return e.jsxs("div",{className:"s-focus-stat",children:[e.jsx("dt",{className:"s-focus-stat-label",children:s}),e.jsx("dd",{className:"s-focus-stat-value",children:a})]})}function O({agent:s,onSend:a,onOpenConversation:l}){const[o,r]=f.useState(""),[d,h]=f.useState(!1),[p,m]=f.useState(!1),[u,i]=f.useState(null),n=f.useRef(null);f.useEffect(()=>{n.current?.focus()},[]);const c=async()=>{const y=o.trim();if(!(!y||d)){h(!0),i(null);try{await a(y),r(""),m(!0),setTimeout(()=>m(!1),1800)}catch(x){i(x instanceof Error?x.message:String(x))}finally{h(!1)}}},t=s.handle??s.name;return e.jsx("div",{className:"s-focus-tab",children:e.jsx("div",{className:"s-focus-compose",children:e.jsx(S,{density:"panel",value:o,onChange:r,onSend:()=>{c()},sending:d,placeholder:`Message @${t}…`,textareaRef:n,rows:4,"aria-label":`Message @${t}`,header:e.jsxs("div",{className:"s-focus-compose-label",children:["Message ",e.jsxs("span",{className:"s-focus-compose-target",children:["@",t]})]}),tools:e.jsx("div",{className:"s-focus-compose-hint",children:u?e.jsxs("span",{className:"s-focus-compose-error",children:["Send failed: ",u]}):p?e.jsxs("span",{className:"s-focus-compose-ok",children:["Sent ↗"," ",e.jsx("button",{type:"button",className:"s-focus-compose-link",onClick:l,children:"Open Chat"})]}):e.jsx("span",{children:"Send starts a Run, or steers the active Run when this agent is already working."})})})})})}export{Q as FocusOverlay};
1
+ import{r as f,j as e}from"./index-sUomXsrf.js";import{d as w,c as N,n as $}from"./colors-BtO5_zlx.js";import{u as C}from"./keyboard-nav-BhZZ5HEq.js";import{t as j}from"./time-Dhsh_2EG.js";import{f as M}from"./text-DsBWV_4k.js";import{s as v}from"./page-status-BymFEFai.js";import{M as S}from"./runtime-picker-DOZpZOlt.js";import"./index-m6dFtY5f.js";import{K as k}from"./mission-control-model-C0fByIjm.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./createLucideIcon-DlxlBfLC.js";function Q({agent:s,observe:a,onClose:l,onSend:o,onOpenConversation:r,onTail:d,onProfile:h}){const p=w(s.name),{ref:m,onKeyDown:u}=C(),[i,n]=f.useState("profile"),c=t=>{if(u(t),t.defaultPrevented)return;const y=t.target;y instanceof HTMLInputElement||y instanceof HTMLTextAreaElement||(y?.isContentEditable??!1)||(t.key==="1"?(t.preventDefault(),n("profile")):t.key==="2"?(t.preventDefault(),n("activity")):t.key==="3"&&(t.preventDefault(),n("message")))};return e.jsx("div",{className:"s-mission-overlay",onClick:l,children:e.jsxs("div",{ref:m,role:"dialog","aria-modal":"true","aria-labelledby":"mission-overlay-title",onClick:t=>t.stopPropagation(),onKeyDown:c,tabIndex:-1,className:"s-mission-overlay-dialog",children:[e.jsxs("div",{className:"s-mission-overlay-header",children:[e.jsx("div",{className:"s-ops-avatar",style:{"--size":"28px",background:p},children:s.name[0]?.toUpperCase()}),e.jsxs("div",{className:"s-mission-overlay-identity",children:[e.jsxs("div",{className:"s-mission-overlay-name",id:"mission-overlay-title",children:[s.name," ",e.jsx("span",{className:"s-mission-overlay-handle",children:s.handle?`@${s.handle}`:""})]}),e.jsxs("div",{className:"s-mission-overlay-meta",children:[s.project??"—"," · ",s.branch??"main"," · ",N(s.state)]})]}),e.jsx("button",{className:"s-mission-overlay-close",onClick:l,"aria-label":"Close (Esc)",title:"Close (Esc)",children:"✕"})]}),e.jsxs("div",{className:"s-mission-overlay-tabs",role:"tablist",children:[e.jsxs("div",{className:"s-mission-overlay-tabs-group",children:[e.jsx("button",{type:"button",role:"tab","aria-selected":i==="profile",className:`s-mission-overlay-tab${i==="profile"?" s-mission-overlay-tab--active":""}`,onClick:()=>n("profile"),children:"Profile"}),e.jsx("button",{type:"button",role:"tab","aria-selected":i==="activity",className:`s-mission-overlay-tab${i==="activity"?" s-mission-overlay-tab--active":""}`,onClick:()=>n("activity"),children:"Activity"}),e.jsx("button",{type:"button",role:"tab","aria-selected":i==="message",className:`s-mission-overlay-tab${i==="message"?" s-mission-overlay-tab--active":""}`,onClick:()=>n("message"),children:"Message"})]}),e.jsxs("div",{className:"s-mission-overlay-tabs-action",children:[i==="profile"&&e.jsx("button",{type:"button",className:"s-mission-overlay-jump",onClick:h,...v({label:`Open profile · ${s.handle??s.name}`,route:`/agents/${s.id}`}),children:"Open profile ↗"}),i==="activity"&&e.jsx("button",{type:"button",className:"s-mission-overlay-jump",onClick:d,...v({label:`Tail · ${s.handle??s.name}`,route:`/ops/tail?q=${encodeURIComponent(s.handle??s.name)}`}),children:"Open in Tail ↗"}),i==="message"&&e.jsx("button",{type:"button",className:"s-mission-overlay-jump",onClick:r,...v({label:`Open conversation with ${s.handle??s.name}`,...s.conversationId?{route:`/c/${s.conversationId}`}:{}}),children:"Open conversation ↗"})]})]}),e.jsxs("div",{className:"s-mission-overlay-body",children:[i==="profile"&&e.jsx(E,{agent:s}),i==="activity"&&e.jsx(D,{agent:s,observe:a,onOpenConversation:r,onMessage:()=>n("message")}),i==="message"&&e.jsx(O,{agent:s,onSend:o,onOpenConversation:r})]})]})})}function E({agent:s}){const a=[["MODEL",[s.harness,s.model].filter(Boolean).join("/")||"—"],["AT",[s.project,s.branch].filter(Boolean).join("/")||"—"],["CWD",s.cwd||s.projectRoot||"—"],["AGENT",s.agentClass||"—"],["ROLE",s.role||s.transport||"—"],["MACHINE",s.authorityNodeName??s.homeNodeName??s.authorityNodeId??s.homeNodeId??"—"],["OWNER",s.ownerHandle??s.ownerName??s.ownerId??"—"],["SPAWNED",s.createdAt?j(s.createdAt):"—"],["STATE",N(s.state)]];return e.jsx("div",{className:"s-focus-tab",children:e.jsx("dl",{className:"s-focus-spec",children:a.map(([l,o])=>e.jsxs("div",{className:"s-focus-spec-row",children:[e.jsx("dt",{className:"s-focus-spec-label",children:l}),e.jsx("dd",{className:"s-focus-spec-value",title:o,children:o})]},l))})})}const T={tool:"▸",think:"·",ask:"?",message:"✉",note:"•",system:"◇",boot:"↑"};function A(s,a){if(a){const o=Date.now()-(a+s*1e3);return o<6e4?`${Math.max(0,Math.round(o/1e3))}s`:o<36e5?`${Math.round(o/6e4)}m`:o<864e5?`${Math.round(o/36e5)}h`:`${Math.round(o/864e5)}d`}const l=Math.max(0,Math.round(s));return l<60?`${l}s`:l<3600?`${Math.round(l/60)}m`:`${Math.round(l/3600)}h`}function I(s){if(s.kind==="tool"){const a=s.tool??"tool";return s.arg?`${a} · ${s.arg}`:a}return s.kind==="ask"?s.text||"request received":s.text||s.detail||k[s.kind]||s.kind}function D({agent:s,observe:a,onOpenConversation:l,onMessage:o}){const r=a?.events??[],d=a?.metadata?.usage,h=typeof a?.metadata?.session?.sessionStart=="number"?(a?.metadata?.session).sessionStart:null,p=r.slice(-14).reverse(),m=d?.assistantMessages??r.filter(t=>t.kind==="message").length,u=r.filter(t=>t.kind==="tool").length,i=r.filter(t=>t.kind==="tool"&&(t.tool==="edit"||t.tool==="write")).length,n=a?.contextUsage&&a.contextUsage.length>0?Math.round(a.contextUsage[a.contextUsage.length-1]*100):null,c=n!==null?`${n}%`:d?.contextWindowTokens&&d?.contextInputTokens?`${Math.round(d.contextInputTokens/d.contextWindowTokens*100)}%`:"—";return e.jsxs("div",{className:"s-focus-tab s-focus-tab--activity-preview",children:[e.jsxs("dl",{className:"s-focus-stats",children:[e.jsx(b,{label:"Turns",value:m||"—"}),e.jsx(b,{label:"Tools",value:u||"—"}),e.jsx(b,{label:"Edits",value:i||"—"}),e.jsx(b,{label:"Context",value:c})]}),p.length===0?e.jsx(L,{agent:s,onOpenConversation:l,onMessage:o}):e.jsx("ul",{className:"s-focus-activity-list",children:p.map(t=>e.jsxs("li",{className:`s-focus-activity-row s-focus-activity-row--${t.kind}`,children:[e.jsx("span",{className:"s-focus-activity-time",children:A(t.t,h)}),e.jsx("span",{className:"s-focus-activity-glyph","aria-hidden":!0,children:T[t.kind]??"·"}),e.jsx("span",{className:"s-focus-activity-kind",children:k[t.kind]??t.kind}),e.jsx("span",{className:"s-focus-activity-text",children:I(t)})]},t.id))})]})}function L({agent:s,onOpenConversation:a,onMessage:l}){const o=M(s.role),r=[s.harness,s.model].filter(Boolean).join("/"),d=[s.project,s.branch].filter(Boolean).join("/"),h=$(s.state),p=N(h),m=s.createdAt?j(s.createdAt):null,u=s.updatedAt?j(s.updatedAt):null,i=s.homeNodeName??s.homeNodeId,n=s.ownerHandle??s.ownerName??s.ownerId,c=[];return o&&c.push({label:"Role",value:o}),r&&c.push({label:"Stack",value:r}),d&&c.push({label:"At",value:d}),i&&c.push({label:"Home",value:i}),n&&c.push({label:"Owner",value:n}),m&&c.push({label:"Spawned",value:m}),c.push({label:"State",value:p}),u&&c.push({label:"Last seen",value:u}),e.jsxs("div",{className:"s-focus-activity-empty s-focus-activity-empty--rich",children:[e.jsxs("div",{className:"s-focus-activity-empty-head",children:[e.jsx("span",{className:"s-focus-activity-empty-eyebrow",children:"No tool or turn events recorded"}),e.jsx("span",{className:"s-focus-activity-empty-title",children:s.handle??s.name})]}),e.jsx("dl",{className:"s-focus-activity-empty-facts",children:c.map(t=>e.jsxs("div",{className:"s-focus-activity-empty-fact",children:[e.jsx("dt",{children:t.label}),e.jsx("dd",{title:t.value,children:t.value})]},t.label))}),e.jsxs("div",{className:"s-focus-activity-empty-actions",children:[e.jsx("button",{type:"button",className:"s-focus-activity-empty-btn",onClick:a,...v({label:`Open conversation with ${s.handle??s.name}`,...s.conversationId?{route:`/c/${s.conversationId}`}:{}}),children:"Open conversation ↗"}),e.jsx("button",{type:"button",className:"s-focus-activity-empty-btn s-focus-activity-empty-btn--primary",onClick:l,...v({label:`Compose message · ${s.handle??s.name}`}),children:"Send a message"})]})]})}function b({label:s,value:a}){return e.jsxs("div",{className:"s-focus-stat",children:[e.jsx("dt",{className:"s-focus-stat-label",children:s}),e.jsx("dd",{className:"s-focus-stat-value",children:a})]})}function O({agent:s,onSend:a,onOpenConversation:l}){const[o,r]=f.useState(""),[d,h]=f.useState(!1),[p,m]=f.useState(!1),[u,i]=f.useState(null),n=f.useRef(null);f.useEffect(()=>{n.current?.focus()},[]);const c=async()=>{const y=o.trim();if(!(!y||d)){h(!0),i(null);try{await a(y),r(""),m(!0),setTimeout(()=>m(!1),1800)}catch(x){i(x instanceof Error?x.message:String(x))}finally{h(!1)}}},t=s.handle??s.name;return e.jsx("div",{className:"s-focus-tab",children:e.jsx("div",{className:"s-focus-compose",children:e.jsx(S,{density:"panel",value:o,onChange:r,onSend:()=>{c()},sending:d,placeholder:`Message @${t}…`,textareaRef:n,rows:4,"aria-label":`Message @${t}`,header:e.jsxs("div",{className:"s-focus-compose-label",children:["Message ",e.jsxs("span",{className:"s-focus-compose-target",children:["@",t]})]}),tools:e.jsx("div",{className:"s-focus-compose-hint",children:u?e.jsxs("span",{className:"s-focus-compose-error",children:["Send failed: ",u]}):p?e.jsxs("span",{className:"s-focus-compose-ok",children:["Sent ↗"," ",e.jsx("button",{type:"button",className:"s-focus-compose-link",onClick:l,children:"Open Chat"})]}):e.jsx("span",{children:"Send starts a Run, or steers the active Run when this agent is already working."})})})})})}export{Q as FocusOverlay};
@@ -0,0 +1 @@
1
+ import{j as l}from"./index-sUomXsrf.js";import{c as j}from"./colors-BtO5_zlx.js";import{s as x}from"./page-status-BymFEFai.js";import{t as i}from"./time-Dhsh_2EG.js";import{R as b}from"./RailRow-BTlVAnHS.js";import"./AgentAvatar-CufDA4A-.js";import"./SpriteAvatar-CQs-jC-v.js";import"./agent-identity-xQHedtLl.js";function E({agent:e,state:t,isExpanded:s,isSelected:a,tabIndex:n,onToggle:c,onReveal:m,onOpen:d}){const r=x({label:`Focus ${e.handle??e.name}`,route:`/ops/control · ${e.id}`}),p=l.jsxs(l.Fragment,{children:[l.jsxs("dl",{className:"rr-spec-list",children:[l.jsx(o,{label:"MODEL",value:[e.harness,e.model].filter(Boolean).join("/")||"—"}),l.jsx(o,{label:"AT",value:[e.project,e.branch].filter(Boolean).join("/")||"—"}),l.jsx(o,{label:"STATE",value:j(t)}),l.jsx(o,{label:"ACTIVITY",value:e.activity}),l.jsx(o,{label:"SOURCE",value:e.source})]}),l.jsxs("div",{className:"ml-detail-actions",children:[l.jsx("button",{type:"button",className:"ml-detail-btn",onClick:m,children:"Reveal on wall"}),l.jsx("button",{type:"button",className:"ml-detail-btn ml-detail-btn--primary",onClick:d,children:"Open ↗"})]})]});return l.jsx(b,{name:e.handle??e.name,meta:e.lastActiveAt?i(e.lastActiveAt):e.updatedAt?i(e.updatedAt):void 0,tone:t,caret:s?"open":"closed",selected:a,expanded:s,detail:p,tabIndex:n,onClick:u=>c(u),onPointerEnter:r.onPointerEnter,onPointerLeave:r.onPointerLeave})}function o({label:e,value:t}){return l.jsxs("div",{className:"rr-spec",children:[l.jsx("dt",{className:"rr-spec-label",children:e}),l.jsx("dd",{className:"rr-spec-value",title:t,children:t})]})}export{E as MissionLeftAgentRow};
@@ -1 +1 @@
1
- import{r as w,j as u}from"./index-DMiGbrBt.js";import{H as g}from"./HarnessMark-Cbv3Ib0c.js";import{n as y}from"./colors-BtO5_zlx.js";import{s as N}from"./page-status-DpkedE1F.js";import{c as _,T as I,b as W}from"./tail-display-BdyoLvzY.js";import{b as E}from"./time-DltNTpLl.js";import{m as H,s as T}from"./mission-control-model-C0fByIjm.js";const k=16,C=300,S=180,F=8,$=400,j=1.55,M={w:1440,h:860};function R(e,s,o,a,c,d){let l=null;for(let t=1;t<=e;t+=1){const r=Math.ceil(e/t),n=(s-a*(t-1))/t,f=(o-a*(r-1))/r;if(n<c||f<d)continue;const m=t*r-e,p=Math.min(n,f*j)*Math.min(n/j,f);(!l||m<l.waste||m===l.waste&&p>l.fit)&&(l={cols:t,rows:r,paneW:n,paneH:f,waste:m,fit:p})}return l}function ee(e,s,o={}){const a=o.max??k,c=o.minW??C,d=o.minH??S,l=o.gap??F,t=s.w>0?s.w:M.w,r=s.h>0?s.h:M.h,n=Math.max(0,Math.floor(e));if(n===0)return{cols:0,rows:0,shown:0,hidden:0,paneW:0,paneH:0};for(let f=Math.min(n,a);f>=1;f-=1){const m=R(f,t,r,l,c,d);if(m)return{cols:m.cols,rows:m.rows,shown:f,hidden:n-f,paneW:m.paneW,paneH:m.paneH}}return{cols:1,rows:1,shown:1,hidden:n-1,paneW:t,paneH:r}}function B(e){const s=e.sessionId?.trim();return s||null}function te(e){const s=e.bufferPerLog??$,o=new Map;for(const t of e.agents)for(const r of t.sessionIds){const n=r.trim();n&&o.set(n,t)}const a=new Map,c=(t,r)=>{const n=a.get(t);if(n)return n;const f={id:t,sessionId:t,lines:[],lastActiveAt:0,live:!1,agent:o.get(t)??null,...r};return a.set(t,f),f};for(const t of e.transcripts){const r=B(t);if(!r)continue;const n=c(r,{source:t.source,attribution:t.harness,project:t.project,cwd:t.cwd,logPath:t.transcriptPath});n.lastActiveAt=Math.max(n.lastActiveAt,t.mtimeMs??0)}const d=new Set;for(const t of e.events){const r=t.sessionId?.trim();if(!r)continue;if(t.id){if(d.has(t.id))continue;d.add(t.id)}const n=c(r,{source:t.source,attribution:t.harness,project:t.project,cwd:t.cwd,logPath:null});n.source=t.source,n.attribution=t.harness,n.project=t.project||n.project,n.cwd=t.cwd||n.cwd,n.lines.push(t),n.lastActiveAt=Math.max(n.lastActiveAt,t.ts)}const l=[];for(const t of a.values())t.lines.length>s&&(t.lines=t.lines.slice(t.lines.length-s)),t.live=t.lastActiveAt>0&&e.now-t.lastActiveAt<=e.liveWindowMs,l.push(t);return l}function K(e,s){const o=s.trim().toLowerCase();return o?[e.agent?.name,e.agent?.handle,e.agent?.branch,e.project,e.source,e.sessionId,e.cwd,e.logPath].filter(a=>!!a).some(a=>a.toLowerCase().includes(o)):!0}function v(e){return e.attribution==="scout-managed"||e.agent!==null}function se(e,s){const o=s.requireOutput??!0;return e.filter(a=>{if(o&&a.lines.length===0||s.sourceFilter==="scout"&&!v(a)||s.sourceFilter==="native"&&v(a)||s.activityFilter==="live"&&!a.live)return!1;if(s.activityFilter==="active"){const c=s.now-a.lastActiveAt;if(!(a.lastActiveAt>0&&c<=s.activeWindowMs))return!1}return K(a,s.query)})}function A(e,s){return s==="activity"?"":H({activityLabel:"",workspace:e.project,harness:e.source,state:e.agent?.state??null,source:v(e)?"scout":"native"},s)}function ne(e,s){const o=new Map;for(const a of e){const c=A(a,s);o.set(c,Math.max(o.get(c)??0,a.lastActiveAt))}return[...e].sort((a,c)=>{const d=A(a,s),l=A(c,s);if(d!==l){const t=(o.get(l)??0)-(o.get(d)??0);return t!==0?t:d.localeCompare(l)}return a.lastActiveAt!==c.lastActiveAt?c.lastActiveAt-a.lastActiveAt:a.sessionId.localeCompare(c.sessionId)})}function O(e){return e.sessionId.slice(0,13)}function G(e){const s=e.agent?.handle?.trim();if(s)return`@${s}`;const o=e.agent?.name?.trim();return o||`${e.source}:${O(e)}`}function q(e){const s=e.logPath?.trim();return s?s.split("/").pop()||s:`${e.sessionId.slice(0,12)}.log`}const z=24;function D({log:e,selected:s,revealed:o,onOpen:a,onToggleSelected:c,onOpenLog:d,paneRef:l}){const t=w.useRef(null),r=w.useRef(!0),n=w.useMemo(()=>_(e.lines.map(i=>({event:i,meta:void 0}))),[e.lines]),f=w.useCallback(()=>{const i=t.current;if(!i)return;const h=i.scrollHeight-i.scrollTop-i.clientHeight;r.current=h<=z},[]);w.useEffect(()=>{const i=t.current;!i||!r.current||(i.scrollTop=i.scrollHeight)},[n.length,e.lastActiveAt]);const m=y(e.agent?.state??null),p=G(e),x=q(e),L=[e.project,e.agent?.branch].filter(Boolean).join("/")||e.cwd||"—",b=N({label:`Focus ${p}`,route:`/ops/control · ${e.sessionId}`}),P=i=>{if(i.metaKey||i.ctrlKey||i.shiftKey){c();return}a()};return u.jsxs("div",{ref:l,className:["s-wall-pane",e.live?"s-wall-pane--live":null,s?"s-wall-pane--selected":null,o?"s-wall-pane--revealed":null].filter(Boolean).join(" "),onClick:P,onPointerEnter:b.onPointerEnter,onPointerLeave:b.onPointerLeave,children:[u.jsxs("div",{className:"s-wall-pane-head",children:[u.jsx("span",{className:"s-wall-pane-dot",style:{background:e.agent?T(m):"var(--dim)"},"aria-hidden":!0}),u.jsx(g,{harness:e.source,size:11,title:null}),u.jsx("button",{type:"button",className:"s-wall-pane-title",title:e.agent?.name??e.sessionId,"aria-label":`Focus ${p}`,onClick:i=>{i.stopPropagation(),a()},children:p}),u.jsx("span",{className:"s-wall-pane-where",title:e.cwd??L,children:L}),u.jsx("span",{className:"s-wall-pane-spacer"}),e.live&&u.jsx("span",{className:"s-wall-pane-live",children:"live"}),u.jsx("button",{type:"button",className:"s-wall-pane-file",title:e.logPath??`session ${e.sessionId}`,onClick:i=>{i.stopPropagation(),d()},children:x})]}),u.jsx("div",{className:"s-wall-pane-body",ref:t,onScroll:f,children:n.length===0?u.jsx("div",{className:"s-wall-pane-idle",children:"no output since page load"}):n.map(({event:i,repeatCount:h})=>u.jsxs("div",{className:`s-wall-line s-wall-line--${i.kind}`,children:[u.jsx("span",{className:"s-wall-line-time",children:E(i.ts,{milliseconds:!1})||"—"}),u.jsx("span",{className:"s-wall-line-glyph",title:W[i.kind],children:I[i.kind]}),u.jsxs("span",{className:"s-wall-line-text",children:[i.summary,h>1&&u.jsxs("span",{className:"s-wall-line-repeat",title:`${h} identical events`,children:[" ","×",h]})]})]},i.id))})]})}const ae=Object.freeze(Object.defineProperty({__proto__:null,MissionLogPane:D},Symbol.toStringTag,{value:"Module"}));export{D as M,F as W,G as a,te as b,ee as c,ae as d,se as f,O as m,ne as s};
1
+ import{r as w,j as u}from"./index-sUomXsrf.js";import{H as g}from"./HarnessMark-Dm_qm1Ku.js";import{n as y}from"./colors-BtO5_zlx.js";import{s as N}from"./page-status-BymFEFai.js";import{c as _,T as I,b as W}from"./tail-display-BdyoLvzY.js";import{d as E}from"./time-Dhsh_2EG.js";import{m as H,s as T}from"./mission-control-model-C0fByIjm.js";const k=16,C=300,S=180,F=8,$=400,j=1.55,M={w:1440,h:860};function R(e,s,o,a,c,d){let l=null;for(let t=1;t<=e;t+=1){const r=Math.ceil(e/t),n=(s-a*(t-1))/t,f=(o-a*(r-1))/r;if(n<c||f<d)continue;const m=t*r-e,p=Math.min(n,f*j)*Math.min(n/j,f);(!l||m<l.waste||m===l.waste&&p>l.fit)&&(l={cols:t,rows:r,paneW:n,paneH:f,waste:m,fit:p})}return l}function ee(e,s,o={}){const a=o.max??k,c=o.minW??C,d=o.minH??S,l=o.gap??F,t=s.w>0?s.w:M.w,r=s.h>0?s.h:M.h,n=Math.max(0,Math.floor(e));if(n===0)return{cols:0,rows:0,shown:0,hidden:0,paneW:0,paneH:0};for(let f=Math.min(n,a);f>=1;f-=1){const m=R(f,t,r,l,c,d);if(m)return{cols:m.cols,rows:m.rows,shown:f,hidden:n-f,paneW:m.paneW,paneH:m.paneH}}return{cols:1,rows:1,shown:1,hidden:n-1,paneW:t,paneH:r}}function B(e){const s=e.sessionId?.trim();return s||null}function te(e){const s=e.bufferPerLog??$,o=new Map;for(const t of e.agents)for(const r of t.sessionIds){const n=r.trim();n&&o.set(n,t)}const a=new Map,c=(t,r)=>{const n=a.get(t);if(n)return n;const f={id:t,sessionId:t,lines:[],lastActiveAt:0,live:!1,agent:o.get(t)??null,...r};return a.set(t,f),f};for(const t of e.transcripts){const r=B(t);if(!r)continue;const n=c(r,{source:t.source,attribution:t.harness,project:t.project,cwd:t.cwd,logPath:t.transcriptPath});n.lastActiveAt=Math.max(n.lastActiveAt,t.mtimeMs??0)}const d=new Set;for(const t of e.events){const r=t.sessionId?.trim();if(!r)continue;if(t.id){if(d.has(t.id))continue;d.add(t.id)}const n=c(r,{source:t.source,attribution:t.harness,project:t.project,cwd:t.cwd,logPath:null});n.source=t.source,n.attribution=t.harness,n.project=t.project||n.project,n.cwd=t.cwd||n.cwd,n.lines.push(t),n.lastActiveAt=Math.max(n.lastActiveAt,t.ts)}const l=[];for(const t of a.values())t.lines.length>s&&(t.lines=t.lines.slice(t.lines.length-s)),t.live=t.lastActiveAt>0&&e.now-t.lastActiveAt<=e.liveWindowMs,l.push(t);return l}function K(e,s){const o=s.trim().toLowerCase();return o?[e.agent?.name,e.agent?.handle,e.agent?.branch,e.project,e.source,e.sessionId,e.cwd,e.logPath].filter(a=>!!a).some(a=>a.toLowerCase().includes(o)):!0}function v(e){return e.attribution==="scout-managed"||e.agent!==null}function se(e,s){const o=s.requireOutput??!0;return e.filter(a=>{if(o&&a.lines.length===0||s.sourceFilter==="scout"&&!v(a)||s.sourceFilter==="native"&&v(a)||s.activityFilter==="live"&&!a.live)return!1;if(s.activityFilter==="active"){const c=s.now-a.lastActiveAt;if(!(a.lastActiveAt>0&&c<=s.activeWindowMs))return!1}return K(a,s.query)})}function A(e,s){return s==="activity"?"":H({activityLabel:"",workspace:e.project,harness:e.source,state:e.agent?.state??null,source:v(e)?"scout":"native"},s)}function ne(e,s){const o=new Map;for(const a of e){const c=A(a,s);o.set(c,Math.max(o.get(c)??0,a.lastActiveAt))}return[...e].sort((a,c)=>{const d=A(a,s),l=A(c,s);if(d!==l){const t=(o.get(l)??0)-(o.get(d)??0);return t!==0?t:d.localeCompare(l)}return a.lastActiveAt!==c.lastActiveAt?c.lastActiveAt-a.lastActiveAt:a.sessionId.localeCompare(c.sessionId)})}function O(e){return e.sessionId.slice(0,13)}function G(e){const s=e.agent?.handle?.trim();if(s)return`@${s}`;const o=e.agent?.name?.trim();return o||`${e.source}:${O(e)}`}function q(e){const s=e.logPath?.trim();return s?s.split("/").pop()||s:`${e.sessionId.slice(0,12)}.log`}const z=24;function D({log:e,selected:s,revealed:o,onOpen:a,onToggleSelected:c,onOpenLog:d,paneRef:l}){const t=w.useRef(null),r=w.useRef(!0),n=w.useMemo(()=>_(e.lines.map(i=>({event:i,meta:void 0}))),[e.lines]),f=w.useCallback(()=>{const i=t.current;if(!i)return;const h=i.scrollHeight-i.scrollTop-i.clientHeight;r.current=h<=z},[]);w.useEffect(()=>{const i=t.current;!i||!r.current||(i.scrollTop=i.scrollHeight)},[n.length,e.lastActiveAt]);const m=y(e.agent?.state??null),p=G(e),x=q(e),L=[e.project,e.agent?.branch].filter(Boolean).join("/")||e.cwd||"—",b=N({label:`Focus ${p}`,route:`/ops/control · ${e.sessionId}`}),P=i=>{if(i.metaKey||i.ctrlKey||i.shiftKey){c();return}a()};return u.jsxs("div",{ref:l,className:["s-wall-pane",e.live?"s-wall-pane--live":null,s?"s-wall-pane--selected":null,o?"s-wall-pane--revealed":null].filter(Boolean).join(" "),onClick:P,onPointerEnter:b.onPointerEnter,onPointerLeave:b.onPointerLeave,children:[u.jsxs("div",{className:"s-wall-pane-head",children:[u.jsx("span",{className:"s-wall-pane-dot",style:{background:e.agent?T(m):"var(--dim)"},"aria-hidden":!0}),u.jsx(g,{harness:e.source,size:11,title:null}),u.jsx("button",{type:"button",className:"s-wall-pane-title",title:e.agent?.name??e.sessionId,"aria-label":`Focus ${p}`,onClick:i=>{i.stopPropagation(),a()},children:p}),u.jsx("span",{className:"s-wall-pane-where",title:e.cwd??L,children:L}),u.jsx("span",{className:"s-wall-pane-spacer"}),e.live&&u.jsx("span",{className:"s-wall-pane-live",children:"live"}),u.jsx("button",{type:"button",className:"s-wall-pane-file",title:e.logPath??`session ${e.sessionId}`,onClick:i=>{i.stopPropagation(),d()},children:x})]}),u.jsx("div",{className:"s-wall-pane-body",ref:t,onScroll:f,children:n.length===0?u.jsx("div",{className:"s-wall-pane-idle",children:"no output since page load"}):n.map(({event:i,repeatCount:h})=>u.jsxs("div",{className:`s-wall-line s-wall-line--${i.kind}`,children:[u.jsx("span",{className:"s-wall-line-time",children:E(i.ts,{milliseconds:!1})||"—"}),u.jsx("span",{className:"s-wall-line-glyph",title:W[i.kind],children:I[i.kind]}),u.jsxs("span",{className:"s-wall-line-text",children:[i.summary,h>1&&u.jsxs("span",{className:"s-wall-line-repeat",title:`${h} identical events`,children:[" ","×",h]})]})]},i.id))})]})}const ae=Object.freeze(Object.defineProperty({__proto__:null,MissionLogPane:D},Symbol.toStringTag,{value:"Module"}));export{D as M,F as W,G as a,te as b,ee as c,ae as d,se as f,O as m,ne as s};
@@ -1 +1 @@
1
- import{r,j as e}from"./index-DMiGbrBt.js";import{r as se}from"./index-CJXzfjo9.js";import{a as U}from"./api-h5zurxmi.js";import{u as ne}from"./keyboard-nav-2kv_tGUS.js";import{o as te}from"./openContent-C6XO6kr5.js";import{s as A,w as le}from"./project-overview-helpers-BQTc_Ous.js";import{X as ie}from"./x-D3GElQbe.js";import{R as re}from"./rocket-BSNS_rLs.js";import"./createLucideIcon-OpA4Amw5.js";const V=[{value:"codex",label:"Codex",runtimeId:"codex"},{value:"claude",label:"Claude",runtimeId:"claude"},{value:"pi",label:"Grok",runtimeId:"pi"}];function w(t){return t.trim().toLowerCase().replace(/^@+/,"").replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||void 0}function oe(t){const n=new Set;for(const o of t){if(!o)continue;const s=w(o);s&&n.add(s)}return n}function ce(t,n,o){const s=t.trim();if(!s)return{status:"auto",normalized:void 0,rewritten:!1,message:o==="sticky"?"Scout will assign a reusable handle from the name pool.":"Scout will assign a disposable handle from the name pool.",tone:"ok"};const l=w(s);return l?n.has(l)?{status:"conflict",normalized:l,rewritten:l!==s.toLowerCase().replace(/^@+/,""),message:`@${l} already exists here. Pick another handle or leave it blank for auto.`,tone:"warn"}:{status:"ok",normalized:l,rewritten:l!==s.toLowerCase().replace(/^@+/,""),message:null,tone:"ok"}:{status:"invalid",normalized:void 0,rewritten:!1,message:"Use letters, numbers, dot, or dash.",tone:"warn"}}function S(t){return t==="pi"?"grok":t}function de(t,n,o,s=3){const l=w(t)??"agent",m=[l,`${l}-${S(n)}`,`${l}-dev`,`${l}-2`,`${l}-${S(n)}-2`],u=[];for(const v of m){const x=w(v);if(!(!x||o.has(x)||u.includes(x))&&(u.push(x),u.length>=s))break}return u}function ue(t){const{handle:n,persistence:o,harness:s,projectRootLabel:l}=t,m="A card starts a fresh session for each request. Use session:<id> only to continue an exact run.";return o==="one_time"?{disposable:!0,card:null,cli:`scout ask --project ${l} --harness ${s} "…"`,resolves:"Disposable session — Scout assigns a provisional handle that may be recycled. Not addressable later.",note:m}:n?{disposable:!1,card:`@${n}`,cli:`scout ask @${n} "…"`,resolves:`Reusable ${S(s)} session on this project — @${n} routes here from any surface.`,note:m}:{disposable:!1,card:"@auto",cli:'scout ask @<assigned-handle> "…"',resolves:`Scout assigns a reusable ${S(s)} handle from the name pool.`,note:m}}const me={ready:"ready",configured:"configured",installed:"login needed",missing:"not found"},q={ready:"ok",configured:"ok",installed:"warn",missing:"off"};function ke({open:t,onClose:n,projectTitle:o,projectRoot:s,primaryWt:l,worktreeCount:m,branches:u,existingAgents:v,agentCount:x,sessionCount:H,route:D,navigate:C}){const{ref:J,onKeyDown:W}=ne(t),[h,G]=r.useState("codex"),[M,X]=r.useState(""),[d,E]=r.useState("sticky"),[$,P]=r.useState(""),[R,Q]=r.useState(""),[L,I]=r.useState("idle"),[_,j]=r.useState(null),[K,Y]=r.useState(null);r.useEffect(()=>{t&&(j(null),I("idle"))},[t]),r.useEffect(()=>{if(!t)return;let a=!1;return(async()=>{const c=await U("/api/agent-config/snapshot").catch(()=>null);if(a||!c)return;const f=new Map;for(const g of c.runtimes)f.set(g.id,{state:g.state,detail:g.detail,loginCommand:g.loginCommand});Y(f)})(),()=>{a=!0}},[t]),r.useEffect(()=>{if(!t)return;const a=c=>{c.key==="Escape"&&(c.preventDefault(),n())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[t,n]);const k=r.useMemo(()=>oe(v.flatMap(a=>[a.name,a.handle])),[v]),i=r.useMemo(()=>ce($,k,d),[$,k,d]),z=r.useMemo(()=>de(o,h,k,3),[o,h,k]),T=s?A(s):"<no-root>",p=r.useMemo(()=>ue({handle:i.normalized,persistence:d,harness:h,projectRootLabel:T}),[i.normalized,d,h,T]),N=K?.get(V.find(a=>a.value===h)?.runtimeId??h);if(!t)return null;const Z=!!s&&L!=="starting"&&i.status!=="invalid"&&i.status!=="conflict",ee=L==="starting"?"Starting…":d==="one_time"?"Dispatch one-off":i.status==="conflict"?"Handle exists":i.normalized?`Create @${i.normalized}`:"Create with auto handle",O=async()=>{if(!(!s||L==="starting")){I("starting"),j(null);try{const a=M.trim(),c=R.trim(),f=i.normalized,g=await U("/api/sessions",{method:"POST",body:JSON.stringify({target:{projectPath:s},execution:{session:"new",harness:h,...a?{model:a}:{}},agent:{persistence:d,...f?{handle:f}:{}},...c?{seed:{instructions:c}}:{}})}),B=g.agentId?.trim(),F=g.sessionId?.trim(),y=g.conversationId?.trim();if(F){n(),te(C,{view:"sessions",sessionId:F},{returnTo:D});return}if(B){n(),C({...D,view:"agents-v2",agentId:B,selectedAgentId:void 0,sessionId:void 0,...y?{conversationId:y,tab:"message"}:{tab:"profile"}});return}if(y){n(),C({view:"conversation",conversationId:y});return}j("Agent start was accepted, but no target came back.")}catch(a){j(a instanceof Error?a.message:"Could not start an agent.")}finally{I("idle")}}},ae=a=>{if((a.metaKey||a.ctrlKey)&&a.key==="Enter"){a.preventDefault(),O();return}W(a)},b=[];return b.push({label:"root",value:s?A(s):"no project root",title:s??void 0}),l?b.push({label:"branch",value:le(l),title:l.path}):u.length>0&&b.push({label:"branch",value:u.length===1?u[0]:`${u.length} branches`}),m>1&&b.push({label:"worktrees",value:String(m)}),b.push({label:"existing",value:`${x} agent${x===1?"":"s"} · ${H} session${H===1?"":"s"}`}),se.createPortal(e.jsx("div",{className:"na-backdrop",role:"presentation",onClick:n,children:e.jsxs("div",{ref:J,className:"na-panel",role:"dialog","aria-modal":"true","aria-labelledby":"na-title",tabIndex:-1,onClick:a=>a.stopPropagation(),onKeyDown:ae,children:[e.jsxs("header",{className:"na-head",children:[e.jsxs("div",{className:"na-headIdent",children:[e.jsx("h2",{id:"na-title",className:"na-title",children:"New agent"}),e.jsxs("span",{className:"na-scope",children:["/",o]})]}),e.jsx("button",{type:"button",className:"na-close",onClick:n,"aria-label":"Close (Esc)",children:e.jsx(ie,{size:14,strokeWidth:2,"aria-hidden":!0})})]}),e.jsx("div",{className:"na-context",children:b.map(a=>e.jsxs("span",{className:"na-contextChip",title:a.title,children:[e.jsx("span",{className:"na-contextLabel",children:a.label}),e.jsx("span",{className:"na-contextValue",children:a.value})]},a.label))}),e.jsxs("div",{className:"na-body",children:[e.jsxs("section",{className:"na-section na-modeSection",children:[e.jsx("span",{className:"na-sectionLabel",children:"What are you creating?"}),e.jsxs("div",{className:"na-modeChoice",role:"radiogroup","aria-label":"Agent kind",children:[e.jsxs("button",{type:"button",role:"radio","aria-checked":d==="one_time",className:"na-modeCard","data-active":d==="one_time"||void 0,onClick:()=>E("one_time"),children:[e.jsx("span",{className:"na-modeTitle",children:"One-off run"}),e.jsx("span",{className:"na-modeSub",children:"Disposable session · not addressable later"})]}),e.jsxs("button",{type:"button",role:"radio","aria-checked":d==="sticky",className:"na-modeCard","data-active":d==="sticky"||void 0,onClick:()=>E("sticky"),children:[e.jsx("span",{className:"na-modeTitle",children:"Named agent"}),e.jsx("span",{className:"na-modeSub",children:"Reusable card · addressable by handle"})]})]})]}),e.jsxs("section",{className:"na-section",children:[e.jsx("span",{className:"na-sectionLabel",children:"Runtime"}),e.jsx("div",{className:"na-harnessRow",role:"radiogroup","aria-label":"Harness",children:V.map(a=>{const c=K?.get(a.runtimeId),f=h===a.value;return e.jsxs("button",{type:"button",role:"radio","aria-checked":f,className:"na-harness","data-active":f||void 0,onClick:()=>G(a.value),children:[e.jsx("span",{className:"na-harnessName",children:a.label}),c?e.jsxs("span",{className:"na-harnessState","data-tone":q[c.state],children:[e.jsx("span",{className:"na-dot","aria-hidden":!0}),me[c.state]]}):e.jsx("span",{className:"na-harnessState","data-tone":"off",children:"…"})]},a.value)})}),N&&N.state!=="ready"?e.jsxs("p",{className:"na-readinessNote","data-tone":q[N.state],children:[N.detail,N.loginCommand?e.jsxs("code",{className:"na-code",children:[" ",N.loginCommand]}):null]}):null,e.jsxs("label",{className:"na-field",children:[e.jsx("span",{children:"Model / profile"}),e.jsx("input",{value:M,placeholder:"default",onChange:a=>X(a.currentTarget.value)})]})]}),d==="sticky"?e.jsxs("section",{className:"na-section",children:[e.jsx("span",{className:"na-sectionLabel",children:"Handle (optional)"}),e.jsxs("label",{className:"na-field",children:[e.jsx("span",{children:"Address"}),e.jsxs("div",{className:"na-handleWrap","data-tone":i.tone,children:[e.jsx("span",{className:"na-handleAt",children:"@"}),e.jsx("input",{value:$,placeholder:z[0]??"auto","aria-invalid":i.tone==="warn",autoFocus:!0,onChange:a=>P(a.currentTarget.value)})]})]}),z.length>0?e.jsxs("div",{className:"na-suggestRow",children:[e.jsx("span",{className:"na-suggestLabel",children:"suggest"}),z.map(a=>e.jsxs("button",{type:"button",className:"na-suggest",onClick:()=>P(a),children:["@",a]},a))]}):null,i.message?e.jsx("p",{className:"na-validation","data-tone":i.tone,children:i.message}):i.rewritten&&i.normalized?e.jsxs("p",{className:"na-validation","data-tone":"ok",children:["Saved as ",e.jsxs("code",{className:"na-code",children:["@",i.normalized]})]}):null]}):null,e.jsxs("section",{className:"na-section",children:[e.jsx("span",{className:"na-sectionLabel",children:"First instruction"}),e.jsx("textarea",{className:"na-prompt",value:R,rows:3,placeholder:`Start in /${o}…`,onChange:a=>Q(a.currentTarget.value)})]}),e.jsxs("section",{className:"na-section na-routing",children:[e.jsx("span",{className:"na-sectionLabel",children:p.disposable?"Dispatch preview":"Routing preview"}),p.disposable?e.jsxs("div",{className:"na-routingBody","data-disposable":!0,children:[e.jsx("p",{className:"na-routingResolves",children:p.resolves}),e.jsx("button",{type:"button",className:"na-promote",onClick:()=>E("sticky"),children:"Name it to keep it →"})]}):e.jsxs("div",{className:"na-routingBody",children:[p.card?e.jsxs("div",{className:"na-routingLine",children:[e.jsx("span",{className:"na-routingKey",children:"address"}),e.jsx("code",{className:"na-routingValue na-routingCard",children:p.card})]}):null,e.jsxs("div",{className:"na-routingLine",children:[e.jsx("span",{className:"na-routingKey",children:"cli"}),e.jsx("code",{className:"na-routingValue",children:p.cli})]}),e.jsx("p",{className:"na-routingResolves",children:p.resolves}),e.jsx("p",{className:"na-routingNote",children:p.note})]})]})]}),_?e.jsx("div",{className:"na-error",children:_}):null,e.jsxs("footer",{className:"na-foot",children:[e.jsx("span",{className:"na-footRoot",title:s??void 0,children:s?A(s):"No project root — cannot create."}),e.jsxs("div",{className:"na-footActions",children:[e.jsx("button",{type:"button",className:"na-cancel",onClick:n,children:"Cancel"}),e.jsxs("button",{type:"button",className:"na-create",disabled:!Z,onClick:()=>{O()},children:[e.jsx(re,{size:12,strokeWidth:2,"aria-hidden":!0}),ee]})]})]})]})}),document.body)}export{ke as NewAgentModal};
1
+ import{r,j as e}from"./index-sUomXsrf.js";import{r as se}from"./index-m6dFtY5f.js";import{a as U}from"./api-h5zurxmi.js";import{u as ne}from"./keyboard-nav-BhZZ5HEq.js";import{o as te}from"./openContent-C6XO6kr5.js";import{s as A,w as le}from"./project-overview-helpers-BQTc_Ous.js";import{X as ie}from"./x-0XjXwGqq.js";import{R as re}from"./rocket-CriBwkHM.js";import"./createLucideIcon-DlxlBfLC.js";const V=[{value:"codex",label:"Codex",runtimeId:"codex"},{value:"claude",label:"Claude",runtimeId:"claude"},{value:"pi",label:"Grok",runtimeId:"pi"}];function w(t){return t.trim().toLowerCase().replace(/^@+/,"").replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"")||void 0}function oe(t){const n=new Set;for(const o of t){if(!o)continue;const s=w(o);s&&n.add(s)}return n}function ce(t,n,o){const s=t.trim();if(!s)return{status:"auto",normalized:void 0,rewritten:!1,message:o==="sticky"?"Scout will assign a reusable handle from the name pool.":"Scout will assign a disposable handle from the name pool.",tone:"ok"};const l=w(s);return l?n.has(l)?{status:"conflict",normalized:l,rewritten:l!==s.toLowerCase().replace(/^@+/,""),message:`@${l} already exists here. Pick another handle or leave it blank for auto.`,tone:"warn"}:{status:"ok",normalized:l,rewritten:l!==s.toLowerCase().replace(/^@+/,""),message:null,tone:"ok"}:{status:"invalid",normalized:void 0,rewritten:!1,message:"Use letters, numbers, dot, or dash.",tone:"warn"}}function S(t){return t==="pi"?"grok":t}function de(t,n,o,s=3){const l=w(t)??"agent",m=[l,`${l}-${S(n)}`,`${l}-dev`,`${l}-2`,`${l}-${S(n)}-2`],u=[];for(const v of m){const x=w(v);if(!(!x||o.has(x)||u.includes(x))&&(u.push(x),u.length>=s))break}return u}function ue(t){const{handle:n,persistence:o,harness:s,projectRootLabel:l}=t,m="A card starts a fresh session for each request. Use session:<id> only to continue an exact run.";return o==="one_time"?{disposable:!0,card:null,cli:`scout ask --project ${l} --harness ${s} "…"`,resolves:"Disposable session — Scout assigns a provisional handle that may be recycled. Not addressable later.",note:m}:n?{disposable:!1,card:`@${n}`,cli:`scout ask @${n} "…"`,resolves:`Reusable ${S(s)} session on this project — @${n} routes here from any surface.`,note:m}:{disposable:!1,card:"@auto",cli:'scout ask @<assigned-handle> "…"',resolves:`Scout assigns a reusable ${S(s)} handle from the name pool.`,note:m}}const me={ready:"ready",configured:"configured",installed:"login needed",missing:"not found"},q={ready:"ok",configured:"ok",installed:"warn",missing:"off"};function ke({open:t,onClose:n,projectTitle:o,projectRoot:s,primaryWt:l,worktreeCount:m,branches:u,existingAgents:v,agentCount:x,sessionCount:H,route:D,navigate:C}){const{ref:J,onKeyDown:W}=ne(t),[h,G]=r.useState("codex"),[M,X]=r.useState(""),[d,E]=r.useState("sticky"),[$,P]=r.useState(""),[R,Q]=r.useState(""),[L,I]=r.useState("idle"),[_,j]=r.useState(null),[K,Y]=r.useState(null);r.useEffect(()=>{t&&(j(null),I("idle"))},[t]),r.useEffect(()=>{if(!t)return;let a=!1;return(async()=>{const c=await U("/api/agent-config/snapshot").catch(()=>null);if(a||!c)return;const f=new Map;for(const g of c.runtimes)f.set(g.id,{state:g.state,detail:g.detail,loginCommand:g.loginCommand});Y(f)})(),()=>{a=!0}},[t]),r.useEffect(()=>{if(!t)return;const a=c=>{c.key==="Escape"&&(c.preventDefault(),n())};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[t,n]);const k=r.useMemo(()=>oe(v.flatMap(a=>[a.name,a.handle])),[v]),i=r.useMemo(()=>ce($,k,d),[$,k,d]),z=r.useMemo(()=>de(o,h,k,3),[o,h,k]),T=s?A(s):"<no-root>",p=r.useMemo(()=>ue({handle:i.normalized,persistence:d,harness:h,projectRootLabel:T}),[i.normalized,d,h,T]),N=K?.get(V.find(a=>a.value===h)?.runtimeId??h);if(!t)return null;const Z=!!s&&L!=="starting"&&i.status!=="invalid"&&i.status!=="conflict",ee=L==="starting"?"Starting…":d==="one_time"?"Dispatch one-off":i.status==="conflict"?"Handle exists":i.normalized?`Create @${i.normalized}`:"Create with auto handle",O=async()=>{if(!(!s||L==="starting")){I("starting"),j(null);try{const a=M.trim(),c=R.trim(),f=i.normalized,g=await U("/api/sessions",{method:"POST",body:JSON.stringify({target:{projectPath:s},execution:{session:"new",harness:h,...a?{model:a}:{}},agent:{persistence:d,...f?{handle:f}:{}},...c?{seed:{instructions:c}}:{}})}),B=g.agentId?.trim(),F=g.sessionId?.trim(),y=g.conversationId?.trim();if(F){n(),te(C,{view:"sessions",sessionId:F},{returnTo:D});return}if(B){n(),C({...D,view:"agents-v2",agentId:B,selectedAgentId:void 0,sessionId:void 0,...y?{conversationId:y,tab:"message"}:{tab:"profile"}});return}if(y){n(),C({view:"conversation",conversationId:y});return}j("Agent start was accepted, but no target came back.")}catch(a){j(a instanceof Error?a.message:"Could not start an agent.")}finally{I("idle")}}},ae=a=>{if((a.metaKey||a.ctrlKey)&&a.key==="Enter"){a.preventDefault(),O();return}W(a)},b=[];return b.push({label:"root",value:s?A(s):"no project root",title:s??void 0}),l?b.push({label:"branch",value:le(l),title:l.path}):u.length>0&&b.push({label:"branch",value:u.length===1?u[0]:`${u.length} branches`}),m>1&&b.push({label:"worktrees",value:String(m)}),b.push({label:"existing",value:`${x} agent${x===1?"":"s"} · ${H} session${H===1?"":"s"}`}),se.createPortal(e.jsx("div",{className:"na-backdrop",role:"presentation",onClick:n,children:e.jsxs("div",{ref:J,className:"na-panel",role:"dialog","aria-modal":"true","aria-labelledby":"na-title",tabIndex:-1,onClick:a=>a.stopPropagation(),onKeyDown:ae,children:[e.jsxs("header",{className:"na-head",children:[e.jsxs("div",{className:"na-headIdent",children:[e.jsx("h2",{id:"na-title",className:"na-title",children:"New agent"}),e.jsxs("span",{className:"na-scope",children:["/",o]})]}),e.jsx("button",{type:"button",className:"na-close",onClick:n,"aria-label":"Close (Esc)",children:e.jsx(ie,{size:14,strokeWidth:2,"aria-hidden":!0})})]}),e.jsx("div",{className:"na-context",children:b.map(a=>e.jsxs("span",{className:"na-contextChip",title:a.title,children:[e.jsx("span",{className:"na-contextLabel",children:a.label}),e.jsx("span",{className:"na-contextValue",children:a.value})]},a.label))}),e.jsxs("div",{className:"na-body",children:[e.jsxs("section",{className:"na-section na-modeSection",children:[e.jsx("span",{className:"na-sectionLabel",children:"What are you creating?"}),e.jsxs("div",{className:"na-modeChoice",role:"radiogroup","aria-label":"Agent kind",children:[e.jsxs("button",{type:"button",role:"radio","aria-checked":d==="one_time",className:"na-modeCard","data-active":d==="one_time"||void 0,onClick:()=>E("one_time"),children:[e.jsx("span",{className:"na-modeTitle",children:"One-off run"}),e.jsx("span",{className:"na-modeSub",children:"Disposable session · not addressable later"})]}),e.jsxs("button",{type:"button",role:"radio","aria-checked":d==="sticky",className:"na-modeCard","data-active":d==="sticky"||void 0,onClick:()=>E("sticky"),children:[e.jsx("span",{className:"na-modeTitle",children:"Named agent"}),e.jsx("span",{className:"na-modeSub",children:"Reusable card · addressable by handle"})]})]})]}),e.jsxs("section",{className:"na-section",children:[e.jsx("span",{className:"na-sectionLabel",children:"Runtime"}),e.jsx("div",{className:"na-harnessRow",role:"radiogroup","aria-label":"Harness",children:V.map(a=>{const c=K?.get(a.runtimeId),f=h===a.value;return e.jsxs("button",{type:"button",role:"radio","aria-checked":f,className:"na-harness","data-active":f||void 0,onClick:()=>G(a.value),children:[e.jsx("span",{className:"na-harnessName",children:a.label}),c?e.jsxs("span",{className:"na-harnessState","data-tone":q[c.state],children:[e.jsx("span",{className:"na-dot","aria-hidden":!0}),me[c.state]]}):e.jsx("span",{className:"na-harnessState","data-tone":"off",children:"…"})]},a.value)})}),N&&N.state!=="ready"?e.jsxs("p",{className:"na-readinessNote","data-tone":q[N.state],children:[N.detail,N.loginCommand?e.jsxs("code",{className:"na-code",children:[" ",N.loginCommand]}):null]}):null,e.jsxs("label",{className:"na-field",children:[e.jsx("span",{children:"Model / profile"}),e.jsx("input",{value:M,placeholder:"default",onChange:a=>X(a.currentTarget.value)})]})]}),d==="sticky"?e.jsxs("section",{className:"na-section",children:[e.jsx("span",{className:"na-sectionLabel",children:"Handle (optional)"}),e.jsxs("label",{className:"na-field",children:[e.jsx("span",{children:"Address"}),e.jsxs("div",{className:"na-handleWrap","data-tone":i.tone,children:[e.jsx("span",{className:"na-handleAt",children:"@"}),e.jsx("input",{value:$,placeholder:z[0]??"auto","aria-invalid":i.tone==="warn",autoFocus:!0,onChange:a=>P(a.currentTarget.value)})]})]}),z.length>0?e.jsxs("div",{className:"na-suggestRow",children:[e.jsx("span",{className:"na-suggestLabel",children:"suggest"}),z.map(a=>e.jsxs("button",{type:"button",className:"na-suggest",onClick:()=>P(a),children:["@",a]},a))]}):null,i.message?e.jsx("p",{className:"na-validation","data-tone":i.tone,children:i.message}):i.rewritten&&i.normalized?e.jsxs("p",{className:"na-validation","data-tone":"ok",children:["Saved as ",e.jsxs("code",{className:"na-code",children:["@",i.normalized]})]}):null]}):null,e.jsxs("section",{className:"na-section",children:[e.jsx("span",{className:"na-sectionLabel",children:"First instruction"}),e.jsx("textarea",{className:"na-prompt",value:R,rows:3,placeholder:`Start in /${o}…`,onChange:a=>Q(a.currentTarget.value)})]}),e.jsxs("section",{className:"na-section na-routing",children:[e.jsx("span",{className:"na-sectionLabel",children:p.disposable?"Dispatch preview":"Routing preview"}),p.disposable?e.jsxs("div",{className:"na-routingBody","data-disposable":!0,children:[e.jsx("p",{className:"na-routingResolves",children:p.resolves}),e.jsx("button",{type:"button",className:"na-promote",onClick:()=>E("sticky"),children:"Name it to keep it →"})]}):e.jsxs("div",{className:"na-routingBody",children:[p.card?e.jsxs("div",{className:"na-routingLine",children:[e.jsx("span",{className:"na-routingKey",children:"address"}),e.jsx("code",{className:"na-routingValue na-routingCard",children:p.card})]}):null,e.jsxs("div",{className:"na-routingLine",children:[e.jsx("span",{className:"na-routingKey",children:"cli"}),e.jsx("code",{className:"na-routingValue",children:p.cli})]}),e.jsx("p",{className:"na-routingResolves",children:p.resolves}),e.jsx("p",{className:"na-routingNote",children:p.note})]})]})]}),_?e.jsx("div",{className:"na-error",children:_}):null,e.jsxs("footer",{className:"na-foot",children:[e.jsx("span",{className:"na-footRoot",title:s??void 0,children:s?A(s):"No project root — cannot create."}),e.jsxs("div",{className:"na-footActions",children:[e.jsx("button",{type:"button",className:"na-cancel",onClick:n,children:"Cancel"}),e.jsxs("button",{type:"button",className:"na-create",disabled:!Z,onClick:()=>{O()},children:[e.jsx(re,{size:12,strokeWidth:2,"aria-hidden":!0}),ee]})]})]})]})}),document.body)}export{ke as NewAgentModal};
@@ -0,0 +1,19 @@
1
+ import{r as l,j as o}from"./index-sUomXsrf.js";import{M as $s}from"./runtime-picker-DOZpZOlt.js";import{i as Gt,b as Ps,d as Ye,M as qt,u as _s}from"./MessageComposerSuggestions-zAUUcLOv.js";import{r as Os}from"./index-m6dFtY5f.js";import{H as Kt}from"./HarnessMark-Dm_qm1Ku.js";import{c as Fs,S as Wt,G as Hs,H as Us}from"./conversation-model-C4yb6_FA.js";import{a as te}from"./api-h5zurxmi.js";import{d as Bs}from"./colors-BtO5_zlx.js";import{NewChatOrigin as Gs}from"./NewChatOrigin--pHWUb4V.js";import{u as qs}from"./keyboard-nav-BhZZ5HEq.js";import{e as Ks}from"./agent-chat-Bfjd9y6c.js";import{n as Ws}from"./model-Co0zkMIc.js";import{X as zs}from"./x-0XjXwGqq.js";import{C as Xs}from"./chevron-down-BFai6ZfE.js";import{S as Qs}from"./search-DCT_EvPr.js";import{L as mt}from"./loader-circle-lWOOKezu.js";import{F as Vs}from"./file-text-i3xTDUjJ.js";const Js={schemaVersion:"openscout.runtime-catalog.v1",revision:"2026-08-12.1",harnesses:[{id:"claude",label:"Claude Code",enabled:!0,default:!0,reasoningEfforts:["low","medium","high","xhigh","max"],defaultReasoningEffort:"medium",models:[{id:"claude-opus-5",label:"Opus 5",enabled:!0,default:!0,family:"Opus",version:"5"},{id:"claude-sonnet-4-6",label:"Sonnet 4.6",enabled:!0,family:"Sonnet",version:"4.6"},{id:"claude-haiku-4-5",label:"Haiku 4.5",enabled:!0,family:"Haiku",version:"4.5"},{id:"claude-opus-4-8",label:"Opus 4.8",enabled:!0,family:"Opus",version:"4.8"},{id:"claude-opus-4-7",label:"Opus 4.7",enabled:!0,family:"Opus",version:"4.7"},{id:"claude-sonnet-4-5",label:"Sonnet 4.5",enabled:!0,family:"Sonnet",version:"4.5"}]},{id:"codex",label:"Codex",enabled:!0,reasoningEfforts:["low","medium","high","xhigh"],defaultReasoningEffort:"medium",models:[{id:"gpt-5.6-sol",label:"5.6 Sol",enabled:!0,default:!0,family:"GPT",version:"5.6 Sol",reasoningEfforts:["low","medium","high","xhigh","ultra"]},{id:"gpt-5.6-terra",label:"5.6 Terra",enabled:!0,family:"GPT",version:"5.6 Terra",reasoningEfforts:["low","medium","high","xhigh","ultra"]},{id:"gpt-5.6-luna",label:"5.6 Luna",enabled:!0,family:"GPT",version:"5.6 Luna"},{id:"gpt-5.5",label:"5.5",enabled:!0,family:"GPT",version:"5.5"},{id:"gpt-5.5-mini",label:"5.5 mini",enabled:!0,family:"GPT",version:"5.5 mini"}]},{id:"grok",label:"Grok CLI",enabled:!0,reasoningEfforts:["low","medium","high","xhigh"],defaultReasoningEffort:"medium",models:[{id:"grok-4.6",label:"Grok 4.6",enabled:!0,default:!0,family:"Grok",version:"4.6",contextWindowTokens:5e5},{id:"grok-4.5",label:"Grok 4.5",enabled:!0,family:"Grok",version:"4.5"},{id:"grok-4.3",label:"Grok 4.3",enabled:!0,family:"Grok",version:"4.3"}]},{id:"grok-acp",label:"Grok ACP",enabled:!0,reasoningEfforts:null,models:[{id:"grok-4.6",label:"Grok 4.6",enabled:!0,default:!0,family:"Grok",version:"4.6",contextWindowTokens:5e5},{id:"grok-4.5",label:"Grok 4.5",enabled:!0,family:"Grok",version:"4.5"},{id:"grok-4.3",label:"Grok 4.3",enabled:!0,family:"Grok",version:"4.3"}]},{id:"kimi",label:"Kimi Code",enabled:!0,reasoningEfforts:null,models:[]},{id:"flue",label:"Flue",enabled:!0,reasoningEfforts:null,models:[]},{id:"cursor",label:"Cursor CLI",enabled:!0,reasoningEfforts:null,models:[]},{id:"opencode",label:"OpenCode",enabled:!0,reasoningEfforts:null,models:[{id:"opencode-go/glm-5.2",label:"GLM-5.2",enabled:!0,default:!0,family:"GLM",version:"5.2"},{id:"opencode-go/glm-5.1",label:"GLM-5.1",enabled:!0,family:"GLM",version:"5.1"},{id:"opencode-go/kimi-k3",label:"Kimi K3",enabled:!0,family:"Kimi",version:"K3"},{id:"opencode-go/qwen3.8-max",label:"Qwen3.8 Max",enabled:!0,family:"Qwen",version:"3.8 Max"},{id:"opencode-go/minimax-m3",label:"MiniMax M3",enabled:!0,family:"MiniMax",version:"M3"},{id:"opencode-go/deepseek-v4-pro",label:"DeepSeek V4 Pro",enabled:!0,family:"DeepSeek",version:"V4 Pro"},{id:"opencode-go/grok-4.5",label:"Grok 4.5",enabled:!0,family:"Grok",version:"4.5"},{id:"opencode/nemotron-3-ultra-free",label:"Nemotron 3 Ultra (free)",enabled:!0,family:"Nemotron",version:"3 Ultra Free"},{id:"opencode/laguna-s-2.1-free",label:"Laguna S 2.1 (free)",enabled:!0,family:"Laguna",version:"S 2.1 Free"}]},{id:"pi",label:"Pi",enabled:!0,reasoningEfforts:null,models:[]}]},yt=["none","minimal","low","medium","high","xhigh","max","ultra"],ts={none:"None",minimal:"Minimal",low:"Light",medium:"Medium",high:"High",xhigh:"Extra High",max:"Max",ultra:"Ultra"},W=Js;function jt(e,t=W){return t.harnesses.find(r=>r.id===e)}function Ys(e=W){return e.harnesses.find(t=>t.enabled&&t.default)?.id??e.harnesses.find(t=>t.enabled)?.id??null}function ss(e,t=W){const r=jt(e,t);return r?.models.find(s=>s.enabled&&s.default)?.id??r?.models.find(s=>s.enabled)?.id??null}function Zs(e,t,r=W){const s=jt(e,r);if(!s||!s.enabled)return null;const a=t?s.models.find(i=>i.enabled&&i.id===t):void 0;return a?.reasoningEfforts===null?null:a?.reasoningEfforts??s.reasoningEfforts}function ns(e,t,r=W){const s=jt(e,r),a=t?s?.models.find(v=>v.enabled&&v.id===t):void 0,i=Zs(e,t,r),f=a?.defaultReasoningEffort??s?.defaultReasoningEffort??null;return f&&i?.includes(f)?f:i?.[0]??null}function en(e=W){return Object.fromEntries(e.harnesses.filter(t=>t.enabled).map(t=>{const r=ss(t.id,e);return[t.id,{model:r,reasoningEffort:ns(t.id,r,e)}]}))}const tn=en();Object.fromEntries(W.harnesses.filter(e=>e.enabled).map(e=>{const t=yt.filter(r=>e.reasoningEfforts?.includes(r)||e.models.some(s=>s.enabled&&s.reasoningEfforts?.includes(r)));return[e.id,t]}));function sn(e=W){const t=new Map;for(const r of e.harnesses)if(r.enabled)for(const s of r.models){if(!s.enabled)continue;const a=t.get(s.id);if(a){a.harnesses.includes(r.id)||a.harnesses.push(r.id);continue}t.set(s.id,{id:s.id,label:s.label,...s.description?{description:s.description}:{},harnesses:[r.id],source:"default",...s.family?{family:s.family}:{},...s.version?{version:s.version}:{}})}return Array.from(t.values())}const nn=sn(),rn={none:"No extra thinking",minimal:"Smallest reasoning budget",low:"Fast responses with lighter reasoning",medium:"Balanced speed and reasoning depth",high:"Greater reasoning depth for complex work",xhigh:"Extra high reasoning depth",max:"Maximum reasoning depth",ultra:"Maximum reasoning with delegation"};function on(e=W){return yt.flatMap(t=>{const r=[],s=[];for(const a of e.harnesses){if(!a.enabled)continue;const i=a.models.filter(g=>g.enabled),f=i.filter(g=>(g.reasoningEfforts??a.reasoningEfforts)?.includes(t)),v=i.length===0&&a.reasoningEfforts?.includes(t);f.length===0&&!v||(r.push(a.id),i.length>0&&f.length<i.length&&s.push(...f.map(g=>g.id)))}return r.length===0?[]:[{id:t,label:ts[t],description:rn[t],harnesses:r,...s.length>0?{models:s}:{}}]})}const an=on();function ln(e,t){const r=t?.trim();return r?e.find(s=>s.id===r)??null:null}function cn(e,t){if(e.view==="conversation"&&e.conversationId)return{agentId:null,conversationId:e.conversationId,label:"Current chat",canUseExistingChat:!0};if(e.view==="messages"&&e.conversationId)return{agentId:null,conversationId:e.conversationId,label:"Current chat",canUseExistingChat:!0};if(e.view==="agents-v2"&&e.agentId){const r=ln(t,e.agentId),s=e.conversationId??r?.conversationId??null;return{agentId:e.agentId,conversationId:s,label:r?.name??e.agentId,canUseExistingChat:!!s}}return{agentId:null,conversationId:null,label:"Pick a project",canUseExistingChat:!1}}const H="",dn={none:"no reasoning",minimal:"lightest",low:"triage",medium:"default",high:"deep",xhigh:"exhaustive",max:"fullest",ultra:"beyond max"},un=yt.map(e=>({value:e,label:ts[e],note:dn[e]}));function Re(e,t){return e.harnesses.find(r=>r.value===t)}function Ct(e,t){return Re(e,t)?.models??[]}function Ee(e,t,r){const s=Re(e,t),a=s?s.efforts===null?null:s.efforts??e.efforts:e.efforts;if(!a||!r)return a;const i=new Set((s?.models??[]).map(f=>f.value));return i.has(r)?a.filter(f=>{if(!f.models||f.models.length===0)return!0;const v=f.models.filter(g=>i.has(g));return v.length===0||v.includes(r)}):a}function rs(e,t){const s=Ct(e,t.harness).find(a=>a.value===t.model);return s||(t.model.trim()?{value:t.model,label:t.model,note:"custom"}:{value:H,label:"Default",note:"harness picks"})}function fn(e,t){const r=Re(e,t.harness),s=r?.label??t.harness??"Default",a=rs(e,t),i=Ee(e,t.harness,t.model),f=i?.find(F=>F.value===t.effort),v=f?.label??t.effort,g=i?`Runtime: ${s}, model ${a.label}, effort ${v}`:`Runtime: ${s}, model ${a.label}`;return{harness:r,harnessLabel:s,model:a,modelLabel:a.label,effort:f,effortLabel:v,supportsEffort:i!==null,summary:g}}function mn(e,t,r){const s={...t,...r};if(!(r.harness!==void 0&&r.harness!==t.harness)){if(r.model===void 0||r.model===t.model)return s;const L=Ee(e,s.harness,s.model);if(!L||s.effort===H||L.some(X=>X.value===s.effort))return s;const de=(Ee(e,t.harness,t.model)??e.efforts).findIndex(X=>X.value===t.effort),z=Math.min(Math.max(de,0),L.length-1);return s.effort=L[z]?.value??L[0]?.value??H,s}const i=Re(e,s.harness);s.model=r.model??i?.defaultModel??H,r.effort===void 0&&i?.defaultEffort&&(s.effort=i.defaultEffort);const f=Ee(e,s.harness,s.model);if(!f)return s.effort=H,s;if(f.some(L=>L.value===s.effort))return s;const g=(Ee(e,t.harness,t.model)??e.efforts).findIndex(L=>L.value===t.effort),F=Math.min(Math.max(g,0),f.length-1);return s.effort=f[F]?.value??f[0]?.value??H,s}function hn(e,t){const r=t?.harness??e.harnesses.find(i=>!i.disabled)?.value??"",s=Ee(e,r),a=s?.find(i=>i.note==="default")?.value??s?.[Math.floor((s.length-1)/2)]?.value??H;return{harness:r,model:t?.model??Re(e,r)?.defaultModel??Ct(e,r)[1]?.value??H,effort:s?t?.effort??Re(e,r)?.defaultEffort??a:H}}function pn(e,t){const r=t.trim().toLowerCase();return r?e.filter(s=>`${s.label} ${s.value} ${s.note??""}`.toLowerCase().includes(r)):e}function Oe(...e){for(const t of e){const r=t?.trim();if(r)return r}}function os(e){const t=e.harnesses.map(s=>{const a=e.defaultsByHarness?.[s.id],i=s.ready!==!1,f=[{value:H,label:"Default",note:"harness picks"},...e.models.filter(g=>g.harnesses.includes(s.id)).map(g=>({value:g.id,label:g.label,note:Oe(g.description)}))],v=e.efforts.filter(g=>g.harnesses.includes(s.id));return{value:s.id,label:s.label,note:i?Oe(s.description):Oe(s.detail,s.state,"unavailable"),disabled:!i,defaultModel:a?.model??H,defaultEffort:a?.reasoningEffort??H,models:f,efforts:v.length===0?null:v.map(g=>({value:g.id,label:g.label,note:Oe(g.description),...g.models?.length?{models:[...g.models]}:{}}))}}),r=e.efforts.map(s=>({value:s.id,label:s.label,note:Oe(s.description)}));return{harnesses:t,efforts:r.length>0?r:un}}const gn=6,ht=34,pt=460,bn=14,xn=300,Fe=8,gt=["harness","model","effort"],wn={harness:"vertical",model:"vertical",effort:"horizontal"};function vn(){return o.jsx("svg",{className:"s-rt-chip-chevron",width:"8",height:"5",viewBox:"0 0 8 5",fill:"none","aria-hidden":"true",children:o.jsx("path",{d:"M1 1.2 4 4 7 1.2",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})})}function yn({ctx:e}){const{efforts:t,value:r,set:s}=e;if(!t)return null;const a=Math.max(0,t.findIndex(i=>i.value===r.effort));return o.jsx("div",{className:"s-rt-ladder",role:"radiogroup","aria-label":"Reasoning effort",children:t.map((i,f)=>{const v=f===a;return o.jsxs("button",{type:"button",role:"radio","aria-checked":v,title:i.note,onClick:()=>s({effort:i.value}),...e.cell("effort",f),className:"s-rt-step",children:[o.jsx("span",{className:"s-rt-step-bar","data-state":v?"current":f<a?"filled":"empty"}),o.jsx("span",{className:"s-rt-step-label",children:i.label})]},i.value)})})}function jn({harnessLabel:e}){return o.jsxs("p",{className:"s-rt-effort-absent",children:[e," has no effort control."]})}function Cn({option:e,selected:t,index:r,ctx:s}){const a=e.disabled??!1;return o.jsxs("button",{type:"button",role:"option","aria-selected":t,"aria-disabled":a||void 0,onClick:()=>{a||s.set({model:e.value})},"data-on":t||void 0,"data-disabled":a||void 0,...s.cell("model",r),style:{animationDelay:`${Math.min(r,6)*16}ms`},className:"s-rt-row s-rt-model-row",children:[o.jsx("span",{"aria-hidden":!0,className:"s-rt-dot"}),o.jsx("span",{className:"s-rt-row-label",children:e.label}),e.note?o.jsx("span",{className:"s-rt-note",children:e.note}):null]})}function En({ctx:e}){return o.jsxs("div",{className:"s-rt-search",children:[o.jsxs("svg",{width:"11",height:"11",viewBox:"0 0 12 12","aria-hidden":"true",className:"s-rt-search-icon",children:[o.jsx("circle",{cx:"5",cy:"5",r:"3.4",fill:"none",stroke:"currentColor",strokeWidth:"1.3"}),o.jsx("path",{d:"M7.6 7.6 10.5 10.5",stroke:"currentColor",strokeWidth:"1.3",strokeLinecap:"round"})]}),o.jsx("input",{ref:e.searchRef,type:"text",value:e.query,onChange:t=>e.setQuery(t.target.value),onKeyDown:e.onSearchKeyDown,placeholder:"Filter models","aria-label":"Filter models",spellCheck:!1,autoComplete:"off",className:"s-rt-search-input"}),e.query?o.jsx("button",{type:"button",onClick:()=>{e.setQuery(""),e.searchRef.current?.focus()},"aria-label":"Clear filter",className:"s-rt-search-clear",children:"clear"}):null]})}function Sn({ctx:e}){return e.status==="loading"?o.jsxs("div",{className:"s-rt-status","aria-busy":!0,role:"status",children:[o.jsx("span",{className:"s-rt-sr",children:"Loading models"}),[0,1,2].map(t=>o.jsx("span",{"aria-hidden":!0,className:"s-rt-skel",style:{animationDelay:`${t*90}ms`}},t))]}):e.status==="error"?o.jsxs("div",{role:"alert",className:"s-rt-status s-rt-status--error",children:[o.jsx("span",{className:"s-rt-status-message",children:e.statusMessage??"Model catalog unavailable."}),e.onRetry?o.jsx("button",{type:"button",onClick:e.onRetry,className:"s-rt-retry",children:"Retry"}):null]}):o.jsx("p",{className:"s-rt-empty",children:e.query.trim()?`No model matches “${e.query.trim()}”.`:"No models listed."})}function Mn({ctx:e}){return e.status!=="ready"||e.models.length===0?o.jsx(Sn,{ctx:e}):o.jsx("div",{role:"listbox","aria-label":"Model",className:"s-rt-models",children:e.models.map((t,r)=>o.jsx(Cn,{option:t,index:r,selected:t.value===e.value.model,ctx:e},t.value||"default"))},e.value.harness)}function zt({value:e,defaultValue:t,onChange:r,catalog:s,status:a="ready",statusMessage:i,onRetry:f,disabled:v=!1,showEffort:g,searchable:F="auto",className:L}){const[y,de]=l.useState(!1),[z,X]=l.useState(""),[Ue,Be]=l.useState(()=>hn(s,t)),j=e??Ue,C=l.useRef(null),ue=l.useRef(null),fe=l.useRef(null),me=l.useRef(null),S=l.useId(),ve=l.useCallback(d=>{const m=mn(s,j,d);e===void 0&&Be(m),r?.(m),d.harness!==void 0&&d.harness!==j.harness&&X("")},[s,e,r,j]),T=s.harnesses,Ae=l.useMemo(()=>Ct(s,j.harness),[s,j.harness]),$=l.useMemo(()=>{const d=rs(s,j);return d.note!=="custom"?Ae:[...Ae,d]},[Ae,s,j]),se=l.useMemo(()=>pn($,z),[$,z]),Le=Ee(s,j.harness,j.model),Q=g===!1?null:g===!0?Le??s.efforts:Le,D=F==="auto"?$.length>gn:F,V=fn(s,j),N=l.useRef(new Map),[he,R]=l.useState({group:"model",index:0}),A=l.useMemo(()=>({harness:T.length,model:a==="ready"?se.length:0,effort:Q?.length??0}),[Q?.length,T.length,se.length,a]),ne=l.useCallback(d=>d==="harness"?Math.max(0,T.findIndex(m=>m.value===j.harness)):d==="model"?Math.max(0,se.findIndex(m=>m.value===j.model)):Math.max(0,Q?.findIndex(m=>m.value===j.effort)??0),[Q,T,se,j]),k=l.useCallback((d,m)=>{R({group:d,index:m}),N.current.get(`${d}:${m}`)?.focus()},[]),pe=l.useCallback((d,m)=>{const b=gt.indexOf(d);for(let x=b+m;x>=0&&x<gt.length;x+=m){const O=gt[x];if(A[O]>0)return k(O,Math.min(ne(O),A[O]-1)),!0}return!1},[A,k,ne]),ye=l.useCallback((d,m)=>({ref:b=>{const x=`${d}:${m}`;b?N.current.set(x,b):N.current.delete(x)},tabIndex:he.group===d&&he.index===m?0:-1,onFocus:()=>R({group:d,index:m}),onKeyDown:b=>{const x=wn[d]==="vertical",O=x?"ArrowDown":"ArrowRight",B=x?"ArrowUp":"ArrowLeft",Ge=x?"ArrowRight":"ArrowDown",tt=x?"ArrowLeft":"ArrowUp",ge=A[d];if(ge!==0)if(b.key===O)b.preventDefault(),k(d,(m+1)%ge);else if(b.key===B){if(b.preventDefault(),d==="model"&&m===0&&D){R({group:d,index:0}),me.current?.focus();return}k(d,(m-1+ge)%ge)}else b.key===Ge?(b.preventDefault(),pe(d,1)):b.key===tt?(b.preventDefault(),pe(d,-1)):b.key==="Home"?(b.preventDefault(),k(d,0)):b.key==="End"&&(b.preventDefault(),k(d,ge-1))}}),[A,he,k,pe,D]),Te=l.useCallback(d=>{if(d.key==="ArrowDown"&&A.model>0)d.preventDefault(),k("model",0);else if(d.key==="Enter"&&A.model===1){d.preventDefault();const m=se[0];m.disabled||ve({model:m.value})}else d.key==="Escape"&&z&&(d.preventDefault(),d.stopPropagation(),X(""))},[A.model,k,se,z,ve]),[U,M]=l.useState(null),J=l.useCallback(()=>{const d=ue.current;if(!d)return;const m=d.getBoundingClientRect(),b=m.top,x=window.innerHeight-m.bottom,O=b>=xn||b>=x?"up":"down",B=Math.min(Math.max(Fe,m.right-pt),Math.max(Fe,window.innerWidth-pt-Fe));M({left:B,top:O==="up"?m.top-Fe:m.bottom+Fe,placement:O})},[]);l.useLayoutEffect(()=>{if(!y)return;J();const d=()=>J();return window.addEventListener("scroll",d,!0),window.addEventListener("resize",d),()=>{window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d)}},[y,J]);const re=l.useCallback(d=>{de(!1),d&&ue.current?.focus()},[]);l.useEffect(()=>{if(!y)return;const d=b=>{const x=b.target;C.current?.contains(x)||fe.current?.contains(x)||de(!1)},m=b=>{b.key==="Escape"&&(b.stopPropagation(),re(!0))};return document.addEventListener("pointerdown",d),document.addEventListener("keydown",m),()=>{document.removeEventListener("pointerdown",d),document.removeEventListener("keydown",m)}},[y,re]),l.useEffect(()=>{if(!y)return;const d=A.model>0?"model":"harness",m=Math.min(ne(d),Math.max(0,A[d]-1));R({group:d,index:m});const b=requestAnimationFrame(()=>{const x=N.current.get(`${d}:${m}`);x?x.focus():fe.current?.focus()});return()=>cancelAnimationFrame(b)},[y]),l.useEffect(()=>{y||X("")},[y]),l.useEffect(()=>{v&&de(!1)},[v]);const De=Math.max(0,T.findIndex(d=>d.value===j.harness)),I={value:j,set:ve,status:a,statusMessage:i,onRetry:f,harnesses:T,models:se,efforts:Q,harnessLabel:V.harnessLabel,searchable:D,query:z,setQuery:X,searchRef:me,cell:ye,onSearchKeyDown:Te};return o.jsxs("div",{ref:C,className:L?`s-rt-root ${L}`:"s-rt-root",style:{position:"relative",display:"inline-flex"},children:[o.jsxs("button",{ref:ue,type:"button",className:`s-rt-chip${v?" s-rt-chip--disabled":""}`,"aria-haspopup":"dialog","aria-expanded":y,"aria-controls":y?S:void 0,"aria-label":V.summary,disabled:v,onClick:()=>de(d=>!d),children:[o.jsx(Kt,{harness:j.harness||"unknown",size:12,className:"s-rt-chip-mark",title:null}),o.jsxs("span",{className:"s-rt-chip-type",children:[o.jsx("span",{className:"s-rt-chip-model",style:{maxWidth:`${bn}ch`},children:o.jsx("span",{className:"s-rt-chip-model-text",children:V.modelLabel},V.modelLabel)}),Q&&V.effortLabel?o.jsxs(o.Fragment,{children:[o.jsx("span",{"aria-hidden":!0,className:"s-rt-chip-divider"}),o.jsx("span",{className:"s-rt-chip-effort","data-effort":j.effort,children:V.effortLabel})]}):null]}),o.jsx(vn,{})]}),y&&U?Os.createPortal(o.jsx("div",{ref:fe,id:S,role:"dialog","aria-label":"Runtime",tabIndex:-1,"data-placement":U.placement,className:"s-rt-panel",style:{left:U.left,width:pt,...U.placement==="up"?{bottom:window.innerHeight-U.top}:{top:U.top}},children:o.jsxs("div",{className:"s-rt-rail",children:[o.jsxs("div",{className:"s-rt-rail-main",children:[o.jsxs("div",{className:"s-rt-harnesses",role:"radiogroup","aria-label":"Harness",children:[o.jsx("span",{"aria-hidden":!0,className:"s-rt-marker",style:{height:ht-10,transform:`translateY(${De*ht+5}px)`}}),T.map((d,m)=>{const b=d.value===j.harness,x=d.disabled??!1;return o.jsxs("button",{type:"button",role:"radio","aria-checked":b,"aria-disabled":x||void 0,onClick:()=>{x||I.set({harness:d.value})},style:{height:ht},"data-on":b||void 0,"data-disabled":x||void 0,title:x?d.note:void 0,...I.cell("harness",m),className:"s-rt-harness",children:[o.jsx(Kt,{harness:d.value||"unknown",size:14,className:"s-rt-opt-mark",title:null}),o.jsx("span",{className:"s-rt-harness-label",children:d.label})]},d.value||"default")})]}),o.jsxs("div",{className:"s-rt-models-col",children:[D?o.jsx(En,{ctx:I}):null,o.jsx(Mn,{ctx:I})]})]}),o.jsx("div",{className:"s-rt-effort-foot",children:Q?o.jsx(yn,{ctx:I}):o.jsx(jn,{harnessLabel:V.harnessLabel})})]})}),document.body):null]})}const wt=Ys()??"",Xt=ss(wt),Se={schemaVersion:"openscout.runtime-capabilities.v1",catalogVersion:W.schemaVersion,defaults:{harness:wt,model:Xt,reasoningEffort:ns(wt,Xt)},defaultsByHarness:tn,harnesses:W.harnesses.filter(e=>e.enabled).map(e=>({id:e.id,label:e.label})),models:nn.map(e=>({id:e.id,label:e.label,...e.description?{description:e.description}:{},harnesses:[...e.harnesses]})),efforts:an.map(e=>({id:e.id,label:e.label,...e.description?{description:e.description}:{},harnesses:[...e.harnesses],...e.models?{models:[...e.models]}:{}}))};function Lr(e){return os({defaultsByHarness:e.defaultsByHarness,harnesses:e.harnesses.map(t=>({id:t.id,label:t.label??t.id})),models:e.models.map(t=>({id:t.id,label:t.label??t.id,description:t.description,harnesses:t.harnesses})),efforts:e.efforts.map(t=>({id:t.id,label:t.label,description:t.description,harnesses:t.harnesses,...t.models?.length?{models:[...t.models]}:{}}))})}const Nn="|";function Qt(e){return e<55296?e:e<57344?e+8192:e-2048}function kn(e,t){if(e===t)return 0;const r=Math.min(e.length,t.length);for(let s=0;s<r;s+=1){const a=e.charCodeAt(s),i=t.charCodeAt(s);if(a!==i)return Qt(a)<Qt(i)?-1:1}return e.length===t.length?0:e.length<t.length?-1:1}function Vt(e){return Number.isFinite(e)?e:0}function In(e,t){const r=Vt(e.createdAt),s=Vt(t.createdAt);return r!==s?r<s?-1:1:kn(e.id,t.id)}function Rn(e){return`${Number.isFinite(e.createdAt)?Math.max(0,Math.trunc(e.createdAt)):0}${Nn}${e.id}`}const An=10,Ln=80,Jt=300,Yt=100,as=2e3,Tn=An,we=new Map,ce=new Map;let is=0;function Ne(e){return e.trim()}function Dn(e){const t=new Map;for(const r of e)t.set(r.id,r);return[...t.values()].sort(In)}function $n(){if(we.size<=Tn)return;let e=null,t=Number.POSITIVE_INFINITY;for(const[r,s]of we)s.touchedAt<t&&(e=r,t=s.touchedAt);e&&we.delete(e)}function Me(e){const t=Ne(e),r=we.get(t);return r?(r.touchedAt=++is,r.messages):null}function Et(e,t,r={}){const s=Ne(e);if(!s)return[];const a=we.get(s),i=Dn(t).slice(-as);return we.set(s,{messages:i,historyLoaded:r.historyLoaded??a?.historyLoaded??!1,historyExhausted:r.historyExhausted??a?.historyExhausted??!1,touchedAt:++is}),$n(),i}function ls(e,t){const r=Me(e)??[];return Et(e,[...r,...t])}function cs(e){return we.get(Ne(e))?.historyLoaded??!1}function Pn(e){const t=we.get(Ne(e));return!!(t&&t.historyLoaded&&!t.historyExhausted&&t.messages.length>0&&t.messages.length<as)}async function Tr(e,t={}){const r=Ne(e);if(!r)return[];const s=Me(r);if(s&&!t.refresh)return s;const a=ce.get(r);if(a)return a;const i=te(`/api/messages?conversationId=${encodeURIComponent(r)}&limit=${Ln}`).then(f=>ls(r,f));ce.set(r,i);try{return await i}finally{ce.delete(r)}}async function _n(e){const t=Ne(e);if(!t)return[];if(cs(t))return Me(t)??[];const r=`${t}:history`,s=ce.get(r);if(s)return s;const a=te(`/api/messages?conversationId=${encodeURIComponent(t)}&limit=${Jt}`).then(i=>Et(t,[...Me(t)??[],...i],{historyLoaded:!0,historyExhausted:i.length<Jt}));ce.set(r,a);try{return await a}finally{ce.delete(r)}}async function Dr(e){const t=Ne(e);if(!t)return[];if(!cs(t))return _n(t);if(!Pn(t))return Me(t)??[];const r=Me(t)??[],s=r[0];if(!s)return r;const a=Rn(s),i=`${t}:before:${a}`,f=ce.get(i);if(f)return f;const v=te(`/api/messages?conversationId=${encodeURIComponent(t)}&limit=${Yt}&beforeMessageId=${encodeURIComponent(a)}`).then(g=>Et(t,[...g,...Me(t)??[]],{historyLoaded:!0,historyExhausted:g.length<Yt}));ce.set(i,v);try{return await v}finally{ce.delete(i)}}const On=12e4,He=new Map;function Fn(){const e=globalThis.crypto?.randomUUID?.();return e?`web-${e}`:`web-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Hn(e){const t=e.conversationId.trim(),r=e.messageId.trim();if(!t||!r)return;ls(t,[{id:r,conversationId:t,actorId:"operator",actorName:"operator",body:e.body,createdAt:e.createdAt,class:"operator",...e.attachments?.length?{attachments:e.attachments}:{},metadata:{clientMessageId:e.clientMessageId}}]);const s=e.flightId?.trim(),a=e.agentId?.trim();!s||!a||He.set(t,{flight:{id:s,invocationId:e.invocationId?.trim()||`pending:${s}`,agentId:a,agentName:null,conversationId:t,collaborationRecordId:null,state:"queued",summary:"Request accepted; waiting for worker activity.",startedAt:e.createdAt,completedAt:null,sessions:[]},expiresAt:Date.now()+On})}function $r(e,t=Date.now()){const r=e.trim(),s=He.get(r);return s?s.expiresAt<=t?(He.delete(r),null):s.flight:null}function Pr(e,t){const r=e.trim(),s=He.get(r);s&&(!t||s.flight.id===t)&&He.delete(r)}const Un=1200,Bn=new Set(["Page","URL"]);function ds(e){return e.trim().slice(0,Un)}function Gn(e){const t=[{label:"Page",value:e.pageTitle??""},{label:"URL",value:e.pageUrl??""}];return e.selection?.trim()&&t.push({label:"Selection",value:ds(e.selection)}),(e.notes??[]).forEach((r,s)=>{t.push({label:`Note ${s+1}`,value:r})}),t.filter(r=>r.value.trim())}function qn(e,t){const r=[];for(const a of t){const i=a.value.trim();i&&(Bn.has(a.label)?r.push(`${a.label}: ${i}`):r.push(`${a.label}:
2
+ ${i.split(`
3
+ `).map(f=>`> ${f}`).join(`
4
+ `)}`))}const s=e.trim();return s&&r.push(s),r.join(`
5
+
6
+ `)}const Kn=6,Zt=1600;function Wn(e){return e===0?"":e===1?"[1 attachment remains on the source Scout message; not copied]":`[${e} attachments remain on the source Scout message; not copied]`}function us(e){const t=e.body.trim(),r=Wn(e.attachmentCount??0),s=[t,r].filter(Boolean).join(`
7
+ `)||"(message has no text)";return s.length<=Zt?s:`${s.slice(0,Zt-1).trimEnd()}…`}function zn(e){const t=us(e).split(/\r?\n/gu).map(r=>`> ${r}`).join(`
8
+ `);return`Forwarded from ${e.actorLabel} in Scout
9
+
10
+ ${t}`}function _r(e){const t=e.messages.findIndex(i=>i.id===e.selectedMessageId);if(t<0)throw new Error("The selected message is no longer available in this conversation.");const r=e.messages[t],s=e.messages.slice(Math.max(0,t-Kn),t).filter(i=>i.body.trim()||(i.attachmentCount??0)>0),a=s.map(i=>`${i.actorLabel}:
11
+ ${us(i)}`).join(`
12
+
13
+ `).slice(-8e3).trim();return{selectedMessage:zn(r),selectedMessageId:r.id,sourceConversationId:e.conversationId,...a?{recentContext:a}:{},recentMessageCount:s.length}}function Xn(e,t,r){const s=r.trim(),a=t==="instructions-only"?"":t==="recent-context"&&e.recentContext?[`Recent Scout conversation before the forwarded message (${e.recentMessageCount} ${e.recentMessageCount===1?"message":"messages"})`,e.recentContext,e.selectedMessage].join(`
14
+
15
+ `):e.selectedMessage;return s?a?`${s}
16
+
17
+ ---
18
+
19
+ ${a}`:s:a}function et(e){const t=e?.trim();return t?t.length>1?t.replace(/\/+$/u,""):t:null}function vt(e){return e.split("/").filter(Boolean).at(-1)??e}function Qn(e,t,r="claude"){const s=new Map;for(const a of e){const i=et(a.root);i&&s.set(i,{id:a.id||`project:${i}`,title:a.title?.trim()||vt(i),root:i,defaultHarness:a.defaultHarness?.trim()||r,source:"inventory",registrationKind:a.registrationKind?.trim()||null})}for(const a of t){const i=et(a.projectRoot??a.cwd);!i||s.has(i)||s.set(i,{id:`agent-project:${i}`,title:a.project?.trim()||vt(i),root:i,defaultHarness:a.harness?.trim()||r,source:"agent",registrationKind:null})}return[...s.values()].sort((a,i)=>a.title.localeCompare(i.title,void 0,{sensitivity:"base"})||a.root.localeCompare(i.root))}function Vn(e,t){const r=e.title.toLocaleLowerCase(),s=e.root.toLocaleLowerCase(),a=vt(e.root).toLocaleLowerCase();return r===t||a===t||s===t?0:r.startsWith(t)||a.startsWith(t)?1:s.startsWith(t)?2:t.split(/\s+/u).filter(Boolean).every(f=>r.includes(f)||s.includes(f))?3:null}function Jn(e,t){const r=t.trim().toLocaleLowerCase();return r?e.map(s=>({project:s,score:Vn(s,r)})).filter(s=>s.score!==null).sort((s,a)=>s.score-a.score||s.project.title.localeCompare(a.project.title,void 0,{sensitivity:"base"})||s.project.root.localeCompare(a.project.root)).map(s=>s.project):[...e]}function Yn(e,t){return e===t||e.startsWith(`${t}/`)}function Zn(e,t){const r=et(t.preferredRoot);if(r){const a=e.find(i=>i.root===r);if(a)return a}const s=et(t.currentDirectory);if(s){const a=e.filter(i=>Yn(s,i.root)).sort((i,f)=>f.root.length-i.root.length)[0];if(a)return a}return e[0]??null}async function er(e){await te("/api/send",{method:"POST",body:JSON.stringify({conversationId:e.conversationId,body:e.body?.trim()??"",attachments:e.attachments})})}async function tr(e,t){const r=t?.attachments?.filter(Boolean)??[],s=t?.instructions?.trim(),a=Ws(e),i=s||r.length>0?{...a,seed:{...s?{instructions:s}:{},...r.length>0?{attachments:r}:{},...t?.clientMessageId?{clientMessageId:t.clientMessageId}:{}}}:a;return await te("/api/sessions",{method:"POST",body:JSON.stringify(i)})}async function sr(e){const t=e.projectPath.trim(),r=e.harness?.trim(),s=e.model?.trim(),a=e.reasoningEffort?.trim(),i=e.instructions?.trim(),f=e.fromMessageId?.trim(),v=e.fromConversationId?.trim(),g=e.attachments?.filter(Boolean)??[];return te("/api/sessions",{method:"POST",body:JSON.stringify({target:{projectPath:t},execution:{session:"new",...r?{harness:r}:{},...s?{model:s}:{},...a?{reasoningEffort:a}:{}},agent:{persistence:"one_time"},...i||g.length>0||f&&v?{seed:{...i?{instructions:i}:{},...g.length>0?{attachments:g}:{},...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},...f&&v?{fromMessageId:f,fromConversationId:v}:{}}}:{}})})}async function Or(e){return te("/api/sessions",{method:"POST",body:JSON.stringify({target:{agentId:e.agentId.trim()},execution:{session:"existing",targetSessionId:e.sessionId.trim()},seed:{instructions:e.instructions.trim()}})})}function Fr(e){const t=e?.trim().toLowerCase();if(t)switch(t){case"claude":case"claude-code":case"claude_code":case"claude_stream_json":return"claude";case"codex":case"codex_app_server":return"codex";case"pi":case"pi_rpc":return"pi";case"cursor":case"cursor_exec":return"cursor";case"grok":return"grok";default:return}}async function Hr(e){const t=e.projectPath.trim(),r=e.sessionId.trim(),s=e.instructions.trim(),a=e.harness?.trim()||void 0,i=e.model?.trim()||void 0,f=e.reasoningEffort?.trim()||void 0;return te("/api/sessions",{method:"POST",body:JSON.stringify({target:{projectPath:t},execution:{session:"existing",targetSessionId:r,...a?{harness:a}:{},...i?{model:i}:{},...f?{reasoningEffort:f}:{}},seed:{instructions:s}})})}async function nr(e,t){const r=t.message?.trim();if(t.mode==="existing-chat"){const i=await Ks(e);return await er({conversationId:i,body:r||"Shared capture",attachments:t.attachments}),{conversationId:i,agentId:e.id}}const s=await tr(e,{instructions:r||"Shared capture for context.",attachments:t.attachments}),a=s.conversationId?.trim();if(!a)throw new Error("Session started, but no conversation was returned.");return{conversationId:a,agentId:s.agentId?.trim()||e.id}}const fs=Se.harnesses.map(e=>({id:e.id,label:e.label??e.id,description:null,state:null,ready:null,detail:null})),rr=Se.models.map(e=>({id:e.id,label:e.label??e.id,description:e.description??null,harnesses:[...e.harnesses],source:"catalog"})),or=Se.efforts.map(e=>({...e,harnesses:[...e.harnesses],...e.models?{models:[...e.models]}:{}})),Ze={defaults:{harness:Se.defaults?.harness??"claude",model:Se.defaults?.model??null,reasoningEffort:Se.defaults?.reasoningEffort??"medium"},defaultsByHarness:Se.defaultsByHarness,harnesses:fs,models:rr,efforts:or};let bt=null;const es=5;function ar(e,t){const r=e.defaults.harness===t?e.defaults.model?.trim()??"":"";return r&&e.models.some(s=>s.id===r&&s.harnesses.includes(t))?r:e.models.find(s=>s.harnesses.includes(t))?.id??""}function ir(e,t){const r=e.efforts.filter(s=>s.harnesses.includes(t));return r.find(s=>s.id===e.defaults.reasoningEffort)?.id??r.find(s=>s.id==="medium")?.id??r[0]?.id??""}function lr(e){return URL.createObjectURL(e)}function xt(e){return e.replace(/^\/Users\/[^/]+/u,"~")}function cr(e){return e.split("/").filter(Boolean).at(-1)??e}function dr(e){const t=e.trim();return t.startsWith("/")||t.startsWith("~/")}function ur({file:e,onRemove:t}){const r=l.useMemo(()=>lr(e),[e]);l.useEffect(()=>()=>URL.revokeObjectURL(r),[r]);const s=e.type.startsWith("video/"),a=e.type.startsWith("image/");return o.jsxs("div",{className:"s-newchat-attachment",children:[s?o.jsx("video",{src:r,muted:!0,playsInline:!0}):a?o.jsx("img",{src:r,alt:e.name}):o.jsxs("div",{className:"s-newchat-attachment-file",title:e.name,children:[o.jsx(Vs,{size:24,"aria-hidden":"true"}),o.jsx("span",{children:e.name})]}),o.jsx("span",{className:"s-newchat-attachment-badge",children:s?"video":a?"image":"file"}),o.jsx("button",{type:"button",className:"s-newchat-attachment-remove","aria-label":`Remove ${e.name}`,onClick:t,children:"×"})]})}function fr({agents:e,route:t,navigate:r,onClose:s,initialAgentId:a,initialConversationId:i,initialMessage:f,initialFiles:v,initialAttachmentFeedback:g,initialIntent:F="new-task",initialProjectPath:L,initialForwardContext:y,initialForwardContextMode:de="selected-message",defaultMode:z,draftRestored:X=!1,onDraftChange:Ue,onDraftConsumed:Be}){const j=l.useMemo(()=>cn(t,e),[t,e]),C=F==="forward-message"&&!!y,ue=l.useMemo(()=>[...e].sort((n,c)=>(c.updatedAt??0)-(n.updatedAt??0)),[e]),fe=F==="route-capture"?a??j.agentId??null:null,me=F==="route-capture"?i??j.conversationId:null,S=ue.find(n=>n.id===fe)??null,ve=S?.projectRoot??S?.cwd??null,[T,Ae]=l.useState(null),[$,se]=l.useState(bt),[Le,Q]=l.useState(null),[D,V]=l.useState(null),[N,he]=l.useState(()=>L||ve||""),[R,A]=l.useState(""),[ne,k]=l.useState(0),[pe,ye]=l.useState(!1),[Te,U]=l.useState(null),[M,J]=l.useState(()=>f??""),[re,De]=l.useState(de),[I,d]=l.useState({open:!1,query:"",triggerStart:-1,index:0}),[m,b]=l.useState({open:!1,query:"",triggerStart:-1,index:0}),[x,O]=l.useState(()=>[...v??[]]),[B,Ge]=l.useState(()=>z||(me?"existing-chat":"new-session")),[tt,ge]=l.useState("idle"),[ms,st]=l.useState("idle"),[St,je]=l.useState(null),[qe,Mt]=l.useState(()=>g??null),[$e]=l.useState(()=>{if(typeof window>"u")return{title:"",url:"",selection:""};const n=document.activeElement,c=n instanceof HTMLInputElement||n instanceof HTMLTextAreaElement;return{title:document.title,url:window.location.href,selection:c?"":ds(window.getSelection()?.toString()??"")}}),[nt,hs]=l.useState(!1),[oe,Nt]=l.useState(()=>S?.harness?.trim()||Ze.defaults.harness),[Ke,kt]=l.useState(()=>S?.model?.trim()||Ze.defaults.model||""),[We,It]=l.useState(Ze.defaults.reasoningEffort||""),[rt,Rt]=l.useState(()=>X?"Restored your unsent draft.":null),[ps,ot]=l.useState(0),{ref:gs,onKeyDown:bs}=qs(!0),P=l.useRef(null),at=l.useRef(null),Ce=l.useRef(0),ze=l.useRef(!!L),At=l.useRef(!1),Y=l.useMemo(()=>Qn(T?.projects??[],e,T?.context.defaultHarness??"claude"),[e,T]),E=Y.find(n=>n.root===N)??null??(N?{id:`direct:${N}`,title:cr(N),root:N,defaultHarness:T?.context.defaultHarness??S?.harness??"claude",source:"agent",registrationKind:null}:null),it=l.useMemo(()=>{const n=new Set,c=E?ue.filter(u=>u.projectRoot?.trim()===E.root||u.cwd?.trim()===E.root):[];return(c.length>0?c:ue).flatMap(u=>{if(u.retiredFromFleet)return[];const p=u.handle?.trim().replace(/^@+/,"")||Fs(u.id)||"",q=p.toLowerCase();return!p||n.has(q)?[]:(n.add(q),[{id:u.id,label:p,name:u.name||p,handle:p}])})},[E,ue]),Z=($?.harnesses??fs).find(n=>n.id===oe)??null,ke=!$&&!D,Lt=l.useMemo(()=>{const n=os($??Ze);return oe&&!n.harnesses.some(c=>c.value===oe)?{...n,harnesses:[...n.harnesses,{value:oe,label:oe,models:[{value:"",label:"Default",note:"harness picks"}]}]}:n},[$,oe]),Pe=l.useMemo(()=>Jn(Y,R),[R,Y]),ee=l.useMemo(()=>{const n=Pe.slice(0,es);if(!N||n.some(h=>h.root===N))return n;const c=Pe.find(h=>h.root===N);return c?[c,...n.slice(0,es-1)]:n},[Pe,N]),be=dr(R)&&!Y.some(n=>n.root===R.trim())?R.trim():null,Xe=ee.length+(be?1:0),xs=Math.max(0,(R.trim()?Pe.length:Y.length)-ee.length),ws=!!(S&&E&&[S.projectRoot,S.cwd].some(n=>n?.trim()===E.root)),G=x.length>0,w=tt==="starting",Tt=ps>0,Qe=ws&&!!(S?.conversationId||me),xe=!G||!Qe||B==="new-session",Dt=xe&&(ke||Z?.ready===!1),$t=C?"Forward to new task":G?"Route capture":"New task",Pt=l.useMemo(()=>C?[]:Gn({pageTitle:$e.title,pageUrl:$e.url,selection:nt?$e.selection:void 0}),[nt,C,$e]),ae=C&&y?Xn(y,re,M):qn(M,Pt),vs=ms==="uploading"?"Uploading capture":C?"Forwarding to new task":G?"Routing capture":"Sending message",ys=G?`Submitted to ${E?.title??S?.name??"Scout"}. Opening the chat when the broker returns it.`:ae?`Routing your first message through /${E?.title??S?.name??"project"}.`:`Starting a project-routed chat in /${E?.title??S?.name??"project"}.`,_t=G&&Qe,js=xe&&(ke||!!D||Z?.ready===!1),Cs=_t||!C&&js,ie=l.useMemo(()=>{if(!I.open)return[];const n=I.query.toLowerCase();return n?Wt.filter(c=>c.command.toLowerCase().startsWith(`/${n}`)||c.command.toLowerCase().includes(n)):Wt},[I.open,I.query]),le=l.useMemo(()=>{if(!m.open)return[];const n=m.query.toLowerCase();return n?it.filter(c=>c.handle.toLowerCase().includes(n)||c.name.toLowerCase().includes(n)||c.label.toLowerCase().includes(n)).slice(0,8):it.slice(0,8)},[it,m.open,m.query]),lt=l.useCallback(()=>{d(n=>n.open?{...n,open:!1}:n),b(n=>n.open?{...n,open:!1}:n)},[]),_e=l.useCallback((n,c)=>{const h=Hs(n,c);d(p=>h?{open:!0,query:h.query,triggerStart:h.start,index:p.open&&p.triggerStart===h.start?p.index:0}:p.open?{...p,open:!1}:p);const u=Us(n,c);b(p=>u?{open:!0,query:u.query,triggerStart:u.start,index:p.open&&p.triggerStart===u.start?p.index:0}:p.open?{...p,open:!1}:p)},[]),Es=l.useCallback((n,c)=>{J(n),_e(n,c?.caret??n.length)},[_e]),ct=l.useCallback(n=>{const c=I.triggerStart;if(c<0)return;const h=P.current?.selectionStart??M.length,u=M.slice(0,c),p=M.slice(h),q=`${u}${n.insert}${p}`;J(q),d(K=>({...K,open:!1})),requestAnimationFrame(()=>{const K=P.current;if(!K)return;const _=u.length+n.insert.length;K.focus(),K.setSelectionRange(_,_)})},[M,I.triggerStart]),dt=l.useCallback(n=>{const c=m.triggerStart;if(c<0)return;const h=P.current?.selectionStart??M.length,u=M.slice(0,c),p=M.slice(h),q=`@${n.handle}${p.length===0||!p.startsWith(" ")?" ":""}`,K=`${u}${q}${p}`;J(K),b(_=>({..._,open:!1})),requestAnimationFrame(()=>{const _=P.current;if(!_)return;const Ie=u.length+q.length;_.focus(),_.setSelectionRange(Ie,Ie)})},[m.triggerStart,M]),Ot=l.useCallback(n=>{if(w)return;const h=P.current?.selectionStart??M.length,u=M.slice(0,h),p=M.slice(h),K=`${u&&!/\s$/.test(u)?" ":""}${n}`,_=`${u}${K}${p}`,Ie=u.length+K.length;J(_),_e(_,Ie),requestAnimationFrame(()=>{const ft=P.current;ft&&(ft.focus(),ft.setSelectionRange(Ie,Ie))})},[w,M,_e]),Ss=l.useCallback(n=>{const c=I.open&&ie.length>0,h=m.open&&le.length>0;if(!c&&!h)return!1;if(n.key==="ArrowDown")return c?d(u=>({...u,index:(u.index+1)%ie.length})):b(u=>({...u,index:(u.index+1)%le.length})),!0;if(n.key==="ArrowUp")return c?d(u=>({...u,index:(u.index-1+ie.length)%ie.length})):b(u=>({...u,index:(u.index-1+le.length)%le.length})),!0;if(n.key==="Escape")return lt(),!0;if((n.key==="Enter"||n.key==="Tab")&&!n.shiftKey&&!n.metaKey&&!n.ctrlKey&&!n.altKey){if(c){const u=ie[I.index]??ie[0];u&&ct(u)}else{const u=le[m.index]??le[0];u&&dt(u)}return!0}return!1},[dt,ct,lt,le,ie,m.index,m.open,I.index,I.open]),ut=l.useCallback(()=>{w||s()},[w,s]),Ms=l.useCallback(()=>{Rt("Draft kept open. Use Esc or × when you are ready to close it."),requestAnimationFrame(()=>P.current?.focus())},[]);l.useEffect(()=>{const n=c=>{c.key==="Escape"&&(c.preventDefault(),ut())};return window.addEventListener("keydown",n),()=>window.removeEventListener("keydown",n)},[ut]),l.useEffect(()=>{if(!rt)return;const n=window.setTimeout(()=>Rt(null),5e3);return()=>window.clearTimeout(n)},[rt]),l.useEffect(()=>{P.current?.focus()},[]),l.useEffect(()=>{let n=!1;return te("/api/agent-config/snapshot").then(c=>{n||(Ae(c),Q(null))}).catch(c=>{n||Q(c instanceof Error?c.message:"Could not load projects.")}),()=>{n=!0}},[]);const Ve=l.useCallback(()=>{te("/api/runner/options").then(n=>{bt=n,se(n),V(null)}).catch(()=>{bt||V("Model catalog unavailable. Harness defaults are still available.")})},[]);l.useEffect(()=>{Ve()},[Ve]),l.useEffect(()=>{if(ze.current||Y.length===0)return;const n=Zn(Y,{preferredRoot:ve,currentDirectory:T?.context.currentDirectory});n&&he(n.root)},[T?.context.currentDirectory,ve,Y]),l.useEffect(()=>{if(At.current)return;const n=E?.defaultHarness?.trim()||S?.harness?.trim()||$?.defaults.harness||"claude";if(Nt(n),!$)return;const c=S?.model?.trim()??"",h=$.models.some(u=>u.id===c&&u.harnesses.includes(n));kt(h?c:ar($,n)),It(ir($,n))},[S?.harness,S?.model,$,E?.defaultHarness,E?.root]),l.useLayoutEffect(()=>{Ue?.({intent:F,...fe?{agentId:fe}:{},...me?{conversationId:me}:{},message:M,files:x,attachmentFeedback:qe,mode:B,projectPath:N,projectQuery:R,...C&&y?{forwardContext:y}:{},forwardContextMode:re})},[qe,x,re,y,F,C,M,B,Ue,N,R,fe,me,E?.title]);const Ft=l.useCallback((n,c="Added")=>{if(w)return;const h=n.filter(Gt),u=n.filter(p=>!Gt(p));if(h.length>0&&(O(p=>[...p,...h]),Mt(h.length===1?`${c} ${h[0]?.name??"1 attachment"}.`:`${c} ${h.length} attachments.`)),u.length>0){const p=u.length===1?u[0]?.name??"That file":`${u.length} files`;je(`${p} ${u.length===1?"is":"are"} not supported. Attach markdown, code, an image, or a video clip.`)}else h.length>0&&je(null)},[w]),Je=l.useCallback((n,c)=>{const h=Ps(n);if(h.length===0){je("Scout could not read that file. Try dropping or pasting it again.");return}Ft(h,c)},[Ft]),Ns=l.useCallback(n=>{w||!Ye(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),Ce.current+=1,ot(Ce.current))},[w]),ks=l.useCallback(n=>{w||!Ye(n.dataTransfer)||(n.preventDefault(),n.stopPropagation(),n.dataTransfer.dropEffect="copy")},[w]),Is=l.useCallback(n=>{Ce.current!==0&&(n.preventDefault(),n.stopPropagation(),Ce.current=Math.max(0,Ce.current-1),ot(Ce.current))},[]),Rs=l.useCallback(n=>{Ye(n.dataTransfer)&&(n.preventDefault(),n.stopPropagation(),Ce.current=0,ot(0),Je(n.dataTransfer,"Added"))},[Je]),As=l.useCallback(n=>{w||!Ye(n.clipboardData)||(n.preventDefault(),n.stopPropagation(),Je(n.clipboardData,"Pasted"))},[Je,w]),Ht=n=>{ze.current=!0,he(n.root),A(""),k(0),ye(!1),U(null),requestAnimationFrame(()=>P.current?.focus())},Ut=n=>{const c=n.trim();c&&(ze.current=!0,he(c),A(""),k(0),ye(!1),U(null),requestAnimationFrame(()=>P.current?.focus()))},Ls=()=>{ze.current=!0,he(""),A(""),k(0),ye(!1),U(null),requestAnimationFrame(()=>P.current?.focus())},Ts=n=>{if(n.key==="ArrowDown"||n.key==="ArrowUp"){n.preventDefault(),k(c=>{if(Xe===0)return 0;const h=n.key==="ArrowDown"?1:-1;return(c+h+Xe)%Xe});return}if(n.key==="Enter"){n.preventDefault();const c=ee[ne];c?Ht(c):be&&ne===ee.length&&Ut(be);return}n.key==="Escape"&&pe&&R&&(n.preventDefault(),n.stopPropagation(),A(""),k(0))},Bt=n=>{At.current=!0,Nt(n.harness),kt(n.model),It(n.effort)},Ds=async()=>{if(w)return;if(C&&!ae){je("Add instructions, or choose a context option that includes the source message."),requestAnimationFrame(()=>P.current?.focus());return}if(!E){je(null),U("Choose a project before starting this task."),ye(!0),requestAnimationFrame(()=>at.current?.focus());return}if(Dt)return;ge("starting"),st(x.length>0?"uploading":"starting"),je(null);const n=Fn(),c=Date.now();try{let h=[];if(x.length>0&&(h=await _s(x),st("starting")),G&&S&&Qe&&B==="existing-chat"){const _=await nr(S,{mode:B==="existing-chat"&&Qe?"existing-chat":"new-session",message:ae,attachments:h});J(""),O([]),Mt(null),r({view:"agents-v2",agentId:_.agentId,conversationId:_.conversationId,tab:"message"}),Be?.(),s();return}const u=await sr({projectPath:E.root,harness:oe,...Ke?{model:Ke}:{},...We?{reasoningEffort:We}:{},...ae?{instructions:ae}:G?{instructions:"Shared capture for context."}:{},...h.length>0?{attachments:h}:{},...C&&y?{fromMessageId:y.selectedMessageId,fromConversationId:y.sourceConversationId}:{},clientMessageId:n}),p=u.conversationId?.trim();if(!p)throw new Error("Message sent, but no Chat was returned.");const q=u.messageId?.trim();q&&Hn({conversationId:p,messageId:q,clientMessageId:n,body:ae||(h.length>0?"Shared capture for context.":"New session started."),attachments:h,agentId:u.agentId,flightId:u.flightId,invocationId:u.invocationId,createdAt:c}),J(""),r({view:"conversation",conversationId:p}),Be?.(),s()}catch(h){je(h instanceof Error?h.message:G?"Could not route capture.":"Could not send message."),ge("idle"),st("idle")}};return o.jsx("div",{className:"s-newchat-backdrop",onClick:Ms,onDragEnter:Ns,onDragOver:ks,onDragLeave:Is,onDrop:Rs,onPaste:As,role:"presentation",children:o.jsxs("div",{ref:gs,className:`s-newchat-panel${w?" s-newchat-panel--starting":""}${Tt?" s-newchat-panel--dragging":""}`,role:"dialog","aria-modal":"true","aria-label":$t,onClick:n=>n.stopPropagation(),onKeyDown:bs,tabIndex:-1,children:[o.jsxs("header",{className:"s-newchat-head",children:[o.jsx("span",{className:"s-newchat-title",children:$t}),o.jsx("div",{className:"s-newchat-head-status",children:o.jsx("span",{role:"status","aria-live":"polite",children:rt})}),o.jsx("button",{type:"button",className:"s-newchat-close",onClick:ut,disabled:w,"aria-label":"Close (Esc)",title:"Close (Esc)",children:o.jsx(zs,{size:14,"aria-hidden":"true"})})]}),Tt?o.jsx("div",{className:"s-newchat-drop-prompt",role:"status","aria-live":"polite",children:"Drop to attach markdown, code, images, or video"}):null,o.jsxs("div",{className:"s-newchat-body",children:[o.jsxs("div",{className:"s-newchat-lead",children:[C?o.jsx("p",{className:"s-newchat-forward-intro",children:"Choose the destination, runtime, and visible Scout context to carry into a fresh task."}):null,o.jsx(Gs,{context:Pt,selection:$e.selection,attached:nt,onToggleSelection:()=>hs(n=>!n)}),o.jsxs("div",{className:"s-newchat-project-bar",children:[o.jsx("span",{className:"label-md s-newchat-project-label",children:"Project"}),o.jsxs("button",{type:"button",className:"s-newchat-project-summary","data-empty":E?void 0:"true","aria-expanded":pe,"aria-controls":"s-newchat-project-panel","aria-describedby":Te?"s-newchat-project-reminder":void 0,disabled:w,onClick:()=>{const n=!pe;ye(n),requestAnimationFrame(n?()=>at.current?.focus():()=>P.current?.focus())},children:[o.jsx("span",{className:"s-newchat-project-summary-title",children:E?`/${E.title}`:"Choose a project"}),E?o.jsx("span",{className:"s-newchat-project-summary-path",title:E.root,children:xt(E.root)}):o.jsx("span",{className:"s-newchat-project-summary-path",children:"Required when you send"}),o.jsx(Xs,{size:13,"aria-hidden":"true"})]})]}),Te?o.jsx("p",{id:"s-newchat-project-reminder",className:"s-newchat-project-reminder",role:"alert",children:Te}):null,pe?o.jsxs("div",{id:"s-newchat-project-panel",className:"s-newchat-project-panel",children:[o.jsxs("div",{className:"s-newchat-project-picker",children:[o.jsx(Qs,{size:13,"aria-hidden":"true",className:"s-newchat-project-search-icon"}),o.jsx("input",{ref:at,id:"s-newchat-project-search",className:"s-newchat-project-search",type:"search",role:"combobox","aria-label":"Filter projects or enter a project path","aria-autocomplete":"list","aria-expanded":"true","aria-controls":"s-newchat-project-results","aria-activedescendant":Xe>0?`s-newchat-project-option-${ne}`:void 0,value:R,placeholder:T?"Filter projects, or type a path…":"Loading projects…",disabled:w,spellCheck:!1,autoComplete:"off",onChange:n=>{A(n.currentTarget.value),k(0)},onKeyDown:Ts})]}),o.jsxs("div",{id:"s-newchat-project-results",className:"s-newchat-project-results",role:"listbox","aria-label":"Projects",children:[ee.map((n,c)=>o.jsxs("div",{id:`s-newchat-project-option-${c}`,role:"option","aria-selected":n.root===N,"aria-disabled":w||void 0,className:"s-newchat-project-option","data-active":c===ne||void 0,onMouseDown:h=>h.preventDefault(),onMouseEnter:()=>k(c),onClick:()=>{w||Ht(n)},children:[o.jsxs("span",{className:"s-newchat-project-option-title",children:["/",n.title]}),o.jsx("span",{className:"s-newchat-project-option-path",children:xt(n.root)})]},n.root)),be?o.jsxs("div",{id:`s-newchat-project-option-${ee.length}`,role:"option","aria-selected":be===N,"aria-disabled":w||void 0,className:"s-newchat-project-option s-newchat-project-option--path","data-active":ne===ee.length||void 0,onMouseDown:n=>n.preventDefault(),onMouseEnter:()=>k(ee.length),onClick:()=>{w||Ut(be)},children:[o.jsx("span",{className:"s-newchat-project-option-title",children:"Use this project path"}),o.jsx("span",{className:"s-newchat-project-option-path",children:xt(be)})]}):null,ee.length===0&&!be?o.jsx("p",{className:"s-newchat-project-empty",children:"No project matched. Type an absolute path such as ~/dev/my-project."}):null]}),o.jsxs("div",{className:"s-newchat-project-panel-foot",children:[xs>0?o.jsxs("p",{className:"s-newchat-project-foot",children:[ee.length," of"," ",R.trim()?Pe.length:Y.length,R.trim()?" matches":" projects"," · type to narrow"]}):o.jsx("span",{}),E?o.jsx("button",{type:"button",className:"s-newchat-project-clear",onClick:Ls,children:"Clear project"}):null]}),Le&&Y.length===0?o.jsx("div",{className:"s-newchat-error",role:"alert",children:Le}):null]}):null,C&&y?o.jsxs("div",{className:"s-newchat-forward-config",children:[o.jsxs("div",{className:"s-newchat-field",children:[o.jsx("span",{className:"label-md s-newchat-field-label",children:"Runtime"}),o.jsx("div",{className:"s-newchat-forward-runtime",children:o.jsx(zt,{catalog:Lt,value:{harness:oe,model:Ke,effort:We},onChange:Bt,status:ke?"loading":D?"error":"ready",statusMessage:D??void 0,onRetry:Ve,disabled:w||!xe})}),xe&&ke?o.jsxs("p",{className:"s-newchat-runtime-note","data-pending":"true",role:"status",children:[o.jsx(mt,{size:11,className:"s-newchat-runtime-note-spinner","aria-hidden":"true"}),"Loading the model catalog…"]}):xe&&(D||Z?.ready===!1)?o.jsx("p",{className:"s-newchat-runtime-note",role:"alert",children:Z?.ready===!1?Z.detail||`${Z.label} is unavailable.`:D}):null]}),o.jsxs("div",{className:"s-newchat-field",children:[o.jsx("span",{id:"s-newchat-forward-context-label",className:"label-md s-newchat-field-label",children:"Context"}),o.jsxs("div",{className:"s-newchat-context-options",role:"radiogroup","aria-labelledby":"s-newchat-forward-context-label",children:[o.jsxs("button",{type:"button",className:"s-newchat-context-option",role:"radio","aria-checked":re==="selected-message",disabled:w,onClick:()=>De("selected-message"),children:[o.jsx("span",{className:"s-newchat-context-option-title",children:"Selected message"}),o.jsx("span",{className:"s-newchat-context-option-copy",children:"Carry only the message you chose."})]}),o.jsxs("button",{type:"button",className:"s-newchat-context-option",role:"radio","aria-checked":re==="recent-context",disabled:w||y.recentMessageCount===0,onClick:()=>De("recent-context"),children:[o.jsx("span",{className:"s-newchat-context-option-title",children:"Recent context + message"}),o.jsx("span",{className:"s-newchat-context-option-copy",children:y.recentMessageCount>0?`Carry ${y.recentMessageCount} preceding visible ${y.recentMessageCount===1?"message":"messages"}, then this message.`:"No preceding visible messages are available."})]}),o.jsxs("button",{type:"button",className:"s-newchat-context-option",role:"radio","aria-checked":re==="instructions-only",disabled:w,onClick:()=>De("instructions-only"),children:[o.jsx("span",{className:"s-newchat-context-option-title",children:"Instructions only"}),o.jsx("span",{className:"s-newchat-context-option-copy",children:"Start clean without source conversation text."})]})]}),o.jsx("p",{className:"s-newchat-context-note",children:"Recent context is a bounded Scout excerpt, not a generated summary or full model context."})]})]}):null,C?o.jsx("span",{className:"label-md s-newchat-field-label",children:"Instructions"}):null,o.jsx($s,{density:"panel",value:M,onChange:Es,onSend:()=>{Ds()},sendOnEnter:!0,textareaRef:P,placeholder:C?"Add what the new task should do (optional)…":G?"What should the agent do with this?":"Describe the task, or leave blank…","aria-label":C?"Instructions for the new task":"Message",disabled:w,sending:w,canSend:!w&&!Dt&&(!C||!!ae),rows:7,maxHeightPx:280,sendTitle:C?"Forward to new task (Enter)":G?"Route (Enter)":"Start task (Enter)",sendAriaLabel:C?"Forward to new task":G?"Route capture":"Start task",overlay:o.jsxs(o.Fragment,{children:[I.open?o.jsx(qt,{label:"Slash commands",placement:"inside",items:ie.map(n=>({id:n.command,token:n.label,description:n.description})),activeIndex:I.index,onPick:n=>{const c=ie[n];c&&ct(c)},onActiveIndexChange:n=>d(c=>({...c,index:n}))}):null,m.open?o.jsx(qt,{label:"Mention agent",placement:"inside",items:le.map(n=>({id:n.id,token:`@${n.handle}`,description:n.name,avatar:{label:n.name[0]?.toUpperCase()??"?",color:Bs(n.name)}})),activeIndex:m.index,onPick:n=>{const c=le[n];c&&dt(c)},onActiveIndexChange:n=>b(c=>({...c,index:n}))}):null]}),onSelect:n=>{const c=n.currentTarget;_e(c.value,c.selectionStart)},onBlur:()=>window.setTimeout(lt,120),onKeyDown:Ss,leadingTools:o.jsxs("div",{className:"s-newchat-compose-triggers","aria-label":"Message shortcuts",children:[o.jsx("button",{type:"button",className:"s-newchat-command-trigger",disabled:w,onClick:()=>Ot("/"),children:"/Commands"}),o.jsx("span",{"aria-hidden":"true",children:"·"}),o.jsx("button",{type:"button",className:"s-newchat-command-trigger",disabled:w,onClick:()=>Ot("@"),children:"@Agents"})]}),tools:C?void 0:o.jsx(zt,{catalog:Lt,value:{harness:oe,model:Ke,effort:We},onChange:Bt,status:ke?"loading":D?"error":"ready",statusMessage:D??void 0,onRetry:Ve,disabled:w||!xe})}),x.length>0?o.jsx("div",{className:"s-newchat-attachments","aria-label":"Attached captures",children:x.map((n,c)=>o.jsx(ur,{file:n,onRemove:()=>O(h=>h.filter((u,p)=>p!==c))},`${n.name}:${n.size}:${c}`))}):null,qe?o.jsx("div",{className:"s-newchat-attachment-feedback",role:"status","aria-live":"polite",children:qe}):null,St&&o.jsx("div",{className:"s-newchat-error",role:"alert",children:St}),w&&o.jsxs("div",{className:"s-newchat-progress",role:"status","aria-live":"polite",children:[o.jsx(mt,{size:14,className:"s-newchat-progress-spinner","aria-hidden":"true"}),o.jsxs("div",{className:"s-newchat-progress-copy",children:[o.jsx("span",{className:"label-md s-newchat-progress-title",children:vs}),o.jsx("span",{className:"s-newchat-progress-detail",children:ys}),ae&&o.jsx("span",{className:"s-newchat-progress-message",children:ae})]})]})]}),Cs?o.jsxs("div",{className:"s-newchat-config",children:[_t?o.jsxs("div",{className:"s-newchat-mode",role:"group","aria-label":"Delivery mode",children:[o.jsx("button",{type:"button",className:`s-newchat-mode-btn${B==="existing-chat"?" s-newchat-mode-btn--on":""}`,disabled:w,onClick:()=>Ge("existing-chat"),children:"Existing chat"}),o.jsx("button",{type:"button",className:`s-newchat-mode-btn${B==="new-session"?" s-newchat-mode-btn--on":""}`,disabled:w,onClick:()=>Ge("new-session"),children:"New chat"})]}):null,xe&&ke?o.jsxs("p",{className:"s-newchat-runtime-note","data-pending":"true",role:"status",children:[o.jsx(mt,{size:11,className:"s-newchat-runtime-note-spinner","aria-hidden":"true"}),"Loading the model catalog…"]}):xe&&(D||Z?.ready===!1)?o.jsx("p",{className:"s-newchat-runtime-note",role:"alert",children:Z?.ready===!1?Z.detail||`${Z.label} is unavailable.`:D}):null]}):null]})]})})}const Ur=Object.freeze(Object.defineProperty({__proto__:null,NewChatComposer:fr},Symbol.toStringTag,{value:"Module"}));export{fr as N,Se as R,zt as a,Me as b,Pn as c,Tr as d,Ee as e,Dr as f,_r as g,cs as h,Fn as i,Fr as j,Or as k,_n as l,Hr as m,cn as n,Ur as o,$r as p,Lr as r,Pr as s,Et as w};
@@ -1 +1 @@
1
- import{j as e}from"./index-DMiGbrBt.js";function c({context:l,selection:a,attached:n,onToggleSelection:i}){return l.length===0?null:e.jsxs("div",{className:"s-newchat-origin",children:[e.jsx("span",{className:"label-md s-newchat-origin-label",children:"From"}),e.jsx("dl",{className:"s-newchat-origin-facts",children:l.map(s=>e.jsxs("div",{className:"s-newchat-origin-fact",children:[e.jsx("dt",{children:s.label}),e.jsx("dd",{title:s.value,children:s.value})]},s.label))}),a?e.jsx("button",{type:"button",className:"s-newchat-origin-attach","aria-pressed":n,onClick:i,children:n?"Remove selection":`Attach selection (${a.length} chars)`}):null]})}export{c as NewChatOrigin};
1
+ import{j as e}from"./index-sUomXsrf.js";function c({context:l,selection:a,attached:n,onToggleSelection:i}){return l.length===0?null:e.jsxs("div",{className:"s-newchat-origin",children:[e.jsx("span",{className:"label-md s-newchat-origin-label",children:"From"}),e.jsx("dl",{className:"s-newchat-origin-facts",children:l.map(s=>e.jsxs("div",{className:"s-newchat-origin-fact",children:[e.jsx("dt",{children:s.label}),e.jsx("dd",{title:s.value,children:s.value})]},s.label))}),a?e.jsx("button",{type:"button",className:"s-newchat-origin-attach","aria-pressed":n,onClick:i,children:n?"Remove selection":`Attach selection (${a.length} chars)`}):null]})}export{c as NewChatOrigin};
@@ -0,0 +1,2 @@
1
+ import{r as o,j as e}from"./index-sUomXsrf.js";import{a as v}from"./api-h5zurxmi.js";import{d as b,S as u}from"./SessionObserve-Dlx5vDaV.js";import{u as h}from"./sse-CVoGDiKW.js";import{f as x}from"./time-Dhsh_2EG.js";import{SessionObserveEmbedStatus as f}from"./SessionObserveEvidence-ChBD1d4c.js";import{E as c}from"./external-link-CnjcXf32.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-BzehBmdi.js";import"./index-m6dFtY5f.js";import"./lane-observe-DrhKkQ3A.js";import"./lane-ask-display-B6iCAVcd.js";import"./colors-BtO5_zlx.js";import"./mentions-CY_wPZc5.js";import"./Provider-tFc3jqZ4.js";import"./router-Dja9_ygK.js";import"./terminal-sessions-D5CIR2OL.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-BlBQhpax.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./createLucideIcon-DlxlBfLC.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./x-0XjXwGqq.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-BhZZ5HEq.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./NewChatOrigin--pHWUb4V.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";import"./AgentDetailCard-DxxVkgT1.js";import"./AgentLiveActions-CZdAInEu.js";import"./terminal-takeover-X97KCSJk.js";import"./openContent-C6XO6kr5.js";import"./eye-So8tNNK6.js";import"./terminal-DXQISjZn.js";import"./message-markup-C8Nx04sP.js";import"./ObservedTopologyPanel-Dv6fbHzW.js";import"./ObserveTextFlow-CBitljxi.js";import"./use-reduced-motion-Cvk-HRKg.js";import"./message-circle-C5UZ6fO7.js";import"./wrench-pEVd8JnN.js";import"./index-BWHgHrtv.js";const j=2500,g=240,N=5;function I({ask:r,sessionId:s}){const[i,p]=o.useState(!1);if(!r)return e.jsxs("section",{className:"s-observe-embed-ask s-observe-embed-ask--unknown",children:[e.jsx("div",{className:"s-observe-embed-ask-kicker",children:"Ask"}),e.jsx("div",{className:"s-observe-embed-ask-unknown",children:"Not available for this observed session."})]});const m=r.task.length>g||r.task.split(`
2
+ `).length>N,n=r.conversationId?`/messages/${encodeURIComponent(r.conversationId)}${r.messageId?`#msg-${encodeURIComponent(r.messageId)}`:""}`:null,d=`/flights/${encodeURIComponent(r.flightId)}/observe${s?`?session=${encodeURIComponent(s)}`:""}`;return e.jsxs("section",{className:"s-observe-embed-ask",children:[e.jsxs("div",{className:"s-observe-embed-ask-head",children:[e.jsxs("div",{children:[e.jsx("div",{className:"s-observe-embed-ask-kicker",children:"Ask"}),e.jsxs("div",{className:"s-observe-embed-ask-byline",children:[e.jsx("span",{children:r.requesterName}),e.jsx("span",{"aria-hidden":"true",children:"·"}),e.jsx("time",{dateTime:new Date(r.requestedAt).toISOString(),children:x(r.requestedAt)})]})]}),e.jsxs("nav",{className:"s-observe-embed-ask-links","aria-label":"Run provenance",children:[n&&e.jsxs("a",{href:n,target:"_top",children:["Origin ",e.jsx(c,{size:11,"aria-hidden":"true"})]}),e.jsxs("a",{href:d,target:"_top",children:["Flight ",e.jsx(c,{size:11,"aria-hidden":"true"})]})]})]}),e.jsx("div",{className:`s-observe-embed-ask-body${i?" is-expanded":""}`,children:r.task}),m&&e.jsx("button",{type:"button",className:"s-observe-embed-ask-toggle","aria-expanded":i,onClick:()=>p(t=>!t),children:i?"Show less":"Show full ask"})]})}function _e({agentId:r}){const[s,i]=o.useState(null),[p,m]=o.useState(!0),[n,d]=o.useState(null),t=o.useCallback(async(l=!1)=>{l||m(!0),d(null);try{const a=await v(`/api/agents/${encodeURIComponent(r)}/observe`);i(a)}catch(a){l||i(null),d(a instanceof Error?a.message:String(a))}finally{m(!1)}},[r]);return o.useEffect(()=>{t();const l=window.setInterval(()=>{t(!0)},j);return()=>window.clearInterval(l)},[t]),h(()=>{t(!0)}),n&&!s?e.jsx("div",{className:"s-observe-embed-page",children:e.jsxs("div",{className:"s-observe-embed-empty",children:[e.jsx("div",{className:"s-observe-embed-empty-title",children:"Observe unavailable"}),e.jsx("div",{className:"s-observe-embed-empty-detail",children:n})]})}):p&&!s?e.jsx("div",{className:"s-observe-embed-page",children:e.jsxs("div",{className:"s-observe-embed-empty",children:[e.jsx("div",{className:"s-observe-embed-empty-title",children:"Resolving trace"}),e.jsx("div",{className:"s-observe-embed-empty-detail",children:r})]})}):e.jsxs("div",{className:"s-observe-embed-page",children:[s&&e.jsxs(e.Fragment,{children:[e.jsx(f,{source:s.source,fidelity:s.fidelity,sessionId:s.sessionId,evidence:b({source:s.source,fidelity:s.fidelity,live:s.data.live,eventCount:s.data.events.length})}),e.jsx(I,{ask:s.initiatingAsk,sessionId:s.sessionId})]}),e.jsx(u,{data:s?.data,agentId:r,sessionId:s?.sessionId,showRail:!1,observeSource:s?.source,observeFidelity:s?.fidelity})]})}export{I as InitiatingAsk,_e as ObserveEmbedScreen};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/conversation-motion-features-BdAONVls.js","assets/gestures-CcwOTu8C.js","assets/index-DMiGbrBt.js","assets/index-DxGoC5l5.css","assets/use-reduced-motion-RRBkmVkk.js"])))=>i.map(i=>d[i]);
2
- import{r as n,j as e,_ as b}from"./index-DMiGbrBt.js";import{l as p}from"./lane-observe-D0rfKDnU.js";import{C as f}from"./chevron-down-BGk5qoEw.js";import{u as h,L as g,m as x}from"./use-reduced-motion-RRBkmVkk.js";import"./time-DltNTpLl.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./createLucideIcon-OpA4Amw5.js";const j=420,N=()=>b(()=>import("./conversation-motion-features-BdAONVls.js"),__vite__mapDeps([0,1,2,3,4])).then(t=>t.default);function R({text:t}){const s=h(),[o,i]=n.useState(!0),r=n.useRef(null);return n.useEffect(()=>(i(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>i(!1),j),()=>{r.current&&clearTimeout(r.current)}),[t]),e.jsx(g,{features:N,strict:!0,children:e.jsx(x.span,{className:"s-observe-stream-cursor","data-receiving":o||void 0,"aria-hidden":"true",initial:!1,animate:s||o?{opacity:1}:{opacity:[1,.28,1]},transition:s||o?{duration:.12}:{duration:1.05,ease:"linear",repeat:1/0}})})}function k({text:t,live:s,compact:o=!1,copyControl:i}){const r=n.useId(),c=t.trim(),[a,d]=n.useState(s),u=n.useRef(s);n.useEffect(()=>{s?d(!0):u.current&&d(!1),u.current=s},[s]);const l=p(c,o?120:168,1),m=e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"s-observe-reasoning-state",children:[e.jsx("span",{className:"s-observe-reasoning-dot","aria-hidden":"true"}),s?"Thinking":"Reasoning"]}),!s&&!a&&l?e.jsx("span",{className:"s-observe-reasoning-preview",title:c,children:l}):null,s?null:e.jsx(f,{className:"s-observe-reasoning-chevron",size:12,strokeWidth:1.8,"aria-hidden":"true"})]});return e.jsxs("div",{className:["s-observe-block","s-observe-reasoning",o&&"s-observe-reasoning--compact",s&&"s-observe-reasoning--live",a&&"s-observe-reasoning--open"].filter(Boolean).join(" "),"aria-busy":s||void 0,children:[s?e.jsx("div",{className:"s-observe-reasoning-header",role:"status",children:m}):e.jsx("button",{type:"button",className:"s-observe-reasoning-header s-observe-reasoning-header--button","aria-expanded":a,"aria-controls":r,"aria-label":a?"Hide reasoning":"Show reasoning",onClick:()=>d(v=>!v),children:m}),e.jsx("div",{id:r,className:"s-observe-reasoning-body","aria-hidden":!a,inert:a?void 0:!0,children:e.jsx("div",{className:"s-observe-reasoning-body-clip",children:e.jsxs("div",{className:"s-observe-reasoning-body-inner",children:[e.jsxs("div",{className:"s-observe-reasoning-text",children:[c,s?e.jsx(R,{text:c}):null]}),i?e.jsx("div",{className:"s-observe-reasoning-tools",children:i}):null]})})})]})}export{k as ObserveReasoningDisclosure,R as ObserveStreamCursor};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/conversation-motion-features-CifSdJtm.js","assets/gestures-CgvAMd6F.js","assets/index-sUomXsrf.js","assets/index-DITWsjFb.css","assets/use-reduced-motion-Cvk-HRKg.js"])))=>i.map(i=>d[i]);
2
+ import{r as n,j as e,_ as b}from"./index-sUomXsrf.js";import{l as p}from"./lane-observe-DrhKkQ3A.js";import{C as f}from"./chevron-down-BFai6ZfE.js";import{u as h,L as g,m as x}from"./use-reduced-motion-Cvk-HRKg.js";import"./time-Dhsh_2EG.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./createLucideIcon-DlxlBfLC.js";const j=420,N=()=>b(()=>import("./conversation-motion-features-CifSdJtm.js"),__vite__mapDeps([0,1,2,3,4])).then(t=>t.default);function R({text:t}){const s=h(),[o,i]=n.useState(!0),r=n.useRef(null);return n.useEffect(()=>(i(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>i(!1),j),()=>{r.current&&clearTimeout(r.current)}),[t]),e.jsx(g,{features:N,strict:!0,children:e.jsx(x.span,{className:"s-observe-stream-cursor","data-receiving":o||void 0,"aria-hidden":"true",initial:!1,animate:s||o?{opacity:1}:{opacity:[1,.28,1]},transition:s||o?{duration:.12}:{duration:1.05,ease:"linear",repeat:1/0}})})}function k({text:t,live:s,compact:o=!1,copyControl:i}){const r=n.useId(),c=t.trim(),[a,d]=n.useState(s),u=n.useRef(s);n.useEffect(()=>{s?d(!0):u.current&&d(!1),u.current=s},[s]);const l=p(c,o?120:168,1),m=e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"s-observe-reasoning-state",children:[e.jsx("span",{className:"s-observe-reasoning-dot","aria-hidden":"true"}),s?"Thinking":"Reasoning"]}),!s&&!a&&l?e.jsx("span",{className:"s-observe-reasoning-preview",title:c,children:l}):null,s?null:e.jsx(f,{className:"s-observe-reasoning-chevron",size:12,strokeWidth:1.8,"aria-hidden":"true"})]});return e.jsxs("div",{className:["s-observe-block","s-observe-reasoning",o&&"s-observe-reasoning--compact",s&&"s-observe-reasoning--live",a&&"s-observe-reasoning--open"].filter(Boolean).join(" "),"aria-busy":s||void 0,children:[s?e.jsx("div",{className:"s-observe-reasoning-header",role:"status",children:m}):e.jsx("button",{type:"button",className:"s-observe-reasoning-header s-observe-reasoning-header--button","aria-expanded":a,"aria-controls":r,"aria-label":a?"Hide reasoning":"Show reasoning",onClick:()=>d(v=>!v),children:m}),e.jsx("div",{id:r,className:"s-observe-reasoning-body","aria-hidden":!a,inert:a?void 0:!0,children:e.jsx("div",{className:"s-observe-reasoning-body-clip",children:e.jsxs("div",{className:"s-observe-reasoning-body-inner",children:[e.jsxs("div",{className:"s-observe-reasoning-text",children:[c,s?e.jsx(R,{text:c}):null]}),i?e.jsx("div",{className:"s-observe-reasoning-tools",children:i}):null]})})})]})}export{k as ObserveReasoningDisclosure,R as ObserveStreamCursor};
@@ -1,2 +1,2 @@
1
- import{r as x,j as t}from"./index-DMiGbrBt.js";import{a as I}from"./api-h5zurxmi.js";import{d as w}from"./time-DltNTpLl.js";function A(e){if(!e)return null;const o=Date.parse(e);return Number.isFinite(o)?o:null}function S(e){return e?e.length<=12?e:e.slice(0,12):null}function R(e){return e.includes("workflow")?"Claude workflows":e.includes("codex")?"Codex":e.includes("claude")?"Claude Code":e.replace(/[-_]/g," ")}function T(e){const o=[];return e.workerCount>0&&o.push(`${e.workerCount} worker${e.workerCount===1?"":"s"}`),e.eventCount>0?o.push(`${e.eventCount} event${e.eventCount===1?"":"s"}`):e.taskCount>0&&o.push(`${e.completedTaskCount}/${e.taskCount} tasks`),o.join(" · ")}function $(e){const o=[e.label];e.description&&o.push(e.description);const n=T(e);return n&&o.push(n),e.parentSessionId&&o.push(`Parent session ${e.parentSessionId}`),o.join(`
1
+ import{r as x,j as t}from"./index-sUomXsrf.js";import{a as I}from"./api-h5zurxmi.js";import{a as w}from"./time-Dhsh_2EG.js";function A(e){if(!e)return null;const o=Date.parse(e);return Number.isFinite(o)?o:null}function S(e){return e?e.length<=12?e:e.slice(0,12):null}function R(e){return e.includes("workflow")?"Claude workflows":e.includes("codex")?"Codex":e.includes("claude")?"Claude Code":e.replace(/[-_]/g," ")}function T(e){const o=[];return e.workerCount>0&&o.push(`${e.workerCount} worker${e.workerCount===1?"":"s"}`),e.eventCount>0?o.push(`${e.eventCount} event${e.eventCount===1?"":"s"}`):e.taskCount>0&&o.push(`${e.completedTaskCount}/${e.taskCount} tasks`),o.join(" · ")}function $(e){const o=[e.label];e.description&&o.push(e.description);const n=T(e);return n&&o.push(n),e.parentSessionId&&o.push(`Parent session ${e.parentSessionId}`),o.join(`
2
2
  `)}function k(e){return e.name??S(e.externalSessionId)??e.id.replace(/^.*:/,"")}function W(e){return e.status??e.role??e.type??"observed"}function j(e,o){const n=e?.[o];return typeof n=="string"&&n.trim()?n.trim():null}function F(e,o){const n=e?.[o];return typeof n=="number"&&Number.isFinite(n)?n:null}function C(e){return j(e,"claudeWorkflowRunId")??j(e,"workflowRunId")}function P(e,o,n){return o.filter(a=>a.kind==="spawned"&&a.toId===e.id).map(a=>n.get(a.fromId)).filter(a=>!!a).map(k)}function B(e,o){return o.find(n=>n.assigneeId===e.id)??null}function D(e,o){return C(e.providerMeta)===o||e.id.includes(o)}function E(e,o){return C(e.providerMeta)===o||e.id.includes(o)}function q(e){const o=j(e.providerMeta,"latestTimestamp");if(!o)return null;const n=Date.parse(o);return Number.isFinite(n)?n:null}function G(e,o){return e.some(n=>n.state&&b(n.state)===0)||o.some(n=>n.status&&b(n.status)===0)?"running":e.some(n=>n.state==="failed"||n.state==="error")||o.some(n=>n.status==="failed"||n.status==="error")?"failed":e.length>0&&e.every(n=>n.state==="completed"||n.state==="done")||o.length>0&&o.every(n=>n.status==="completed"||n.status==="done")?"completed":e.length>0?"observed":"workflow"}function M(e,o){return e.groups.filter(a=>a.kind==="workflow").map(a=>{const c=C(a.providerMeta)??a.id,d=e.tasks.filter(r=>D(r,c)),m=e.agents.filter(r=>r.role!=="lead"&&E(r,c)),u=d.filter(r=>r.state!=="completed"&&r.state!=="done"),f=d.filter(r=>r.state==="completed"||r.state==="done"),p=m.map(q).filter(r=>!!r).sort((r,h)=>h-r)[0]??null,g=m.reduce((r,h)=>r+(F(h.providerMeta,"eventCount")??0),0),v=(u.length>0?u:d).slice(0,3);return{id:a.id,label:a.name??c,description:j(a.providerMeta,"description"),runId:c,parentSessionId:j(a.providerMeta,"parentSessionId"),status:G(d,m),workerCount:m.length,taskCount:d.length,activeTaskCount:u.length,completedTaskCount:f.length,eventCount:g,latestAt:p??o,taskPreview:v}}).sort((a,c)=>{const d=(c.activeTaskCount>0?1:0)-(a.activeTaskCount>0?1:0);return d!==0?d:(c.latestAt??0)-(a.latestAt??0)||a.label.localeCompare(c.label)})}function b(e){return e==="running"||e==="in_progress"||e==="working"?0:e==="queued"||e==="pending"||e==="materialized"?1:e==="failed"||e==="error"?2:e==="completed"||e==="done"?3:4}function H(e){return e?e.observations.map(o=>({source:o.source,observedAt:A(o.observedAt),topology:o.topology})):[]}function K({topology:e,sessionId:o,size:n="full",title:a="Internal topology",maxAgents:c=n==="rail"?5:8,maxTasks:d=n==="rail"?3:5,showEmpty:m=!1}){const[u,f]=x.useState(null),[p,g]=x.useState(!1);x.useEffect(()=>{if(e)return;let i=!1;const s=o?`?sessionId=${encodeURIComponent(o)}`:"";return I(`/api/topology/snapshot${s}`).then(l=>{i||(f(l),g(!1))}).catch(()=>{i||g(!0)}),()=>{i=!0}},[o,e]);const v=x.useMemo(()=>e?[{source:e.source,observedAt:A(e.observedAt),topology:e}]:H(u),[u,e]),r=x.useMemo(()=>v.reduce((i,s)=>(i.sources+=1,i.workflows+=s.topology.groups.filter(l=>l.kind==="workflow").length,i.agents+=s.topology.agents.length,i.subagents+=s.topology.agents.filter(l=>l.role==="subagent").length,i.tasks+=s.topology.tasks.length,i.activeTasks+=s.topology.tasks.filter(l=>l.state!=="completed").length,i.spawned+=s.topology.relationships.filter(l=>l.kind==="spawned").length,i),{sources:0,workflows:0,agents:0,subagents:0,tasks:0,activeTasks:0,spawned:0}),[v]),h=n==="rail",y=v.reduce((i,s)=>i+M(s.topology,s.observedAt).filter(l=>l.status==="running").length,0);return v.length===0?!m&&!p?null:t.jsxs("section",{className:`s-observed-topology s-observed-topology--${n}`,children:[!h&&t.jsx("header",{className:"s-observed-topology-head",children:t.jsxs("div",{children:[t.jsx("div",{className:"s-observed-topology-kicker",children:"Harness observed"}),t.jsx("h3",{children:a})]})}),t.jsx("div",{className:"s-observed-topology-empty",children:p?"Topology is unavailable right now.":"No interacted agents observed yet."})]}):t.jsxs("section",{className:`s-observed-topology s-observed-topology--${n}`,children:[h?r.workflows>0&&t.jsxs("div",{className:"s-observed-topology-rail-summary",children:[y>0?`${y} running`:"No active workflows",r.workflows>0&&` · ${r.workflows} total`]}):t.jsxs("header",{className:"s-observed-topology-head",children:[t.jsxs("div",{children:[t.jsx("div",{className:"s-observed-topology-kicker",children:"Harness observed"}),t.jsx("h3",{children:a})]}),t.jsxs("div",{className:"s-observed-topology-counts",children:[r.workflows>0&&t.jsxs("span",{children:[r.workflows," workflows"]}),t.jsxs("span",{children:[r.subagents," workers"]}),t.jsxs("span",{children:[r.tasks," tasks"]}),r.activeTasks>0?t.jsxs("span",{children:[r.activeTasks," active"]}):t.jsxs("span",{children:[r.spawned," spawn links"]})]})]}),t.jsx("div",{className:"s-observed-topology-sources",children:v.map(i=>t.jsx(O,{source:i,maxAgents:c,maxTasks:d,size:n},`${i.source}:${i.topology.observedAt}`))})]})}function L({workflow:e}){const o=T(e);return t.jsxs("div",{className:`s-observed-topology-rail-row s-observed-topology-rail-row--${e.status}`,title:$(e),children:[t.jsx("span",{className:`s-observed-topology-rail-dot s-observed-topology-rail-dot--${e.status}`,"aria-label":e.status}),t.jsx("span",{className:"s-observed-topology-rail-name",children:e.label}),o&&t.jsx("span",{className:"s-observed-topology-rail-stats",children:o})]})}function O({source:e,maxAgents:o,maxTasks:n,size:a="full"}){const c=a==="rail",{topology:d}=e,m=new Map(d.agents.map(s=>[s.id,s])),u=M(d,e.observedAt),f=u.slice(0,o),p=u.length-f.length,g=(s,l)=>b(s.status)-b(l.status)||k(s).localeCompare(k(l)),v=d.agents.filter(s=>s.role==="subagent").sort(g),r=d.agents.filter(s=>s.role==="lead").sort(g),h=d.agents.filter(s=>s.role!=="subagent"&&s.role!=="lead").sort(g),y=[...r,...v,...h].slice(0,o),i=d.tasks.filter(s=>s.state!=="completed").sort((s,l)=>b(s.state)-b(l.state)||(s.title??s.id).localeCompare(l.title??l.id)).slice(0,n);return t.jsxs("div",{className:"s-observed-topology-source",children:[!c&&t.jsxs("div",{className:"s-observed-topology-source-head",children:[t.jsx("span",{children:R(e.source)}),t.jsx("span",{children:w(e.observedAt)||"observed"})]}),u.length>0?c?t.jsxs("div",{className:"s-observed-topology-rail-list",children:[f.map(s=>t.jsx(L,{workflow:s},s.id)),p>0&&t.jsxs("div",{className:"s-observed-topology-rail-more",children:["+",p," more workflow",p===1?"":"s"]})]}):t.jsxs("div",{className:"s-observed-topology-workflow-list",children:[f.map(s=>t.jsxs("div",{className:"s-observed-topology-workflow",children:[t.jsxs("div",{className:"s-observed-topology-workflow-main",children:[t.jsx("span",{className:`s-observed-topology-workflow-state s-observed-topology-workflow-state--${s.status}`,children:s.status}),t.jsx("span",{className:"s-observed-topology-workflow-name",title:$(s),children:s.label}),t.jsx("span",{className:"s-observed-topology-workflow-age",children:w(s.latestAt)||"observed"})]}),t.jsxs("div",{className:"s-observed-topology-workflow-meta",children:[t.jsxs("span",{children:[s.workerCount," workers"]}),s.taskCount>0&&t.jsxs("span",{children:[s.completedTaskCount,"/",s.taskCount," tasks"]}),s.eventCount>0&&t.jsxs("span",{children:[s.eventCount," events"]}),s.parentSessionId&&t.jsxs("span",{children:["parent ",S(s.parentSessionId)]})]}),s.description&&t.jsx("div",{className:"s-observed-topology-workflow-description",children:s.description}),s.taskPreview.length>0&&t.jsx("div",{className:"s-observed-topology-workflow-tasks",children:s.taskPreview.map(l=>t.jsx("span",{children:l.title??l.id.replace(/^.*:/,"")},l.id))})]},s.id)),p>0&&t.jsxs("div",{className:"s-observed-topology-more",children:[p," more workflow",p===1?"":"s"]})]}):t.jsx("div",{className:"s-observed-topology-agent-list",children:y.map(s=>{const l=P(s,d.relationships,m),N=B(s,d.tasks);return t.jsxs("div",{className:"s-observed-topology-agent",children:[t.jsxs("div",{className:"s-observed-topology-agent-main",children:[t.jsx("span",{className:`s-observed-topology-agent-role s-observed-topology-agent-role--${s.role??"observed"}`,children:s.role??"observed"}),t.jsx("span",{className:"s-observed-topology-agent-name",children:k(s)}),t.jsx("span",{className:"s-observed-topology-agent-status",children:W(s)})]}),(l.length>0||N?.title)&&t.jsxs("div",{className:"s-observed-topology-agent-detail",children:[l.length>0&&t.jsxs("span",{children:["spawned by ",l.join(", ")]}),N?.title&&t.jsx("span",{children:N.title})]})]},s.id)})}),u.length===0&&i.length>0&&t.jsx("div",{className:"s-observed-topology-task-list",children:i.map(s=>t.jsxs("div",{className:"s-observed-topology-task",children:[t.jsx("span",{children:s.state??"task"}),t.jsx("strong",{children:s.title??s.id.replace(/^.*:/,"")})]},s.id))})]})}export{K as O};