@openscout/scout 0.2.75 → 0.2.78

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 (372) hide show
  1. package/README.md +41 -2
  2. package/bin/openscout-runtime.mjs +48 -30
  3. package/bin/scout.mjs +2 -2
  4. package/bin/scoutd +0 -0
  5. package/dist/build-manifest.json +3 -3
  6. package/dist/client/assets/ActivityScreen-Cu_1V4bq.js +1 -0
  7. package/dist/client/assets/AddProjectForm-DMnobKch.js +1 -0
  8. package/dist/client/assets/AgentAvatar-D90c1Rzk.js +1 -0
  9. package/dist/client/assets/AgentConfigurationScreen-BqfOz90D.js +1 -0
  10. package/dist/client/assets/AgentDefinitionsWorkspace-CUpUrY57.js +1 -0
  11. package/dist/client/assets/AgentDetailCard-BcRBRp88.js +1 -0
  12. package/dist/client/assets/AgentDetailCard-C4WVeJvJ.css +1 -0
  13. package/dist/client/assets/AgentFloorView-8LoAEBwS.js +1 -0
  14. package/dist/client/assets/AgentInfoScreen-DZs2_ibL.js +1 -0
  15. package/dist/client/assets/AgentLaneCard-RrNnDZu8.js +1 -0
  16. package/dist/client/assets/AgentLaneChrome-D9ZwUKrl.js +1 -0
  17. package/dist/client/assets/AgentLaneDetailSheet-BXbPls9N.js +5 -0
  18. package/dist/client/assets/AgentLaneSummaryResize-BhFmGNzT.js +1 -0
  19. package/dist/client/assets/AgentLanesEmbedScreen-W3qs022h.js +1 -0
  20. package/dist/client/assets/AgentLanesPreflight-eSAoDsPi.js +1 -0
  21. package/dist/client/assets/AgentLanesView-B9vuEEmZ.js +2 -0
  22. package/dist/client/assets/AgentLiveActions-CGS-Bxb7.css +1 -0
  23. package/dist/client/assets/AgentLiveActions-DBtnD0qE.js +1 -0
  24. package/dist/client/assets/AgentSessions-DyqOf4nG.js +6 -0
  25. package/dist/client/assets/AgentsConsole-BgiYP2wR.js +1 -0
  26. package/dist/client/assets/AgentsConsole-BjSTs-TV.css +1 -0
  27. package/dist/client/assets/AgentsScreen-DBi8x4MB.js +1 -0
  28. package/dist/client/assets/AgentsSubnav-DIEO4NPx.js +1 -0
  29. package/dist/client/assets/AtopView-BCkae3e1.js +1 -0
  30. package/dist/client/assets/BackToPicker-BRvfostO.js +1 -0
  31. package/dist/client/assets/BackToPicker-CdgVu-to.css +1 -0
  32. package/dist/client/assets/BriefingDetailScreen-BwFyysT8.js +6 -0
  33. package/dist/client/assets/BriefingsScreen-BQEevztH.js +1 -0
  34. package/dist/client/assets/BrokerMetadataPanel-7UjcuNjd.js +1 -0
  35. package/dist/client/assets/BrokerScreen-7ekklu88.js +5 -0
  36. package/dist/client/assets/ChatCollapsedStrip-CQSYSd8s.js +1 -0
  37. package/dist/client/assets/CodeDiffPane-DDPt6KPh.js +1 -0
  38. package/dist/client/assets/CodeProjectPicker-DqKFCpLU.js +2 -0
  39. package/dist/client/assets/CodeScreen-BxCrpRHd.js +1 -0
  40. package/dist/client/assets/ContextMenu-bARZqTzD.js +1 -0
  41. package/dist/client/assets/ConversationComposer-Bla3DDvM.js +1 -0
  42. package/dist/client/assets/ConversationFeedRows-B_gPxcqA.js +1 -0
  43. package/dist/client/assets/ConversationHeader-DE3FC0m-.js +1 -0
  44. package/dist/client/assets/ConversationPanels-DLek4H6A.js +2 -0
  45. package/dist/client/assets/ConversationScreen-BDRhx-RU.js +1 -0
  46. package/dist/client/assets/ConversationScreen-C9yMAMYF.css +1 -0
  47. package/dist/client/assets/ConversationStatus-BwVLiiO4.js +1 -0
  48. package/dist/client/assets/DataTable-E8s_MmoA.js +1 -0
  49. package/dist/client/assets/DispatchAftermath-Dpe88DFX.js +1 -0
  50. package/dist/client/assets/DocumentFocusViewer-BeVwwl26.js +1 -0
  51. package/dist/client/assets/EmbeddableSurfacesLab-BQqFQVnI.js +1 -0
  52. package/dist/client/assets/EmptyState-4F9XDFQm.js +1 -0
  53. package/dist/client/assets/FileViewerPane-CLgUhSm4.js +3 -0
  54. package/dist/client/assets/FleetSearch-Dz5euQJe.js +1 -0
  55. package/dist/client/assets/FleetSearch-EXOe8ulE.css +1 -0
  56. package/dist/client/assets/FlightObserveScreen-6RpZYwVz.js +1 -0
  57. package/dist/client/assets/FollowScreen-DZ4qfYOY.js +1 -0
  58. package/dist/client/assets/HarnessMark-Cbv3Ib0c.js +1 -0
  59. package/dist/client/assets/HarnessesScreen-CznAImej.js +1 -0
  60. package/dist/client/assets/HomeHero-B3uYd-pP.js +1 -0
  61. package/dist/client/assets/HomeHero-DEl-WBsT.css +1 -0
  62. package/dist/client/assets/KnowledgeSearchInspector-Dgdkfvvz.js +1 -0
  63. package/dist/client/assets/KnowledgeSearchScreen-DJDGGaqC.js +1 -0
  64. package/dist/client/assets/LaneToolHoverCard-Bla0gBdm.js +1 -0
  65. package/dist/client/assets/LaneTraceDetailSheet-D1CspRbl.js +1 -0
  66. package/dist/client/assets/LaneTraceEventFocus-BF9ERP5O.js +1 -0
  67. package/dist/client/assets/MeshCanvas-DFEPkpqY.js +3 -0
  68. package/dist/client/assets/MeshCanvasMinimap-CyVFYixr.js +1 -0
  69. package/dist/client/assets/MeshCanvasMinimap-Dv7nMbl5.css +1 -0
  70. package/dist/client/assets/MeshScreen-DFgevn8N.js +1 -0
  71. package/dist/client/assets/MeshTopologyView-CalkZghg.js +2 -0
  72. package/dist/client/assets/MessageComposerSuggestions-DpxN9WiB.js +1 -0
  73. package/dist/client/assets/MessagesScreen-C8YKW10Y.js +1 -0
  74. package/dist/client/assets/MissionControlView-lUeAiSVg.js +1 -0
  75. package/dist/client/assets/MissionFocusOverlay-wlCmWDCT.js +1 -0
  76. package/dist/client/assets/MissionLeftAgentRow-BpZWntfl.js +1 -0
  77. package/dist/client/assets/MissionLogPane-__MVtEl9.js +1 -0
  78. package/dist/client/assets/NewAgentModal-Bg-eWHpY.js +1 -0
  79. package/dist/client/assets/NewAgentModal-ru8u5YdJ.css +1 -0
  80. package/dist/client/assets/NewChatComposer-Cs6OsxK6.js +19 -0
  81. package/dist/client/assets/NewChatComposer-W-t-L4oV.css +1 -0
  82. package/dist/client/assets/NewChatOrigin-Bk2OyVjI.js +1 -0
  83. package/dist/client/assets/ObserveEmbedScreen-y2EpuqRZ.js +2 -0
  84. package/dist/client/assets/ObserveTextFlow-rsFj_rVo.js +2 -0
  85. package/dist/client/assets/ObservedTopologyPanel-BsBsvVPL.css +1 -0
  86. package/dist/client/assets/ObservedTopologyPanel-DyUeV98H.js +2 -0
  87. package/dist/client/assets/OpenScoutAppShell-Bh6FnEJO.css +1 -0
  88. package/dist/client/assets/OpenScoutAppShell-C_URc8sV.js +87 -0
  89. package/dist/client/assets/OpsAgentsView-UN7iOscs.js +1 -0
  90. package/dist/client/assets/OpsScreen-Buf3LKjb.js +1 -0
  91. package/dist/client/assets/OpsSubnav-DsuXzHah.js +1 -0
  92. package/dist/client/assets/PlanView-C1CjH3PG.js +1 -0
  93. package/dist/client/assets/ProjectAgentProfile-DJusrAV-.js +1 -0
  94. package/dist/client/assets/ProjectAgentProfileBar-CtTpj6fU.js +1 -0
  95. package/dist/client/assets/ProjectAgentProfileHero-BFwNJo_N.js +1 -0
  96. package/dist/client/assets/ProjectsInbox-GhVMxOhw.js +2 -0
  97. package/dist/client/assets/ProjectsRail-BgiuV4LR.js +1 -0
  98. package/dist/client/assets/ProjectsScreen-eNUBy4YU.js +1 -0
  99. package/dist/client/assets/ProjectsThreadAside-CoBgnHmr.js +1 -0
  100. package/dist/client/assets/Provider-C7UKGHQy.js +1 -0
  101. package/dist/client/assets/Provider-CCzjtkda.css +1 -0
  102. package/dist/client/assets/RailRow-BoGxAHNF.js +1 -0
  103. package/dist/client/assets/RailRow-Cf9LOiEj.css +1 -0
  104. package/dist/client/assets/RawSessionsTable-DL8y_eEy.js +1 -0
  105. package/dist/client/assets/RealtimeVoiceScreen-ffS-39zy.js +1 -0
  106. package/dist/client/assets/RepoDiffEmbedScreen-C0rumUME.js +1 -0
  107. package/dist/client/assets/RepoDiffPageScreen-DMv6DioL.js +1 -0
  108. package/dist/client/assets/RepoDiffViewer-D_exm6xK.js +7 -0
  109. package/dist/client/assets/RepoDiffViewerLazy-BPgF92Bg.js +2 -0
  110. package/dist/client/assets/ReposScreen-CB_YBWYf.js +6 -0
  111. package/dist/client/assets/ScoutDeckSurface-CxIYFyWx.js +1 -0
  112. package/dist/client/assets/ScoutDeckSurface-uhmuZRzC.css +1 -0
  113. package/dist/client/assets/ScoutSurface-CYz_TcWC.js +1 -0
  114. package/dist/client/assets/ScoutbotBroadcastChip-CxtYZWPZ.css +1 -0
  115. package/dist/client/assets/ScoutbotBroadcastChip-L_R9atj0.js +2 -0
  116. package/dist/client/assets/ScoutbotFxLab-CgiZMDMW.js +4 -0
  117. package/dist/client/assets/ScoutbotRealtimeVoiceCall-FMQOr1Np.js +1 -0
  118. package/dist/client/assets/SecondaryNav-B3-nh5dM.js +1 -0
  119. package/dist/client/assets/SessionEmbedScreen-BVC7yvWF.js +1 -0
  120. package/dist/client/assets/SessionObserve-BpggNO_M.css +1 -0
  121. package/dist/client/assets/SessionObserve-yfXFafp8.js +12 -0
  122. package/dist/client/assets/SessionRefScreen-DRgJu7Jo.js +1 -0
  123. package/dist/client/assets/SessionsScreen-D6XUsZfA.js +1 -0
  124. package/dist/client/assets/SettingsDrawer-CmJt72ww.css +1 -0
  125. package/dist/client/assets/SettingsDrawer-XfdAa_nD.js +3 -0
  126. package/dist/client/assets/SettingsScreen-Cy8z-EuR.js +1 -0
  127. package/dist/client/assets/ShikiPane-Ap1iPxYb.js +15 -0
  128. package/dist/client/assets/SlidePanel-Bg5dVaIa.css +1 -0
  129. package/dist/client/assets/SlidePanel-COwtoJqR.js +1 -0
  130. package/dist/client/assets/SpriteAvatar-DyaGuhik.js +1 -0
  131. package/dist/client/assets/StatusPill-DhBL__p8.js +1 -0
  132. package/dist/client/assets/TailView-DGj_5HA9.js +2 -0
  133. package/dist/client/assets/TailView-Mj3AU2u0.css +1 -0
  134. package/dist/client/assets/Terminal-CqvGbjXU.js +1 -0
  135. package/dist/client/assets/TerminalEmbedScreen-DuZZFFzW.js +1 -0
  136. package/dist/client/assets/TextDocumentSurface-BpAw4eQS.js +4 -0
  137. package/dist/client/assets/TmuxPeek-m1osv33Q.js +1 -0
  138. package/dist/client/assets/VoicePermissionsPanel-DsK53ar4.js +1 -0
  139. package/dist/client/assets/VoicePermissionsPanel-RijAZ1gP.css +1 -0
  140. package/dist/client/assets/WorkDetailScreen-Bx0JimPC.js +5 -0
  141. package/dist/client/assets/WorkFilesViewer-Btl6C2Q1.js +1 -0
  142. package/dist/client/assets/activity-CA8qS6PI.js +1 -0
  143. package/dist/client/assets/{addon-fit-3IrvLm2n.js → addon-fit-BZ-kXjeN.js} +1 -1
  144. package/dist/client/assets/{addon-webgl-BgxIDUI-.js → addon-webgl-D9-EQVEK.js} +1 -1
  145. package/dist/client/assets/agent-chat-Bfjd9y6c.js +1 -0
  146. package/dist/client/assets/agent-definitions-CymTYqvo.css +1 -0
  147. package/dist/client/assets/agent-directory-studio-injection-Bc8590z5.css +1 -0
  148. package/dist/client/assets/agent-essentials-BSY1o46q.js +1 -0
  149. package/dist/client/assets/agent-floor-CuJr1iK1.css +1 -0
  150. package/dist/client/assets/agent-lane-card-Dm7YWoew.css +1 -0
  151. package/dist/client/assets/agent-lane-card-model-r2frk57c.js +1 -0
  152. package/dist/client/assets/agent-lane-detail-Djm3YJEa.js +1 -0
  153. package/dist/client/assets/agent-lane-preview-CmHVe3dU.js +4 -0
  154. package/dist/client/assets/agent-lanes-BDNktFBZ.css +1 -0
  155. package/dist/client/assets/agent-lanes-model-B4YTt4OF.js +2 -0
  156. package/dist/client/assets/agents-detail-redesign-h34ROjOW.css +1 -0
  157. package/dist/client/assets/agents-project-COzHxZAF.css +1 -0
  158. package/dist/client/assets/agents-project-model-UYiamtrU.js +1 -0
  159. package/dist/client/assets/agents-screen-BMu6PpRY.css +1 -0
  160. package/dist/client/assets/api-BkjHJfgJ.js +1 -0
  161. package/dist/client/assets/api-h5zurxmi.js +1 -0
  162. package/dist/client/assets/{arc.es-Bh8P_xre.js → arc.es-CQBb-dVu.js} +1 -1
  163. package/dist/client/assets/arrow-down-BPLe0am9.js +1 -0
  164. package/dist/client/assets/arrow-left-DEZzHiPS.js +1 -0
  165. package/dist/client/assets/arrow-up-right-ClxBnsi7.js +1 -0
  166. package/dist/client/assets/bash-format-BRV5C6Gv.js +1 -0
  167. package/dist/client/assets/bot-eu8pBNvI.js +1 -0
  168. package/dist/client/assets/briefings-BwuAFQK6.css +1 -0
  169. package/dist/client/assets/broker-display-pp33bLsu.js +2 -0
  170. package/dist/client/assets/cache-Dr0why2k.js +2 -0
  171. package/dist/client/assets/check-DjgFiBxb.js +1 -0
  172. package/dist/client/assets/chevron-down-BGk5qoEw.js +1 -0
  173. package/dist/client/assets/chevron-right-XiIHsk4m.js +1 -0
  174. package/dist/client/assets/chunk-T65CQEWV-CrzwSeEt.js +1 -0
  175. package/dist/client/assets/chunk-YOZR3KYS-Bet8khjg.js +47 -0
  176. package/dist/client/assets/clipboard-e3fSpeo7.js +1 -0
  177. package/dist/client/assets/code-screen-DrKinCyh.css +1 -0
  178. package/dist/client/assets/code-xml-B6jOCM4V.js +1 -0
  179. package/dist/client/assets/collapsed-strip-Dz-of2SM.css +1 -0
  180. package/dist/client/assets/colors-BtO5_zlx.js +1 -0
  181. package/dist/client/assets/console-B1IBqLI_.css +1 -0
  182. package/dist/client/assets/content-BDt9VBPk.js +1 -0
  183. package/dist/client/assets/content-BIXf4cKR.js +1 -0
  184. package/dist/client/assets/content-BLm0NBJM.js +1 -0
  185. package/dist/client/assets/content-C2EwTb2y.js +1 -0
  186. package/dist/client/assets/content-C5UbLsDF.js +1 -0
  187. package/dist/client/assets/content-CHU0wwA3.css +1 -0
  188. package/dist/client/assets/content-CR3vdrYY.js +1 -0
  189. package/dist/client/assets/content-CSPVmo2s.js +1 -0
  190. package/dist/client/assets/content-C_FGqx1X.js +1 -0
  191. package/dist/client/assets/content-CvlVUOG8.js +1 -0
  192. package/dist/client/assets/content-D5kJmfgl.js +1 -0
  193. package/dist/client/assets/content-DTpQsomG.js +1 -0
  194. package/dist/client/assets/content-DikVsqLf.js +1 -0
  195. package/dist/client/assets/content-DlUe5Ono.js +1 -0
  196. package/dist/client/assets/content-GIBv_55n.js +1 -0
  197. package/dist/client/assets/content-Q2oclDzi.js +1 -0
  198. package/dist/client/assets/context-budget-CbB4BDcO.js +1 -0
  199. package/dist/client/assets/conversation-icons-IIG5ha6D.js +1 -0
  200. package/dist/client/assets/conversation-model-B47vYmWN.js +1 -0
  201. package/dist/client/assets/conversation-motion-features-BdAONVls.js +1 -0
  202. package/dist/client/assets/conversation-prefs-DNre-Lcx.js +1 -0
  203. package/dist/client/assets/copy-CQGYbxdu.js +1 -0
  204. package/dist/client/assets/createLucideIcon-OpA4Amw5.js +1 -0
  205. package/dist/client/assets/ctx-panel-B4s49N9e.css +1 -0
  206. package/dist/client/assets/discover-C1YwpBDE.js +2 -0
  207. package/dist/client/assets/document-focus-viewer-BSC_JwVE.css +1 -0
  208. package/dist/client/assets/embed-entry-BAcGL3g9.js +2 -0
  209. package/dist/client/assets/external-link-CXBytO9o.js +1 -0
  210. package/dist/client/assets/eye-0PvebX_a.js +1 -0
  211. package/dist/client/assets/file-text-BODxCjcz.js +1 -0
  212. package/dist/client/assets/flight-observe-GFg9L8ft.css +1 -0
  213. package/dist/client/assets/follow-route-BvcGtBIL.js +1 -0
  214. package/dist/client/assets/fx-z37u1o2z.js +1 -0
  215. package/dist/client/assets/gestures-CcwOTu8C.js +1 -0
  216. package/dist/client/assets/harnesses-screen-DBZoTZz8.css +1 -0
  217. package/dist/client/assets/home-live-action-B22u89j7.js +1 -0
  218. package/dist/client/assets/home-moving-signal-CAa0V91u.css +1 -0
  219. package/dist/client/assets/home-moving-signal-CK147hxn.js +1 -0
  220. package/dist/client/assets/home-now-card-BgvNWuea.js +1 -0
  221. package/dist/client/assets/home-now-card-nano-BcjnOU9H.js +1 -0
  222. package/dist/client/assets/hooks-B6y_O2FB.js +2 -0
  223. package/dist/client/assets/hooks-D6NI15f6.css +1 -0
  224. package/dist/client/assets/inbox-thread-redesign-Bz4FjWzr.css +1 -0
  225. package/dist/client/assets/index-BWHgHrtv.js +1 -0
  226. package/dist/client/assets/index-BcuhqXLe.js +1 -0
  227. package/dist/client/assets/index-CJXzfjo9.js +1 -0
  228. package/dist/client/assets/index-CvF09yvf.css +1 -0
  229. package/dist/client/assets/index-DMiGbrBt.js +10 -0
  230. package/dist/client/assets/index-DQPvraRS.js +1 -0
  231. package/dist/client/assets/index-DxGoC5l5.css +1 -0
  232. package/dist/client/assets/inspector-panel-DPoCWxKs.js +2 -0
  233. package/dist/client/assets/keyboard-nav-2kv_tGUS.js +1 -0
  234. package/dist/client/assets/knowledge-search-CVxQwxPn.js +1 -0
  235. package/dist/client/assets/knowledge-search-DjrQdiiW.css +1 -0
  236. package/dist/client/assets/lane-ask-display-B6iCAVcd.js +18 -0
  237. package/dist/client/assets/lane-edit-display-C_Aujldz.js +9 -0
  238. package/dist/client/assets/lane-observe-D0rfKDnU.js +7 -0
  239. package/dist/client/assets/lane-roster-store-D8x1jac2.js +1 -0
  240. package/dist/client/assets/lane-tool-detail-0WhMf4Vj.js +9 -0
  241. package/dist/client/assets/left-Bk3XnxPD.css +1 -0
  242. package/dist/client/assets/left-C--GiIh8.js +2 -0
  243. package/dist/client/assets/left-CAaRBK9S.css +1 -0
  244. package/dist/client/assets/left-CCoobxPS.css +1 -0
  245. package/dist/client/assets/left-Cj7Rt89X.js +1 -0
  246. package/dist/client/assets/left-CpNEtFEg.js +1 -0
  247. package/dist/client/assets/left-CzXAuK_t.js +2 -0
  248. package/dist/client/assets/left-agents-Bo9sO1by.js +1 -0
  249. package/dist/client/assets/left-bN4PCAXa.js +1 -0
  250. package/dist/client/assets/left-default-DV9GdvYi.js +1 -0
  251. package/dist/client/assets/left-jYYGAOYD.js +1 -0
  252. package/dist/client/assets/left-lanes-D0l_Co7V.js +1 -0
  253. package/dist/client/assets/left-mission-Ci7zREkQ.js +1 -0
  254. package/dist/client/assets/left-mission-DSenPIyb.css +1 -0
  255. package/dist/client/assets/left-plan-D4U1uflW.js +2 -0
  256. package/dist/client/assets/library-D-RxGiCw.js +1 -0
  257. package/dist/client/assets/loader-circle-CbHjZsz1.js +1 -0
  258. package/dist/client/assets/local-agents--00gLMqr.js +1 -0
  259. package/dist/client/assets/mentions-jSuTGeet.js +1 -0
  260. package/dist/client/assets/mesh-buckets-CfAukILK.js +1 -0
  261. package/dist/client/assets/mesh-screen-BSDUjrnV.css +1 -0
  262. package/dist/client/assets/mesh-view-store-CWidRbTE.js +1 -0
  263. package/dist/client/assets/message-circle-CG-96zts.js +1 -0
  264. package/dist/client/assets/message-markup-3J9pi3nx.js +15 -0
  265. package/dist/client/assets/message-square-DSaGpjFU.js +1 -0
  266. package/dist/client/assets/message-visibility-kJM8XcSG.js +1 -0
  267. package/dist/client/assets/mission-control-D3ikEPND.css +1 -0
  268. package/dist/client/assets/mission-control-model-C0fByIjm.js +1 -0
  269. package/dist/client/assets/mission-control-store-BlnEhiCq.js +1 -0
  270. package/dist/client/assets/model-Co0zkMIc.js +1 -0
  271. package/dist/client/assets/model-CpAxGuis.js +1 -0
  272. package/dist/client/assets/observe-CuLGD9Zp.js +1 -0
  273. package/dist/client/assets/openAgent-Bjt57GdM.js +1 -0
  274. package/dist/client/assets/openContent-C6XO6kr5.js +1 -0
  275. package/dist/client/assets/operator-attention-BwSPeheT.js +1 -0
  276. package/dist/client/assets/ops-agents-BOYxzPTm.css +1 -0
  277. package/dist/client/assets/ops-atop-BB4B4JdE.css +1 -0
  278. package/dist/client/assets/ops-screen-giu3If_N.css +1 -0
  279. package/dist/client/assets/page-status-DpkedE1F.js +1 -0
  280. package/dist/client/assets/page-status-bar-ByUD7VPM.css +1 -0
  281. package/dist/client/assets/plan-view-D56fneVF.css +1 -0
  282. package/dist/client/assets/plus--b1raV_O.js +1 -0
  283. package/dist/client/assets/profile-CVRziEDA.js +1 -0
  284. package/dist/client/assets/project-overview-helpers-BQTc_Ous.js +1 -0
  285. package/dist/client/assets/projects-inbox-CHyUFQ6w.js +1 -0
  286. package/dist/client/assets/projects-inbox-COZ23dLR.css +1 -0
  287. package/dist/client/assets/radio-Bz8ZePxj.js +1 -0
  288. package/dist/client/assets/refresh-cw-BBmAnCB7.js +1 -0
  289. package/dist/client/assets/repo-diff-C9Qs-bEn.css +1 -0
  290. package/dist/client/assets/resizable-columns-C7ygvLt8.css +1 -0
  291. package/dist/client/assets/resolve-panes-r9B3mpW7.js +1 -0
  292. package/dist/client/assets/resolve-sidebar-context-DcG8xGaB.js +1 -0
  293. package/dist/client/assets/right-BHeiIaty.js +1 -0
  294. package/dist/client/assets/right-BkgKo9VT.js +1 -0
  295. package/dist/client/assets/right-BpEU5jWE.js +1 -0
  296. package/dist/client/assets/right-CRZXoy-X.js +1 -0
  297. package/dist/client/assets/right-ChF_pbPy.js +1 -0
  298. package/dist/client/assets/right-DMoUT3KN.js +1 -0
  299. package/dist/client/assets/right-DjRXbnRP.js +2 -0
  300. package/dist/client/assets/right-T4Ue6EqM.js +1 -0
  301. package/dist/client/assets/right-wzrLXKur.js +1 -0
  302. package/dist/client/assets/rocket-BSNS_rLs.js +1 -0
  303. package/dist/client/assets/router-Bq5dwf78.js +1 -0
  304. package/dist/client/assets/runtime-picker-Bcl5iIX5.js +1 -0
  305. package/dist/client/assets/runtime-picker-vhm0gtLs.css +1 -0
  306. package/dist/client/assets/scope-views-4khCg2_z.css +1 -0
  307. package/dist/client/assets/scope-views-U-ucT9m0.js +1 -0
  308. package/dist/client/assets/scout-voice-CU5c0LGi.js +1 -0
  309. package/dist/client/assets/scoutbot-BTIErYHo.js +3 -0
  310. package/dist/client/assets/scroll-text-D6Pdnar7.js +1 -0
  311. package/dist/client/assets/search-CWfZtOt2.js +1 -0
  312. package/dist/client/assets/secondaryNavConfig-DqUIp0Es.js +1 -0
  313. package/dist/client/assets/secondaryNavConfig-xssF_ubT.css +1 -0
  314. package/dist/client/assets/selection-bridge-16pk1qyG.js +1 -0
  315. package/dist/client/assets/send-horizontal-Bg5-QggH.js +1 -0
  316. package/dist/client/assets/server-CPp4ZJhZ.js +1 -0
  317. package/dist/client/assets/session-catalog-BmoyVTJ_.js +1 -0
  318. package/dist/client/assets/session-table-DZcrKoIH.js +1 -0
  319. package/dist/client/assets/sessionRead-CvFz2RHv.js +1 -0
  320. package/dist/client/assets/sliders-horizontal-1oW76Xc9.js +1 -0
  321. package/dist/client/assets/sparkles-ClfRJQ6w.js +1 -0
  322. package/dist/client/assets/sse-CjIkKo46.js +1 -0
  323. package/dist/client/assets/status-tone-BM_zuRy1.js +1 -0
  324. package/dist/client/assets/surface-activity-B1rgWB1i.js +1 -0
  325. package/dist/client/assets/system-surfaces-redesign-CD26LFc0.css +1 -0
  326. package/dist/client/assets/tail-display-BdyoLvzY.js +2 -0
  327. package/dist/client/assets/tail-events-D19uAGe3.js +1 -0
  328. package/dist/client/assets/terminal-B9AOZQKR.js +1 -0
  329. package/dist/client/assets/terminal-relay-CWbJ1RCW.js +1 -0
  330. package/dist/client/assets/terminal-screen-19jAI0Cw.css +1 -0
  331. package/dist/client/assets/terminal-sessions-D5CIR2OL.js +1 -0
  332. package/dist/client/assets/terminal-takeover-B8UeD9OX.js +1 -0
  333. package/dist/client/assets/text-DsBWV_4k.js +1 -0
  334. package/dist/client/assets/time-DltNTpLl.js +1 -0
  335. package/dist/client/assets/types-B0PlfpKc.js +1 -0
  336. package/dist/client/assets/ui-LM8pS8qE.js +1 -0
  337. package/dist/client/assets/use-conversation-list-Byab41G6.js +1 -0
  338. package/dist/client/assets/use-fleet-active-asks-BIbQx5AS.js +1 -0
  339. package/dist/client/assets/use-reduced-motion-RRBkmVkk.js +1 -0
  340. package/dist/client/assets/useAgentHoverCard-DMrbBif0.js +1 -0
  341. package/dist/client/assets/useContentSecondaryNav-DMl1WNm7.js +1 -0
  342. package/dist/client/assets/usePierreRuntime-wC-yMtBb.js +50 -0
  343. package/dist/client/assets/voice-levels-Dcr3jglk.js +1 -0
  344. package/dist/client/assets/wrench-Bkc_0lKF.js +1 -0
  345. package/dist/client/assets/x-D3GElQbe.js +1 -0
  346. package/dist/client/assets/{xterm-CoGJTxj9.js → xterm-BKR8oAkR.js} +1 -1
  347. package/dist/client/index.html +6 -3
  348. package/dist/drizzle/0003_harsh_meltdown.sql +45 -0
  349. package/dist/drizzle/0004_medical_aaron_stack.sql +40 -0
  350. package/dist/drizzle/0005_wet_shriek.sql +57 -0
  351. package/dist/drizzle/0006_woozy_dark_beast.sql +1 -0
  352. package/dist/drizzle/README.md +7 -0
  353. package/dist/drizzle/meta/0003_snapshot.json +4952 -0
  354. package/dist/drizzle/meta/0004_snapshot.json +5235 -0
  355. package/dist/drizzle/meta/0005_snapshot.json +5599 -0
  356. package/dist/drizzle/meta/0006_snapshot.json +5606 -0
  357. package/dist/drizzle/meta/_journal.json +28 -0
  358. package/dist/main.mjs +24964 -12946
  359. package/dist/node/main.mjs +10212 -195
  360. package/dist/openscout-terminal-relay.mjs +507 -64
  361. package/dist/pairing-runtime-controller.mjs +10909 -5177
  362. package/dist/runtime/base-daemon.mjs +627 -159
  363. package/dist/runtime/broker-daemon.mjs +65060 -30990
  364. package/dist/runtime/broker-process-manager.mjs +247 -54
  365. package/dist/runtime/mesh-discover.mjs +246 -54
  366. package/dist/scout-control-plane-web.mjs +54699 -45309
  367. package/dist/scout-web-server.mjs +54699 -45309
  368. package/package.json +3 -3
  369. package/dist/client/assets/RepoDiffViewer-CTXJvjIL.js +0 -56
  370. package/dist/client/assets/embed-entry-wAEtYUEM.js +0 -1
  371. package/dist/client/assets/index-BK3mRYyN.js +0 -272
  372. package/dist/client/assets/index-Dm1ZQS9G.css +0 -1
