@openscout/scout 0.2.105 → 0.2.106

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 (573) hide show
  1. package/bin/scoutd +0 -0
  2. package/dist/build-manifest.json +3 -3
  3. package/dist/chat.mjs +23 -1
  4. package/dist/client/assets/ActivityScreen-CZmGwQ2U.js +1 -0
  5. package/dist/client/assets/{AddProjectForm-CHNJ4NnS.js → AddProjectForm-CusDRiVO.js} +1 -1
  6. package/dist/client/assets/{AdventureEvidence-B4mEvXeD.js → AdventureEvidence-CyegKk1V.js} +1 -1
  7. package/dist/client/assets/{AdventureReader-ZsBDQITY.js → AdventureReader-X-hbTOi0.js} +1 -1
  8. package/dist/client/assets/{AdventureScenery-DSxDlqG1.js → AdventureScenery-LPXSVP67.js} +1 -1
  9. package/dist/client/assets/AgentAdventures-BAgxdOF8.js +1 -0
  10. package/dist/client/assets/AgentAvatar-CrP1eXxk.js +1 -0
  11. package/dist/client/assets/AgentConfigurationScreen-1L0IQm2w.js +1 -0
  12. package/dist/client/assets/AgentDefinitionsWorkspace-DguGs7jZ.js +1 -0
  13. package/dist/client/assets/{AgentDetailCard-MIEBKw_S.js → AgentDetailCard-DtHT3sCo.js} +1 -1
  14. package/dist/client/assets/AgentFloorView-DH4jiDgw.js +1 -0
  15. package/dist/client/assets/{AgentFloorWorld-BTqwmK5G.js → AgentFloorWorld-CjoIa6jA.js} +1 -1
  16. package/dist/client/assets/AgentInfoScreen-DYtmKkeE.js +1 -0
  17. package/dist/client/assets/{AgentLaneCard-C4rKLLdT.js → AgentLaneCard-BaZ2g-f8.js} +1 -1
  18. package/dist/client/assets/{AgentLaneChrome-fGC-ZrJS.js → AgentLaneChrome-TF1SlJSc.js} +1 -1
  19. package/dist/client/assets/{AgentLaneDetailSheet-BTF4_th9.js → AgentLaneDetailSheet-EzEPsn3g.js} +1 -1
  20. package/dist/client/assets/{AgentLaneSummaryResize-DgSeA_vS.js → AgentLaneSummaryResize-dpp7YvrX.js} +1 -1
  21. package/dist/client/assets/AgentLanesEmbedScreen-BlSof_6S.js +1 -0
  22. package/dist/client/assets/{AgentLanesPreflight-CcS23wij.js → AgentLanesPreflight-Ry-aqDTr.js} +1 -1
  23. package/dist/client/assets/AgentLanesView-BJi9xXz6.js +2 -0
  24. package/dist/client/assets/{AgentLiveActions-6Kfr1uOT.js → AgentLiveActions-CfTupTEl.js} +1 -1
  25. package/dist/client/assets/AgentMasterScreen-EJhmuKgl.js +1 -0
  26. package/dist/client/assets/AgentSessions-B1gOhDBf.js +6 -0
  27. package/dist/client/assets/AgentsConsole-RXGqRvcb.js +1 -0
  28. package/dist/client/assets/AgentsScreen-ChwMBs11.js +1 -0
  29. package/dist/client/assets/AgentsSubnav-DwNX4yy0.js +1 -0
  30. package/dist/client/assets/{AstronautSuit-D67fIBdR.js → AstronautSuit-Cchnc4Ug.js} +1 -1
  31. package/dist/client/assets/{AtopView-Ck30FbzG.js → AtopView-gkEp4y__.js} +1 -1
  32. package/dist/client/assets/{BackToPicker-CkBhGRlD.js → BackToPicker-CUkjnoVk.js} +1 -1
  33. package/dist/client/assets/BriefingDetailScreen-DrlC3qkm.js +1 -0
  34. package/dist/client/assets/{BriefingsScreen-DTxYMr3a.js → BriefingsScreen-B1HlBMGZ.js} +1 -1
  35. package/dist/client/assets/{BrokerMetadataPanel-crirZCdo.js → BrokerMetadataPanel-Dk242Yh_.js} +1 -1
  36. package/dist/client/assets/BrokerScreen-DwOF6bMA.js +8 -0
  37. package/dist/client/assets/{Canvas-CRP0KjKb.js → Canvas-X9pVSkw3.js} +1 -1
  38. package/dist/client/assets/{CastPicker-ZPomvOf-.js → CastPicker-BXUtPAGC.js} +1 -1
  39. package/dist/client/assets/ChannelComposer-DoK7IDGa.js +1 -0
  40. package/dist/client/assets/ChannelSidebar-e9DOPulb.js +1 -0
  41. package/dist/client/assets/{CharacterFamilyPreview-ckVkecDO.js → CharacterFamilyPreview-DMfw7UM_.js} +1 -1
  42. package/dist/client/assets/{ChatAvatar-DKBsbOqk.js → ChatAvatar-C3a_o5Hj.js} +1 -1
  43. package/dist/client/assets/ChatBits-CsvxbToF.js +1 -0
  44. package/dist/client/assets/{ChatCollapsedStrip-Co0NmqOO.js → ChatCollapsedStrip-FEmQ_G9J.js} +1 -1
  45. package/dist/client/assets/ChatRichInput-DhtwFxQE.js +31 -0
  46. package/dist/client/assets/ChatRightPanel-C1h_aIkn.js +1 -0
  47. package/dist/client/assets/ChatSpaceSurface-BXyLYKHn.js +1 -0
  48. package/dist/client/assets/ChatSpaceTheme-3wLZGsvT.css +1 -0
  49. package/dist/client/assets/ChatSpaceTheme-CUH8bTZc.js +1 -0
  50. package/dist/client/assets/{CodeDiffPane-D-iv28LJ.js → CodeDiffPane-DuQRwpgK.js} +1 -1
  51. package/dist/client/assets/{CodeProjectPicker-CZ3gDdiT.js → CodeProjectPicker-ZQ6gSBpg.js} +1 -1
  52. package/dist/client/assets/{CodeScreen-CSC-zbP9.js → CodeScreen-BXyKeL5T.js} +1 -1
  53. package/dist/client/assets/{CommsCanvas-DdNAwjGW.js → CommsCanvas-THp0r_U8.js} +1 -1
  54. package/dist/client/assets/{CommsDeck-mGWY7Ivi.js → CommsDeck-BVmSMV2V.js} +1 -1
  55. package/dist/client/assets/{CommsFlowGraph-voDD9M5R.js → CommsFlowGraph-DxoOaLF_.js} +1 -1
  56. package/dist/client/assets/{CommsFlowMap-C33sgD48.js → CommsFlowMap-Vi8ziCPg.js} +1 -1
  57. package/dist/client/assets/{CommsSelection-BL8aYD7z.js → CommsSelection-BUoRbu9o.js} +1 -1
  58. package/dist/client/assets/ComposerAttachments-DW0AIb8k.js +1 -0
  59. package/dist/client/assets/ConversationComposer-CUQyArlk.js +1 -0
  60. package/dist/client/assets/ConversationFeedRows-DWiOfT-y.js +1 -0
  61. package/dist/client/assets/ConversationHeader-C-ZWscKj.js +1 -0
  62. package/dist/client/assets/{ConversationPanels-6pprBpmq.js → ConversationPanels-D9oC0xG5.js} +2 -2
  63. package/dist/client/assets/ConversationScreen-9MlMnEo4.css +1 -0
  64. package/dist/client/assets/ConversationScreen-CUfsQ4MR.js +2 -0
  65. package/dist/client/assets/ConversationStatus--IPm2nGh.js +1 -0
  66. package/dist/client/assets/{CrewAvatar-D0c9z5Qr.css → CrewAvatar-BnIPIn_Z.css} +1 -1
  67. package/dist/client/assets/CrewAvatar-kTznzqcO.js +1 -0
  68. package/dist/client/assets/{CrewSprite-Dp9KBBGY.js → CrewSprite-Dhryjx2c.js} +1 -1
  69. package/dist/client/assets/CrewStage-vdO0qm3D.js +1 -0
  70. package/dist/client/assets/CrewWorkspaces-DCBzAAS4.js +1 -0
  71. package/dist/client/assets/{DataTable-av71ehJV.js → DataTable-aH-jCyDq.js} +1 -1
  72. package/dist/client/assets/{DispatchAftermath-CcYGUB10.js → DispatchAftermath-66uQAorV.js} +1 -1
  73. package/dist/client/assets/{DocumentFocusViewer-DlMiEALb.js → DocumentFocusViewer-DJr0v0D_.js} +1 -1
  74. package/dist/client/assets/{EmbeddableSurfacesLab-CTkO_tQR.js → EmbeddableSurfacesLab-BBa70EhJ.js} +1 -1
  75. package/dist/client/assets/{EmptyState-CYUwYyAW.js → EmptyState-CZlrHXy-.js} +1 -1
  76. package/dist/client/assets/{FileViewerPane-Cxhixtks.js → FileViewerPane-BAO6mtjD.js} +1 -1
  77. package/dist/client/assets/FleetRollCallHud-C5q2567n.js +1 -0
  78. package/dist/client/assets/FlightObserveScreen-DZ2mrw91.js +1 -0
  79. package/dist/client/assets/{FloorContextSheet-Vj_wVZq1.js → FloorContextSheet-2_NVPQor.js} +1 -1
  80. package/dist/client/assets/{FloorExchangePanel-CjHSDXad.js → FloorExchangePanel-BU1pPu8K.js} +1 -1
  81. package/dist/client/assets/{FloorMessagePasses-BG4ebnX5.js → FloorMessagePasses-cLW2UGNP.js} +1 -1
  82. package/dist/client/assets/{FloorReplay-BoYaGY9t.js → FloorReplay-VFzA6Kxc.js} +1 -1
  83. package/dist/client/assets/FloorResourcesSheet-C-kQ6Ren.js +1 -0
  84. package/dist/client/assets/{FloorSavedWork-jbtRs-YE.js → FloorSavedWork-BeHDejWz.js} +1 -1
  85. package/dist/client/assets/FloorTacticalHUD-CO-iiFpb.js +1 -0
  86. package/dist/client/assets/{FollowScreen-CupyOgt4.js → FollowScreen-CFfkIbc6.js} +1 -1
  87. package/dist/client/assets/HarnessMark-C4naWc16.js +1 -0
  88. package/dist/client/assets/HarnessesScreen-DX3NLcDG.js +1 -0
  89. package/dist/client/assets/{HerdrSession-Dcm3vf9U.js → HerdrSession-_t7yM8vX.js} +2 -2
  90. package/dist/client/assets/{HomeHero-pIZtE1cC.js → HomeHero-DouPyNmz.js} +1 -1
  91. package/dist/client/assets/{HostAdvisorView-Dv5meXo2.js → HostAdvisorView-CnM1i8hW.js} +1 -1
  92. package/dist/client/assets/InviteLandingScreen-CEjG2E34.js +1 -0
  93. package/dist/client/assets/InviteSheet-CwxZtWCl.js +1 -0
  94. package/dist/client/assets/{JumpPalette-BmiSOEmp.js → JumpPalette-O1aJE9gR.js} +1 -1
  95. package/dist/client/assets/{KnowledgeSearchInspector-B8yiM524.js → KnowledgeSearchInspector-32n9baT-.js} +1 -1
  96. package/dist/client/assets/KnowledgeSearchScreen-Dd6jrQ0A.js +1 -0
  97. package/dist/client/assets/{LaneToolHoverCard-D2cnTeUd.js → LaneToolHoverCard-CJa110yk.js} +1 -1
  98. package/dist/client/assets/LaneTraceDetailSheet-DYrd0BIf.js +1 -0
  99. package/dist/client/assets/{LaneTraceEventFocus-BLhVHwff.js → LaneTraceEventFocus-TbrNHRj_.js} +1 -1
  100. package/dist/client/assets/{MeshCanvas-BR25OBTJ.js → MeshCanvas-DWZHYh1A.js} +2 -2
  101. package/dist/client/assets/{MeshCanvasMinimap-ClVolr4-.js → MeshCanvasMinimap-iswYFpIb.js} +1 -1
  102. package/dist/client/assets/MeshScreen-8nAzQVbm.js +1 -0
  103. package/dist/client/assets/{MeshTopologyView-BT3ke2D1.js → MeshTopologyView-BVvtqI8q.js} +2 -2
  104. package/dist/client/assets/MessageEmbeds-ksPazAKH.js +1 -0
  105. package/dist/client/assets/MessagesScreen-C3WB4T21.js +1 -0
  106. package/dist/client/assets/{MissionContextRail-CafjuseK.js → MissionContextRail-D62-Wis8.js} +1 -1
  107. package/dist/client/assets/MissionControlView-B9cNPXvl.js +1 -0
  108. package/dist/client/assets/{MissionFocusOverlay-nhy3hkxQ.js → MissionFocusOverlay-C1zys3Jv.js} +1 -1
  109. package/dist/client/assets/MissionLeftAgentRow-vycMV77n.js +1 -0
  110. package/dist/client/assets/{MissionLogPane-DiUf3vWW.js → MissionLogPane-B19lYSY9.js} +1 -1
  111. package/dist/client/assets/NativeAreaScreen-B1RLa85C.js +1 -0
  112. package/dist/client/assets/NativeAreaScreen-CV0OhGra.js +1 -0
  113. package/dist/client/assets/NativeAreaScreen-CzuZt6o1.js +1 -0
  114. package/dist/client/assets/{NewAgentModal-BQ2wQ5gp.js → NewAgentModal-Bh-L-emz.js} +1 -1
  115. package/dist/client/assets/NewChatComposer-C97-iTMK.js +19 -0
  116. package/dist/client/assets/{NewChatOrigin-C8ROO4ps.js → NewChatOrigin-DFbF_XvR.js} +1 -1
  117. package/dist/client/assets/{NodeDetailPanel-BNTqYC7m.js → NodeDetailPanel-CElOEpCh.js} +1 -1
  118. package/dist/client/assets/{NodeMenu-CcOeFRCB.js → NodeMenu-B-jjHf1c.js} +1 -1
  119. package/dist/client/assets/ObserveEmbedScreen-B7Qt69Ms.js +2 -0
  120. package/dist/client/assets/{ObserveTextFlow-CC5mnngm.js → ObserveTextFlow-PFnG_10h.js} +2 -2
  121. package/dist/client/assets/{ObservedTopologyPanel-DF6tRZL_.js → ObservedTopologyPanel-CUTIoLZJ.js} +1 -1
  122. package/dist/client/assets/OpenScoutAppShell-37PDFfA4.js +31 -0
  123. package/dist/client/assets/OpsAgentsView-DajlX8LO.js +1 -0
  124. package/dist/client/assets/OpsScreen-jVcaBKGi.js +1 -0
  125. package/dist/client/assets/OpsSubnav-BOOYShHE.js +1 -0
  126. package/dist/client/assets/ProjectAgentProfile-D_wlW4sQ.js +1 -0
  127. package/dist/client/assets/{ProjectAgentProfileBar-C8z22pJ2.js → ProjectAgentProfileBar-DHuMKJj-.js} +1 -1
  128. package/dist/client/assets/ProjectAgentProfileHero-Dbebtug1.js +1 -0
  129. package/dist/client/assets/ProjectsInbox-B8zYE4vP.css +1 -0
  130. package/dist/client/assets/ProjectsInbox-Cgu7B4--.js +2 -0
  131. package/dist/client/assets/ProjectsRail-CDWocin_.js +1 -0
  132. package/dist/client/assets/ProjectsScreen-B_CJycqW.js +1 -0
  133. package/dist/client/assets/ProjectsThreadAside-1MMl_qUD.js +1 -0
  134. package/dist/client/assets/Provider-C35yu29I.js +5 -0
  135. package/dist/client/assets/{RailRow-DUPqXMZh.js → RailRow-BjmWK420.js} +1 -1
  136. package/dist/client/assets/RawSessionsTable-DzT90hWu.js +1 -0
  137. package/dist/client/assets/RealtimeVoiceScreen-B6ylX3WQ.js +16 -0
  138. package/dist/client/assets/{RenderedWorkerSprite-C8fxndAh.js → RenderedWorkerSprite-Dhlyg89J.js} +1 -1
  139. package/dist/client/assets/{ReplayClock-DUVJjrIu.js → ReplayClock-348f17bW.js} +1 -1
  140. package/dist/client/assets/{ReplayLog-Bek1Vc4W.js → ReplayLog-CBnAM3ui.js} +1 -1
  141. package/dist/client/assets/{ReplayOutpost-DlRg3172.js → ReplayOutpost-DyRPfNFx.js} +1 -1
  142. package/dist/client/assets/{RepoDiffEmbedScreen-CVUMnt6A.js → RepoDiffEmbedScreen-BWxvRDrS.js} +1 -1
  143. package/dist/client/assets/{RepoDiffPageScreen-D9-s5PyB.js → RepoDiffPageScreen-DN94irmY.js} +1 -1
  144. package/dist/client/assets/{RepoDiffViewer-D7FN-oyY.js → RepoDiffViewer-_4JVXBIW.js} +1 -1
  145. package/dist/client/assets/RepoDiffViewerLazy-XGVC3WXv.js +2 -0
  146. package/dist/client/assets/{ReposScreen-BQ7HO1om.js → ReposScreen-uMCpt0e9.js} +2 -2
  147. package/dist/client/assets/{RiggedWorkerCharacter-CJMWlvV-.js → RiggedWorkerCharacter-q6QRc7_o.js} +1 -1
  148. package/dist/client/assets/{SageModelStudio-B526NSnw.js → SageModelStudio-CNDhZhgD.js} +1 -1
  149. package/dist/client/assets/{ScoutDeckSurface-ChkvGyEW.js → ScoutDeckSurface-CUaU4R6T.js} +1 -1
  150. package/dist/client/assets/{ScoutSurface-6g1f5chk.js → ScoutSurface-3_25USO_.js} +1 -1
  151. package/dist/client/assets/{ScoutbotFxLab-BuwBdnPf.js → ScoutbotFxLab-CRqhYe0a.js} +1 -1
  152. package/dist/client/assets/{SecondaryNav-Bs-_VwTC.js → SecondaryNav-D7dbV2qo.js} +1 -1
  153. package/dist/client/assets/SessionContextStrip-CXfs9hUD.js +1 -0
  154. package/dist/client/assets/SessionContextStrip-DAIXwtHd.css +1 -0
  155. package/dist/client/assets/{SessionEmbedScreen-C2wf35-P.js → SessionEmbedScreen-D0zFmou-.js} +1 -1
  156. package/dist/client/assets/SessionHopMenu-E6VJZrE0.js +1 -0
  157. package/dist/client/assets/{SessionObserve-B64YsYhy.js → SessionObserve-DXxBvejJ.js} +9 -9
  158. package/dist/client/assets/SessionObserveEvidence-Cuj_KHxR.js +1 -0
  159. package/dist/client/assets/SessionRefScreen-DqLSUlCE.js +1 -0
  160. package/dist/client/assets/SessionsScreen-BLIRkohT.js +1 -0
  161. package/dist/client/assets/SettingsDrawer-juCpnbH6.js +3 -0
  162. package/dist/client/assets/SettingsScreen-BtGzE2-O.js +1 -0
  163. package/dist/client/assets/{SharedFloorCharacter-V04kD5T9.js → SharedFloorCharacter-DNEiaOUh.js} +1 -1
  164. package/dist/client/assets/SharedWorkFloor-0rqtdF-n.css +1 -0
  165. package/dist/client/assets/SharedWorkFloor-D9mf9KSg.js +2 -0
  166. package/dist/client/assets/{ShikiPane-XwFI-pCp.js → ShikiPane-CRtTYkMj.js} +1 -1
  167. package/dist/client/assets/{SlidePanel-BMpkXai_.js → SlidePanel-_CHAQdOa.js} +1 -1
  168. package/dist/client/assets/SpaceSwitcher-BLgSCf_T.js +1 -0
  169. package/dist/client/assets/{SpriteAvatar-aHeF4ZQZ.js → SpriteAvatar-CpZWf54-.js} +1 -1
  170. package/dist/client/assets/{SproutActionSprite-DI5N3gOj.js → SproutActionSprite-BSiTS4en.js} +1 -1
  171. package/dist/client/assets/{StatusPill-Dw4LP7wu.js → StatusPill-2gCP6H7A.js} +1 -1
  172. package/dist/client/assets/{TailView-BofjmUMJ.js → TailView-CYSijNTy.js} +2 -2
  173. package/dist/client/assets/Terminal-Bi97yb5s.js +4 -0
  174. package/dist/client/assets/TerminalEmbedScreen-Bqop67Bq.js +1 -0
  175. package/dist/client/assets/{TerminalHeaderMount-CwbQhXcI.js → TerminalHeaderMount-Cq4OD_xN.js} +1 -1
  176. package/dist/client/assets/{TerminalRelay--qOBwnbR.js → TerminalRelay-DrikpUSJ.js} +3 -3
  177. package/dist/client/assets/{TextDocumentSurface-BK6Qy41F.js → TextDocumentSurface-D52m7Vd8.js} +1 -1
  178. package/dist/client/assets/{TmuxPeek-DpUT9Tpc.js → TmuxPeek-CXFeweMg.js} +1 -1
  179. package/dist/client/assets/VoiceControlWell-DF3bjcYA.js +1 -0
  180. package/dist/client/assets/VoicePathDiagram-CmpHWfO-.js +1 -0
  181. package/dist/client/assets/{VoicePermissionsPanel-D35fOnQj.js → VoicePermissionsPanel-Ok2nfxHw.js} +1 -1
  182. package/dist/client/assets/VoiceTurnDetails-wAByRaNB.js +8 -0
  183. package/dist/client/assets/VoiceTurnStage-edoJalLV.js +1 -0
  184. package/dist/client/assets/VoiceTurnView-D-8g5E4r.js +1 -0
  185. package/dist/client/assets/WorkDetailScreen-zQkNVy2F.js +5 -0
  186. package/dist/client/assets/{WorkFilesViewer-t8AEyx3Q.js → WorkFilesViewer-vNt01sDd.js} +1 -1
  187. package/dist/client/assets/{WorkRunView-_mhG_FR2.js → WorkRunView-BDkR7Edq.js} +1 -1
  188. package/dist/client/assets/WorldActorTalk-BvSg_b1y.js +1 -0
  189. package/dist/client/assets/{WorldCharacter-BRrj3MQN.js → WorldCharacter-CIIlutQq.js} +1 -1
  190. package/dist/client/assets/WorldMinimap-B6HNgcDe.js +1 -0
  191. package/dist/client/assets/{WorldSky-D-RJzSa6.js → WorldSky-Jm2Z6dfW.js} +1 -1
  192. package/dist/client/assets/{activity-BJqFrZyB.js → activity-CIlFrfPJ.js} +1 -1
  193. package/dist/client/assets/{addon-fit-CHohcvS3.js → addon-fit-dFpj9Kfq.js} +1 -1
  194. package/dist/client/assets/{addon-webgl-CaRy2x2b.js → addon-webgl-BFCGRtGh.js} +1 -1
  195. package/dist/client/assets/{agent-essentials-bKWYOZaH.js → agent-essentials-BGGvT5G6.js} +1 -1
  196. package/dist/client/assets/{agent-master-model-C-KdOFDK.js → agent-master-model-Bk_yuUXJ.js} +1 -1
  197. package/dist/client/assets/{agent-specialization-BplZUa_0.js → agent-specialization-DDc7mLCW.js} +1 -1
  198. package/dist/client/assets/agents-screen-BYakbO50.css +1 -0
  199. package/dist/client/assets/{arc.es-CubLvQ4W.js → arc.es-C1SQHJ3k.js} +1 -1
  200. package/dist/client/assets/{arrow-left-DFfKAq0d.js → arrow-left-MVUKauwQ.js} +1 -1
  201. package/dist/client/assets/{arrow-right-DmAWnyAH.js → arrow-right-Bp-FpE5V.js} +1 -1
  202. package/dist/client/assets/{arrow-up-right-B0aLKiyF.js → arrow-up-right-BPedAgxO.js} +1 -1
  203. package/dist/client/assets/{book-open-BL9qvhEI.js → book-open-CV98WMSp.js} +1 -1
  204. package/dist/client/assets/{bot-BhAVbcCA.js → bot-B4zLQ4IN.js} +1 -1
  205. package/dist/client/assets/chat-api-DSJMBYoT.js +2 -0
  206. package/dist/client/assets/chat-message-markup-91DIry6R.js +1 -0
  207. package/dist/client/assets/chat-space-model-aW3Fd8_U.js +4 -0
  208. package/dist/client/assets/chat-transport-DNS5CB2I.js +1 -0
  209. package/dist/client/assets/{check-g7D7-c1J.js → check-lrJ3a73a.js} +1 -1
  210. package/dist/client/assets/{chevron-down-CDzRQQGl.js → chevron-down-l1mrh5S9.js} +1 -1
  211. package/dist/client/assets/{chevron-right-DKGTLiqc.js → chevron-right-DrfqcerI.js} +1 -1
  212. package/dist/client/assets/{chevron-up-DX7R6KY2.js → chevron-up-CETZJzjV.js} +1 -1
  213. package/dist/client/assets/{chunk-HRAB3GC3-Dvk_QpRq.js → chunk-HRAB3GC3-DbVLgbWX.js} +1 -1
  214. package/dist/client/assets/{clock-CQb4FeMf.js → clock-BV1aqPkK.js} +1 -1
  215. package/dist/client/assets/{code-xml-Cmadr3pQ.js → code-xml-BhcNbLWU.js} +1 -1
  216. package/dist/client/assets/{coffee-ljG1_krY.js → coffee-D7EAOdCk.js} +1 -1
  217. package/dist/client/assets/{compass-CvzkzkIh.js → compass-63TUaz5_.js} +1 -1
  218. package/dist/client/assets/content-B1lgE8qr.js +1 -0
  219. package/dist/client/assets/content-B5l11YyQ.js +1 -0
  220. package/dist/client/assets/content-BNZOZEpX.js +1 -0
  221. package/dist/client/assets/content-BRIxP155.js +1 -0
  222. package/dist/client/assets/content-BWd8gt8L.js +1 -0
  223. package/dist/client/assets/content-BfwS2jAK.js +1 -0
  224. package/dist/client/assets/content-C4p43_eT.js +1 -0
  225. package/dist/client/assets/content-CdYfaoDV.js +1 -0
  226. package/dist/client/assets/content-CzldLxw0.js +1 -0
  227. package/dist/client/assets/content-D-olnc4U.js +1 -0
  228. package/dist/client/assets/content-DTioimq4.js +1 -0
  229. package/dist/client/assets/content-LOebm3_d.js +1 -0
  230. package/dist/client/assets/{content-CKJ9zb7Z.js → content-nGlEZhUI.js} +1 -1
  231. package/dist/client/assets/{content-D1Ze_FG9.js → content-oyzDM-LK.js} +1 -1
  232. package/dist/client/assets/content-x1PHxED7.js +1 -0
  233. package/dist/client/assets/content-zX3ZY3T9.js +1 -0
  234. package/dist/client/assets/{conversation-icons-CIRaxmid.js → conversation-icons-Tqba2d56.js} +1 -1
  235. package/dist/client/assets/conversation-model-FxDeWlle.js +1 -0
  236. package/dist/client/assets/conversation-motion-features-C5zjuNwE.js +1 -0
  237. package/dist/client/assets/conversations-DoAAO6kA.js +1 -0
  238. package/dist/client/assets/{copy-BGOC1tJB.js → copy-xKeM5ZtU.js} +1 -1
  239. package/dist/client/assets/{cpu-Q6nrHFTN.js → cpu-BOTa_WLr.js} +1 -1
  240. package/dist/client/assets/{createLucideIcon-ChvMq-zl.js → createLucideIcon-zZ8Hx7er.js} +1 -1
  241. package/dist/client/assets/ctx-panel-BC8fpcWJ.css +1 -0
  242. package/dist/client/assets/direct-voice-BbLPuJ04.js +2 -0
  243. package/dist/client/assets/direct-voice-DbO7CSv_.css +1 -0
  244. package/dist/client/assets/discover-DJFxyV1k.js +2 -0
  245. package/dist/client/assets/embed-entry-Lyvu0Kfc.js +2 -0
  246. package/dist/client/assets/{external-link-BVccgH0n.js → external-link-CUObqmgX.js} +1 -1
  247. package/dist/client/assets/{eye-CsGfEVR6.js → eye-LrO-cXQt.js} +1 -1
  248. package/dist/client/assets/{file-code-corner-Be6da5l3.js → file-code-corner-CsU7jJpu.js} +1 -1
  249. package/dist/client/assets/{file-text-DP6txVW-.js → file-text-CnISiiw6.js} +1 -1
  250. package/dist/client/assets/{flag-DAFE2wZ5.js → flag-C4wl8z2-.js} +1 -1
  251. package/dist/client/assets/fleet-roll-call-BUgf7w-V.css +1 -0
  252. package/dist/client/assets/{folder-B_S7gBVr.js → folder-D5prSkzz.js} +1 -1
  253. package/dist/client/assets/{gauge-DQCGlE3o.js → gauge-D9_5iJEm.js} +1 -1
  254. package/dist/client/assets/{gestures-CofqY4Km.js → gestures-QZub3Ot9.js} +1 -1
  255. package/dist/client/assets/{git-branch-DcUCsWdJ.js → git-branch-B0_fPLO7.js} +1 -1
  256. package/dist/client/assets/{go-shortcuts-KQy-ZOpV.js → go-shortcuts-DicR7sUf.js} +1 -1
  257. package/dist/client/assets/home-moving-signal-rpMhsOJB.js +1 -0
  258. package/dist/client/assets/home-now-card-ByE6Umcx.js +1 -0
  259. package/dist/client/assets/{home-now-card-nano-CvU8B61b.js → home-now-card-nano-B5Dv3-pb.js} +1 -1
  260. package/dist/client/assets/hooks-_eCZZPsR.js +2 -0
  261. package/dist/client/assets/index-724SdE6r.js +1 -0
  262. package/dist/client/assets/{index-kkXUq-zf.js → index-CHD0qcfL.js} +1 -1
  263. package/dist/client/assets/index-CN4rBB_s.css +1 -0
  264. package/dist/client/assets/index-D1d98iYf.js +1 -0
  265. package/dist/client/assets/{index-DReVb7jZ.js → index-EsrkGBcv.js} +8 -8
  266. package/dist/client/assets/index-gGHPA-By.js +1 -0
  267. package/dist/client/assets/{inspector-panel-CLU7wjnT.js → inspector-panel-BkgUDn6G.js} +2 -2
  268. package/dist/client/assets/{keyboard-nav-CJXPaHXj.js → keyboard-nav-DDHegDbx.js} +1 -1
  269. package/dist/client/assets/{lane-roster-store-Ch9t6lb0.js → lane-roster-store-D-RSWjb-.js} +1 -1
  270. package/dist/client/assets/{layers-BOwyWodP.js → layers-C8PDiMul.js} +1 -1
  271. package/dist/client/assets/{layout-grid-B36Qsh0y.js → layout-grid-Cor2frzj.js} +1 -1
  272. package/dist/client/assets/left-Bn5X7x2o.js +2 -0
  273. package/dist/client/assets/left-BqS0fYX1.js +1 -0
  274. package/dist/client/assets/left-CTCeeeD3.js +1 -0
  275. package/dist/client/assets/left-DhtVPVux.js +1 -0
  276. package/dist/client/assets/left-K39b-Wvx.js +2 -0
  277. package/dist/client/assets/left-KGmueNPt.js +1 -0
  278. package/dist/client/assets/left-P_GOYB-s.js +1 -0
  279. package/dist/client/assets/left-advisor-B0N47De2.js +1 -0
  280. package/dist/client/assets/left-agents-CsSNc51Y.js +1 -0
  281. package/dist/client/assets/left-default-BlO5LP2T.js +1 -0
  282. package/dist/client/assets/left-lanes-C4PhaJE6.js +1 -0
  283. package/dist/client/assets/left-mission-BjTE5vPa.js +1 -0
  284. package/dist/client/assets/library-CkWNPHRp.js +1 -0
  285. package/dist/client/assets/{loader-circle-DNUsuPWz.js → loader-circle-OvccU82H.js} +1 -1
  286. package/dist/client/assets/{local-agents-I40PawYA.js → local-agents-BqnoxJrq.js} +1 -1
  287. package/dist/client/assets/log-in-7SnYqW5w.js +1 -0
  288. package/dist/client/assets/{machine-children-CdhNzDF0.js → machine-children-DxcqCLmd.js} +1 -1
  289. package/dist/client/assets/media-blobs-Bi8pxr1u.js +1 -0
  290. package/dist/client/assets/{mentions-Ck_Vjnyp.js → mentions-ByUvhS-v.js} +1 -1
  291. package/dist/client/assets/{mesh-ops-DSlvHp-D.js → mesh-ops-CiZ8xSAx.js} +1 -1
  292. package/dist/client/assets/{mesh-view-store-C1-mdP3P.js → mesh-view-store-DZvJC4KU.js} +1 -1
  293. package/dist/client/assets/{message-circle-cI5_A5mj.js → message-circle-CxRVKNE-.js} +1 -1
  294. package/dist/client/assets/message-markup-BQW5jdJw.js +15 -0
  295. package/dist/client/assets/message-markup-Zwo3t4cI.js +1 -0
  296. package/dist/client/assets/{message-square-CJW4WRlo.js → message-square-BxesYglW.js} +1 -1
  297. package/dist/client/assets/mission-control-model-BpJHDV5D.js +1 -0
  298. package/dist/client/assets/{mission-control-store-p_cboAm4.js → mission-control-store-elEEsIvb.js} +1 -1
  299. package/dist/client/assets/{mission-wall-DOuGOxQy.js → mission-wall-CAo4BKfa.js} +1 -1
  300. package/dist/client/assets/{monitor-C7_cHlkC.js → monitor-DTTYEb73.js} +1 -1
  301. package/dist/client/assets/{nav-destinations-CU_euC-Q.js → nav-destinations-uorRqFxf.js} +1 -1
  302. package/dist/client/assets/{observe-CtS0l3zu.js → observe-BJqERJVj.js} +1 -1
  303. package/dist/client/assets/{page-status-DwFR4wSw.js → page-status-BswZLqvA.js} +1 -1
  304. package/dist/client/assets/{panel-right-qP17MwMl.js → panel-right-Bv7sP_fc.js} +1 -1
  305. package/dist/client/assets/paperclip-BjcuP_Hx.js +1 -0
  306. package/dist/client/assets/{pause-B_hliKuR.js → pause-C2XTlkjs.js} +1 -1
  307. package/dist/client/assets/{persistent-state-BUsTTZFE.js → persistent-state-KRk_yb0q.js} +1 -1
  308. package/dist/client/assets/{pin-Oi4qHR6M.js → pin-C2mFOV1l.js} +1 -1
  309. package/dist/client/assets/{play-CVeRmqLH.js → play-FT6K3It1.js} +1 -1
  310. package/dist/client/assets/{plus-D5NLH_fM.js → plus-DFDDeGKu.js} +1 -1
  311. package/dist/client/assets/profile-DTmzN16I.js +1 -0
  312. package/dist/client/assets/{projects-inbox-CfwxCTdN.js → projects-inbox-C0FUCv_p.js} +1 -1
  313. package/dist/client/assets/projects-inbox-ColX6lpx.css +1 -0
  314. package/dist/client/assets/{provider-DwmCoSlc.js → provider-Dojd8quC.js} +1 -1
  315. package/dist/client/assets/{proxy-DgzP27W8.js → proxy-AJsmwA6h.js} +1 -1
  316. package/dist/client/assets/{radio-Cas2qg1D.js → radio-DRoOZsws.js} +1 -1
  317. package/dist/client/assets/{refresh-cw-IcD2lPoT.js → refresh-cw-BmVr7sCD.js} +1 -1
  318. package/dist/client/assets/resolve-panes-pbY1fCWi.js +1 -0
  319. package/dist/client/assets/resolve-sidebar-context-YWkZTq1t.js +1 -0
  320. package/dist/client/assets/right-49kO-6nD.js +1 -0
  321. package/dist/client/assets/right-APtItA8A.js +1 -0
  322. package/dist/client/assets/right-BJwhPqtn.js +1 -0
  323. package/dist/client/assets/right-BPqrf4ek.js +1 -0
  324. package/dist/client/assets/right-D7djOy6K.js +1 -0
  325. package/dist/client/assets/right-DKOUCRob.js +1 -0
  326. package/dist/client/assets/right-DMNrVzg7.js +1 -0
  327. package/dist/client/assets/{right-cjPTwPXS.js → right-DWPVB-nK.js} +1 -1
  328. package/dist/client/assets/right-DppeMCy4.js +1 -0
  329. package/dist/client/assets/right-GAL5Mw1v.js +1 -0
  330. package/dist/client/assets/{rocket-DAqYvu8I.js → rocket-CGl4RTV7.js} +1 -1
  331. package/dist/client/assets/router-DCtl8wqb.js +1 -0
  332. package/dist/client/assets/runtime-picker-DXu2bOTh.js +1 -0
  333. package/dist/client/assets/{scope-views-Dl3ml9OZ.js → scope-views-RUWwCVAr.js} +1 -1
  334. package/dist/client/assets/scout-voice-CZx60X6E.js +1 -0
  335. package/dist/client/assets/{scoutbot-markdown-DwvGQOWo.js → scoutbot-markdown-BKEBSbG0.js} +1 -1
  336. package/dist/client/assets/{scroll-text-B0tKI9Sg.js → scroll-text-DNjxhyO2.js} +1 -1
  337. package/dist/client/assets/{search-UsM-9-_W.js → search-DT42oyRW.js} +1 -1
  338. package/dist/client/assets/secondaryNavConfig-CS1svh6n.js +1 -0
  339. package/dist/client/assets/{selection-bridge-OTS2iFkt.js → selection-bridge-x3wFUjxj.js} +1 -1
  340. package/dist/client/assets/{send-horizontal-BlQsRK6C.js → send-horizontal-CH0-fbZE.js} +1 -1
  341. package/dist/client/assets/{send-to-agent-session-C1mgqdow.js → send-to-agent-session-DoKCDBJ4.js} +1 -1
  342. package/dist/client/assets/{server-DBlPW0Mp.js → server-QfsgMLk1.js} +1 -1
  343. package/dist/client/assets/{session-catalog-CnpZMB7C.js → session-catalog-CvSdPHPe.js} +1 -1
  344. package/dist/client/assets/session-recap-lanes-D-eVJnpY.js +1 -0
  345. package/dist/client/assets/session-recap-queue-41l2XVkI.js +1 -0
  346. package/dist/client/assets/{session-table-CGkfG5Yd.js → session-table-L-pns6Zl.js} +1 -1
  347. package/dist/client/assets/{sessions-view-Bge4XZ4I.js → sessions-view-Dc-QAa7O.js} +1 -1
  348. package/dist/client/assets/{settings-C69Zjrpq.js → settings-BVh7kldq.js} +1 -1
  349. package/dist/client/assets/{sliders-horizontal-6bzeod7c.js → sliders-horizontal-782VC_yy.js} +1 -1
  350. package/dist/client/assets/{sparkles-Cc5lPZRv.js → sparkles-BjHq_DNK.js} +1 -1
  351. package/dist/client/assets/{sse-A8AyLH0g.js → sse-BCPRocpq.js} +1 -1
  352. package/dist/client/assets/system-surfaces-redesign-q2BmCB7e.css +1 -0
  353. package/dist/client/assets/{tail-events-C4WdhVeK.js → tail-events-d0yAYxR0.js} +1 -1
  354. package/dist/client/assets/{terminal-DMZjX1es.js → terminal-hQKQygcf.js} +1 -1
  355. package/dist/client/assets/{terminal-relay-mO89dX-Y.js → terminal-relay-Bxs1hp-j.js} +1 -1
  356. package/dist/client/assets/{terminal-takeover-CZZsnPzj.js → terminal-takeover-Ay5C2c-M.js} +1 -1
  357. package/dist/client/assets/theme-vars-DNK0nn3k.js +1 -0
  358. package/dist/client/assets/triangle-alert-CHoRGdVO.js +1 -0
  359. package/dist/client/assets/{use-beside-D3cJpA5p.js → use-beside-DoRC1nt0.js} +1 -1
  360. package/dist/client/assets/{use-conversation-list-D5EnpVba.js → use-conversation-list-CY4JciOV.js} +1 -1
  361. package/dist/client/assets/{use-fleet-active-asks-D_QOmjg5.js → use-fleet-active-asks-CymmXWH4.js} +1 -1
  362. package/dist/client/assets/{use-mesh-node-state-3V3ADQ-G.js → use-mesh-node-state-BvaqtODo.js} +1 -1
  363. package/dist/client/assets/{use-mesh-ops-items-DI9GKWlF.js → use-mesh-ops-items-BSYaqH_0.js} +1 -1
  364. package/dist/client/assets/{use-reduced-motion-CiaZHMnk.js → use-reduced-motion-3gMYZNIp.js} +1 -1
  365. package/dist/client/assets/{use-scout-dev-flags-CkdAHlDR.js → use-scout-dev-flags-DS_pYYQd.js} +1 -1
  366. package/dist/client/assets/{useAgentHoverCard-A3QGXqIy.js → useAgentHoverCard-BANmpjMh.js} +1 -1
  367. package/dist/client/assets/useContentSecondaryNav-C6OBu-3_.js +1 -0
  368. package/dist/client/assets/{useEmbedHeadline-atkQVfGw.js → useEmbedHeadline-D6pJRxUg.js} +1 -1
  369. package/dist/client/assets/usePersistentState-B8lP7TRb.js +1 -0
  370. package/dist/client/assets/{usePierreRuntime-DTvcwISe.js → usePierreRuntime-BAQdiN0L.js} +1 -1
  371. package/dist/client/assets/useSidebarCollapse-OL_8J5cL.js +1 -0
  372. package/dist/client/assets/{users-RLK3P5U4.js → users-BUjx36gx.js} +1 -1
  373. package/dist/client/assets/voice-paths-CJUuBPh3.css +1 -0
  374. package/dist/client/assets/voice-turn-DftA0iIb.css +1 -0
  375. package/dist/client/assets/voice-turn-ledger-BMZxlSjg.js +1 -0
  376. package/dist/client/assets/{wrench-B4maQJai.js → wrench-DR0i5BU7.js} +1 -1
  377. package/dist/client/assets/{x-rlMdRqJF.js → x-DAehov0E.js} +1 -1
  378. package/dist/client/assets/{xterm-B1zHHOLQ.js → xterm-BXQiLVnI.js} +1 -1
  379. package/dist/client/assets/{zap-B4X0OrEw.js → zap-CEjZNZbI.js} +1 -1
  380. package/dist/client/crew/sheets/eye-plate-v1/look-down-left.webp +0 -0
  381. package/dist/client/crew/sheets/eye-plate-v1/look-down-right.webp +0 -0
  382. package/dist/client/crew/sheets/eye-plate-v1/look-down.webp +0 -0
  383. package/dist/client/crew/sheets/eye-plate-v1/look-up-left.webp +0 -0
  384. package/dist/client/crew/sheets/eye-plate-v1/look-up-right.webp +0 -0
  385. package/dist/client/crew/sheets/eye-plate-v1/look-up.webp +0 -0
  386. package/dist/client/crew/sheets/sprout/blink-half.webp +0 -0
  387. package/dist/client/crew/sheets/sprout/blink-shut.webp +0 -0
  388. package/dist/client/crew/sheets/sprout/look-down-left.webp +0 -0
  389. package/dist/client/crew/sheets/sprout/look-down-right.webp +0 -0
  390. package/dist/client/crew/sheets/sprout/look-down.webp +0 -0
  391. package/dist/client/crew/sheets/sprout/look-left.webp +0 -0
  392. package/dist/client/crew/sheets/sprout/look-right.webp +0 -0
  393. package/dist/client/crew/sheets/sprout/look-up-left.webp +0 -0
  394. package/dist/client/crew/sheets/sprout/look-up-right.webp +0 -0
  395. package/dist/client/crew/sheets/sprout/look-up.webp +0 -0
  396. package/dist/client/index.html +2 -2
  397. package/dist/drizzle/0020_message_reactions.sql +11 -0
  398. package/dist/drizzle/meta/_journal.json +7 -0
  399. package/dist/main.mjs +542 -150
  400. package/dist/node/main.mjs +131 -17
  401. package/dist/pairing-runtime-controller.mjs +375 -78
  402. package/dist/runtime/base-daemon.mjs +98 -5
  403. package/dist/runtime/broker-daemon.mjs +1879 -1198
  404. package/dist/runtime/broker-process-manager.mjs +96 -3
  405. package/dist/runtime/mesh-discover.mjs +96 -3
  406. package/dist/scout-control-plane-web.mjs +4817 -1616
  407. package/dist/update-helper.mjs +211 -39
  408. package/package.json +2 -2
  409. package/dist/client/assets/ActivityScreen-CcDdQTBK.js +0 -1
  410. package/dist/client/assets/AgentAdventures-BxrYq_2v.js +0 -1
  411. package/dist/client/assets/AgentAvatar-NZOqcsB2.js +0 -1
  412. package/dist/client/assets/AgentConfigurationScreen-BhD1PEAM.js +0 -1
  413. package/dist/client/assets/AgentDefinitionsWorkspace-BqS6MXqF.js +0 -1
  414. package/dist/client/assets/AgentFloorView-A0dDRlRV.js +0 -1
  415. package/dist/client/assets/AgentInfoScreen-DuaN0sgE.js +0 -1
  416. package/dist/client/assets/AgentLanesEmbedScreen-CeNiaZ9_.js +0 -1
  417. package/dist/client/assets/AgentLanesView-WZhEDBFE.js +0 -2
  418. package/dist/client/assets/AgentMasterScreen-DUDUTAnU.js +0 -1
  419. package/dist/client/assets/AgentSessions-CO1WGa8Z.js +0 -6
  420. package/dist/client/assets/AgentsConsole-BQOWkj35.js +0 -1
  421. package/dist/client/assets/AgentsScreen-BMNAj1PH.js +0 -1
  422. package/dist/client/assets/AgentsSubnav-CeHhuzyM.js +0 -1
  423. package/dist/client/assets/BriefingDetailScreen-yZG8_m4h.js +0 -1
  424. package/dist/client/assets/BrokerScreen-CT37VQiL.js +0 -8
  425. package/dist/client/assets/ChannelComposer-BVItWlEz.js +0 -1
  426. package/dist/client/assets/ChannelSidebar-B-2spawY.js +0 -1
  427. package/dist/client/assets/ChatBits-CLJ71hTY.js +0 -1
  428. package/dist/client/assets/ChatRightPanel-pKQtkAgl.js +0 -1
  429. package/dist/client/assets/ChatSpaceSurface-NrLwdPkE.js +0 -1
  430. package/dist/client/assets/ChatSpaceTheme-BPMgPdVK.css +0 -1
  431. package/dist/client/assets/ChatSpaceTheme-D37Jk7bl.js +0 -1
  432. package/dist/client/assets/ConversationComposer-DNcn5U6D.js +0 -1
  433. package/dist/client/assets/ConversationFeedRows-RnYSa7Io.js +0 -1
  434. package/dist/client/assets/ConversationHeader-Y9TEJxP_.js +0 -1
  435. package/dist/client/assets/ConversationScreen-Brfas2y0.css +0 -1
  436. package/dist/client/assets/ConversationScreen-tpj4cqWs.js +0 -2
  437. package/dist/client/assets/ConversationStatus-Cv-7hErW.js +0 -1
  438. package/dist/client/assets/CrewAvatar-zgzC3cbU.js +0 -1
  439. package/dist/client/assets/CrewWorkspaces-K2jcyLec.js +0 -1
  440. package/dist/client/assets/FlightObserveScreen-CvzhzuWc.js +0 -1
  441. package/dist/client/assets/FloorResourcesSheet-_Iy5UqgY.js +0 -1
  442. package/dist/client/assets/FloorTacticalHUD-BhyOqlL5.js +0 -1
  443. package/dist/client/assets/HarnessMark-DSvM_H7H.js +0 -1
  444. package/dist/client/assets/HarnessesScreen-DyjqbZ4k.js +0 -1
  445. package/dist/client/assets/InviteLandingScreen-xZQ2na1z.js +0 -1
  446. package/dist/client/assets/InviteSheet--5Zjct25.js +0 -1
  447. package/dist/client/assets/KnowledgeSearchScreen-BPqAjHnH.js +0 -1
  448. package/dist/client/assets/LaneTraceDetailSheet-jl4XQmEx.js +0 -1
  449. package/dist/client/assets/MeshScreen-BW1dMFWF.js +0 -1
  450. package/dist/client/assets/MessagesScreen-CtNMfIvC.js +0 -1
  451. package/dist/client/assets/MissionControlView-BjPOViGY.js +0 -1
  452. package/dist/client/assets/MissionLeftAgentRow-Dms0DBjO.js +0 -1
  453. package/dist/client/assets/NativeAreaScreen-BQSTo8As.js +0 -1
  454. package/dist/client/assets/NativeAreaScreen-Brix6xDB.js +0 -1
  455. package/dist/client/assets/NativeAreaScreen-D7HyQNlM.js +0 -1
  456. package/dist/client/assets/NewChatComposer-BEXS8vV6.js +0 -19
  457. package/dist/client/assets/ObserveEmbedScreen-Dh30EjAQ.js +0 -2
  458. package/dist/client/assets/OpenScoutAppShell-D9pgw36i.js +0 -31
  459. package/dist/client/assets/OpsAgentsView-D3rM0udq.js +0 -1
  460. package/dist/client/assets/OpsScreen-DySeNQ1V.js +0 -1
  461. package/dist/client/assets/OpsSubnav-C9E0r3GZ.js +0 -1
  462. package/dist/client/assets/ProjectAgentProfile-FUav75j2.js +0 -1
  463. package/dist/client/assets/ProjectAgentProfileHero-BLK0EwMg.js +0 -1
  464. package/dist/client/assets/ProjectsInbox-DfCXReZK.js +0 -2
  465. package/dist/client/assets/ProjectsRail-CELVubfJ.js +0 -1
  466. package/dist/client/assets/ProjectsScreen-DMw4TLKy.js +0 -1
  467. package/dist/client/assets/ProjectsThreadAside-D1Sh4fnX.js +0 -1
  468. package/dist/client/assets/Provider-CNZluAZb.js +0 -5
  469. package/dist/client/assets/RailToggle-BwmY70B8.js +0 -1
  470. package/dist/client/assets/RawSessionsTable-6OVJq0JZ.js +0 -1
  471. package/dist/client/assets/RealtimeVoiceScreen-D41TYY0x.js +0 -9
  472. package/dist/client/assets/RepoDiffViewerLazy-BpMR7tlx.js +0 -2
  473. package/dist/client/assets/SessionObserveEvidence-CS1aQBpQ.js +0 -1
  474. package/dist/client/assets/SessionRefScreen-DURV0MpF.js +0 -1
  475. package/dist/client/assets/SessionsScreen-D71ZR-8t.js +0 -1
  476. package/dist/client/assets/SettingsDrawer-Nz98oBVl.js +0 -3
  477. package/dist/client/assets/SettingsScreen-CYBHal6y.js +0 -1
  478. package/dist/client/assets/SharedWorkFloor-BCmdeb3Q.css +0 -1
  479. package/dist/client/assets/SharedWorkFloor-C0xxW4SN.js +0 -2
  480. package/dist/client/assets/SpaceSwitcher-BfeIf-ad.js +0 -1
  481. package/dist/client/assets/Terminal-jIqnIZZ6.js +0 -4
  482. package/dist/client/assets/TerminalEmbedScreen-3XsjuySR.js +0 -1
  483. package/dist/client/assets/WorkDetailScreen-Bcf_yHhU.js +0 -5
  484. package/dist/client/assets/WorldActorTalk-CKerDikx.js +0 -1
  485. package/dist/client/assets/WorldMinimap-DOptgrc4.js +0 -1
  486. package/dist/client/assets/agent-autocomplete-C7xwIcwd.css +0 -1
  487. package/dist/client/assets/agent-autocomplete-_u9o5EZu.js +0 -2
  488. package/dist/client/assets/agents-screen-BMu6PpRY.css +0 -1
  489. package/dist/client/assets/at-sign-DM7xeppo.js +0 -1
  490. package/dist/client/assets/chat-api-BPVC0asu.js +0 -1
  491. package/dist/client/assets/chat-space-model-B6Jg2CY4.js +0 -4
  492. package/dist/client/assets/content-0AXa0klu.js +0 -1
  493. package/dist/client/assets/content-BEyJ19Lx.js +0 -1
  494. package/dist/client/assets/content-BN5weWKW.js +0 -1
  495. package/dist/client/assets/content-BNokkm7C.js +0 -1
  496. package/dist/client/assets/content-BV4PUM9q.js +0 -1
  497. package/dist/client/assets/content-BxUPlcx5.js +0 -1
  498. package/dist/client/assets/content-CIC5sku8.js +0 -1
  499. package/dist/client/assets/content-CdkTyxqk.js +0 -1
  500. package/dist/client/assets/content-CnhhSCZq.js +0 -1
  501. package/dist/client/assets/content-DY3F9Vfr.js +0 -1
  502. package/dist/client/assets/content-DrKBYpcb.js +0 -1
  503. package/dist/client/assets/content-LSStQYj5.js +0 -1
  504. package/dist/client/assets/content-YvU-D0hF.js +0 -1
  505. package/dist/client/assets/content-oKQMyVnH.js +0 -1
  506. package/dist/client/assets/conversation-model-m8HhzroS.js +0 -1
  507. package/dist/client/assets/conversation-motion-features-D9PxLoDt.js +0 -1
  508. package/dist/client/assets/conversations-Cbg9h_Af.js +0 -1
  509. package/dist/client/assets/ctx-panel-F05jXK4Q.css +0 -1
  510. package/dist/client/assets/discover-DlwbftpC.js +0 -2
  511. package/dist/client/assets/embed-entry-c0lwtjBG.js +0 -2
  512. package/dist/client/assets/home-moving-signal-BIHUGNfI.js +0 -1
  513. package/dist/client/assets/home-now-card-CaLgZze2.js +0 -1
  514. package/dist/client/assets/hooks-DaUOREpP.js +0 -2
  515. package/dist/client/assets/index-CGbs0SBm.css +0 -1
  516. package/dist/client/assets/index-CbqBwfIW.js +0 -1
  517. package/dist/client/assets/index-CyPMl7Up.js +0 -1
  518. package/dist/client/assets/index-PQpJveGO.js +0 -1
  519. package/dist/client/assets/left-0vBrvrBG.js +0 -2
  520. package/dist/client/assets/left-C6SyaqlJ.js +0 -1
  521. package/dist/client/assets/left-CTuXysZR.js +0 -2
  522. package/dist/client/assets/left-Cc6s4DT2.js +0 -1
  523. package/dist/client/assets/left-DF5caiyh.js +0 -1
  524. package/dist/client/assets/left-DgT4tWCx.js +0 -1
  525. package/dist/client/assets/left-R0wppTTr.js +0 -1
  526. package/dist/client/assets/left-advisor-C-kt8V28.js +0 -1
  527. package/dist/client/assets/left-agents-thnBO156.js +0 -1
  528. package/dist/client/assets/left-default-CT42fnpF.js +0 -1
  529. package/dist/client/assets/left-lanes-CSmZgciK.js +0 -1
  530. package/dist/client/assets/left-mission-C86x6i9h.js +0 -1
  531. package/dist/client/assets/library-DdhYL_9v.js +0 -1
  532. package/dist/client/assets/message-markup-6Tgo4qFJ.js +0 -15
  533. package/dist/client/assets/mission-control-model-C30vU1Fe.js +0 -1
  534. package/dist/client/assets/profile-BegEUmB7.js +0 -1
  535. package/dist/client/assets/projects-inbox-CKPLZN8s.css +0 -1
  536. package/dist/client/assets/resolve-panes-pfZTezKo.js +0 -1
  537. package/dist/client/assets/resolve-sidebar-context-D5ksvrb_.js +0 -1
  538. package/dist/client/assets/right-BDaCJ0CF.js +0 -1
  539. package/dist/client/assets/right-BP6lXRFS.js +0 -1
  540. package/dist/client/assets/right-Cb1VCrdj.js +0 -1
  541. package/dist/client/assets/right-CeFaxfBo.js +0 -1
  542. package/dist/client/assets/right-Ck2SrYCj.js +0 -1
  543. package/dist/client/assets/right-D-uv5YfF.js +0 -1
  544. package/dist/client/assets/right-DJMSICky.js +0 -1
  545. package/dist/client/assets/right-Dnljs8ah.js +0 -1
  546. package/dist/client/assets/right-SdCSF8PP.js +0 -1
  547. package/dist/client/assets/router-C-MF5-mb.js +0 -1
  548. package/dist/client/assets/runtime-picker-C_AVYF63.js +0 -1
  549. package/dist/client/assets/scout-voice-CqAyfblr.js +0 -1
  550. package/dist/client/assets/secondaryNavConfig-DzNHk6IH.js +0 -1
  551. package/dist/client/assets/system-surfaces-redesign-DKFg4GB5.css +0 -1
  552. package/dist/client/assets/useContentSecondaryNav-DrL_nkCZ.js +0 -1
  553. package/dist/client/assets/usePersistentState-Y8XwSTg-.js +0 -1
  554. package/dist/drizzle/meta/0000_snapshot.json +0 -4575
  555. package/dist/drizzle/meta/0001_snapshot.json +0 -4624
  556. package/dist/drizzle/meta/0002_snapshot.json +0 -4631
  557. package/dist/drizzle/meta/0003_snapshot.json +0 -4952
  558. package/dist/drizzle/meta/0004_snapshot.json +0 -5235
  559. package/dist/drizzle/meta/0005_snapshot.json +0 -5599
  560. package/dist/drizzle/meta/0006_snapshot.json +0 -5606
  561. package/dist/drizzle/meta/0007_snapshot.json +0 -5767
  562. package/dist/drizzle/meta/0008_snapshot.json +0 -5774
  563. package/dist/drizzle/meta/0009_snapshot.json +0 -6262
  564. package/dist/drizzle/meta/0010_snapshot.json +0 -6286
  565. package/dist/drizzle/meta/0011_snapshot.json +0 -6337
  566. package/dist/drizzle/meta/0012_snapshot.json +0 -6458
  567. package/dist/drizzle/meta/0013_snapshot.json +0 -6465
  568. package/dist/drizzle/meta/0014_snapshot.json +0 -6503
  569. package/dist/drizzle/meta/0015_snapshot.json +0 -6596
  570. package/dist/drizzle/meta/0016_snapshot.json +0 -6611
  571. package/dist/drizzle/meta/0017_snapshot.json +0 -6785
  572. package/dist/drizzle/meta/0018_snapshot.json +0 -6804
  573. package/dist/drizzle/meta/0019_snapshot.json +0 -6804