@@ -0,0 +1,3 @@
1
+ import{r as x,j as s}from"./index-DMiGbrBt.js";import{C as me}from"./chunk-T65CQEWV-CrzwSeEt.js";import{u as te,t as de,b as pe,c as ue}from"./mesh-view-store-CWidRbTE.js";import{n as T,s as B}from"./colors-BtO5_zlx.js";import{t as Q}from"./time-DltNTpLl.js";import{u as fe}from"./Provider-C7UKGHQy.js";import{u as xe}from"./useAgentHoverCard-DMrbBif0.js";import{b as ye}from"./mesh-buckets-CfAukILK.js";import"./plus--b1raV_O.js";import"./createLucideIcon-OpA4Amw5.js";import"./router-Bq5dwf78.js";import"./terminal-sessions-D5CIR2OL.js";import"./api-h5zurxmi.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./openContent-C6XO6kr5.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";function ge(e,t){if(t.type==="pan")return{...e,pan:{x:e.pan.x+t.delta.x,y:e.pan.y+t.delta.y}};if(t.type==="zoom"){const n=Math.max(.25,Math.min(4,e.scale*t.factor)),{mx:i,my:h,cx:c,cy:f}=t,m=(i-c)/e.scale-e.pan.x,d=(h-f)/e.scale-e.pan.y;return{scale:n,pan:{x:(i-c)/n-m,y:(h-f)/n-d}}}return e}const ce="openscout.mesh.canvas.viewport.v1";function we(){const e={pan:{x:0,y:0},scale:1};if(typeof window>"u")return e;try{const t=window.sessionStorage.getItem(ce);if(!t)return e;const n=JSON.parse(t);if(n&&typeof n=="object"&&typeof n.scale=="number"&&n.pan&&typeof n.pan.x=="number"&&typeof n.pan.y=="number")return{pan:{x:n.pan.x,y:n.pan.y},scale:n.scale}}catch{}return e}function ve(e){const t=e.name&&e.name.trim()||e.handle&&e.handle.trim()||e.harness&&e.harness.trim()||"agent";return{key:t.toLowerCase(),label:t}}function be(e){const t=new Map;for(const n of e){const{key:i,label:h}=ve(n);let c=t.get(i);c||(c={key:i,label:h,instances:[]},t.set(i,c)),c.instances.push(n)}return Array.from(t.values()).map(n=>(n.instances.sort((i,h)=>i.id.localeCompare(h.id)),n)).sort((n,i)=>{const h=n.label.localeCompare(i.label);return h!==0?h:i.instances.length-n.instances.length})}function je(e){switch(e){case"compact":return{density:e,instanceW:138,instanceH:32,stepX:144,stepY:38,clusterPadX:12,clusterPadY:12,labelH:22,clusterGap:16};case"spacious":return{density:e,instanceW:260,instanceH:68,stepX:268,stepY:76,clusterPadX:14,clusterPadY:14,labelH:26,clusterGap:16};default:return{density:"comfortable",instanceW:210,instanceH:52,stepX:218,stepY:60,clusterPadX:12,clusterPadY:12,labelH:24,clusterGap:14}}}function Ne(e,t){return Math.max(1,Math.round(Math.sqrt(e*t)))}function Ce(e,t,n){if(e.length===0)return[];const i=e.map(l=>{const H=l.instances.length,b=Ne(H,Math.max(.6,Math.min(n,2))),I=Math.ceil(H/b),N=b*t.stepX-(t.stepX-t.instanceW),A=I*t.stepY-(t.stepY-t.instanceH);return{cluster:l,cols:b,width:N+t.clusterPadX*2,height:A+t.clusterPadY*2+t.labelH}}),h=i.reduce((l,H)=>l+H.width*H.height,0),c=Math.max(Math.max(...i.map(l=>l.width)),Math.sqrt(h*n)),f=t.clusterGap,m=[];let d=0,j=0,v=0;for(const l of i)d>0&&d+l.width>c&&(j+=v+f,d=0,v=0),m.push({cluster:l.cluster,x:d,y:j,width:l.width,height:l.height,cols:l.cols}),d+=l.width+f,v=Math.max(v,l.height);const p=Math.min(...m.map(l=>l.x)),u=Math.max(...m.map(l=>l.x+l.width)),M=Math.min(...m.map(l=>l.y)),C=Math.max(...m.map(l=>l.y+l.height)),r=-((p+u)/2),g=-((M+C)/2);return m.map(l=>({...l,x:l.x+r,y:l.y+g}))}function Me(e,t,n){const i=e%t,h=Math.floor(e/t);return{x:n.clusterPadX+i*n.stepX,y:n.labelH+n.clusterPadY+h*n.stepY}}function Z(e){const t=e.harness?.trim(),n=e.model?.trim();return t&&n?`${t}/${n}`:t||n||"—"}function ee(e){const t=e.project?.trim(),n=e.branch?.trim();return t&&n?`${t}/${n}`:t||n||"—"}function D(e){return e.cwd||e.projectRoot||"—"}function se({onClick:e}){return s.jsx("button",{type:"button",className:"mesh-sheet-open",title:"Open agent view","aria-label":"Open agent view",onClick:t=>{t.stopPropagation(),e()},children:"↗"})}function Ie({agent:e,onOpen:t,bindings:n,active:i}){const h=T(e.state),c=e.agentClass==="organic",f=e.updatedAt?Q(e.updatedAt):"",m=Z(e),d=ee(e);return s.jsxs("div",{...n??{},className:`mesh-instance-spec mesh-instance-spec--${h}${c?" mesh-instance-spec--organic":""}${i?" mesh-instance--active":""}`,style:{"--state-stripe":B(e.state)},title:`${m} — ${d}`,children:[s.jsxs("span",{className:"mesh-instance-spec-row",children:[s.jsx("span",{className:"mesh-instance-spec-primary",children:m}),f&&s.jsx("span",{className:"mesh-instance-spec-time",children:f})]}),s.jsxs("span",{className:"mesh-instance-spec-row",children:[s.jsx("span",{className:"mesh-instance-spec-secondary",children:d}),s.jsx(se,{onClick:t})]})]})}function He({agent:e,onOpen:t,bindings:n,active:i}){const h=T(e.state),c=e.agentClass==="organic",f=e.updatedAt?Q(e.updatedAt):"—",m=`${Z(e)} · ${ee(e)}`;return s.jsxs("div",{...n??{},className:`mesh-instance-sheet mesh-instance-sheet--${h}${c?" mesh-instance-sheet--organic":""}${i?" mesh-instance--active":""}`,style:{"--state-stripe":B(e.state)},title:`${m}
2
+ ${D(e)}`,children:[s.jsxs("span",{className:"mesh-sheet-line mesh-sheet-line--head",children:[s.jsx("span",{className:"mesh-sheet-id",children:m}),s.jsx("span",{className:"mesh-sheet-time",children:f}),s.jsx(se,{onClick:t})]}),s.jsxs("span",{className:"mesh-sheet-line",children:[s.jsx("span",{className:"mesh-sheet-path",children:D(e)}),s.jsxs("span",{className:"mesh-sheet-ctx",children:[s.jsx("span",{className:"mesh-sheet-ctx-label",children:"CTX"})," —"]})]})]})}function $e({agent:e,onOpen:t,bindings:n,active:i}){const h=T(e.state),c=e.agentClass==="organic",f=e.updatedAt?Q(e.updatedAt):"—",m=`${Z(e)} · ${ee(e)}`,d=e.agentClass?.trim();return s.jsxs("div",{...n??{},className:`mesh-instance-sheet mesh-instance-sheet--spacious mesh-instance-sheet--${h}${c?" mesh-instance-sheet--organic":""}${i?" mesh-instance--active":""}`,style:{"--state-stripe":B(e.state)},title:`${m}
3
+ ${D(e)}`,children:[s.jsxs("span",{className:"mesh-sheet-line mesh-sheet-line--head",children:[s.jsx("span",{className:"mesh-sheet-id",children:m}),s.jsx("span",{className:"mesh-sheet-time",children:f}),s.jsx(se,{onClick:t})]}),s.jsx("span",{className:"mesh-sheet-line",children:s.jsx("span",{className:"mesh-sheet-path",children:D(e)})}),s.jsxs("span",{className:"mesh-sheet-line",children:[s.jsxs("span",{className:"mesh-sheet-ctx",children:[s.jsx("span",{className:"mesh-sheet-ctx-label",children:"CTX"})," —"]}),d&&s.jsx("span",{className:"mesh-sheet-tag",children:d})]})]})}function Ee({layout:e,metrics:t,onAgentOpen:n,bindFor:i,activeId:h}){const{cluster:c,x:f,y:m,width:d,height:j,cols:v}=e,p=x.useMemo(()=>{const u={working:0,ready:0,notReady:0};for(const M of c.instances){const C=T(M.state);C==="in_turn"||C==="in_flight"?u.working+=1:C==="callable"?u.ready+=1:u.notReady+=1}return u},[c.instances]);return s.jsxs("div",{className:"mesh-cluster",style:{position:"absolute",left:f,top:m,width:d,height:j},children:[s.jsxs("div",{className:"mesh-cluster-header",style:{height:t.labelH},children:[s.jsx("span",{className:"mesh-cluster-name",children:c.label}),s.jsx("span",{className:"mesh-cluster-count",children:c.instances.length}),s.jsxs("span",{className:"mesh-cluster-states",children:[p.working>0&&s.jsxs("span",{className:"mesh-cluster-state mesh-cluster-state--working",children:[s.jsx("span",{className:"mesh-cluster-state-dot"}),p.working]}),p.ready>0&&s.jsxs("span",{className:"mesh-cluster-state mesh-cluster-state--available",children:[s.jsx("span",{className:"mesh-cluster-state-dot"}),p.ready]}),p.notReady>0&&s.jsxs("span",{className:"mesh-cluster-state mesh-cluster-state--offline",children:[s.jsx("span",{className:"mesh-cluster-state-dot"}),p.notReady]})]})]}),c.instances.map((u,M)=>{const C=Me(M,v,t);return s.jsx("div",{style:{position:"absolute",left:C.x,top:C.y,width:t.instanceW,height:t.instanceH},children:t.density==="compact"?s.jsx(Ie,{agent:u,onOpen:()=>n(u),bindings:i(u.id),active:h===u.id}):t.density==="spacious"?s.jsx($e,{agent:u,onOpen:()=>n(u),bindings:i(u.id),active:h===u.id}):s.jsx(He,{agent:u,onOpen:()=>n(u),bindings:i(u.id),active:h===u.id})},u.id)})]})}const U=34,re=22,Se=6,ne=28,ae=10,F=12,ie=380,Ae=240,J=38;function _e(e,t,n,i,h,c){const f=[],m=[],d=[];for(const r of e)i[r.machineId]?d.push(r):m.push(r);let j=0,v=ie;const p=(r,g)=>{const H=t.has(r.machineId)||!r.online,b=n.has(r.machineId);let I=0,N=0,A=0;for(const L of r.agents){const S=T(L.state);S==="in_turn"||S==="in_flight"?I+=1:S==="callable"?N+=1:A+=1}const G=r.online?I>0?"working":N>0?"available":"offline":"offline";if(H)return{machineId:r.machineId,machineLabel:r.machineLabel,reachability:r.reachability,online:r.online,agentCount:r.agents.length,workingCount:I,availableCount:N,offlineCount:A,dominantState:G,host:r.host,collapsed:!1,ghost:!0,pinned:g,x:0,y:0,width:Ae,height:J,headerHeight:J,chromeHeight:J,layouts:[]};const Y=b?[]:be(r.agents),E=b?[]:Ce(Y,h,c),z=b?ke():0,O=b?oe+z*re+Se:0,X=U+O;let k=0,P=0;if(!b&&E.length>0){const L=Math.min(...E.map(o=>o.x)),S=Math.max(...E.map(o=>o.x+o.width)),_=Math.min(...E.map(o=>o.y)),q=Math.max(...E.map(o=>o.y+o.height));k=S-L,P=q-_;const K=-L+F,a=-_+X+ae;for(const o of E)o.x+=K,o.y+=a}const R=Math.max(ie,k+F*2),V=b?X:X+ae+P+F;return{machineId:r.machineId,machineLabel:r.machineLabel,reachability:r.reachability,online:r.online,agentCount:r.agents.length,workingCount:I,availableCount:N,offlineCount:A,dominantState:G,host:r.host,collapsed:b,ghost:!1,pinned:g,x:0,y:0,width:R,height:V,headerHeight:U,chromeHeight:X,layouts:E}};for(const r of m){const g=p(r,!1);g.x=0,g.y=j,f.push(g),v=Math.max(v,g.width),j+=g.height+ne}const u=Math.max(0,j-ne),M=-v/2,C=-u/2;for(const r of f)r.ghost||(r.width=v),r.x=M,r.y+=C;for(const r of d){const g=p(r,!0),l=i[r.machineId];g.x=l.x,g.y=l.y,f.push(g)}return f}function Ye({section:e,metrics:t,onAgentOpen:n,bindFor:i,activeId:h,onHeaderPointerDown:c,onHeaderClick:f,onGhostActivate:m}){const d=e.reachability==="this"?"this node":e.reachability==="peer"?"peer":e.reachability==="tailnet"?"tailnet":"",j=e.online?e.agentCount===0?"idle":"standby":"unreachable";if(e.ghost)return s.jsx("div",{"data-machine-id":e.machineId,className:"mesh-machine-ghost",style:{position:"absolute",left:e.x,top:e.y,width:e.width,height:e.height,pointerEvents:"all"},title:`${e.machineLabel} · ${j} — click to show`,children:s.jsxs("button",{type:"button",className:"mesh-machine-ghost-body",onPointerDown:p=>c(p,e),onClick:()=>m(e.machineId),children:[s.jsx("span",{className:"mesh-machine-ghost-led","aria-hidden":!0}),s.jsx("span",{className:"mesh-machine-ghost-name",children:e.machineLabel}),s.jsx("span",{className:"mesh-machine-ghost-stamp",children:j}),d&&s.jsx("span",{className:`mesh-machine-chip mesh-machine-chip--${e.reachability} mesh-machine-chip--ghost`,children:d}),s.jsxs("span",{className:"mesh-machine-ghost-counts",children:[s.jsx("span",{className:"mesh-machine-count",children:e.agentCount}),e.workingCount>0&&s.jsxs("span",{className:"mesh-machine-count mesh-machine-count--working",children:[e.workingCount,"W"]})]})]})});const v=e.collapsed?Oe(e):[];return s.jsxs("div",{"data-machine-id":e.machineId,className:`mesh-machine-section${e.collapsed?" mesh-machine-section--collapsed":""}${e.pinned?" mesh-machine-section--pinned":""}`,style:{position:"absolute",left:e.x,top:e.y,width:e.width,height:e.height,pointerEvents:"all"},children:[s.jsxs("button",{type:"button",className:"mesh-machine-header",style:{height:e.headerHeight},onPointerDown:p=>c(p,e),onClick:()=>f(e.machineId),"aria-expanded":!e.collapsed,children:[s.jsx("span",{className:`mesh-machine-led mesh-machine-led--${e.dominantState}`,style:{color:B(e.dominantState)},"aria-hidden":!0}),s.jsx("span",{className:"mesh-machine-caret","aria-hidden":!0,children:e.collapsed?"▸":"▾"}),s.jsx("span",{className:"mesh-machine-grip","aria-hidden":!0,children:"⠿"}),s.jsx("span",{className:"mesh-machine-name",children:e.machineLabel}),d&&s.jsx("span",{className:`mesh-machine-chip mesh-machine-chip--${e.reachability}`,children:d})]}),e.collapsed&&s.jsxs("div",{className:"mesh-machine-spec",children:[s.jsxs("div",{className:"mesh-machine-state-strip",style:{height:oe},children:[s.jsxs("div",{className:"mesh-machine-state-cell mesh-machine-state-cell--working",children:[s.jsx("span",{className:"mesh-machine-state-num",children:e.workingCount}),s.jsx("span",{className:"mesh-machine-state-label",children:"working"})]}),s.jsxs("div",{className:"mesh-machine-state-cell",children:[s.jsx("span",{className:"mesh-machine-state-num",children:e.availableCount}),s.jsx("span",{className:"mesh-machine-state-label",children:"ready"})]}),s.jsxs("div",{className:"mesh-machine-state-cell",children:[s.jsx("span",{className:"mesh-machine-state-num",children:e.agentCount}),s.jsx("span",{className:"mesh-machine-state-label",children:"total"})]})]}),v.map(p=>s.jsxs("div",{className:"mesh-machine-spec-row",style:{height:re},children:[s.jsx("span",{className:"mesh-machine-spec-label",children:p.label}),s.jsx("span",{className:"mesh-machine-spec-value",title:p.value,children:p.value})]},p.label))]}),!e.collapsed&&e.layouts.map(p=>s.jsx(Ee,{layout:p,metrics:t,onAgentOpen:n,bindFor:i,activeId:h},p.cluster.key))]})}function Oe(e){const t=e.host;return[{label:"os",value:t?.os??"—"},{label:"arch",value:t?.arch??"—"},{label:"cpu",value:t?.cpuCores?`${t.cpuCores}c`:"—"},{label:"ram",value:t?.memoryGb?`${t.memoryGb} G`:"—"},{label:"disk",value:t?.storageCapacityGb?`${t.storageCapacityGb} G`:"—"},{label:"network",value:t?.network??"—"},{label:"scout",value:t?.scoutVersion?`v${t.scoutVersion}`:"—"}]}const Xe=7,oe=54;function ke(e,t,n,i){return Xe}function _s({mesh:e,agents:t=[]}){const n=x.useRef(null),[i,h]=x.useState({w:0,h:0}),[c,f]=x.useReducer(ge,void 0,we);x.useEffect(()=>{if(!(typeof window>"u"))try{window.sessionStorage.setItem(ce,JSON.stringify({pan:c.pan,scale:c.scale}))}catch{}},[c.pan,c.scale]);const{density:m,query:d,agentStateFilters:j,hiddenMachineIds:v,collapsedMachineIds:p,scrollTargetMachineId:u}=te(),{navigate:M}=fe();x.useLayoutEffect(()=>{const a=n.current;if(!a)return;const o=()=>h({w:a.clientWidth,h:a.clientHeight});o();const w=new ResizeObserver(o);return w.observe(a),()=>w.disconnect()},[]),x.useLayoutEffect(()=>{const a=n.current;if(!a)return;const o=w=>{w.preventDefault();const y=w.deltaY<0?1.12:1/1.12,$=a.getBoundingClientRect();f({type:"zoom",factor:y,mx:w.clientX-$.left,my:w.clientY-$.top,cx:$.width/2,cy:$.height/2})};return a.addEventListener("wheel",o,{passive:!1}),()=>a.removeEventListener("wheel",o)},[]);const{machinePositions:C}=te(),r=x.useMemo(()=>je(m),[m]),g=x.useMemo(()=>{const a=d.trim().toLowerCase();return t.filter(o=>{const y=T(o.state);return j.has(y)?a?`${o.name??""} ${o.handle??""} ${o.harness??""} ${o.project??""} ${o.branch??""}`.toLowerCase().includes(a):!0:!1})},[t,d,j]),l=x.useMemo(()=>ye(g,e),[g,e]),H=i.w>0&&i.h>0?i.w/i.h:1.6,b=x.useMemo(()=>_e(l,v,p,C,r,H),[l,v,p,C,r,H]),I=x.useRef(null),[N,A]=x.useState(null),G=x.useCallback((a,o)=>{if(a.button!==0)return;a.stopPropagation(),a.currentTarget.setPointerCapture(a.pointerId),I.current={machineId:o.machineId,startClientX:a.clientX,startClientY:a.clientY,startSectionX:o.x,startSectionY:o.y,pointerId:a.pointerId,moved:!1}},[]);x.useEffect(()=>{const a=w=>{const y=I.current;if(!y||w.pointerId!==y.pointerId)return;const $=w.clientX-y.startClientX,W=w.clientY-y.startClientY;if(!y.moved&&Math.hypot($,W)<4)return;y.moved=!0;const le=$/c.scale,he=W/c.scale;A({machineId:y.machineId,x:y.startSectionX+le,y:y.startSectionY+he})},o=w=>{const y=I.current;if(!(!y||w.pointerId!==y.pointerId)){if(I.current=null,y.moved){const $=(w.clientX-y.startClientX)/c.scale,W=(w.clientY-y.startClientY)/c.scale;ue(y.machineId,{x:y.startSectionX+$,y:y.startSectionY+W})}A(null)}};return window.addEventListener("pointermove",a),window.addEventListener("pointerup",o),window.addEventListener("pointercancel",o),()=>{window.removeEventListener("pointermove",a),window.removeEventListener("pointerup",o),window.removeEventListener("pointercancel",o)}},[c.scale]);const Y=x.useRef(!1);x.useEffect(()=>{if(N)Y.current=!0;else{const a=setTimeout(()=>{Y.current=!1},50);return()=>clearTimeout(a)}},[N]);const E=x.useCallback(a=>{Y.current||de(a)},[]),z=x.useCallback(a=>{Y.current||pe(a)},[]),O=x.useMemo(()=>N?b.map(a=>a.machineId===N.machineId?{...a,x:N.x,y:N.y,pinned:!0}:a):b,[b,N]);x.useEffect(()=>{if(!u)return;const a=O.find(o=>o.machineId===u);a&&f({type:"pan",delta:{x:-a.x-c.pan.x-a.width/2,y:-a.y-c.pan.y+i.h/4-U}})},[u,O,c.pan.x,c.pan.y,i.h]);const X=x.useCallback(a=>{a.agentClass!=="organic"&&M({view:"agents-v2",agentId:a.id})},[M]),k=x.useMemo(()=>g.filter(a=>a.agentClass!=="organic"),[g]),P=x.useMemo(()=>k.map(a=>a.id),[k]),R=xe({agents:k,orderedIds:P,navigate:M,selectMode:"preview"}),V=x.useCallback(a=>P.includes(a)?R.bind(a):null,[R,P]),L=R.activeAgent?.id??null,{pan:S,scale:_}=c,q=i.w/2,K=i.h/2;return s.jsxs("div",{ref:n,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden"},children:[i.w>0&&s.jsx(me,{panOffset:S,scale:_,onPan:a=>f({type:"pan",delta:a}),gridOpacity:.7}),s.jsx("div",{style:{position:"absolute",left:0,top:0,width:0,height:0,transform:`translate(${q}px, ${K}px) translate(${S.x*_}px, ${S.y*_}px) scale(${_})`,transformOrigin:"0 0",pointerEvents:"none"},children:O.length===0?s.jsx("div",{style:{position:"absolute",left:-120,top:-20,width:240,textAlign:"center",pointerEvents:"none"},children:s.jsx("div",{className:"mesh-empty-pill",children:"no machines visible"})}):O.map(a=>s.jsx(Ye,{section:a,metrics:r,onAgentOpen:X,bindFor:V,activeId:L,onHeaderPointerDown:G,onHeaderClick:z,onGhostActivate:E},a.machineId))}),s.jsx("div",{className:"mesh-canvas-hint",children:"scroll to zoom · drag to pan"}),R.card]})}export{_s as MeshCanvas};
@@ -0,0 +1 @@
1
+ import{r as x,j as e}from"./index-DMiGbrBt.js";import{u as v,d as $,t as C,a as M,r as b}from"./mesh-view-store-CWidRbTE.js";import{u as w}from"./Provider-C7UKGHQy.js";import{b as I}from"./mesh-buckets-CfAukILK.js";import{a as j,f as S,s as f}from"./colors-BtO5_zlx.js";function T(){const[i,o]=x.useState("rack"),{agents:r}=w(),{meshSnapshot:l,selectedId:s,selectedType:a,hiddenMachineIds:m,machinePositions:n}=v(),t=x.useMemo(()=>l?I(r,l):[],[r,l]);if(!l||t.length===0)return null;const h=t.filter(d=>!m.has(d.machineId)).length,p=t.length,g=Object.keys(n).length,c=d=>{M(d,"node"),b(d)};return e.jsxs("div",{className:"mesh-rail",children:[e.jsxs("div",{className:"mesh-rail-head",children:[e.jsx("span",{className:"mesh-rail-ear","aria-hidden":!0}),e.jsxs("div",{className:"mesh-rail-mode",role:"group","aria-label":"Bottom view",children:[e.jsx("button",{type:"button",className:`mesh-rail-mode-btn${i==="map"?" mesh-rail-mode-btn--active":""}`,onClick:()=>o("map"),"aria-pressed":i==="map",children:"map"}),e.jsx("button",{type:"button",className:`mesh-rail-mode-btn${i==="rack"?" mesh-rail-mode-btn--active":""}`,onClick:()=>o("rack"),"aria-pressed":i==="rack",children:"rack"})]}),e.jsx("span",{className:"mesh-rail-title-count",children:p}),e.jsx("span",{className:"mesh-rail-ear","aria-hidden":!0})]}),i==="rack"?e.jsx(k,{buckets:t,hiddenMachineIds:m,selectedId:s,selectedType:a,onFocus:c}):e.jsx(B,{buckets:t,selectedId:s,selectedType:a,onFocus:c}),e.jsxs("div",{className:"mesh-rail-foot",children:[e.jsx("span",{className:"mesh-rail-foot-mark","aria-hidden":!0}),e.jsx("span",{className:"mesh-rail-foot-meta",children:i==="map"?`${p} machines`:`${h}/${p} shown`}),g>0&&i==="rack"?e.jsx("button",{type:"button",className:"mesh-rail-foot-reset",onClick:()=>$(),title:"Reset machine layout",children:"reset"}):e.jsx("span",{className:"mesh-rail-foot-mark","aria-hidden":!0})]})]})}function k({buckets:i,hiddenMachineIds:o,selectedId:r,selectedType:l,onFocus:s}){return e.jsx("div",{className:"mesh-rail-body",children:i.map((a,m)=>{const n=o.has(a.machineId),t=r===a.machineId&&l==="node",h=a.agents.filter(u=>j(u.state)).length,p=a.agents.filter(u=>S(u.state)).length,g=a.online?a.agents.length===0?"offline":h>0?"working":"available":"offline",c=n||!a.online?void 0:f(g),d=a.reachability==="this"?"L":a.reachability==="peer"?"P":a.reachability==="tailnet"?"T":"·",N=String(m+1).padStart(2,"0"),y=a.online?a.agents.length===0?"idle":`${h}w · ${p}r`:"unreachable";return e.jsxs("div",{className:["mesh-rail-unit",n&&"mesh-rail-unit--off",!a.online&&"mesh-rail-unit--unreachable",t&&"mesh-rail-unit--active"].filter(Boolean).join(" "),children:[e.jsxs("button",{type:"button",className:"mesh-rail-unit-body",onClick:()=>s(a.machineId),title:`Focus ${a.machineLabel} on the map`,children:[e.jsx("span",{className:"mesh-rail-slot",children:N}),e.jsx("span",{className:`mesh-rail-led${n||!a.online?"":" mesh-rail-led--on"}`,style:c?{background:c,color:c}:void 0,"aria-hidden":!0}),e.jsxs("span",{className:"mesh-rail-unit-text",children:[e.jsx("span",{className:"mesh-rail-unit-name",title:a.machineLabel,children:a.machineLabel}),e.jsxs("span",{className:"mesh-rail-unit-sub",children:[e.jsx("span",{className:`mesh-rail-reach mesh-rail-reach--${a.reachability}`,children:d}),e.jsx("span",{className:"mesh-rail-unit-stamp",children:y})]})]}),e.jsx("span",{className:"mesh-rail-unit-count",children:a.agents.length})]}),e.jsx("div",{className:"mesh-rail-unit-actions",children:e.jsx("button",{type:"button",className:`mesh-rail-unit-eye${n?" mesh-rail-unit-eye--off":""}`,onClick:u=>{u.stopPropagation(),C(a.machineId)},title:n?"Show in workspace":"Hide from workspace","aria-pressed":!n,children:n?"○":"●"})}),e.jsx("span",{className:"mesh-rail-vent","aria-hidden":!0})]},a.machineId)})})}function B({buckets:i,selectedId:o,selectedType:r,onFocus:l}){return e.jsx("div",{className:"mesh-rail-body mesh-rail-body--map",children:e.jsx("div",{className:"mesh-mini-map",children:i.map(s=>{const a=o===s.machineId&&r==="node",m=s.agents.filter(h=>j(h.state)).length,n=s.online?s.agents.length===0?"offline":m>0?"working":"available":"offline",t=s.online?f(n):void 0;return e.jsxs("button",{type:"button",className:`mesh-mini-node mesh-mini-node--${n}${a?" mesh-mini-node--active":""}${s.online?"":" mesh-mini-node--off"}`,onClick:()=>l(s.machineId),title:`${s.machineLabel} — ${s.agents.length} agents`,children:[e.jsx("span",{className:"mesh-mini-led",style:t?{background:t}:void 0,"aria-hidden":!0}),e.jsx("span",{className:"mesh-mini-label",children:s.machineLabel}),s.agents.length>0&&e.jsx("span",{className:"mesh-mini-count",children:s.agents.length})]},s.machineId)})})})}export{T as M};
@@ -0,0 +1 @@
1
+ .mesh-rail{display:flex;flex-direction:column;height:100%;min-height:0;padding:var(--space-sm);background:transparent;font-family:var(--font-mono)}.mesh-rail-head,.mesh-rail-foot{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 7%,transparent),color-mix(in srgb,var(--ink) 1%,transparent));border:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-bottom:0;border-radius:var(--radius-sm) var(--radius-sm) 0 0;box-shadow:inset 0 1px color-mix(in srgb,var(--ink) 6%,transparent)}.mesh-rail-foot{border-top:0;border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-radius:0 0 var(--radius-sm) var(--radius-sm);justify-content:space-between;padding:var(--space-2xs) var(--space-sm);box-shadow:inset 0 -1px color-mix(in srgb,var(--ink) 6%,transparent),0 4px 12px -8px #0006}.mesh-rail-ear{flex:0 0 auto;width:4px;height:12px;border-radius:1px;background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--ink) 18%,transparent) 0%,transparent 70%),color-mix(in srgb,var(--ink) 10%,transparent);box-shadow:inset 0 1px color-mix(in srgb,var(--ink) 14%,transparent),inset 0 -1px color-mix(in srgb,var(--border) 60%,transparent)}.mesh-rail-title{font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--tracking-xl);color:color-mix(in srgb,var(--ink) 78%,transparent)}.mesh-rail-title-count{margin-left:auto;padding:1px var(--space-xs);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--muted);font-size:var(--text-2xs);font-weight:700}.mesh-rail-mode{display:inline-flex;align-items:stretch;border:1px solid color-mix(in srgb,var(--border) 50%,transparent);border-radius:var(--radius-sm);overflow:hidden}.mesh-rail-mode-btn{padding:var(--space-3xs) var(--space-sm);border:0;background:transparent;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--tracking-xl);text-transform:uppercase;color:color-mix(in srgb,var(--ink) 45%,transparent);cursor:pointer;transition:background .12s,color .12s}.mesh-rail-mode-btn+.mesh-rail-mode-btn{border-left:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.mesh-rail-mode-btn:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 4%,transparent)}.mesh-rail-mode-btn--active{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.mesh-rail-body--map{background:transparent;border-left:1px solid color-mix(in srgb,var(--border) 35%,transparent);border-right:1px solid color-mix(in srgb,var(--border) 35%,transparent);padding:var(--space-sm)}.mesh-mini-map{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:var(--space-2xs)}.mesh-mini-node{display:inline-flex;align-items:center;gap:var(--space-2xs);padding:var(--space-2xs) var(--space-xs);border:1px solid color-mix(in srgb,var(--border) 45%,transparent);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--surface) 65%,transparent);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--ink);text-align:left;min-width:0;transition:background .12s,border-color .12s}.mesh-mini-node:hover{border-color:color-mix(in srgb,var(--accent) 35%,transparent);background:color-mix(in srgb,var(--accent) 6%,transparent)}.mesh-mini-node--active{border-color:color-mix(in srgb,var(--accent) 50%,transparent);background:color-mix(in srgb,var(--accent) 14%,transparent)}.mesh-mini-node--off{opacity:.55}.mesh-mini-led{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:color-mix(in srgb,var(--ink) 25%,transparent)}.mesh-mini-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mesh-mini-count{flex:0 0 auto;color:color-mix(in srgb,var(--ink) 55%,transparent);font-variant-numeric:tabular-nums}.mesh-rail-body{flex:1 1 auto;min-height:0;overflow-y:auto;display:flex;flex-direction:column;background:repeating-linear-gradient(0deg,color-mix(in srgb,var(--ink) 5%,transparent) 0px,color-mix(in srgb,var(--ink) 5%,transparent) 1px,transparent 1px,transparent 3px);border-left:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-right:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.mesh-rail-unit{position:relative;display:flex;align-items:stretch;background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 70%,transparent),color-mix(in srgb,var(--bg) 78%,transparent));border-bottom:1px solid color-mix(in srgb,var(--border) 55%,transparent);box-shadow:inset 0 1px color-mix(in srgb,var(--ink) 4%,transparent),inset 0 -1px color-mix(in srgb,var(--ink) 10%,transparent)}.mesh-rail-unit:last-child{border-bottom:0}.mesh-rail-unit-body{flex:1 1 auto;display:flex;align-items:center;gap:var(--space-sm);min-width:0;padding:var(--space-sm) var(--space-md) var(--space-sm);border:0;background:transparent;cursor:pointer;text-align:left;font-family:inherit;color:inherit;transition:background .12s}.mesh-rail-unit-body:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.mesh-rail-unit-body:focus-visible{outline:1px solid color-mix(in srgb,var(--accent) 70%,transparent);outline-offset:-1px}.mesh-rail-unit--off .mesh-rail-unit-body{background:linear-gradient(180deg,color-mix(in srgb,var(--bg) 70%,transparent),color-mix(in srgb,var(--bg) 84%,transparent));filter:saturate(.4)}.mesh-rail-unit--off .mesh-rail-unit-name{color:color-mix(in srgb,var(--ink) 38%,transparent)}.mesh-rail-unit--unreachable .mesh-rail-unit-stamp{color:color-mix(in srgb,var(--amber) 80%,transparent)}.mesh-rail-unit--active{box-shadow:inset 2px 0 0 0 var(--accent)}.mesh-rail-unit--active .mesh-rail-unit-name{color:var(--accent)}.mesh-rail-slot{flex:0 0 auto;font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--tracking-md);color:color-mix(in srgb,var(--ink) 32%,transparent);width:16px}.mesh-rail-led{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:color-mix(in srgb,var(--ink) 14%,transparent);box-shadow:inset 0 1px color-mix(in srgb,var(--ink) 12%,transparent),inset 0 -1px color-mix(in srgb,var(--border) 80%,transparent)}.mesh-rail-led--on{box-shadow:inset 0 1px color-mix(in srgb,var(--ink) 24%,transparent),0 0 6px 0 currentColor,0 0 14px -2px currentColor}.mesh-rail-unit-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:var(--space-3xs)}.mesh-rail-unit-name{font-size:var(--text-sm);font-weight:600;color:var(--ink);letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mesh-rail-unit-sub{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--text-2xs);color:color-mix(in srgb,var(--ink) 45%,transparent)}.mesh-rail-reach{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;border-radius:var(--radius-xs);font-size:var(--text-3xs);font-weight:800;background:color-mix(in srgb,var(--ink) 8%,transparent);border:1px solid color-mix(in srgb,var(--border) 70%,transparent);color:var(--muted)}.mesh-rail-reach--this{background:color-mix(in srgb,var(--accent) 18%,transparent);border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--accent)}.mesh-rail-reach--peer{background:color-mix(in srgb,var(--green, #4ade80) 14%,transparent);border-color:color-mix(in srgb,var(--green, #4ade80) 32%,transparent);color:var(--green, #4ade80)}.mesh-rail-reach--tailnet{background:color-mix(in srgb,var(--amber) 16%,transparent);border-color:color-mix(in srgb,var(--amber) 40%,transparent);color:var(--amber)}.mesh-rail-unit-stamp{font-variant-numeric:tabular-nums}.mesh-rail-unit-count{flex:0 0 auto;font-size:var(--text-xs);font-weight:600;color:color-mix(in srgb,var(--ink) 55%,transparent);font-variant-numeric:tabular-nums}.mesh-rail-unit-actions{flex:0 0 auto;display:flex;align-items:center;gap:var(--space-2xs);padding-right:var(--space-sm)}.mesh-rail-unit-eye{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border:1px solid color-mix(in srgb,var(--border) 60%,transparent);background:color-mix(in srgb,var(--ink) 4%,transparent);color:color-mix(in srgb,var(--ink) 60%,transparent);font-size:var(--text-2xs);cursor:pointer;border-radius:var(--radius-xs);transition:background .12s,color .12s,border-color .12s}.mesh-rail-unit-eye:hover{background:color-mix(in srgb,var(--accent) 14%,transparent);border-color:color-mix(in srgb,var(--accent) 40%,transparent);color:var(--accent)}.mesh-rail-unit-eye--off{color:color-mix(in srgb,var(--ink) 30%,transparent)}.mesh-rail-vent{position:absolute;right:0;top:50%;transform:translateY(-50%);width:5px;height:60%;background:repeating-linear-gradient(0deg,color-mix(in srgb,var(--ink) 14%,transparent) 0px,color-mix(in srgb,var(--ink) 14%,transparent) 1px,transparent 1px,transparent 3px);pointer-events:none;opacity:.45}.mesh-rail-foot-mark{flex:0 0 auto;width:4px;height:10px;border-radius:1px;background:color-mix(in srgb,var(--ink) 10%,transparent);box-shadow:inset 0 1px color-mix(in srgb,var(--ink) 12%,transparent)}.mesh-rail-foot-meta{font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-xl);text-transform:uppercase;color:color-mix(in srgb,var(--ink) 45%,transparent)}.mesh-rail-foot-reset{padding:var(--space-3xs) var(--space-xs);border:1px solid color-mix(in srgb,var(--border) 70%,transparent);background:transparent;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-3xs);font-weight:700;letter-spacing:var(--tracking-xl);text-transform:uppercase;cursor:pointer;border-radius:var(--radius-xs)}.mesh-rail-foot-reset:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:color-mix(in srgb,var(--accent) 40%,transparent);color:var(--accent)}
@@ -0,0 +1 @@
1
+ import{r as d,j as e}from"./index-DMiGbrBt.js";import{a as B}from"./api-h5zurxmi.js";import{t as A}from"./time-DltNTpLl.js";import{n as _,b as D,s as z,c as F}from"./colors-BtO5_zlx.js";import{u as O,e as H}from"./Provider-C7UKGHQy.js";import{b as K}from"./router-Bq5dwf78.js";import{MeshCanvas as U}from"./MeshCanvas-DFEPkpqY.js";import{u as V}from"./useAgentHoverCard-DMrbBif0.js";import{u as Q}from"./local-agents--00gLMqr.js";import{u as J,a as W,s as X,e as E,f as I,g as Y,h as L}from"./mesh-view-store-CWidRbTE.js";import{u as Z}from"./useContentSecondaryNav-DMl1WNm7.js";import{OpsSubnav as G}from"./OpsSubnav-DsuXzHah.js";/* empty css *//* empty css */import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./terminal-sessions-D5CIR2OL.js";import"./chunk-T65CQEWV-CrzwSeEt.js";import"./plus--b1raV_O.js";import"./mesh-buckets-CfAukILK.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./openContent-C6XO6kr5.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";import"./SecondaryNav-B3-nh5dM.js";import"./secondaryNavConfig-DqUIp0Es.js";import"./message-square-DSaGpjFU.js";import"./scroll-text-D6Pdnar7.js";/* empty css */function ee(c){const p=new Map,x=new Map;for(const a of c){const o=a.project??"Unassigned",i=o.toLowerCase(),m=a.branch??"—";let r=p.get(i);r||(r=new Map,p.set(i,r));const u=r.get(m)??[];u.push(a),r.set(m,u);let s=x.get(i);s||(s=new Map,x.set(i,s)),s.set(o,(s.get(o)??0)+1)}const g=a=>{const o=x.get(a);if(!o)return a;let i=null,m=-1;for(const[r,u]of o)u>m&&(i=r,m=u);return i??a},j=[];for(const[a,o]of p){const i=g(a),m=[];let r=0;const u={in_turn:0,in_flight:0,needs_attention:0,callable:0,blocked:0},s=[];for(const[l,n]of o){const t=[...n].sort((h,b)=>(b.updatedAt??0)-(h.updatedAt??0)),y=t.reduce((h,b)=>Math.max(h,b.updatedAt??0),0);r=Math.max(r,y);for(const h of t)u[_(h.state)]+=1,s.push(h);m.push({branch:l,agents:t,latest:y})}m.sort((l,n)=>n.latest-l.latest),j.push({project:i,branches:m,agents:s,latest:r,counts:u})}return j.sort((a,o)=>o.latest-a.latest),j}function T(c){return c?c.replace(/^\/Users\/[^/]+/,"~"):null}function se({agents:c,emptyTitle:p="No agents registered",emptyBody:x="Agents connected to this broker will appear here.",selectMode:g="preview"}){const{navigate:j}=O(),a=d.useMemo(()=>ee(c),[c]),[o,i]=d.useState(()=>new Set),m=d.useMemo(()=>{const s=[];for(const l of a)if(!o.has(l.project))for(const n of l.branches)for(const t of n.agents)s.push(t.id);return s},[a,o]),r=V({agents:c,orderedIds:m,navigate:j,selectMode:g});if(c.length===0)return e.jsxs("div",{className:"sys-list-empty",children:[e.jsx("h3",{children:p}),e.jsx("p",{children:x})]});const u=s=>{i(l=>{const n=new Set(l);return n.has(s)?n.delete(s):n.add(s),n})};return e.jsxs("div",{className:"mesh-tree",ref:r.containerRef,children:[a.map(s=>{const l=o.has(s.project);return e.jsxs("div",{className:`mesh-tree-group${l?" mesh-tree-group--collapsed":""}`,children:[e.jsxs("button",{type:"button",className:"mesh-tree-project",onClick:()=>u(s.project),"aria-expanded":!l,children:[e.jsx("span",{className:`mesh-tree-caret${l?"":" mesh-tree-caret--open"}`,"aria-hidden":!0,children:"›"}),e.jsx("span",{className:"mesh-tree-project-name",children:s.project}),e.jsx("span",{className:"mesh-tree-project-count",children:s.agents.length}),e.jsxs("span",{className:"mesh-tree-counts",children:[s.counts.in_turn+s.counts.in_flight+s.counts.needs_attention>0&&e.jsxs("span",{className:"mesh-tree-count mesh-tree-count--working",children:[e.jsx("span",{className:"mesh-tree-count-dot"}),s.counts.in_turn+s.counts.in_flight+s.counts.needs_attention]}),s.counts.callable>0&&e.jsxs("span",{className:"mesh-tree-count mesh-tree-count--available",children:[e.jsx("span",{className:"mesh-tree-count-dot"}),s.counts.callable]}),s.counts.blocked>0&&e.jsxs("span",{className:"mesh-tree-count mesh-tree-count--offline",children:[e.jsx("span",{className:"mesh-tree-count-dot"}),s.counts.blocked]})]}),e.jsx("span",{className:"mesh-tree-project-time",children:s.latest?A(s.latest):""})]}),!l&&e.jsx("div",{className:"mesh-tree-branches",children:s.branches.map(n=>e.jsxs("div",{className:"mesh-tree-branch",children:[e.jsxs("div",{className:"mesh-tree-branch-head",children:[e.jsx("span",{className:"mesh-tree-branch-elbow","aria-hidden":!0,children:"└"}),e.jsx("span",{className:"mesh-tree-branch-name",children:n.branch})]}),e.jsx("div",{className:"mesh-tree-agents",children:n.agents.map(t=>{const y=_(t.state),h=D(t.state),b=t.agentClass==="organic",S=r.getState(t.id),k=T(t.cwd)??T(t.projectRoot),f=t.harnessSessionId?t.harnessSessionId.slice(0,8):null,v=[];k&&v.push({kind:"cwd",text:k}),t.harness&&v.push({kind:"harness",text:t.harness}),t.model&&v.push({kind:"model",text:t.model}),f&&v.push({kind:"sess",text:`sess:${f}`});const $=r.bind(t.id);return e.jsxs("button",{type:"button",className:`mesh-tree-agent${b?" mesh-tree-agent--organic":""}${S.isActive?" mesh-tree-agent--active":""}${S.isPinned?" mesh-tree-agent--pinned":""}`,title:b?`${t.harness??t.name} · organic session`:void 0,...$,children:[e.jsx("span",{className:`mesh-tree-agent-dot mesh-tree-agent-dot--${h}`,style:{background:z(t.state)}}),e.jsx("span",{className:"mesh-tree-agent-name",children:t.handle??t.name}),b&&e.jsx("span",{className:"mesh-tree-agent-organic","aria-label":"organic session",children:"○"}),e.jsx("span",{className:"mesh-tree-agent-inline",children:v.map((w,R)=>e.jsxs("span",{className:`mesh-tree-agent-inline-part mesh-tree-agent-inline-part--${w.kind}`,children:[R>0&&e.jsx("span",{className:"mesh-tree-agent-inline-sep",children:"·"}),w.text]},w.kind))}),e.jsx("span",{className:`mesh-tree-agent-state mesh-tree-agent-state--${h}`,children:F(y)}),e.jsx("span",{className:"mesh-tree-agent-time",children:t.updatedAt?A(t.updatedAt):""})]},t.id)})})]},n.branch))})]},s.project)}),r.card]})}function P({mode:c,density:p,query:x,stateFilter:g,loading:j,refreshing:a,error:o,lastLoadedAt:i,hasMesh:m,onRefresh:r}){return e.jsxs("div",{className:`mesh-hud mesh-hud--${c}`,children:[e.jsxs("div",{className:"mesh-hud-left",children:[e.jsxs("div",{className:"mesh-mode-toggle",children:[e.jsx("button",{type:"button",className:`mesh-mode-btn${c==="map"?" mesh-mode-btn--active":""}`,onClick:()=>E("map"),children:"Map"}),e.jsx("button",{type:"button",className:`mesh-mode-btn${c==="tree"?" mesh-mode-btn--active":""}`,onClick:()=>E("tree"),children:"Tree"})]}),e.jsxs("div",{className:"mesh-mode-toggle mesh-density-toggle",role:"group","aria-label":"Density","aria-hidden":c!=="map","data-mode-only":"map",children:[e.jsx("button",{type:"button",className:`mesh-mode-btn${p==="compact"?" mesh-mode-btn--active":""}`,onClick:()=>I("compact"),disabled:c!=="map",title:"Compact — dots",children:"Compact"}),e.jsx("button",{type:"button",className:`mesh-mode-btn${p==="comfortable"?" mesh-mode-btn--active":""}`,onClick:()=>I("comfortable"),disabled:c!=="map",title:"Comfortable — chips",children:"Comfortable"}),e.jsx("button",{type:"button",className:`mesh-mode-btn${p==="spacious"?" mesh-mode-btn--active":""}`,onClick:()=>I("spacious"),disabled:c!=="map",title:"Spacious — cards",children:"Spacious"})]})]}),m&&e.jsxs("div",{className:"mesh-hud-filters",children:[e.jsx("input",{type:"search",className:"mesh-hud-search",placeholder:"Filter agents…",value:x,onChange:u=>Y(u.target.value),spellCheck:!1,autoCorrect:"off",autoCapitalize:"off"}),e.jsxs("div",{className:"mesh-mode-toggle",role:"group","aria-label":"State",children:[e.jsx("button",{type:"button",className:`mesh-mode-btn${g==="all"?" mesh-mode-btn--active":""}`,onClick:()=>L("all"),children:"All"}),e.jsx("button",{type:"button",className:`mesh-mode-btn${g==="in_turn"?" mesh-mode-btn--active":""}`,onClick:()=>L("in_turn"),children:"In turn"}),e.jsx("button",{type:"button",className:`mesh-mode-btn${g==="callable"?" mesh-mode-btn--active":""}`,onClick:()=>L("callable"),children:"Callable"})]})]}),e.jsxs("div",{className:"mesh-hud-right",children:[e.jsx("span",{className:"mesh-hud-sync",children:j?"Loading…":o&&m?`Last sync old — ${i?A(i):"unknown"}`:i?A(i):"—"}),e.jsx("button",{type:"button",className:"s-btn",disabled:j||a,onClick:r,children:a?"Refreshing…":"Refresh"})]})]})}function is({navigate:c}){const[p,x]=d.useState(!0),[g,j]=d.useState(!1),[a,o]=d.useState(null),[i,m]=d.useState(null),{mode:r,density:u,query:s,stateFilter:l,meshSnapshot:n}=J(),{agents:t}=Q(),{route:y}=O(),h=K(y),b=d.useMemo(()=>H(t,h,n?.localNode?.id),[t,h,n?.localNode?.id]),S=d.useRef(null),k=d.useRef(0);d.useEffect(()=>{S.current=n},[n]),d.useEffect(()=>{h&&W(h,"node")},[h]);const f=d.useCallback(async(C="initial")=>{const N=++k.current;!(S.current!==null)&&C!=="background"?(x(!0),o(null)):j(!0);try{const M=await B("/api/mesh");if(N!==k.current)return;X(M),o(null),m(Date.now())}catch(M){if(N!==k.current)return;o(M instanceof Error?M.message:String(M))}finally{N===k.current&&(x(!1),j(!1))}},[]);d.useEffect(()=>{f("initial")},[f]),d.useEffect(()=>{const C=setInterval(()=>{f("background")},1e4);return()=>clearInterval(C)},[f]);const v=d.useMemo(()=>{const C=s.trim().toLowerCase();return b.filter(N=>l!=="all"&&_(N.state)!==l?!1:C?`${N.name??""} ${N.handle??""} ${N.harness??""} ${N.project??""} ${N.branch??""}`.toLowerCase().includes(C):!0)},[s,b,l]),$={mode:r,density:u,query:s,stateFilter:l,loading:p,refreshing:g,error:a,lastLoadedAt:i,hasMesh:!!n,onRefresh:()=>{f("manual")}},w=r==="map"?e.jsxs("div",{className:"mesh-map-canvas",children:[n&&e.jsx(U,{mesh:n,agents:v}),p&&!n&&e.jsx("div",{className:"mesh-canvas-center",children:e.jsx("p",{className:"mesh-canvas-center-label",children:"Loading mesh…"})}),!p&&!n&&a&&e.jsxs("div",{className:"mesh-canvas-center",children:[e.jsx("p",{className:"mesh-canvas-center-label",children:a}),e.jsx("button",{type:"button",className:"s-btn",onClick:()=>{f("manual")},children:"Try again"})]}),e.jsx(P,{...$})]}):e.jsxs("div",{className:"mesh-tree-page",children:[e.jsx(P,{...$}),p&&!n&&e.jsxs("div",{className:"sys-panel sys-state-card mesh-tree-state",children:[e.jsx("h3",{className:"sys-state-title",children:"Loading mesh status"}),e.jsx("p",{className:"sys-state-body",children:"Inspecting broker reachability and peer discovery inputs."})]}),!p&&!n&&a&&e.jsxs("div",{className:"sys-panel sys-state-card sys-state-card-error mesh-tree-state",children:[e.jsx("h3",{className:"sys-state-title",children:"Mesh status is unavailable"}),e.jsx("p",{className:"sys-state-body",children:a}),e.jsx("div",{className:"sys-inline-actions",children:e.jsx("button",{type:"button",className:"s-btn",onClick:()=>{f("manual")},children:"Try again"})})]}),n&&e.jsxs("section",{className:"mesh-tree-panel",children:[e.jsxs("div",{className:"mesh-tree-hint","aria-hidden":!0,children:[e.jsx("kbd",{children:"↑"}),e.jsx("kbd",{children:"↓"}),e.jsx("span",{children:"navigate"}),e.jsx("span",{className:"mesh-tree-hint-sep",children:"·"}),e.jsx("kbd",{children:"enter"}),e.jsx("span",{children:"pin"}),e.jsx("span",{className:"mesh-tree-hint-sep",children:"·"}),e.jsx("kbd",{children:"o"}),e.jsx("span",{children:"open"}),e.jsx("span",{className:"mesh-tree-hint-sep",children:"·"}),e.jsx("kbd",{children:"esc"}),e.jsx("span",{children:"clear"})]}),e.jsx(se,{agents:v,emptyTitle:b.length===0?h?"No agents on this machine":"No agents registered":"No agents match your filter",emptyBody:b.length===0?"Agents connected to this broker will appear here.":"Try clearing the search or switching the state pill back to All."})]})]}),R=Z();return e.jsxs("div",{className:"s-ops",children:[R?e.jsx("div",{className:"s-ops-header",children:e.jsx(G,{activeRoute:y,navigate:c})}):null,e.jsx("div",{className:"s-ops-body",children:w})]})}export{is as MeshScreen};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/arc.es-CQBb-dVu.js","assets/index-DMiGbrBt.js","assets/index-DxGoC5l5.css"])))=>i.map(i=>d[i]);
2
+ import{r as g,j as d,_ as j}from"./index-DMiGbrBt.js";const E=g.lazy(()=>j(()=>import("./arc.es-CQBb-dVu.js"),__vite__mapDeps([0,1,2])).then(t=>({default:t.ArcDiagram})));function i(t){if(!t)return"";const e=t.replace(/^https?:\/\//,"").split("/")[0],[o]=e.split(":");return o.split(".")[0]}function S(t){const e=t.hostName?.trim();if(e&&e.toLowerCase()!=="localhost")return i(e)||e;const o=t.dnsName?.trim().replace(/\.$/,"");return o?i(o)||o:i(t.name)||t.name}function y(t){if(!t)return"";const e=t.replace(/^https?:\/\//,"").split("/")[0],[o]=e.split(":");return o.replace(/\.$/,"").toLowerCase()}function l(t){const e=y(t);return e?e.split(".")[0]??e:""}function B(t){return t.brokerUrl?i(t.brokerUrl):t.hostName?i(t.hostName):t.id.slice(0,10)}function I(t,e){return Math.abs(t)>=Math.abs(e)?t>=0?["right","left"]:["left","right"]:e>=0?["bottom","top"]:["top","bottom"]}function W(t,e){const o=l(e.hostName||e.name),c=l(t.localNode?.hostName||t.localNode?.name);return!!c&&o===c}function C(t,e){const o=new Set([l(t.hostName),l(t.name),...t.addresses.map(n=>y(n)),...t.addresses.map(n=>l(n))].filter(Boolean)),c=new Set([l(e.hostName),l(e.name),y(e.brokerUrl),l(e.brokerUrl)].filter(Boolean));for(const n of o)if(c.has(n))return!0;return!1}function L(t){if(!t.localNode)return null;const e=t.localNode.id,o=Object.values(t.nodes).filter(s=>s.id!==e),c=t.tailscale.peers.filter(s=>!W(t,s)).filter(s=>!o.some(u=>C(s,u))),n=[...o.map(s=>({kind:"mesh",peer:s})),...c.map(s=>({kind:"tailnet",peer:s}))],M=800,_=300,h=M/2,m=_/2,f={[e]:{x:h,y:m,size:"m"}},p={[e]:{icon:"Database",name:i(t.localNode.hostName)||t.localNode.name||"broker",subtitle:"this node",color:"violet"}},N=[];if(n.length===0)f.__placeholder={x:h+220,y:m,size:"m"},p.__placeholder={icon:"CircleDashed",name:"No peers yet",subtitle:"awaiting discovery",color:"zinc"},N.push({from:e,to:"__placeholder",fromAnchor:"right",toAnchor:"left",style:"pending"});else{const s=n.length,u=Math.min(170,100+s*10);n.forEach(({kind:r,peer:a},z)=>{const v=z/s*Math.PI*2-Math.PI/2,x=Math.round(h+u*Math.cos(v)),k=Math.round(m+u*Math.sin(v)),b=r==="mesh"?a.id:`tailnet:${a.id}`,A=r==="mesh"?i(a.hostName)||a.name||"peer":S(a)||"tailnet",D=r==="mesh"?B(a):a.online?a.addresses[0]??"tailnet only":"tailnet offline";f[b]={x,y:k,size:r==="mesh"?"m":"s"},p[b]={icon:r==="mesh"?"Database":"CircleDashed",name:A,subtitle:D,color:r==="mesh"?a.advertiseScope==="mesh"?"emerald":"zinc":a.online?"sky":"zinc"};const[w,P]=I(x-h,k-m);N.push({from:e,to:b,fromAnchor:w,toAnchor:P,style:r==="mesh"?a.advertiseScope==="mesh"?"mesh":"local":a.online?"tailnet":"tailnet-offline"})})}return{layout:{width:M,height:_},nodes:f,nodeData:p,connectors:N,connectorStyles:{mesh:{color:"emerald",strokeWidth:2,label:"mesh"},local:{color:"zinc",strokeWidth:1.5},tailnet:{color:"sky",strokeWidth:1.5,dashed:!0,label:"tailnet"},"tailnet-offline":{color:"zinc",strokeWidth:1.25,dashed:!0,label:"tailnet"},pending:{color:"zinc",strokeWidth:1.5,dashed:!0}}}}function U({mesh:t}){const e=g.useMemo(()=>L(t),[t]);return e?d.jsx("div",{className:"s-mesh-topology",children:d.jsx(g.Suspense,{fallback:d.jsx("div",{className:"s-mesh-topology-fallback"}),children:d.jsx(E,{data:e,className:"s-mesh-topology-canvas",mode:"light",theme:"cool",interactive:!0,showArcToggle:!1,defaultZoom:"fit",maxFitZoom:.95,hoverEffects:{dim:!0,lift:!0,glow:!0,highlightEdges:!0}})})}):null}export{U as MeshTopologyView};
@@ -0,0 +1 @@
1
+ import{a as x}from"./api-h5zurxmi.js";import{j as o}from"./index-DMiGbrBt.js";const m=new Set(["md","markdown","mdx","mdown","mkd"]),g=new Set(["c","cc","cpp","cxx","h","hh","hpp","hxx","cjs","mjs","js","jsx","ts","tsx","py","pyw","pyi","rs","go","java","kt","kts","swift","cs","rb","php","lua","r","sh","bash","zsh","fish","ps1","bat","cmd","sql","prisma","json","jsonc","json5","yaml","yml","toml","xml","html","htm","xhtml","css","scss","sass","less","vue","svelte","astro","graphql","gql","zig","ex","exs","erl","hrl","hs","clj","cljs","cljc","dart","tf","hcl","nix","env","ini","cfg","conf","properties","txt","log","cmake","gradle","groovy","patch","diff","proto","wat"]),w=new Set(["dockerfile","containerfile","makefile","gemfile","rakefile","procfile","brewfile"]),y=new Set(["text/markdown","text/x-markdown","text/plain","text/javascript","text/typescript","text/css","text/html","text/yaml","text/toml","text/x-shellscript","application/json","application/javascript"]);function p(e){return e.trim().split(/[/\\]/).pop()?.toLowerCase()??""}function l(e){const t=p(e),s=t.lastIndexOf(".");return s>=0?t.slice(s+1):""}function j(e){return m.has(l(e))}function v(e){const t=p(e);return w.has(t)?!0:g.has(l(e))}function d(e){return j(e)||v(e)}function f(e,t){if(!d(t))return null;const s=l(t);if(m.has(s))return"text/markdown";switch(s){case"json":case"jsonc":case"json5":return"application/json";case"yaml":case"yml":return"text/yaml";case"toml":return"text/toml";case"html":case"htm":case"xhtml":return"text/html";case"css":case"scss":case"sass":case"less":return"text/css";case"js":case"jsx":case"mjs":case"cjs":return"text/javascript";case"ts":case"tsx":return"text/typescript";case"sh":case"bash":case"zsh":case"fish":return"text/x-shellscript"}const r=e.trim().toLowerCase();return y.has(r)?r:"text/plain"}function k(e,t){const s=e.trim().toLowerCase();return s.startsWith("image/")||s.startsWith("video/")||s==="text/markdown"||s==="text/x-markdown"?!0:t?f(s,t)?!0:!s||s==="application/octet-stream"?d(t):!1:!1}function b(e){const t=e.type.trim().toLowerCase();return t.startsWith("image/")||t.startsWith("video/")?t:f(t,e.name)??t}function u(e){return k(e.type,e.name)}function E(e){return b(e)}function O(e){return e?e.files.length>0||[...e.types].some(t=>t.toLowerCase()==="files")?!0:[...e.items].some(t=>t.kind==="file"):!1}function C(e){if(!e)return[];const t=[...e.files];if(t.length>0)return t;const s=[];for(const r of e.items){if(r.kind!=="file")continue;const a=r.getAsFile();a&&s.push(a)}return s}function M(e){return C(e).filter(u)}function D(e){return M(e)}function F(e){return new Promise((t,s)=>{const r=new FileReader;r.onload=()=>{const a=typeof r.result=="string"?r.result:"",i=a.indexOf(",");t(i>=0?a.slice(i+1):a)},r.onerror=()=>s(r.error??new Error("Could not read file.")),r.readAsDataURL(e)})}async function N(e){if(!u(e))throw new Error("Only markdown, code, image, and video files can be routed.");const t=await F(e);return x("/api/blobs",{method:"POST",body:JSON.stringify({data:t,mediaType:E(e),fileName:e.name})})}async function R(e){const t=e.filter(u);if(t.length===0)throw new Error("Drop markdown, code, an image, or a video clip to route.");return(await Promise.all(t.map(r=>N(r)))).map((r,a)=>({id:r.id,mediaType:r.mediaType,fileName:r.fileName??t[a]?.name,url:r.url}))}function A({label:e,items:t,activeIndex:s,placement:r="above",onPick:a,onActiveIndexChange:i}){return t.length===0?null:o.jsxs("div",{className:"s-msg-compose-suggest","data-placement":r,role:"listbox","aria-label":e,children:[o.jsx("div",{className:"s-msg-compose-suggest-label",children:e}),t.map((n,c)=>o.jsxs("button",{type:"button",role:"option","aria-selected":c===s,className:["s-msg-compose-suggest-item",c===s&&"s-msg-compose-suggest-item--active"].filter(Boolean).join(" "),onMouseDown:h=>{h.preventDefault(),a(c)},onMouseEnter:()=>i(c),children:[n.avatar?o.jsx("span",{className:"s-ops-avatar s-msg-compose-suggest-avatar",style:{"--size":"20px",background:n.avatar.color},"aria-hidden":"true",children:n.avatar.label}):null,o.jsx("span",{className:"s-msg-compose-suggest-token",children:n.token}),o.jsx("span",{className:"s-msg-compose-suggest-desc",children:n.description})]},n.id))]})}export{A as M,M as a,C as b,O as d,u as i,D as r,R as u};
@@ -0,0 +1 @@
1
+ import{j as e,r as a}from"./index-DMiGbrBt.js";import{i as w,a as C}from"./conversation-model-B47vYmWN.js";import{u as b,m as M,g as S}from"./Provider-C7UKGHQy.js";import{b as A}from"./router-Bq5dwf78.js";import{l as I,i as B,s as E}from"./sessionRead-CvFz2RHv.js";import{u as L}from"./use-conversation-list-Byab41G6.js";import{u as R}from"./use-fleet-active-asks-BIbQx5AS.js";import{ConversationScreen as D}from"./ConversationScreen-BDRhx-RU.js";import{P as O}from"./plus--b1raV_O.js";import"./colors-BtO5_zlx.js";import"./time-DltNTpLl.js";import"./api-h5zurxmi.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./terminal-sessions-D5CIR2OL.js";import"./ConversationComposer-Bla3DDvM.js";import"./message-markup-3J9pi3nx.js";import"./mentions-jSuTGeet.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./openContent-C6XO6kr5.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";import"./message-visibility-kJM8XcSG.js";import"./clipboard-e3fSpeo7.js";import"./AgentAvatar-D90c1Rzk.js";import"./SpriteAvatar-DyaGuhik.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-DE3FC0m-.js";import"./BackToPicker-BRvfostO.js";import"./ConversationFeedRows-B_gPxcqA.js";import"./ConversationPanels-DLek4H6A.js";import"./use-reduced-motion-RRBkmVkk.js";import"./activity-CA8qS6PI.js";import"./message-circle-CG-96zts.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./tail-events-D19uAGe3.js";import"./ConversationStatus-BwVLiiO4.js";import"./conversation-icons-IIG5ha6D.js";function ts({conversationId:t,navigate:c}){return t?e.jsx(D,{conversationId:t,navigate:c,showBackNav:!1}):e.jsx(P,{})}function P(){const{onlineCount:t,apiConnection:c,reload:j,route:N,agents:d,openContextCapture:k,navigate:u}=b(),{sessions:y,loading:p,loadError:n}=L(),[x]=a.useState(()=>I()),v=R(),s=c.status==="offline",i=A(N),f=a.useRef(!1),h=a.useMemo(()=>{const m=M(d,i);return[...S(y,m,i)].sort((g,o)=>(o.lastMessageAt??0)-(g.lastMessageAt??0))},[y,d,i]),r=a.useMemo(()=>{const m=h.filter(o=>!w(o));return m.find(o=>o.agentId?v.get(o.agentId)?.status==="needs_attention"&&B(o.lastMessageAt,o.id,x):!1)??m[0]},[h,v,x]);a.useEffect(()=>{f.current||p||n||s||r&&(f.current=!0,E(r.id),u({view:"messages",conversationId:r.id,...i?{machineId:i}:{}},{replace:!0}))},[r,p,n,s,i,u]);const l=!s&&!n&&(p||!!r);return e.jsx("div",{className:`s-conv-empty${s?" s-conv-empty--offline":""}`,children:e.jsxs("div",{className:"s-conv-empty-inner",children:[e.jsx($,{}),e.jsx("div",{className:"s-conv-empty-eyebrow",children:s?"Connection":"Conversations"}),e.jsx("p",{className:"s-conv-empty-title",children:s?"Scout server offline":l?"Opening your latest conversation":n?"Chats unavailable":"Nothing open yet"}),e.jsx("p",{className:"s-conv-empty-detail",children:s?"Start or restart Scout services. Chats and context will appear when the server responds.":l?V(r):n||"Start a chat by choosing an agent and sending the first message."}),s||n?e.jsx("button",{type:"button",className:"s-conv-empty-action",onClick:()=>{j()},children:"Retry connection"}):l?null:e.jsxs("button",{type:"button",className:"s-conv-empty-new",onClick:()=>k(),children:[e.jsx(O,{size:16,"aria-hidden":"true"}),"New chat"]}),e.jsxs("div",{className:"s-conv-empty-ambient",children:[e.jsx("span",{className:"s-conv-empty-ambient-dot","aria-hidden":"true"}),s?"waiting for server":`${t} ${t===1?"agent":"agents"} active`]})]})})}function V(t){return t?C(t):"Finding where you left off."}function $(){return e.jsxs("svg",{className:"s-conv-empty-mesh",viewBox:"0 0 72 72",fill:"none","aria-hidden":"true",children:[e.jsx("line",{className:"s-conv-empty-mesh-link",x1:"14",y1:"20",x2:"36",y2:"12"}),e.jsx("line",{className:"s-conv-empty-mesh-link",x1:"36",y1:"12",x2:"58",y2:"24"}),e.jsx("line",{className:"s-conv-empty-mesh-link",x1:"14",y1:"20",x2:"24",y2:"46"}),e.jsx("line",{className:"s-conv-empty-mesh-link",x1:"24",y1:"46",x2:"36",y2:"12"}),e.jsx("line",{className:"s-conv-empty-mesh-link",x1:"24",y1:"46",x2:"50",y2:"54"}),e.jsx("line",{className:"s-conv-empty-mesh-link",x1:"50",y1:"54",x2:"58",y2:"24"}),e.jsx("line",{className:"s-conv-empty-mesh-link",x1:"36",y1:"12",x2:"50",y2:"54"}),e.jsx("circle",{className:"s-conv-empty-mesh-node",cx:"14",cy:"20",r:"2.5"}),e.jsx("circle",{className:"s-conv-empty-mesh-node",cx:"58",cy:"24",r:"2.5"}),e.jsx("circle",{className:"s-conv-empty-mesh-node",cx:"24",cy:"46",r:"2.5"}),e.jsx("circle",{className:"s-conv-empty-mesh-node",cx:"50",cy:"54",r:"2.5"}),e.jsx("circle",{className:"s-conv-empty-mesh-node s-conv-empty-mesh-node--accent",cx:"36",cy:"12",r:"3.5"})]})}export{ts as MessagesScreen};
@@ -0,0 +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};
@@ -0,0 +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};
@@ -0,0 +1 @@
1
+ import{j as l}from"./index-DMiGbrBt.js";import{c as j}from"./colors-BtO5_zlx.js";import{s as x}from"./page-status-DpkedE1F.js";import{t as a}from"./time-DltNTpLl.js";import{R as b}from"./RailRow-BoGxAHNF.js";import"./AgentAvatar-D90c1Rzk.js";import"./SpriteAvatar-DyaGuhik.js";function C({agent:e,state:s,isExpanded:o,isSelected:i,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(t,{label:"MODEL",value:[e.harness,e.model].filter(Boolean).join("/")||"—"}),l.jsx(t,{label:"AT",value:[e.project,e.branch].filter(Boolean).join("/")||"—"}),l.jsx(t,{label:"STATE",value:j(s)}),l.jsx(t,{label:"ACTIVITY",value:e.activity}),l.jsx(t,{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?a(e.lastActiveAt):e.updatedAt?a(e.updatedAt):void 0,tone:s,caret:o?"open":"closed",selected:i,expanded:o,detail:p,tabIndex:n,onClick:u=>c(u),onPointerEnter:r.onPointerEnter,onPointerLeave:r.onPointerLeave})}function t({label:e,value:s}){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:s,children:s})]})}export{C as MissionLeftAgentRow};
@@ -0,0 +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};
@@ -0,0 +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};
@@ -0,0 +1 @@
1
+ .na-backdrop{--na-bg: var(--hud-bg);--na-ink: var(--scout-chrome-ink-strong);--na-muted: var(--scout-chrome-ink-soft);--na-dim: var(--scout-chrome-ink-faint);--na-hairline: color-mix(in srgb, var(--hud-ink) 10%, transparent);--na-accent: var(--accent);--na-mono: var(--hud-font-mono);--na-sans: var(--hud-font-sans);--na-radius: 8px;--na-radius-sm: 6px;--na-surface: color-mix(in srgb, var(--hud-surface) 80%, var(--na-bg));--na-field: color-mix(in srgb, var(--hud-surface) 36%, transparent);--na-danger: var(--hud-danger, #ff5a5f);--na-warn: var(--hud-warning, #e9b949);position:fixed;inset:0;z-index:10000;display:flex;align-items:flex-start;justify-content:center;padding:clamp(24px,8vh,80px) 16px;overflow-y:auto;background:color-mix(in srgb,black 56%,transparent);backdrop-filter:blur(5px) saturate(118%);-webkit-backdrop-filter:blur(5px) saturate(118%);animation:na-fade .12s ease-out;font-family:var(--na-sans);color:var(--na-ink)}@keyframes na-fade{0%{opacity:0}to{opacity:1}}.na-panel{width:min(560px,100%);display:flex;flex-direction:column;border:1px solid var(--na-hairline);border-radius:var(--na-radius);background:var(--na-surface);box-shadow:0 28px 80px -20px color-mix(in srgb,black 80%,transparent),inset 0 1px color-mix(in srgb,white 5%,transparent);outline:none;animation:na-rise .14s var(--av2-ease, cubic-bezier(.22, 1, .36, 1))}@keyframes na-rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.na-backdrop,.na-panel{animation:none}}.na-head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 12px;border-bottom:1px solid var(--na-hairline)}.na-headIdent{display:flex;align-items:baseline;gap:10px;min-width:0}.na-title{margin:0;font-size:var(--text-lg);font-weight:600;letter-spacing:.01em;color:var(--na-ink)}.na-scope{font-family:var(--na-mono);font-size:var(--text-sm);color:var(--na-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.na-close{flex:none;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:var(--na-radius-sm);background:transparent;color:var(--na-dim);cursor:pointer}.na-close:hover,.na-close:focus-visible{color:var(--na-ink);background:color-mix(in srgb,var(--hud-ink) 8%,transparent);outline:none}.na-context{flex:none;display:flex;flex-wrap:wrap;gap:6px 14px;padding:10px 16px;border-bottom:1px solid var(--na-hairline);background:color-mix(in srgb,var(--hud-surface) 22%,transparent)}.na-contextChip{display:inline-flex;align-items:baseline;gap:6px;min-width:0}.na-contextLabel{font-family:var(--na-mono);font-size:var(--text-3xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--na-dim)}.na-contextValue{font-family:var(--na-mono);font-size:var(--text-xs);color:var(--na-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:280px}.na-body{display:flex;flex-direction:column;gap:16px;padding:16px}.na-section{display:flex;flex-direction:column;gap:8px}.na-sectionLabel{font-family:var(--na-mono);font-size:var(--text-3xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--na-dim)}.na-modeChoice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.na-modeCard{display:flex;flex-direction:column;gap:3px;padding:10px 11px;border:1px solid var(--na-hairline);border-radius:var(--na-radius-sm);background:var(--na-field);color:var(--na-muted);cursor:pointer;text-align:left}.na-modeCard:hover{border-color:color-mix(in srgb,var(--hud-ink) 18%,transparent)}.na-modeCard[data-active]{border-color:color-mix(in srgb,var(--na-accent) 58%,var(--na-hairline));background:color-mix(in srgb,var(--na-accent) 11%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--na-accent) 22%,transparent)}.na-modeTitle{font-size:var(--text-md);font-weight:600;color:var(--na-ink)}.na-modeCard[data-active] .na-modeTitle{color:var(--na-accent)}.na-modeSub{font-family:var(--na-mono);font-size:var(--text-2xs);line-height:1.4;letter-spacing:.01em;color:var(--na-dim)}.na-field{min-width:0;display:flex;flex-direction:column;gap:4px}.na-field>span{font-family:var(--na-mono);font-size:var(--text-3xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--na-dim)}.na-field input,.na-prompt{width:100%;min-width:0;border:1px solid var(--na-hairline);border-radius:var(--na-radius-sm);background:var(--na-field);color:var(--na-ink);font:inherit;font-size:var(--text-md);outline:none}.na-field input{height:30px;padding:0 9px}.na-field input::placeholder,.na-prompt::placeholder{color:var(--na-dim)}.na-field input:focus,.na-prompt:focus{border-color:color-mix(in srgb,var(--na-accent) 50%,var(--na-hairline));box-shadow:0 0 0 1px color-mix(in srgb,var(--na-accent) 18%,transparent)}.na-prompt{resize:vertical;min-height:64px;max-height:200px;padding:8px 9px;line-height:1.5}.na-harnessRow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.na-harness{display:flex;flex-direction:column;align-items:flex-start;gap:5px;padding:9px 10px;border:1px solid var(--na-hairline);border-radius:var(--na-radius-sm);background:var(--na-field);color:var(--na-muted);cursor:pointer;text-align:left}.na-harness:hover{color:var(--na-ink);border-color:color-mix(in srgb,var(--hud-ink) 18%,transparent)}.na-harness[data-active]{color:var(--na-ink);border-color:color-mix(in srgb,var(--na-accent) 55%,var(--na-hairline));background:color-mix(in srgb,var(--na-accent) 10%,transparent)}.na-harnessName{font-size:var(--text-md);font-weight:600}.na-harnessState{display:inline-flex;align-items:center;gap:4px;font-family:var(--na-mono);font-size:var(--text-3xs);font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--na-dim)}.na-dot{width:5px;height:5px;border-radius:50%;background:currentColor}.na-harnessState[data-tone=ok]{color:var(--na-accent)}.na-harnessState[data-tone=warn]{color:var(--na-warn)}.na-harnessState[data-tone=off]{color:var(--na-dim)}.na-readinessNote{margin:0;font-size:var(--text-xs);line-height:1.45;color:var(--na-muted)}.na-readinessNote[data-tone=off]{color:color-mix(in srgb,var(--na-danger) 70%,var(--na-muted))}.na-handleWrap{display:flex;align-items:center;height:30px;border:1px solid var(--na-hairline);border-radius:var(--na-radius-sm);background:var(--na-field);padding-left:8px}.na-handleWrap:focus-within{border-color:color-mix(in srgb,var(--na-accent) 50%,var(--na-hairline));box-shadow:0 0 0 1px color-mix(in srgb,var(--na-accent) 18%,transparent)}.na-handleWrap[data-tone=warn]{border-color:color-mix(in srgb,var(--na-warn) 55%,var(--na-hairline))}.na-handleAt{font-family:var(--na-mono);font-size:var(--text-md);color:var(--na-dim)}.na-handleWrap input{flex:1;min-width:0;height:100%;border:none;background:transparent;color:var(--na-ink);font-family:var(--na-mono);font-size:var(--text-md);padding:0 8px 0 2px;outline:none}.na-suggestRow{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.na-suggestLabel{font-family:var(--na-mono);font-size:var(--text-3xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--na-dim)}.na-suggest{padding:3px 7px;border:1px solid var(--na-hairline);border-radius:999px;background:transparent;color:var(--na-muted);font-family:var(--na-mono);font-size:var(--text-xs);cursor:pointer}.na-suggest:hover{color:var(--na-ink);border-color:color-mix(in srgb,var(--na-accent) 45%,var(--na-hairline));background:color-mix(in srgb,var(--na-accent) 9%,transparent)}.na-validation{margin:0;font-size:var(--text-xs);line-height:1.45;color:var(--na-muted)}.na-validation[data-tone=warn]{color:color-mix(in srgb,var(--na-warn) 86%,var(--na-ink))}.na-validation[data-tone=hint]{color:var(--na-muted)}.na-code{font-family:var(--na-mono);font-size:var(--text-xs);color:var(--na-ink)}.na-routing .na-routingBody{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid var(--na-hairline);border-radius:var(--na-radius-sm);background:color-mix(in srgb,var(--hud-surface) 28%,transparent)}.na-routingLine{display:flex;align-items:baseline;gap:8px;min-width:0}.na-routingKey{flex:none;width:52px;font-family:var(--na-mono);font-size:var(--text-3xs);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--na-dim)}.na-routingValue{flex:1;min-width:0;font-family:var(--na-mono);font-size:var(--text-sm);color:var(--na-muted);word-break:break-all}.na-routingCard{color:var(--na-accent);font-weight:600}.na-routingResolves{margin:2px 0 0;font-size:var(--text-xs);line-height:1.45;color:var(--na-muted)}.na-routingNote{margin:0;font-size:var(--text-2xs);line-height:1.45;color:var(--na-dim)}.na-routing .na-routingBody[data-disposable]{flex-direction:row;align-items:center;justify-content:space-between;gap:12px;border-style:dashed;background:transparent}.na-routingBody[data-disposable] .na-routingResolves{margin:0}.na-promote{flex:none;padding:4px 9px;border:1px solid color-mix(in srgb,var(--na-accent) 40%,var(--na-hairline));border-radius:999px;background:transparent;color:var(--na-accent);font-family:var(--na-mono);font-size:var(--text-2xs);font-weight:700;letter-spacing:.03em;cursor:pointer;white-space:nowrap}.na-promote:hover{background:color-mix(in srgb,var(--na-accent) 12%,transparent);color:var(--na-ink)}.na-error{margin:0 16px;padding:7px 9px;border:1px solid color-mix(in srgb,var(--na-danger) 30%,transparent);border-radius:var(--na-radius-sm);background:color-mix(in srgb,var(--na-danger) 9%,transparent);color:color-mix(in srgb,var(--na-danger) 84%,var(--na-ink));font-size:var(--text-sm)}.na-foot{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px 14px;margin-top:4px;border-top:1px solid var(--na-hairline)}.na-footRoot{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--na-mono);font-size:var(--text-2xs);color:var(--na-dim)}.na-footActions{flex:none;display:flex;align-items:center;gap:8px}.na-cancel{height:30px;padding:0 12px;border:1px solid var(--na-hairline);border-radius:var(--na-radius-sm);background:transparent;color:var(--na-muted);font-family:var(--na-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:.03em;cursor:pointer}.na-cancel:hover{color:var(--na-ink);border-color:color-mix(in srgb,var(--hud-ink) 18%,transparent)}.na-create{height:30px;display:inline-flex;align-items:center;gap:6px;padding:0 14px;border:1px solid color-mix(in srgb,var(--na-accent) 42%,transparent);border-radius:var(--na-radius-sm);background:color-mix(in srgb,var(--na-accent) 16%,transparent);color:var(--na-accent);font-family:var(--na-mono);font-size:var(--text-xs);font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}.na-create:hover:not(:disabled){background:color-mix(in srgb,var(--na-accent) 24%,transparent);color:var(--na-ink)}.na-create:disabled{cursor:not-allowed;opacity:.46}
@@ -0,0 +1,19 @@
1
+ import{r as l,j as o}from"./index-DMiGbrBt.js";import{M as $s}from"./runtime-picker-Bcl5iIX5.js";import{i as qt,b as Ps,d as Ye,M as Gt,u as _s}from"./MessageComposerSuggestions-DpxN9WiB.js";import{r as Os}from"./index-CJXzfjo9.js";import{H as Kt}from"./HarnessMark-Cbv3Ib0c.js";import{c as Fs,S as Wt,E as Hs,F as Us}from"./conversation-model-B47vYmWN.js";import{a as ee}from"./api-h5zurxmi.js";import{d as Bs}from"./colors-BtO5_zlx.js";import{NewChatOrigin as qs}from"./NewChatOrigin-Bk2OyVjI.js";import{u as Gs}from"./keyboard-nav-2kv_tGUS.js";import{e as Ks}from"./agent-chat-Bfjd9y6c.js";import{n as Ws}from"./model-Co0zkMIc.js";import{X as zs}from"./x-D3GElQbe.js";import{C as Xs}from"./chevron-down-BGk5qoEw.js";import{S as Qs}from"./search-CWfZtOt2.js";import{L as mt}from"./loader-circle-CbHjZsz1.js";import{F as Vs}from"./file-text-BODxCjcz.js";const 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"},ce={schemaVersion:"openscout.runtime-catalog.v1",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.5",label:"Grok 4.5",enabled:!0,default:!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.5",label:"Grok 4.5",enabled:!0,default:!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:[]}]};function jt(e){return ce.harnesses.find(t=>t.id===e)}function Js(){return ce.harnesses.find(e=>e.enabled&&e.default)?.id??ce.harnesses.find(e=>e.enabled)?.id??null}function ss(e){const t=jt(e);return t?.models.find(n=>n.enabled&&n.default)?.id??t?.models.find(n=>n.enabled)?.id??null}function Ys(e,t){const n=jt(e);if(!n||!n.enabled)return null;const s=t?n.models.find(a=>a.enabled&&a.id===t):void 0;return s?.reasoningEfforts===null?null:s?.reasoningEfforts??n.reasoningEfforts}function ns(e,t){const n=jt(e),s=t?n?.models.find(m=>m.enabled&&m.id===t):void 0,a=Ys(e,t),i=s?.defaultReasoningEffort??n?.defaultReasoningEffort??null;return i&&a?.includes(i)?i:a?.[0]??null}const Zs=Object.fromEntries(ce.harnesses.filter(e=>e.enabled).map(e=>{const t=ss(e.id);return[e.id,{model:t,reasoningEffort:ns(e.id,t)}]}));Object.fromEntries(ce.harnesses.filter(e=>e.enabled).map(e=>{const t=yt.filter(n=>e.reasoningEfforts?.includes(n)||e.models.some(s=>s.enabled&&s.reasoningEfforts?.includes(n)));return[e.id,t]}));const en=(()=>{const e=new Map;for(const t of ce.harnesses)if(t.enabled)for(const n of t.models){if(!n.enabled)continue;const s=e.get(n.id);if(s){s.harnesses.includes(t.id)||s.harnesses.push(t.id);continue}e.set(n.id,{id:n.id,label:n.label,...n.description?{description:n.description}:{},harnesses:[t.id],source:"default",...n.family?{family:n.family}:{},...n.version?{version:n.version}:{}})}return Array.from(e.values())})(),tn={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"},sn=yt.flatMap(e=>{const t=[],n=[];for(const s of ce.harnesses){if(!s.enabled)continue;const a=s.models.filter(w=>w.enabled),i=a.filter(w=>(w.reasoningEfforts??s.reasoningEfforts)?.includes(e)),m=a.length===0&&s.reasoningEfforts?.includes(e);i.length===0&&!m||(t.push(s.id),a.length>0&&i.length<a.length&&n.push(...i.map(w=>w.id)))}return t.length===0?[]:[{id:e,label:ts[e],description:tn[e],harnesses:t,...n.length>0?{models:n}:{}}]});function nn(e,t){const n=t?.trim();return n?e.find(s=>s.id===n)??null:null}function rn(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 n=nn(t,e.agentId),s=e.conversationId??n?.conversationId??null;return{agentId:e.agentId,conversationId:s,label:n?.name??e.agentId,canUseExistingChat:!!s}}return{agentId:null,conversationId:null,label:"Pick a project",canUseExistingChat:!1}}const H="",on={none:"no reasoning",minimal:"lightest",low:"triage",medium:"default",high:"deep",xhigh:"exhaustive",max:"fullest",ultra:"beyond max"},an=yt.map(e=>({value:e,label:ts[e],note:on[e]}));function Re(e,t){return e.harnesses.find(n=>n.value===t)}function Ct(e,t){return Re(e,t)?.models??[]}function Ee(e,t,n){const s=Re(e,t),a=s?s.efforts===null?null:s.efforts??e.efforts:e.efforts;if(!a||!n)return a;const i=new Set((s?.models??[]).map(m=>m.value));return i.has(n)?a.filter(m=>{if(!m.models||m.models.length===0)return!0;const w=m.models.filter(v=>i.has(v));return w.length===0||w.includes(n)}):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 ln(e,t){const n=Re(e,t.harness),s=n?.label??t.harness??"Default",a=rs(e,t),i=Ee(e,t.harness,t.model),m=i?.find(F=>F.value===t.effort),w=m?.label??t.effort,v=i?`Runtime: ${s}, model ${a.label}, effort ${w}`:`Runtime: ${s}, model ${a.label}`;return{harness:n,harnessLabel:s,model:a,modelLabel:a.label,effort:m,effortLabel:w,supportsEffort:i!==null,summary:v}}function cn(e,t,n){const s={...t,...n};if(!(n.harness!==void 0&&n.harness!==t.harness)){if(n.model===void 0||n.model===t.model)return s;const L=Ee(e,s.harness,s.model);if(!L||s.effort===H||L.some(z=>z.value===s.effort))return s;const de=(Ee(e,t.harness,t.model)??e.efforts).findIndex(z=>z.value===t.effort),W=Math.min(Math.max(de,0),L.length-1);return s.effort=L[W]?.value??L[0]?.value??H,s}const i=Re(e,s.harness);s.model=n.model??i?.defaultModel??H,n.effort===void 0&&i?.defaultEffort&&(s.effort=i.defaultEffort);const m=Ee(e,s.harness,s.model);if(!m)return s.effort=H,s;if(m.some(L=>L.value===s.effort))return s;const v=(Ee(e,t.harness,t.model)??e.efforts).findIndex(L=>L.value===t.effort),F=Math.min(Math.max(v,0),m.length-1);return s.effort=m[F]?.value??m[0]?.value??H,s}function dn(e,t){const n=t?.harness??e.harnesses.find(i=>!i.disabled)?.value??"",s=Ee(e,n),a=s?.find(i=>i.note==="default")?.value??s?.[Math.floor((s.length-1)/2)]?.value??H;return{harness:n,model:t?.model??Re(e,n)?.defaultModel??Ct(e,n)[1]?.value??H,effort:s?t?.effort??Re(e,n)?.defaultEffort??a:H}}function un(e,t){const n=t.trim().toLowerCase();return n?e.filter(s=>`${s.label} ${s.value} ${s.note??""}`.toLowerCase().includes(n)):e}function Oe(...e){for(const t of e){const n=t?.trim();if(n)return n}}function os(e){const t=e.harnesses.map(s=>{const a=e.defaultsByHarness?.[s.id],i=s.ready!==!1,m=[{value:H,label:"Default",note:"harness picks"},...e.models.filter(v=>v.harnesses.includes(s.id)).map(v=>({value:v.id,label:v.label,note:Oe(v.description)}))],w=e.efforts.filter(v=>v.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:m,efforts:w.length===0?null:w.map(v=>({value:v.id,label:v.label,note:Oe(v.description),...v.models?.length?{models:[...v.models]}:{}}))}}),n=e.efforts.map(s=>({value:s.id,label:s.label,note:Oe(s.description)}));return{harnesses:t,efforts:n.length>0?n:an}}const fn=6,ht=34,pt=460,mn=14,hn=300,Fe=8,gt=["harness","model","effort"],pn={harness:"vertical",model:"vertical",effort:"horizontal"};function gn(){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 bn({ctx:e}){const{efforts:t,value:n,set:s}=e;if(!t)return null;const a=Math.max(0,t.findIndex(i=>i.value===n.effort));return o.jsx("div",{className:"s-rt-ladder",role:"radiogroup","aria-label":"Reasoning effort",children:t.map((i,m)=>{const w=m===a;return o.jsxs("button",{type:"button",role:"radio","aria-checked":w,title:i.note,onClick:()=>s({effort:i.value}),...e.cell("effort",m),className:"s-rt-step",children:[o.jsx("span",{className:"s-rt-step-bar","data-state":w?"current":m<a?"filled":"empty"}),o.jsx("span",{className:"s-rt-step-label",children:i.label})]},i.value)})})}function xn({harnessLabel:e}){return o.jsxs("p",{className:"s-rt-effort-absent",children:[e," has no effort control."]})}function wn({option:e,selected:t,index:n,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",n),style:{animationDelay:`${Math.min(n,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 vn({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 yn({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 jn({ctx:e}){return e.status!=="ready"||e.models.length===0?o.jsx(yn,{ctx:e}):o.jsx("div",{role:"listbox","aria-label":"Model",className:"s-rt-models",children:e.models.map((t,n)=>o.jsx(wn,{option:t,index:n,selected:t.value===e.value.model,ctx:e},t.value||"default"))},e.value.harness)}function zt({value:e,defaultValue:t,onChange:n,catalog:s,status:a="ready",statusMessage:i,onRetry:m,disabled:w=!1,showEffort:v,searchable:F="auto",className:L}){const[y,de]=l.useState(!1),[W,z]=l.useState(""),[Ue,Be]=l.useState(()=>dn(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 f=cn(s,j,d);e===void 0&&Be(f),n?.(f),d.harness!==void 0&&d.harness!==j.harness&&z("")},[s,e,n,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]),te=l.useMemo(()=>un($,W),[$,W]),Le=Ee(s,j.harness,j.model),X=v===!1?null:v===!0?Le??s.efforts:Le,D=F==="auto"?$.length>fn:F,Q=ln(s,j),N=l.useRef(new Map),[he,R]=l.useState({group:"model",index:0}),A=l.useMemo(()=>({harness:T.length,model:a==="ready"?te.length:0,effort:X?.length??0}),[X?.length,T.length,te.length,a]),se=l.useCallback(d=>d==="harness"?Math.max(0,T.findIndex(f=>f.value===j.harness)):d==="model"?Math.max(0,te.findIndex(f=>f.value===j.model)):Math.max(0,X?.findIndex(f=>f.value===j.effort)??0),[X,T,te,j]),I=l.useCallback((d,f)=>{R({group:d,index:f}),N.current.get(`${d}:${f}`)?.focus()},[]),pe=l.useCallback((d,f)=>{const g=gt.indexOf(d);for(let b=g+f;b>=0&&b<gt.length;b+=f){const O=gt[b];if(A[O]>0)return I(O,Math.min(se(O),A[O]-1)),!0}return!1},[A,I,se]),ye=l.useCallback((d,f)=>({ref:g=>{const b=`${d}:${f}`;g?N.current.set(b,g):N.current.delete(b)},tabIndex:he.group===d&&he.index===f?0:-1,onFocus:()=>R({group:d,index:f}),onKeyDown:g=>{const b=pn[d]==="vertical",O=b?"ArrowDown":"ArrowRight",B=b?"ArrowUp":"ArrowLeft",qe=b?"ArrowRight":"ArrowDown",tt=b?"ArrowLeft":"ArrowUp",ge=A[d];if(ge!==0)if(g.key===O)g.preventDefault(),I(d,(f+1)%ge);else if(g.key===B){if(g.preventDefault(),d==="model"&&f===0&&D){R({group:d,index:0}),me.current?.focus();return}I(d,(f-1+ge)%ge)}else g.key===qe?(g.preventDefault(),pe(d,1)):g.key===tt?(g.preventDefault(),pe(d,-1)):g.key==="Home"?(g.preventDefault(),I(d,0)):g.key==="End"&&(g.preventDefault(),I(d,ge-1))}}),[A,he,I,pe,D]),Te=l.useCallback(d=>{if(d.key==="ArrowDown"&&A.model>0)d.preventDefault(),I("model",0);else if(d.key==="Enter"&&A.model===1){d.preventDefault();const f=te[0];f.disabled||ve({model:f.value})}else d.key==="Escape"&&W&&(d.preventDefault(),d.stopPropagation(),z(""))},[A.model,I,te,W,ve]),[U,M]=l.useState(null),V=l.useCallback(()=>{const d=ue.current;if(!d)return;const f=d.getBoundingClientRect(),g=f.top,b=window.innerHeight-f.bottom,O=g>=hn||g>=b?"up":"down",B=Math.min(Math.max(Fe,f.right-pt),Math.max(Fe,window.innerWidth-pt-Fe));M({left:B,top:O==="up"?f.top-Fe:f.bottom+Fe,placement:O})},[]);l.useLayoutEffect(()=>{if(!y)return;V();const d=()=>V();return window.addEventListener("scroll",d,!0),window.addEventListener("resize",d),()=>{window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d)}},[y,V]);const ne=l.useCallback(d=>{de(!1),d&&ue.current?.focus()},[]);l.useEffect(()=>{if(!y)return;const d=g=>{const b=g.target;C.current?.contains(b)||fe.current?.contains(b)||de(!1)},f=g=>{g.key==="Escape"&&(g.stopPropagation(),ne(!0))};return document.addEventListener("pointerdown",d),document.addEventListener("keydown",f),()=>{document.removeEventListener("pointerdown",d),document.removeEventListener("keydown",f)}},[y,ne]),l.useEffect(()=>{if(!y)return;const d=A.model>0?"model":"harness",f=Math.min(se(d),Math.max(0,A[d]-1));R({group:d,index:f});const g=requestAnimationFrame(()=>{const b=N.current.get(`${d}:${f}`);b?b.focus():fe.current?.focus()});return()=>cancelAnimationFrame(g)},[y]),l.useEffect(()=>{y||z("")},[y]),l.useEffect(()=>{w&&de(!1)},[w]);const De=Math.max(0,T.findIndex(d=>d.value===j.harness)),k={value:j,set:ve,status:a,statusMessage:i,onRetry:m,harnesses:T,models:te,efforts:X,harnessLabel:Q.harnessLabel,searchable:D,query:W,setQuery:z,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${w?" s-rt-chip--disabled":""}`,"aria-haspopup":"dialog","aria-expanded":y,"aria-controls":y?S:void 0,"aria-label":Q.summary,disabled:w,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:`${mn}ch`},children:o.jsx("span",{className:"s-rt-chip-model-text",children:Q.modelLabel},Q.modelLabel)}),X&&Q.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:Q.effortLabel})]}):null]}),o.jsx(gn,{})]}),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,f)=>{const g=d.value===j.harness,b=d.disabled??!1;return o.jsxs("button",{type:"button",role:"radio","aria-checked":g,"aria-disabled":b||void 0,onClick:()=>{b||k.set({harness:d.value})},style:{height:ht},"data-on":g||void 0,"data-disabled":b||void 0,title:b?d.note:void 0,...k.cell("harness",f),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(vn,{ctx:k}):null,o.jsx(jn,{ctx:k})]})]}),o.jsx("div",{className:"s-rt-effort-foot",children:X?o.jsx(bn,{ctx:k}):o.jsx(xn,{harnessLabel:Q.harnessLabel})})]})}),document.body):null]})}const wt=Js()??"",Xt=ss(wt),Se={schemaVersion:"openscout.runtime-capabilities.v1",catalogVersion:ce.schemaVersion,defaults:{harness:wt,model:Xt,reasoningEffort:ns(wt,Xt)},defaultsByHarness:Zs,harnesses:ce.harnesses.filter(e=>e.enabled).map(e=>({id:e.id,label:e.label})),models:en.map(e=>({id:e.id,label:e.label,...e.description?{description:e.description}:{},harnesses:[...e.harnesses]})),efforts:sn.map(e=>({id:e.id,label:e.label,...e.description?{description:e.description}:{},harnesses:[...e.harnesses],...e.models?{models:[...e.models]}:{}}))};function Ir(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 Cn="|";function Qt(e){return e<55296?e:e<57344?e+8192:e-2048}function En(e,t){if(e===t)return 0;const n=Math.min(e.length,t.length);for(let s=0;s<n;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 Sn(e,t){const n=Vt(e.createdAt),s=Vt(t.createdAt);return n!==s?n<s?-1:1:En(e.id,t.id)}function Mn(e){return`${Number.isFinite(e.createdAt)?Math.max(0,Math.trunc(e.createdAt)):0}${Cn}${e.id}`}const Nn=10,In=80,Jt=300,Yt=100,as=2e3,kn=Nn,we=new Map,le=new Map;let is=0;function Ne(e){return e.trim()}function Rn(e){const t=new Map;for(const n of e)t.set(n.id,n);return[...t.values()].sort(Sn)}function An(){if(we.size<=kn)return;let e=null,t=Number.POSITIVE_INFINITY;for(const[n,s]of we)s.touchedAt<t&&(e=n,t=s.touchedAt);e&&we.delete(e)}function Me(e){const t=Ne(e),n=we.get(t);return n?(n.touchedAt=++is,n.messages):null}function Et(e,t,n={}){const s=Ne(e);if(!s)return[];const a=we.get(s),i=Rn(t).slice(-as);return we.set(s,{messages:i,historyLoaded:n.historyLoaded??a?.historyLoaded??!1,historyExhausted:n.historyExhausted??a?.historyExhausted??!1,touchedAt:++is}),An(),i}function ls(e,t){const n=Me(e)??[];return Et(e,[...n,...t])}function cs(e){return we.get(Ne(e))?.historyLoaded??!1}function Ln(e){const t=we.get(Ne(e));return!!(t&&t.historyLoaded&&!t.historyExhausted&&t.messages.length>0&&t.messages.length<as)}async function kr(e,t={}){const n=Ne(e);if(!n)return[];const s=Me(n);if(s&&!t.refresh)return s;const a=le.get(n);if(a)return a;const i=ee(`/api/messages?conversationId=${encodeURIComponent(n)}&limit=${In}`).then(m=>ls(n,m));le.set(n,i);try{return await i}finally{le.delete(n)}}async function Tn(e){const t=Ne(e);if(!t)return[];if(cs(t))return Me(t)??[];const n=`${t}:history`,s=le.get(n);if(s)return s;const a=ee(`/api/messages?conversationId=${encodeURIComponent(t)}&limit=${Jt}`).then(i=>Et(t,[...Me(t)??[],...i],{historyLoaded:!0,historyExhausted:i.length<Jt}));le.set(n,a);try{return await a}finally{le.delete(n)}}async function Rr(e){const t=Ne(e);if(!t)return[];if(!cs(t))return Tn(t);if(!Ln(t))return Me(t)??[];const n=Me(t)??[],s=n[0];if(!s)return n;const a=Mn(s),i=`${t}:before:${a}`,m=le.get(i);if(m)return m;const w=ee(`/api/messages?conversationId=${encodeURIComponent(t)}&limit=${Yt}&beforeMessageId=${encodeURIComponent(a)}`).then(v=>Et(t,[...v,...Me(t)??[]],{historyLoaded:!0,historyExhausted:v.length<Yt}));le.set(i,w);try{return await w}finally{le.delete(i)}}const Dn=12e4,He=new Map;function $n(){const e=globalThis.crypto?.randomUUID?.();return e?`web-${e}`:`web-${Date.now()}-${Math.random().toString(36).slice(2,10)}`}function Pn(e){const t=e.conversationId.trim(),n=e.messageId.trim();if(!t||!n)return;ls(t,[{id:n,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()+Dn})}function Ar(e,t=Date.now()){const n=e.trim(),s=He.get(n);return s?s.expiresAt<=t?(He.delete(n),null):s.flight:null}function Lr(e,t){const n=e.trim(),s=He.get(n);s&&(!t||s.flight.id===t)&&He.delete(n)}const _n=1200,On=new Set(["Page","URL"]);function ds(e){return e.trim().slice(0,_n)}function Fn(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((n,s)=>{t.push({label:`Note ${s+1}`,value:n})}),t.filter(n=>n.value.trim())}function Hn(e,t){const n=[];for(const a of t){const i=a.value.trim();i&&(On.has(a.label)?n.push(`${a.label}: ${i}`):n.push(`${a.label}:
2
+ ${i.split(`
3
+ `).map(m=>`> ${m}`).join(`
4
+ `)}`))}const s=e.trim();return s&&n.push(s),n.join(`
5
+
6
+ `)}const Un=6,Zt=1600;function Bn(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(),n=Bn(e.attachmentCount??0),s=[t,n].filter(Boolean).join(`
7
+ `)||"(message has no text)";return s.length<=Zt?s:`${s.slice(0,Zt-1).trimEnd()}…`}function qn(e){const t=us(e).split(/\r?\n/gu).map(n=>`> ${n}`).join(`
8
+ `);return`Forwarded from ${e.actorLabel} in Scout
9
+
10
+ ${t}`}function Tr(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 n=e.messages[t],s=e.messages.slice(Math.max(0,t-Un),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:qn(n),selectedMessageId:n.id,sourceConversationId:e.conversationId,...a?{recentContext:a}:{},recentMessageCount:s.length}}function Gn(e,t,n){const s=n.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 Kn(e,t,n="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()||n,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()||n,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 Wn(e,t){const n=e.title.toLocaleLowerCase(),s=e.root.toLocaleLowerCase(),a=vt(e.root).toLocaleLowerCase();return n===t||a===t||s===t?0:n.startsWith(t)||a.startsWith(t)?1:s.startsWith(t)?2:t.split(/\s+/u).filter(Boolean).every(m=>n.includes(m)||s.includes(m))?3:null}function zn(e,t){const n=t.trim().toLocaleLowerCase();return n?e.map(s=>({project:s,score:Wn(s,n)})).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 Xn(e,t){return e===t||e.startsWith(`${t}/`)}function Qn(e,t){const n=et(t.preferredRoot);if(n){const a=e.find(i=>i.root===n);if(a)return a}const s=et(t.currentDirectory);if(s){const a=e.filter(i=>Xn(s,i.root)).sort((i,m)=>m.root.length-i.root.length)[0];if(a)return a}return e[0]??null}async function Vn(e){await ee("/api/send",{method:"POST",body:JSON.stringify({conversationId:e.conversationId,body:e.body?.trim()??"",attachments:e.attachments})})}async function Jn(e,t){const n=t?.attachments?.filter(Boolean)??[],s=t?.instructions?.trim(),a=Ws(e),i=s||n.length>0?{...a,seed:{...s?{instructions:s}:{},...n.length>0?{attachments:n}:{},...t?.clientMessageId?{clientMessageId:t.clientMessageId}:{}}}:a;return await ee("/api/sessions",{method:"POST",body:JSON.stringify(i)})}async function Yn(e){const t=e.projectPath.trim(),n=e.harness?.trim(),s=e.model?.trim(),a=e.reasoningEffort?.trim(),i=e.instructions?.trim(),m=e.fromMessageId?.trim(),w=e.fromConversationId?.trim(),v=e.attachments?.filter(Boolean)??[];return ee("/api/sessions",{method:"POST",body:JSON.stringify({target:{projectPath:t},execution:{session:"new",...n?{harness:n}:{},...s?{model:s}:{},...a?{reasoningEffort:a}:{}},agent:{persistence:"one_time"},...i||v.length>0||m&&w?{seed:{...i?{instructions:i}:{},...v.length>0?{attachments:v}:{},...e.clientMessageId?{clientMessageId:e.clientMessageId}:{},...m&&w?{fromMessageId:m,fromConversationId:w}:{}}}:{}})})}async function Dr(e){return ee("/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 $r(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 Pr(e){const t=e.projectPath.trim(),n=e.sessionId.trim(),s=e.instructions.trim(),a=e.harness?.trim()||void 0,i=e.model?.trim()||void 0,m=e.reasoningEffort?.trim()||void 0;return ee("/api/sessions",{method:"POST",body:JSON.stringify({target:{projectPath:t},execution:{session:"existing",targetSessionId:n,...a?{harness:a}:{},...i?{model:i}:{},...m?{reasoningEffort:m}:{}},seed:{instructions:s}})})}async function Zn(e,t){const n=t.message?.trim();if(t.mode==="existing-chat"){const i=await Ks(e);return await Vn({conversationId:i,body:n||"Shared capture",attachments:t.attachments}),{conversationId:i,agentId:e.id}}const s=await Jn(e,{instructions:n||"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})),er=Se.models.map(e=>({id:e.id,label:e.label??e.id,description:e.description??null,harnesses:[...e.harnesses],source:"catalog"})),tr=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:er,efforts:tr};let bt=null;const es=5;function sr(e,t){const n=e.defaults.harness===t?e.defaults.model?.trim()??"":"";return n&&e.models.some(s=>s.id===n&&s.harnesses.includes(t))?n:e.models.find(s=>s.harnesses.includes(t))?.id??""}function nr(e,t){const n=e.efforts.filter(s=>s.harnesses.includes(t));return n.find(s=>s.id===e.defaults.reasoningEffort)?.id??n.find(s=>s.id==="medium")?.id??n[0]?.id??""}function rr(e){return URL.createObjectURL(e)}function xt(e){return e.replace(/^\/Users\/[^/]+/u,"~")}function or(e){return e.split("/").filter(Boolean).at(-1)??e}function ar(e){const t=e.trim();return t.startsWith("/")||t.startsWith("~/")}function ir({file:e,onRemove:t}){const n=l.useMemo(()=>rr(e),[e]);l.useEffect(()=>()=>URL.revokeObjectURL(n),[n]);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:n,muted:!0,playsInline:!0}):a?o.jsx("img",{src:n,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 lr({agents:e,route:t,navigate:n,onClose:s,initialAgentId:a,initialConversationId:i,initialMessage:m,initialFiles:w,initialAttachmentFeedback:v,initialIntent:F="new-task",initialProjectPath:L,initialForwardContext:y,initialForwardContextMode:de="selected-message",defaultMode:W,draftRestored:z=!1,onDraftChange:Ue,onDraftConsumed:Be}){const j=l.useMemo(()=>rn(t,e),[t,e]),C=F==="forward-message"&&!!y,ue=l.useMemo(()=>[...e].sort((r,c)=>(c.updatedAt??0)-(r.updatedAt??0)),[e]),fe=F==="route-capture"?a??j.agentId??null:null,me=F==="route-capture"?i??j.conversationId:null,S=ue.find(r=>r.id===fe)??null,ve=S?.projectRoot??S?.cwd??null,[T,Ae]=l.useState(null),[$,te]=l.useState(bt),[Le,X]=l.useState(null),[D,Q]=l.useState(null),[N,he]=l.useState(()=>L||ve||""),[R,A]=l.useState(""),[se,I]=l.useState(0),[pe,ye]=l.useState(!1),[Te,U]=l.useState(null),[M,V]=l.useState(()=>m??""),[ne,De]=l.useState(de),[k,d]=l.useState({open:!1,query:"",triggerStart:-1,index:0}),[f,g]=l.useState({open:!1,query:"",triggerStart:-1,index:0}),[b,O]=l.useState(()=>[...w??[]]),[B,qe]=l.useState(()=>W||(me?"existing-chat":"new-session")),[tt,ge]=l.useState("idle"),[ms,st]=l.useState("idle"),[St,je]=l.useState(null),[Ge,Mt]=l.useState(()=>v??null),[$e]=l.useState(()=>{if(typeof window>"u")return{title:"",url:"",selection:""};const r=document.activeElement,c=r instanceof HTMLInputElement||r instanceof HTMLTextAreaElement;return{title:document.title,url:window.location.href,selection:c?"":ds(window.getSelection()?.toString()??"")}}),[nt,hs]=l.useState(!1),[re,Nt]=l.useState(()=>S?.harness?.trim()||Ze.defaults.harness),[Ke,It]=l.useState(()=>S?.model?.trim()||Ze.defaults.model||""),[We,kt]=l.useState(Ze.defaults.reasoningEffort||""),[rt,Rt]=l.useState(()=>z?"Restored your unsent draft.":null),[ps,ot]=l.useState(0),{ref:gs,onKeyDown:bs}=Gs(!0),P=l.useRef(null),at=l.useRef(null),Ce=l.useRef(0),ze=l.useRef(!!L),At=l.useRef(!1),J=l.useMemo(()=>Kn(T?.projects??[],e,T?.context.defaultHarness??"claude"),[e,T]),E=J.find(r=>r.root===N)??null??(N?{id:`direct:${N}`,title:or(N),root:N,defaultHarness:T?.context.defaultHarness??S?.harness??"claude",source:"agent",registrationKind:null}:null),it=l.useMemo(()=>{const r=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)||"",G=p.toLowerCase();return!p||r.has(G)?[]:(r.add(G),[{id:u.id,label:p,name:u.name||p,handle:p}])})},[E,ue]),Y=($?.harnesses??fs).find(r=>r.id===re)??null,Ie=!$&&!D,Lt=l.useMemo(()=>{const r=os($??Ze);return re&&!r.harnesses.some(c=>c.value===re)?{...r,harnesses:[...r.harnesses,{value:re,label:re,models:[{value:"",label:"Default",note:"harness picks"}]}]}:r},[$,re]),Pe=l.useMemo(()=>zn(J,R),[R,J]),Z=l.useMemo(()=>{const r=Pe.slice(0,es);if(!N||r.some(h=>h.root===N))return r;const c=Pe.find(h=>h.root===N);return c?[c,...r.slice(0,es-1)]:r},[Pe,N]),be=ar(R)&&!J.some(r=>r.root===R.trim())?R.trim():null,Xe=Z.length+(be?1:0),xs=Math.max(0,(R.trim()?Pe.length:J.length)-Z.length),ws=!!(S&&E&&[S.projectRoot,S.cwd].some(r=>r?.trim()===E.root)),q=b.length>0,x=tt==="starting",Tt=ps>0,Qe=ws&&!!(S?.conversationId||me),xe=!q||!Qe||B==="new-session",Dt=xe&&(Ie||Y?.ready===!1),$t=C?"Forward to new task":q?"Route capture":"New task",Pt=l.useMemo(()=>C?[]:Fn({pageTitle:$e.title,pageUrl:$e.url,selection:nt?$e.selection:void 0}),[nt,C,$e]),oe=C&&y?Gn(y,ne,M):Hn(M,Pt),vs=ms==="uploading"?"Uploading capture":C?"Forwarding to new task":q?"Routing capture":"Sending message",ys=q?`Submitted to ${E?.title??S?.name??"Scout"}. Opening the chat when the broker returns it.`:oe?`Routing your first message through /${E?.title??S?.name??"project"}.`:`Starting a project-routed chat in /${E?.title??S?.name??"project"}.`,_t=q&&Qe,js=xe&&(Ie||!!D||Y?.ready===!1),Cs=_t||!C&&js,ae=l.useMemo(()=>{if(!k.open)return[];const r=k.query.toLowerCase();return r?Wt.filter(c=>c.command.toLowerCase().startsWith(`/${r}`)||c.command.toLowerCase().includes(r)):Wt},[k.open,k.query]),ie=l.useMemo(()=>{if(!f.open)return[];const r=f.query.toLowerCase();return r?it.filter(c=>c.handle.toLowerCase().includes(r)||c.name.toLowerCase().includes(r)||c.label.toLowerCase().includes(r)).slice(0,8):it.slice(0,8)},[it,f.open,f.query]),lt=l.useCallback(()=>{d(r=>r.open?{...r,open:!1}:r),g(r=>r.open?{...r,open:!1}:r)},[]),_e=l.useCallback((r,c)=>{const h=Hs(r,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(r,c);g(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((r,c)=>{V(r),_e(r,c?.caret??r.length)},[_e]),ct=l.useCallback(r=>{const c=k.triggerStart;if(c<0)return;const h=P.current?.selectionStart??M.length,u=M.slice(0,c),p=M.slice(h),G=`${u}${r.insert}${p}`;V(G),d(K=>({...K,open:!1})),requestAnimationFrame(()=>{const K=P.current;if(!K)return;const _=u.length+r.insert.length;K.focus(),K.setSelectionRange(_,_)})},[M,k.triggerStart]),dt=l.useCallback(r=>{const c=f.triggerStart;if(c<0)return;const h=P.current?.selectionStart??M.length,u=M.slice(0,c),p=M.slice(h),G=`@${r.handle}${p.length===0||!p.startsWith(" ")?" ":""}`,K=`${u}${G}${p}`;V(K),g(_=>({..._,open:!1})),requestAnimationFrame(()=>{const _=P.current;if(!_)return;const ke=u.length+G.length;_.focus(),_.setSelectionRange(ke,ke)})},[f.triggerStart,M]),Ot=l.useCallback(r=>{if(x)return;const h=P.current?.selectionStart??M.length,u=M.slice(0,h),p=M.slice(h),K=`${u&&!/\s$/.test(u)?" ":""}${r}`,_=`${u}${K}${p}`,ke=u.length+K.length;V(_),_e(_,ke),requestAnimationFrame(()=>{const ft=P.current;ft&&(ft.focus(),ft.setSelectionRange(ke,ke))})},[x,M,_e]),Ss=l.useCallback(r=>{const c=k.open&&ae.length>0,h=f.open&&ie.length>0;if(!c&&!h)return!1;if(r.key==="ArrowDown")return c?d(u=>({...u,index:(u.index+1)%ae.length})):g(u=>({...u,index:(u.index+1)%ie.length})),!0;if(r.key==="ArrowUp")return c?d(u=>({...u,index:(u.index-1+ae.length)%ae.length})):g(u=>({...u,index:(u.index-1+ie.length)%ie.length})),!0;if(r.key==="Escape")return lt(),!0;if((r.key==="Enter"||r.key==="Tab")&&!r.shiftKey&&!r.metaKey&&!r.ctrlKey&&!r.altKey){if(c){const u=ae[k.index]??ae[0];u&&ct(u)}else{const u=ie[f.index]??ie[0];u&&dt(u)}return!0}return!1},[dt,ct,lt,ie,ae,f.index,f.open,k.index,k.open]),ut=l.useCallback(()=>{x||s()},[x,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 r=c=>{c.key==="Escape"&&(c.preventDefault(),ut())};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[ut]),l.useEffect(()=>{if(!rt)return;const r=window.setTimeout(()=>Rt(null),5e3);return()=>window.clearTimeout(r)},[rt]),l.useEffect(()=>{P.current?.focus()},[]),l.useEffect(()=>{let r=!1;return ee("/api/agent-config/snapshot").then(c=>{r||(Ae(c),X(null))}).catch(c=>{r||X(c instanceof Error?c.message:"Could not load projects.")}),()=>{r=!0}},[]);const Ve=l.useCallback(()=>{ee("/api/runner/options").then(r=>{bt=r,te(r),Q(null)}).catch(()=>{bt||Q("Model catalog unavailable. Harness defaults are still available.")})},[]);l.useEffect(()=>{Ve()},[Ve]),l.useEffect(()=>{if(ze.current||J.length===0)return;const r=Qn(J,{preferredRoot:ve,currentDirectory:T?.context.currentDirectory});r&&he(r.root)},[T?.context.currentDirectory,ve,J]),l.useEffect(()=>{if(At.current)return;const r=E?.defaultHarness?.trim()||S?.harness?.trim()||$?.defaults.harness||"claude";if(Nt(r),!$)return;const c=S?.model?.trim()??"",h=$.models.some(u=>u.id===c&&u.harnesses.includes(r));It(h?c:sr($,r)),kt(nr($,r))},[S?.harness,S?.model,$,E?.defaultHarness,E?.root]),l.useLayoutEffect(()=>{Ue?.({intent:F,...fe?{agentId:fe}:{},...me?{conversationId:me}:{},message:M,files:b,attachmentFeedback:Ge,mode:B,projectPath:N,projectQuery:R,...C&&y?{forwardContext:y}:{},forwardContextMode:ne})},[Ge,b,ne,y,F,C,M,B,Ue,N,R,fe,me,E?.title]);const Ft=l.useCallback((r,c="Added")=>{if(x)return;const h=r.filter(qt),u=r.filter(p=>!qt(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)},[x]),Je=l.useCallback((r,c)=>{const h=Ps(r);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(r=>{x||!Ye(r.dataTransfer)||(r.preventDefault(),r.stopPropagation(),Ce.current+=1,ot(Ce.current))},[x]),Is=l.useCallback(r=>{x||!Ye(r.dataTransfer)||(r.preventDefault(),r.stopPropagation(),r.dataTransfer.dropEffect="copy")},[x]),ks=l.useCallback(r=>{Ce.current!==0&&(r.preventDefault(),r.stopPropagation(),Ce.current=Math.max(0,Ce.current-1),ot(Ce.current))},[]),Rs=l.useCallback(r=>{Ye(r.dataTransfer)&&(r.preventDefault(),r.stopPropagation(),Ce.current=0,ot(0),Je(r.dataTransfer,"Added"))},[Je]),As=l.useCallback(r=>{x||!Ye(r.clipboardData)||(r.preventDefault(),r.stopPropagation(),Je(r.clipboardData,"Pasted"))},[Je,x]),Ht=r=>{ze.current=!0,he(r.root),A(""),I(0),ye(!1),U(null),requestAnimationFrame(()=>P.current?.focus())},Ut=r=>{const c=r.trim();c&&(ze.current=!0,he(c),A(""),I(0),ye(!1),U(null),requestAnimationFrame(()=>P.current?.focus()))},Ls=()=>{ze.current=!0,he(""),A(""),I(0),ye(!1),U(null),requestAnimationFrame(()=>P.current?.focus())},Ts=r=>{if(r.key==="ArrowDown"||r.key==="ArrowUp"){r.preventDefault(),I(c=>{if(Xe===0)return 0;const h=r.key==="ArrowDown"?1:-1;return(c+h+Xe)%Xe});return}if(r.key==="Enter"){r.preventDefault();const c=Z[se];c?Ht(c):be&&se===Z.length&&Ut(be);return}r.key==="Escape"&&pe&&R&&(r.preventDefault(),r.stopPropagation(),A(""),I(0))},Bt=r=>{At.current=!0,Nt(r.harness),It(r.model),kt(r.effort)},Ds=async()=>{if(x)return;if(C&&!oe){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(b.length>0?"uploading":"starting"),je(null);const r=$n(),c=Date.now();try{let h=[];if(b.length>0&&(h=await _s(b),st("starting")),q&&S&&Qe&&B==="existing-chat"){const _=await Zn(S,{mode:B==="existing-chat"&&Qe?"existing-chat":"new-session",message:oe,attachments:h});V(""),O([]),Mt(null),n({view:"agents-v2",agentId:_.agentId,conversationId:_.conversationId,tab:"message"}),Be?.(),s();return}const u=await Yn({projectPath:E.root,harness:re,...Ke?{model:Ke}:{},...We?{reasoningEffort:We}:{},...oe?{instructions:oe}:q?{instructions:"Shared capture for context."}:{},...h.length>0?{attachments:h}:{},...C&&y?{fromMessageId:y.selectedMessageId,fromConversationId:y.sourceConversationId}:{},clientMessageId:r}),p=u.conversationId?.trim();if(!p)throw new Error("Message sent, but no Chat was returned.");const G=u.messageId?.trim();G&&Pn({conversationId:p,messageId:G,clientMessageId:r,body:oe||(h.length>0?"Shared capture for context.":"New session started."),attachments:h,agentId:u.agentId,flightId:u.flightId,invocationId:u.invocationId,createdAt:c}),V(""),n({view:"conversation",conversationId:p}),Be?.(),s()}catch(h){je(h instanceof Error?h.message:q?"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:Is,onDragLeave:ks,onDrop:Rs,onPaste:As,role:"presentation",children:o.jsxs("div",{ref:gs,className:`s-newchat-panel${x?" s-newchat-panel--starting":""}${Tt?" s-newchat-panel--dragging":""}`,role:"dialog","aria-modal":"true","aria-label":$t,onClick:r=>r.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:x,"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(qs,{context:Pt,selection:$e.selection,attached:nt,onToggleSelection:()=>hs(r=>!r)}),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:x,onClick:()=>{const r=!pe;ye(r),requestAnimationFrame(r?()=>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-${se}`:void 0,value:R,placeholder:T?"Filter projects, or type a path…":"Loading projects…",disabled:x,spellCheck:!1,autoComplete:"off",onChange:r=>{A(r.currentTarget.value),I(0)},onKeyDown:Ts})]}),o.jsxs("div",{id:"s-newchat-project-results",className:"s-newchat-project-results",role:"listbox","aria-label":"Projects",children:[Z.map((r,c)=>o.jsxs("div",{id:`s-newchat-project-option-${c}`,role:"option","aria-selected":r.root===N,"aria-disabled":x||void 0,className:"s-newchat-project-option","data-active":c===se||void 0,onMouseDown:h=>h.preventDefault(),onMouseEnter:()=>I(c),onClick:()=>{x||Ht(r)},children:[o.jsxs("span",{className:"s-newchat-project-option-title",children:["/",r.title]}),o.jsx("span",{className:"s-newchat-project-option-path",children:xt(r.root)})]},r.root)),be?o.jsxs("div",{id:`s-newchat-project-option-${Z.length}`,role:"option","aria-selected":be===N,"aria-disabled":x||void 0,className:"s-newchat-project-option s-newchat-project-option--path","data-active":se===Z.length||void 0,onMouseDown:r=>r.preventDefault(),onMouseEnter:()=>I(Z.length),onClick:()=>{x||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,Z.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:[Z.length," of"," ",R.trim()?Pe.length:J.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&&J.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:re,model:Ke,effort:We},onChange:Bt,status:Ie?"loading":D?"error":"ready",statusMessage:D??void 0,onRetry:Ve,disabled:x||!xe})}),xe&&Ie?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||Y?.ready===!1)?o.jsx("p",{className:"s-newchat-runtime-note",role:"alert",children:Y?.ready===!1?Y.detail||`${Y.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":ne==="selected-message",disabled:x,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":ne==="recent-context",disabled:x||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":ne==="instructions-only",disabled:x,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)…":q?"What should the agent do with this?":"Describe the task, or leave blank…","aria-label":C?"Instructions for the new task":"Message",disabled:x,sending:x,canSend:!x&&!Dt&&(!C||!!oe),rows:7,maxHeightPx:280,sendTitle:C?"Forward to new task (Enter)":q?"Route (Enter)":"Start task (Enter)",sendAriaLabel:C?"Forward to new task":q?"Route capture":"Start task",overlay:o.jsxs(o.Fragment,{children:[k.open?o.jsx(Gt,{label:"Slash commands",placement:"inside",items:ae.map(r=>({id:r.command,token:r.label,description:r.description})),activeIndex:k.index,onPick:r=>{const c=ae[r];c&&ct(c)},onActiveIndexChange:r=>d(c=>({...c,index:r}))}):null,f.open?o.jsx(Gt,{label:"Mention agent",placement:"inside",items:ie.map(r=>({id:r.id,token:`@${r.handle}`,description:r.name,avatar:{label:r.name[0]?.toUpperCase()??"?",color:Bs(r.name)}})),activeIndex:f.index,onPick:r=>{const c=ie[r];c&&dt(c)},onActiveIndexChange:r=>g(c=>({...c,index:r}))}):null]}),onSelect:r=>{const c=r.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:x,onClick:()=>Ot("/"),children:"/Commands"}),o.jsx("span",{"aria-hidden":"true",children:"·"}),o.jsx("button",{type:"button",className:"s-newchat-command-trigger",disabled:x,onClick:()=>Ot("@"),children:"@Agents"})]}),tools:C?void 0:o.jsx(zt,{catalog:Lt,value:{harness:re,model:Ke,effort:We},onChange:Bt,status:Ie?"loading":D?"error":"ready",statusMessage:D??void 0,onRetry:Ve,disabled:x||!xe})}),b.length>0?o.jsx("div",{className:"s-newchat-attachments","aria-label":"Attached captures",children:b.map((r,c)=>o.jsx(ir,{file:r,onRemove:()=>O(h=>h.filter((u,p)=>p!==c))},`${r.name}:${r.size}:${c}`))}):null,Ge?o.jsx("div",{className:"s-newchat-attachment-feedback",role:"status","aria-live":"polite",children:Ge}):null,St&&o.jsx("div",{className:"s-newchat-error",role:"alert",children:St}),x&&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}),oe&&o.jsx("span",{className:"s-newchat-progress-message",children:oe})]})]})]}),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:x,onClick:()=>qe("existing-chat"),children:"Existing chat"}),o.jsx("button",{type:"button",className:`s-newchat-mode-btn${B==="new-session"?" s-newchat-mode-btn--on":""}`,disabled:x,onClick:()=>qe("new-session"),children:"New chat"})]}):null,xe&&Ie?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||Y?.ready===!1)?o.jsx("p",{className:"s-newchat-runtime-note",role:"alert",children:Y?.ready===!1?Y.detail||`${Y.label} is unavailable.`:D}):null]}):null]})]})})}const _r=Object.freeze(Object.defineProperty({__proto__:null,NewChatComposer:lr},Symbol.toStringTag,{value:"Module"}));export{lr as N,Se as R,zt as a,Me as b,Ln as c,kr as d,Ee as e,Rr as f,Tr as g,cs as h,$n as i,$r as j,Dr as k,Tn as l,Pr as m,rn as n,_r as o,Ar as p,Ir as r,Lr as s,Et as w};
@@ -0,0 +1 @@
1
+ .s-agents-actions{display:flex;flex-direction:column;gap:var(--space-3xs);padding:var(--space-md) var(--space-md) var(--space-sm);border-bottom:1px solid color-mix(in srgb,var(--border) 40%,transparent);flex-shrink:0}.s-rail-action{display:flex;align-items:center;gap:var(--space-sm);width:100%;text-align:left;cursor:pointer;padding:var(--space-sm);border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--muted);font-family:var(--font-sans);font-size:var(--text-md);font-weight:500;transition:background .1s,color .1s,border-color .1s}.s-rail-action:hover{background:color-mix(in srgb,var(--ink) 5%,transparent);color:var(--ink)}.s-rail-action--primary{border-color:color-mix(in srgb,var(--border) 50%,transparent)}.s-rail-action-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex:none;color:var(--dim)}.s-rail-action:hover .s-rail-action-icon{color:var(--accent)}.s-rail-action-label{flex:1;min-width:0}.s-agents-recent{flex:1;min-height:0;overflow-y:auto;padding:14px 0}.s-rail-see-all{border:none;background:transparent;color:var(--muted);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-sm);text-transform:lowercase}.s-rail-see-all:hover{color:var(--accent)}.s-agents-foot{flex-shrink:0;margin-top:auto;padding:var(--space-sm) var(--space-md) var(--space-md);border-top:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.s-rail-foot-icons{display:flex;align-items:center;gap:var(--space-2xs)}.s-rail-icon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--dim);cursor:pointer;transition:background .1s,color .1s}.s-rail-icon:hover{background:color-mix(in srgb,var(--ink) 5%,transparent);color:var(--ink)}.s-rail-icon--end{margin-left:auto}.s-newchat-backdrop{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-start;justify-content:center;padding-top:8vh;background:color-mix(in srgb,var(--bg) 76%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.s-newchat-panel{display:flex;width:560px;max-height:84vh;flex-direction:column;max-width:calc(100vw - 48px);background:color-mix(in srgb,var(--surface) 96%,var(--bg));border:1px solid color-mix(in srgb,var(--ink) 15%,transparent);border-radius:var(--radius-lg);overflow:hidden;box-shadow:0 24px 60px -28px #0009}.s-newchat-panel--starting{box-shadow:0 24px 60px -28px #0009,0 0 0 1px color-mix(in srgb,var(--accent) 24%,transparent)}.s-newchat-panel--dragging{border-color:color-mix(in srgb,var(--accent) 72%,var(--border));box-shadow:0 24px 60px -28px #0009,0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}.s-newchat-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid color-mix(in srgb,var(--ink) 10%,transparent);background:color-mix(in srgb,var(--bg) 46%,var(--surface))}.s-newchat-title{flex:0 0 auto;font-size:var(--text-md);font-weight:600;color:var(--ink)}.s-newchat-head-status{display:grid;min-width:0;flex:1;padding:0 var(--space-md);color:color-mix(in srgb,var(--ink) 72%,transparent);font-size:var(--text-xs);line-height:var(--leading-normal);text-align:right}.s-newchat-head-status>span{grid-area:1 / 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-newchat-head-status [role=alert]{color:var(--accent);font-weight:600}.s-newchat-drop-prompt{padding:var(--space-sm) var(--space-lg);border-bottom:1px solid color-mix(in srgb,var(--accent) 30%,transparent);background:color-mix(in srgb,var(--accent) 10%,var(--bg));color:var(--accent);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;text-align:center}.s-newchat-close{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--muted);cursor:pointer;line-height:1}.s-newchat-close:hover{background:color-mix(in srgb,var(--ink) 6%,transparent)}.s-newchat-close:hover{color:var(--ink)}.s-newchat-close:disabled{cursor:default;opacity:.35}.s-newchat-body{display:flex;min-height:0;flex-direction:column;gap:var(--space-3xl);padding:var(--space-lg);overflow-y:auto}.s-newchat-lead{display:flex;min-width:0;flex-direction:column;gap:var(--space-sm)}.s-newchat-project-bar{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;min-width:0;padding:0 0 var(--space-xs);border-bottom:1px solid color-mix(in srgb,var(--ink) 8%,transparent)}.s-newchat-project-label{color:var(--dim)}.s-newchat-project-summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:var(--space-sm);min-width:0;min-height:30px;padding:var(--space-2xs) var(--space-xs);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--ink);cursor:pointer;text-align:left}.s-newchat-project-summary:hover,.s-newchat-project-summary:focus-visible{outline:none;background:color-mix(in srgb,var(--ink) 5%,transparent)}.s-newchat-project-summary:disabled{cursor:default;opacity:.55}.s-newchat-project-summary-title,.s-newchat-project-summary-path{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-newchat-project-summary-title{font-size:var(--text-sm);font-weight:600}.s-newchat-project-summary[data-empty=true] .s-newchat-project-summary-title{color:var(--muted);font-weight:500}.s-newchat-project-summary-path{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);text-align:right}.s-newchat-project-summary svg{align-self:center;color:var(--dim);transition:transform .12s ease}.s-newchat-project-summary[aria-expanded=true] svg{transform:rotate(180deg)}.s-newchat-project-reminder{margin:calc(var(--space-2xs) * -1) 0 0 58px;color:var(--red);font-size:var(--text-xs)}.s-newchat-project-panel{display:flex;min-width:0;flex-direction:column;gap:var(--space-2xs);padding-left:58px}.s-newchat-project-panel-foot{display:flex;min-height:22px;align-items:center;justify-content:space-between;gap:var(--space-sm)}.s-newchat-project-clear{flex:0 0 auto;padding:var(--space-2xs) var(--space-xs);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--dim);font-size:var(--text-xs);cursor:pointer}.s-newchat-project-clear:hover,.s-newchat-project-clear:focus-visible{outline:none;background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink)}.s-newchat-config{display:flex;min-width:0;flex-direction:column;gap:var(--space-lg);padding-top:var(--space-lg);border-top:1px solid color-mix(in srgb,var(--ink) 8%,transparent)}.s-newchat-field{display:flex;flex-direction:column;gap:var(--space-2xs)}.s-newchat-field-label{color:var(--muted)}.s-newchat-forward-intro{max-width:68ch;margin:0 0 var(--space-xs);color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.s-newchat-forward-config{display:flex;min-width:0;flex-direction:column;gap:var(--space-lg);padding:var(--space-sm) 0 var(--space-md)}.s-newchat-forward-runtime{display:flex;min-height:34px;align-items:center;padding:0 var(--space-xs);border-bottom:1px solid color-mix(in srgb,var(--ink) 10%,transparent)}.s-newchat-forward-runtime .s-rt-chip{min-height:28px;max-width:100%;border-radius:var(--radius-sm)}.s-newchat-context-options{display:flex;flex-direction:column;border-top:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-bottom:1px solid color-mix(in srgb,var(--ink) 10%,transparent)}.s-newchat-context-option{display:grid;grid-template-columns:minmax(150px,.8fr) minmax(0,1.35fr);align-items:baseline;gap:var(--space-md);min-height:42px;padding:var(--space-xs) var(--space-sm);border:none;border-bottom:1px solid color-mix(in srgb,var(--ink) 7%,transparent);background:transparent;color:var(--ink);cursor:pointer;text-align:left}.s-newchat-context-option:last-child{border-bottom:none}.s-newchat-context-option:hover,.s-newchat-context-option:focus-visible{outline:none;background:color-mix(in srgb,var(--ink) 5%,transparent)}.s-newchat-context-option[aria-checked=true]{background:color-mix(in srgb,var(--accent) 8%,transparent)}.s-newchat-context-option[aria-checked=true] .s-newchat-context-option-title{color:var(--accent)}.s-newchat-context-option:disabled{cursor:default;opacity:.45}.s-newchat-context-option-title{font-size:var(--text-sm);font-weight:600}.s-newchat-context-option-copy,.s-newchat-context-note{color:var(--dim);font-size:var(--text-xs);line-height:var(--leading-normal)}.s-newchat-context-note{margin:var(--space-2xs) 0 0}.s-newchat-project-picker{position:relative}.s-newchat-project-search-icon{position:absolute;z-index:1;top:50%;left:var(--space-sm);color:var(--muted);pointer-events:none;transform:translateY(-50%)}.s-newchat-project-search{width:100%;box-sizing:border-box;min-height:36px;padding:var(--space-xs) var(--space-md) var(--space-xs) 30px;border:1px solid color-mix(in srgb,var(--ink) 14%,transparent);border-radius:var(--radius-md);outline:none;background:color-mix(in srgb,var(--bg) 72%,var(--surface));color:var(--ink);font-family:var(--font-sans);font-size:var(--text-sm)}.s-newchat-project-search:focus{border-color:color-mix(in srgb,var(--accent) 54%,var(--border));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 10%,transparent)}.s-newchat-project-search::-webkit-search-cancel-button{opacity:.55}.s-newchat-project-results{display:flex;flex-direction:column;gap:1px;margin-top:var(--space-2xs)}.s-newchat-project-option{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:baseline;gap:var(--space-sm);width:100%;padding:var(--space-xs) var(--space-sm);border:none;border-left:2px solid transparent;border-radius:0;background:transparent;color:var(--ink);text-align:left;cursor:pointer}.s-newchat-project-option:hover,.s-newchat-project-option[data-active=true]{background:color-mix(in srgb,var(--ink) 6%,transparent)}.s-newchat-project-option[aria-selected=true]{border-left-color:color-mix(in srgb,var(--accent) 60%,transparent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.s-newchat-project-option[aria-selected=true] .s-newchat-project-option-title{color:var(--accent)}.s-newchat-project-option[aria-disabled=true]{cursor:default;opacity:.55}.s-newchat-project-option--path{border-top:1px solid color-mix(in srgb,var(--border) 38%,transparent)}.s-newchat-project-option-title,.s-newchat-project-option-path{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-newchat-project-option-title{font-size:var(--text-sm);font-weight:600}.s-newchat-project-option-path{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs)}.s-newchat-project-empty{margin:0;padding:var(--space-md) var(--space-sm);color:var(--muted);font-size:var(--text-xs);line-height:var(--leading-normal)}.s-newchat-project-foot{margin:0;padding-left:var(--space-sm);color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs)}.s-newchat-target{margin:0;overflow:hidden;color:var(--dim);text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--text-2xs)}.s-newchat-runtime-note{display:flex;align-items:center;gap:var(--space-xs);margin:0;color:var(--amber);font-size:var(--text-xs);line-height:var(--leading-normal)}.s-newchat-runtime-note[data-pending=true]{color:var(--muted)}.s-newchat-runtime-note-spinner{flex:0 0 auto;animation:s-spin .9s linear infinite}.s-newchat-panel .s-msg-compose-shell{border-color:color-mix(in srgb,var(--ink) 16%,transparent);background:color-mix(in srgb,var(--bg) 64%,var(--surface))}.s-newchat-panel .s-msg-compose-input{min-height:154px}.s-newchat-panel .s-msg-compose-shell:focus-within{border-color:color-mix(in srgb,var(--accent) 24%,var(--border))}.s-newchat-panel .s-msg-compose-input::placeholder{color:var(--muted)}.s-newchat-panel .s-msg-compose-toolbar{border-top-color:color-mix(in srgb,var(--ink) 10%,transparent)}.s-newchat-compose-triggers{display:inline-flex;align-items:center;gap:var(--space-2xs);color:var(--dim)}.s-newchat-command-trigger{padding:var(--space-2xs) var(--space-xs);border:none;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);cursor:pointer}.s-newchat-command-trigger:hover,.s-newchat-command-trigger:focus-visible{outline:none;background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink)}.s-newchat-command-trigger:disabled{cursor:default;opacity:.45}.s-newchat-error{font-size:var(--text-sm);color:var(--red)}.s-newchat-attachment-feedback{margin-top:calc(var(--space-sm) * -1);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs)}.s-newchat-progress{display:flex;align-items:flex-start;gap:var(--space-sm);padding:var(--space-sm);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--ink)}.s-newchat-progress-spinner,.s-newchat-start-spinner{flex:0 0 auto;animation:s-spin .9s linear infinite}.s-newchat-progress-copy{display:flex;min-width:0;flex-direction:column;gap:var(--space-2xs)}.s-newchat-progress-title{color:var(--accent)}.s-newchat-progress-detail,.s-newchat-progress-message{font-size:var(--text-xs);line-height:var(--leading-normal)}.s-newchat-progress-detail{color:var(--muted)}.s-newchat-progress-message{display:-webkit-box;overflow:hidden;color:var(--ink);-webkit-box-orient:vertical;-webkit-line-clamp:3}@media(max-width:620px){.s-newchat-backdrop{padding-top:12px}.s-newchat-panel{width:calc(100vw - 24px);max-width:none;max-height:calc(100vh - 24px)}.s-newchat-body{padding:var(--space-md)}.s-newchat-project-bar{grid-template-columns:52px minmax(0,1fr)}.s-newchat-project-panel{padding-left:0}.s-newchat-project-reminder{margin-left:52px}.s-newchat-project-summary-path{display:none}.s-newchat-context-option{grid-template-columns:1fr;gap:var(--space-2xs)}.s-newchat-panel .s-msg-compose-input{min-height:120px}}@keyframes s-spin{to{transform:rotate(360deg)}}.s-rail-projects{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;display:flex;flex-direction:column;gap:1px}.s-rail-projects:before{content:"Projects";display:block;flex:none;font-size:var(--text-2xs);font-weight:650;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:2px 8px 10px}.s-rail-projects .ctx-panel-section-label{display:flex;align-items:center;justify-content:space-between}.s-rail-proj-total{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--dim)}.s-rail-proj{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:none;border:1px solid transparent;cursor:pointer;padding:6px 8px;border-radius:var(--radius-md);transition:background .12s ease,border-color .12s ease}.s-rail-proj-count{flex:none;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600;color:var(--dim)}.s-rail-proj-count[data-needs]{color:var(--accent)}.s-rail-proj:hover{background:color-mix(in srgb,var(--ink) 5%,transparent)}.s-rail-proj[data-selected]{background:color-mix(in srgb,var(--ink) 8%,transparent)}.s-rail-proj-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.s-rail-proj-top{display:flex;align-items:center;gap:var(--space-sm)}.s-rail-proj-name{flex:1;min-width:0;font-size:var(--text-md);font-weight:540;line-height:1.2;letter-spacing:-.01em;text-transform:lowercase;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-rail-proj-name[data-idle]{color:var(--dim);font-weight:480}.s-rail-proj[data-selected] .s-rail-proj-name,.s-rail-proj:hover .s-rail-proj-name{color:var(--ink)}.s-rail-proj-sub{display:flex;align-items:center;gap:7px}.s-rail-proj-dots{display:inline-flex;align-items:center;gap:3px;flex:none}.s-rail-proj-dots span{width:5px;height:5px;border-radius:999px;opacity:.9}.s-rail-proj-meta{flex:1;min-width:0;font-size:var(--text-xs);font-family:var(--font-mono);color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-rail-proj-ago{flex:none;font-size:var(--text-xs);font-family:var(--font-mono);color:var(--dim)}.s-rail-proj-live{flex:none;display:inline-flex;align-items:center;gap:5px;font-size:var(--text-sm);font-weight:600;font-family:var(--font-mono);color:var(--accent)}.s-rail-proj-livepip{width:5px;height:5px;border-radius:999px;background:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.s-rail-proj-needs{flex:none;font-size:var(--text-3xs);font-weight:650;letter-spacing:var(--tracking-sm);text-transform:uppercase;color:var(--bg);background:var(--accent);padding:2px 7px;border-radius:999px}.s-newchat-origin{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-xs) var(--space-sm);margin:0 0 var(--space-xs)}.s-newchat-origin-label{color:var(--muted)}.s-newchat-origin-facts{display:flex;flex-wrap:wrap;gap:var(--space-xs) var(--space-md);margin:0;min-width:0}.s-newchat-origin-fact{display:flex;align-items:baseline;gap:var(--space-3xs);min-width:0}.s-newchat-origin-fact dt{color:var(--muted);font-size:var(--text-xs)}.s-newchat-origin-fact dd{margin:0;max-width:42ch;overflow:hidden;color:var(--ink);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}.s-newchat-origin-attach{padding:2px var(--space-xs);border:1px solid var(--border);border-radius:5px;background:transparent;color:var(--muted);font-size:var(--text-xs);cursor:pointer}.s-newchat-origin-attach:hover,.s-newchat-origin-attach:focus-visible{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));color:var(--ink)}.s-newchat-origin-attach[aria-pressed=true]{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--ink)}
@@ -0,0 +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};
@@ -0,0 +1,2 @@
1
+ import{r as o,j as e}from"./index-DMiGbrBt.js";import{a as v}from"./api-h5zurxmi.js";import{u as b}from"./sse-CjIkKo46.js";import{f as h}from"./time-DltNTpLl.js";import{SessionObserve as x}from"./SessionObserve-yfXFafp8.js";import{E as p}from"./external-link-CXBytO9o.js";import"./index-BWHgHrtv.js";import"./bash-format-BRV5C6Gv.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-Bla0gBdm.js";import"./index-CJXzfjo9.js";import"./lane-observe-D0rfKDnU.js";import"./lane-ask-display-B6iCAVcd.js";import"./colors-BtO5_zlx.js";import"./mentions-jSuTGeet.js";import"./Provider-C7UKGHQy.js";import"./router-Bq5dwf78.js";import"./terminal-sessions-D5CIR2OL.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./openContent-C6XO6kr5.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";import"./message-markup-3J9pi3nx.js";import"./ObservedTopologyPanel-DyUeV98H.js";import"./ObserveTextFlow-rsFj_rVo.js";import"./use-reduced-motion-RRBkmVkk.js";import"./message-circle-CG-96zts.js";import"./wrench-Bkc_0lKF.js";const u=2500,j=240,f=5;function g(s){return s?s.length>18?`${s.slice(0,8)}...${s.slice(-6)}`:s:"no session"}function N({ask:s,sessionId:r}){const[t,c]=o.useState(!1);if(!s)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=s.task.length>j||s.task.split(`
2
+ `).length>f,n=s.conversationId?`/messages/${encodeURIComponent(s.conversationId)}${s.messageId?`#msg-${encodeURIComponent(s.messageId)}`:""}`:null,d=`/flights/${encodeURIComponent(s.flightId)}/observe${r?`?session=${encodeURIComponent(r)}`:""}`;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:s.requesterName}),e.jsx("span",{"aria-hidden":"true",children:"·"}),e.jsx("time",{dateTime:new Date(s.requestedAt).toISOString(),children:h(s.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(p,{size:11,"aria-hidden":"true"})]}),e.jsxs("a",{href:d,target:"_top",children:["Flight ",e.jsx(p,{size:11,"aria-hidden":"true"})]})]})]}),e.jsx("div",{className:`s-observe-embed-ask-body${t?" is-expanded":""}`,children:s.task}),m&&e.jsx("button",{type:"button",className:"s-observe-embed-ask-toggle","aria-expanded":t,onClick:()=>c(i=>!i),children:t?"Show less":"Show full ask"})]})}function ye({agentId:s}){const[r,t]=o.useState(null),[c,m]=o.useState(!0),[n,d]=o.useState(null),i=o.useCallback(async(l=!1)=>{l||m(!0),d(null);try{const a=await v(`/api/agents/${encodeURIComponent(s)}/observe`);t(a)}catch(a){l||t(null),d(a instanceof Error?a.message:String(a))}finally{m(!1)}},[s]);return o.useEffect(()=>{i();const l=window.setInterval(()=>{i(!0)},u);return()=>window.clearInterval(l)},[i]),b(()=>{i(!0)}),n&&!r?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})]})}):c&&!r?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:s})]})}):e.jsxs("div",{className:"s-observe-embed-page",children:[r&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"s-observe-embed-status",children:[e.jsx("span",{className:"s-observe-embed-status-source",children:r.source}),e.jsx("span",{children:r.fidelity}),e.jsx("span",{title:r.sessionId??void 0,children:g(r.sessionId)}),e.jsxs("span",{children:[r.data.events.length," events"]}),r.data.live&&e.jsx("span",{className:"s-observe-embed-status-live",children:"Live"})]}),e.jsx(N,{ask:r.initiatingAsk,sessionId:r.sessionId})]}),e.jsx(x,{data:r?.data,agentId:s,sessionId:r?.sessionId,showRail:!1})]})}export{N as InitiatingAsk,ye as ObserveEmbedScreen};