@@ -0,0 +1 @@
1
+ import{j as t}from"./index-EsrkGBcv.js";import{S as i}from"./SecondaryNav-D7dbV2qo.js";import{A as m}from"./secondaryNavConfig-CS1svh6n.js";import"./nav-destinations-uorRqFxf.js";import"./createLucideIcon-zZ8Hx7er.js";import"./message-square-BxesYglW.js";import"./terminal-hQKQygcf.js";import"./search-DT42oyRW.js";import"./compass-63TUaz5_.js";import"./settings-BVh7kldq.js";import"./file-text-CnISiiw6.js";import"./git-branch-B0_fPLO7.js";import"./code-xml-BhcNbLWU.js";import"./scroll-text-DNjxhyO2.js";function E({activeRoute:r,navigate:o}){return t.jsx(i,{ariaLabel:"Agents sections",activeRoute:r,groups:m,navigate:o})}export{E as AgentsSubnav};
@@ -1 +1 @@
1
- import{j as t}from"./index-DReVb7jZ.js";function r(){return t.jsxs("svg",{className:"s-thread-participant-suit",viewBox:"0 0 42 42","aria-hidden":"true",children:[t.jsx("path",{d:"M 21 30.5 C 31 30.5 40 34.5 41.5 42 L 0.5 42 C 2 34.5 11 30.5 21 30.5 Z",fill:"var(--fp-suit)"}),t.jsx("rect",{x:"15.5",y:"26.5",width:"11",height:"4",rx:"2",fill:"var(--fp-suit-light)"}),t.jsx("path",{d:"M 8.5 15 A 13 13 0 0 1 19 5.5",fill:"none",stroke:"var(--fp-visor)",strokeWidth:"2.4",strokeLinecap:"round"})]})}export{r as AstronautSuit};
1
+ import{j as t}from"./index-EsrkGBcv.js";function r(){return t.jsxs("svg",{className:"s-thread-participant-suit",viewBox:"0 0 42 42","aria-hidden":"true",children:[t.jsx("path",{d:"M 21 30.5 C 31 30.5 40 34.5 41.5 42 L 0.5 42 C 2 34.5 11 30.5 21 30.5 Z",fill:"var(--fp-suit)"}),t.jsx("rect",{x:"15.5",y:"26.5",width:"11",height:"4",rx:"2",fill:"var(--fp-suit-light)"}),t.jsx("path",{d:"M 8.5 15 A 13 13 0 0 1 19 5.5",fill:"none",stroke:"var(--fp-visor)",strokeWidth:"2.4",strokeLinecap:"round"})]})}export{r as AstronautSuit};
@@ -1 +1 @@
1
- import{r as d,j as e}from"./index-DReVb7jZ.js";/* empty css */import{D as ys}from"./DataTable-av71ehJV.js";import{H,h as F}from"./HarnessMark-DSvM_H7H.js";import{O as vs}from"./ObservedTopologyPanel-DF6tRZL_.js";import{a as es}from"./api-DSqpVKC7.js";import{o as ts,i as U}from"./surface-activity-B1rgWB1i.js";import{a as Ns,d as gs}from"./time-Dhsh_2EG.js";import{u as Is}from"./tail-events-C4WdhVeK.js";/* empty css */import"./index-BWHgHrtv.js";const ns=4e3,bs=500,Cs=5e3,Es=5e3,Ss=6e4,q={"scout-managed":"scout","hudson-managed":"hudson",unattributed:"native"},X={tool:"working",run:"active",idle:"idle"};function G(s){const n=s.split(/\s+/)[0]??"",l=n.lastIndexOf("/");return l>=0?n.slice(l+1):n}function ws(s,n=60){const l=s.split(/\s+/);if(l.length===0)return s;l[0]=G(l[0]);const c=l.join(" ");return c.length<=n?c:c.slice(0,n-1)+"…"}function Ms(s){for(const n of s){const l=G(n.command);if(l&&!(l==="sh"||l==="zsh"||l==="bash"||l==="login"))return l}return s[0]?.command?G(s[0].command):"—"}function As(s){const n=s.match(/^(?:(\d+)-)?(?:(\d+):)?(\d+):(\d+)$/);if(!n){const u=s.match(/^(\d+)$/);return u?Number.parseInt(u[1],10):0}const[,l,c,m,p]=n;let f=Number.parseInt(p,10)+Number.parseInt(m,10)*60;return c&&(f+=Number.parseInt(c,10)*3600),l&&(f+=Number.parseInt(l,10)*86400),f}function rs(s){if(s<60)return`${s}s`;if(s<3600)return`${Math.floor(s/60)}m${String(s%60).padStart(2,"0")}`;if(s<86400){const c=Math.floor(s/3600),m=Math.floor(s%3600/60);return`${c}h${String(m).padStart(2,"0")}`}const n=Math.floor(s/86400),l=Math.floor(s%86400/3600);return`${n}d${String(l).padStart(2,"0")}h`}function is(s,n){return Ns(s,n)||"—"}function $s(s){return gs(s)||"—"}function Q(s){return s?s.slice(0,8):"—"}function cs(s){return s?.trim().toLowerCase()||"unknown"}function Rs(s){return cs(s).replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"unknown"}function Z(s){return`s-atop-chip s-atop-chip--harness s-atop-chip--harness-${Rs(s)}`}const Ts=/permission-mode/i;function as(s){return s.kind!=="system"?!1:Ts.test(s.summary)}function J(s){return s.kind==="assistant"}function Ws(s,n,l){if(!s)return[];const c=new Map,m=new Map;for(const t of n){let r=c.get(t.pid);if(r||(r={firstEventAt:t.ts,lastEventAt:t.ts,lastKind:t.kind,lastSummary:t.summary,reqCount:0,toolCount:0,permCount:0,eventCount:0,sessionId:t.sessionId||null,model:null,tokIn:null,tokOut:null,cacheReadIn:null,cacheWriteIn:null},c.set(t.pid,r)),t.ts<r.firstEventAt&&(r.firstEventAt=t.ts),t.ts>=r.lastEventAt&&(r.lastEventAt=t.ts,r.lastKind=t.kind,r.lastSummary=t.summary),r.eventCount++,t.kind==="tool"&&r.toolCount++,J(t)&&r.reqCount++,as(t)&&r.permCount++,t.sessionId&&!r.sessionId&&(r.sessionId=t.sessionId),t.sessionId){let a=m.get(t.sessionId);a||(a={firstEventAt:t.ts,lastEventAt:t.ts,lastKind:t.kind,lastSummary:t.summary,reqCount:0,toolCount:0,permCount:0,eventCount:0,sessionId:t.sessionId,model:null,tokIn:null,tokOut:null,cacheReadIn:null,cacheWriteIn:null},m.set(t.sessionId,a)),t.ts<a.firstEventAt&&(a.firstEventAt=t.ts),t.ts>=a.lastEventAt&&(a.lastEventAt=t.ts,a.lastKind=t.kind,a.lastSummary=t.summary),a.eventCount++,t.kind==="tool"&&a.toolCount++,J(t)&&a.reqCount++,as(t)&&a.permCount++}}const p=new Map;for(const t of s.processes){if(!t.cwd)continue;const r=Y(t.source,t.cwd),a=p.get(r);(!a||t.pid<a.pid)&&p.set(r,t)}const f=new Map,u=new Map;for(const t of s.transcripts??[]){const r=Y(t.source,t.cwd),a=os(t),j=u.get(r)??Number.NEGATIVE_INFINITY,N=f.get(r)??"";(t.mtimeMs>j||t.mtimeMs===j&&a>N)&&(u.set(r,t.mtimeMs),f.set(r,a))}const h=new Set,I=(t,r,a,j)=>{r&&h.add(r.pid);let N="idle";const w=Math.max(a?.lastEventAt??0,j?.mtimeMs??0);a&&l-a.lastEventAt<Es&&(N=a.lastKind==="tool"?"tool":"run"),N==="idle"&&l-w<6e4&&(N="run");const L=r?As(r.etime):0,D=a?.firstEventAt??null,V=a&&a.firstEventAt<a.lastEventAt?Math.min(Math.max(0,Math.round((a.lastEventAt-a.firstEventAt)/1e3)),L||Number.POSITIVE_INFINITY):0,_=r?.pid??Os(t),R=j?.cwd??r?.cwd??"";return{key:t,pid:_,ppid:r?.ppid??0,sessionId:j?.sessionId??a?.sessionId??null,transcriptPath:j?.transcriptPath??null,harness:cs(j?.source??r?.source),attribution:r?.harness??j?.harness??"unattributed",project:j?.project?.trim()||(R?Ps(R):"(unknown)"),cwd:R,command:r?.command??`${j?.source??"unknown"} transcript`,parentLabel:r?Ms(r.parentChain??[]):"transcript",procRuntimeSec:L,procEtime:r?.etime??"0",sessionStartAt:D,sessionRuntimeSec:V,status:N,lastEventAt:w||null,lastEventKind:a?.lastKind??null,lastSummary:a?.lastSummary??null,reqCount:a?.reqCount??0,toolCount:a?.toolCount??0,permCount:a?.permCount??0,eventCount:a?.eventCount??0,model:a?.model??null,tokIn:a?.tokIn??null,tokOut:a?.tokOut??null,cacheReadIn:a?.cacheReadIn??null,cacheWriteIn:a?.cacheWriteIn??null}},k=(s.transcripts??[]).map(t=>{const r=os(t),a=Y(t.source,t.cwd),j=f.get(a)===r?p.get(a)??null:null,N=t.sessionId?m.get(t.sessionId):void 0;return I(r,j,N,t)}),y=s.processes.filter(t=>!h.has(t.pid)).map(t=>I(Ls(t),t,c.get(t.pid),null));return[...k,...y]}function $(s){if(s.cacheReadIn==null||s.tokIn==null)return null;const n=s.cacheReadIn+s.tokIn;return n===0?null:s.cacheReadIn/n}function S(s){return s==null?"—":s===0?"0":s>=1e6?(s/1e6).toFixed(s>=1e7?0:1)+"M":s>=1e3?(s/1e3).toFixed(s>=1e4?0:1)+"k":String(s)}function us(s){return s==null?"—":`${Math.round(s*100)}%`}function Ps(s){if(!s)return"";const n=s.lastIndexOf("/");return n>=0?s.slice(n+1):s}function os(s){return`session:${s.source}:${s.sessionId??s.transcriptPath}`}function Ls(s){return`process:${s.source}:${s.pid}`}function Os(s){let n=2166136261;for(let l=0;l<s.length;l+=1)n^=s.charCodeAt(l),n=Math.imul(n,16777619);return-((n>>>0)%9e5+1e3)}function Y(s,n){return`${s}\0${n??""}`}function Ks(s,n,l){const c=l-Ss;let m=0;for(const u of n)J(u)&&u.ts>=c&&m++;const p={total:s.length,running:0,tooling:0,idle:0,harnesses:[],reqsPerMin:m},f=new Map;for(const u of s)u.status==="tool"?(p.tooling++,p.running++):u.status==="run"?p.running++:p.idle++,f.set(u.harness,(f.get(u.harness)??0)+1);return p.harnesses=[...f.entries()].map(([u,h])=>({harness:u,count:h})).sort((u,h)=>h.count-u.count||u.harness.localeCompare(h.harness)),p}const P={tool:0,run:1,idle:2};function A(s){return s??-1}function qs(s,n,l,c){switch(l){case"status":return(P[s.status]-P[n.status])*c;case"agent":{const m=s.harness.localeCompare(n.harness);return m!==0?m*c:(s.sessionId??"").localeCompare(n.sessionId??"")*c}case"project":return s.project.localeCompare(n.project)*c;case"reqs":return(s.reqCount-n.reqCount)*c;case"tokIn":return(A(s.tokIn)-A(n.tokIn))*c;case"tokOut":return(A(s.tokOut)-A(n.tokOut))*c;case"cache":return(A($(s))-A($(n)))*c;case"tools":return(s.toolCount-n.toolCount)*c;case"perms":return(s.permCount-n.permCount)*c;case"last":{const m=s.lastEventAt??0,p=n.lastEventAt??0;return(m-p)*c}case"runtime":return(s.sessionRuntimeSec-n.sessionRuntimeSec)*c}}function ls({values:s,color:n}){if(s.length<2)return e.jsx("svg",{className:"s-atop-spark",width:88,height:18,viewBox:"0 0 88 18"});const m=Math.max(1,...s),p=88/(s.length-1),f=s.map((u,h)=>`${(h*p).toFixed(1)},${(18-u/m*18).toFixed(1)}`).join(" ");return e.jsx("svg",{className:"s-atop-spark",width:88,height:18,viewBox:"0 0 88 18",children:e.jsx("polyline",{fill:"none",stroke:n,strokeWidth:"1.25",points:f})})}function ne(){const[s,n]=d.useState([]),[l,c]=d.useState(null),[m,p]=d.useState(()=>Date.now()),[f,u]=d.useState(""),[h,I]=d.useState(()=>new Set),[k,y]=d.useState(()=>new Set),[t,r]=d.useState({key:"status",dir:1}),[a,j]=d.useState(null),N=d.useRef([]),w=d.useRef([]),[L,D]=d.useState([]),[V,_]=d.useState([]),R=d.useCallback(o=>{n(i=>i.length>=ns?[...i.slice(i.length-ns+1),o]:[...i,o])},[]);Is(R),d.useEffect(()=>{let o=!1,i=!1;const x=async()=>{if(!(i||!U()))try{const O=await es(`/api/tail/recent?limit=${bs}`);o||(i=!0,n(O.events??[]))}catch{}};x();const E=ts(()=>{x()});return()=>{o=!0,E()}},[]);const T=d.useCallback(async()=>{if(U())try{const o=await es("/api/tail/discover");c(o)}catch{}},[]);d.useEffect(()=>{T();const o=setInterval(()=>{T()},Cs),i=ts(()=>{T()});return()=>{clearInterval(o),i()}},[T]),d.useEffect(()=>{const o=setInterval(()=>{U()&&p(Date.now())},1e3);return()=>clearInterval(o)},[]);const v=d.useMemo(()=>Ws(l,s,m),[l,s,m]),M=d.useMemo(()=>Ks(v,s,m),[v,s,m]);d.useEffect(()=>{N.current=[...N.current,M.running].slice(-24),w.current=[...w.current,M.tooling].slice(-24),D(N.current),_(w.current)},[M.running,M.tooling]);const ds=d.useMemo(()=>{const o=new Set;return v.forEach(i=>o.add(i.harness)),[...o]},[v]),ms=d.useMemo(()=>{const o=new Set;return v.forEach(i=>o.add(i.status)),[...o]},[v]),z=d.useMemo(()=>{const o=f.trim().toLowerCase();return v.filter(i=>{if(h.size>0&&!h.has(i.harness)||k.size>0&&!k.has(i.status))return!1;if(!o)return!0;const x=q[i.attribution];return`${i.pid} ${i.project} ${i.command} ${i.harness} ${i.attribution} ${x} ${i.sessionId??""} ${i.transcriptPath??""} ${i.lastSummary??""}`.toLowerCase().includes(o)})},[v,f,h,k]),B=d.useMemo(()=>t.key==="status"?void 0:(o,i)=>P[o.status]-P[i.status],[t.key]),C=d.useMemo(()=>z.map((o,i)=>({row:o,index:i})).sort((o,i)=>{const x=qs(o.row,i.row,t.key,t.dir);if(x!==0)return x;const E=B?.(o.row,i.row)??0;return E!==0?E:o.index-i.index}).map(o=>o.row),[z,t,B]);d.useEffect(()=>{a!=null&&(v.some(o=>o.key===a)||j(null))},[v,a]),d.useEffect(()=>{const o=i=>{const x=i.target,E=x instanceof HTMLInputElement||x instanceof HTMLTextAreaElement||(x?.isContentEditable??!1);if(i.key==="Escape"&&a!=null){i.preventDefault(),j(null);return}if(E)return;const O=i.key==="j"||i.key==="ArrowDown",js=i.key==="k"||i.key==="ArrowUp";if(O||js){if(C.length===0)return;i.preventDefault();const K=C.findIndex(ks=>ks.key===a),ss=O?C[Math.min(C.length-1,K<0?0:K+1)]:C[Math.max(0,K<0?0:K-1)];ss&&j(ss.key);return}if(i.key==="Enter"&&a!=null){i.preventDefault();return}};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[C,a]);const ps=o=>{I(i=>{const x=new Set(i);return x.has(o)?x.delete(o):x.add(o),x})},hs=o=>{y(i=>{const x=new Set(i);return x.has(o)?x.delete(o):x.add(o),x})},g=d.useMemo(()=>a!=null?v.find(o=>o.key===a)??null:null,[v,a]),fs=d.useMemo(()=>g?l?.processes.find(o=>o.pid===g.pid)??null:null,[l,g]),xs=d.useMemo(()=>g?s.filter(o=>g.sessionId?o.sessionId===g.sessionId:o.pid===g.pid).slice(-40):[],[s,g]);return e.jsxs("div",{className:"s-atop",children:[e.jsx(Hs,{summary:M,runHistory:L,toolHistory:V}),e.jsx(vs,{title:"Harness families",size:"compact",maxAgents:6,maxTasks:3,showEmpty:!0}),e.jsx(Fs,{search:f,onSearch:u,harnessOptions:ds,harnessFilter:h,onToggleHarness:ps,statusOptions:ms,statusFilter:k,onToggleStatus:hs,summary:M}),e.jsx(ys,{rows:z,columns:Ds,rowId:o=>o.key,storageKey:"openscout.atop.cols",sort:t,onSortChange:r,secondarySort:B,onRowClick:o=>j(o.key),rowClassName:o=>a===o.key?"s-atop-row--selected":void 0,empty:{title:"no agents match",body:"adjust filters or start a session to populate"},density:"compact",className:"s-atop-data-table",ariaLabel:"Agent activity inventory"}),e.jsx(_s,{shown:C.length,total:v.length,hasSelection:a!=null}),g&&e.jsx(zs,{row:g,process:fs,events:xs,now:m,onClose:()=>j(null)})]})}function Hs({summary:s,runHistory:n,toolHistory:l}){return e.jsxs("div",{className:"s-atop-summary",children:[e.jsxs("div",{className:"s-atop-summary-cell s-atop-summary-cell--primary",children:[e.jsxs("div",{className:"s-atop-summary-num",children:[e.jsx("strong",{children:s.running}),e.jsxs("span",{className:"s-atop-summary-of",children:["/ ",s.total]})]}),e.jsx("span",{className:"s-atop-summary-lbl",children:"active"}),e.jsx(ls,{values:n,color:"var(--green)"})]}),e.jsxs("div",{className:"s-atop-summary-cell",children:[e.jsx("div",{className:"s-atop-summary-num",children:e.jsx("strong",{children:s.tooling})}),e.jsx("span",{className:"s-atop-summary-lbl",children:"working"}),e.jsx(ls,{values:l,color:"var(--accent)"})]}),e.jsxs("div",{className:"s-atop-summary-cell",children:[e.jsx("div",{className:"s-atop-summary-num",children:e.jsx("strong",{children:s.idle})}),e.jsx("span",{className:"s-atop-summary-lbl",children:"idle"})]}),e.jsxs("div",{className:"s-atop-summary-cell s-atop-summary-cell--breakdown",children:[e.jsx("span",{className:"s-atop-summary-lbl",children:"harness"}),e.jsx("div",{className:"s-atop-summary-row",children:s.harnesses.length>0?s.harnesses.slice(0,4).map(c=>e.jsxs("span",{className:Z(c.harness),children:[e.jsx(H,{harness:c.harness,size:11,title:null}),F(c.harness)," ",c.count]},c.harness)):e.jsx("span",{className:"s-atop-chip s-atop-chip--mute",children:"none"})})]}),e.jsx("div",{className:"s-atop-summary-spacer"}),e.jsxs("div",{className:"s-atop-summary-cell s-atop-summary-cell--rate",children:[e.jsxs("div",{className:"s-atop-summary-num",children:[e.jsx("strong",{children:s.reqsPerMin}),e.jsx("span",{className:"s-atop-summary-of",children:"/ min"})]}),e.jsx("span",{className:"s-atop-summary-lbl",children:"requests"})]})]})}function Fs({search:s,onSearch:n,harnessOptions:l,harnessFilter:c,onToggleHarness:m,statusOptions:p,statusFilter:f,onToggleStatus:u,summary:h}){const I=t=>h.harnesses.find(r=>r.harness===t)?.count??0,k=t=>t==="tool"?h.tooling:t==="run"?h.running-h.tooling:h.idle,y=d.useRef(null);return d.useEffect(()=>{const t=r=>{if(r.key!=="/")return;const a=r.target;a instanceof HTMLInputElement||a instanceof HTMLTextAreaElement||(a?.isContentEditable??!1)||(r.preventDefault(),y.current?.focus())};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[]),e.jsxs("div",{className:"s-atop-fbar",children:[e.jsxs("div",{className:"s-atop-search",children:[e.jsx("span",{className:"s-atop-search-prompt",children:"▸"}),e.jsx("input",{ref:y,className:"s-atop-search-input",value:s,onChange:t=>n(t.target.value),placeholder:"filter by pid · project · command · summary",spellCheck:!1}),e.jsx("span",{className:"s-atop-search-kbd",children:"/"})]}),l.length>1&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"s-atop-fbar-label",children:"harness"}),l.map(t=>{const r=c.has(t);return e.jsxs("button",{className:`s-atop-pill s-atop-pill--harness${r?" s-atop-pill--on":""}`,onClick:()=>m(t),children:[e.jsx(H,{harness:t,size:11,title:null}),F(t),e.jsx("span",{className:"s-atop-pill-ct",children:I(t)})]},t)})]}),p.length>1&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"s-atop-fbar-label",children:"status"}),["tool","run","idle"].filter(t=>p.includes(t)).map(t=>{const r=f.has(t);return e.jsxs("button",{className:`s-atop-pill s-atop-pill--status-${t}${r?" s-atop-pill--on":""}`,onClick:()=>u(t),children:[X[t],e.jsx("span",{className:"s-atop-pill-ct",children:k(t)})]},t)})]}),e.jsx("div",{className:"s-atop-fbar-spacer"})]})}const Ds=[{key:"status",label:"Status",cls:"s-atop-col-status",kind:"text",defaultWidth:96,minWidth:70,sortValue:s=>P[s.status],render:s=>e.jsxs("span",{className:`s-atop-status s-atop-status--${s.status}`,children:[e.jsx("span",{className:"s-atop-status-dot"}),X[s.status]]})},{key:"agent",label:"Agent",cls:"s-atop-col-agent",kind:"text",tip:"Harness · short session id",defaultWidth:168,minWidth:110,sortValue:s=>`${s.harness}\0${s.sessionId??""}`,render:s=>e.jsxs("div",{className:"s-atop-agent-cell",children:[e.jsxs("span",{className:Z(s.harness),title:`origin: ${q[s.attribution]}`,children:[e.jsx(H,{harness:s.harness,size:11,title:null}),F(s.harness)]}),e.jsx("span",{className:"s-atop-agent-id",title:s.sessionId??`pid ${s.pid}`,children:Q(s.sessionId)})]})},{key:"project",label:"Project",cls:"s-atop-col-project",kind:"text",defaultWidth:200,minWidth:96,maxWidth:480,sortValue:s=>s.project,render:s=>e.jsx("span",{title:s.cwd,children:s.project})},{key:"reqs",label:"Reqs",cls:"s-atop-col-num",kind:"number",tip:"Model invocations (assistant turns) for this session",defaultWidth:64,minWidth:56,sortValue:s=>s.reqCount,render:s=>e.jsx(W,{value:s.reqCount||null})},{key:"tokIn",label:"Tok ↓",cls:"s-atop-col-num",kind:"number",tip:"Input tokens — populated when backend emits usage",defaultWidth:64,minWidth:56,sortValue:s=>s.tokIn,render:s=>e.jsx(W,{value:s.tokIn})},{key:"tokOut",label:"Tok ↑",cls:"s-atop-col-num",kind:"number",tip:"Output tokens — populated when backend emits usage",defaultWidth:64,minWidth:56,sortValue:s=>s.tokOut,render:s=>e.jsx(W,{value:s.tokOut})},{key:"cache",label:"Cache",cls:"s-atop-col-num",kind:"number",tip:"Cache hit rate — populated when backend emits usage",defaultWidth:64,minWidth:56,sortValue:s=>$(s),render:s=>e.jsx(Vs,{value:$(s)})},{key:"tools",label:"Tools",cls:"s-atop-col-num",kind:"number",defaultWidth:64,minWidth:56,sortValue:s=>s.toolCount,render:s=>e.jsx(W,{value:s.toolCount||null})},{key:"perms",label:"Perms",cls:"s-atop-col-num",kind:"number",tip:"Permission requests — heuristic count of permission-mode events",defaultWidth:64,minWidth:56,sortValue:s=>s.permCount,render:s=>e.jsx(W,{value:s.permCount||null,accent:s.permCount>0?"amber":void 0})},{key:"last",label:"Last",cls:"s-atop-col-last",kind:"time",defaultWidth:86,minWidth:64,sortValue:s=>s.lastEventAt,render:s=>is(s.lastEventAt,Date.now())},{key:"runtime",label:"Runtime",cls:"s-atop-col-runtime",kind:"number",tip:"Session duration (active period in current buffer)",defaultWidth:80,minWidth:64,sortValue:s=>s.sessionRuntimeSec,render:s=>rs(s.sessionRuntimeSec)}];function W({value:s,accent:n}){const l=s==null?"s-atop-col-num s-atop-col-num--dim":`s-atop-col-num${n?` s-atop-col-num--${n}`:""}`;return e.jsx("span",{className:l,children:S(s)})}function Vs({value:s}){const n=s==null?"s-atop-col-num s-atop-col-num--dim":"s-atop-col-num";return e.jsx("span",{className:n,children:us(s)})}function _s({shown:s,total:n,hasSelection:l}){return e.jsxs("div",{className:"s-atop-keys",children:[e.jsxs("span",{className:"s-atop-keys-count",children:[e.jsx("strong",{children:s})," / ",n," agents"]}),e.jsx("span",{className:"s-atop-keys-spacer"}),e.jsxs("span",{children:[e.jsx("kbd",{children:"/"})," filter"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"j"}),"/",e.jsx("kbd",{children:"k"})," select"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"click"})," drill in"]}),l&&e.jsxs("span",{children:[e.jsx("kbd",{children:"esc"})," close"]})]})}function zs({row:s,process:n,events:l,now:c,onClose:m}){const p=d.useMemo(()=>{const u={};for(const k of l){if(k.kind!=="tool")continue;const y=k.summary.match(/^([a-z_][a-z0-9_]*)/i),t=y?y[1]:"(tool)";u[t]=(u[t]??0)+1}const h=Object.entries(u).sort((k,y)=>y[1]-k[1]).slice(0,6),I=Math.max(1,...h.map(k=>k[1]));return h.map(([k,y])=>({name:k,count:y,frac:y/I}))},[l]),f=l.slice(-40).reverse();return e.jsxs("aside",{className:"s-atop-drawer","aria-label":`Agent ${s.key}`,children:[e.jsxs("header",{className:"s-atop-drawer-head",children:[e.jsxs("div",{className:"s-atop-drawer-head-meta",children:[e.jsxs("span",{className:`s-atop-status s-atop-status--${s.status}`,children:[e.jsx("span",{className:"s-atop-status-dot"}),X[s.status]]}),e.jsx("span",{className:"s-atop-drawer-pid",children:s.pid>0?`pid ${s.pid}`:"transcript"}),e.jsxs("span",{className:Z(s.harness),title:`origin: ${q[s.attribution]}`,children:[e.jsx(H,{harness:s.harness,size:11,title:null}),F(s.harness)]}),e.jsxs("span",{className:"s-atop-drawer-session",children:["session ",Q(s.sessionId)]})]}),e.jsx("h2",{className:"s-atop-drawer-title",children:s.project}),e.jsxs("p",{className:"s-atop-drawer-sub",children:["session ",Q(s.sessionId)," · runtime ",rs(s.sessionRuntimeSec)," · last activity ",is(s.lastEventAt,c)]}),e.jsx("button",{className:"s-atop-drawer-close",onClick:m,"aria-label":"Close (Esc)",children:"✕"})]}),e.jsxs("div",{className:"s-atop-drawer-body",children:[e.jsxs("section",{children:[e.jsx("h3",{className:"s-atop-drawer-h3",children:"Activity"}),e.jsxs("div",{className:"s-atop-metrics",children:[e.jsx(b,{label:"Requests",value:S(s.reqCount||null)}),e.jsx(b,{label:"Tools",value:S(s.toolCount||null)}),e.jsx(b,{label:"Permissions",value:S(s.permCount||null),accent:s.permCount>0?"amber":void 0}),e.jsx(b,{label:"Tok in",value:S(s.tokIn),dim:s.tokIn==null}),e.jsx(b,{label:"Tok out",value:S(s.tokOut),dim:s.tokOut==null}),e.jsx(b,{label:"Cache hit",value:us($(s)),dim:$(s)==null}),e.jsx(b,{label:"Model",value:s.model??"—",dim:s.model==null}),e.jsx(b,{label:"Events",value:S(s.eventCount||null)})]})]}),p.length>0&&e.jsxs("section",{children:[e.jsx("h3",{className:"s-atop-drawer-h3",children:"Tool calls"}),e.jsx("ul",{className:"s-atop-histo",children:p.map(u=>e.jsxs("li",{children:[e.jsx("span",{className:"s-atop-histo-name",children:u.name}),e.jsx("span",{className:"s-atop-histo-bar",children:e.jsx("span",{className:"s-atop-histo-fill",style:{width:`${(u.frac*100).toFixed(1)}%`}})}),e.jsx("span",{className:"s-atop-histo-count",children:u.count})]},u.name))})]}),e.jsxs("section",{children:[e.jsxs("h3",{className:"s-atop-drawer-h3",children:["Recent activity",e.jsxs("span",{className:"s-atop-drawer-h3-aside",children:[l.length," buffered"]})]}),f.length===0?e.jsx("div",{className:"s-atop-peek-empty",children:"no events buffered for this agent yet"}):e.jsx("ol",{className:"s-atop-peek",children:f.map(u=>e.jsxs("li",{className:`s-atop-peek-row s-atop-peek-row--${u.kind}`,children:[e.jsx("span",{className:"s-atop-peek-time",children:$s(u.ts)}),e.jsx("span",{className:"s-atop-peek-kind",children:u.kind}),e.jsx("span",{className:"s-atop-peek-text",children:u.summary})]},u.id))})]}),e.jsxs("section",{className:"s-atop-drawer-section--secondary",children:[e.jsx("h3",{className:"s-atop-drawer-h3",children:"Process"}),e.jsx("code",{className:"s-atop-codeblock",children:s.command}),e.jsxs("dl",{className:"s-atop-kvs",children:[e.jsx("dt",{children:"PID"}),e.jsx("dd",{children:s.pid>0?s.pid:"transcript-only"}),e.jsx("dt",{children:"Parent"}),e.jsxs("dd",{children:[s.parentLabel," (ppid ",s.ppid,")"]}),e.jsx("dt",{children:"Process etime"}),e.jsx("dd",{children:s.procEtime}),s.transcriptPath&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Transcript"}),e.jsx("dd",{children:s.transcriptPath})]}),e.jsx("dt",{children:"Origin"}),e.jsx("dd",{children:q[s.attribution]}),e.jsx("dt",{children:"CWD"}),e.jsx("dd",{children:s.cwd||"(none)"})]}),n?.parentChain&&n.parentChain.length>0&&e.jsx("ol",{className:"s-atop-chain",children:n.parentChain.map(u=>e.jsxs("li",{children:[e.jsx("span",{className:"s-atop-chain-pid",children:u.pid}),e.jsx("span",{className:"s-atop-chain-cmd",children:ws(u.command,80)})]},u.pid))})]})]})]})}function b({label:s,value:n,dim:l,accent:c}){const m=`s-atop-metric${l?" s-atop-metric--dim":""}${c?` s-atop-metric--${c}`:""}`;return e.jsxs("div",{className:m,children:[e.jsx("span",{className:"s-atop-metric-lbl",children:s}),e.jsx("span",{className:"s-atop-metric-val",children:n})]})}export{ne as AtopView};
1
+ import{r as d,j as e}from"./index-EsrkGBcv.js";/* empty css */import{D as ys}from"./DataTable-aH-jCyDq.js";import{H,h as F}from"./HarnessMark-C4naWc16.js";import{O as vs}from"./ObservedTopologyPanel-CUTIoLZJ.js";import{a as es}from"./api-DSqpVKC7.js";import{o as ts,i as U}from"./surface-activity-B1rgWB1i.js";import{a as Ns,d as gs}from"./time-Dhsh_2EG.js";import{u as Is}from"./tail-events-d0yAYxR0.js";/* empty css */import"./index-BWHgHrtv.js";const ns=4e3,bs=500,Cs=5e3,Es=5e3,Ss=6e4,q={"scout-managed":"scout","hudson-managed":"hudson",unattributed:"native"},X={tool:"working",run:"active",idle:"idle"};function G(s){const n=s.split(/\s+/)[0]??"",l=n.lastIndexOf("/");return l>=0?n.slice(l+1):n}function ws(s,n=60){const l=s.split(/\s+/);if(l.length===0)return s;l[0]=G(l[0]);const c=l.join(" ");return c.length<=n?c:c.slice(0,n-1)+"…"}function Ms(s){for(const n of s){const l=G(n.command);if(l&&!(l==="sh"||l==="zsh"||l==="bash"||l==="login"))return l}return s[0]?.command?G(s[0].command):"—"}function As(s){const n=s.match(/^(?:(\d+)-)?(?:(\d+):)?(\d+):(\d+)$/);if(!n){const u=s.match(/^(\d+)$/);return u?Number.parseInt(u[1],10):0}const[,l,c,m,p]=n;let f=Number.parseInt(p,10)+Number.parseInt(m,10)*60;return c&&(f+=Number.parseInt(c,10)*3600),l&&(f+=Number.parseInt(l,10)*86400),f}function rs(s){if(s<60)return`${s}s`;if(s<3600)return`${Math.floor(s/60)}m${String(s%60).padStart(2,"0")}`;if(s<86400){const c=Math.floor(s/3600),m=Math.floor(s%3600/60);return`${c}h${String(m).padStart(2,"0")}`}const n=Math.floor(s/86400),l=Math.floor(s%86400/3600);return`${n}d${String(l).padStart(2,"0")}h`}function is(s,n){return Ns(s,n)||"—"}function $s(s){return gs(s)||"—"}function Q(s){return s?s.slice(0,8):"—"}function cs(s){return s?.trim().toLowerCase()||"unknown"}function Rs(s){return cs(s).replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"unknown"}function Z(s){return`s-atop-chip s-atop-chip--harness s-atop-chip--harness-${Rs(s)}`}const Ts=/permission-mode/i;function as(s){return s.kind!=="system"?!1:Ts.test(s.summary)}function J(s){return s.kind==="assistant"}function Ws(s,n,l){if(!s)return[];const c=new Map,m=new Map;for(const t of n){let r=c.get(t.pid);if(r||(r={firstEventAt:t.ts,lastEventAt:t.ts,lastKind:t.kind,lastSummary:t.summary,reqCount:0,toolCount:0,permCount:0,eventCount:0,sessionId:t.sessionId||null,model:null,tokIn:null,tokOut:null,cacheReadIn:null,cacheWriteIn:null},c.set(t.pid,r)),t.ts<r.firstEventAt&&(r.firstEventAt=t.ts),t.ts>=r.lastEventAt&&(r.lastEventAt=t.ts,r.lastKind=t.kind,r.lastSummary=t.summary),r.eventCount++,t.kind==="tool"&&r.toolCount++,J(t)&&r.reqCount++,as(t)&&r.permCount++,t.sessionId&&!r.sessionId&&(r.sessionId=t.sessionId),t.sessionId){let a=m.get(t.sessionId);a||(a={firstEventAt:t.ts,lastEventAt:t.ts,lastKind:t.kind,lastSummary:t.summary,reqCount:0,toolCount:0,permCount:0,eventCount:0,sessionId:t.sessionId,model:null,tokIn:null,tokOut:null,cacheReadIn:null,cacheWriteIn:null},m.set(t.sessionId,a)),t.ts<a.firstEventAt&&(a.firstEventAt=t.ts),t.ts>=a.lastEventAt&&(a.lastEventAt=t.ts,a.lastKind=t.kind,a.lastSummary=t.summary),a.eventCount++,t.kind==="tool"&&a.toolCount++,J(t)&&a.reqCount++,as(t)&&a.permCount++}}const p=new Map;for(const t of s.processes){if(!t.cwd)continue;const r=Y(t.source,t.cwd),a=p.get(r);(!a||t.pid<a.pid)&&p.set(r,t)}const f=new Map,u=new Map;for(const t of s.transcripts??[]){const r=Y(t.source,t.cwd),a=os(t),j=u.get(r)??Number.NEGATIVE_INFINITY,N=f.get(r)??"";(t.mtimeMs>j||t.mtimeMs===j&&a>N)&&(u.set(r,t.mtimeMs),f.set(r,a))}const h=new Set,I=(t,r,a,j)=>{r&&h.add(r.pid);let N="idle";const w=Math.max(a?.lastEventAt??0,j?.mtimeMs??0);a&&l-a.lastEventAt<Es&&(N=a.lastKind==="tool"?"tool":"run"),N==="idle"&&l-w<6e4&&(N="run");const L=r?As(r.etime):0,D=a?.firstEventAt??null,V=a&&a.firstEventAt<a.lastEventAt?Math.min(Math.max(0,Math.round((a.lastEventAt-a.firstEventAt)/1e3)),L||Number.POSITIVE_INFINITY):0,_=r?.pid??Os(t),R=j?.cwd??r?.cwd??"";return{key:t,pid:_,ppid:r?.ppid??0,sessionId:j?.sessionId??a?.sessionId??null,transcriptPath:j?.transcriptPath??null,harness:cs(j?.source??r?.source),attribution:r?.harness??j?.harness??"unattributed",project:j?.project?.trim()||(R?Ps(R):"(unknown)"),cwd:R,command:r?.command??`${j?.source??"unknown"} transcript`,parentLabel:r?Ms(r.parentChain??[]):"transcript",procRuntimeSec:L,procEtime:r?.etime??"0",sessionStartAt:D,sessionRuntimeSec:V,status:N,lastEventAt:w||null,lastEventKind:a?.lastKind??null,lastSummary:a?.lastSummary??null,reqCount:a?.reqCount??0,toolCount:a?.toolCount??0,permCount:a?.permCount??0,eventCount:a?.eventCount??0,model:a?.model??null,tokIn:a?.tokIn??null,tokOut:a?.tokOut??null,cacheReadIn:a?.cacheReadIn??null,cacheWriteIn:a?.cacheWriteIn??null}},k=(s.transcripts??[]).map(t=>{const r=os(t),a=Y(t.source,t.cwd),j=f.get(a)===r?p.get(a)??null:null,N=t.sessionId?m.get(t.sessionId):void 0;return I(r,j,N,t)}),y=s.processes.filter(t=>!h.has(t.pid)).map(t=>I(Ls(t),t,c.get(t.pid),null));return[...k,...y]}function $(s){if(s.cacheReadIn==null||s.tokIn==null)return null;const n=s.cacheReadIn+s.tokIn;return n===0?null:s.cacheReadIn/n}function S(s){return s==null?"—":s===0?"0":s>=1e6?(s/1e6).toFixed(s>=1e7?0:1)+"M":s>=1e3?(s/1e3).toFixed(s>=1e4?0:1)+"k":String(s)}function us(s){return s==null?"—":`${Math.round(s*100)}%`}function Ps(s){if(!s)return"";const n=s.lastIndexOf("/");return n>=0?s.slice(n+1):s}function os(s){return`session:${s.source}:${s.sessionId??s.transcriptPath}`}function Ls(s){return`process:${s.source}:${s.pid}`}function Os(s){let n=2166136261;for(let l=0;l<s.length;l+=1)n^=s.charCodeAt(l),n=Math.imul(n,16777619);return-((n>>>0)%9e5+1e3)}function Y(s,n){return`${s}\0${n??""}`}function Ks(s,n,l){const c=l-Ss;let m=0;for(const u of n)J(u)&&u.ts>=c&&m++;const p={total:s.length,running:0,tooling:0,idle:0,harnesses:[],reqsPerMin:m},f=new Map;for(const u of s)u.status==="tool"?(p.tooling++,p.running++):u.status==="run"?p.running++:p.idle++,f.set(u.harness,(f.get(u.harness)??0)+1);return p.harnesses=[...f.entries()].map(([u,h])=>({harness:u,count:h})).sort((u,h)=>h.count-u.count||u.harness.localeCompare(h.harness)),p}const P={tool:0,run:1,idle:2};function A(s){return s??-1}function qs(s,n,l,c){switch(l){case"status":return(P[s.status]-P[n.status])*c;case"agent":{const m=s.harness.localeCompare(n.harness);return m!==0?m*c:(s.sessionId??"").localeCompare(n.sessionId??"")*c}case"project":return s.project.localeCompare(n.project)*c;case"reqs":return(s.reqCount-n.reqCount)*c;case"tokIn":return(A(s.tokIn)-A(n.tokIn))*c;case"tokOut":return(A(s.tokOut)-A(n.tokOut))*c;case"cache":return(A($(s))-A($(n)))*c;case"tools":return(s.toolCount-n.toolCount)*c;case"perms":return(s.permCount-n.permCount)*c;case"last":{const m=s.lastEventAt??0,p=n.lastEventAt??0;return(m-p)*c}case"runtime":return(s.sessionRuntimeSec-n.sessionRuntimeSec)*c}}function ls({values:s,color:n}){if(s.length<2)return e.jsx("svg",{className:"s-atop-spark",width:88,height:18,viewBox:"0 0 88 18"});const m=Math.max(1,...s),p=88/(s.length-1),f=s.map((u,h)=>`${(h*p).toFixed(1)},${(18-u/m*18).toFixed(1)}`).join(" ");return e.jsx("svg",{className:"s-atop-spark",width:88,height:18,viewBox:"0 0 88 18",children:e.jsx("polyline",{fill:"none",stroke:n,strokeWidth:"1.25",points:f})})}function ne(){const[s,n]=d.useState([]),[l,c]=d.useState(null),[m,p]=d.useState(()=>Date.now()),[f,u]=d.useState(""),[h,I]=d.useState(()=>new Set),[k,y]=d.useState(()=>new Set),[t,r]=d.useState({key:"status",dir:1}),[a,j]=d.useState(null),N=d.useRef([]),w=d.useRef([]),[L,D]=d.useState([]),[V,_]=d.useState([]),R=d.useCallback(o=>{n(i=>i.length>=ns?[...i.slice(i.length-ns+1),o]:[...i,o])},[]);Is(R),d.useEffect(()=>{let o=!1,i=!1;const x=async()=>{if(!(i||!U()))try{const O=await es(`/api/tail/recent?limit=${bs}`);o||(i=!0,n(O.events??[]))}catch{}};x();const E=ts(()=>{x()});return()=>{o=!0,E()}},[]);const T=d.useCallback(async()=>{if(U())try{const o=await es("/api/tail/discover");c(o)}catch{}},[]);d.useEffect(()=>{T();const o=setInterval(()=>{T()},Cs),i=ts(()=>{T()});return()=>{clearInterval(o),i()}},[T]),d.useEffect(()=>{const o=setInterval(()=>{U()&&p(Date.now())},1e3);return()=>clearInterval(o)},[]);const v=d.useMemo(()=>Ws(l,s,m),[l,s,m]),M=d.useMemo(()=>Ks(v,s,m),[v,s,m]);d.useEffect(()=>{N.current=[...N.current,M.running].slice(-24),w.current=[...w.current,M.tooling].slice(-24),D(N.current),_(w.current)},[M.running,M.tooling]);const ds=d.useMemo(()=>{const o=new Set;return v.forEach(i=>o.add(i.harness)),[...o]},[v]),ms=d.useMemo(()=>{const o=new Set;return v.forEach(i=>o.add(i.status)),[...o]},[v]),z=d.useMemo(()=>{const o=f.trim().toLowerCase();return v.filter(i=>{if(h.size>0&&!h.has(i.harness)||k.size>0&&!k.has(i.status))return!1;if(!o)return!0;const x=q[i.attribution];return`${i.pid} ${i.project} ${i.command} ${i.harness} ${i.attribution} ${x} ${i.sessionId??""} ${i.transcriptPath??""} ${i.lastSummary??""}`.toLowerCase().includes(o)})},[v,f,h,k]),B=d.useMemo(()=>t.key==="status"?void 0:(o,i)=>P[o.status]-P[i.status],[t.key]),C=d.useMemo(()=>z.map((o,i)=>({row:o,index:i})).sort((o,i)=>{const x=qs(o.row,i.row,t.key,t.dir);if(x!==0)return x;const E=B?.(o.row,i.row)??0;return E!==0?E:o.index-i.index}).map(o=>o.row),[z,t,B]);d.useEffect(()=>{a!=null&&(v.some(o=>o.key===a)||j(null))},[v,a]),d.useEffect(()=>{const o=i=>{const x=i.target,E=x instanceof HTMLInputElement||x instanceof HTMLTextAreaElement||(x?.isContentEditable??!1);if(i.key==="Escape"&&a!=null){i.preventDefault(),j(null);return}if(E)return;const O=i.key==="j"||i.key==="ArrowDown",js=i.key==="k"||i.key==="ArrowUp";if(O||js){if(C.length===0)return;i.preventDefault();const K=C.findIndex(ks=>ks.key===a),ss=O?C[Math.min(C.length-1,K<0?0:K+1)]:C[Math.max(0,K<0?0:K-1)];ss&&j(ss.key);return}if(i.key==="Enter"&&a!=null){i.preventDefault();return}};return window.addEventListener("keydown",o),()=>window.removeEventListener("keydown",o)},[C,a]);const ps=o=>{I(i=>{const x=new Set(i);return x.has(o)?x.delete(o):x.add(o),x})},hs=o=>{y(i=>{const x=new Set(i);return x.has(o)?x.delete(o):x.add(o),x})},g=d.useMemo(()=>a!=null?v.find(o=>o.key===a)??null:null,[v,a]),fs=d.useMemo(()=>g?l?.processes.find(o=>o.pid===g.pid)??null:null,[l,g]),xs=d.useMemo(()=>g?s.filter(o=>g.sessionId?o.sessionId===g.sessionId:o.pid===g.pid).slice(-40):[],[s,g]);return e.jsxs("div",{className:"s-atop",children:[e.jsx(Hs,{summary:M,runHistory:L,toolHistory:V}),e.jsx(vs,{title:"Harness families",size:"compact",maxAgents:6,maxTasks:3,showEmpty:!0}),e.jsx(Fs,{search:f,onSearch:u,harnessOptions:ds,harnessFilter:h,onToggleHarness:ps,statusOptions:ms,statusFilter:k,onToggleStatus:hs,summary:M}),e.jsx(ys,{rows:z,columns:Ds,rowId:o=>o.key,storageKey:"openscout.atop.cols",sort:t,onSortChange:r,secondarySort:B,onRowClick:o=>j(o.key),rowClassName:o=>a===o.key?"s-atop-row--selected":void 0,empty:{title:"no agents match",body:"adjust filters or start a session to populate"},density:"compact",className:"s-atop-data-table",ariaLabel:"Agent activity inventory"}),e.jsx(_s,{shown:C.length,total:v.length,hasSelection:a!=null}),g&&e.jsx(zs,{row:g,process:fs,events:xs,now:m,onClose:()=>j(null)})]})}function Hs({summary:s,runHistory:n,toolHistory:l}){return e.jsxs("div",{className:"s-atop-summary",children:[e.jsxs("div",{className:"s-atop-summary-cell s-atop-summary-cell--primary",children:[e.jsxs("div",{className:"s-atop-summary-num",children:[e.jsx("strong",{children:s.running}),e.jsxs("span",{className:"s-atop-summary-of",children:["/ ",s.total]})]}),e.jsx("span",{className:"s-atop-summary-lbl",children:"active"}),e.jsx(ls,{values:n,color:"var(--green)"})]}),e.jsxs("div",{className:"s-atop-summary-cell",children:[e.jsx("div",{className:"s-atop-summary-num",children:e.jsx("strong",{children:s.tooling})}),e.jsx("span",{className:"s-atop-summary-lbl",children:"working"}),e.jsx(ls,{values:l,color:"var(--accent)"})]}),e.jsxs("div",{className:"s-atop-summary-cell",children:[e.jsx("div",{className:"s-atop-summary-num",children:e.jsx("strong",{children:s.idle})}),e.jsx("span",{className:"s-atop-summary-lbl",children:"idle"})]}),e.jsxs("div",{className:"s-atop-summary-cell s-atop-summary-cell--breakdown",children:[e.jsx("span",{className:"s-atop-summary-lbl",children:"harness"}),e.jsx("div",{className:"s-atop-summary-row",children:s.harnesses.length>0?s.harnesses.slice(0,4).map(c=>e.jsxs("span",{className:Z(c.harness),children:[e.jsx(H,{harness:c.harness,size:11,title:null}),F(c.harness)," ",c.count]},c.harness)):e.jsx("span",{className:"s-atop-chip s-atop-chip--mute",children:"none"})})]}),e.jsx("div",{className:"s-atop-summary-spacer"}),e.jsxs("div",{className:"s-atop-summary-cell s-atop-summary-cell--rate",children:[e.jsxs("div",{className:"s-atop-summary-num",children:[e.jsx("strong",{children:s.reqsPerMin}),e.jsx("span",{className:"s-atop-summary-of",children:"/ min"})]}),e.jsx("span",{className:"s-atop-summary-lbl",children:"requests"})]})]})}function Fs({search:s,onSearch:n,harnessOptions:l,harnessFilter:c,onToggleHarness:m,statusOptions:p,statusFilter:f,onToggleStatus:u,summary:h}){const I=t=>h.harnesses.find(r=>r.harness===t)?.count??0,k=t=>t==="tool"?h.tooling:t==="run"?h.running-h.tooling:h.idle,y=d.useRef(null);return d.useEffect(()=>{const t=r=>{if(r.key!=="/")return;const a=r.target;a instanceof HTMLInputElement||a instanceof HTMLTextAreaElement||(a?.isContentEditable??!1)||(r.preventDefault(),y.current?.focus())};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[]),e.jsxs("div",{className:"s-atop-fbar",children:[e.jsxs("div",{className:"s-atop-search",children:[e.jsx("span",{className:"s-atop-search-prompt",children:"▸"}),e.jsx("input",{ref:y,className:"s-atop-search-input",value:s,onChange:t=>n(t.target.value),placeholder:"filter by pid · project · command · summary",spellCheck:!1}),e.jsx("span",{className:"s-atop-search-kbd",children:"/"})]}),l.length>1&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"s-atop-fbar-label",children:"harness"}),l.map(t=>{const r=c.has(t);return e.jsxs("button",{className:`s-atop-pill s-atop-pill--harness${r?" s-atop-pill--on":""}`,onClick:()=>m(t),children:[e.jsx(H,{harness:t,size:11,title:null}),F(t),e.jsx("span",{className:"s-atop-pill-ct",children:I(t)})]},t)})]}),p.length>1&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"s-atop-fbar-label",children:"status"}),["tool","run","idle"].filter(t=>p.includes(t)).map(t=>{const r=f.has(t);return e.jsxs("button",{className:`s-atop-pill s-atop-pill--status-${t}${r?" s-atop-pill--on":""}`,onClick:()=>u(t),children:[X[t],e.jsx("span",{className:"s-atop-pill-ct",children:k(t)})]},t)})]}),e.jsx("div",{className:"s-atop-fbar-spacer"})]})}const Ds=[{key:"status",label:"Status",cls:"s-atop-col-status",kind:"text",defaultWidth:96,minWidth:70,sortValue:s=>P[s.status],render:s=>e.jsxs("span",{className:`s-atop-status s-atop-status--${s.status}`,children:[e.jsx("span",{className:"s-atop-status-dot"}),X[s.status]]})},{key:"agent",label:"Agent",cls:"s-atop-col-agent",kind:"text",tip:"Harness · short session id",defaultWidth:168,minWidth:110,sortValue:s=>`${s.harness}\0${s.sessionId??""}`,render:s=>e.jsxs("div",{className:"s-atop-agent-cell",children:[e.jsxs("span",{className:Z(s.harness),title:`origin: ${q[s.attribution]}`,children:[e.jsx(H,{harness:s.harness,size:11,title:null}),F(s.harness)]}),e.jsx("span",{className:"s-atop-agent-id",title:s.sessionId??`pid ${s.pid}`,children:Q(s.sessionId)})]})},{key:"project",label:"Project",cls:"s-atop-col-project",kind:"text",defaultWidth:200,minWidth:96,maxWidth:480,sortValue:s=>s.project,render:s=>e.jsx("span",{title:s.cwd,children:s.project})},{key:"reqs",label:"Reqs",cls:"s-atop-col-num",kind:"number",tip:"Model invocations (assistant turns) for this session",defaultWidth:64,minWidth:56,sortValue:s=>s.reqCount,render:s=>e.jsx(W,{value:s.reqCount||null})},{key:"tokIn",label:"Tok ↓",cls:"s-atop-col-num",kind:"number",tip:"Input tokens — populated when backend emits usage",defaultWidth:64,minWidth:56,sortValue:s=>s.tokIn,render:s=>e.jsx(W,{value:s.tokIn})},{key:"tokOut",label:"Tok ↑",cls:"s-atop-col-num",kind:"number",tip:"Output tokens — populated when backend emits usage",defaultWidth:64,minWidth:56,sortValue:s=>s.tokOut,render:s=>e.jsx(W,{value:s.tokOut})},{key:"cache",label:"Cache",cls:"s-atop-col-num",kind:"number",tip:"Cache hit rate — populated when backend emits usage",defaultWidth:64,minWidth:56,sortValue:s=>$(s),render:s=>e.jsx(Vs,{value:$(s)})},{key:"tools",label:"Tools",cls:"s-atop-col-num",kind:"number",defaultWidth:64,minWidth:56,sortValue:s=>s.toolCount,render:s=>e.jsx(W,{value:s.toolCount||null})},{key:"perms",label:"Perms",cls:"s-atop-col-num",kind:"number",tip:"Permission requests — heuristic count of permission-mode events",defaultWidth:64,minWidth:56,sortValue:s=>s.permCount,render:s=>e.jsx(W,{value:s.permCount||null,accent:s.permCount>0?"amber":void 0})},{key:"last",label:"Last",cls:"s-atop-col-last",kind:"time",defaultWidth:86,minWidth:64,sortValue:s=>s.lastEventAt,render:s=>is(s.lastEventAt,Date.now())},{key:"runtime",label:"Runtime",cls:"s-atop-col-runtime",kind:"number",tip:"Session duration (active period in current buffer)",defaultWidth:80,minWidth:64,sortValue:s=>s.sessionRuntimeSec,render:s=>rs(s.sessionRuntimeSec)}];function W({value:s,accent:n}){const l=s==null?"s-atop-col-num s-atop-col-num--dim":`s-atop-col-num${n?` s-atop-col-num--${n}`:""}`;return e.jsx("span",{className:l,children:S(s)})}function Vs({value:s}){const n=s==null?"s-atop-col-num s-atop-col-num--dim":"s-atop-col-num";return e.jsx("span",{className:n,children:us(s)})}function _s({shown:s,total:n,hasSelection:l}){return e.jsxs("div",{className:"s-atop-keys",children:[e.jsxs("span",{className:"s-atop-keys-count",children:[e.jsx("strong",{children:s})," / ",n," agents"]}),e.jsx("span",{className:"s-atop-keys-spacer"}),e.jsxs("span",{children:[e.jsx("kbd",{children:"/"})," filter"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"j"}),"/",e.jsx("kbd",{children:"k"})," select"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"click"})," drill in"]}),l&&e.jsxs("span",{children:[e.jsx("kbd",{children:"esc"})," close"]})]})}function zs({row:s,process:n,events:l,now:c,onClose:m}){const p=d.useMemo(()=>{const u={};for(const k of l){if(k.kind!=="tool")continue;const y=k.summary.match(/^([a-z_][a-z0-9_]*)/i),t=y?y[1]:"(tool)";u[t]=(u[t]??0)+1}const h=Object.entries(u).sort((k,y)=>y[1]-k[1]).slice(0,6),I=Math.max(1,...h.map(k=>k[1]));return h.map(([k,y])=>({name:k,count:y,frac:y/I}))},[l]),f=l.slice(-40).reverse();return e.jsxs("aside",{className:"s-atop-drawer","aria-label":`Agent ${s.key}`,children:[e.jsxs("header",{className:"s-atop-drawer-head",children:[e.jsxs("div",{className:"s-atop-drawer-head-meta",children:[e.jsxs("span",{className:`s-atop-status s-atop-status--${s.status}`,children:[e.jsx("span",{className:"s-atop-status-dot"}),X[s.status]]}),e.jsx("span",{className:"s-atop-drawer-pid",children:s.pid>0?`pid ${s.pid}`:"transcript"}),e.jsxs("span",{className:Z(s.harness),title:`origin: ${q[s.attribution]}`,children:[e.jsx(H,{harness:s.harness,size:11,title:null}),F(s.harness)]}),e.jsxs("span",{className:"s-atop-drawer-session",children:["session ",Q(s.sessionId)]})]}),e.jsx("h2",{className:"s-atop-drawer-title",children:s.project}),e.jsxs("p",{className:"s-atop-drawer-sub",children:["session ",Q(s.sessionId)," · runtime ",rs(s.sessionRuntimeSec)," · last activity ",is(s.lastEventAt,c)]}),e.jsx("button",{className:"s-atop-drawer-close",onClick:m,"aria-label":"Close (Esc)",children:"✕"})]}),e.jsxs("div",{className:"s-atop-drawer-body",children:[e.jsxs("section",{children:[e.jsx("h3",{className:"s-atop-drawer-h3",children:"Activity"}),e.jsxs("div",{className:"s-atop-metrics",children:[e.jsx(b,{label:"Requests",value:S(s.reqCount||null)}),e.jsx(b,{label:"Tools",value:S(s.toolCount||null)}),e.jsx(b,{label:"Permissions",value:S(s.permCount||null),accent:s.permCount>0?"amber":void 0}),e.jsx(b,{label:"Tok in",value:S(s.tokIn),dim:s.tokIn==null}),e.jsx(b,{label:"Tok out",value:S(s.tokOut),dim:s.tokOut==null}),e.jsx(b,{label:"Cache hit",value:us($(s)),dim:$(s)==null}),e.jsx(b,{label:"Model",value:s.model??"—",dim:s.model==null}),e.jsx(b,{label:"Events",value:S(s.eventCount||null)})]})]}),p.length>0&&e.jsxs("section",{children:[e.jsx("h3",{className:"s-atop-drawer-h3",children:"Tool calls"}),e.jsx("ul",{className:"s-atop-histo",children:p.map(u=>e.jsxs("li",{children:[e.jsx("span",{className:"s-atop-histo-name",children:u.name}),e.jsx("span",{className:"s-atop-histo-bar",children:e.jsx("span",{className:"s-atop-histo-fill",style:{width:`${(u.frac*100).toFixed(1)}%`}})}),e.jsx("span",{className:"s-atop-histo-count",children:u.count})]},u.name))})]}),e.jsxs("section",{children:[e.jsxs("h3",{className:"s-atop-drawer-h3",children:["Recent activity",e.jsxs("span",{className:"s-atop-drawer-h3-aside",children:[l.length," buffered"]})]}),f.length===0?e.jsx("div",{className:"s-atop-peek-empty",children:"no events buffered for this agent yet"}):e.jsx("ol",{className:"s-atop-peek",children:f.map(u=>e.jsxs("li",{className:`s-atop-peek-row s-atop-peek-row--${u.kind}`,children:[e.jsx("span",{className:"s-atop-peek-time",children:$s(u.ts)}),e.jsx("span",{className:"s-atop-peek-kind",children:u.kind}),e.jsx("span",{className:"s-atop-peek-text",children:u.summary})]},u.id))})]}),e.jsxs("section",{className:"s-atop-drawer-section--secondary",children:[e.jsx("h3",{className:"s-atop-drawer-h3",children:"Process"}),e.jsx("code",{className:"s-atop-codeblock",children:s.command}),e.jsxs("dl",{className:"s-atop-kvs",children:[e.jsx("dt",{children:"PID"}),e.jsx("dd",{children:s.pid>0?s.pid:"transcript-only"}),e.jsx("dt",{children:"Parent"}),e.jsxs("dd",{children:[s.parentLabel," (ppid ",s.ppid,")"]}),e.jsx("dt",{children:"Process etime"}),e.jsx("dd",{children:s.procEtime}),s.transcriptPath&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:"Transcript"}),e.jsx("dd",{children:s.transcriptPath})]}),e.jsx("dt",{children:"Origin"}),e.jsx("dd",{children:q[s.attribution]}),e.jsx("dt",{children:"CWD"}),e.jsx("dd",{children:s.cwd||"(none)"})]}),n?.parentChain&&n.parentChain.length>0&&e.jsx("ol",{className:"s-atop-chain",children:n.parentChain.map(u=>e.jsxs("li",{children:[e.jsx("span",{className:"s-atop-chain-pid",children:u.pid}),e.jsx("span",{className:"s-atop-chain-cmd",children:ws(u.command,80)})]},u.pid))})]})]})]})}function b({label:s,value:n,dim:l,accent:c}){const m=`s-atop-metric${l?" s-atop-metric--dim":""}${c?` s-atop-metric--${c}`:""}`;return e.jsxs("div",{className:m,children:[e.jsx("span",{className:"s-atop-metric-lbl",children:s}),e.jsx("span",{className:"s-atop-metric-val",children:n})]})}export{ne as AtopView};
@@ -1 +1 @@
1
- import{r as k,j as s}from"./index-DReVb7jZ.js";import{u as d,g as B,o as p}from"./router-C-MF5-mb.js";function m(t){switch(t.view){case"mesh":return"Back to mesh";case"ops":return"Back to ops";case"agents-v2":return t.agentId?"Registry":"All agents";case"messages":return"Back to conversations";case"conversation":return"Back to conversation";case"inbox":return"Back to inbox";case"sessions":return"Back to sessions";case"terminal":return"Terminal Control";case"work":return"Back to work";case"broker":return"Back to broker";case"activity":return"Back to activity";default:return"Back"}}function w({slot:t,fallback:n,navigate:c,className:o,label:i}){const e=d(),r=k.useMemo(()=>B(e.state),[e.state]),a=r??n,u=i??m(a),l=p(e.state)&&!!r;return s.jsxs("button",{type:"button",className:`s-back-pill${o?` ${o}`:""}`,onClick:()=>{if(l&&typeof window<"u"&&window.history.length>1){window.history.back();return}c(a)},children:[s.jsx("span",{"aria-hidden":!0,className:"s-back-pill-glyph",children:"←"}),s.jsx("span",{children:u})]})}export{w as B};
1
+ import{r as k,j as s}from"./index-EsrkGBcv.js";import{u as d,g as B,o as p}from"./router-DCtl8wqb.js";function m(t){switch(t.view){case"mesh":return"Back to mesh";case"ops":return"Back to ops";case"agents-v2":return t.agentId?"Registry":"All agents";case"messages":return"Back to conversations";case"conversation":return"Back to conversation";case"inbox":return"Back to inbox";case"sessions":return"Back to sessions";case"terminal":return"Terminal Control";case"work":return"Back to work";case"broker":return"Back to broker";case"activity":return"Back to activity";default:return"Back"}}function w({slot:t,fallback:n,navigate:c,className:o,label:i}){const e=d(),r=k.useMemo(()=>B(e.state),[e.state]),a=r??n,u=i??m(a),l=p(e.state)&&!!r;return s.jsxs("button",{type:"button",className:`s-back-pill${o?` ${o}`:""}`,onClick:()=>{if(l&&typeof window<"u"&&window.history.length>1){window.history.back();return}c(a)},children:[s.jsx("span",{"aria-hidden":!0,className:"s-back-pill-glyph",children:"←"}),s.jsx("span",{children:u})]})}export{w as B};
@@ -0,0 +1 @@
1
+ import{r as o,j as e}from"./index-EsrkGBcv.js";import{E as p}from"./EmptyState-CZlrHXy-.js";import{a as f}from"./api-DSqpVKC7.js";import{S as b}from"./scoutbot-markdown-BKEBSbG0.js";import{b as h,t as u}from"./time-Dhsh_2EG.js";/* empty css *//* empty css */import"./Provider-C35yu29I.js";import"./theme-vars-DNK0nn3k.js";import"./provider-Dojd8quC.js";import"./router-DCtl8wqb.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-3RfJpen8.js";import"./machine-scope-DJt9RZ2w.js";import"./sse-BCPRocpq.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./agent-state-DDhnFEEP.js";import"./scoutbot-Bk3nyrkj.js";import"./NewChatComposer-C97-iTMK.js";import"./runtime-picker-DXu2bOTh.js";import"./scout-voice-CZx60X6E.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-OvccU82H.js";import"./createLucideIcon-zZ8Hx7er.js";import"./media-blobs-Bi8pxr1u.js";import"./index-724SdE6r.js";import"./HarnessMark-C4naWc16.js";import"./conversation-model-FxDeWlle.js";import"./conversations-DoAAO6kA.js";import"./colors-CFlbwC25.js";import"./NewChatOrigin-DFbF_XvR.js";import"./keyboard-nav-DDHegDbx.js";import"./x-DAehov0E.js";import"./chevron-down-l1mrh5S9.js";import"./search-DT42oyRW.js";import"./file-text-CnISiiw6.js";import"./model-CBkMvT1w.js";import"./DocumentFocusViewer-DJr0v0D_.js";import"./TextDocumentSurface-D52m7Vd8.js";import"./index-CHD0qcfL.js";import"./chevron-right-DrfqcerI.js";import"./folder-D5prSkzz.js";import"./chevron-up-CETZJzjV.js";import"./code-xml-BhcNbLWU.js";import"./arrow-left-MVUKauwQ.js";import"./arrow-right-Bp-FpE5V.js";import"./voice-turn-ledger-BMZxlSjg.js";import"./chunk-HRAB3GC3-DbVLgbWX.js";import"./external-link-CUObqmgX.js";const g={"fleet-home":"fleet briefing",tour:"tour briefing"};function we({briefingId:s,navigate:i}){const[r,t]=o.useState(null),[n,a]=o.useState(null),c=o.useCallback(async()=>{try{const d=await f(`/api/briefings/${encodeURIComponent(s)}`);t(d),a(null)}catch(d){a(d instanceof Error?d.message:"Failed to load briefing")}},[s]);return o.useEffect(()=>{c()},[c]),n?e.jsxs("div",{className:"sys-surface-page sys-surface-page-wide",children:[e.jsx("button",{type:"button",className:"briefing-detail-back",onClick:()=>i({view:"briefings"}),children:"← back to briefings"}),e.jsx(p,{title:"Couldn't load briefing",body:n})]}):r?e.jsxs("div",{className:"sys-surface-page sys-surface-page-wide briefing-detail",children:[e.jsx("button",{type:"button",className:"briefing-detail-back",onClick:()=>i({view:"briefings"}),children:"← back to briefings"}),e.jsxs("header",{className:"briefing-detail-header",children:[e.jsx("h2",{children:r.title}),e.jsxs("div",{className:"briefing-detail-header-meta",children:[e.jsx("span",{className:`briefing-kind briefing-kind-${r.kind}`,children:g[r.kind]}),e.jsx("span",{children:h(r.preparedAt)}),e.jsxs("span",{children:["· ",u(r.preparedAt)]})]}),e.jsx("p",{className:"briefing-detail-summary",children:r.summary}),r.recommendation?e.jsx("div",{className:"briefing-detail-recommendation",children:r.recommendation}):null]}),r.markdown?e.jsx(x,{markdown:r.markdown}):null,r.brief?.presented?e.jsx(y,{presented:r.brief.presented}):null,e.jsx(j,{call:r.call}),e.jsx(N,{brief:r.brief,navigate:i}),e.jsx(k,{observations:r.observations,navigate:i}),e.jsx(v,{snapshot:r.snapshot,call:r.call})]}):e.jsx("div",{className:"sys-surface-page sys-surface-page-wide",children:e.jsx("div",{className:"briefings-placeholder",children:"Loading briefing..."})})}function x({markdown:s}){return e.jsxs("section",{className:"briefing-layer briefing-layer-markdown",children:[e.jsx(l,{eyebrow:"Layer 0",title:"Brief (markdown)"}),e.jsx("div",{className:"briefing-markdown",children:e.jsx(b,{text:s})})]})}function j({call:s}){return!s||!s.telemetry&&!s.presenter?null:e.jsxs("section",{className:"briefing-layer briefing-layer-telemetry",children:[e.jsx(l,{eyebrow:"Telemetry",title:"Calls & usage"}),e.jsxs("dl",{className:"briefing-telemetry",children:[e.jsx(m,{label:"Analyst",model:s.model,responseId:s.responseId,telemetry:s.telemetry??null}),s.presenter?e.jsx(m,{label:"Presenter",model:s.presenter.model,responseId:s.presenter.responseId,telemetry:s.presenter,note:s.presenter.skipped==="rate-guard"?"skipped — rate-guard hit":s.presenter.skipped==="error"?`failed — ${s.presenter.errorMessage??"unknown"}`:null}):null]})]})}function m({label:s,model:i,responseId:r,telemetry:t,note:n}){const a=t?.usage??null;return e.jsxs("div",{className:"briefing-telemetry-row",children:[e.jsxs("div",{className:"briefing-telemetry-row-head",children:[e.jsx("span",{className:"briefing-telemetry-label",children:s}),e.jsx("span",{className:"briefing-telemetry-model",children:i}),n?e.jsx("span",{className:"briefing-telemetry-note",children:n}):null]}),e.jsxs("div",{className:"briefing-telemetry-stats",children:[e.jsx("span",{children:t&&t.elapsedMs>0?`${(t.elapsedMs/1e3).toFixed(2)}s`:"—"}),e.jsxs("span",{children:["in ",a?.inputTokens??"—"]}),e.jsxs("span",{children:["out ",a?.outputTokens??"—"]}),e.jsxs("span",{children:["total ",a?.totalTokens??"—"]}),r?e.jsx("span",{className:"briefing-telemetry-response",children:r}):null]})]})}function y({presented:s}){return e.jsxs("section",{className:"briefing-layer briefing-layer-presented",children:[e.jsx(l,{eyebrow:"Spoken",title:`Presented as · ${s.voiceSpec.persona}, ~${s.voiceSpec.targetWords} words`}),e.jsx("ol",{className:"briefing-presented-sentences",children:s.sentences.map((i,r)=>e.jsx("li",{className:"briefing-presented-sentence",children:i},r))}),e.jsxs("div",{className:"briefing-presented-meta",children:["model: ",s.model,s.responseId?` · response: ${s.responseId}`:""]})]})}function N({brief:s,navigate:i}){return s?e.jsxs("section",{className:"briefing-layer",children:[e.jsx(l,{eyebrow:"Layer 3",title:"Brief"}),s.steps.length>0?e.jsx("ol",{className:"briefing-steps",children:s.steps.map((r,t)=>e.jsxs("li",{className:"briefing-step",children:[e.jsxs("div",{className:"briefing-step-label",children:[t+1,". ",r.label]}),r.narration?e.jsx("p",{className:"briefing-step-narration",children:r.narration}):null]},r.id??t))}):null,s.actions.length>0?e.jsx("div",{className:"briefing-actions",children:s.actions.map((r,t)=>e.jsx("button",{type:"button",className:"s-btn",onClick:()=>{r.route&&i(r.route)},children:r.label},`${r.label}-${t}`))}):null]}):e.jsxs("section",{className:"briefing-layer",children:[e.jsx(l,{eyebrow:"Layer 3",title:"Brief & call"}),e.jsx("p",{className:"briefings-placeholder",children:"No brief body persisted."})]})}function k({observations:s,navigate:i}){return e.jsxs("section",{className:"briefing-layer",children:[e.jsx(l,{eyebrow:"Layer 2",title:`Observations (${s.length})`}),s.length===0?e.jsx("p",{className:"briefings-placeholder",children:"No observations on this brief."}):e.jsx("div",{className:"briefing-observations",children:s.map((r,t)=>{const n=r.tone==="warn"?"briefing-observation-warn":r.tone==="err"||r.tone==="error"?"briefing-observation-err":"";return e.jsxs("div",{className:`briefing-observation ${n}`.trim(),children:[e.jsx("div",{className:"briefing-observation-text",children:r.text}),r.references.length>0?e.jsx("div",{className:"briefing-observation-refs",children:r.references.map((a,c)=>e.jsx(w,{reference:a,navigate:i},`${a.label}-${c}`))}):null]},t)})})]})}function w({reference:s,navigate:i}){const r=!!s.route,t=s.detail?`${s.label} · ${s.detail}`:s.label;return r?e.jsx("button",{type:"button",className:"briefing-ref-chip",onClick:()=>i(s.route),children:t}):e.jsx("span",{className:"briefing-ref-chip briefing-ref-chip-static",children:t})}function v({snapshot:s,call:i}){const r=o.useMemo(()=>C(s),[s]),[t,n]=o.useState(!1);return e.jsxs("section",{className:"briefing-layer",children:[e.jsx(l,{eyebrow:"Layer 1",title:"Read snapshot"}),r.length>0?e.jsx("div",{className:"briefing-snapshot-counts",children:r.map(a=>e.jsxs("span",{className:"briefing-snapshot-count",children:[e.jsx("strong",{children:a.value})," ",a.label]},a.label))}):null,i?e.jsxs("details",{className:"briefing-snapshot-section",children:[e.jsx("summary",{className:"briefing-snapshot-section-head",children:"Call metadata"}),e.jsxs("dl",{className:"briefing-call-grid",children:[e.jsx("dt",{children:"Model"}),e.jsx("dd",{children:i.model}),e.jsx("dt",{children:"Response ID"}),e.jsx("dd",{children:i.responseId??"—"}),e.jsx("dt",{children:"System prompt"}),e.jsx("dd",{children:e.jsx("pre",{className:"briefing-call-prompt",children:i.systemPrompt})}),e.jsx("dt",{children:"Operator request"}),e.jsx("dd",{children:e.jsx("pre",{className:"briefing-call-prompt",children:i.operatorRequest})})]})]}):null,e.jsxs("div",{className:"briefing-snapshot-section",children:[e.jsx("button",{type:"button",className:"briefing-detail-back",onClick:()=>n(a=>!a),children:t?"Hide raw snapshot":"Show raw snapshot JSON"}),t?e.jsx("pre",{className:"briefing-snapshot-raw",children:JSON.stringify(s??{},null,2)}):null]})]})}function l({eyebrow:s,title:i}){return e.jsxs("div",{className:"briefing-layer-head",children:[e.jsx("span",{className:"briefing-layer-eyebrow",children:s}),e.jsx("span",{className:"briefing-layer-title",children:i})]})}function C(s){if(!s?.state)return[];const i=s.state,r=[],t=(n,a)=>{Array.isArray(a)&&r.push({label:n,value:a.length})};if(t("agents",i.agents),i.fleet&&typeof i.fleet=="object"){const n=i.fleet;t("active requests",n.activeAsks),t("attention",n.needsAttention),t("recent",n.recentCompleted)}if(i.broker&&typeof i.broker=="object"){const n=i.broker;t("broker msgs",n.recentMessages)}if(t("scout chatter",i.scoutChatter),t("tail events",i.agentLogMessages),i.operatorAttention&&typeof i.operatorAttention=="object"){const n=i.operatorAttention;t("operator items",n.items)}return r}export{we as BriefingDetailScreen};
@@ -1 +1 @@
1
- import{r as i,j as e}from"./index-DReVb7jZ.js";import{E as c}from"./EmptyState-CYUwYyAW.js";import{p as g,a as m}from"./api-DSqpVKC7.js";import{t as p}from"./time-Dhsh_2EG.js";/* empty css *//* empty css */const b={"fleet-home":"fleet",tour:"tour"},d="/api/briefings?limit=50",u=3e4;function E({navigate:f}){const[r,h]=i.useState(()=>g(d,u)?.briefings??null),[n,t]=i.useState(null),[l,o]=i.useState(!1),a=i.useCallback(async()=>{o(!0);try{const s=await m(d);h(s.briefings),t(null)}catch(s){t(s instanceof Error?s.message:"Failed to load briefings")}finally{o(!1)}},[]);return i.useEffect(()=>{a()},[a]),e.jsxs("div",{className:"sys-surface-page sys-surface-page-wide",children:[e.jsxs("div",{className:"sys-page-head",children:[e.jsxs("div",{className:"sys-page-title-group",children:[e.jsx("h2",{className:"sys-page-title",children:"Briefings"}),e.jsx("p",{className:"sys-page-subtitle",children:"Scoutbot's archived fleet briefs — what it told you, when, and what it saw. Rolling 100."})]}),e.jsx("div",{className:"sys-page-actions",children:e.jsx("button",{type:"button",className:"s-btn",disabled:l,onClick:()=>{a()},children:l?"Refreshing...":"Refresh"})})]}),n?e.jsx(c,{title:"Couldn't load briefings",body:n}):r===null?e.jsx("div",{className:"briefings-placeholder",children:"Loading briefings..."}):r.length===0?e.jsx(c,{title:"No briefings yet",body:"Scoutbot writes here when it generates a fleet brief — either on Home or via tour. Briefs land in this archive automatically."}):e.jsx("ul",{className:"briefings-list",children:r.map(s=>e.jsx("li",{children:e.jsxs("button",{type:"button",className:"briefing-row",onClick:()=>f({view:"briefings",briefingId:s.id}),children:[e.jsxs("div",{className:"briefing-row-head",children:[e.jsx("span",{className:`briefing-kind briefing-kind-${s.kind}`,children:b[s.kind]}),e.jsx("span",{className:"briefing-row-title",children:s.title}),e.jsx("span",{className:"briefing-row-time",children:p(s.preparedAt)})]}),e.jsx("div",{className:"briefing-row-summary",children:s.summary}),e.jsxs("div",{className:"briefing-row-meta",children:[e.jsxs("span",{children:[s.observationCount," observations"]}),s.recommendation?e.jsxs("span",{children:["· ",s.recommendation]}):null]})]})},s.id))})]})}export{E as BriefingsScreen};
1
+ import{r as i,j as e}from"./index-EsrkGBcv.js";import{E as c}from"./EmptyState-CZlrHXy-.js";import{p as g,a as m}from"./api-DSqpVKC7.js";import{t as p}from"./time-Dhsh_2EG.js";/* empty css *//* empty css */const b={"fleet-home":"fleet",tour:"tour"},d="/api/briefings?limit=50",u=3e4;function E({navigate:f}){const[r,h]=i.useState(()=>g(d,u)?.briefings??null),[n,t]=i.useState(null),[l,o]=i.useState(!1),a=i.useCallback(async()=>{o(!0);try{const s=await m(d);h(s.briefings),t(null)}catch(s){t(s instanceof Error?s.message:"Failed to load briefings")}finally{o(!1)}},[]);return i.useEffect(()=>{a()},[a]),e.jsxs("div",{className:"sys-surface-page sys-surface-page-wide",children:[e.jsxs("div",{className:"sys-page-head",children:[e.jsxs("div",{className:"sys-page-title-group",children:[e.jsx("h2",{className:"sys-page-title",children:"Briefings"}),e.jsx("p",{className:"sys-page-subtitle",children:"Scoutbot's archived fleet briefs — what it told you, when, and what it saw. Rolling 100."})]}),e.jsx("div",{className:"sys-page-actions",children:e.jsx("button",{type:"button",className:"s-btn",disabled:l,onClick:()=>{a()},children:l?"Refreshing...":"Refresh"})})]}),n?e.jsx(c,{title:"Couldn't load briefings",body:n}):r===null?e.jsx("div",{className:"briefings-placeholder",children:"Loading briefings..."}):r.length===0?e.jsx(c,{title:"No briefings yet",body:"Scoutbot writes here when it generates a fleet brief — either on Home or via tour. Briefs land in this archive automatically."}):e.jsx("ul",{className:"briefings-list",children:r.map(s=>e.jsx("li",{children:e.jsxs("button",{type:"button",className:"briefing-row",onClick:()=>f({view:"briefings",briefingId:s.id}),children:[e.jsxs("div",{className:"briefing-row-head",children:[e.jsx("span",{className:`briefing-kind briefing-kind-${s.kind}`,children:b[s.kind]}),e.jsx("span",{className:"briefing-row-title",children:s.title}),e.jsx("span",{className:"briefing-row-time",children:p(s.preparedAt)})]}),e.jsx("div",{className:"briefing-row-summary",children:s.summary}),e.jsxs("div",{className:"briefing-row-meta",children:[e.jsxs("span",{children:[s.observationCount," observations"]}),s.recommendation?e.jsxs("span",{children:["· ",s.recommendation]}):null]})]})},s.id))})]})}export{E as BriefingsScreen};
@@ -1 +1 @@
1
- import{r as m,j as s}from"./index-DReVb7jZ.js";import{a as y,c as p,d as b,f as x}from"./broker-display-BkBzyvbR.js";import{C as u}from"./chevron-down-CDzRQQGl.js";import{C as j}from"./chevron-right-DKGTLiqc.js";import"./status-tone-BM_zuRy1.js";import"./createLucideIcon-ChvMq-zl.js";function i({label:e,value:a}){return s.jsxs("div",{className:"sys-broker-metadata-row",children:[s.jsx("span",{className:"sys-broker-metadata-key",children:e}),s.jsx("code",{className:"sys-broker-metadata-value",children:a})]})}function h({label:e,value:a,depth:t=0,defaultOpen:d=!0}){const[n,l]=m.useState(d&&t<2);if(a==null)return s.jsx(i,{label:e,value:"—"});if(Array.isArray(a))return a.length===0?s.jsx(i,{label:e,value:"[]"}):a.every(r=>typeof r!="object"||r===null)?s.jsx(i,{label:e,value:a.map(r=>x(r)).join(", ")}):s.jsxs("div",{className:"sys-broker-metadata-group",style:{marginLeft:t*12},children:[s.jsxs("button",{type:"button",className:"sys-broker-metadata-group-toggle",onClick:()=>l(r=>!r),"aria-expanded":n,children:[n?s.jsx(u,{size:12,"aria-hidden":"true"}):s.jsx(j,{size:12,"aria-hidden":"true"}),s.jsx("span",{className:"sys-broker-metadata-group-label",children:e}),s.jsxs("span",{className:"sys-broker-metadata-count",children:[a.length," items"]})]}),n&&s.jsx("div",{className:"sys-broker-metadata-children",children:a.map((r,c)=>s.jsx(h,{label:`[${c}]`,value:r,depth:t+1,defaultOpen:t<1},`${e}-${c}`))})]});if(typeof a=="object"){const o=Object.entries(a);return o.length===0?s.jsx(i,{label:e,value:"{}"}):s.jsxs("div",{className:"sys-broker-metadata-group",style:{marginLeft:t*12},children:[s.jsxs("button",{type:"button",className:"sys-broker-metadata-group-toggle",onClick:()=>l(r=>!r),"aria-expanded":n,children:[n?s.jsx(u,{size:12,"aria-hidden":"true"}):s.jsx(j,{size:12,"aria-hidden":"true"}),s.jsx("span",{className:"sys-broker-metadata-group-label",children:e}),s.jsxs("span",{className:"sys-broker-metadata-count",children:[o.length," fields"]})]}),n&&s.jsx("div",{className:"sys-broker-metadata-children",children:o.map(([r,c])=>s.jsx(h,{label:r,value:c,depth:t+1,defaultOpen:t<1},`${e}-${r}`))})]})}return s.jsx(i,{label:e,value:x(a)})}function k({entries:e}){return e.length===0?null:s.jsx("div",{className:"sys-broker-inspector-rows",children:e.map(a=>s.jsxs("div",{className:"sys-broker-inspector-row",children:[s.jsx("span",{className:"sys-detail-label",children:a.key}),s.jsx("code",{className:"sys-detail-value",children:a.value})]},a.key))})}function S({metadata:e,rawJson:a}){const t=m.useMemo(()=>y(e),[e]),d=m.useMemo(()=>p(e),[e]),[n,l]=m.useState(!1);return!e||Object.keys(e).length===0?s.jsx("div",{className:"sys-broker-metadata-empty",children:"No metadata payload attached to this dispatch row."}):s.jsxs("div",{className:"sys-broker-metadata-panel",children:[t.length>0&&s.jsxs("section",{className:"sys-broker-metadata-section",children:[s.jsx("div",{className:"sys-broker-metadata-section-head",children:s.jsx("span",{className:"sys-detail-label",children:"Summary"})}),s.jsx(k,{entries:t})]}),d!==null&&s.jsxs("section",{className:"sys-broker-metadata-section",children:[s.jsx("div",{className:"sys-broker-metadata-section-head",children:s.jsx("span",{className:"sys-detail-label",children:"Payload"})}),s.jsx("div",{className:"sys-broker-metadata-tree",children:s.jsx(h,{label:"payload",value:d,defaultOpen:!0})})]}),s.jsxs("section",{className:"sys-broker-metadata-section",children:[s.jsxs("button",{type:"button",className:"sys-broker-metadata-raw-toggle",onClick:()=>l(o=>!o),"aria-expanded":n,children:[n?s.jsx(u,{size:12,"aria-hidden":"true"}):s.jsx(j,{size:12,"aria-hidden":"true"}),"Raw JSON"]}),n&&s.jsx("pre",{className:"sys-broker-metadata-raw",children:a||b(e)})]})]})}export{S as BrokerMetadataPanel};
1
+ import{r as m,j as s}from"./index-EsrkGBcv.js";import{a as y,c as p,d as b,f as x}from"./broker-display-BkBzyvbR.js";import{C as u}from"./chevron-down-l1mrh5S9.js";import{C as j}from"./chevron-right-DrfqcerI.js";import"./status-tone-BM_zuRy1.js";import"./createLucideIcon-zZ8Hx7er.js";function i({label:e,value:a}){return s.jsxs("div",{className:"sys-broker-metadata-row",children:[s.jsx("span",{className:"sys-broker-metadata-key",children:e}),s.jsx("code",{className:"sys-broker-metadata-value",children:a})]})}function h({label:e,value:a,depth:t=0,defaultOpen:d=!0}){const[n,l]=m.useState(d&&t<2);if(a==null)return s.jsx(i,{label:e,value:"—"});if(Array.isArray(a))return a.length===0?s.jsx(i,{label:e,value:"[]"}):a.every(r=>typeof r!="object"||r===null)?s.jsx(i,{label:e,value:a.map(r=>x(r)).join(", ")}):s.jsxs("div",{className:"sys-broker-metadata-group",style:{marginLeft:t*12},children:[s.jsxs("button",{type:"button",className:"sys-broker-metadata-group-toggle",onClick:()=>l(r=>!r),"aria-expanded":n,children:[n?s.jsx(u,{size:12,"aria-hidden":"true"}):s.jsx(j,{size:12,"aria-hidden":"true"}),s.jsx("span",{className:"sys-broker-metadata-group-label",children:e}),s.jsxs("span",{className:"sys-broker-metadata-count",children:[a.length," items"]})]}),n&&s.jsx("div",{className:"sys-broker-metadata-children",children:a.map((r,c)=>s.jsx(h,{label:`[${c}]`,value:r,depth:t+1,defaultOpen:t<1},`${e}-${c}`))})]});if(typeof a=="object"){const o=Object.entries(a);return o.length===0?s.jsx(i,{label:e,value:"{}"}):s.jsxs("div",{className:"sys-broker-metadata-group",style:{marginLeft:t*12},children:[s.jsxs("button",{type:"button",className:"sys-broker-metadata-group-toggle",onClick:()=>l(r=>!r),"aria-expanded":n,children:[n?s.jsx(u,{size:12,"aria-hidden":"true"}):s.jsx(j,{size:12,"aria-hidden":"true"}),s.jsx("span",{className:"sys-broker-metadata-group-label",children:e}),s.jsxs("span",{className:"sys-broker-metadata-count",children:[o.length," fields"]})]}),n&&s.jsx("div",{className:"sys-broker-metadata-children",children:o.map(([r,c])=>s.jsx(h,{label:r,value:c,depth:t+1,defaultOpen:t<1},`${e}-${r}`))})]})}return s.jsx(i,{label:e,value:x(a)})}function k({entries:e}){return e.length===0?null:s.jsx("div",{className:"sys-broker-inspector-rows",children:e.map(a=>s.jsxs("div",{className:"sys-broker-inspector-row",children:[s.jsx("span",{className:"sys-detail-label",children:a.key}),s.jsx("code",{className:"sys-detail-value",children:a.value})]},a.key))})}function S({metadata:e,rawJson:a}){const t=m.useMemo(()=>y(e),[e]),d=m.useMemo(()=>p(e),[e]),[n,l]=m.useState(!1);return!e||Object.keys(e).length===0?s.jsx("div",{className:"sys-broker-metadata-empty",children:"No metadata payload attached to this dispatch row."}):s.jsxs("div",{className:"sys-broker-metadata-panel",children:[t.length>0&&s.jsxs("section",{className:"sys-broker-metadata-section",children:[s.jsx("div",{className:"sys-broker-metadata-section-head",children:s.jsx("span",{className:"sys-detail-label",children:"Summary"})}),s.jsx(k,{entries:t})]}),d!==null&&s.jsxs("section",{className:"sys-broker-metadata-section",children:[s.jsx("div",{className:"sys-broker-metadata-section-head",children:s.jsx("span",{className:"sys-detail-label",children:"Payload"})}),s.jsx("div",{className:"sys-broker-metadata-tree",children:s.jsx(h,{label:"payload",value:d,defaultOpen:!0})})]}),s.jsxs("section",{className:"sys-broker-metadata-section",children:[s.jsxs("button",{type:"button",className:"sys-broker-metadata-raw-toggle",onClick:()=>l(o=>!o),"aria-expanded":n,children:[n?s.jsx(u,{size:12,"aria-hidden":"true"}):s.jsx(j,{size:12,"aria-hidden":"true"}),"Raw JSON"]}),n&&s.jsx("pre",{className:"sys-broker-metadata-raw",children:a||b(e)})]})]})}export{S as BrokerMetadataPanel};
@@ -0,0 +1,8 @@
1
+ import{r as t,j as e}from"./index-EsrkGBcv.js";import{r as xs}from"./index-724SdE6r.js";import{D as js}from"./runtime-picker-DXu2bOTh.js";import{E as Ee}from"./EmptyState-CZlrHXy-.js";import"./router-DCtl8wqb.js";import{uploadMediaFiles as ks,isRoutableMediaFile as vs}from"./media-blobs-Bi8pxr1u.js";import{A as ws,R as Ns,B as Ss,D as As}from"./NewChatComposer-C97-iTMK.js";import{p as Is,a as ie}from"./api-DSqpVKC7.js";import{c as Rs}from"./clipboard-e3fSpeo7.js";import{u as Cs}from"./sse-BCPRocpq.js";import{b as ze}from"./status-tone-BM_zuRy1.js";import{t as Fe,b as ts,n as ee}from"./time-Dhsh_2EG.js";import{u as ns}from"./Provider-C35yu29I.js";import{o as We}from"./openContent-C6XO6kr5.js";import{g as $s,b as le,h as os,d as Ds,i as Es,j as Fs,k as Ms}from"./broker-display-BkBzyvbR.js";import{BrokerMetadataPanel as Ts}from"./BrokerMetadataPanel-Dk242Yh_.js";import{DispatchAftermath as Ls}from"./DispatchAftermath-66uQAorV.js";import{i as Ps,c as Bs,n as Ye}from"./keyboard-nav-DDHegDbx.js";import{ShikiPane as zs}from"./ShikiPane-CRtTYkMj.js";import{d as Os}from"./types-B0PlfpKc.js";import{u as qs}from"./useEmbedHeadline-D6pJRxUg.js";/* empty css */import{L as ke}from"./loader-circle-OvccU82H.js";import{R as _s}from"./refresh-cw-BmVr7sCD.js";import{X as Me}from"./x-DAehov0E.js";import{c as is}from"./createLucideIcon-zZ8Hx7er.js";import{E as Xe}from"./external-link-CUObqmgX.js";import{M as ls}from"./message-square-BxesYglW.js";import{A as Te}from"./arrow-right-Bp-FpE5V.js";import{P as Us,A as Ks}from"./paperclip-BjcuP_Hx.js";import{P as Js}from"./plus-DFDDeGKu.js";import{C as Ze}from"./chevron-down-l1mrh5S9.js";import{S as Hs}from"./send-horizontal-CH0-fbZE.js";import{C as Qs}from"./check-lrJ3a73a.js";import{C as Gs}from"./copy-xKeM5ZtU.js";import{R as Vs}from"./radio-DRoOZsws.js";import{M as Ws,a as Ys}from"./DocumentFocusViewer-DJr0v0D_.js";const Xs=[["path",{d:"M12 5v14",key:"s699le"}],["path",{d:"m19 12-7 7-7-7",key:"1idqje"}]],Zs=is("arrow-down",Xs);const er=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],sr=is("hash",er),rr=160;function De(s){const a=new URLSearchParams({limit:String(rr)});return s&&a.set("cursor",s),`/api/broker?${a.toString()}`}const es={index:-1,request:0};function ar(s,a){return{index:a,request:s.request+1}}function cs(s,a){return a===s.index?s:{index:a,request:s.request}}function tr(s,a){return s.index<a?s:cs(s,a>0?a-1:-1)}function nr(s,a){return s.request!==a}function or({enabled:s,rowCount:a,onActivateRow:n,onClearSelection:o}){const[f,u]=t.useState(es),b=f.index,p=t.useRef(new Map),j=t.useRef(es.request),c=t.useCallback(y=>{u(h=>ar(h,typeof y=="function"?y(h.index):y))},[]),w=t.useCallback(y=>{u(h=>cs(h,typeof y=="function"?y(h.index):y))},[]);t.useEffect(()=>{if(!nr(f,j.current)||(j.current=f.request,f.index<0))return;const y=p.current.get(f.index);y?.scrollIntoView({block:"nearest"}),y?.focus()},[f]),t.useEffect(()=>{u(y=>tr(y,a))},[a]);const A=t.useCallback((y,h)=>{h?p.current.set(y,h):p.current.delete(y)},[]);t.useEffect(()=>{if(!s)return;const y=h=>{if(document.querySelector(".sys-broker-page")&&!(Ps(h.target)||Bs())&&a!==0){if(h.key==="Escape"){o&&(h.preventDefault(),o(),w(-1));return}if(h.key==="ArrowDown"||h.key==="j"){h.preventDefault(),c(N=>Ye(N,a,1));return}if(h.key==="ArrowUp"||h.key==="k"){h.preventDefault(),c(N=>Ye(N,a,-1));return}if(h.key==="Home"||h.key==="g"&&!h.shiftKey){h.preventDefault(),c(0);return}if(h.key==="End"||h.key==="G"){h.preventDefault(),c(a-1);return}if(h.key==="Enter"||h.key===" "){const N=b<0?0:b;h.preventDefault(),c(N),n(N)}}};return window.addEventListener("keydown",y),()=>window.removeEventListener("keydown",y)},[s,b,c,n,o,a,w]);const F=t.useCallback(y=>({tabIndex:b===y?0:-1,ref:h=>A(y,h),onFocus:()=>w(y)}),[b,A,w]);return{focusedIndex:b,setFocusedIndex:w,getRowFocusProps:F}}const xe=["all","delivered","failed"],ir=3e4,lr={all:"All",delivered:"Delivered",failed:"Failed"};function cr(s){switch(s){case"success":return"Success";case"failed_query":return"Query failure";case"failed_delivery":return"Delivery failure";default:return"Delivery attempt"}}function ds(s){return s.messageId??s.deliveryId??s.invocationId??s.id}function Le(s){switch(ze(s.kind,s.status)){case"success":return"Delivered";case"danger":return"Failed";case"working":return"Pending";case"warning":return"Held";default:return s.status?s.status.charAt(0).toUpperCase()+s.status.slice(1):"Queued"}}function Ie(s){if(!s)return"··";const a=s.trim().split(/\s+/).filter(Boolean);if(a.length===0)return"··";const n=a[a.length-1];return/^\d+$/.test(n)?n.slice(-2):a.length>=2?(a[0][0]+a[1][0]).toUpperCase():s.trim().slice(0,2).toUpperCase()}function dr(s){const a=ee(s)??0;return new Date(a).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"})}function Ae(s){const a=ee(s);return a===null?"—":new Date(a).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1})}function Ce(s,a,n=0){if(!s||typeof s!="object"||Array.isArray(s)||n>3)return;const o=s;for(const f of a)if(o[f]!==void 0&&o[f]!==null)return o[f];for(const f of Object.values(o)){const u=Ce(f,a,n+1);if(u!==void 0)return u}}function z(s,...a){const n=Ce(s.metadata,a);return typeof n!="string"&&typeof n!="number"?null:String(n).trim()||null}function Re(s,...a){const n=Ce(s.metadata,a);return typeof n=="number"||typeof n=="string"?ee(n):null}function Pe(s){switch(s){case"dm":return"Direct · agent";case"channel":return"Channel";case"broadcast":return"Broadcast";case null:return"No route";default:return s.replaceAll("_"," ")}}function Be(s,a){if(a==="to")return s.route==="channel"?"Channel":s.route==="broadcast"?"Broadcast":s.target?.toLowerCase().includes("operator")?"Operator":"Agent lane";const n=z(s,"class","actorClass")?.toLowerCase();return n==="operator"||n==="human"?"Operator":n==="agent"?"Agent":s.actorName?.toLowerCase().includes("operator")?"Operator":"Sender"}function ss(s){const a=Ce(s.metadata,["latencyMs","durationMs"]);if(typeof a=="number"&&Number.isFinite(a)&&a>=0)return a<1e3?`${Math.round(a)}ms`:`${(a/1e3).toFixed(a<1e4?1:0)}s`;const n=Re(s,"sentAt","createdAt")??ee(s.ts),o=Re(s,"deliveredAt","completedAt");if(n===null||o===null||o<n)return"—";const f=o-n;return f<1e3?`${f}ms`:`${(f/1e3).toFixed(f<1e4?1:0)}s`}function Oe({route:s}){switch(s){case"channel":return e.jsx(sr,{size:12,"aria-hidden":"true"});case"broadcast":return e.jsx(Vs,{size:12,"aria-hidden":"true"});case"dm":return e.jsx(Ks,{size:12,"aria-hidden":"true"});default:return e.jsx(ls,{size:12,"aria-hidden":"true"})}}function ur(s,a){if(!a)return null;const n=a.trim().replace(/^@/,"").toLowerCase();return s.find(o=>[o.id,o.name,o.handle,o.selector,o.defaultSelector,o.conversationId,o.harnessSessionId].some(f=>f?.trim().replace(/^@/,"").toLowerCase()===n))??null}function rs(s,a,n){const o=n==="from"?s.actorName:s.target,f=ur(a,o),u=f?.name??o??(n==="from"?"Unknown":"No target"),b=f?"Agent":n==="to"&&s.conversationId?"Session route":Be(s,n);return{label:u,kind:b,agent:f}}function hr(s,a,n){const o=n.agent??a.agent;return[{label:"From",value:a.kind},{label:"To",value:n.kind},{label:"Target",value:s.target??n.label},{label:"Channel",value:Pe(s.route)},{label:"Project",value:o?.project??z(s,"project","projectName")},{label:"Branch",value:o?.branch??z(s,"branch")},{label:"Runtime",value:o?[o.harness,o.model,o.reasoningEffort].filter(Boolean).join(" · ")||null:[z(s,"harness"),z(s,"model")].filter(Boolean).join(" · ")||null},{label:"Machine",value:o?.authorityNodeName??o?.homeNodeName??o?.authorityNodeId??o?.homeNodeId??z(s,"machine","machineName","nodeName")}].filter(f=>!!f.value)}function as({party:s,route:a,side:n}){return e.jsxs("span",{className:`sys-broker-route-end sys-broker-route-end--${n}`,children:[e.jsx("span",{className:"sys-broker-avatar sys-broker-endpoint-avatar","aria-hidden":"true",children:s.agent||n==="from"?Ie(s.label):e.jsx(Oe,{route:a})}),e.jsx("span",{className:"sys-broker-endpoint-name",title:s.label,children:s.label})]})}function fr({attempt:s,agents:a}){const n=rs(s,a,"from"),o=rs(s,a,"to"),f=hr(s,n,o),u=`dispatch-route-${s.id}`;return e.jsxs("span",{className:"sys-broker-route",tabIndex:0,"aria-describedby":u,children:[e.jsx(as,{party:n,route:s.route,side:"from"}),e.jsx(Te,{className:"sys-broker-route-arrow",size:11,"aria-hidden":"true"}),e.jsx(as,{party:o,route:s.route,side:"to"}),e.jsxs("span",{className:"sys-broker-endpoint-card",id:u,role:"tooltip",children:[e.jsx("span",{className:"sys-broker-endpoint-card-head",children:e.jsxs("span",{className:"sys-broker-endpoint-card-edge",children:[e.jsx("span",{className:"sys-broker-avatar sys-broker-endpoint-avatar","aria-hidden":"true",children:Ie(n.label)}),e.jsx("strong",{children:n.label}),e.jsx(Te,{className:"sys-broker-route-arrow",size:11,"aria-hidden":"true"}),e.jsx("span",{className:"sys-broker-avatar sys-broker-endpoint-avatar","aria-hidden":"true",children:o.agent?Ie(o.label):e.jsx(Oe,{route:s.route})}),e.jsx("strong",{children:o.label})]})}),e.jsx("span",{className:"sys-broker-endpoint-card-body",children:f.map(b=>e.jsxs("span",{className:"sys-broker-endpoint-card-field",children:[e.jsx("small",{children:b.label}),e.jsx("code",{title:b.value,children:b.value})]},b.label))})]})]})}function je(s){const a=ee(s)??0,n=new Date(a);return`${n.getFullYear()}-${n.getMonth()}-${n.getDate()}`}function mr(s,a=Date.now()){const n=ee(s)??0,o=new Date(n),f=new Date(a),u=new Date(a);return u.setDate(u.getDate()-1),je(s)===je(f.getTime())?"Today":je(s)===je(u.getTime())?"Yesterday":o.toLocaleDateString(void 0,{month:"short",day:"numeric",year:o.getFullYear()===f.getFullYear()?void 0:"numeric"})}function pr(s,a,n){return{...a,source:s.source,attempts:[...s.attempts,...a.attempts],failedQueries:s.failedQueries,failedDeliveries:s.failedDeliveries,dialogue:s.dialogue,ledger:{...a.ledger,cursors:{...s.ledger.cursors,[n]:a.ledger.cursors[n]},hasMore:{...s.ledger.hasMore,[n]:a.ledger.hasMore[n]}}}}function br({navigate:s,embedded:a=!1,initialAttemptId:n}){qs("Dispatch",a);const{route:o,agents:f,selectedBrokerAttempt:u,inspectBrokerAttempt:b,clearBrokerAttempt:p}=ns(),[j]=t.useState(()=>Is(De(),ir)),[c,w]=t.useState(j),A=o.view==="broker"?o.filter??"all":"all",[F,y]=t.useState(j===null),[h,N]=t.useState(!1),[L,ce]=t.useState(!1),[O,T]=t.useState(null),H=t.useRef(j),M=t.useRef(0),q=t.useRef(null),Q=t.useCallback(async(l="initial")=>{const d=++M.current;!H.current&&l!=="background"?(y(!0),T(null)):N(!0);try{const g=await ie(De());if(d!==M.current)return;H.current=g,w(g),T(null)}catch(g){if(d!==M.current)return;T(g instanceof Error?g.message:String(g))}finally{d===M.current&&(y(!1),N(!1))}},[]),de=t.useCallback(async()=>{const l=H.current;if(!l||L)return;const d="attempts",g=l.ledger.cursors[d];if(!g||!l.ledger.hasMore[d])return;const S=++M.current;ce(!0),T(null);try{const K=await ie(De(g));if(S!==M.current)return;const E=H.current,re=E?pr(E,K,d):K;H.current=re,w(re)}catch(K){if(S!==M.current)return;T(K instanceof Error?K.message:String(K))}finally{S===M.current&&ce(!1)}},[L]),ne=t.useCallback(()=>{q.current||(q.current=setTimeout(()=>{q.current=null,Q("background")},250))},[Q]);t.useEffect(()=>(Q("initial"),()=>{q.current&&clearTimeout(q.current)}),[Q]),Cs(l=>{(l.kind==="message.posted"||l.kind==="delivery.planned"||l.kind==="delivery.attempted"||l.kind==="delivery.state.changed"||l.kind==="scout.dispatched")&&ne()});const v=t.useMemo(()=>{if(!c)return[];const l=new Map(c.dialogue.map(d=>[d.id,d.body]));return $s(c.attempts).map(d=>{const g=d.messageId?l.get(d.messageId):null;return g&&g!==d.detail?{...d,detail:g}:d})},[c]),R=t.useMemo(()=>{switch(A){case"delivered":return v.filter(l=>!le(l));case"failed":return v.filter(le);default:return v}},[A,v]),ue=c?.ledger.hasMore.attempts??!1,_=t.useMemo(()=>({all:v.length,delivered:v.filter(l=>!le(l)).length,failed:v.filter(le).length}),[v]),D=t.useMemo(()=>{const l=o.view==="broker"?o.attemptId:void 0;return!c||!l?null:v.find(d=>d.id===l)??c.attempts.find(d=>d.id===l)??c.failedQueries.find(d=>d.id===l)??c.failedDeliveries.find(d=>d.id===l)??null},[c,v,o]),he=D?`${D.id}\0${D.status}\0${D.ts}`:null,G=u?`${u.id}\0${u.status}\0${u.ts}`:null;t.useEffect(()=>{D&&he!==G&&b(D)},[G,b,D,he]);const[C,U]=t.useState(null),$=t.useRef(!1),V=t.useCallback(l=>{if(a){$.current=!0,U(l);return}b(l)},[a,b]),I=t.useCallback(()=>{if(a){$.current=!0,U(null);return}p()},[p,a]),se=t.useCallback(l=>{const d=R[l];d&&(V(d),window.dispatchEvent(new CustomEvent("scout:set-inspector-width",{detail:{width:520}})))},[R,V]),{getRowFocusProps:W,setFocusedIndex:Y}=or({enabled:!!c&&R.length>0,rowCount:R.length,onActivateRow:se,onClearSelection:I}),P=C?.id??null,oe=C?`${C.id} ${C.status} ${C.ts}`:null;t.useEffect(()=>{if(!a||!P)return;const l=v.find(d=>d.id===P);l&&`${l.id} ${l.status} ${l.ts}`!==oe&&U(l)},[a,P,oe,v]),t.useEffect(()=>{if(!a||!n||!c||$.current||C)return;const l=v.find(d=>d.id===n)??c.attempts.find(d=>d.id===n)??c.failedQueries.find(d=>d.id===n)??c.failedDeliveries.find(d=>d.id===n);l&&($.current=!0,U(l))},[c,a,C,v,n]),t.useEffect(()=>{const l=o.view==="broker"?o.attemptId:void 0;if(!l)return;const d=R.findIndex(g=>g.id===l);d>=0&&Y(d)},[R,A,o,Y]);const ve=t.useCallback(l=>{const g=(xe.indexOf(A)+l+xe.length)%xe.length,S=xe[g];s({view:"broker",...S==="all"?{}:{filter:S}})},[A,s]),fe=a?C:null;return e.jsx("div",{className:`s-ops${a?" s-ops--embedded":""}${fe?" s-ops--split":""}`,children:e.jsxs("div",{className:"s-ops-body",children:[e.jsxs("div",{className:"sys-surface-page sys-surface-page-wide sys-surface-page-fluid sys-broker-page",children:[e.jsxs("div",{className:"sys-ledger-toolbar","aria-label":"Dispatch controls",children:[c?e.jsx("div",{className:"sys-tab-row sys-tab-row--toolbar",role:"tablist","aria-label":"Dispatch message filters",onKeyDown:l=>{l.key==="ArrowRight"?(l.preventDefault(),ve(1)):l.key==="ArrowLeft"&&(l.preventDefault(),ve(-1))},children:xe.map(l=>e.jsxs("button",{type:"button",role:"tab","aria-selected":A===l,className:`sys-tab${A===l?" sys-tab-active":""}`,onClick:()=>s({view:"broker",...l==="all"?{}:{filter:l}}),children:[e.jsx("span",{children:lr[l]}),e.jsx("span",{className:"sys-tab-count",children:_[l]})]},l))}):e.jsx("div",{className:"sys-ledger-kicker",children:"Dispatch ledger"}),e.jsxs("div",{className:"sys-page-actions sys-ledger-actions",children:[e.jsx("div",{className:"sys-sync-note",children:F?"Loading dispatch ledger...":c?`Updated ${Fe(c.generatedAt)}${c.source?.latestMessageAt?` · latest message ${Fe(c.source.latestMessageAt)}`:""}`:"Waiting for dispatch data"}),e.jsx("button",{type:"button",className:"s-btn",disabled:F||h,onClick:()=>{Q("manual")},children:h?"Refreshing...":"Refresh"})]})]}),O&&e.jsxs("div",{className:"sys-banner sys-banner-warning",children:[e.jsx("strong",{children:"Refresh failed."}),e.jsx("span",{children:O})]}),h&&c&&e.jsxs("div",{className:"sys-broker-source-note",role:"status","aria-live":"polite",children:[e.jsx(ke,{className:"sys-broker-source-spinner",size:12,"aria-hidden":"true"}),e.jsx("strong",{children:"Updating dispatches…"})]}),!h&&c?.source?.mode==="sqlite_projection"&&c.source.status==="degraded"&&c.source.detail&&e.jsxs("div",{className:"sys-broker-source-note sys-broker-source-note--warning",role:"status","aria-label":c.source.detail,title:c.source.detail,children:[e.jsx("span",{className:"sys-broker-source-dot","aria-hidden":"true"}),e.jsx("strong",{children:c.source.brokerReachable?"Dispatch history is loading":"Dispatch may be out of date"}),e.jsx("span",{children:c.source.brokerReachable?"Broker online; showing saved dispatch history while live messages load.":"Live broker unavailable; showing saved dispatch history."})]}),F&&!c&&e.jsx("div",{className:"sys-broker-empty-wrap",children:e.jsx(Ee,{className:"sys-state-card-centered",icon:e.jsx(ke,{className:"sys-broker-source-spinner",size:24,"aria-hidden":"true"}),title:"Loading dispatch",body:"Reading the dispatch database snapshot."})}),!F&&!c&&!O&&e.jsx("div",{className:"sys-broker-empty-wrap",children:e.jsx(Ee,{className:"sys-state-card-centered",title:"No dispatch data",body:"No dispatch rows are available yet."})}),c&&e.jsxs(e.Fragment,{children:[e.jsx(yr,{attempts:R,agents:f,selectedAttemptId:a?C?.id??null:u?.id??(o.view==="broker"?o.attemptId??null:null),onInspect:V,getRowFocusProps:W}),R.length>0&&ue&&e.jsx("div",{className:"sys-ledger-footer",children:e.jsx("button",{type:"button",className:"s-btn",disabled:L,onClick:()=>{de()},children:L?"Loading older...":"Load older"})})]})]}),fe&&e.jsx("div",{className:"s-broker-embed-detail",children:e.jsx(us,{attempt:fe,navigate:s,onClose:I})})]})})}function yr({attempts:s,agents:a,selectedAttemptId:n,onInspect:o,getRowFocusProps:f}){if(s.length===0)return e.jsx("div",{className:"sys-broker-empty-wrap",children:e.jsx(Ee,{className:"sys-state-card-centered",title:"No dispatch rows",body:"No dispatch rows are available yet."})});const u=s.reduce((b,p,j)=>{const c=je(p.ts),w=b[b.length-1];return w?.key===c?w.attempts.push({attempt:p,index:j}):b.push({key:c,label:mr(p.ts),attempts:[{attempt:p,index:j}]}),b},[]);return e.jsxs("div",{className:"sys-broker-wire","aria-label":"Dispatch ledger",children:[e.jsxs("div",{className:"sys-broker-wire-head","aria-hidden":"true",children:[e.jsx("span",{className:"sys-broker-col sys-broker-col--route",children:"Route"}),e.jsx("span",{className:"sys-broker-col sys-broker-col--msg",children:"Message"}),e.jsx("span",{className:"sys-broker-col sys-broker-col--time",children:"Time"})]}),u.map(b=>e.jsxs("section",{className:"sys-broker-day","aria-labelledby":`dispatch-day-${b.key}`,children:[e.jsxs("header",{className:"sys-broker-day-head",children:[e.jsx("h2",{id:`dispatch-day-${b.key}`,children:b.label}),e.jsxs("span",{children:[b.attempts.length," ",b.attempts.length===1?"dispatch":"dispatches"]})]}),e.jsx("div",{className:"sys-broker-wire-body",role:"list",children:b.attempts.map(({attempt:p,index:j})=>{const c=ze(p.kind,p.status),w=le(p),A=!w&&(c==="working"||c==="warning"),F=os(p),y=Le(p),h=w?F:A?y:null,N=()=>{o(p),window.dispatchEvent(new CustomEvent("scout:set-inspector-width",{detail:{width:520}}))};return e.jsxs("div",{role:"listitem",className:`sys-broker-wire-row${w?" sys-broker-wire-row--failure":A?" sys-broker-wire-row--pending":""}${n===p.id?" sys-broker-wire-row--selected":""}`,"aria-label":`${y}. Inspect ${p.detail}`,onClick:N,...f(j),children:[e.jsx("div",{className:"sys-broker-cell sys-broker-col--route",children:e.jsx(fr,{attempt:p,agents:a})}),e.jsxs("div",{className:"sys-broker-cell sys-broker-col--msg",children:[e.jsx("span",{className:"sys-broker-msg",title:p.detail,children:p.detail}),h&&e.jsx("span",{className:`sys-broker-msg-error sys-broker-msg-error--${w?"danger":"warning"}`,title:h,children:h})]}),e.jsx("div",{className:"sys-broker-cell sys-broker-col--time",children:e.jsx("time",{className:"sys-broker-time-abs",title:`${Fe(p.ts)} · ${ts(p.ts)}`,children:dr(p.ts)})})]},p.id)})})]},b.key))]})}function gr(s){const a=ds(s);return[{label:"Kind",value:cr(s.kind)},{label:"Time",value:ts(s.ts)},{label:"Actor",value:s.actorName},{label:"Target",value:s.target},{label:"Route",value:s.route},{label:"Conversation",value:s.conversationId},{label:"Reference",value:a},{label:"Message",value:s.messageId===a?null:s.messageId},{label:"Delivery",value:s.deliveryId===a?null:s.deliveryId},{label:"Invocation",value:s.invocationId===a?null:s.invocationId}].filter(n=>!!n.value)}function J({value:s,subject:a,className:n}){const[o,f]=t.useState("idle"),u=t.useRef(null);t.useEffect(()=>{f("idle")},[s]),t.useEffect(()=>()=>{u.current&&clearTimeout(u.current)},[]);const b=t.useCallback(async()=>{const c=await Rs(s);u.current&&clearTimeout(u.current),f(c?"copied":"failed"),u.current=setTimeout(()=>{f("idle"),u.current=null},1500)},[s]),p=o==="copied",j=o==="failed";return e.jsx("button",{type:"button",className:`sys-copy-btn${n?` ${n}`:""}${p?" sys-copy-btn--copied":""}${j?" sys-copy-btn--failed":""}`,onClick:()=>{b()},title:p?`Copied ${a}`:j?"Copy failed":`Copy ${a}`,"aria-label":p?`Copied ${a}`:j?`Copy ${a} failed`:`Copy ${a}`,children:p?e.jsx(Qs,{size:14,"aria-hidden":"true"}):e.jsx(Gs,{size:14,"aria-hidden":"true"})})}function xr(s){const a=s.trim();if(a.startsWith("{")||a.startsWith("["))try{return{code:JSON.stringify(JSON.parse(a),null,2),path:"payload.json",language:"JSON"}}catch{}return{code:s,path:"payload.md",language:"Text · Markdown"}}function jr({payload:s}){const a=t.useMemo(()=>xr(s),[s]),[n,o]=t.useState(!1),f=t.useRef(null),u=a.code.split(`
2
+ `).length;t.useEffect(()=>{const p=f.current;!p||!n||p.open||p.showModal()},[n]),t.useEffect(()=>{o(!1)},[s]);const b=e.jsx("div",{className:"sys-broker-payload-code","data-language":a.path==="payload.json"?"json":"markdown",role:"region","aria-label":`Dispatch payload, ${a.language}`,tabIndex:0,children:e.jsx(zs,{code:a.code,path:a.path})});return e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"sys-broker-payload-head",children:[e.jsx("span",{className:"sys-detail-label",children:"Payload"}),e.jsxs("span",{className:"sys-broker-payload-meta",children:[a.language," · ",u," ",u===1?"line":"lines"]}),e.jsx(J,{value:s,subject:"payload"}),e.jsx("button",{type:"button",className:"sys-copy-btn sys-broker-payload-expand",onClick:()=>o(!0),title:"Expand payload","aria-label":"Expand payload",children:e.jsx(Ws,{size:14,"aria-hidden":"true"})})]}),e.jsx("div",{className:"sys-broker-payload-resizer",children:b}),n&&xs.createPortal(e.jsxs("dialog",{ref:f,className:"sys-broker-payload-dialog","aria-label":"Expanded dispatch payload",onCancel:p=>{p.preventDefault(),o(!1)},onClose:()=>o(!1),children:[e.jsxs("header",{className:"sys-broker-payload-dialog-head",children:[e.jsxs("div",{children:[e.jsx("span",{className:"sys-detail-label",children:"Dispatch payload"}),e.jsxs("span",{className:"sys-broker-payload-meta",children:[a.language," · ",u," ",u===1?"line":"lines"]})]}),e.jsx(J,{value:s,subject:"payload"}),e.jsx("button",{type:"button",className:"sys-copy-btn",onClick:()=>o(!1),title:"Return payload to inspector","aria-label":"Return payload to inspector",children:e.jsx(Ys,{size:14,"aria-hidden":"true"})})]}),e.jsx("div",{className:"sys-broker-payload-dialog-body",children:b})]}),document.body)]})}function kr({attempt:s}){const a=Ms(s);return e.jsxs("div",{className:"sys-broker-route-failure",role:"status",children:[e.jsx("span",{className:"sys-broker-route-failure-mark","aria-hidden":"true",children:e.jsx(Me,{size:14})}),e.jsxs("div",{children:[e.jsx("span",{className:"sys-detail-label",children:"Routing stopped"}),e.jsx("strong",{children:a}),e.jsx("p",{children:s.detail})]}),e.jsx(J,{value:s.detail,subject:"failure detail"})]})}function us({attempt:s,navigate:a,onClose:n}){const{route:o,agents:f,scoutbotAgentId:u}=ns(),b=gr(s),p=Ds(s.metadata),j=le(s),c=s.kind==="failed_query",w=os(s),A=ze(s.kind,s.status),F=Re(s,"sentAt","createdAt")??ee(s.ts),y=Re(s,"deliveredAt","completedAt")??ee(s.ts),h=ds(s),[N,L]=t.useState("idle"),[ce,O]=t.useState(null),[T,H]=t.useState(null),[M,q]=t.useState(!1),[Q,de]=t.useState(!1),[ne,v]=t.useState(""),[R,ue]=t.useState(""),[_,D]=t.useState("idle"),[he,G]=t.useState(null),[C,U]=t.useState(""),[$,V]=t.useState(""),[I,se]=t.useState(""),[W,Y]=t.useState(""),[P,oe]=t.useState("medium"),[ve,fe]=t.useState(null),[l,d]=t.useState([]),[g,S]=t.useState("idle"),[K,E]=t.useState(null),re=z(s,"harness"),we=z(s,"model"),Ne=z(s,"reasoningEffort","effort"),qe=t.useRef(null),_e=t.useRef(null),me=t.useMemo(()=>Es(s),[s]),k=t.useMemo(()=>f.filter(r=>!r.retiredFromFleet&&!r.staleLocalRegistration).slice().sort((r,i)=>r.id===u?-1:i.id===u?1:(i.updatedAt??0)-(r.updatedAt??0)||r.name.localeCompare(i.name)),[f,u]),pe=t.useMemo(()=>Fs(s,k)?.id??"",[s,k]),be=k.find(r=>r.id!==u)?.id??k[0]?.id??"",Se=k[0]?.id??"",ae=k.find(r=>r.id===be)??null,hs=t.useMemo(()=>{const r=new Map;for(const i of k){const m=i.projectRoot?.trim()||i.cwd?.trim();if(!m)continue;const x=m.split("/").filter(Boolean).at(-1)??m;r.set(m,i.project?.trim()||x)}return[...r.entries()].map(([i,m])=>({path:i,label:m}))},[k]),Ue=t.useRef({originalTargetAgentId:pe,firstRoutableAgentId:Se,defaultForwardAgentId:be,defaultForwardAgent:ae,effort:"medium"});Ue.current={originalTargetAgentId:pe,firstRoutableAgentId:Se,defaultForwardAgentId:be,defaultForwardAgent:ae,effort:z(s,"reasoningEffort","effort")||"medium"};const ye=t.useRef(!1);t.useEffect(()=>{const r=Ue.current;ye.current=!1,L("idle"),O(null),H(null),q(!1),de(!1),v(""),ue(r.originalTargetAgentId||r.firstRoutableAgentId),D("idle"),G(null),U(r.defaultForwardAgentId),V(r.defaultForwardAgent?.projectRoot?.trim()||r.defaultForwardAgent?.cwd?.trim()||""),se(r.defaultForwardAgent?.harness?.trim()||""),Y(r.defaultForwardAgent?.model?.trim()||""),oe(r.effort),d([]),S("idle"),E(null)},[s.id]),t.useEffect(()=>{ye.current||(ue(r=>r||pe||Se),U(r=>r||be),V(r=>r||ae?.projectRoot?.trim()||ae?.cwd?.trim()||""),se(r=>r||ae?.harness?.trim()||""),Y(r=>r||ae?.model?.trim()||""))},[ae,be,Se,pe]),t.useEffect(()=>{const r=new URLSearchParams({scope:"global+project"});$&&r.set("projectRoot",$);let i=!1;return ie(`/api/runner/options?${r.toString()}`).then(m=>{!i&&m.schemaVersion==="openscout.runtime-capabilities.v1"&&fe(m)}).catch(()=>{}),()=>{i=!0}},[$]);const fs=t.useCallback(()=>{q(!0),window.requestAnimationFrame(()=>qe.current?.focus())},[]),Ke=t.useCallback(()=>{q(!1),de(!1),v(""),d([]),S("idle"),E(null)},[]),ms=t.useCallback(async()=>{const r=k.find(i=>i.id===R);if(!(!r||_==="sending")){D("sending"),G(null);try{const i=await ie("/api/ask",{method:"POST",body:JSON.stringify({body:s.detail,targetAgentId:r.id,targetLabel:r.name,...re||we||Ne?{execution:{...re?{harness:re}:{},...we?{model:we}:{},...Ne?{reasoningEffort:Ne}:{},session:"new"}}:{},metadata:{source:"scout-dispatch-redispatch",originalDispatchId:s.id,...s.messageId?{originalMessageId:s.messageId}:{},...s.conversationId?{originalConversationId:s.conversationId}:{}}})}),m=i.flightId??i.flight?.id;D("sent"),G(`New dispatch sent to ${r.name}${m?` · ${m}`:""}`)}catch(i){D("failed"),G(`Retry failed. ${i instanceof Error?i.message:String(i)}`)}}},[s,R,_,Ne,re,we,k]),Je=t.useCallback(async()=>{const r=ne.trim(),i=k.find(m=>m.id===C);if(!(!r||!i||g==="sending")){S("sending"),E(l.length>0?`Uploading ${l.length} ${l.length===1?"attachment":"attachments"}…`:null);try{const m=l.length>0?await ks(l):[],x=await ie("/api/ask",{method:"POST",body:JSON.stringify({body:`${r}
3
+
4
+ Attached dispatch context:
5
+ ${me}`,targetAgentId:i.id,targetLabel:i.name,...m.length>0?{attachments:m}:{},execution:{...I?{harness:I}:{},...W?{model:W}:{},...P?{reasoningEffort:P}:{}},metadata:{source:"scout-dispatch-forward",originalDispatchId:s.id,...$?{targetProjectPath:$}:{},...s.messageId?{originalMessageId:s.messageId}:{},...s.conversationId?{originalConversationId:s.conversationId}:{}}})}),X=x.flightId??x.flight?.id;S("sent"),E(`Request sent to ${i.name}${X?` · ${X}`:""}`),v(""),d([])}catch(m){S("failed"),E(`Request wasn't sent. ${m instanceof Error?m.message:String(m)}`)}}},[s,me,C,P,l,I,W,$,g,ne,k]),ps=t.useCallback(r=>{const i=r.filter(vs),m=r.length-i.length;i.length>0&&(d(x=>[...x,...i]),S("idle"),E(null)),m>0&&(S("failed"),E("Attach markdown, code, an image, or a video clip."))},[]),B=k.find(r=>r.id===R)??null,te=k.find(r=>r.id===C)??null,ge=k.filter(r=>$?(r.projectRoot?.trim()||r.cwd?.trim())===$:!0),He=ve??Ns,$e=t.useMemo(()=>{const r=ws(He),i=[W,te?.harness===I?te.model:null,...ge.filter(x=>x.harness===I).map(x=>x.model)].map(x=>x?.trim()).filter(x=>!!x);let m=r.harnesses;return m.some(x=>x.value===I)||(m=[{value:I,label:I||"default",models:[]},...m]),m=m.map(x=>{if(x.value!==I)return x;const X=x.models.some(Z=>Z.value==="")?x.models:[{value:"",label:"Default",note:"harness picks"},...x.models],gs=new Set(X.map(Z=>Z.value)),Ve=i.filter(Z=>!gs.has(Z)).map(Z=>({value:Z,label:Z,note:"observed"}));return Ve.length===0&&X===x.models?x:{...x,models:[...X,...Ve]}}),{...r,harnesses:m}},[He,te,I,W,ge]);t.useEffect(()=>{const r=Ss($e,I);!r||r.some(i=>i.value===P)||oe(r.find(i=>i.value==="medium")?.value??r[0]?.value??"")},[$e,I,P]);const Qe=j?"Investigate why this dispatch failed. Say what stopped it, whether anything was received, and propose a recovery: who should take it and what should happen next.":"Summarize this dispatch and what happened next. Flag anything that needs the operator.",bs=t.useCallback(async()=>{if(N==="sending")return;if(T){We(a,{view:"conversation",conversationId:T},{returnTo:o});return}const r=k.find(i=>i.id===u);if(!r){L("failed"),O("Scout isn't reachable right now.");return}L("sending"),O(null);try{const i=await ie("/api/ask",{method:"POST",body:JSON.stringify({body:`${Qe}
6
+
7
+ Attached dispatch context:
8
+ ${me}`,targetAgentId:r.id,targetLabel:"Scout",metadata:{source:"scout-dispatch-investigate",originalDispatchId:s.id,...s.messageId?{originalMessageId:s.messageId}:{},...s.conversationId?{originalConversationId:s.conversationId}:{}}})}),m=i.flightId??i.flight?.id;L("sent"),H(i.conversationId??null),O(i.conversationId?"Investigation started. Open it to follow along.":`Investigation sent to Scout${m?` · ${m}`:""}.`)}catch(i){L("failed"),O(`Investigation wasn't sent. ${i instanceof Error?i.message:String(i)}`)}},[s,me,T,Qe,N,a,k,o,u]),ys=t.useMemo(()=>{const r={state:Le(s),reference:h,channel:Pe(s.route),latency:ss(s),sent:Ae(F),[j?"failed":"delivered"]:Ae(y)};for(const i of b)r[i.label.toLowerCase()]=i.value;return JSON.stringify(r,null,2)},[s,y,j,h,b,F]),Ge=e.jsxs("div",{className:"sys-broker-action-row",children:[e.jsxs("div",{className:"sys-broker-action-line",children:[e.jsx("span",{className:"sys-broker-action-label",id:"dispatch-redispatch-title",children:"Retry"}),e.jsxs("div",{className:"sys-broker-redispatch-controls",children:[e.jsx("select",{"aria-label":"Retry destination",value:R,disabled:_==="sending"||k.length===0,onChange:r=>{ue(r.target.value),D("idle"),G(null)},children:k.length===0?e.jsx("option",{value:"",children:"No agents available"}):e.jsxs(e.Fragment,{children:[!R&&e.jsx("option",{value:"",children:"Original destination unavailable"}),k.map(r=>e.jsxs("option",{value:r.id,children:[r.id===u?"Scout":r.name,r.project?` · ${r.project}`:""]},r.id))]})}),e.jsxs("button",{type:"button",className:"sys-broker-redispatch-send",disabled:!B||_==="sending",onClick:()=>{ms()},children:[_==="sending"?e.jsx(ke,{size:13,className:"sys-broker-action-spinner","aria-hidden":"true"}):e.jsx(_s,{size:13,"aria-hidden":"true"}),_==="sending"?"Retrying…":"Retry dispatch"]})]})]}),B&&e.jsxs("div",{className:"sys-broker-action-target-meta",children:[B.harness&&e.jsx("span",{children:B.harness}),B.model&&e.jsx("span",{children:B.model}),(B.cwd??B.projectRoot)&&e.jsx("code",{children:B.cwd??B.projectRoot})]}),he&&e.jsx("div",{className:`sys-broker-action-status sys-broker-action-status--${_}`,role:"status",children:he})]});return e.jsxs("aside",{className:"sys-panel sys-broker-inspector","aria-label":"Dispatch route inspector",children:[e.jsx("header",{className:"sys-broker-inspector-head",children:e.jsxs("div",{className:"sys-broker-inspector-status",children:[e.jsx("span",{className:`sys-broker-dot sys-broker-dot--${A}`,"aria-hidden":"true"}),e.jsx("strong",{className:`sys-broker-state sys-broker-state--${A}`,children:Le(s)}),e.jsx("code",{title:h,children:h}),e.jsx(J,{value:me,subject:"dispatch context",className:"sys-broker-inspector-copy"}),e.jsx("button",{type:"button",className:"sys-copy-btn sys-broker-inspector-close",onClick:n,title:"Close inspector","aria-label":"Close inspector",children:e.jsx(Me,{size:14,"aria-hidden":"true"})})]})}),e.jsxs("div",{className:"sys-broker-inspector-body",children:[e.jsxs("section",{className:"sys-broker-route-stack","aria-label":"Dispatch route",children:[e.jsxs("div",{className:"sys-broker-route-party",children:[e.jsx("span",{className:"sys-broker-avatar sys-broker-route-avatar","aria-hidden":"true",children:Ie(s.actorName)}),e.jsxs("div",{className:"sys-broker-route-party-copy",children:[e.jsxs("span",{className:"sys-detail-label",children:["From · ",Be(s,"from")]}),e.jsx("strong",{children:s.actorName??"Unknown sender"})]}),s.actorName&&e.jsx(J,{value:s.actorName,subject:"sender"})]}),e.jsx(Zs,{className:"sys-broker-route-down",size:17,"aria-hidden":"true"}),e.jsxs("div",{className:"sys-broker-route-party",children:[e.jsx("span",{className:"sys-broker-route-target-icon","aria-hidden":"true",children:e.jsx(Oe,{route:s.route})}),e.jsxs("div",{className:"sys-broker-route-party-copy",children:[e.jsxs("span",{className:"sys-detail-label",children:["To · ",Be(s,"to")]}),e.jsx("code",{title:s.target??"No target",children:s.target??"No target"})]}),s.target&&e.jsx(J,{value:s.target,subject:"target"}),s.conversationId&&e.jsxs("button",{type:"button",className:"sys-broker-route-button",onClick:()=>We(a,{view:"conversation",conversationId:s.conversationId},{returnTo:o}),children:[e.jsx(Xe,{size:11,"aria-hidden":"true"}),"Route"]})]})]}),e.jsxs("section",{className:"sys-broker-payload",children:[c?e.jsx(kr,{attempt:s}):e.jsx(jr,{payload:s.detail}),j&&!c&&w&&e.jsxs("div",{className:"sys-broker-inspector-error",role:"status",children:[e.jsx("span",{className:"sys-broker-inspector-error-label",children:"Error"}),e.jsx("p",{children:w})]})]}),e.jsx(Ls,{attempt:s,targetAgentId:pe||null,navigate:a,returnTo:o}),e.jsxs("section",{className:"sys-broker-actions","aria-label":"Dispatch actions",children:[j&&Ge,e.jsxs("div",{className:"sys-broker-intents",children:[e.jsxs("button",{type:"button",className:`sys-broker-intent${j?"":" sys-broker-intent--primary"}`,disabled:N==="sending",onClick:()=>{bs()},children:[N==="sending"?e.jsx(ke,{size:13,className:"sys-broker-action-spinner","aria-hidden":"true"}):T?e.jsx(Xe,{size:13,"aria-hidden":"true"}):e.jsx(ls,{size:13,"aria-hidden":"true"}),N==="sending"?"Asking Scout…":T?"Open investigation":"Investigate with Scout"]}),e.jsxs("button",{type:"button",className:"sys-broker-intent","aria-expanded":M,onClick:()=>M?Ke():fs(),children:[e.jsx(Te,{size:13,"aria-hidden":"true"}),"Forward to agent…"]})]}),ce&&e.jsx("div",{className:`sys-broker-action-status sys-broker-action-status--${N}`,role:"status",children:ce}),M&&e.jsxs("div",{className:"sys-broker-forward-draft",children:[e.jsxs("div",{className:"sys-broker-forward-draft-head",children:[e.jsx("span",{className:"sys-broker-action-label",children:"Forward to agent"}),e.jsx("button",{type:"button",className:"sys-broker-forward-discard",onClick:Ke,children:"Discard"})]}),e.jsxs("form",{className:"sys-broker-message-composer",onSubmit:r=>{r.preventDefault(),Je()},children:[e.jsx("textarea",{ref:qe,id:"dispatch-message-input","aria-label":"Forward message",value:ne,rows:3,placeholder:`What should ${te?.id===u?"Scout":te?.name??"this agent"} investigate or do?`,disabled:g==="sending",onChange:r=>{v(r.target.value),g!=="idle"&&(S("idle"),E(null))},onKeyDown:r=>{r.key==="Enter"&&(r.metaKey||r.ctrlKey)&&(r.preventDefault(),Je())}}),l.length>0&&e.jsx("div",{className:"sys-broker-composer-attachments","aria-label":"Attachments",children:l.map((r,i)=>e.jsxs("span",{children:[e.jsx(Us,{size:10,"aria-hidden":"true"}),e.jsx("span",{title:r.name,children:r.name}),e.jsx("button",{type:"button",onClick:()=>d(m=>m.filter((x,X)=>X!==i)),"aria-label":`Remove ${r.name}`,children:e.jsx(Me,{size:10,"aria-hidden":"true"})})]},`${r.name}:${r.size}:${i}`))}),e.jsxs("footer",{children:[e.jsxs("div",{className:"sys-broker-composer-left",children:[e.jsx("input",{ref:_e,type:"file",multiple:!0,hidden:!0,disabled:g==="sending",onChange:r=>{ps([...r.target.files??[]]),r.target.value=""}}),e.jsx("button",{type:"button",className:"sys-broker-composer-attach",disabled:g==="sending",onClick:()=>_e.current?.click(),"aria-label":"Attach files",title:"Attach files",children:e.jsx(Js,{size:16,"aria-hidden":"true"})}),e.jsx("span",{className:"sys-broker-message-attachment",title:h,children:"Context + payload attached"})]}),e.jsxs("div",{className:"sys-broker-composer-targets",children:[e.jsx("span",{className:"sys-broker-composer-route-label",children:"To"}),e.jsxs("label",{title:"Forward target",children:[e.jsx("span",{children:"Agent"}),e.jsx("select",{"aria-label":"Forward target",value:C,disabled:g==="sending"||ge.length===0,onChange:r=>{const i=k.find(m=>m.id===r.target.value)??null;ye.current=!0,U(r.target.value),i&&(V(i.projectRoot?.trim()||i.cwd?.trim()||""),se(i.harness?.trim()||""),Y(i.model?.trim()||"")),S("idle"),E(null)},children:ge.length===0?e.jsx("option",{value:"",children:"No agents"}):ge.map(r=>e.jsx("option",{value:r.id,children:r.id===u?"Scout":r.name},r.id))})]}),e.jsxs("button",{type:"button",className:"sys-broker-forward-adjust-toggle","aria-expanded":Q,onClick:()=>de(r=>!r),children:["Adjust",e.jsx(Ze,{size:11,"aria-hidden":"true"})]}),e.jsx(js,{className:"sys-broker-composer-mic",disabled:g==="sending",onAppend:r=>v(i=>i.trim()?`${i.trimEnd()} ${r}`:r),onError:r=>{S("failed"),E(r)}})]}),e.jsx("button",{type:"submit",className:"sys-broker-composer-send",disabled:!ne.trim()||!te||g==="sending","aria-label":`Ask ${te?.name??"recipient"} about this dispatch`,children:g==="sending"?e.jsx(ke,{size:14,className:"sys-broker-action-spinner","aria-hidden":"true"}):e.jsx(Hs,{size:14,"aria-hidden":"true"})})]}),Q&&e.jsxs("div",{className:"sys-broker-composer-targets sys-broker-forward-adjust",children:[e.jsxs("label",{title:"Project target",children:[e.jsx("span",{children:"Project"}),e.jsxs("select",{"aria-label":"Project target",value:$,disabled:g==="sending",onChange:r=>{const i=r.target.value,m=k.find(x=>!i||(x.projectRoot?.trim()||x.cwd?.trim())===i)??null;ye.current=!0,V(i),m&&(U(m.id),se(m.harness?.trim()||""),Y(m.model?.trim()||""))},children:[e.jsx("option",{value:"",children:"Any project"}),hs.map(r=>e.jsx("option",{value:r.path,children:r.label},r.path))]})]}),e.jsx(As,{catalog:$e,value:{harness:I,model:W,effort:P},onChange:r=>{ye.current=!0,se(r.harness),Y(r.model),oe(r.effort)},disabled:g==="sending"})]})]}),K&&e.jsx("div",{className:`sys-broker-action-status sys-broker-action-status--${g}`,role:"status",children:K})]})]}),e.jsxs("details",{className:"sys-broker-technical",children:[e.jsxs("summary",{children:[e.jsx("span",{children:"Technical details"}),e.jsx(Ze,{size:13,"aria-hidden":"true"})]}),e.jsxs("dl",{className:"sys-broker-delivery-grid",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Channel"}),e.jsx("dd",{children:Pe(s.route)})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Latency"}),e.jsx("dd",{className:"sys-broker-delivery-accent",children:ss(s)})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Sent"}),e.jsx("dd",{children:Ae(F)})]}),e.jsxs("div",{children:[e.jsx("dt",{children:j?"Failed":"Delivered"}),e.jsx("dd",{children:Ae(y)})]})]}),e.jsxs("div",{className:"sys-broker-record-head",children:[e.jsx("span",{className:"sys-detail-label",children:"Record"}),e.jsx(J,{value:ys,subject:"record as JSON",className:"sys-broker-metadata-copy"})]}),e.jsx("div",{className:"sys-broker-inspector-rows",children:b.map(r=>e.jsxs("div",{className:"sys-broker-inspector-row",children:[e.jsx("span",{className:"sys-detail-label",children:r.label}),e.jsx("code",{className:"sys-detail-value",children:r.value}),e.jsx(J,{value:r.value,subject:r.label.toLowerCase()})]},r.label))}),e.jsxs("div",{className:"sys-broker-metadata",children:[e.jsxs("div",{className:"sys-broker-metadata-head",children:[e.jsx("span",{className:"sys-detail-label",children:"Metadata"}),e.jsx(J,{value:p,subject:"metadata",className:"sys-broker-metadata-copy"})]}),e.jsx(Ts,{metadata:s.metadata,rawJson:p})]}),!j&&Ge]})]})]})}const vr=Os({id:"dispatch",label:"Dispatch",route:{view:"broker"},webPath:"/dispatch",screen:"BrokerScreen",embed:{path:"/embed/dispatch",profile:"macos.dispatch",rootClassName:"s-broker-embed",chrome:{showSecondaryNav:!1,showPageStatusBar:!1},ownsInternalRoutes:!0,resolveEmbedProps:s=>{const a=s.get("attempt")?.trim();return a?{initialAttemptId:a}:{}},hosts:{macos:!0}}}),oa=Object.freeze(Object.defineProperty({__proto__:null,BrokerAttemptInspector:us,BrokerScreen:br,scoutSurface:vr},Symbol.toStringTag,{value:"Module"}));export{us as B,br as a,De as b,oa as c};
@@ -1 +1 @@
1
- import{r as n,j as i}from"./index-DReVb7jZ.js";const _=({panOffset:h,scale:a,onPan:R,onPanStart:E,onPanEnd:u,isPanLocked:d=!1,onClick:k,showGuides:g=!1,onGuidesChange:$,gridOpacity:C=1})=>{const[B,X]=n.useState(g),[G,K]=n.useState(!1),o=n.useRef(!1),v=n.useRef({x:0,y:0}),r=n.useRef({active:!1,startX:0,startY:0}),j=n.useRef(null),x=n.useRef(null),y=n.useRef(null),A=4,H=n.useRef({x:0,y:0}),w=n.useRef(0),b=n.useRef(!1);n.useEffect(()=>{X(g)},[g]);const Y=n.useCallback(e=>{const s=e;return s?s.tagName==="INPUT"||s.tagName==="TEXTAREA"||s.isContentEditable:!1},[]),z=n.useCallback(e=>{const s=e;return s?!!s.closest('button, [role="button"], a, input, textarea, select, [data-interactive="true"]'):!1},[]),c=n.useCallback(e=>{o.current=e,K(e)},[]);n.useEffect(()=>{const e=t=>{if(w.current=t.buttons,r.current.active&&(t.buttons&1)!==1&&(r.current.active=!1),o.current&&(t.buttons&1)!==1){c(!1),r.current.active=!1,u?.(),document.body.style.cursor="";return}if(d&&o.current){c(!1),r.current.active=!1,u?.(),document.body.style.cursor="";return}const l=j.current?.getBoundingClientRect(),f=l?t.clientX-l.left:t.clientX,V=l?t.clientY-l.top:t.clientY;if(H.current={x:f,y:V},x.current&&(x.current.style.left=`${f}px`),y.current&&(y.current.style.top=`${V}px`),r.current.active&&!o.current){const P=t.clientX-r.current.startX,Q=t.clientY-r.current.startY;Math.hypot(P,Q)>=A&&(r.current.active=!1,c(!0),b.current=!0,E?.(),v.current={x:t.clientX,y:t.clientY},document.body.style.cursor="grabbing")}o.current&&(R({x:(t.clientX-v.current.x)/a,y:(t.clientY-v.current.y)/a}),v.current={x:t.clientX,y:t.clientY})},s=t=>{w.current=t.buttons,r.current.active=!1,o.current&&(c(!1),u?.(),document.body.style.cursor="")},I=t=>{(t.metaKey||t.ctrlKey)&&t.key==="\\"&&(t.preventDefault(),X(l=>{const f=!l;return $?.(f),f}))},m=()=>{r.current.active=!1,s(new MouseEvent("mouseup"))};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",s),window.addEventListener("keydown",I),window.addEventListener("blur",m),document.addEventListener("visibilitychange",m),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",s),window.removeEventListener("keydown",I),window.removeEventListener("blur",m),document.removeEventListener("visibilitychange",m)}},[R,u,E,a,Y,z,d,c,$]),n.useEffect(()=>{!d||!o.current||(c(!1),u?.(),document.body.style.cursor="")},[d,u,c]);const U=e=>{b.current=!1,!(d||e.button!==0)&&(Y(e.target)||z(e.target)||(w.current=e.buttons,r.current={active:!0,startX:e.clientX,startY:e.clientY},e.preventDefault()))},F=e=>{!b.current&&k&&k(e),b.current=!1},[M,W]=n.useState({w:0,h:0});n.useEffect(()=>{const e=()=>W({w:window.innerWidth,h:window.innerHeight});return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const S=Math.max(.4,Math.min(2,a)),p=100*S,L=20*S,q="var(--hud-canvas-dot-minor)",J="var(--hud-canvas-dot-major)",N="color-mix(in srgb, oklch(var(--accent)) 18%, transparent)",T=(M.w/2+h.x*a)%p,D=(M.h/2+h.y*a)%p;return i.jsxs("div",{ref:j,className:`absolute inset-0 z-0 overflow-hidden bg-background ${G?"cursor-grabbing":"cursor-grab"}`,onMouseDown:U,onClick:F,children:[i.jsx("div",{className:"absolute pointer-events-none",style:{inset:"-100px",opacity:.8*C,transition:"opacity 1s ease",backgroundImage:`radial-gradient(circle, ${q} 1px, transparent 1px)`,backgroundSize:`${L}px ${L}px`,backgroundPosition:`${T+100}px ${D+100}px`}}),i.jsx("div",{className:"absolute pointer-events-none",style:{inset:"-100px",opacity:.45*C,transition:"opacity 1s ease",backgroundImage:`radial-gradient(circle, ${J} 1.5px, transparent 1.5px)`,backgroundSize:`${p}px ${p}px`,backgroundPosition:`${T+100}px ${D+100}px`}}),B&&i.jsxs(i.Fragment,{children:[i.jsx("div",{ref:x,className:"absolute top-0 bottom-0 w-px pointer-events-none",style:{left:0,backgroundColor:N}}),i.jsx("div",{ref:y,className:"absolute left-0 right-0 h-px pointer-events-none",style:{top:0,backgroundColor:N}})]})]})};export{_ as C};
1
+ import{r as n,j as i}from"./index-EsrkGBcv.js";const _=({panOffset:h,scale:a,onPan:R,onPanStart:E,onPanEnd:u,isPanLocked:d=!1,onClick:k,showGuides:g=!1,onGuidesChange:$,gridOpacity:C=1})=>{const[B,X]=n.useState(g),[G,K]=n.useState(!1),o=n.useRef(!1),v=n.useRef({x:0,y:0}),r=n.useRef({active:!1,startX:0,startY:0}),j=n.useRef(null),x=n.useRef(null),y=n.useRef(null),A=4,H=n.useRef({x:0,y:0}),w=n.useRef(0),b=n.useRef(!1);n.useEffect(()=>{X(g)},[g]);const Y=n.useCallback(e=>{const s=e;return s?s.tagName==="INPUT"||s.tagName==="TEXTAREA"||s.isContentEditable:!1},[]),z=n.useCallback(e=>{const s=e;return s?!!s.closest('button, [role="button"], a, input, textarea, select, [data-interactive="true"]'):!1},[]),c=n.useCallback(e=>{o.current=e,K(e)},[]);n.useEffect(()=>{const e=t=>{if(w.current=t.buttons,r.current.active&&(t.buttons&1)!==1&&(r.current.active=!1),o.current&&(t.buttons&1)!==1){c(!1),r.current.active=!1,u?.(),document.body.style.cursor="";return}if(d&&o.current){c(!1),r.current.active=!1,u?.(),document.body.style.cursor="";return}const l=j.current?.getBoundingClientRect(),f=l?t.clientX-l.left:t.clientX,V=l?t.clientY-l.top:t.clientY;if(H.current={x:f,y:V},x.current&&(x.current.style.left=`${f}px`),y.current&&(y.current.style.top=`${V}px`),r.current.active&&!o.current){const P=t.clientX-r.current.startX,Q=t.clientY-r.current.startY;Math.hypot(P,Q)>=A&&(r.current.active=!1,c(!0),b.current=!0,E?.(),v.current={x:t.clientX,y:t.clientY},document.body.style.cursor="grabbing")}o.current&&(R({x:(t.clientX-v.current.x)/a,y:(t.clientY-v.current.y)/a}),v.current={x:t.clientX,y:t.clientY})},s=t=>{w.current=t.buttons,r.current.active=!1,o.current&&(c(!1),u?.(),document.body.style.cursor="")},I=t=>{(t.metaKey||t.ctrlKey)&&t.key==="\\"&&(t.preventDefault(),X(l=>{const f=!l;return $?.(f),f}))},m=()=>{r.current.active=!1,s(new MouseEvent("mouseup"))};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",s),window.addEventListener("keydown",I),window.addEventListener("blur",m),document.addEventListener("visibilitychange",m),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",s),window.removeEventListener("keydown",I),window.removeEventListener("blur",m),document.removeEventListener("visibilitychange",m)}},[R,u,E,a,Y,z,d,c,$]),n.useEffect(()=>{!d||!o.current||(c(!1),u?.(),document.body.style.cursor="")},[d,u,c]);const U=e=>{b.current=!1,!(d||e.button!==0)&&(Y(e.target)||z(e.target)||(w.current=e.buttons,r.current={active:!0,startX:e.clientX,startY:e.clientY},e.preventDefault()))},F=e=>{!b.current&&k&&k(e),b.current=!1},[M,W]=n.useState({w:0,h:0});n.useEffect(()=>{const e=()=>W({w:window.innerWidth,h:window.innerHeight});return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);const S=Math.max(.4,Math.min(2,a)),p=100*S,L=20*S,q="var(--hud-canvas-dot-minor)",J="var(--hud-canvas-dot-major)",N="color-mix(in srgb, oklch(var(--accent)) 18%, transparent)",T=(M.w/2+h.x*a)%p,D=(M.h/2+h.y*a)%p;return i.jsxs("div",{ref:j,className:`absolute inset-0 z-0 overflow-hidden bg-background ${G?"cursor-grabbing":"cursor-grab"}`,onMouseDown:U,onClick:F,children:[i.jsx("div",{className:"absolute pointer-events-none",style:{inset:"-100px",opacity:.8*C,transition:"opacity 1s ease",backgroundImage:`radial-gradient(circle, ${q} 1px, transparent 1px)`,backgroundSize:`${L}px ${L}px`,backgroundPosition:`${T+100}px ${D+100}px`}}),i.jsx("div",{className:"absolute pointer-events-none",style:{inset:"-100px",opacity:.45*C,transition:"opacity 1s ease",backgroundImage:`radial-gradient(circle, ${J} 1.5px, transparent 1.5px)`,backgroundSize:`${p}px ${p}px`,backgroundPosition:`${T+100}px ${D+100}px`}}),B&&i.jsxs(i.Fragment,{children:[i.jsx("div",{ref:x,className:"absolute top-0 bottom-0 w-px pointer-events-none",style:{left:0,backgroundColor:N}}),i.jsx("div",{ref:y,className:"absolute left-0 right-0 h-px pointer-events-none",style:{top:0,backgroundColor:N}})]})]})};export{_ as C};
@@ -1 +1 @@
1
- import{D as n,j as a,E as o}from"./index-DReVb7jZ.js";import{C as l}from"./CrewAvatar-zgzC3cbU.js";import{C as g}from"./check-g7D7-c1J.js";function C({selectedSlug:r,onSelect:c,size:i=44}){const e=n("crew");return a.jsxs("div",{className:"s-settings-cast-grid",role:"group","aria-label":"Character assignment",children:[o.map(s=>{const t=r?.toLowerCase()===s.slug.toLowerCase();return a.jsxs("button",{type:"button",className:"s-settings-cast-choice","data-cast-slug":s.slug,"data-active":t||void 0,"aria-pressed":t,onClick:()=>c(s.slug),children:[a.jsx(l,{slug:s.slug,size:i,ring:t,state:t?"working":"idle"}),a.jsx("span",{className:"s-settings-cast-name",children:s.name}),a.jsx("span",{className:"s-settings-cast-title",children:s.title}),t&&a.jsx(g,{className:"s-settings-cast-check",size:14,"aria-hidden":!0})]},s.slug)}),e?a.jsxs("span",{className:"s-cast-picker-coverage","aria-hidden":!0,children:[e.covered," of ",e.total," cast"]}):null]})}export{C};
1
+ import{G as n,j as a,k as o}from"./index-EsrkGBcv.js";import{C as l}from"./CrewAvatar-kTznzqcO.js";import{C as g}from"./check-lrJ3a73a.js";function C({selectedSlug:r,onSelect:c,size:i=44}){const e=n("crew");return a.jsxs("div",{className:"s-settings-cast-grid",role:"group","aria-label":"Character assignment",children:[o.map(s=>{const t=r?.toLowerCase()===s.slug.toLowerCase();return a.jsxs("button",{type:"button",className:"s-settings-cast-choice","data-cast-slug":s.slug,"data-active":t||void 0,"aria-pressed":t,onClick:()=>c(s.slug),children:[a.jsx(l,{slug:s.slug,size:i,ring:t,state:t?"working":"idle"}),a.jsx("span",{className:"s-settings-cast-name",children:s.name}),a.jsx("span",{className:"s-settings-cast-title",children:s.title}),t&&a.jsx(g,{className:"s-settings-cast-check",size:14,"aria-hidden":!0})]},s.slug)}),e?a.jsxs("span",{className:"s-cast-picker-coverage","aria-hidden":!0,children:[e.covered," of ",e.total," cast"]}):null]})}export{C};
@@ -0,0 +1 @@
1
+ import{r as n,j as t}from"./index-EsrkGBcv.js";import{u as V}from"./ComposerAttachments-DW0AIb8k.js";import{ChatRichInput as X}from"./ChatRichInput-DhtwFxQE.js";import{u as G}from"./chat-transport-DNS5CB2I.js";import{MemberAvatar as v}from"./ChatAvatar-C3a_o5Hj.js";import{w as R,d as H,b as k,a as L,E as J}from"./chat-space-model-aW3Fd8_U.js";import{X as Y}from"./x-DAehov0E.js";import{P as Z,A as T}from"./paperclip-BjcuP_Hx.js";import{c as M}from"./createLucideIcon-zZ8Hx7er.js";import{C as ee}from"./chevron-down-l1mrh5S9.js";import{L as te}from"./loader-circle-OvccU82H.js";import"./media-blobs-Bi8pxr1u.js";import"./api-DSqpVKC7.js";import"./file-text-CnISiiw6.js";import"./message-markup-BQW5jdJw.js";import"./chat-api-DSJMBYoT.js";import"./SpriteAvatar-CpZWf54-.js";import"./agent-state-DDhnFEEP.js";import"./colors-CFlbwC25.js";const ae=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],se=M("arrow-up",ae);const oe=[["path",{d:"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8",key:"mg9rjx"}]],ne=M("bold",oe);const re=[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]],le=M("code",re);const ie=[["line",{x1:"19",x2:"10",y1:"4",y2:"4",key:"15jd3p"}],["line",{x1:"14",x2:"5",y1:"20",y2:"20",key:"bu0au3"}],["line",{x1:"15",x2:"9",y1:"4",y2:"20",key:"uljnxc"}]],ce=M("italic",ie);const pe=[["path",{d:"M3 5h.01",key:"18ugdj"}],["path",{d:"M3 12h.01",key:"nlz23k"}],["path",{d:"M3 19h.01",key:"noohij"}],["path",{d:"M8 5h13",key:"1pao27"}],["path",{d:"M8 12h13",key:"1za7za"}],["path",{d:"M8 19h13",key:"m83p4d"}]],he=M("list",pe);function O(l,o){const d=l.slice(0,o),i=d.lastIndexOf("@");if(i<0||i>0&&!/\s/u.test(d[i-1]??""))return null;const u=d.slice(i+1);return/\n/u.test(u)||u.split(" ").length>3?null:{start:i,text:u}}function de(l,o){const d=Math.max(0,Math.min(o,l.length)),i=l.slice(0,d),u=i.length>0&&!/\s$/u.test(i)?" ":"",N=`${i}${u}@`;return{next:`${N}${l.slice(d)}`,caret:N.length}}function Pe({members:l,draft:o,onDraftChange:d,askTargetId:i,onAskTargetChange:u,onSend:N,sending:r,error:E,placeholder:q,variant:b="channel",autoFocus:W=!1}){const c=n.useRef(null),F=n.useRef(null),[m,j]=n.useState(null),[w,$]=n.useState(0),[C,D]=n.useState(!1),p=G(),s=V(),I=n.useMemo(()=>p.asks?l.filter(R):[],[p.asks,l]),B=n.useMemo(()=>l.filter(H),[l]),x=n.useMemo(()=>l.find(e=>e.actorId===i)??null,[l,i]),f=n.useMemo(()=>{if(!m)return[];const e=m.text.trim().toLowerCase();return[...l.filter(h=>k(h).toLowerCase().includes(e)||h.displayName.toLowerCase().includes(e))].sort((h,y)=>Number(L(y))-Number(L(h))).slice(0,8)},[l,m]);n.useEffect(()=>{$(0)},[m?.text]),n.useEffect(()=>{W&&c.current?.focus()},[W]);const S=n.useCallback(e=>{D(!1),e==="toggle"?F.current?.focus():c.current?.focus()},[]),z=n.useCallback(e=>{const a=c.current,h=a?.textBeforeCaret()??o,y=m??O(h,h.length),g=k(e);a?y?a.replaceMention(y.start,g):a.insertText(`${h.endsWith(" ")||h===""?"":" "}@${g} `):d(`${o}${o.endsWith(" ")||o===""?"":" "}@${g} `),p.asks&&R(e)&&u(e.actorId),j(null)},[p.asks,o,u,d,m]),Q=n.useCallback(()=>{const e=c.current,a=e?.textBeforeCaret()??o,h=a.length>0&&!/\s$/u.test(a)?" ":"";if(e?.insertText(`${h}@`),e){const y=e.textBeforeCaret();j({start:Math.max(0,y.length-1),text:""})}else{const{next:y,caret:g}=de(o,o.length);d(y),j({start:g-1,text:""})}D(!1),requestAnimationFrame(()=>c.current?.focus())},[o,d]),A=!r&&(o.trim().length>0||s.hasFiles),P=n.useCallback(()=>{if(r||!o.trim()&&!s.hasFiles)return;const e=s.files;Promise.resolve(N(e)).then(a=>{a!==!1&&s.clear()})},[s,o,N,r]),U=n.useCallback(e=>{if(!(e.nativeEvent.isComposing||e.nativeEvent.keyCode===229)){if(m&&f.length>0){if(e.key==="ArrowDown"){e.preventDefault(),$(a=>(a+1)%f.length);return}if(e.key==="ArrowUp"){e.preventDefault(),$(a=>(a-1+f.length)%f.length);return}if(e.key==="Enter"||e.key==="Tab"){e.preventDefault();const a=f[w];a&&z(a);return}if(e.key==="Escape"){e.preventDefault(),e.stopPropagation(),j(null);return}}if(e.key==="Escape"&&C){e.preventDefault(),e.stopPropagation(),D(!1);return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="b"){e.preventDefault(),c.current?.applyFormat("bold");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="i"){e.preventDefault(),c.current?.applyFormat("italic");return}if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="e"){e.preventDefault(),c.current?.applyFormat("code");return}e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),A&&P())}},[w,z,A,f,C,m,r,P]),_=J(x?k(x):null),K=x?`Send — asks ${k(x)}`:b==="thread"?"Send reply":"Send to the channel";return t.jsxs("div",{className:"chat-composer","data-variant":b,"data-drag":p.attachments&&s.dragActive?"true":void 0,...p.attachments?s.dropHandlers:{},children:[b==="channel"&&x?t.jsxs("div",{className:"chat-ask-target",children:[t.jsx("span",{className:"label-sm",style:{color:"var(--dim)"},children:"Asking"}),t.jsxs("span",{className:"chip chip--sm chip--mono chip--neutral",children:[t.jsx(v,{member:x,size:14}),k(x)]}),t.jsx("button",{type:"button",className:"chat-ask-target-clear",onClick:()=>u(null),"aria-label":"Clear ask target — send as a channel update instead",children:"×"}),_?t.jsx("span",{className:"chat-composer-hint",children:_}):null]}):null,t.jsx(X,{ref:c,value:o,placeholder:q,disabled:r,onChange:e=>{d(e);const a=c.current?.textBeforeCaret()??e;j(O(a,a.length))},onKeyDown:U,onPaste:p.attachments?s.onPaste:void 0,onDragOver:p.attachments?s.dropHandlers.onDragOver:void 0,onDrop:p.attachments?s.dropHandlers.onDrop:void 0,onBlur:()=>j(null)}),p.attachments?t.jsxs(t.Fragment,{children:[t.jsx("input",{ref:s.inputRef,type:"file",multiple:!0,accept:"image/*,video/*,audio/*,.mp4,.webm,.mov,.mp3,.wav,.m4a,.html,.htm,text/html,text/markdown,.md,.markdown,text/plain,.txt",className:"chat-composer-file-input","aria-hidden":"true",tabIndex:-1,onChange:e=>{s.stage([...e.target.files??[]]),e.target.value=""}}),s.files.length>0?t.jsx("div",{className:"chat-composer-files","aria-label":"Attached files",children:s.files.map(e=>t.jsxs("span",{className:"chat-composer-file",children:[t.jsx("span",{children:e.name}),t.jsx("button",{type:"button","aria-label":`Remove ${e.name}`,onClick:()=>s.remove(e),children:t.jsx(Y,{size:12,strokeWidth:2,"aria-hidden":!0})})]},`${e.name}:${e.size}:${e.lastModified}`))}):null,s.error?t.jsx("p",{className:"chat-send-error",role:"alert",children:s.error}):null]}):null,m&&f.length>0?t.jsx("div",{className:"chat-mention-popup",role:"listbox","aria-label":"Mention a member",children:f.map((e,a)=>t.jsxs("button",{type:"button",role:"option","aria-selected":a===w,"data-active":a===w,className:"chat-mention-option",onMouseDown:h=>{h.preventDefault(),z(e)},children:[t.jsx(v,{member:e,size:18}),k(e),t.jsx("span",{className:"chat-mention-kind",children:H(e)?"via API":L(e)?"agent":"person"})]},e.actorId))}):null,C&&b==="channel"&&p.asks?t.jsx("div",{className:"chat-mention-popup",role:"listbox","aria-label":"Choose an agent to ask",onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),S("toggle"))},children:I.length===0&&B.length===0?t.jsx("div",{className:"chat-side-empty",children:"No agent has joined this channel yet. Invite one from the Invite sheet."}):t.jsxs(t.Fragment,{children:[I.map(e=>t.jsxs("button",{type:"button",role:"option","aria-selected":e.actorId===i,"data-active":e.actorId===i,className:"chat-mention-option",onClick:()=>{u(e.actorId),S("input")},children:[t.jsx(v,{member:e,size:18}),k(e),t.jsx("span",{className:"chat-mention-kind",children:e.reception.summary.toLowerCase()})]},e.actorId)),B.map(e=>t.jsxs("button",{type:"button",role:"option","aria-selected":!1,"aria-disabled":"true",disabled:!0,className:"chat-mention-option",children:[t.jsx(v,{member:e,size:18}),k(e),t.jsx("span",{className:"chat-mention-kind",children:"via API — post to reach it"})]},e.actorId)),I.length===0?t.jsx("div",{className:"chat-side-empty",children:"API participants read posts when they poll. Send a channel message instead."}):null]})}):null,E?t.jsx("p",{className:"chat-send-error",role:"alert",children:E}):null,t.jsxs("div",{className:"chat-composer-foot",children:[t.jsxs("span",{className:"chat-composer-tools",children:[p.attachments?t.jsx("button",{type:"button",className:"chat-composer-tool chat-composer-tool--icon",onClick:s.openPicker,disabled:r,"aria-label":"Attach a file",title:"Attach a file",children:t.jsx(Z,{size:14,strokeWidth:2,"aria-hidden":!0})}):null,t.jsx("button",{type:"button",className:"chat-composer-tool chat-composer-tool--icon",onClick:Q,disabled:r,"aria-label":"Mention a member",title:"Mention a member",children:t.jsx(T,{size:14,strokeWidth:2,"aria-hidden":!0})}),t.jsx("button",{type:"button",className:"chat-composer-tool chat-composer-tool--icon",onMouseDown:e=>{e.preventDefault(),c.current?.applyFormat("bold")},disabled:r,"aria-label":"Bold",title:"Bold",children:t.jsx(ne,{size:14,strokeWidth:2,"aria-hidden":!0})}),t.jsx("button",{type:"button",className:"chat-composer-tool chat-composer-tool--icon",onMouseDown:e=>{e.preventDefault(),c.current?.applyFormat("italic")},disabled:r,"aria-label":"Italic",title:"Italic",children:t.jsx(ce,{size:14,strokeWidth:2,"aria-hidden":!0})}),t.jsx("button",{type:"button",className:"chat-composer-tool chat-composer-tool--icon",onMouseDown:e=>{e.preventDefault(),c.current?.applyFormat("code")},disabled:r,"aria-label":"Code",title:"Code",children:t.jsx(le,{size:14,strokeWidth:2,"aria-hidden":!0})}),t.jsx("button",{type:"button",className:"chat-composer-tool chat-composer-tool--icon",onMouseDown:e=>{e.preventDefault(),c.current?.applyFormat("list")},disabled:r,"aria-label":"List",title:"List",children:t.jsx(he,{size:14,strokeWidth:2,"aria-hidden":!0})}),b==="channel"&&p.asks?t.jsxs("button",{ref:F,type:"button",className:"chat-composer-tool","data-active":C,"aria-expanded":C,"aria-haspopup":"listbox",disabled:r,onClick:()=>D(e=>!e),children:[x?"Change agent":"Ask an agent",t.jsx(ee,{size:12,strokeWidth:2,"aria-hidden":!0})]}):null]}),t.jsxs("span",{className:"chat-composer-right",children:[t.jsx("span",{className:"chat-enter",children:b==="thread"?"↵ send":"↵ send · ⇧↵ newline"}),t.jsx("button",{type:"button",className:"chat-composer-send",onClick:P,disabled:!A,"aria-label":r?"Sending…":K,title:r?"Sending…":K,children:r?t.jsx(te,{size:15,strokeWidth:2.2,className:"chat-composer-spin","aria-hidden":!0}):t.jsx(se,{size:16,strokeWidth:2.4,"aria-hidden":!0})})]})]})]})}export{Pe as ChannelComposer,de as mentionInsertion};
@@ -0,0 +1 @@
1
+ import{r,j as e}from"./index-EsrkGBcv.js";import{u as $}from"./chat-transport-DNS5CB2I.js";import{MemberCoin as E}from"./ChatAvatar-C3a_o5Hj.js";import{SpaceSwitcher as _}from"./SpaceSwitcher-BLgSCf_T.js";import{c as I}from"./chat-space-model-aW3Fd8_U.js";import"./chat-api-DSJMBYoT.js";import"./api-DSqpVKC7.js";import"./SpriteAvatar-CpZWf54-.js";import"./agent-state-DDhnFEEP.js";import"./colors-CFlbwC25.js";const J=[{value:"dark",label:"Dark"},{value:"light",label:"Light"},{value:"system",label:"System"}];function M(s,c,i){if(!s)return;const l=Array.from(s.querySelectorAll("[data-side-row]")),u=l.indexOf(c);if(u<0)return;l[(u+i+l.length)%l.length]?.focus()}function P(s){return s.replace(/^#/u,"").trim().slice(0,1).toLowerCase()||"?"}function Q({viewerName:s,viewerIsHost:c,railed:i,themePreference:l,onOpenProfile:u,onThemePreference:x,onSignOut:d}){const w=$(),[o,n]=r.useState(!1),m=r.useRef(null);r.useEffect(()=>{if(!o)return;m.current?.querySelector(".chat-you-menu button")?.focus();const t=y=>{const j=y.target;j instanceof Node&&m.current?.contains(j)||n(!1)};return document.addEventListener("pointerdown",t),()=>document.removeEventListener("pointerdown",t)},[o]);const f=r.useCallback(t=>{n(!1),t()},[]);return e.jsxs("div",{className:"chat-sidebar-identity",ref:m,onKeyDown:t=>{t.key==="Escape"&&o&&(t.preventDefault(),t.stopPropagation(),n(!1),m.current?.querySelector(".chat-you")?.focus())},children:[o?e.jsxs("div",{className:"chat-you-menu",role:"group","aria-label":`${s} menu`,children:[e.jsxs("div",{className:"chat-you-menu-head",children:[e.jsx(E,{name:s,size:28,title:s}),e.jsx("span",{className:"chat-you-menu-name",children:s})]}),e.jsx("div",{className:"chat-you-menu-rule"}),u?e.jsx("button",{type:"button",className:"chat-you-menu-item",onClick:()=>f(u),children:"Your member card"}):null,e.jsxs("div",{className:"chat-you-menu-group",role:"group","aria-label":"Appearance",children:[e.jsx("span",{className:"label-sm",children:"Appearance"}),e.jsx("div",{className:"chat-you-themes",children:J.map(t=>e.jsx("button",{type:"button",className:"btn btn--sm","aria-pressed":l===t.value,"data-active":l===t.value,onClick:()=>x(t.value),children:t.label},t.value))})]}),w.signOut?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"chat-you-menu-rule"}),e.jsx("button",{type:"button",className:"chat-you-menu-item",onClick:()=>f(d),children:"Sign out"})]}):null]}):null,e.jsxs("button",{type:"button",className:"chat-you","aria-expanded":o,"aria-label":i?`${s} — account menu`:void 0,onClick:()=>n(t=>!t),children:[e.jsx(E,{name:s,size:24,title:s}),i?null:e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"chat-you-who",children:[e.jsx("span",{className:"chat-you-name",children:s}),c?e.jsx("span",{className:"label-sm chat-you-role",children:"Host"}):null]}),e.jsx("span",{className:"chat-you-caret","aria-hidden":"true",children:o?"⌄":"⌃"})]})]})]})}function re({channels:s,directs:c,spaces:i,activeSpace:l,selectedId:u,addressedChannelIds:x,canCreate:d,viewerName:w,viewerIsHost:o,railed:n,themePreference:m,onSelect:f,onSelectSpace:t,onCreate:y,onCreateSpace:j,onDeleteSpace:Y,onInvite:A,onExpandRail:F,onOpenProfile:B,onThemePreference:G,onSignOut:U}){const T=$(),g=r.useRef(null),[L,N]=r.useState(!1),[C,O]=r.useState(""),[D,K]=r.useState(""),[k,R]=r.useState(!1),S=r.useCallback(async()=>{const a=C.trim();if(!(!a||k)){R(!0);try{await y({title:a,topic:D.trim()}),O(""),K(""),N(!1)}finally{R(!1)}}},[k,y,C,D]),v=(a,p)=>{const H=x.has(a.id),b=p?a.title.replace(/^#/u,""):a.title;return e.jsxs("button",{type:"button","data-side-row":!0,className:n?"chat-rail-row":"chat-side-row","aria-label":p?I(a.title):b,"aria-current":a.id===u,"data-addressed":H,title:n?p?I(a.title):b:void 0,onClick:()=>f(a.id),onKeyDown:h=>{h.key==="ArrowDown"?(h.preventDefault(),M(g.current,h.currentTarget,1)):h.key==="ArrowUp"&&(h.preventDefault(),M(g.current,h.currentTarget,-1))},children:[n?p?e.jsxs("span",{className:"chat-rail-glyph",children:[e.jsx("span",{className:"chat-hash",children:"#"}),P(a.title)]}):e.jsx(E,{name:b,size:22,title:b}):e.jsxs(e.Fragment,{children:[p?e.jsx("span",{className:"chat-hash",children:"#"}):null,e.jsx("span",{className:"chat-row-name",children:b})]}),H?e.jsx("span",{className:"dot dot--accent dot--sm","aria-label":"Addressed to you, unanswered"}):null]},a.id)},q=i.length>0?e.jsx(_,{spaces:i,activeSlug:l,canCreate:d&&T.spaceCreate,railed:n,onSelect:t,onCreate:j,onDelete:d?Y:null,onExpandRail:F}):null,z=e.jsx(Q,{viewerName:w,viewerIsHost:o,railed:n,themePreference:m,onOpenProfile:B,onThemePreference:G,onSignOut:U});return n?e.jsxs("nav",{className:"chat-sidebar","data-railed":"true",ref:g,"aria-label":"Channels and direct messages",onDoubleClick:a=>{a.target.closest("button, a, [role='button']")||F()},children:[q,e.jsxs("div",{className:"chat-side-list",children:[s.map(a=>v(a,!0)),c.length>0?e.jsx("div",{className:"chat-rail-rule"}):null,c.map(a=>v(a,!1))]}),e.jsx("div",{className:"chat-sidebar-foot",children:e.jsx("button",{type:"button",className:"chat-rail-row","aria-label":"Invite someone",onClick:A,children:e.jsx("span",{className:"chat-rail-glyph",children:"+"})})}),z]}):e.jsxs("nav",{className:"chat-sidebar",ref:g,"aria-label":"Channels and direct messages",children:[q,e.jsxs("div",{className:"chat-side-list",children:[e.jsxs("div",{className:"chat-side-section",children:[e.jsx("span",{className:"label-md",children:"Channels"}),d&&T.channelCreate?e.jsx("button",{type:"button",className:"chat-side-add","aria-label":"Create a channel","aria-expanded":L,onClick:()=>N(a=>!a),children:"+"}):null]}),L?e.jsxs("div",{className:"chat-create-form",children:[e.jsx("input",{className:"chat-input",value:C,autoFocus:!0,placeholder:"channel-name","aria-label":"Channel name",onChange:a=>O(a.target.value),onKeyDown:a=>{a.key==="Enter"?(a.preventDefault(),S()):a.key==="Escape"&&(a.preventDefault(),N(!1))}}),e.jsx("input",{className:"chat-input",value:D,placeholder:"Topic (optional)","aria-label":"Channel topic",onChange:a=>K(a.target.value),onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),S())}}),e.jsxs("div",{className:"chat-create-actions",children:[e.jsx("button",{type:"button",className:"btn btn--sm",disabled:k||!C.trim(),onClick:()=>{S()},children:k?"Creating…":"Create"}),e.jsx("button",{type:"button",className:"btn btn--ghost btn--sm",onClick:()=>N(!1),children:"Cancel"})]})]}):null,s.length===0?e.jsx("p",{className:"chat-side-empty",children:d?`No channels in ${i.find(a=>a.slug===l)?.title??"this space"} yet. Create one to get started.`:"You are not in any channel yet. Open the invitation you were sent."}):s.map(a=>v(a,!0)),c.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"chat-side-section",children:e.jsx("span",{className:"label-md",children:"Direct messages"})}),c.map(a=>v(a,!1))]}):null]}),e.jsx("div",{className:"chat-sidebar-foot",children:e.jsx("button",{type:"button",className:"btn btn--ghost btn--sm",onClick:A,children:"+ Invite"})}),z]})}export{re as ChannelSidebar};
@@ -1 +1 @@
1
- import{r as u,j as e,E as w,h as E,t as N}from"./index-DReVb7jZ.js";import{C as _}from"./CrewSprite-Dp9KBBGY.js";const y=16,M=.05,P=.01,g=.01;function v(t,i,s,a){const x=t-s,l=i+y*x,c=Math.exp(-y*a),r=s+(x+l*a)*c,o=(i-y*l*a)*c;return Math.abs(r-s)<P&&Math.abs(o)<g?[s,0]:[r,o]}function k(t,i,s){if(!Number.isFinite(s)||s<=0)return{...t};if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return{...t};if(![t.x,t.y,t.vx,t.vy].every(Number.isFinite))return{...i,vx:0,vy:0};const a=Math.min(s,M),[x,l]=v(t.x,t.vx,i.x,a),[c,r]=v(t.y,t.vy,i.y,a);return{x,y:c,vx:l,vy:r}}function S({slug:t,name:i,pixel:s,paused:a,expression:x}){const l=u.useRef(null),c=u.useRef(null),r=u.useRef({x:0,y:0,vx:0,vy:0}),o=u.useRef(null),m=u.useRef(a);m.current=a,u.useEffect(()=>{const n=window.matchMedia("(prefers-reduced-motion: reduce)");let p=0,d=performance.now();const b=j=>{const C=Math.min(.05,(j-d)/1e3);if(d=j,!document.hidden&&!o.current&&!m.current){r.current=n.matches?{x:0,y:0,vx:0,vy:0}:k(r.current,{x:0,y:0},C);const f=r.current;c.current&&(c.current.style.transform=`translate(${f.x}px, ${f.y}px) rotate(${Math.max(-6,Math.min(6,f.vx*.018))}deg)`)}p=requestAnimationFrame(b)};return p=requestAnimationFrame(b),()=>cancelAnimationFrame(p)},[]);const h=!s||E(t);return e.jsxs("figure",{children:[e.jsx("div",{className:"character-family-preview__stage",ref:l,role:"button",tabIndex:h?0:-1,"aria-label":`Nudge ${i}`,"aria-disabled":!h||a,onKeyDown:n=>{h&&!a&&(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),r.current={x:12,y:-22,vx:0,vy:0})},onPointerDown:n=>{!h||m.current||n.button!==0||(o.current={id:n.pointerId,x:n.clientX-r.current.x,y:n.clientY-r.current.y},n.currentTarget.setPointerCapture(n.pointerId))},onPointerMove:n=>{if(o.current?.id!==n.pointerId)return;const p=Math.max(-35,Math.min(35,n.clientX-o.current.x)),d=Math.max(-45,Math.min(12,n.clientY-o.current.y));r.current={x:p,y:d,vx:0,vy:0},c.current&&(c.current.style.transform=`translate(${p}px, ${d}px)`)},onPointerUp:n=>{o.current?.id===n.pointerId&&(o.current=null,n.currentTarget.releasePointerCapture(n.pointerId))},onPointerCancel:()=>{o.current=null},children:h?e.jsx("span",{ref:c,className:"character-family-preview__moving",children:e.jsx(_,{slug:t,pixel:s,size:s?88:155,paused:a,expression:x})}):e.jsx("span",{className:"character-family-preview__missing",children:"No chip artwork yet"})}),e.jsx("figcaption",{children:i}),!s&&N[t]?e.jsx("small",{children:"Eye expressions available"}):null]})}function R({onClose:t}){const[i,s]=u.useState(!1),[a,x]=u.useState(!1),[l,c]=u.useState("rest");return e.jsxs("section",{className:"character-family-preview","aria-label":"Character family preview",children:[e.jsxs("header",{children:[e.jsxs("div",{children:[e.jsx("strong",{children:"The crew"}),e.jsx("p",{children:"Original identities · expressions · shared movement"})]}),e.jsx("button",{type:"button",onClick:t,"aria-label":"Close character preview",children:"×"})]}),e.jsxs("div",{className:"character-family-preview__poses",role:"group","aria-label":"Character artwork",children:[e.jsx("button",{type:"button","aria-pressed":!i,onClick:()=>s(!1),children:"Crew"}),e.jsx("button",{type:"button","aria-pressed":i,onClick:()=>s(!0),children:"Pixel Chip"}),e.jsx("button",{type:"button",onClick:()=>x(!a),children:a?"Resume motion":"Pause motion"})]}),i?null:e.jsx("div",{className:"character-family-preview__poses",role:"group","aria-label":"Eye expression",children:["rest","look-left","look-up","look-right"].map(r=>e.jsx("button",{type:"button","aria-pressed":r===l,onClick:()=>c(r),children:r.replace("look-","Look ")},r))}),e.jsx("div",{className:"character-family-preview__cast",children:w.map(r=>e.jsx(S,{slug:r.slug,name:r.name,pixel:i,paused:a,expression:l},r.slug))}),e.jsx("p",{children:"Drag a character gently and release. This tests shared spring motion; full-body action sprites and accessories come next."})]})}export{R as CharacterFamilyPreview};
1
+ import{r as u,j as e,k as w,h as E,l as N}from"./index-EsrkGBcv.js";import{C as _}from"./CrewSprite-Dhryjx2c.js";const y=16,M=.05,k=.01,P=.01;function v(t,i,s,a){const x=t-s,l=i+y*x,c=Math.exp(-y*a),r=s+(x+l*a)*c,o=(i-y*l*a)*c;return Math.abs(r-s)<k&&Math.abs(o)<P?[s,0]:[r,o]}function g(t,i,s){if(!Number.isFinite(s)||s<=0)return{...t};if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return{...t};if(![t.x,t.y,t.vx,t.vy].every(Number.isFinite))return{...i,vx:0,vy:0};const a=Math.min(s,M),[x,l]=v(t.x,t.vx,i.x,a),[c,r]=v(t.y,t.vy,i.y,a);return{x,y:c,vx:l,vy:r}}function S({slug:t,name:i,pixel:s,paused:a,expression:x}){const l=u.useRef(null),c=u.useRef(null),r=u.useRef({x:0,y:0,vx:0,vy:0}),o=u.useRef(null),m=u.useRef(a);m.current=a,u.useEffect(()=>{const n=window.matchMedia("(prefers-reduced-motion: reduce)");let p=0,d=performance.now();const b=j=>{const C=Math.min(.05,(j-d)/1e3);if(d=j,!document.hidden&&!o.current&&!m.current){r.current=n.matches?{x:0,y:0,vx:0,vy:0}:g(r.current,{x:0,y:0},C);const f=r.current;c.current&&(c.current.style.transform=`translate(${f.x}px, ${f.y}px) rotate(${Math.max(-6,Math.min(6,f.vx*.018))}deg)`)}p=requestAnimationFrame(b)};return p=requestAnimationFrame(b),()=>cancelAnimationFrame(p)},[]);const h=!s||E(t);return e.jsxs("figure",{children:[e.jsx("div",{className:"character-family-preview__stage",ref:l,role:"button",tabIndex:h?0:-1,"aria-label":`Nudge ${i}`,"aria-disabled":!h||a,onKeyDown:n=>{h&&!a&&(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),r.current={x:12,y:-22,vx:0,vy:0})},onPointerDown:n=>{!h||m.current||n.button!==0||(o.current={id:n.pointerId,x:n.clientX-r.current.x,y:n.clientY-r.current.y},n.currentTarget.setPointerCapture(n.pointerId))},onPointerMove:n=>{if(o.current?.id!==n.pointerId)return;const p=Math.max(-35,Math.min(35,n.clientX-o.current.x)),d=Math.max(-45,Math.min(12,n.clientY-o.current.y));r.current={x:p,y:d,vx:0,vy:0},c.current&&(c.current.style.transform=`translate(${p}px, ${d}px)`)},onPointerUp:n=>{o.current?.id===n.pointerId&&(o.current=null,n.currentTarget.releasePointerCapture(n.pointerId))},onPointerCancel:()=>{o.current=null},children:h?e.jsx("span",{ref:c,className:"character-family-preview__moving",children:e.jsx(_,{slug:t,pixel:s,size:s?88:155,paused:a,expression:x})}):e.jsx("span",{className:"character-family-preview__missing",children:"No chip artwork yet"})}),e.jsx("figcaption",{children:i}),!s&&N[t]?e.jsx("small",{children:"Eye expressions available"}):null]})}function R({onClose:t}){const[i,s]=u.useState(!1),[a,x]=u.useState(!1),[l,c]=u.useState("rest");return e.jsxs("section",{className:"character-family-preview","aria-label":"Character family preview",children:[e.jsxs("header",{children:[e.jsxs("div",{children:[e.jsx("strong",{children:"The crew"}),e.jsx("p",{children:"Original identities · expressions · shared movement"})]}),e.jsx("button",{type:"button",onClick:t,"aria-label":"Close character preview",children:"×"})]}),e.jsxs("div",{className:"character-family-preview__poses",role:"group","aria-label":"Character artwork",children:[e.jsx("button",{type:"button","aria-pressed":!i,onClick:()=>s(!1),children:"Crew"}),e.jsx("button",{type:"button","aria-pressed":i,onClick:()=>s(!0),children:"Pixel Chip"}),e.jsx("button",{type:"button",onClick:()=>x(!a),children:a?"Resume motion":"Pause motion"})]}),i?null:e.jsx("div",{className:"character-family-preview__poses",role:"group","aria-label":"Eye expression",children:["rest","look-left","look-up","look-right"].map(r=>e.jsx("button",{type:"button","aria-pressed":r===l,onClick:()=>c(r),children:r.replace("look-","Look ")},r))}),e.jsx("div",{className:"character-family-preview__cast",children:w.map(r=>e.jsx(S,{slug:r.slug,name:r.name,pixel:i,paused:a,expression:l},r.slug))}),e.jsx("p",{children:"Drag a character gently and release. This tests shared spring motion; full-body action sprites and accessories come next."})]})}export{R as CharacterFamilyPreview};
@@ -1 +1 @@
1
- import{j as i}from"./index-DReVb7jZ.js";import{a as o,S as c}from"./SpriteAvatar-aHeF4ZQZ.js";import{a as l}from"./colors-CFlbwC25.js";import{a as h,n as p,b as u}from"./chat-space-model-B6Jg2CY4.js";import"./agent-state-DDhnFEEP.js";function s(t){return`color-mix(in srgb, var(--muted) 82%, ${l(t)})`}function d({name:t,size:a=24,className:n,title:e}){const r={width:a,height:a,background:s(t),fontSize:Math.max(7,Math.round(a*.38))};return i.jsx("span",{className:`chat-coin${n?` ${n}`:""}`,style:r,title:e,children:p(t)})}function x({member:t,size:a=24,className:n}){const e=o({harness:t.harness??null,state:t.activity?.status??null}),r=t.owner?.displayName?.trim()||null;return i.jsxs("span",{className:`chat-sprite${n?` ${n}`:""}`,style:{width:a,height:a},title:u(t),children:[i.jsx(c,{name:t.displayName||t.actorId,size:a,...e.hue===void 0?{}:{hue:e.hue},tone:e.tone,tile:!0}),r?i.jsx("span",{className:"chat-sprite-owner",style:{background:s(r),width:Math.max(10,Math.round(a*.46)),height:Math.max(10,Math.round(a*.46)),fontSize:Math.max(5,Math.round(a*.24))},"aria-hidden":"true",children:r.slice(0,1).toUpperCase()}):null]})}function f({member:t,size:a=24,className:n}){return h(t)?i.jsx(x,{member:t,size:a,...n?{className:n}:{}}):i.jsx(d,{name:t.displayName||t.actorId,size:a,...n?{className:n}:{},title:t.displayName})}function N({members:t,countLabel:a,onOpen:n}){const e=t.slice(0,4);return i.jsxs("button",{type:"button",className:"chat-facepile",onClick:n,"aria-label":`Members: ${a}`,children:[i.jsx("span",{className:"chat-facepile-faces",children:e.map(r=>i.jsx(f,{member:r,size:20,className:"chat-facepile-face"},r.actorId))}),i.jsx("span",{className:"chat-pile-count",children:a})]})}export{x as AgentSprite,N as Facepile,f as MemberAvatar,d as MemberCoin,s as coinFill};
1
+ import{j as i}from"./index-EsrkGBcv.js";import{a as o,S as c}from"./SpriteAvatar-CpZWf54-.js";import{a as l}from"./colors-CFlbwC25.js";import{a as h,n as p,b as u}from"./chat-space-model-aW3Fd8_U.js";import"./agent-state-DDhnFEEP.js";function s(t){return`color-mix(in srgb, var(--muted) 82%, ${l(t)})`}function d({name:t,size:a=24,className:n,title:e}){const r={width:a,height:a,background:s(t),fontSize:Math.max(7,Math.round(a*.38))};return i.jsx("span",{className:`chat-coin${n?` ${n}`:""}`,style:r,title:e,children:p(t)})}function x({member:t,size:a=24,className:n}){const e=o({harness:t.harness??null,state:t.activity?.status??null}),r=t.owner?.displayName?.trim()||null;return i.jsxs("span",{className:`chat-sprite${n?` ${n}`:""}`,style:{width:a,height:a},title:u(t),children:[i.jsx(c,{name:t.displayName||t.actorId,size:a,...e.hue===void 0?{}:{hue:e.hue},tone:e.tone,tile:!0}),r?i.jsx("span",{className:"chat-sprite-owner",style:{background:s(r),width:Math.max(10,Math.round(a*.46)),height:Math.max(10,Math.round(a*.46)),fontSize:Math.max(5,Math.round(a*.24))},"aria-hidden":"true",children:r.slice(0,1).toUpperCase()}):null]})}function f({member:t,size:a=24,className:n}){return h(t)?i.jsx(x,{member:t,size:a,...n?{className:n}:{}}):i.jsx(d,{name:t.displayName||t.actorId,size:a,...n?{className:n}:{},title:t.displayName})}function N({members:t,countLabel:a,onOpen:n}){const e=t.slice(0,4);return i.jsxs("button",{type:"button",className:"chat-facepile",onClick:n,"aria-label":`Members: ${a}`,children:[i.jsx("span",{className:"chat-facepile-faces",children:e.map(r=>i.jsx(f,{member:r,size:20,className:"chat-facepile-face"},r.actorId))}),i.jsx("span",{className:"chat-pile-count",children:a})]})}export{x as AgentSprite,N as Facepile,f as MemberAvatar,d as MemberCoin,s as coinFill};
@@ -0,0 +1 @@
1
+ import{r as o,j as e}from"./index-EsrkGBcv.js";import{c as M}from"./clipboard-e3fSpeo7.js";import{s as D}from"./MessageEmbeds-ksPazAKH.js";import{a as U}from"./chat-api-DSJMBYoT.js";import{ChatMessageMarkup as W}from"./chat-message-markup-91DIry6R.js";import{u as z}from"./chat-transport-DNS5CB2I.js";import{MemberAvatar as P}from"./ChatAvatar-C3a_o5Hj.js";import{m as B,b as O,y as S,z as L,A as F,C as K,e as H}from"./chat-space-model-aW3Fd8_U.js";import"./api-DSqpVKC7.js";import"./message-markup-BQW5jdJw.js";import"./SpriteAvatar-CpZWf54-.js";import"./agent-state-DDhnFEEP.js";import"./colors-CFlbwC25.js";const I=["👍","❤️","😂","👀","🎉"],A=["🔥","🙏","👏","😢","😮","🚀","✅","💯","🤔","💡","🙌","✨"],J=[...I,...A];new Set(J);function xe({value:t,label:a,className:r="btn btn--sm",copiedLabel:n="Copied",onCopyFailed:i}){const[d,c]=o.useState(!1),[h,u]=o.useState(!1),m=o.useRef(null);o.useEffect(()=>()=>{m.current&&clearTimeout(m.current)},[]);const b=o.useCallback(()=>{const p=f=>{c(f),u(!f),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>{c(!1),u(!1)},1500)};M(t).then(f=>{p(f),f||i?.()}).catch(()=>{p(!1),i?.()})},[t,i]);return e.jsx("button",{type:"button",className:r,onClick:b,"aria-live":"polite",children:h?"Copy failed — select the text":d?n:a})}function Y({request:t,target:a,withTarget:r,onStop:n}){const i=F(t,a?{label:O(a),reception:a.reception}:null);return e.jsxs("div",{className:"chat-ask-card","data-tone":i.tone,children:[e.jsx("span",{className:"label-sm",children:"Tracked request"}),e.jsx("span",{className:"chip chip--sm chip--mono chip--ghost chat-ask-chip","data-tone":i.tone,"aria-label":i.ariaLabel,children:r?i.textWithTarget:i.text}),i.canStop&&n?e.jsx("button",{type:"button",className:"chat-ask-stop",onClick:()=>n(t.flightId),children:"Stop"}):null]})}const V=/\bhttps?:\/\/[^\s<>"')\]]+/giu;function X(t){const a=new Set,r=[];for(const n of t.matchAll(V)){const i=n[0]?.replace(/[.,;:!?)]+$/u,"")??"";if(!(!i.startsWith("http")||i.includes("/api/blobs/")||a.has(i))&&(a.add(i),r.push(i),r.length>=3))break}return r}function Q({message:t,fallbackLabels:a}){const r=X(t.body);return e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"chat-turn-body",children:e.jsx(W,{message:t,fallbackLabels:a})}),r.map(n=>e.jsx(Z,{url:n},n))]})}const C=new Map,R=new Map;function G(t){if(C.has(t))return Promise.resolve(C.get(t)??null);const a=R.get(t);if(a)return a;const r=fetch(`${U}?url=${encodeURIComponent(t)}`,{credentials:"include"}).then(async n=>n.ok?(await n.json()).preview??null:null).catch(()=>null).then(n=>(C.set(t,n),R.delete(t),n));return R.set(t,r),r}function Z({url:t}){const[a,r]=o.useState(()=>C.get(t)??null),[n,i]=o.useState(!1);return o.useEffect(()=>{if(a)return;let d=!1;return G(t).then(c=>{d||r(c)}),()=>{d=!0}},[a,t]),a?e.jsxs("a",{className:"chat-link-card",href:a.url,target:"_blank",rel:"noreferrer",children:[a.imageUrl&&!n?e.jsx("img",{className:"chat-link-card-image",src:a.imageUrl,alt:"",loading:"lazy",decoding:"async",onError:()=>i(!0)}):null,e.jsxs("span",{className:"chat-link-card-copy",children:[a.siteName?e.jsx("span",{className:"chat-link-card-site",children:a.siteName}):null,e.jsx("span",{className:"chat-link-card-title",children:a.title}),a.description?e.jsx("span",{className:"chat-link-card-desc",children:a.description}):null]})]}):null}function je({message:t,members:a,nowMs:r,request:n,replyCount:i,lastReplyAt:d,onOpenThread:c,onOpenMember:h,onReact:u,onCopyLink:m,onStopAsk:b,focused:p=!1,withTargetOnChip:f=!0}){const k=z(),[g,s]=o.useState(!1),l=o.useRef(null),x=B(a,t.actorId),_=n?a.get(n.targetActorId)??null:null,T=O(x),N=k.reactions&&!!u,w=()=>{l.current&&(window.clearTimeout(l.current.timer),l.current=null)};return e.jsxs("article",{className:"chat-turn","data-message-id":t.id,"data-focused":p?"true":void 0,"data-reacting":g?"true":void 0,onPointerDown:j=>{if(!N||j.pointerType==="mouse"||j.target?.closest("button"))return;w();const y=j.clientX,v=j.clientY;l.current={x:y,y:v,timer:window.setTimeout(()=>{l.current=null,s(!0)},450)}},onPointerUp:w,onPointerCancel:w,onPointerMove:j=>{if(!l.current)return;const y=j.clientX-l.current.x,v=j.clientY-l.current.y;y*y+v*v>64&&w()},onContextMenu:j=>{N&&g&&j.preventDefault()},children:[h?e.jsx("button",{type:"button",onClick:()=>h(x.actorId),"aria-label":`Open ${T}'s member card`,children:e.jsx(P,{member:x,size:32})}):e.jsx(P,{member:x,size:32}),e.jsxs("div",{children:[e.jsxs("div",{className:"chat-turn-meta",children:[e.jsx("span",{className:"chat-who",children:T}),m?e.jsx("button",{type:"button",className:"chat-when-link",title:"Copy link to this message","aria-label":"Copy link to this message",onClick:()=>m(t.id),children:e.jsx("time",{className:"chat-when",dateTime:new Date(t.createdAt).toISOString(),children:S(t.createdAt)})}):e.jsx("time",{className:"chat-when",dateTime:new Date(t.createdAt).toISOString(),children:S(t.createdAt)}),N?e.jsx(ae,{message:t,onReact:u,pinned:g,onDismiss:()=>s(!1)}):null]}),e.jsx(Q,{message:t}),e.jsx(ee,{attachments:t.attachments??[]}),n?e.jsx(Y,{request:n,target:_,withTarget:f,onStop:b}):null,k.reactions?e.jsx(te,{message:t,onReact:N?u:void 0}):null,c?e.jsx("button",{type:"button",className:"chat-thread-stub","data-empty":i&&i>0?void 0:"true",onClick:c,"aria-label":i&&i>0?`Open thread, ${L(i,d??null,r)}`:`Reply in thread to ${T}`,children:i&&i>0?`⌵ ${L(i,d??null,r)}`:"⌵ Reply in thread"}):null]})]})}const $=new Map;function q({href:t,name:a}){const[r,n]=o.useState(()=>$.get(t)??null);return e.jsx("a",{className:"chat-attach-image",href:t,target:"_blank",rel:"noreferrer",children:e.jsx("img",{src:t,alt:a,loading:"lazy",decoding:"async",fetchPriority:"low",style:r?{aspectRatio:String(r)}:void 0,onLoad:i=>{const{naturalWidth:d,naturalHeight:c}=i.currentTarget;if(!d||!c)return;const h=d/c;$.set(t,h),n(u=>u===h?u:h)}})})}function ee({attachments:t}){return t.length===0?null:e.jsx("div",{className:"chat-attach",children:t.map(a=>{const r=a.url?D(a.url):null,n=a.fileName?.trim()||"Attachment",i=a.mediaType.toLowerCase(),d=n.toLowerCase(),c=r&&(i.startsWith("video/")||/\.(mp4|webm|mov|m4v)$/u.test(d));return r&&i.startsWith("image/")&&i!=="image/svg+xml"&&!c?e.jsx(q,{href:r,name:n},a.id):c?e.jsx("video",{className:"chat-attach-video",src:r,controls:!0,playsInline:!0,preload:"metadata",children:n},a.id):r&&(i.startsWith("audio/")||/\.(mp3|wav|m4a|aac|ogg|oga)$/u.test(d))?e.jsx("audio",{className:"chat-attach-audio",src:r,controls:!0,preload:"metadata",children:n},a.id):r&&(i==="text/html"||i==="application/xhtml+xml")?e.jsx("iframe",{className:"chat-attach-html",title:n,src:r,sandbox:"",referrerPolicy:"no-referrer",loading:"lazy"},a.id):r?e.jsx("a",{className:"chat-attach-file",href:r,target:"_blank",rel:"noreferrer",children:n},a.id):e.jsx("span",{className:"chat-attach-file",children:n},a.id)})})}function E(t,a,r){const n=t.reactions?.find(i=>i.emoji===a)?.me===!0;r(t.id,a,n)}function te({message:t,onReact:a}){const r=t.reactions??[];return r.length===0?null:e.jsx("div",{className:"chat-reaction-row",children:r.map(n=>{const i=n.me?`${n.emoji} ${n.count}, including you. Remove your reaction.`:`${n.emoji} ${n.count}. React with ${n.emoji}.`;return e.jsxs("button",{type:"button",className:"chat-reaction","data-me":n.me?"true":void 0,"aria-pressed":n.me,"aria-label":i,onClick:()=>a&&E(t,n.emoji,a),children:[e.jsx("span",{"aria-hidden":"true",children:n.emoji}),e.jsx("span",{children:n.count})]},n.emoji)})})}function ae({message:t,onReact:a,pinned:r,onDismiss:n}){const[i,d]=o.useState(0),[c,h]=o.useState(!1),u=o.useRef(null),m=[...I],b=c?[...m,...A]:m,p=o.useCallback(()=>{h(!1),d(s=>Math.min(s,I.length-1))},[]),f=o.useCallback(()=>{p(),n()},[p,n]);o.useEffect(()=>{if(!r&&!c)return;const s=l=>{u.current?.contains(l.target)||f()};return window.addEventListener("pointerdown",s),()=>window.removeEventListener("pointerdown",s)},[r,c,f]);const k=s=>{if(s.key==="Escape"){s.preventDefault(),c?p():n();return}if(s.key==="ArrowRight"||s.key==="ArrowLeft"){s.preventDefault();const l=s.key==="ArrowRight"?1:-1;d(x=>(x+l+b.length)%b.length)}if(s.key==="Enter"||s.key===" "){s.preventDefault();const l=b[i];l&&(E(t,l,a),f())}},g=(s,l)=>e.jsx("button",{type:"button",role:"option",tabIndex:l===i?0:-1,"aria-label":`React with ${s}`,"aria-selected":l===i,"aria-pressed":t.reactions?.some(x=>x.emoji===s&&x.me)===!0,onClick:()=>{E(t,s,a),f()},children:s},s);return e.jsxs("div",{ref:u,className:"chat-reaction-picker","data-expanded":c?"true":void 0,role:"listbox","aria-label":"React to this message",onKeyDown:k,children:[m.map(g),e.jsx("button",{type:"button",className:"chat-reaction-more","aria-expanded":c,"aria-label":c?"Fewer emoji":"More emoji",onClick:()=>c?p():h(!0),children:c?"‹":"›"}),c?e.jsx("div",{className:"chat-reaction-sheet",role:"presentation",children:A.map((s,l)=>g(s,m.length+l))}):null]})}function be({member:t,nowMs:a}){const r=K(t,a);return r?e.jsxs("div",{className:"chat-conn","aria-label":r.ariaLabel,children:[e.jsxs("span",{className:"chat-conn-state",children:[r.showDot?e.jsx("span",{className:"dot dot--neutral","aria-hidden":"true"}):null,r.summary]}),e.jsx("span",{className:"chat-conn-detail",children:r.detail}),r.routeNote?e.jsx("span",{className:"chat-conn-detail",children:r.routeNote}):null,r.evidence?e.jsx("span",{className:"chat-conn-evidence",children:r.evidence}):null]}):null}function ge({label:t,children:a}){return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"chat-k",children:t}),e.jsx("span",{className:"chat-v",children:a})]})}function ke({at:t,nowMs:a}){return e.jsx("time",{className:"chat-when",dateTime:new Date(t).toISOString(),children:H(t,a)})}export{xe as CopyAction,ge as Field,Q as MessageBody,be as ReceptionBlock,ke as TimeAgo,Y as TrackedAskCard,je as Turn};
@@ -1 +1 @@
1
- import{j as e,r as j}from"./index-DReVb7jZ.js";import{a as $,i as O,d as w,c as W}from"./conversations-Cbg9h_Af.js";import{l as B,i as q,a as E,p as T}from"./conversation-prefs-DNre-Lcx.js";import{m as G,c as J}from"./machine-scope-DJt9RZ2w.js";import{u as K,f as Q}from"./use-fleet-active-asks-D_QOmjg5.js";import{d as X}from"./router-C-MF5-mb.js";import{l as D,i as C,s as Y}from"./sessionRead-CvFz2RHv.js";import{u as Z}from"./use-conversation-list-D5EnpVba.js";import{u as ee}from"./Provider-CNZluAZb.js";import{i as se}from"./agent-state-DDhnFEEP.js";import{A as te}from"./AgentAvatar-NZOqcsB2.js";/* empty css */function ae({children:n,count:t,tone:a="default",title:l,onClick:i}){const d=["collapsed-strip-label",a!=="default"&&`collapsed-strip-label--${a}`,t!=null&&"collapsed-strip-label--has-count",i&&"collapsed-strip-label--button"].filter(Boolean).join(" "),o=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"collapsed-strip-label-mark","aria-hidden":!0}),i?e.jsx("span",{className:"collapsed-strip-label-expand","aria-hidden":!0,children:"›"}):null,e.jsx("span",{className:"collapsed-strip-label-text",children:n}),t!=null?e.jsx("span",{className:"collapsed-strip-label-count",children:t}):null]});return i?e.jsx("button",{type:"button",className:d,title:l??n,"aria-label":l??n,onClick:i,children:o}):e.jsx("div",{className:d,title:l??n,children:o})}function ne({label:n,emptyMark:t="·",showLabel:a=!0,labelTone:l="default",labelCount:i,onLabelClick:d,children:o}){const v=!o||Array.isArray(o)&&o.length===0,p=a?e.jsx(ae,{tone:l,count:i,onClick:d,title:d?`Expand ${n}`:void 0,children:n}):null;return v?e.jsxs("div",{className:"collapsed-strip collapsed-strip--empty","aria-hidden":!0,children:[p,e.jsx("span",{className:"collapsed-strip-empty-mark",children:t})]}):e.jsxs("div",{className:"collapsed-strip",role:"list","aria-label":n,children:[p,o]})}function Ie(){return e.jsx("div",{className:"collapsed-strip-rule","aria-hidden":!0})}function le({title:n,active:t,tone:a="default",ava:l,avaColor:i,glyph:d,avatarNode:o,dot:v,pinned:p,onClick:b}){const m=["collapsed-chip",a==="channel"&&"collapsed-chip--channel",a==="neutral"&&"collapsed-chip--neutral",a==="attention"&&"collapsed-chip--attention",a==="unread"&&"collapsed-chip--unread",t&&"collapsed-chip--active",p&&"collapsed-chip--pinned"].filter(Boolean).join(" ");return e.jsxs("button",{type:"button",role:"listitem",className:m,title:n,"aria-label":n,"aria-current":t?"page":void 0,onClick:b,children:[o?e.jsx("span",{className:"collapsed-chip-avatar-wrap",children:o}):l?e.jsx("span",{className:"collapsed-chip-ava",style:i?{"--ava-color":i}:void 0,children:l}):e.jsx("span",{className:`collapsed-chip-glyph${typeof d=="string"&&d.length>1?" collapsed-chip-glyph--long":""}`,children:d}),v?e.jsx("span",{className:["collapsed-chip-dot",v==="attention"&&"collapsed-chip-dot--attention",v==="live"&&"collapsed-chip-dot--live"].filter(Boolean).join(" "),"aria-hidden":!0}):null,p?e.jsx("span",{className:"collapsed-chip-pin","aria-hidden":!0}):null]})}function we(n){const t=n.trim(),a=t.split(/[\s/_-]+/).filter(Boolean);if(a.length>=2){const l=a[a.length-1];return/^\d+$/.test(l)&&a.length>=3?(a[a.length-2][0]??"?").toUpperCase():(l[0]??"?").toUpperCase()}return(t[0]??"?").toUpperCase()}const ie=3,oe=3,re=4,ce=3;function S(n,t){return[...n].sort((a,l)=>{const i=C(a.lastMessageAt,a.id,t)?0:1,d=C(l.lastMessageAt,l.id,t)?0:1;return i!==d?i-d:(l.lastMessageAt??0)-(a.lastMessageAt??0)})}function de({onExpand:n}){const{route:t,navigate:a,agents:l}=ee(),{sessions:i}=Z(),d=K(),[o,v]=j.useState(()=>B()),[p,b]=j.useState(()=>D()),m=X(t),y=j.useMemo(()=>G(l,m),[l,m]),P=j.useMemo(()=>{const s=new Map;for(const f of l)s.set(f.id,f);return s},[l]),R=t.view==="messages"||t.view==="conversation"?t.conversationId:void 0;j.useEffect(()=>{v(B()),b(D())},[]);const r=j.useMemo(()=>{const s=J(i,y,m).filter(c=>!q(c.id,o)),f=s.filter(c=>E(c.id,o)).sort((c,x)=>T(x.id,o)-T(c.id,o)||(x.lastMessageAt??0)-(c.lastMessageAt??0)).slice(0,ie),g=new Set(f.map(c=>c.id)),h=s.filter(c=>!g.has(c.id));return{pinned:f,channels:S(h.filter(w),p).slice(0,oe),dms:S(h.filter(O),p).slice(0,re),observed:S(h.filter($),p).slice(0,ce),totals:{channels:h.filter(w).length,dms:h.filter(O).length,observed:h.filter($).length,pinned:s.filter(c=>E(c.id,o)).length}}},[i,y,m,o,p]),U=s=>{b(Y(s.id)),a({view:"messages",conversationId:s.id,...m?{machineId:m}:{}})},k=[...r.pinned,...r.channels,...r.dms,...r.observed],A=k.filter(s=>C(s.lastMessageAt,s.id,p)).length,M=(s,f=!1)=>{const g=W(s),h=w(s),c=C(s.lastMessageAt,s.id,p),x=h?void 0:he(s,g),V=x??g,I=s.agentId?P.get(s.agentId):void 0,L=Q(d,s),_=L?.status==="needs_attention",z=L?.status==="working",F=I?se(I.state):!1,H=_?"attention":c?"unread":z||F?"live":null;return e.jsx(le,{title:f?`${g} · pinned`:x?`${g} · ${x}`:g,active:s.id===R,tone:h?"channel":_?"attention":c?"unread":"default",avatarNode:h?void 0:e.jsx(te,{agent:I,name:V,size:28,tile:!0,presence:!1}),glyph:h?pe(g):void 0,dot:H,pinned:f,onClick:()=>U(s)},s.id)},u=[];return r.pinned.length&&u.push(e.jsx(N,{mark:"Pin",count:r.totals.pinned,showMark:u.length>0,children:r.pinned.map(s=>M(s,!0))},"pin")),r.channels.length&&u.push(e.jsx(N,{mark:"#",count:r.totals.channels,showMark:u.length>0,children:r.channels.map(s=>M(s))},"ch")),r.dms.length&&u.push(e.jsx(N,{mark:"DM",count:r.totals.dms,showMark:u.length>0,children:r.dms.map(s=>M(s))},"dm")),r.observed.length&&u.push(e.jsx(N,{mark:"Obs",count:r.totals.observed,showMark:u.length>0,children:r.observed.map(s=>M(s))},"obs")),e.jsx(ne,{label:"Chat",emptyMark:"#",labelTone:A>0?"accent":"default",labelCount:A>0?A:k.length||void 0,onLabelClick:n,children:u})}function pe(n){const a=n.replace(/^#+/,"").match(/[a-z0-9]/i)?.[0]?.toLowerCase()??"?";return e.jsxs("span",{className:"collapsed-chip-channel-badge",children:[e.jsx("span",{className:"collapsed-chip-channel-hash","aria-hidden":!0,children:"#"}),e.jsx("span",{className:"collapsed-chip-channel-text",children:a})]})}function he(n,t){const a=t.toLowerCase();for(const l of n.participants??[]){const i=l.displayName||l.label;if(i&&i.toLowerCase()!==a)return i}}function N({mark:n,count:t,showMark:a=!0,children:l}){return e.jsxs("div",{className:"collapsed-strip-section",role:"group","aria-label":n,children:[a?e.jsxs("div",{className:"collapsed-strip-section-mark",title:t!=null?`${n} · ${t}`:n,children:[e.jsx("span",{className:"collapsed-strip-section-mark-text",children:n}),t!=null&&t>0?e.jsx("span",{className:"collapsed-strip-section-mark-count",children:t>99?"99+":t}):null]}):null,l]})}const Se=Object.freeze(Object.defineProperty({__proto__:null,ChatCollapsedStrip:de},Symbol.toStringTag,{value:"Module"}));export{ne as C,de as a,le as b,we as c,Ie as d,Se as e};
1
+ import{j as e,r as j}from"./index-EsrkGBcv.js";import{a as $,i as O,d as w,c as W}from"./conversations-DoAAO6kA.js";import{l as B,i as q,a as E,p as T}from"./conversation-prefs-DNre-Lcx.js";import{m as G,c as J}from"./machine-scope-DJt9RZ2w.js";import{u as K,f as Q}from"./use-fleet-active-asks-CymmXWH4.js";import{d as X}from"./router-DCtl8wqb.js";import{l as D,i as C,s as Y}from"./sessionRead-CvFz2RHv.js";import{u as Z}from"./use-conversation-list-CY4JciOV.js";import{u as ee}from"./Provider-C35yu29I.js";import{i as se}from"./agent-state-DDhnFEEP.js";import{A as te}from"./AgentAvatar-CrP1eXxk.js";/* empty css */function ae({children:n,count:t,tone:a="default",title:l,onClick:i}){const d=["collapsed-strip-label",a!=="default"&&`collapsed-strip-label--${a}`,t!=null&&"collapsed-strip-label--has-count",i&&"collapsed-strip-label--button"].filter(Boolean).join(" "),o=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"collapsed-strip-label-mark","aria-hidden":!0}),i?e.jsx("span",{className:"collapsed-strip-label-expand","aria-hidden":!0,children:"›"}):null,e.jsx("span",{className:"collapsed-strip-label-text",children:n}),t!=null?e.jsx("span",{className:"collapsed-strip-label-count",children:t}):null]});return i?e.jsx("button",{type:"button",className:d,title:l??n,"aria-label":l??n,onClick:i,children:o}):e.jsx("div",{className:d,title:l??n,children:o})}function ne({label:n,emptyMark:t="·",showLabel:a=!0,labelTone:l="default",labelCount:i,onLabelClick:d,children:o}){const v=!o||Array.isArray(o)&&o.length===0,p=a?e.jsx(ae,{tone:l,count:i,onClick:d,title:d?`Expand ${n}`:void 0,children:n}):null;return v?e.jsxs("div",{className:"collapsed-strip collapsed-strip--empty","aria-hidden":!0,children:[p,e.jsx("span",{className:"collapsed-strip-empty-mark",children:t})]}):e.jsxs("div",{className:"collapsed-strip",role:"list","aria-label":n,children:[p,o]})}function Ie(){return e.jsx("div",{className:"collapsed-strip-rule","aria-hidden":!0})}function le({title:n,active:t,tone:a="default",ava:l,avaColor:i,glyph:d,avatarNode:o,dot:v,pinned:p,onClick:b}){const m=["collapsed-chip",a==="channel"&&"collapsed-chip--channel",a==="neutral"&&"collapsed-chip--neutral",a==="attention"&&"collapsed-chip--attention",a==="unread"&&"collapsed-chip--unread",t&&"collapsed-chip--active",p&&"collapsed-chip--pinned"].filter(Boolean).join(" ");return e.jsxs("button",{type:"button",role:"listitem",className:m,title:n,"aria-label":n,"aria-current":t?"page":void 0,onClick:b,children:[o?e.jsx("span",{className:"collapsed-chip-avatar-wrap",children:o}):l?e.jsx("span",{className:"collapsed-chip-ava",style:i?{"--ava-color":i}:void 0,children:l}):e.jsx("span",{className:`collapsed-chip-glyph${typeof d=="string"&&d.length>1?" collapsed-chip-glyph--long":""}`,children:d}),v?e.jsx("span",{className:["collapsed-chip-dot",v==="attention"&&"collapsed-chip-dot--attention",v==="live"&&"collapsed-chip-dot--live"].filter(Boolean).join(" "),"aria-hidden":!0}):null,p?e.jsx("span",{className:"collapsed-chip-pin","aria-hidden":!0}):null]})}function we(n){const t=n.trim(),a=t.split(/[\s/_-]+/).filter(Boolean);if(a.length>=2){const l=a[a.length-1];return/^\d+$/.test(l)&&a.length>=3?(a[a.length-2][0]??"?").toUpperCase():(l[0]??"?").toUpperCase()}return(t[0]??"?").toUpperCase()}const ie=3,oe=3,re=4,ce=3;function S(n,t){return[...n].sort((a,l)=>{const i=C(a.lastMessageAt,a.id,t)?0:1,d=C(l.lastMessageAt,l.id,t)?0:1;return i!==d?i-d:(l.lastMessageAt??0)-(a.lastMessageAt??0)})}function de({onExpand:n}){const{route:t,navigate:a,agents:l}=ee(),{sessions:i}=Z(),d=K(),[o,v]=j.useState(()=>B()),[p,b]=j.useState(()=>D()),m=X(t),y=j.useMemo(()=>G(l,m),[l,m]),P=j.useMemo(()=>{const s=new Map;for(const f of l)s.set(f.id,f);return s},[l]),R=t.view==="messages"||t.view==="conversation"?t.conversationId:void 0;j.useEffect(()=>{v(B()),b(D())},[]);const r=j.useMemo(()=>{const s=J(i,y,m).filter(c=>!q(c.id,o)),f=s.filter(c=>E(c.id,o)).sort((c,x)=>T(x.id,o)-T(c.id,o)||(x.lastMessageAt??0)-(c.lastMessageAt??0)).slice(0,ie),g=new Set(f.map(c=>c.id)),h=s.filter(c=>!g.has(c.id));return{pinned:f,channels:S(h.filter(w),p).slice(0,oe),dms:S(h.filter(O),p).slice(0,re),observed:S(h.filter($),p).slice(0,ce),totals:{channels:h.filter(w).length,dms:h.filter(O).length,observed:h.filter($).length,pinned:s.filter(c=>E(c.id,o)).length}}},[i,y,m,o,p]),U=s=>{b(Y(s.id)),a({view:"messages",conversationId:s.id,...m?{machineId:m}:{}})},k=[...r.pinned,...r.channels,...r.dms,...r.observed],A=k.filter(s=>C(s.lastMessageAt,s.id,p)).length,M=(s,f=!1)=>{const g=W(s),h=w(s),c=C(s.lastMessageAt,s.id,p),x=h?void 0:he(s,g),V=x??g,I=s.agentId?P.get(s.agentId):void 0,L=Q(d,s),_=L?.status==="needs_attention",z=L?.status==="working",F=I?se(I.state):!1,H=_?"attention":c?"unread":z||F?"live":null;return e.jsx(le,{title:f?`${g} · pinned`:x?`${g} · ${x}`:g,active:s.id===R,tone:h?"channel":_?"attention":c?"unread":"default",avatarNode:h?void 0:e.jsx(te,{agent:I,name:V,size:28,tile:!0,presence:!1}),glyph:h?pe(g):void 0,dot:H,pinned:f,onClick:()=>U(s)},s.id)},u=[];return r.pinned.length&&u.push(e.jsx(N,{mark:"Pin",count:r.totals.pinned,showMark:u.length>0,children:r.pinned.map(s=>M(s,!0))},"pin")),r.channels.length&&u.push(e.jsx(N,{mark:"#",count:r.totals.channels,showMark:u.length>0,children:r.channels.map(s=>M(s))},"ch")),r.dms.length&&u.push(e.jsx(N,{mark:"DM",count:r.totals.dms,showMark:u.length>0,children:r.dms.map(s=>M(s))},"dm")),r.observed.length&&u.push(e.jsx(N,{mark:"Obs",count:r.totals.observed,showMark:u.length>0,children:r.observed.map(s=>M(s))},"obs")),e.jsx(ne,{label:"Chat",emptyMark:"#",labelTone:A>0?"accent":"default",labelCount:A>0?A:k.length||void 0,onLabelClick:n,children:u})}function pe(n){const a=n.replace(/^#+/,"").match(/[a-z0-9]/i)?.[0]?.toLowerCase()??"?";return e.jsxs("span",{className:"collapsed-chip-channel-badge",children:[e.jsx("span",{className:"collapsed-chip-channel-hash","aria-hidden":!0,children:"#"}),e.jsx("span",{className:"collapsed-chip-channel-text",children:a})]})}function he(n,t){const a=t.toLowerCase();for(const l of n.participants??[]){const i=l.displayName||l.label;if(i&&i.toLowerCase()!==a)return i}}function N({mark:n,count:t,showMark:a=!0,children:l}){return e.jsxs("div",{className:"collapsed-strip-section",role:"group","aria-label":n,children:[a?e.jsxs("div",{className:"collapsed-strip-section-mark",title:t!=null?`${n} · ${t}`:n,children:[e.jsx("span",{className:"collapsed-strip-section-mark-text",children:n}),t!=null&&t>0?e.jsx("span",{className:"collapsed-strip-section-mark-count",children:t>99?"99+":t}):null]}):null,l]})}const Se=Object.freeze(Object.defineProperty({__proto__:null,ChatCollapsedStrip:de},Symbol.toStringTag,{value:"Module"}));export{ne as C,de as a,le as b,we as c,Ie as d,Se as e};