@openscout/scout 0.2.76 → 0.2.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -2
- package/bin/openscout-runtime.mjs +48 -30
- package/bin/scout.mjs +2 -2
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/client/assets/ActivityScreen-Cu_1V4bq.js +1 -0
- package/dist/client/assets/AddProjectForm-DMnobKch.js +1 -0
- package/dist/client/assets/AgentAvatar-D90c1Rzk.js +1 -0
- package/dist/client/assets/AgentConfigurationScreen-BqfOz90D.js +1 -0
- package/dist/client/assets/AgentDefinitionsWorkspace-CUpUrY57.js +1 -0
- package/dist/client/assets/AgentDetailCard-BcRBRp88.js +1 -0
- package/dist/client/assets/AgentDetailCard-C4WVeJvJ.css +1 -0
- package/dist/client/assets/AgentFloorView-8LoAEBwS.js +1 -0
- package/dist/client/assets/AgentInfoScreen-DZs2_ibL.js +1 -0
- package/dist/client/assets/AgentLaneCard-RrNnDZu8.js +1 -0
- package/dist/client/assets/AgentLaneChrome-D9ZwUKrl.js +1 -0
- package/dist/client/assets/AgentLaneDetailSheet-BXbPls9N.js +5 -0
- package/dist/client/assets/AgentLaneSummaryResize-BhFmGNzT.js +1 -0
- package/dist/client/assets/AgentLanesEmbedScreen-W3qs022h.js +1 -0
- package/dist/client/assets/AgentLanesPreflight-eSAoDsPi.js +1 -0
- package/dist/client/assets/AgentLanesView-B9vuEEmZ.js +2 -0
- package/dist/client/assets/AgentLiveActions-CGS-Bxb7.css +1 -0
- package/dist/client/assets/AgentLiveActions-DBtnD0qE.js +1 -0
- package/dist/client/assets/AgentSessions-DyqOf4nG.js +6 -0
- package/dist/client/assets/AgentsConsole-BgiYP2wR.js +1 -0
- package/dist/client/assets/AgentsConsole-BjSTs-TV.css +1 -0
- package/dist/client/assets/AgentsScreen-DBi8x4MB.js +1 -0
- package/dist/client/assets/AgentsSubnav-DIEO4NPx.js +1 -0
- package/dist/client/assets/AtopView-BCkae3e1.js +1 -0
- package/dist/client/assets/BackToPicker-BRvfostO.js +1 -0
- package/dist/client/assets/BackToPicker-CdgVu-to.css +1 -0
- package/dist/client/assets/BriefingDetailScreen-BwFyysT8.js +6 -0
- package/dist/client/assets/BriefingsScreen-BQEevztH.js +1 -0
- package/dist/client/assets/BrokerMetadataPanel-7UjcuNjd.js +1 -0
- package/dist/client/assets/BrokerScreen-7ekklu88.js +5 -0
- package/dist/client/assets/ChatCollapsedStrip-CQSYSd8s.js +1 -0
- package/dist/client/assets/CodeDiffPane-DDPt6KPh.js +1 -0
- package/dist/client/assets/CodeProjectPicker-DqKFCpLU.js +2 -0
- package/dist/client/assets/CodeScreen-BxCrpRHd.js +1 -0
- package/dist/client/assets/ContextMenu-bARZqTzD.js +1 -0
- package/dist/client/assets/ConversationComposer-Bla3DDvM.js +1 -0
- package/dist/client/assets/ConversationFeedRows-B_gPxcqA.js +1 -0
- package/dist/client/assets/ConversationHeader-DE3FC0m-.js +1 -0
- package/dist/client/assets/ConversationPanels-DLek4H6A.js +2 -0
- package/dist/client/assets/ConversationScreen-BDRhx-RU.js +1 -0
- package/dist/client/assets/ConversationScreen-C9yMAMYF.css +1 -0
- package/dist/client/assets/ConversationStatus-BwVLiiO4.js +1 -0
- package/dist/client/assets/DataTable-E8s_MmoA.js +1 -0
- package/dist/client/assets/DispatchAftermath-Dpe88DFX.js +1 -0
- package/dist/client/assets/DocumentFocusViewer-BeVwwl26.js +1 -0
- package/dist/client/assets/EmbeddableSurfacesLab-BQqFQVnI.js +1 -0
- package/dist/client/assets/EmptyState-4F9XDFQm.js +1 -0
- package/dist/client/assets/FileViewerPane-CLgUhSm4.js +3 -0
- package/dist/client/assets/FleetSearch-Dz5euQJe.js +1 -0
- package/dist/client/assets/FleetSearch-EXOe8ulE.css +1 -0
- package/dist/client/assets/FlightObserveScreen-6RpZYwVz.js +1 -0
- package/dist/client/assets/FollowScreen-DZ4qfYOY.js +1 -0
- package/dist/client/assets/HarnessMark-Cbv3Ib0c.js +1 -0
- package/dist/client/assets/HarnessesScreen-CznAImej.js +1 -0
- package/dist/client/assets/HomeHero-B3uYd-pP.js +1 -0
- package/dist/client/assets/HomeHero-DEl-WBsT.css +1 -0
- package/dist/client/assets/KnowledgeSearchInspector-Dgdkfvvz.js +1 -0
- package/dist/client/assets/KnowledgeSearchScreen-DJDGGaqC.js +1 -0
- package/dist/client/assets/LaneToolHoverCard-Bla0gBdm.js +1 -0
- package/dist/client/assets/LaneTraceDetailSheet-D1CspRbl.js +1 -0
- package/dist/client/assets/LaneTraceEventFocus-BF9ERP5O.js +1 -0
- package/dist/client/assets/MeshCanvas-DFEPkpqY.js +3 -0
- package/dist/client/assets/MeshCanvasMinimap-CyVFYixr.js +1 -0
- package/dist/client/assets/MeshCanvasMinimap-Dv7nMbl5.css +1 -0
- package/dist/client/assets/MeshScreen-DFgevn8N.js +1 -0
- package/dist/client/assets/MeshTopologyView-CalkZghg.js +2 -0
- package/dist/client/assets/MessageComposerSuggestions-DpxN9WiB.js +1 -0
- package/dist/client/assets/MessagesScreen-C8YKW10Y.js +1 -0
- package/dist/client/assets/MissionControlView-lUeAiSVg.js +1 -0
- package/dist/client/assets/MissionFocusOverlay-wlCmWDCT.js +1 -0
- package/dist/client/assets/MissionLeftAgentRow-BpZWntfl.js +1 -0
- package/dist/client/assets/MissionLogPane-__MVtEl9.js +1 -0
- package/dist/client/assets/NewAgentModal-Bg-eWHpY.js +1 -0
- package/dist/client/assets/NewAgentModal-ru8u5YdJ.css +1 -0
- package/dist/client/assets/NewChatComposer-Cs6OsxK6.js +19 -0
- package/dist/client/assets/NewChatComposer-W-t-L4oV.css +1 -0
- package/dist/client/assets/NewChatOrigin-Bk2OyVjI.js +1 -0
- package/dist/client/assets/ObserveEmbedScreen-y2EpuqRZ.js +2 -0
- package/dist/client/assets/ObserveTextFlow-rsFj_rVo.js +2 -0
- package/dist/client/assets/ObservedTopologyPanel-BsBsvVPL.css +1 -0
- package/dist/client/assets/ObservedTopologyPanel-DyUeV98H.js +2 -0
- package/dist/client/assets/OpenScoutAppShell-Bh6FnEJO.css +1 -0
- package/dist/client/assets/OpenScoutAppShell-C_URc8sV.js +87 -0
- package/dist/client/assets/OpsAgentsView-UN7iOscs.js +1 -0
- package/dist/client/assets/OpsScreen-Buf3LKjb.js +1 -0
- package/dist/client/assets/OpsSubnav-DsuXzHah.js +1 -0
- package/dist/client/assets/PlanView-C1CjH3PG.js +1 -0
- package/dist/client/assets/ProjectAgentProfile-DJusrAV-.js +1 -0
- package/dist/client/assets/ProjectAgentProfileBar-CtTpj6fU.js +1 -0
- package/dist/client/assets/ProjectAgentProfileHero-BFwNJo_N.js +1 -0
- package/dist/client/assets/ProjectsInbox-GhVMxOhw.js +2 -0
- package/dist/client/assets/ProjectsRail-BgiuV4LR.js +1 -0
- package/dist/client/assets/ProjectsScreen-eNUBy4YU.js +1 -0
- package/dist/client/assets/ProjectsThreadAside-CoBgnHmr.js +1 -0
- package/dist/client/assets/Provider-C7UKGHQy.js +1 -0
- package/dist/client/assets/Provider-CCzjtkda.css +1 -0
- package/dist/client/assets/RailRow-BoGxAHNF.js +1 -0
- package/dist/client/assets/RailRow-Cf9LOiEj.css +1 -0
- package/dist/client/assets/RawSessionsTable-DL8y_eEy.js +1 -0
- package/dist/client/assets/RealtimeVoiceScreen-ffS-39zy.js +1 -0
- package/dist/client/assets/RepoDiffEmbedScreen-C0rumUME.js +1 -0
- package/dist/client/assets/RepoDiffPageScreen-DMv6DioL.js +1 -0
- package/dist/client/assets/RepoDiffViewer-D_exm6xK.js +7 -0
- package/dist/client/assets/RepoDiffViewerLazy-BPgF92Bg.js +2 -0
- package/dist/client/assets/ReposScreen-CB_YBWYf.js +6 -0
- package/dist/client/assets/ScoutDeckSurface-CxIYFyWx.js +1 -0
- package/dist/client/assets/ScoutDeckSurface-uhmuZRzC.css +1 -0
- package/dist/client/assets/ScoutSurface-CYz_TcWC.js +1 -0
- package/dist/client/assets/ScoutbotBroadcastChip-CxtYZWPZ.css +1 -0
- package/dist/client/assets/ScoutbotBroadcastChip-L_R9atj0.js +2 -0
- package/dist/client/assets/ScoutbotFxLab-CgiZMDMW.js +4 -0
- package/dist/client/assets/ScoutbotRealtimeVoiceCall-FMQOr1Np.js +1 -0
- package/dist/client/assets/SecondaryNav-B3-nh5dM.js +1 -0
- package/dist/client/assets/SessionEmbedScreen-BVC7yvWF.js +1 -0
- package/dist/client/assets/SessionObserve-BpggNO_M.css +1 -0
- package/dist/client/assets/SessionObserve-yfXFafp8.js +12 -0
- package/dist/client/assets/SessionRefScreen-DRgJu7Jo.js +1 -0
- package/dist/client/assets/SessionsScreen-D6XUsZfA.js +1 -0
- package/dist/client/assets/SettingsDrawer-CmJt72ww.css +1 -0
- package/dist/client/assets/SettingsDrawer-XfdAa_nD.js +3 -0
- package/dist/client/assets/SettingsScreen-Cy8z-EuR.js +1 -0
- package/dist/client/assets/ShikiPane-Ap1iPxYb.js +15 -0
- package/dist/client/assets/SlidePanel-Bg5dVaIa.css +1 -0
- package/dist/client/assets/SlidePanel-COwtoJqR.js +1 -0
- package/dist/client/assets/SpriteAvatar-DyaGuhik.js +1 -0
- package/dist/client/assets/StatusPill-DhBL__p8.js +1 -0
- package/dist/client/assets/TailView-DGj_5HA9.js +2 -0
- package/dist/client/assets/TailView-Mj3AU2u0.css +1 -0
- package/dist/client/assets/Terminal-CqvGbjXU.js +1 -0
- package/dist/client/assets/TerminalEmbedScreen-DuZZFFzW.js +1 -0
- package/dist/client/assets/TextDocumentSurface-BpAw4eQS.js +4 -0
- package/dist/client/assets/TmuxPeek-m1osv33Q.js +1 -0
- package/dist/client/assets/VoicePermissionsPanel-DsK53ar4.js +1 -0
- package/dist/client/assets/VoicePermissionsPanel-RijAZ1gP.css +1 -0
- package/dist/client/assets/WorkDetailScreen-Bx0JimPC.js +5 -0
- package/dist/client/assets/WorkFilesViewer-Btl6C2Q1.js +1 -0
- package/dist/client/assets/activity-CA8qS6PI.js +1 -0
- package/dist/client/assets/{addon-fit-BOSszMLK.js → addon-fit-BZ-kXjeN.js} +1 -1
- package/dist/client/assets/{addon-webgl-WE840gr0.js → addon-webgl-D9-EQVEK.js} +1 -1
- package/dist/client/assets/agent-chat-Bfjd9y6c.js +1 -0
- package/dist/client/assets/agent-definitions-CymTYqvo.css +1 -0
- package/dist/client/assets/agent-directory-studio-injection-Bc8590z5.css +1 -0
- package/dist/client/assets/agent-essentials-BSY1o46q.js +1 -0
- package/dist/client/assets/agent-floor-CuJr1iK1.css +1 -0
- package/dist/client/assets/agent-lane-card-Dm7YWoew.css +1 -0
- package/dist/client/assets/agent-lane-card-model-r2frk57c.js +1 -0
- package/dist/client/assets/agent-lane-detail-Djm3YJEa.js +1 -0
- package/dist/client/assets/agent-lane-preview-CmHVe3dU.js +4 -0
- package/dist/client/assets/agent-lanes-BDNktFBZ.css +1 -0
- package/dist/client/assets/agent-lanes-model-B4YTt4OF.js +2 -0
- package/dist/client/assets/agents-detail-redesign-h34ROjOW.css +1 -0
- package/dist/client/assets/agents-project-COzHxZAF.css +1 -0
- package/dist/client/assets/agents-project-model-UYiamtrU.js +1 -0
- package/dist/client/assets/agents-screen-BMu6PpRY.css +1 -0
- package/dist/client/assets/api-BkjHJfgJ.js +1 -0
- package/dist/client/assets/api-h5zurxmi.js +1 -0
- package/dist/client/assets/{arc.es-KGqGKGIy.js → arc.es-CQBb-dVu.js} +1 -1
- package/dist/client/assets/arrow-down-BPLe0am9.js +1 -0
- package/dist/client/assets/arrow-left-DEZzHiPS.js +1 -0
- package/dist/client/assets/arrow-up-right-ClxBnsi7.js +1 -0
- package/dist/client/assets/bash-format-BRV5C6Gv.js +1 -0
- package/dist/client/assets/bot-eu8pBNvI.js +1 -0
- package/dist/client/assets/briefings-BwuAFQK6.css +1 -0
- package/dist/client/assets/broker-display-pp33bLsu.js +2 -0
- package/dist/client/assets/cache-Dr0why2k.js +2 -0
- package/dist/client/assets/check-DjgFiBxb.js +1 -0
- package/dist/client/assets/chevron-down-BGk5qoEw.js +1 -0
- package/dist/client/assets/chevron-right-XiIHsk4m.js +1 -0
- package/dist/client/assets/chunk-T65CQEWV-CrzwSeEt.js +1 -0
- package/dist/client/assets/chunk-YOZR3KYS-Bet8khjg.js +47 -0
- package/dist/client/assets/clipboard-e3fSpeo7.js +1 -0
- package/dist/client/assets/code-screen-DrKinCyh.css +1 -0
- package/dist/client/assets/code-xml-B6jOCM4V.js +1 -0
- package/dist/client/assets/collapsed-strip-Dz-of2SM.css +1 -0
- package/dist/client/assets/colors-BtO5_zlx.js +1 -0
- package/dist/client/assets/console-B1IBqLI_.css +1 -0
- package/dist/client/assets/content-BDt9VBPk.js +1 -0
- package/dist/client/assets/content-BIXf4cKR.js +1 -0
- package/dist/client/assets/content-BLm0NBJM.js +1 -0
- package/dist/client/assets/content-C2EwTb2y.js +1 -0
- package/dist/client/assets/content-C5UbLsDF.js +1 -0
- package/dist/client/assets/content-CHU0wwA3.css +1 -0
- package/dist/client/assets/content-CR3vdrYY.js +1 -0
- package/dist/client/assets/content-CSPVmo2s.js +1 -0
- package/dist/client/assets/content-C_FGqx1X.js +1 -0
- package/dist/client/assets/content-CvlVUOG8.js +1 -0
- package/dist/client/assets/content-D5kJmfgl.js +1 -0
- package/dist/client/assets/content-DTpQsomG.js +1 -0
- package/dist/client/assets/content-DikVsqLf.js +1 -0
- package/dist/client/assets/content-DlUe5Ono.js +1 -0
- package/dist/client/assets/content-GIBv_55n.js +1 -0
- package/dist/client/assets/content-Q2oclDzi.js +1 -0
- package/dist/client/assets/context-budget-CbB4BDcO.js +1 -0
- package/dist/client/assets/conversation-icons-IIG5ha6D.js +1 -0
- package/dist/client/assets/conversation-model-B47vYmWN.js +1 -0
- package/dist/client/assets/conversation-motion-features-BdAONVls.js +1 -0
- package/dist/client/assets/conversation-prefs-DNre-Lcx.js +1 -0
- package/dist/client/assets/copy-CQGYbxdu.js +1 -0
- package/dist/client/assets/createLucideIcon-OpA4Amw5.js +1 -0
- package/dist/client/assets/ctx-panel-B4s49N9e.css +1 -0
- package/dist/client/assets/discover-C1YwpBDE.js +2 -0
- package/dist/client/assets/document-focus-viewer-BSC_JwVE.css +1 -0
- package/dist/client/assets/embed-entry-BAcGL3g9.js +2 -0
- package/dist/client/assets/external-link-CXBytO9o.js +1 -0
- package/dist/client/assets/eye-0PvebX_a.js +1 -0
- package/dist/client/assets/file-text-BODxCjcz.js +1 -0
- package/dist/client/assets/flight-observe-GFg9L8ft.css +1 -0
- package/dist/client/assets/follow-route-BvcGtBIL.js +1 -0
- package/dist/client/assets/fx-z37u1o2z.js +1 -0
- package/dist/client/assets/gestures-CcwOTu8C.js +1 -0
- package/dist/client/assets/harnesses-screen-DBZoTZz8.css +1 -0
- package/dist/client/assets/home-live-action-B22u89j7.js +1 -0
- package/dist/client/assets/home-moving-signal-CAa0V91u.css +1 -0
- package/dist/client/assets/home-moving-signal-CK147hxn.js +1 -0
- package/dist/client/assets/home-now-card-BgvNWuea.js +1 -0
- package/dist/client/assets/home-now-card-nano-BcjnOU9H.js +1 -0
- package/dist/client/assets/hooks-B6y_O2FB.js +2 -0
- package/dist/client/assets/hooks-D6NI15f6.css +1 -0
- package/dist/client/assets/inbox-thread-redesign-Bz4FjWzr.css +1 -0
- package/dist/client/assets/index-BWHgHrtv.js +1 -0
- package/dist/client/assets/index-BcuhqXLe.js +1 -0
- package/dist/client/assets/index-CJXzfjo9.js +1 -0
- package/dist/client/assets/index-CvF09yvf.css +1 -0
- package/dist/client/assets/index-DMiGbrBt.js +10 -0
- package/dist/client/assets/index-DQPvraRS.js +1 -0
- package/dist/client/assets/index-DxGoC5l5.css +1 -0
- package/dist/client/assets/inspector-panel-DPoCWxKs.js +2 -0
- package/dist/client/assets/keyboard-nav-2kv_tGUS.js +1 -0
- package/dist/client/assets/knowledge-search-CVxQwxPn.js +1 -0
- package/dist/client/assets/knowledge-search-DjrQdiiW.css +1 -0
- package/dist/client/assets/lane-ask-display-B6iCAVcd.js +18 -0
- package/dist/client/assets/lane-edit-display-C_Aujldz.js +9 -0
- package/dist/client/assets/lane-observe-D0rfKDnU.js +7 -0
- package/dist/client/assets/lane-roster-store-D8x1jac2.js +1 -0
- package/dist/client/assets/lane-tool-detail-0WhMf4Vj.js +9 -0
- package/dist/client/assets/left-Bk3XnxPD.css +1 -0
- package/dist/client/assets/left-C--GiIh8.js +2 -0
- package/dist/client/assets/left-CAaRBK9S.css +1 -0
- package/dist/client/assets/left-CCoobxPS.css +1 -0
- package/dist/client/assets/left-Cj7Rt89X.js +1 -0
- package/dist/client/assets/left-CpNEtFEg.js +1 -0
- package/dist/client/assets/left-CzXAuK_t.js +2 -0
- package/dist/client/assets/left-agents-Bo9sO1by.js +1 -0
- package/dist/client/assets/left-bN4PCAXa.js +1 -0
- package/dist/client/assets/left-default-DV9GdvYi.js +1 -0
- package/dist/client/assets/left-jYYGAOYD.js +1 -0
- package/dist/client/assets/left-lanes-D0l_Co7V.js +1 -0
- package/dist/client/assets/left-mission-Ci7zREkQ.js +1 -0
- package/dist/client/assets/left-mission-DSenPIyb.css +1 -0
- package/dist/client/assets/left-plan-D4U1uflW.js +2 -0
- package/dist/client/assets/library-D-RxGiCw.js +1 -0
- package/dist/client/assets/loader-circle-CbHjZsz1.js +1 -0
- package/dist/client/assets/local-agents--00gLMqr.js +1 -0
- package/dist/client/assets/mentions-jSuTGeet.js +1 -0
- package/dist/client/assets/mesh-buckets-CfAukILK.js +1 -0
- package/dist/client/assets/mesh-screen-BSDUjrnV.css +1 -0
- package/dist/client/assets/mesh-view-store-CWidRbTE.js +1 -0
- package/dist/client/assets/message-circle-CG-96zts.js +1 -0
- package/dist/client/assets/message-markup-3J9pi3nx.js +15 -0
- package/dist/client/assets/message-square-DSaGpjFU.js +1 -0
- package/dist/client/assets/message-visibility-kJM8XcSG.js +1 -0
- package/dist/client/assets/mission-control-D3ikEPND.css +1 -0
- package/dist/client/assets/mission-control-model-C0fByIjm.js +1 -0
- package/dist/client/assets/mission-control-store-BlnEhiCq.js +1 -0
- package/dist/client/assets/model-Co0zkMIc.js +1 -0
- package/dist/client/assets/model-CpAxGuis.js +1 -0
- package/dist/client/assets/observe-CuLGD9Zp.js +1 -0
- package/dist/client/assets/openAgent-Bjt57GdM.js +1 -0
- package/dist/client/assets/openContent-C6XO6kr5.js +1 -0
- package/dist/client/assets/operator-attention-BwSPeheT.js +1 -0
- package/dist/client/assets/ops-agents-BOYxzPTm.css +1 -0
- package/dist/client/assets/ops-atop-BB4B4JdE.css +1 -0
- package/dist/client/assets/ops-screen-giu3If_N.css +1 -0
- package/dist/client/assets/page-status-DpkedE1F.js +1 -0
- package/dist/client/assets/page-status-bar-ByUD7VPM.css +1 -0
- package/dist/client/assets/plan-view-D56fneVF.css +1 -0
- package/dist/client/assets/plus--b1raV_O.js +1 -0
- package/dist/client/assets/profile-CVRziEDA.js +1 -0
- package/dist/client/assets/project-overview-helpers-BQTc_Ous.js +1 -0
- package/dist/client/assets/projects-inbox-CHyUFQ6w.js +1 -0
- package/dist/client/assets/projects-inbox-COZ23dLR.css +1 -0
- package/dist/client/assets/radio-Bz8ZePxj.js +1 -0
- package/dist/client/assets/refresh-cw-BBmAnCB7.js +1 -0
- package/dist/client/assets/repo-diff-C9Qs-bEn.css +1 -0
- package/dist/client/assets/resizable-columns-C7ygvLt8.css +1 -0
- package/dist/client/assets/resolve-panes-r9B3mpW7.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-DcG8xGaB.js +1 -0
- package/dist/client/assets/right-BHeiIaty.js +1 -0
- package/dist/client/assets/right-BkgKo9VT.js +1 -0
- package/dist/client/assets/right-BpEU5jWE.js +1 -0
- package/dist/client/assets/right-CRZXoy-X.js +1 -0
- package/dist/client/assets/right-ChF_pbPy.js +1 -0
- package/dist/client/assets/right-DMoUT3KN.js +1 -0
- package/dist/client/assets/right-DjRXbnRP.js +2 -0
- package/dist/client/assets/right-T4Ue6EqM.js +1 -0
- package/dist/client/assets/right-wzrLXKur.js +1 -0
- package/dist/client/assets/rocket-BSNS_rLs.js +1 -0
- package/dist/client/assets/router-Bq5dwf78.js +1 -0
- package/dist/client/assets/runtime-picker-Bcl5iIX5.js +1 -0
- package/dist/client/assets/runtime-picker-vhm0gtLs.css +1 -0
- package/dist/client/assets/scope-views-4khCg2_z.css +1 -0
- package/dist/client/assets/scope-views-U-ucT9m0.js +1 -0
- package/dist/client/assets/scout-voice-CU5c0LGi.js +1 -0
- package/dist/client/assets/scoutbot-BTIErYHo.js +3 -0
- package/dist/client/assets/scroll-text-D6Pdnar7.js +1 -0
- package/dist/client/assets/search-CWfZtOt2.js +1 -0
- package/dist/client/assets/secondaryNavConfig-DqUIp0Es.js +1 -0
- package/dist/client/assets/secondaryNavConfig-xssF_ubT.css +1 -0
- package/dist/client/assets/selection-bridge-16pk1qyG.js +1 -0
- package/dist/client/assets/send-horizontal-Bg5-QggH.js +1 -0
- package/dist/client/assets/server-CPp4ZJhZ.js +1 -0
- package/dist/client/assets/session-catalog-BmoyVTJ_.js +1 -0
- package/dist/client/assets/session-table-DZcrKoIH.js +1 -0
- package/dist/client/assets/sessionRead-CvFz2RHv.js +1 -0
- package/dist/client/assets/sliders-horizontal-1oW76Xc9.js +1 -0
- package/dist/client/assets/sparkles-ClfRJQ6w.js +1 -0
- package/dist/client/assets/sse-CjIkKo46.js +1 -0
- package/dist/client/assets/status-tone-BM_zuRy1.js +1 -0
- package/dist/client/assets/surface-activity-B1rgWB1i.js +1 -0
- package/dist/client/assets/system-surfaces-redesign-CD26LFc0.css +1 -0
- package/dist/client/assets/tail-display-BdyoLvzY.js +2 -0
- package/dist/client/assets/tail-events-D19uAGe3.js +1 -0
- package/dist/client/assets/terminal-B9AOZQKR.js +1 -0
- package/dist/client/assets/terminal-relay-CWbJ1RCW.js +1 -0
- package/dist/client/assets/terminal-screen-19jAI0Cw.css +1 -0
- package/dist/client/assets/terminal-sessions-D5CIR2OL.js +1 -0
- package/dist/client/assets/terminal-takeover-B8UeD9OX.js +1 -0
- package/dist/client/assets/text-DsBWV_4k.js +1 -0
- package/dist/client/assets/time-DltNTpLl.js +1 -0
- package/dist/client/assets/types-B0PlfpKc.js +1 -0
- package/dist/client/assets/ui-LM8pS8qE.js +1 -0
- package/dist/client/assets/use-conversation-list-Byab41G6.js +1 -0
- package/dist/client/assets/use-fleet-active-asks-BIbQx5AS.js +1 -0
- package/dist/client/assets/use-reduced-motion-RRBkmVkk.js +1 -0
- package/dist/client/assets/useAgentHoverCard-DMrbBif0.js +1 -0
- package/dist/client/assets/useContentSecondaryNav-DMl1WNm7.js +1 -0
- package/dist/client/assets/usePierreRuntime-wC-yMtBb.js +50 -0
- package/dist/client/assets/voice-levels-Dcr3jglk.js +1 -0
- package/dist/client/assets/wrench-Bkc_0lKF.js +1 -0
- package/dist/client/assets/x-D3GElQbe.js +1 -0
- package/dist/client/assets/{xterm-6eL7V7pF.js → xterm-BKR8oAkR.js} +1 -1
- package/dist/client/index.html +6 -3
- package/dist/drizzle/0003_harsh_meltdown.sql +45 -0
- package/dist/drizzle/0004_medical_aaron_stack.sql +40 -0
- package/dist/drizzle/0005_wet_shriek.sql +57 -0
- package/dist/drizzle/0006_woozy_dark_beast.sql +1 -0
- package/dist/drizzle/README.md +7 -0
- package/dist/drizzle/meta/0003_snapshot.json +4952 -0
- package/dist/drizzle/meta/0004_snapshot.json +5235 -0
- package/dist/drizzle/meta/0005_snapshot.json +5599 -0
- package/dist/drizzle/meta/0006_snapshot.json +5606 -0
- package/dist/drizzle/meta/_journal.json +28 -0
- package/dist/main.mjs +24907 -12910
- package/dist/node/main.mjs +10212 -195
- package/dist/openscout-terminal-relay.mjs +507 -64
- package/dist/pairing-runtime-controller.mjs +10793 -5165
- package/dist/runtime/base-daemon.mjs +627 -159
- package/dist/runtime/broker-daemon.mjs +65039 -30990
- package/dist/runtime/broker-process-manager.mjs +247 -54
- package/dist/runtime/mesh-discover.mjs +246 -54
- package/dist/scout-control-plane-web.mjs +56699 -47427
- package/dist/scout-web-server.mjs +56699 -47427
- package/package.json +1 -1
- package/dist/client/assets/RepoDiffViewer-DLVleMPW.js +0 -56
- package/dist/client/assets/embed-entry-BdmREZuc.js +0 -1
- package/dist/client/assets/index-DPFmfHm5.js +0 -271
- package/dist/client/assets/index-jpYnsyHM.css +0 -1
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{r as o,j as e}from"./index-DMiGbrBt.js";import{S as ze}from"./SlidePanel-COwtoJqR.js";import{a as de}from"./api-h5zurxmi.js";import{A as He}from"./AgentAvatar-D90c1Rzk.js";import{H as qe}from"./HarnessMark-Cbv3Ib0c.js";import{t as re}from"./time-DltNTpLl.js";import{h as Je}from"./tail-display-BdyoLvzY.js";import{a as Ge}from"./colors-BtO5_zlx.js";import{c as V}from"./clipboard-e3fSpeo7.js";import{d as Ke,c as Ve}from"./context-budget-CbB4BDcO.js";import{l as Ue}from"./router-Bq5dwf78.js";import{u as Qe}from"./Provider-C7UKGHQy.js";import{s as Xe,t as Ye,b as Ze}from"./bash-format-BRV5C6Gv.js";import{i as es}from"./keyboard-nav-2kv_tGUS.js";import{o as te}from"./openContent-C6XO6kr5.js";import{b as ss,f as Se}from"./agent-lane-preview-CmHVe3dU.js";import{i as as}from"./terminal-sessions-D5CIR2OL.js";import{b as Le,a as ts,r as ns,d as ls}from"./agent-lane-detail-Djm3YJEa.js";import{l as is,a as rs,s as cs}from"./agent-lanes-model-B4YTt4OF.js";import{E as he}from"./external-link-CXBytO9o.js";async function os(s){return de("/api/session-control/compact",{method:"POST",body:JSON.stringify(s)})}function $e(s){return as(s.id)}function ds(s){return Le(s).sessionId?.trim()||null}function Ie(s){const t=ds(s);if(!t)return null;const n=$e(s.agent)?void 0:s.agent.id;return{view:"sessions",sessionId:t,...n?{agentId:n}:{}}}function hs(s){return Ie(s)}function us(s){return $e(s.agent)?null:{view:"agents-v2",agentId:s.agent.id,tab:"profile"}}const ms={created:"+",modified:"~",read:"○"},ps={blocked:"blocked",completed:"done",in_progress:"active",pending:"todo",unknown:"step"},Te=["s-lane-sheet-vitals","s-lane-sheet-runtime","s-lane-sheet-files","s-lane-sheet-commands","s-lane-sheet-plans","s-lane-sheet-docs"];function ce(s){return!!(s&&Te.includes(s))}function fs(){if(typeof window>"u")return null;const s=window.location.hash.replace(/^#/,"");return ce(s)?s:null}function ne(s){return typeof s!="number"||!Number.isFinite(s)?"—":s.toLocaleString()}function xs(s){return s>=1e6?`${(s/1e6).toFixed(1)}M`:s>=1e3?`${(s/1e3).toFixed(s>=1e5?0:1)}k`:`${s}`}function js(s){const t=s.lastIndexOf("/");return t<0?{dir:"",base:s}:{dir:s.slice(0,t+1),base:s.slice(t+1)}}const gs=new Set(["bash","shell","terminal","exec","run","command","exec_command","shell_command","local_shell","container_exec","container.exec"]);function vs(s){return s.replace(/\\(["\\/bfnrt])/g,(t,n)=>{switch(n){case"n":return`
|
|
2
|
+
`;case"t":return" ";case"r":return"\r";case"b":return"\b";case"f":return"\f";default:return n}})}function ye(s){const t=s.filter(r=>typeof r=="string");if(t.length===0)return"";const n=t[0].replace(/^.*\//,"");return(t.length>=3&&(n==="bash"||n==="sh"||n==="zsh"||n==="fish")&&/^-[a-z]*c$/.test(t[1])?t.slice(2):t).join(" ").trim()}function Ns(s){const t=s?.trim();if(!t)return"";if(t.startsWith("{"))try{const n=JSON.parse(t);for(const i of["command","cmd","script","input","code"]){const r=n[i];if(typeof r=="string"&&r.trim())return r.trim();if(Array.isArray(r)){const l=ye(r);if(l)return l}}}catch{const n=t.match(/"(?:command|cmd|script|input|code)"\s*:\s*"((?:[^"\\]|\\.)*)/);if(n&&n[1].trim())return vs(n[1]).trim()}else if(t.startsWith("["))try{const n=JSON.parse(t);if(Array.isArray(n)){const i=ye(n);if(i)return i}}catch{}return t}function bs(s){const t=s.result;if(t)for(const n of["status","exit","matches","result","summary"]){const i=t[n];if(i!=null&&`${i}`.trim())return`${i}`.trim().slice(0,24)}return null}function ws(s,t=12){if(!s)return[];const n=[];for(const i of s.events){if(i.kind!=="tool"||!gs.has((i.tool??"").trim().toLowerCase()))continue;const r=Ns(i.arg);!r||r==="started"||r==="completed"||r.startsWith("[")||n.push({id:i.id,command:r,outcome:bs(i)})}return n.slice(-t)}function ks(s,t){const n=new Map;for(const i of t?.events??[]){if(i.kind!=="tool"||!i.diff||!i.arg)continue;const r=i.arg.trim().split(/[\\/]/).filter(Boolean).pop();if(!r)continue;const l=n.get(r)??{add:0,del:0};l.add+=i.diff.add??0,l.del+=i.diff.del??0,n.set(r,l)}return s.map(i=>{const r=i.path.split(/[\\/]/).filter(Boolean).pop()??i.path,l=n.get(r);return{...i,add:l?.add??0,del:l?.del??0}})}function le(s,t=48){return s?s.length<=t?s:`…${s.slice(-(t-1))}`:"—"}async function ys(s){await de("/api/local-path/reveal",{method:"POST",body:JSON.stringify({path:s.path,...s.basePath?{basePath:s.basePath}:{},...s.agentId?{agentId:s.agentId}:{},...s.sessionId?{sessionId:s.sessionId}:{}})})}function oe(s,t){return s.startsWith("/")||s.startsWith("~/")?s:t?`${t.replace(/\/$/u,"")}/${s}`:s}function U({value:s,label:t}){const[n,i]=o.useState(!1),r=o.useRef(null);o.useEffect(()=>()=>{r.current&&clearTimeout(r.current)},[]);const l=o.useCallback(h=>{h.preventDefault(),h.stopPropagation(),V(s).then(I=>{I&&(i(!0),r.current&&clearTimeout(r.current),r.current=setTimeout(()=>i(!1),1100))})},[s]);return e.jsx("button",{type:"button",className:`s-lane-sheet-copy${n?" s-lane-sheet-copy--done":""}`,onClick:l,title:n?"Copied":`Copy ${t}`,"aria-label":n?`Copied ${t}`:`Copy ${t}`,children:n?e.jsx("svg",{viewBox:"0 0 12 12",width:"11",height:"11","aria-hidden":"true",children:e.jsx("path",{d:"M2.5 6.2 4.8 8.5 9.5 3.8",fill:"none",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"})}):e.jsxs("svg",{viewBox:"0 0 12 12",width:"11",height:"11","aria-hidden":"true",children:[e.jsx("rect",{x:"3.4",y:"3.4",width:"5.8",height:"5.8",rx:"1.3",fill:"none",stroke:"currentColor",strokeWidth:"1"}),e.jsx("path",{d:"M2.4 7.2V2.8c0-.4.3-.7.7-.7h4",fill:"none",stroke:"currentColor",strokeWidth:"1",strokeLinecap:"round"})]})})}function Pe({path:s,basePath:t,agentId:n,sessionId:i,label:r}){return e.jsx("button",{type:"button",className:"s-lane-sheet-reveal",title:`Reveal ${r} in OS`,"aria-label":`Reveal ${r} in OS`,onClick:l=>{l.preventDefault(),l.stopPropagation(),ys({path:s,basePath:t,agentId:n,sessionId:i}).catch(h=>console.warn("Failed to reveal local path",h))},children:e.jsx(he,{size:11,strokeWidth:1.6})})}function K({id:s,label:t,count:n,actions:i}){return e.jsxs("div",{className:"s-lane-sheet-sechead",id:s,children:[e.jsx("span",{className:"s-lane-sheet-sechead-label",children:t}),n!=null&&n!==!1&&e.jsx("span",{className:"s-lane-sheet-sechead-count",children:n}),e.jsx("span",{className:"s-lane-sheet-sechead-rule","aria-hidden":"true"}),i&&e.jsx("span",{className:"s-lane-sheet-sechead-actions",children:i})]})}function C({children:s,onClick:t,primary:n=!1,disabled:i=!1}){return e.jsx("button",{type:"button",className:`s-lane-sheet-ghost${n?" s-lane-sheet-ghost--primary":""}`,onClick:t,disabled:i,children:s})}function y({label:s,value:t,title:n,copy:i,reveal:r}){return e.jsxs("div",{className:"s-lane-sheet-meta-row",children:[e.jsx("dt",{children:s}),e.jsxs("dd",{className:"s-lane-sheet-fact",children:[e.jsx("span",{className:"s-lane-sheet-fact-val",title:n??t,children:t}),r&&e.jsx(Pe,{...r,label:s}),i&&e.jsx(U,{value:i,label:s})]})]})}function ie({file:s,basePath:t,agentId:n,sessionId:i,onOpen:r}){const l=Se(s),h=s.path,I=oe(h,t),{dir:S,base:L}=js(h),A=s.add>0||s.del>0;return e.jsxs("div",{className:"s-lane-sheet-frow",title:h,children:[e.jsx("span",{className:`s-lane-sheet-fstate s-lane-sheet-fstate--${s.state}`,"aria-hidden":"true",children:ms[s.state]??"○"}),e.jsxs("span",{className:"s-lane-sheet-fpath",children:[S&&e.jsx("span",{className:"s-lane-sheet-fdir",children:S}),e.jsx("span",{className:"s-lane-sheet-fbase",children:L})]}),A&&e.jsxs("span",{className:"s-lane-sheet-fdiff",children:[s.add>0&&e.jsxs("span",{className:"s-lane-sheet-file-add",children:["+",s.add]}),s.del>0&&e.jsxs("span",{className:"s-lane-sheet-file-del",children:["−",s.del]})]}),e.jsxs("span",{className:"s-lane-sheet-frow-acts",children:[e.jsx("button",{type:"button",className:"s-lane-sheet-rowact",title:`Open ${l} in diff`,"aria-label":`Open ${l} in diff`,onClick:()=>r(I),children:e.jsx(he,{size:11,strokeWidth:1.6})}),e.jsx(Pe,{path:h,basePath:t,agentId:n,sessionId:i,label:l}),e.jsx(U,{value:h,label:"file path"})]})]})}function Cs({entry:s}){const{dir:t,rest:n}=Xe(Ye(s.command)),i=Ze(n||s.command);return e.jsxs("div",{className:"s-lane-sheet-crow",title:s.command,children:[e.jsx("span",{className:"s-lane-sheet-cmark","aria-hidden":"true",children:"❯"}),e.jsxs("span",{className:"s-lane-sheet-ctext",children:[t&&e.jsxs("span",{className:"s-lane-sheet-bash-dir",children:[t,"/"]}),i.map((r,l)=>e.jsxs("span",{className:`s-lane-sheet-bash-${r.tier}${r.known?" s-lane-sheet-bash-prog--known":""}${r.flag?" s-lane-sheet-bash-flag":""}`,children:[l>0?" ":"",r.text]},l))]}),s.outcome&&e.jsx("span",{className:"s-lane-sheet-cresult",children:s.outcome}),e.jsx("span",{className:"s-lane-sheet-crow-acts",children:e.jsx(U,{value:s.command,label:"command"})})]})}function Ce({label:s,hint:t,children:n}){const[i,r]=o.useState(!1);return e.jsxs("div",{className:`s-lane-sheet-disc${i?" s-lane-sheet-disc--open":""}`,children:[e.jsxs("button",{type:"button",className:"s-lane-sheet-disc-head","aria-expanded":i,onClick:()=>r(l=>!l),children:[e.jsx("span",{className:`s-lane-sheet-disc-caret${i?" s-lane-sheet-disc-caret--open":""}`,"aria-hidden":"true",children:"›"}),e.jsx("span",{className:"s-lane-sheet-disc-label",children:s}),t!=null&&t!==!1&&e.jsx("span",{className:"s-lane-sheet-disc-hint",children:t})]}),i&&e.jsx("div",{className:"s-lane-sheet-disc-body",children:n})]})}function Ss({plan:s,onOpen:t}){const[n,i]=o.useState(!1),r=s.steps.filter(h=>h.status==="completed").length,l=s.steps.find(h=>h.status==="in_progress");return e.jsxs("div",{className:`s-lane-sheet-plan${n?" s-lane-sheet-plan--open":""}`,children:[e.jsxs("button",{type:"button",className:"s-lane-sheet-plan-head","aria-expanded":n,onClick:()=>i(h=>!h),children:[e.jsx("span",{className:`s-lane-sheet-plan-caret${n?" s-lane-sheet-plan-caret--open":""}`,"aria-hidden":"true",children:"›"}),e.jsx("span",{className:"s-lane-sheet-plan-title",title:s.title,children:s.title}),e.jsxs("span",{className:"s-lane-sheet-plan-tally",children:[r,"/",s.steps.length]})]}),!n&&l&&e.jsxs("div",{className:"s-lane-sheet-plan-now",title:l.text,children:[e.jsx("span",{className:"s-lane-sheet-plan-now-mark","aria-hidden":"true",children:"▸"}),e.jsx("span",{className:"s-lane-sheet-plan-now-text",children:l.text})]}),n&&e.jsxs("div",{className:"s-lane-sheet-plan-steps",children:[s.steps.map(h=>e.jsxs("div",{className:`s-lane-sheet-pstep s-lane-sheet-pstep--${h.status}`,children:[e.jsx("span",{className:"s-lane-sheet-pstep-box","aria-hidden":"true",children:h.status==="completed"?"✓":h.status==="in_progress"?"▸":"○"}),e.jsx("span",{className:"s-lane-sheet-pstep-text",children:h.text})]},h.id)),e.jsx("div",{className:"s-lane-sheet-plan-foot",children:e.jsx(C,{onClick:t,children:"Open in Plans →"})})]})]})}function Ls({document:s,expanded:t,onToggle:n,onOpen:i}){const r=ls(s),l=s.steps.length>0;return e.jsxs("article",{className:"s-lane-sheet-doc",children:[e.jsxs("button",{type:"button",className:"s-lane-sheet-doc-head","aria-expanded":t,onClick:n,children:[e.jsx("span",{className:"s-lane-sheet-doc-title",children:s.title}),e.jsxs("span",{className:"s-lane-sheet-doc-meta",children:[l?`${s.steps.length} steps`:Se(s.path)," · ",re(s.updatedAt)]}),!t&&r&&e.jsx("span",{className:"s-lane-sheet-doc-excerpt",children:r})]}),t&&e.jsxs("div",{className:"s-lane-sheet-doc-body",children:[s.summary&&e.jsx("p",{className:"s-lane-sheet-doc-summary",children:s.summary}),l&&s.steps.length>0&&e.jsx("ol",{className:"s-lane-sheet-doc-steps",children:s.steps.map(h=>e.jsxs("li",{className:`s-lane-sheet-doc-step s-lane-sheet-doc-step--${h.status}`,children:[e.jsx("span",{className:"s-lane-sheet-doc-step-state",children:ps[h.status]}),e.jsx("span",{className:"s-lane-sheet-doc-step-text",children:h.text})]},h.id))}),(s.body||s.rawText)&&e.jsx("pre",{className:"s-lane-sheet-doc-pre",children:s.body||s.rawText}),e.jsx("button",{type:"button",className:"s-lane-sheet-doc-open",onClick:i,children:"Open in Plans"})]})]})}function $s({lane:s,navigate:t,returnRoute:n,onClose:i,navigationEnabled:r=!0}){const{agent:l,observe:h,source:I,lastActiveAt:S}=s,{openFilePreview:L}=Qe(),A=o.useMemo(()=>Ge(l.state??null,l),[l]),N=o.useMemo(()=>ss(h,l,{isLive:A}),[h,l,A]),[O,Q]=o.useState(!1),[D,ue]=o.useState([]),[F,me]=o.useState([]),[Ae,Oe]=o.useState(null),[R,De]=o.useState(!1),[Fe,pe]=o.useState(!1),[_,fe]=o.useState(!1),[xe,X]=o.useState(null),[f,Y]=o.useState("s-lane-sheet-vitals"),E=o.useRef(null),Z=o.useRef(null);o.useEffect(()=>()=>{E.current&&clearTimeout(E.current)},[]);const je=o.useCallback(a=>{typeof window>"u"||window.location.hash!==`#${a}`&&Ue({hash:a,replace:!1})},[]),W=o.useCallback(a=>{const u=Z.current,p=u?.querySelector(`#${a}`);if(!u||!p)return!1;const j=u.getBoundingClientRect().top,w=p.getBoundingClientRect().top;return u.scrollTop=Math.max(0,u.scrollTop+w-j),Y(a),!0},[]),T=o.useCallback((a,u)=>{a.preventDefault(),W(u)&&je(u)},[W,je]),z=is(l,I),Ee=rs(l,I),c=o.useMemo(()=>Le(s),[s]),d=s.facts,$=d?.turn?.phase?d.turn.phase==="started":A,m=o.useMemo(()=>{const a=d?.touchedFiles.length?d.touchedFiles:ts(h,1/0),u=ks(a,h),p=u.filter(g=>g.state==="created"),j=u.filter(g=>g.state==="modified"),w=u.filter(g=>g.state==="read"),M=[...p,...j];return{created:p,modified:j,read:w,changed:M,totalAdd:M.reduce((g,v)=>g+v.add,0),totalDel:M.reduce((g,v)=>g+v.del,0)}},[d,h]),H=m.changed.length+m.read.length,k=o.useMemo(()=>ws(h),[h]),ee=o.useMemo(()=>m.changed.map(a=>oe(a.path,c.cwd)).join(`
|
|
3
|
+
`),[m.changed,c.cwd]),ge=o.useMemo(()=>{const a=[`agent: ${z}`],u=l.harness??c.harness,p=d?.model??c.model;(u||p||d?.effort)&&a.push(`harness: ${[u,p,d?.effort].filter(Boolean).join(" · ")}`);const j=d?.branch??c.branch;return j&&a.push(`branch: ${j}`),c.cwd&&a.push(`cwd: ${c.cwd}`),c.sessionId&&a.push(`session: ${c.sessionId}`),l.harnessLogPath&&a.push(`transcript: ${l.harnessLogPath}`),d?.originator&&a.push(`origin: ${d.originator}`),a.join(`
|
|
4
|
+
`)},[l,d,z,c]),ve=o.useMemo(()=>k.map(a=>a.command).join(`
|
|
5
|
+
`),[k]),Be=o.useCallback(()=>{V(ge)},[ge]),Me=o.useCallback(()=>{V(ve)},[ve]),Re=o.useCallback(()=>{for(const a of m.changed)L(oe(a.path,c.cwd))},[m.changed,c.cwd,L]),_e=o.useCallback(()=>{ee&&V(ee).then(a=>{a&&(pe(!0),E.current&&clearTimeout(E.current),E.current=setTimeout(()=>pe(!1),1100))})},[ee]),x=d?.usage??c.usage,Ne=o.useMemo(()=>x?[{label:"in",value:x.inputTokens},{label:"out",value:x.outputTokens},{label:"cache rd",value:x.cacheReadInputTokens},{label:"cache wr",value:x.cacheCreationInputTokens},{label:"total",value:x.totalTokens},{label:"reasoning",value:x.reasoningOutputTokens}].filter(a=>typeof a.value=="number"):[],[x]),b=o.useMemo(()=>Ke(x,{model:d?.model??c.model,adapterType:l.harness??c.harness}),[x,d?.model,c.model,l.harness,c.harness]),se=!!(d?.compaction?.eligible&&cs(l.harness??c.harness)&&c.sessionId),We=o.useCallback(async()=>{if(!(!se||_)){fe(!0),X(null);try{const a=await os({harness:l.harness??c.harness,sessionId:c.sessionId,transcriptPath:l.harnessLogPath,agentId:l.id});(!a.ok||!a.delivered)&&X(a.error??"Compaction was not delivered to the harness")}catch(a){X(a instanceof Error?a.message:"Compaction request failed")}finally{fe(!1)}}},[l.harness,l.harnessLogPath,l.id,se,_,c.harness,c.sessionId]),be=S?re(S):null,q=o.useMemo(()=>Ie(s),[s]),P=o.useMemo(()=>us(s),[s]),J=o.useMemo(()=>hs(s),[s]),B=o.useCallback(()=>{!r||!q||(te(t,q,{returnTo:n}),i())},[t,r,i,n,q]),ae=o.useCallback(()=>{if(r){if(P){te(t,P,{returnTo:n}),i();return}B()}},[t,r,i,B,P,n]),G=o.useCallback(()=>{!r||!J||(te(t,J,{returnTo:n}),i())},[t,r,i,n,J]);o.useEffect(()=>{const a=u=>{if(!es(u.target))switch(u.key.toLowerCase()){case"o":u.preventDefault(),B();break;case"t":u.preventDefault(),G();break;case"p":if(!P)return;u.preventDefault(),ae();break}};return window.addEventListener("keydown",a),()=>window.removeEventListener("keydown",a)},[ae,B,G,P]);const we=o.useCallback(a=>{r&&(t({view:"ops",mode:"plan",planDocumentId:a}),i())},[t,r,i]);return o.useEffect(()=>{let a=!1;return Q(!1),de("/api/plan-documents").then(u=>{if(a)return;const p=ns(u.documents,s);ue(p.plans),me(p.docs),Q(!0)}).catch(()=>{a||(ue([]),me([]),Q(!0))}),()=>{a=!0}},[s.id]),o.useEffect(()=>{const a=()=>{const u=fs();u&&window.requestAnimationFrame(()=>{W(u)})};return a(),window.addEventListener("hashchange",a),window.addEventListener("popstate",a),()=>{window.removeEventListener("hashchange",a),window.removeEventListener("popstate",a)}},[s.id,k.length,W]),o.useEffect(()=>{const a=Z.current;if(!a)return;let u=0;const p=()=>{u=0;const w=Te.map(v=>a.querySelector(`#${v}`)).filter(v=>!!v);if(w.length===0)return;if(a.scrollTop+a.clientHeight>=a.scrollHeight-2){const v=w[w.length-1].id;ce(v)&&Y(v);return}const M=a.getBoundingClientRect().top+18,g=w.reduce((v,ke)=>ke.getBoundingClientRect().top<=M?ke:v,w[0]);ce(g.id)&&Y(g.id)},j=()=>{u||(u=window.requestAnimationFrame(p))};return p(),a.addEventListener("scroll",j,{passive:!0}),window.addEventListener("resize",j),()=>{u&&window.cancelAnimationFrame(u),a.removeEventListener("scroll",j),window.removeEventListener("resize",j)}},[k.length,O,D.length,F.length]),e.jsxs(ze,{open:!0,onClose:i,side:"right",owner:"openscout.agent-lane",resizable:!0,defaultSize:720,minSize:420,maxSize:960,scrollLock:!0,ariaLabel:`${z} lane detail`,className:"s-lane-sheet",children:[e.jsxs("div",{className:"s-slide-header s-lane-sheet-header",children:[e.jsx(He,{agent:l,placement:"row",size:28,presence:!1,className:"s-agent-lane-avatar"}),e.jsxs("div",{className:"s-lane-sheet-header-copy",children:[e.jsx("div",{className:"s-lane-sheet-title",children:z}),e.jsxs("div",{className:"s-lane-sheet-sub",children:[Ee," · ",S?re(S):"idle"]})]}),e.jsx("span",{className:"s-slide-spacer"}),e.jsxs("div",{className:"s-lane-sheet-header-cta",children:[e.jsx(qe,{harness:l.harness??c.harness,size:18,className:`s-lane-sheet-hmark${$?" s-lane-sheet-hmark--working":""}`}),r?e.jsxs(e.Fragment,{children:[e.jsx(C,{primary:!0,onClick:B,disabled:!q,children:"Open session"}),P?e.jsx(C,{onClick:ae,children:"Agent profile"}):null,e.jsx(C,{onClick:G,disabled:!J,children:"Traces"})]}):null]}),e.jsx("button",{type:"button",className:"s-slide-close",onClick:i,"aria-label":"Close",children:"×"})]}),e.jsxs("nav",{className:"s-lane-sheet-anchors","aria-label":"Jump to section",children:[e.jsx("a",{href:"#s-lane-sheet-vitals",className:`s-lane-sheet-anchor${f==="s-lane-sheet-vitals"?" s-lane-sheet-anchor--active":""}`,"aria-current":f==="s-lane-sheet-vitals"?"location":void 0,onClick:a=>T(a,"s-lane-sheet-vitals"),children:"Vitals"}),e.jsx("a",{href:"#s-lane-sheet-runtime",className:`s-lane-sheet-anchor${f==="s-lane-sheet-runtime"?" s-lane-sheet-anchor--active":""}`,"aria-current":f==="s-lane-sheet-runtime"?"location":void 0,onClick:a=>T(a,"s-lane-sheet-runtime"),children:"Runtime"}),e.jsxs("a",{href:"#s-lane-sheet-files",className:`s-lane-sheet-anchor${f==="s-lane-sheet-files"?" s-lane-sheet-anchor--active":""}`,"aria-current":f==="s-lane-sheet-files"?"location":void 0,onClick:a=>T(a,"s-lane-sheet-files"),children:["Files",H>0&&e.jsx("span",{className:"s-lane-sheet-anchor-n",children:H})]}),k.length>0&&e.jsxs("a",{href:"#s-lane-sheet-commands",className:`s-lane-sheet-anchor${f==="s-lane-sheet-commands"?" s-lane-sheet-anchor--active":""}`,"aria-current":f==="s-lane-sheet-commands"?"location":void 0,onClick:a=>T(a,"s-lane-sheet-commands"),children:["Commands",e.jsx("span",{className:"s-lane-sheet-anchor-n",children:k.length})]}),e.jsx("a",{href:"#s-lane-sheet-plans",className:`s-lane-sheet-anchor${f==="s-lane-sheet-plans"?" s-lane-sheet-anchor--active":""}`,"aria-current":f==="s-lane-sheet-plans"?"location":void 0,onClick:a=>T(a,"s-lane-sheet-plans"),children:"Plans"}),e.jsx("a",{href:"#s-lane-sheet-docs",className:`s-lane-sheet-anchor${f==="s-lane-sheet-docs"?" s-lane-sheet-anchor--active":""}`,"aria-current":f==="s-lane-sheet-docs"?"location":void 0,onClick:a=>T(a,"s-lane-sheet-docs"),children:"Docs"}),$&&d?.turn&&e.jsxs("span",{className:"s-lane-sheet-anchorbar-turn",children:["turn ",d.turn.phase,d.turn.index?` · #${d.turn.index}`:""]})]}),e.jsxs("div",{ref:Z,className:`s-slide-body s-lane-sheet-body${$?" s-lane-sheet-body--working":" s-lane-sheet-body--idle"}`,children:[e.jsxs("section",{id:"s-lane-sheet-vitals",className:`s-lane-sheet-section s-lane-sheet-vitals${$?"":" s-lane-sheet-vitals--idle"}`,children:[N&&e.jsxs("div",{className:"s-lane-sheet-vitals-now",children:[e.jsxs("div",{className:"s-lane-sheet-vitals-now-top",children:[e.jsxs("span",{className:"s-lane-sheet-vitals-live","aria-hidden":"true",children:[e.jsx("span",{className:"s-lane-sheet-vitals-live-dot"}),e.jsx("span",{className:"s-lane-sheet-vitals-live-ring"})]}),e.jsx("span",{className:"s-lane-sheet-vitals-now-label",children:$?"executing now":"last action"}),$&&d?.turn&&e.jsxs("span",{className:"s-lane-sheet-vitals-now-turn",children:["turn ",d.turn.phase,d.turn.index?` · #${d.turn.index}`:""]})]}),e.jsxs("div",{className:"s-lane-sheet-vitals-well",children:[N.headlineFrom==="user"?e.jsx("span",{className:"s-lane-sheet-vitals-prompt","aria-hidden":"true",children:"←"}):N.headlineFrom==="agent"?e.jsx("span",{className:"s-lane-sheet-vitals-prompt","aria-hidden":"true",children:"→"}):e.jsx("span",{className:"s-lane-sheet-vitals-prompt s-lane-sheet-vitals-prompt--cmd","aria-hidden":"true",children:"❯"}),e.jsx("span",{className:"s-lane-sheet-vitals-cmd",title:N.headFull,children:N.headline}),$&&e.jsx("span",{className:"s-lane-sheet-vitals-caret","aria-hidden":"true"}),e.jsxs("span",{className:"s-lane-sheet-vitals-now-acts",children:[r&&e.jsx("button",{type:"button",className:"s-lane-sheet-reveal",title:"Open trace at this step","aria-label":"Open trace",onClick:G,children:e.jsx(he,{size:11,strokeWidth:1.6})}),N.headFull&&N.headFull!==N.headline&&e.jsx(U,{value:N.headFull,label:"current action"})]})]})]}),b&&e.jsxs("div",{className:`s-lane-sheet-vitals-gauge${b.overLimit?" s-lane-sheet-vitals-gauge--over":""}`,children:[e.jsxs("div",{className:"s-lane-sheet-vitals-gauge-top",children:[e.jsx("span",{className:"s-lane-sheet-vitals-gauge-label",children:"context"}),e.jsxs("span",{className:"s-lane-sheet-vitals-gauge-read",children:[e.jsx("b",{children:b.usedLabel}),e.jsxs("span",{className:"s-lane-sheet-vitals-gauge-of",children:[" / ",b.budgetLabel]}),e.jsx("span",{className:"s-lane-sheet-vitals-gauge-unit",children:" tokens"}),e.jsxs("span",{className:"s-lane-sheet-vitals-gauge-pct",children:[b.pct,"%",b.overLimit?" over":""]})]}),se&&e.jsx("button",{type:"button",className:"s-lane-sheet-vitals-compact",onClick:()=>{We()},disabled:_,title:"Force a context compaction on this live session",children:_?"Compacting…":"Compact context"})]}),e.jsxs("div",{className:"s-lane-sheet-vitals-gaugebar",role:"meter","aria-label":"context budget","aria-valuenow":b.pct,"aria-valuemin":0,"aria-valuemax":Math.max(100,b.pct),children:[e.jsx("span",{className:"s-lane-sheet-vitals-gaugebar-fill",style:{width:`${Ve(b)}%`},children:e.jsx("span",{className:"s-lane-sheet-vitals-gaugebar-edge","aria-hidden":"true"})}),[25,50,75].map(a=>e.jsx("span",{className:"s-lane-sheet-vitals-gaugebar-tick",style:{left:`${a}%`},"aria-hidden":"true"},a))]}),xe&&e.jsx("div",{className:"s-lane-sheet-vitals-compact-error",role:"status",children:xe}),d?.compaction?.lastCompactedSummary&&e.jsxs("div",{className:"s-lane-sheet-vitals-compact-note",children:["last compaction · ",d.compaction.lastCompactedSummary]})]}),e.jsxs("div",{className:"s-lane-sheet-vitals-cadence",children:[e.jsx("b",{children:ne(c.events)})," events · ",e.jsx("b",{children:ne(c.tools)})," tools",be?e.jsxs(e.Fragment,{children:[" · ",be]}):null]})]}),e.jsxs("section",{id:"s-lane-sheet-runtime",className:"s-lane-sheet-section",children:[e.jsxs(Ce,{label:"Runtime",hint:[l.harness??c.harness,d?.model??c.model].filter(Boolean).join(" · ")||void 0,children:[e.jsxs("dl",{className:"s-lane-sheet-meta",children:[e.jsx(y,{label:"Effort",value:d?.effort??"—"}),e.jsx(y,{label:"Branch",value:d?.branch??c.branch??"—",copy:d?.branch??c.branch??null}),e.jsx(y,{label:"Working dir",value:le(c.cwd),title:c.cwd??void 0,copy:c.cwd??null,reveal:c.cwd?{path:c.cwd,basePath:c.cwd,agentId:l.id,sessionId:c.sessionId}:void 0}),e.jsx(y,{label:"Session",value:le(c.sessionId,36),title:c.sessionId??void 0,copy:c.sessionId??null}),l.harnessLogPath&&e.jsx(y,{label:"Transcript",value:le(l.harnessLogPath,36),title:l.harnessLogPath,copy:l.harnessLogPath,reveal:{path:l.harnessLogPath,basePath:c.cwd,agentId:l.id,sessionId:c.sessionId}}),e.jsx(y,{label:"Origin",value:d?.originator??"—",copy:d?.originator??null}),e.jsx(y,{label:"Attribution",value:d?.attribution?Je(d.attribution):"—"}),d?.currentTask&&e.jsx(y,{label:"Task",value:d.currentTask,title:d.currentTask,copy:d.currentTask})]}),e.jsx("div",{className:"s-lane-sheet-disc-bar",children:e.jsx(C,{onClick:Be,children:"Copy diagnostics"})})]}),Ne.length>0&&e.jsx(Ce,{label:"Tokens",hint:typeof x?.totalTokens=="number"?xs(x.totalTokens):void 0,children:e.jsx("div",{className:"s-lane-sheet-dials",children:Ne.map(a=>e.jsxs("span",{className:"s-lane-sheet-dial",children:[e.jsx("span",{className:"s-lane-sheet-dial-value",children:ne(a.value)}),e.jsx("span",{className:"s-lane-sheet-dial-label",children:a.label})]},a.label))})})]}),e.jsxs("section",{id:"s-lane-sheet-files",className:"s-lane-sheet-section",children:[e.jsx(K,{label:"Files",count:H>0?`${m.changed.length} changed · ${m.read.length} read`:void 0,actions:m.changed.length>0?e.jsxs(e.Fragment,{children:[(m.totalAdd>0||m.totalDel>0)&&e.jsxs("span",{className:"s-lane-sheet-file-diff","aria-hidden":"true",children:[m.totalAdd>0&&e.jsxs("span",{className:"s-lane-sheet-file-add",children:["+",m.totalAdd]}),m.totalDel>0&&e.jsxs("span",{className:"s-lane-sheet-file-del",children:["−",m.totalDel]})]}),e.jsx(C,{onClick:_e,children:Fe?"Copied":"Copy changed"}),e.jsx(C,{onClick:Re,children:"Open all → diff"})]}):void 0}),H===0?e.jsx("div",{className:"s-lane-sheet-empty",children:"No files touched in this session yet."}):e.jsxs("div",{className:"s-lane-sheet-filegroups",children:[m.created.length>0&&e.jsxs("div",{className:"s-lane-sheet-filegroup",children:[e.jsxs("div",{className:"s-lane-sheet-fglabel",children:[e.jsx("span",{className:"s-lane-sheet-fgmark s-lane-sheet-fgmark--created","aria-hidden":"true"}),"new",e.jsx("span",{className:"s-lane-sheet-fgcount",children:m.created.length})]}),e.jsx("div",{className:"s-lane-sheet-files",children:m.created.map(a=>e.jsx(ie,{file:a,basePath:c.cwd,agentId:l.id,sessionId:c.sessionId,onOpen:L},a.path))})]}),m.modified.length>0&&e.jsxs("div",{className:"s-lane-sheet-filegroup",children:[e.jsxs("div",{className:"s-lane-sheet-fglabel",children:[e.jsx("span",{className:"s-lane-sheet-fgmark s-lane-sheet-fgmark--modified","aria-hidden":"true"}),"modified",e.jsx("span",{className:"s-lane-sheet-fgcount",children:m.modified.length})]}),e.jsx("div",{className:"s-lane-sheet-files",children:m.modified.map(a=>e.jsx(ie,{file:a,basePath:c.cwd,agentId:l.id,sessionId:c.sessionId,onOpen:L},a.path))})]}),m.read.length>0&&e.jsxs("div",{className:"s-lane-sheet-filegroup",children:[e.jsxs("button",{type:"button",className:"s-lane-sheet-fglabel s-lane-sheet-fglabel--btn","aria-expanded":R,onClick:()=>De(a=>!a),children:[e.jsx("span",{className:`s-lane-sheet-fgcaret${R?" s-lane-sheet-fgcaret--open":""}`,"aria-hidden":"true",children:"›"}),e.jsx("span",{className:"s-lane-sheet-fgmark s-lane-sheet-fgmark--read","aria-hidden":"true"}),"read",e.jsx("span",{className:"s-lane-sheet-fgcount",children:m.read.length}),!R&&e.jsx("span",{className:"s-lane-sheet-fghint",children:"collapsed"})]}),R&&e.jsx("div",{className:"s-lane-sheet-files",children:m.read.map(a=>e.jsx(ie,{file:a,basePath:c.cwd,agentId:l.id,sessionId:c.sessionId,onOpen:L},a.path))})]})]})]}),k.length>0&&e.jsxs("section",{id:"s-lane-sheet-commands",className:"s-lane-sheet-section",children:[e.jsx(K,{label:"Commands",count:"recent",actions:e.jsx(C,{onClick:Me,children:"Copy all"})}),e.jsx("div",{className:"s-lane-sheet-cmds",children:k.map(a=>e.jsx(Cs,{entry:a},a.id))})]}),e.jsxs("section",{id:"s-lane-sheet-plans",className:"s-lane-sheet-section",children:[e.jsx(K,{label:"Plans",count:O&&D.length>0?D.length:void 0}),O?D.length===0?e.jsx("div",{className:"s-lane-sheet-empty",children:"No plans matched this session yet."}):e.jsx("div",{className:"s-lane-sheet-plans",children:D.map(a=>e.jsx(Ss,{plan:a,onOpen:()=>we(a.id)},a.id))}):e.jsx("div",{className:"s-lane-sheet-empty",children:"Indexing plan documents…"})]}),e.jsxs("section",{id:"s-lane-sheet-docs",className:"s-lane-sheet-section",children:[e.jsx(K,{label:"Docs",count:O&&F.length>0?F.length:void 0}),O?F.length===0?e.jsx("div",{className:"s-lane-sheet-empty",children:"No related docs matched this session yet."}):e.jsx("div",{className:"s-lane-sheet-docs",children:F.map(a=>e.jsx(Ls,{document:a,expanded:Ae===a.id,onToggle:()=>Oe(u=>u===a.id?null:a.id),onOpen:()=>we(a.id)},a.id))}):e.jsx("div",{className:"s-lane-sheet-empty",children:"Indexing documents…"})]})]})]})}const Us=Object.freeze(Object.defineProperty({__proto__:null,AgentLaneDetailSheet:$s},Symbol.toStringTag,{value:"Module"}));export{$s as A,Us as a,$e as i};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as a,j as R}from"./index-DMiGbrBt.js";const d="openscout:agent-lanes-cockpit-height",S="openscout:agent-lanes-summary-height",m=48,i=220,_=120,h=112,T=80,C=200,H=112;function v(e){if(!e)return i;const t=e.getBoundingClientRect().height,r=Math.floor(t-H-C);return Math.max(m,Math.min(i,r))}function x(e){return e===null?"auto":e<T?"compact":e<h?"default":"stats"}function w(){try{const e=sessionStorage.getItem(d)??sessionStorage.getItem(S);if(!e||e==="auto")return null;const t=Number(e);return Number.isFinite(t)?Math.min(i,Math.max(m,t)):null}catch{return null}}function f(e){try{if(e===null){sessionStorage.setItem(d,"auto");return}sessionStorage.setItem(d,String(Math.round(e)))}catch{}}function y(e){const[t,r]=a.useState(!1),s=a.useRef({y:0,h:_,max:i}),c=a.useRef(null),L=a.useCallback((n,o)=>{n.preventDefault(),n.currentTarget.setPointerCapture(n.pointerId);const u=n.currentTarget.closest(".s-agent-lane"),l=u?.querySelector(".s-agent-lane-cockpit")?.getBoundingClientRect().height??_,p=o??l,A=v(u);s.current={y:n.clientY,h:p,max:A},c.current=p,r(!0),document.body.classList.add("s-agent-lanes--resizing-summary")},[]),E=a.useCallback(()=>{r(n=>(n&&(document.body.classList.remove("s-agent-lanes--resizing-summary"),f(c.current)),!1))},[]);a.useEffect(()=>{if(!t)return;const n=u=>{const g=u.clientY-s.current.y,l=Math.min(s.current.max,Math.max(m,s.current.h+g));c.current=l,e(l)},o=()=>E();return window.addEventListener("pointermove",n),window.addEventListener("pointerup",o),window.addEventListener("pointercancel",o),()=>{window.removeEventListener("pointermove",n),window.removeEventListener("pointerup",o),window.removeEventListener("pointercancel",o)}},[E,t,e]);const M=a.useCallback(()=>{c.current=null,e(null),f(null)},[e]);return{beginResize:L,resetSummaryHeight:M,resizing:t}}function z({cockpitHeight:e,children:t}){const r=e!==null,s=x(e);return R.jsx("div",{className:`s-agent-lane-cockpit${r?` s-agent-lane-cockpit--sized s-agent-lane-cockpit--${s}`:""}`,style:r?{height:e,maxHeight:e}:void 0,children:t})}function N({onResizeStart:e,onReset:t,active:r}){return R.jsx("div",{role:"separator","aria-orientation":"horizontal","aria-label":"Resize tools panel",title:"Drag to resize tools panel · double-click to reset","aria-valuemin":m,"aria-valuemax":i,className:`s-agent-lane-split${r?" s-agent-lane-split--active":""}`,onPointerDown:e,onDoubleClick:s=>{s.preventDefault(),s.stopPropagation(),t()}})}export{z as AgentLaneCockpitPane,N as AgentLaneSummaryResizeHandle,T as LANE_COCKPIT_COMPACT_HEIGHT,h as LANE_COCKPIT_STATS_HEIGHT,_ as LANE_SUMMARY_HEIGHT_DEFAULT,i as LANE_SUMMARY_HEIGHT_MAX,m as LANE_SUMMARY_HEIGHT_MIN,d as LANE_SUMMARY_HEIGHT_STORAGE_KEY,v as cockpitHeightMaxForLane,x as cockpitHeightTier,w as readStoredLaneSummaryHeight,y as useLaneSummaryResize,f as writeStoredLaneSummaryHeight};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,j as m}from"./index-DMiGbrBt.js";import{u as a}from"./Provider-C7UKGHQy.js";import{A as n}from"./AgentLanesView-B9vuEEmZ.js";import{c,d as l}from"./router-Bq5dwf78.js";import"./api-h5zurxmi.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./time-DltNTpLl.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";/* empty css */import"./tail-events-D19uAGe3.js";import"./observe-CuLGD9Zp.js";import"./terminal-sessions-D5CIR2OL.js";import"./types-B0PlfpKc.js";import"./AgentAvatar-D90c1Rzk.js";import"./SpriteAvatar-DyaGuhik.js";import"./SessionObserve-yfXFafp8.js";import"./bash-format-BRV5C6Gv.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-Bla0gBdm.js";import"./lane-observe-D0rfKDnU.js";import"./lane-ask-display-B6iCAVcd.js";import"./mentions-jSuTGeet.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./openContent-C6XO6kr5.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";import"./message-markup-3J9pi3nx.js";import"./ObservedTopologyPanel-DyUeV98H.js";import"./ObserveTextFlow-rsFj_rVo.js";import"./use-reduced-motion-RRBkmVkk.js";import"./message-circle-CG-96zts.js";import"./wrench-Bkc_0lKF.js";import"./external-link-CXBytO9o.js";import"./AgentFloorView-8LoAEBwS.js";/* empty css */import"./agent-lanes-model-B4YTt4OF.js";import"./context-budget-CbB4BDcO.js";import"./lane-roster-store-D8x1jac2.js";import"./AgentLanesPreflight-eSAoDsPi.js";import"./AgentLaneChrome-D9ZwUKrl.js";import"./AgentLaneCard-RrNnDZu8.js";/* empty css */import"./AgentLaneSummaryResize-BhFmGNzT.js";import"./clipboard-e3fSpeo7.js";import"./agent-lane-card-model-r2frk57c.js";import"./agent-lane-preview-CmHVe3dU.js";import"./AgentLaneDetailSheet-BXbPls9N.js";import"./SlidePanel-COwtoJqR.js";import"./agent-lane-detail-Djm3YJEa.js";import"./LaneTraceDetailSheet-D1CspRbl.js";import"./LaneTraceEventFocus-BF9ERP5O.js";function p(r){return new URLSearchParams(window.location.search).get(r)?.trim()||null}function Gr(){const{agents:r,navigate:o}=a(),e=t.useMemo(()=>c(),[]),s=t.useMemo(()=>l(),[]),i=t.useMemo(()=>({harnessFilter:p("harness"),projectFilter:p("project")}),[]);return m.jsx("div",{className:"s-agent-lanes-embed","data-scout-theme":!0,children:m.jsx(n,{navigate:o,agents:r,embedded:!0,profileId:e,laneSize:s,harnessFilter:i.harnessFilter,projectFilter:i.projectFilter})})}export{Gr as AgentLanesEmbedScreen};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as d,j as s}from"./index-DMiGbrBt.js";import{t as k}from"./time-DltNTpLl.js";const w=3,E=12;function A(e){const n=e?.trim();return n?n.slice(0,13):null}function x(e){const n=e.lastEventAt;return typeof n=="number"&&Number.isFinite(n)&&n>0?n:e.mtimeMs}function D(e){return e.sessionId?.trim()||e.transcriptPath}function T(e){const n=e.max??E;if(e.discoveryPhase==="loading")return{cells:[],blindCells:Math.min(e.blindCells??w,n),identified:!1};const i=e.discovery?.transcripts??[],a=new Set,t=[];for(const l of i.filter(c=>{if(e.matchTranscript&&!e.matchTranscript(c))return!1;const r=e.now-x(c);return r>=0?r<=e.windowMs:!0}).sort((c,r)=>x(r)-x(c))){const c=D(l);if(!a.has(c)&&(a.add(c),t.push({key:c,source:l.source,sessionLabel:A(l.sessionId),project:l.project,cwd:l.cwd,lastActiveAt:x(l)}),t.length>=n))break}return{cells:t,blindCells:0,identified:!0}}function I(e){return e.sessionLabel?`${e.source}:${e.sessionLabel}`:e.source}const K=260,_=100;function S(e,n){const[i,a]=d.useState(e),[t,l]=d.useState(!1);return d.useEffect(()=>{if(e){a(!0),l(!1);return}if(!i)return;if(n<=0){a(!1),l(!1);return}l(!0);const c=setTimeout(()=>{a(!1),l(!1)},n);return()=>clearTimeout(c)},[e,n,i]),{visible:i,exiting:t}}function P(e,n){const i=d.useRef(Date.now()),[a,t]=d.useState({discoveryMs:null,recentMs:null,deckMs:null}),[l,c]=d.useState(0);return d.useEffect(()=>{t(r=>{const o=r.discoveryMs===null&&e.discovery!=="loading"?Date.now()-i.current:r.discoveryMs,m=r.recentMs===null&&e.recent!=="loading"?Date.now()-i.current:r.recentMs;return o===r.discoveryMs&&m===r.recentMs?r:{...r,discoveryMs:o,recentMs:m}})},[e.discovery,e.recent]),d.useEffect(()=>{n&&t(r=>r.deckMs===null?{...r,deckMs:Date.now()-i.current}:r)},[n]),d.useEffect(()=>{if(a.deckMs!==null)return;const r=()=>c(Date.now()-i.current);r();const o=setInterval(r,_);return()=>clearInterval(o)},[a.deckMs]),{...a,elapsedMs:l}}function N({seed:e,rows:n}){const i=d.useMemo(()=>{const a=[68,92,54,80,61,74];return Array.from({length:n},(t,l)=>a[(e+l)%a.length])},[n,e]);return s.jsx("div",{className:"s-lane-pre-bars","aria-hidden":"true",children:i.map((a,t)=>s.jsx("span",{className:"s-lane-pre-bar",style:{width:`${a}%`,animationDelay:`${e*110+t*90}ms`}},`${t}-${a}`))})}function R({cell:e,index:n,nowMs:i,style:a}){if(!e)return s.jsxs("div",{className:"s-lane-pre s-lane-pre--blind",style:a,"aria-hidden":"true",children:[s.jsxs("div",{className:"s-lane-pre-head",children:[s.jsx("span",{className:"s-lane-pre-ghost s-lane-pre-ghost--dot"}),s.jsx("span",{className:"s-lane-pre-ghost s-lane-pre-ghost--name"}),s.jsx("span",{className:"s-lane-pre-spacer"}),s.jsx("span",{className:"s-lane-pre-ghost s-lane-pre-ghost--meta"})]}),s.jsx(N,{seed:n,rows:6})]});const t=[e.project,e.cwd].find(l=>!!l)??"—";return s.jsxs("div",{className:"s-lane-pre",style:a,children:[s.jsxs("div",{className:"s-lane-pre-head",children:[s.jsx("span",{className:"s-lane-pre-dot","aria-hidden":"true"}),s.jsx("span",{className:"s-lane-pre-title",children:I(e)}),s.jsx("span",{className:"s-lane-pre-where",title:e.cwd??t,children:t}),s.jsx("span",{className:"s-lane-pre-spacer"}),s.jsx("span",{className:"s-lane-pre-age",children:k(e.lastActiveAt,i)})]}),s.jsx(N,{seed:n,rows:5})]})}function V({discovery:e,discoveryPhase:n,windowMs:i,nowMs:a,layout:t,gridColumns:l,laneWidthPx:c,matchTranscript:r}){const o=t==="grid",m=d.useMemo(()=>T({discovery:e,discoveryPhase:n,windowMs:i,now:a,matchTranscript:r}),[e,n,r,a,i]),h=m.identified?m.cells:Array.from({length:m.blindCells},()=>null);if(t==="none"||h.length===0)return s.jsx("div",{className:"s-agent-lanes-preflight-empty","aria-hidden":"true"});const p=h.map((f,b)=>s.jsx(R,{cell:f,index:b,nowMs:a,style:o?void 0:{width:`${c}px`,flex:"none"}},f?.key??`blind-${b}`));return o?s.jsx("div",{className:"s-agent-lanes-grid s-agent-lanes-grid--preflight","data-grid-columns":l,"aria-label":"Lane deck loading",children:p}):s.jsx("div",{className:"s-agent-lanes-body",children:s.jsx("section",{className:"s-agent-lanes-zone s-agent-lanes-zone--main",children:s.jsx("div",{className:"s-agent-lanes-scroll","aria-label":"Lane deck loading",children:p})})})}function v(e){return e==="ready"?"OK":e==="error"?"WARN":"RUN"}function j(e){return`s-lane-boot-step s-lane-boot-step--${e}`}function u(e,n){return`${e.toLocaleString()} ${n}${e===1?"":"s"}`}function g(e){return e===null?"":`${Math.round(e)}ms`}function G({loadState:e,sourceCount:n,processCount:i,eventCount:a,laneCount:t,horizonLabel:l,handedOff:c,exiting:r}){const o=P(e,c),m=e.discovery!=="loading"&&e.recent!=="loading",h=e.discovery==="ready"?`${u(n,"session source")} indexed`:e.discovery==="error"?"session source scan unavailable":"scanning local transcripts and harness processes",p=e.recent==="ready"?`${u(a,"recent event")} merged`:e.recent==="error"?"history replay unavailable; live signals remain enabled":`reading turns and tool output for the ${l} view`,f=t>0?`${u(t,"lane")} composed`:e.recent==="error"?`${u(a,"live signal")} in, no history`:a>0?`${u(a,"signal")} in, waiting on replay`:"waiting on first signals",b=e.discovery==="ready"?"done":e.discovery==="error"?"warn":"running",y=e.recent==="ready"?"done":e.recent==="error"?"warn":e.discovery==="loading"?"pending":"running",M=c?"done":e.recent==="loading"?"pending":"running",L=o.deckMs!==null?g(o.deckMs):o.elapsedMs<1e3?g(o.elapsedMs):`${(o.elapsedMs/1e3).toFixed(1)}s`,$=t>0;return s.jsxs("div",{className:["s-lane-boot",$?"s-lane-boot--bare":null,r?"s-lane-boot--exiting":null].filter(Boolean).join(" "),role:"status","aria-live":"polite","aria-busy":!m,children:[s.jsx("div",{className:"s-lane-boot-veil","aria-hidden":"true"}),s.jsxs("div",{className:"s-lane-boot-sheet",children:[s.jsxs("div",{className:"s-lane-boot-head",children:[s.jsx("span",{className:`s-lane-boot-dot${m?" s-lane-boot-dot--done":""}`,"aria-hidden":"true"}),s.jsx("span",{className:"s-lane-boot-lead",children:"Starting agent tail"}),s.jsxs("span",{className:"s-lane-boot-count",children:[n.toLocaleString()," sources"]}),s.jsxs("span",{className:"s-lane-boot-count",children:[i.toLocaleString()," live"]}),s.jsxs("span",{className:"s-lane-boot-count",children:[a.toLocaleString()," events"]}),t>0?s.jsxs("span",{className:"s-lane-boot-count",children:[t.toLocaleString()," lanes"]}):null,s.jsx("span",{className:"s-lane-boot-spacer"}),s.jsxs("span",{className:"s-lane-boot-meta",children:["lookback ",l]}),s.jsx("span",{className:"s-lane-boot-elapsed","aria-hidden":"true",children:L})]}),s.jsxs("div",{className:"s-lane-boot-log",children:[s.jsxs("div",{className:j(b),children:[s.jsx("span",{className:"s-lane-boot-state",children:v(e.discovery)}),s.jsx("strong",{className:"s-lane-boot-name",children:"discover sessions"}),s.jsx("code",{className:"s-lane-boot-detail",children:h}),s.jsx("span",{className:"s-lane-boot-timing",children:g(o.discoveryMs)})]}),s.jsxs("div",{className:j(y),children:[s.jsx("span",{className:"s-lane-boot-state",children:v(e.recent)}),s.jsx("strong",{className:"s-lane-boot-name",children:"replay recent tail"}),s.jsx("code",{className:"s-lane-boot-detail",children:p}),s.jsx("span",{className:"s-lane-boot-timing",children:g(o.recentMs)})]}),s.jsxs("div",{className:j(M),children:[s.jsx("span",{className:"s-lane-boot-state",children:c?"OK":"LIVE"}),s.jsx("strong",{className:"s-lane-boot-name",children:"assemble lanes"}),s.jsx("code",{className:"s-lane-boot-detail",children:f}),s.jsx("span",{className:"s-lane-boot-timing",children:g(o.deckMs)})]})]})]})]})}export{G as AgentLanesLoadingSheet,V as AgentLanesPreflightDeck,K as LANE_BOOT_EXIT_MS,S as useLaneBootVisibility};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as o,j as r}from"./index-DMiGbrBt.js";/* empty css */import{a as nn}from"./api-h5zurxmi.js";import{u as _n}from"./tail-events-D19uAGe3.js";import{i as le,o as we}from"./surface-activity-B1rgWB1i.js";import{u as Dn}from"./observe-CuLGD9Zp.js";import{f as zn}from"./terminal-sessions-D5CIR2OL.js";import{n as Mn}from"./colors-BtO5_zlx.js";import{S as Pn}from"./Provider-C7UKGHQy.js";import{d as On}from"./types-B0PlfpKc.js";import{A as $n}from"./AgentAvatar-D90c1Rzk.js";import{SessionObserve as Wn}from"./SessionObserve-yfXFafp8.js";import{q as Fn,t as tn,v as Hn,A as Bn,w as Ke,x as Gn,y as Vn,z as Kn,B as Un,C as qn,D as Ue,E as Yn,G as Zn,H as Xn,I as sn,J as Jn,K as Qn,c as an,d as rn}from"./router-Bq5dwf78.js";import{AgentFloorView as et}from"./AgentFloorView-8LoAEBwS.js";import{useLaneBootVisibility as nt,AgentLanesPreflightDeck as tt,AgentLanesLoadingSheet as st,LANE_BOOT_EXIT_MS as at}from"./AgentLanesPreflight-eSAoDsPi.js";import{AgentLaneChrome as rt}from"./AgentLaneChrome-D9ZwUKrl.js";import{AgentLaneCard as ot}from"./AgentLaneCard-RrNnDZu8.js";import{a as it}from"./agent-lane-card-model-r2frk57c.js";import{i as lt,A as ct}from"./AgentLaneDetailSheet-BXbPls9N.js";import{LaneTraceDetailSheet as dt}from"./LaneTraceDetailSheet-D1CspRbl.js";import{readStoredLaneSummaryHeight as ut,useLaneSummaryResize as ft,AgentLaneSummaryResizeHandle as mt}from"./AgentLaneSummaryResize-BhFmGNzT.js";import{A as de,i as on,l as K,h as ht,j as ln,k as gt,e as pt,f as Lt,m as yt,r as vt,d as cn,D as bt,g as St}from"./agent-lanes-model-B4YTt4OF.js";import{i as kt,c as xt,n as qe}from"./keyboard-nav-2kv_tGUS.js";import{p as Ye}from"./lane-roster-store-D8x1jac2.js";function Ne(e){return[e.source,e.sessionId,e.ts,e.kind,e.summary].join("\0")}function wt(e){const n=new Set,t=[];for(const s of e){const i=Ne(s);n.has(i)||(n.add(i),t.push(s))}return t}function Nt(e,n){return e.length<=n?e:[...e].sort((t,s)=>t.ts-s.ts).slice(e.length-n)}function Et(e,n,t){const s=Ne(n);for(const d of e)if(Ne(d)===s)return e;const i=[...e,n];return i.length>t?i.slice(i.length-t):i}function jt(e,n,t){return Nt(wt([...n,...e]),t)}const Ct=500,Rt=3e4;function At(){return{generatedAt:Date.now(),processes:[],transcripts:[],totals:{total:0,scoutManaged:0,hudsonManaged:0,unattributed:0,transcripts:0}}}async function It(e,n){const t=new URLSearchParams({limit:String(e)});return n&&t.set("transcripts","true"),(await nn(`/api/tail/recent?${t.toString()}`)).events??[]}function Tt(e,n){const t=new URLSearchParams;e&&t.set("scope",e),typeof n=="number"&&Number.isFinite(n)&&n>0&&t.set("limit",String(Math.floor(n)));const s=t.toString();return s?`/api/tail/discover?${s}`:"/api/tail/discover"}function _t(e){const n=e?.recentLimit??Ct,t=e?.enabled??!0,s=e?.discoveryIntervalMs??Rt,i=e?.includeTranscriptReplay??!1,d=e?.hydrateOnDiscovery??i,f=e?.discoveryScope,y=e?.discoveryLimit,u=e?.pauseWhenHidden??!1,[l,c]=o.useState(null),[v,m]=o.useState([]),[L,j]=o.useState({discovery:"loading",recent:"loading"}),N=o.useRef(null),p=o.useRef(0);_n(S=>{m(h=>Et(h,S,n))},t);const b=o.useCallback((S=!1)=>{if(!t||u&&!le())return Promise.resolve();S&&j(T=>({...T,recent:"loading"}));const h=`${n}:${i?"replay":"live"}`,E=N.current;if(E?.key===h)return E.promise;const k=++p.current;let R;return R=It(n,i).then(T=>{m(M=>jt(M,T,n)),k===p.current&&j(M=>({...M,recent:"ready"}))}).catch(()=>{k===p.current&&j(T=>({...T,recent:"error"}))}).finally(()=>{N.current?.promise===R&&(N.current=null)}),N.current={key:h,promise:R},R},[t,i,u,n]),z=o.useCallback(async(S=!1)=>{if(t&&!(u&&!le())){S&&j(h=>({...h,discovery:"loading"}));try{const h=await nn(Tt(f,y));c(h),j(E=>({...E,discovery:"ready"})),d&&((h.transcripts?.length??0)>0||h.processes.length>0)&&b()}catch{c(h=>h??At()),j(h=>({...h,discovery:"error"}))}}},[y,f,t,d,u,b]),I=o.useCallback(async()=>{await Promise.all([z(!0),b(!0)])},[z,b]);return o.useEffect(()=>{if(!t)return;let S=!1;const h=()=>{S||z()};h();const E=setInterval(h,s),k=u?we(h):null;return()=>{S=!0,clearInterval(E),k?.()}},[s,t,u,z]),o.useEffect(()=>{if(!t)return;let S=!1,h=!1;const E=()=>{S||h||u&&!le()||(h=!0,b(!0))};E();const k=u?we(E):null;return()=>{S=!0,k?.()}},[t,u,b]),{discovery:l,events:v,loadState:L,refreshDiscovery:z,retryInitialLoad:I}}function Dt({lanes:e,inspectedLaneId:n,onInspect:t,onHorizonChange:s}){const[i,d]=o.useState(-1),f=o.useRef(new Map);o.useEffect(()=>{if(i<0)return;if(i>=e.length){d(e.length-1);return}const l=e[i];if(!l)return;const c=f.current.get(l.id);c?.scrollIntoView({block:"nearest",inline:"nearest"}),c?.focus()},[i,e]),o.useEffect(()=>{n||i>=e.length&&d(e.length>0?e.length-1:-1)},[i,n,e.length]);const y=o.useCallback((l,c)=>{c?f.current.set(l,c):f.current.delete(l)},[]);o.useEffect(()=>{const l=c=>{if(!document.querySelector(".s-agent-lanes")||kt(c.target)||xt()||n||e.length===0)return;const v=Number(c.key)-1;if(!c.metaKey&&!c.ctrlKey&&!c.altKey&&v>=0&&v<de.length){c.preventDefault(),s(de[v].key);return}if(c.key==="ArrowDown"||c.key==="j"){c.preventDefault(),d(m=>qe(m,e.length,1));return}if(c.key==="ArrowUp"||c.key==="k"){c.preventDefault(),d(m=>qe(m,e.length,-1));return}if(c.key==="Home"||c.key==="g"&&!c.shiftKey){c.preventDefault(),d(0);return}if(c.key==="End"||c.key==="G"){c.preventDefault(),d(e.length-1);return}if(c.key==="Enter"||c.key==="i"){const m=i<0?0:i,L=e[m];if(!L)return;c.preventDefault(),d(m),t(L)}};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[i,n,e,s,t]);const u=o.useCallback((l,c)=>({"data-cursor":i===l?!0:void 0,tabIndex:i===l?0:-1,ref:v=>y(c,v),onFocus:()=>d(l)}),[i,y]);return{focusedIndex:i,getLaneFocusProps:u}}function zt(e){return e.trim().replace(/\/+$/u,"").split(/[\\/]/u).filter(Boolean).pop()?.trim()||null}function ce(e){return e.trim().toLowerCase().replace(/['"]/gu,"").replace(/[^a-z0-9]+/gu,"-").replace(/^-+|-+$/gu,"")}function dn(e,n){if(!n)return!0;const t=ce(n);return e.some(s=>{const i=s?.trim();if(!i)return!1;const d=i.toLowerCase(),f=zt(i);return d===n||ce(i)===t||!!(f&&(f.toLowerCase()===n||ce(f)===t))})}function Mt(e,n){const t=n?.trim().toLowerCase()||null,{agent:s,facts:i,source:d}=e;return dn([s.harness,s.definitionId,i?.attribution,d],t)}function Pt(e,n){const t=n?.trim().toLowerCase()||null,{agent:s,facts:i,source:d}=e;return dn([s.project,s.projectRoot,s.cwd,i?.cwd,K(s,d)],t)}function Ot(e){return e.current||on(e.observe)}function Ze(e,n,t,s){return tn(t?.width??e.laneWidths[n.id],s??e.defaultLaneWidth)}function $t(e,n){switch(e.kind){case"session":return n.filter(t=>t.id===e.sessionId);case"harness":return n.filter(t=>Mt(t,e.harness));case"project":return n.filter(t=>Pt(t,e.projectPath));case"attention":return n.filter(t=>Ot(t));default:return[]}}function Xe(e,n,t){n.has(t.lane.id)||(n.add(t.lane.id),e.push({key:t.slot?`${t.slot.id}:${t.lane.id}`:t.lane.id,lane:t.lane,widthPx:t.widthPx,zone:t.zone,position:t.position,slotId:t.slot?.id,laneDefId:t.laneDef?.id,isPinned:t.zone!=="main"}))}function ke(e){return[...e].sort((n,t)=>{const s=Hn(n.zone,t.zone);return s!==0?s:n.position!==t.position?n.position-t.position:n.lane.id.localeCompare(t.lane.id)})}function Wt(e){const{autoLanes:n,deck:t,defaultWidthTier:s}=e,i=new Set,d=[],f=[],y=[],u=new Map(t.laneDefs.map(m=>[m.id,m]));for(const m of Fn(t.slots)){const L=u.get(m.laneDefId);if(!L)continue;const j=$t(L,n),N=m.zone==="pinned_left"?d:m.zone==="pinned_right"?y:f;for(const p of j)Xe(N,i,{lane:p,zone:m.zone,position:m.position,widthPx:Ze(t,p,m,s),slot:m,laneDef:L})}if(t.showAutoLanes){let m=0;for(const L of n)i.has(L.id)||(Xe(f,i,{lane:L,zone:"main",position:m,widthPx:Ze(t,L,void 0,s)}),m+=1)}const l=ke(d),c=ke(f),v=ke(y);return{pinnedLeft:l,main:c,pinnedRight:v,flat:[...l,...c,...v]}}function Ft(e){return e.slots.some(n=>n.laneDefId===Bn)}function ie(e,n){const t=`harness:${ce(n)}`;return e.slots.some(s=>s.laneDefId===t)}function Ht(e,n,t){const[s,i]=o.useState(()=>Ke(e,n));o.useEffect(()=>{i(Ke(e,n))},[n,e]);const d=o.useCallback(p=>{Gn(p),i(p)},[]),f=o.useMemo(()=>Wt({autoLanes:t,deck:s,defaultWidthTier:n}),[t,s,n]),y=o.useCallback((p,b="pinned_left")=>{d(Vn(s,{laneId:p.id,title:K(p.agent,p.source),zone:b,width:s.laneWidths[p.id]}))},[s,d]),u=o.useCallback(p=>{d(Kn(s,p))},[s,d]),l=o.useCallback((p,b)=>{d(Un(s,p,b))},[s,d]),c=o.useCallback(p=>{d(qn(s,p))},[s,d]),v=o.useCallback((p,b)=>{d(Ue(s,{kind:"harness",title:b??`${p} sessions`,harness:p,zone:"pinned_left",width:s.defaultLaneWidth}))},[s,d]),m=o.useCallback(()=>{d(Ue(s,{kind:"attention",title:"Needs attention",zone:"pinned_left",width:"sm"}))},[s,d]),L=o.useCallback(()=>{d(Yn(s))},[s,d]),j=o.useCallback(p=>Zn(s,p),[s]),N=o.useCallback(p=>Xn(s,p),[s]);return{deck:s,layout:f,pinLane:y,unpinLane:u,setLaneWidth:l,setDefaultLaneWidth:c,addHarnessLane:v,addAttentionLane:m,clearPins:L,isPinned:j,pinnedZone:N}}function Bt(e){const[n,t]=o.useState(null),s=o.useRef({laneId:"",x:0,width:512}),i=o.useRef(512),d=o.useCallback((u,l,c)=>{l.preventDefault(),l.stopPropagation(),l.currentTarget.setPointerCapture(l.pointerId),s.current={laneId:u,x:l.clientX,width:c},i.current=c,t(u),document.body.classList.add("s-agent-lanes--resizing-width")},[]),f=o.useCallback(()=>{t(u=>{if(u){document.body.classList.remove("s-agent-lanes--resizing-width");const l=sn(i.current);e(s.current.laneId,l.tier??l.px)}return null})},[e]);o.useEffect(()=>{if(!n)return;const u=c=>{const v=c.clientX-s.current.x;i.current=Math.min(Jn,Math.max(Qn,s.current.width+v));const m=document.querySelector(`[data-lane-id="${s.current.laneId}"]`);m&&m.style.setProperty("--lane-width",`${i.current}px`)},l=()=>f();return window.addEventListener("pointermove",u),window.addEventListener("pointerup",l),window.addEventListener("pointercancel",l),()=>{window.removeEventListener("pointermove",u),window.removeEventListener("pointerup",l),window.removeEventListener("pointercancel",l)}},[f,n]);const y=o.useCallback((u,l)=>{e(u,l),document.querySelector(`[data-lane-id="${u}"]`)?.style.removeProperty("--lane-width")},[e]);return{beginResize:d,resetLaneWidth:y,resizingLaneId:n}}const Je=[{key:"lanes",label:"lanes"},{key:"grid",label:"grid"},{key:"floor",label:"floor"}],Gt=[{key:"auto",label:"auto"},{key:"2",label:"2"},{key:"3",label:"3"},{key:"4",label:"4"}];function Vt(e,n=!1){return e==="grid"?"grid":e==="floor"?n?"lanes":"floor":"lanes"}function Kt(e){return e==="2"||e==="3"||e==="4"?e:"auto"}function Ut(e){return e?Je.filter(n=>n.key!=="floor"):Je}const un="openscout:agent-lanes-horizon",fn="openscout:agent-lanes-layout",mn="openscout:agent-lanes-grid-columns",hn="openscout:agent-lanes-technical-rollup",qt=`${hn}:lane:`,Yt="openscout:agent-lanes-scroll",Zt=96,Xt=3e4,Jt=3e4,Qt=3e4,es=3e4,ns=12e4,ts=["pinned-left","main","pinned-right"];function Qe(){return!le()}function gn(e,n){return`${Yt}:${e}:${n}`}function ss(e,n){try{const t=sessionStorage.getItem(gn(e,n)),s=t?Number.parseFloat(t):0;return Number.isFinite(s)&&s>0?s:0}catch{return 0}}function as(e,n,t){try{sessionStorage.setItem(gn(e,n),String(Math.max(0,Math.round(t))))}catch{}}function rs(){try{const e=sessionStorage.getItem(un);if(e&&de.some(n=>n.key===e))return e}catch{}return bt}function os(e){try{const n=sessionStorage.getItem(fn);return Vt(n,e)}catch{}return"lanes"}function is(){try{return Kt(sessionStorage.getItem(mn))}catch{return"auto"}}function ls(){try{const e=sessionStorage.getItem(hn);if(e==="0")return!1;if(e==="1")return!0}catch{}return null}function pn(e){return`${qt}${encodeURIComponent(e)}`}function en(e){try{const n=sessionStorage.getItem(pn(e));if(n==="0")return!1;if(n==="1")return!0}catch{}return ls()??!1}function cs(e,n){try{sessionStorage.setItem(pn(e),n?"1":"0")}catch{}}function ds(e,n){const t=o.useRef(new Map),s=o.useRef({}),i=o.useCallback((u,l=t.current.get(u))=>{if(!l)return;const c=s.current[u]??ss(e,u);if(c<=0)return;const v=Math.max(0,l.scrollWidth-l.clientWidth),m=Math.min(c,v);Math.abs(l.scrollLeft-m)>1&&(l.scrollLeft=m)},[e]),d=o.useCallback(()=>{for(const u of ts)i(u)},[i]);o.useLayoutEffect(()=>{d();const u=window.requestAnimationFrame(d);return()=>window.cancelAnimationFrame(u)},[e,d,n]);const f=o.useCallback((u,l)=>{if(!l){t.current.delete(u);return}t.current.set(u,l),i(u,l)},[i]);return{handleLaneScroll:o.useCallback((u,l)=>{const c=l.currentTarget.scrollLeft;s.current[u]=c,as(e,u,c)},[e]),setLaneScrollNode:f}}function us({issue:e}){const n=e.agentNames?.length?e.agentNames.join(", "):e.agentIds?.join(", "),t=e.transcriptPaths?.join(" · "),s=[n,t].filter(Boolean).join(" · ");return r.jsxs("li",{className:"s-agent-lanes-issues-item",children:[r.jsx("span",{className:"s-agent-lanes-issues-kind",children:e.kind.replaceAll("_"," ")}),r.jsx("span",{className:"s-agent-lanes-issues-message",children:e.message}),s?r.jsx("span",{className:"s-agent-lanes-issues-detail",children:s}):null]})}function fs({loadState:e,onRetry:n}){const t=[e.discovery==="error"?"session discovery":"",e.recent==="error"?"recent history":""].filter(Boolean).join(" and ");return r.jsx("div",{className:"s-agent-lanes-empty s-agent-lanes-empty--degraded",role:"alert",children:r.jsxs("div",{className:"s-agent-lanes-empty-card",children:[r.jsxs("div",{className:"s-agent-lanes-empty-rail","aria-hidden":"true",children:[r.jsx("span",{}),r.jsx("span",{}),r.jsx("span",{})]}),r.jsxs("div",{className:"s-agent-lanes-empty-copy",children:[r.jsx("span",{className:"s-agent-lanes-empty-kicker",children:"Tail incomplete"}),r.jsx("h2",{children:"Recent activity could not be loaded"}),r.jsxs("p",{children:["Scout could not finish ",t||"the tail scan",", so this is not being treated as a quiet interval."]}),r.jsx("p",{className:"s-agent-lanes-empty-secondary",children:"Live events can still arrive while Scout retries."})]}),r.jsx("div",{className:"s-agent-lanes-empty-actions",children:r.jsx("button",{type:"button",onClick:n,children:"Retry tail scan"})})]})})}function ms({activeFilterLabel:e,horizon:n,horizonLabel:t,showAutoLanes:s,onHorizonChange:i,onAddAttentionLane:d,onAddCodexLane:f,sourceCount:y,eventCount:u}){const l=!!e,c=l?"No matching lanes":s?`No activity in the last ${t}`:"No pinned lanes",v=l?`${e} has no activity in the last ${t}.`:s?`Scout checked ${y.toLocaleString()} session source${y===1?"":"s"} and ${u.toLocaleString()} recent tail event${u===1?"":"s"}; nothing is active in this interval.`:"Automatic lanes are off, and this deck has no pinned sessions.",m=s?"Scout will keep listening. New turns and tool output will appear here automatically.":"Pin a session lane or turn automatic lanes back on to populate the deck.",L=n==="5m"?"30m":n==="24h"?null:"24h";return r.jsx("div",{className:"s-agent-lanes-empty",role:"status","aria-live":"polite",children:r.jsxs("div",{className:"s-agent-lanes-empty-card",children:[r.jsxs("div",{className:"s-agent-lanes-empty-rail","aria-hidden":"true",children:[r.jsx("span",{}),r.jsx("span",{}),r.jsx("span",{})]}),r.jsxs("div",{className:"s-agent-lanes-empty-copy",children:[r.jsx("span",{className:"s-agent-lanes-empty-kicker",children:l?"Filter checked":s?"Tail scanned":"Lane deck ready"}),r.jsx("h2",{children:c}),r.jsx("p",{children:v}),r.jsx("p",{className:"s-agent-lanes-empty-secondary",children:m})]}),r.jsxs("div",{className:"s-agent-lanes-empty-actions",children:[L?r.jsxs("button",{type:"button",onClick:()=>i(L),children:["Look back ",ln(L)]}):null,r.jsx("button",{type:"button",onClick:d,children:"Show attention"}),r.jsx("button",{type:"button",onClick:f,children:"Pin Codex sessions"})]})]})})}function hs({lane:e,widthPx:n,laneTitle:t,pinned:s,laneWidth:i,defaultWidth:d,isNew:f,nowMs:y,traceWindowMs:u,traceWindowLabel:l,summaryHeight:c,onSummaryResizeStart:v,onSummaryResizeReset:m,summaryResizing:L,onInspect:j,onTraceEventSelect:N,onTogglePin:p,onWidthChange:b,onWidthResizeStart:z,widthResizing:I,focusProps:S,operatorName:h,grid:E=!1}){const{agent:k,observe:R,source:T}=e,M=on(R),J=!!R,Q=M?" s-agent-lane--live":"",ee=f?" s-agent-lane--new":"",[F,ne]=o.useState(!0),[U,H]=o.useState(()=>en(e.id)),$=o.useRef(e.id);o.useEffect(()=>{if($.current!==e.id){$.current=e.id,H(en(e.id));return}cs(e.id,U)},[U,e.id]);const _=S?.ref,B=S?{"data-cursor":S["data-cursor"],tabIndex:S.tabIndex,onFocus:S.onFocus}:void 0,P=()=>r.jsx("section",{className:"s-agent-lane-trace","aria-label":`${K(k,T)} trace`,children:r.jsx("div",{className:"s-agent-lane-body",children:J?r.jsx(Wn,{data:R??void 0,agentId:e.source==="scout"?k.id:void 0,sessionId:k.harnessSessionId,showRail:!1,variant:"lane",nowMs:y,traceWindowMs:u,traceWindowLabel:l,laneCollapseTechnicalEvents:U,onLaneCollapseTechnicalEventsChange:H,laneOperatorName:h,onLaneEventSelect:q=>N(e,q)}):r.jsx("div",{className:"s-agent-lane-empty",children:"Waiting for trace activity…"})})});return r.jsxs("article",{ref:_,"data-lane-id":e.id,className:`s-agent-lane${E?" s-agent-lane--grid":""}${Q}${ee}${s?" s-agent-lane--pinned":""}${S?.["data-cursor"]?" s-agent-lane--cursor":""}`,style:E?void 0:{"--lane-width":`${n}px`},...B,children:[r.jsx(rt,{title:t,width:i,defaultWidth:d,pinned:s,onTogglePin:p,onWidthChange:b,onResizeStart:z,resizing:I,statusLabel:cn(k,T),live:M,widthControls:!E}),r.jsx(ot,{model:it(e,{isLive:M,nowMs:y}),avatar:r.jsx($n,{agent:k,placement:"row",size:44,presence:!1,tile:!1}),collapsed:F,cockpitHeight:F?void 0:c,onToggleCollapsed:()=>ne(q=>!q),onOpen:()=>j(e)}),!F&&r.jsx(mt,{onResizeStart:v,onReset:m,active:L}),P()]})}function gs({navigate:e,agents:n,data:t,embedded:s=!1,laneSize:i="lg",profileId:d,harnessFilter:f,projectFilter:y}){const u=o.useContext(Pn),l=t?.agents??n??u?.agents??[],c=t?.operatorName?.trim()||u?.onboarding?.operatorName?.trim()||void 0,v=d??an(),m=i??rn(),[L,j]=o.useState(Date.now()),[N,p]=o.useState(rs),[b,z]=o.useState(()=>os(s)),[I,S]=o.useState(is),h=!s&&b==="floor",E=b==="grid",k=h?"4h":N,[R,T]=o.useState(ut),[M,J]=o.useState([]),{beginResize:Q,resetSummaryHeight:ee,resizing:F}=ft(T),ne=o.useCallback(a=>Q(a,R),[Q,R]),U=St(k),H=ht(k),$=_t({enabled:!t,includeTranscriptReplay:!0,hydrateOnDiscovery:!0,discoveryIntervalMs:s?Xt:5e3,recentLimit:U,discoveryLimit:s?Zt:void 0,pauseWhenHidden:!0}),_=t?.discovery??$.discovery,B=t?.tailEvents??$.events,P=t?.loadState??$.loadState,q=t?.retryInitialLoad??$.retryInitialLoad,Ee=t?.terminalSessions??M,Ln={view:"ops",mode:"lanes"},Y=ln(k),je=s?Jt:1e4,Ce=s?Qt:1e4;o.useEffect(()=>{const a=setInterval(()=>{Qe()||j(Date.now())},je);return()=>clearInterval(a)},[je]),o.useEffect(()=>{if(t)return;let a=!1;const g=async()=>{if(!Qe())try{const be=await zn({includeDiscovered:!1});a||J(be)}catch{a||J([])}};g();const w=setInterval(()=>{g()},Ce),C=we(()=>{g()});return()=>{a=!0,clearInterval(w),C()}},[t,Ce]),o.useEffect(()=>{try{sessionStorage.setItem(un,N)}catch{}},[N]),o.useEffect(()=>{try{sessionStorage.setItem(fn,b)}catch{}},[b]),o.useEffect(()=>{try{sessionStorage.setItem(mn,I)}catch{}},[I]);const yn=o.useRef(gt()),Re=o.useRef(""),[te,Ae]=o.useState(()=>new Set),[me,Ie]=o.useState(null),vn=o.useMemo(()=>l.filter(a=>pt(a,L,k)),[l,L,k]),bn=Dn(vn,{enabled:!t,activeIntervalMs:s?es:void 0,idleIntervalMs:s?ns:void 0,pauseWhenHidden:!0}),Te=t?.observeCache??bn,Sn=P.discovery==="loading"||P.recent==="loading",_e=P.discovery==="error"||P.recent==="error",De=_?.totals.transcripts??_?.transcripts?.length??0,se=nt(Sn,_e?0:at);o.useEffect(()=>{if(te.size===0)return;const a=setTimeout(()=>Ae(new Set),900);return()=>clearTimeout(a)},[te]);const{lanes:ae,issues:D,freshLaneIds:he}=o.useMemo(()=>{const a=Lt({transcripts:_?.transcripts??[],tailEvents:B,processes:_?.processes??[],scoutAgents:l,terminalSessions:Ee,observeCache:Te,now:L,workingOnly:!0,horizon:k}),g=yt(a.lanes,yn.current),w=[...vt(_),...a.issues];return{lanes:g.lanes,issues:w,freshLaneIds:g.newLaneIds}},[_,B,l,Ee,Te,L,k]);o.useEffect(()=>{const a=D.map(g=>`${g.id}\0${g.message}`).join(`
|
|
2
|
+
`);a!==Re.current&&(Re.current=a,D.length!==0&&console.warn(`[agent-lanes] ${D.length} roster issue${D.length===1?"":"s"}`,D))},[D]),o.useEffect(()=>{he.length!==0&&Ae(a=>{const g=new Set(a);for(const w of he)g.add(w);return g})},[he.join("\0")]);const ze=o.useMemo(()=>ae.find(a=>a.id===me)??null,[me,ae]),Z=o.useMemo(()=>ae.filter(a=>Ls(a,{harnessFilter:f,projectFilter:y})),[ae,f,y]),kn=o.useCallback(a=>ys(a,{harnessFilter:f,projectFilter:y}),[f,y]),{deck:A,layout:x,pinLane:Me,unpinLane:Pe,setLaneWidth:ge,addHarnessLane:X,addAttentionLane:Oe,clearPins:xn,isPinned:$e}=Ht(v,m,Z),{beginResize:We,resizingLaneId:Fe}=Bt(ge),pe=o.useMemo(()=>vs({harnessFilter:f,projectFilter:y}),[f,y]),W=x.flat,Le=x.pinnedLeft.length+x.pinnedRight.length,wn=o.useMemo(()=>[x.pinnedLeft,x.main,x.pinnedRight].map(a=>a.map(g=>`${g.key}:${g.widthPx}`).join(",")).join("/"),[x.main,x.pinnedLeft,x.pinnedRight]),{handleLaneScroll:G,setLaneScrollNode:V}=ds(v,wn),Nn=o.useCallback(a=>{V("pinned-left",a)},[V]),En=o.useCallback(a=>{V("main",a)},[V]),jn=o.useCallback(a=>{V("pinned-right",a)},[V]),Cn=o.useCallback(a=>{G("pinned-left",a)},[G]),Rn=o.useCallback(a=>{G("main",a)},[G]),An=o.useCallback(a=>{G("pinned-right",a)},[G]);o.useEffect(()=>{if(h)return;const a=W.map(g=>{const{lane:w}=g;return{id:w.id,label:K(w.agent,w.source),statusLabel:cn(w.agent,w.source),tone:Mn(w.agent.state,w.agent),agentId:lt(w.agent)?void 0:w.agent.id,updatedAt:w.lastActiveAt>0?w.lastActiveAt:void 0}});Ye(a)},[W,h]),o.useEffect(()=>()=>Ye(null),[]);const[He,ye]=o.useState(null),ve=o.useCallback(a=>{Ie(a.id)},[]),Be=o.useCallback((a,g)=>{ye({lane:a,event:g})},[]),In=o.useCallback(a=>{const g=a.observe?.events.at(-1);g&&ye({lane:a,event:g})},[]),{getLaneFocusProps:Ge}=Dt({lanes:W.map(a=>a.lane),inspectedLaneId:me,onInspect:ve,onHorizonChange:p}),[re,O]=o.useState(!1),Ve=o.useRef(null);o.useEffect(()=>{if(!re)return;const a=g=>{Ve.current?.contains(g.target)||O(!1)};return window.addEventListener("pointerdown",a),()=>window.removeEventListener("pointerdown",a)},[re]);const oe=o.useCallback((a,g,w=!1)=>{const{lane:C}=a,be=K(C.agent,C.source),Tn=A.laneWidths[C.id]??sn(a.widthPx).tier??a.widthPx;return r.jsx(hs,{lane:C,widthPx:a.widthPx,laneTitle:be,pinned:a.isPinned,laneWidth:Tn,defaultWidth:A.defaultLaneWidth,isNew:te.has(C.id),nowMs:L,traceWindowMs:H,traceWindowLabel:Y,summaryHeight:R,onSummaryResizeStart:ne,onSummaryResizeReset:ee,summaryResizing:F,onInspect:ve,onTraceEventSelect:Be,onTogglePin:()=>{$e(C.id)?Pe(C.id):Me(C)},onWidthChange:Se=>ge(C.id,Se),onWidthResizeStart:Se=>We(C.id,Se,a.widthPx),widthResizing:Fe===C.id,focusProps:Ge(g,C.id),operatorName:c,grid:w},a.key)},[We,A.defaultLaneWidth,A.laneWidths,Ge,ne,Y,ve,Be,$e,c,te,L,Me,ee,Fe,ge,R,F,H,Pe]);return r.jsxs("div",{className:`s-agent-lanes${s?" s-agent-lanes--embedded s-agent-lanes--low-motion":""}`,"data-lane-profile":v,"data-lane-layout":h?"floor":b,"data-lanes-deck-version":"1",children:[r.jsxs("div",{className:"s-agent-lanes-bar",children:[r.jsxs("div",{className:"s-agent-lanes-bar-leading",children:[r.jsx("div",{className:"s-agent-lanes-title",children:"Agent Lanes"}),r.jsxs("div",{className:"s-agent-lanes-meta","aria-label":"Lane deck status",children:[r.jsxs("span",{className:"s-agent-lanes-meta-stat",children:[h?Z.length:W.length," live"]}),!h&&Le>0?r.jsxs("span",{className:"s-agent-lanes-meta-stat",children:[Le," pinned"]}):null,r.jsx("span",{className:"s-agent-lanes-meta-stat",children:h?"past 30m · lanes 4h":`trace ${Y}`}),pe?r.jsx("span",{className:"s-agent-lanes-meta-filter",children:pe}):null,r.jsxs("span",{className:"s-agent-lanes-meta-detail",children:["deck v1 · ",v]})]})]}),r.jsxs("div",{className:"s-agent-lanes-bar-controls",children:[r.jsx("div",{className:"s-agent-lanes-layouts",role:"group","aria-label":"Lane layout",children:Ut(s).map(a=>r.jsx("button",{type:"button",className:`s-agent-lanes-horizon${b===a.key?" s-agent-lanes-horizon--on":""}`,"aria-pressed":b===a.key,onClick:()=>z(a.key),children:a.label},a.key))}),E?r.jsx("div",{className:"s-agent-lanes-grid-density",role:"group","aria-label":"Grid columns",children:Gt.map(a=>r.jsx("button",{type:"button",className:`s-agent-lanes-horizon${I===a.key?" s-agent-lanes-horizon--on":""}`,"aria-pressed":I===a.key,title:a.key==="auto"?"Fit columns to the available width":`${a.key} columns`,onClick:()=>S(a.key),children:a.label},a.key))}):null,r.jsxs("div",{className:"s-agent-lanes-deck-menu",ref:Ve,hidden:h,children:[r.jsx("button",{type:"button",className:"s-agent-lanes-deck-btn","aria-expanded":re,onClick:()=>O(a=>!a),children:"+ Lane"}),re?r.jsxs("div",{className:"s-agent-lanes-deck-popover",role:"menu",children:[r.jsx("button",{type:"button",role:"menuitem",className:"s-agent-lanes-deck-item",onClick:()=>{Oe(),O(!1)},disabled:Ft(A),children:"Needs attention"}),r.jsx("button",{type:"button",role:"menuitem",className:"s-agent-lanes-deck-item",onClick:()=>{X("codex","Codex sessions"),O(!1)},disabled:ie(A,"codex"),children:"Codex sessions"}),r.jsx("button",{type:"button",role:"menuitem",className:"s-agent-lanes-deck-item",onClick:()=>{X("claude","Claude sessions"),O(!1)},disabled:ie(A,"claude"),children:"Claude sessions"}),r.jsx("button",{type:"button",role:"menuitem",className:"s-agent-lanes-deck-item",onClick:()=>{X("grok","Grok sessions"),O(!1)},disabled:ie(A,"grok"),children:"Grok sessions"}),r.jsx("button",{type:"button",role:"menuitem",className:"s-agent-lanes-deck-item",onClick:()=>{X("kimi","Kimi sessions"),O(!1)},disabled:ie(A,"kimi"),children:"Kimi sessions"}),r.jsx("button",{type:"button",role:"menuitem",className:"s-agent-lanes-deck-item s-agent-lanes-deck-item--danger",onClick:()=>{xn(),O(!1)},disabled:Le===0,children:"Clear pinned lanes"})]}):null]}),h?null:r.jsx("div",{className:"s-agent-lanes-horizons",role:"group","aria-label":"Activity window",children:de.map((a,g)=>r.jsx("button",{type:"button",className:`s-agent-lanes-horizon${N===a.key?" s-agent-lanes-horizon--on":""}`,"aria-pressed":N===a.key,title:`${a.label} window (${g+1})`,onClick:()=>p(a.key),children:a.label},a.key))})]})]}),t==null&&D.length>0?r.jsxs("div",{className:"s-agent-lanes-issues",role:"status","aria-live":"polite",children:[r.jsxs("div",{className:"s-agent-lanes-issues-head",children:[r.jsx("span",{className:"s-agent-lanes-issues-badge",children:"Roster issues"}),r.jsxs("span",{className:"s-agent-lanes-issues-meta",children:[D.length," fleet/transcript warning",D.length===1?"":"s"," — lanes follow tail, not agent registry"]})]}),r.jsx("ul",{className:"s-agent-lanes-issues-list",children:D.map(a=>r.jsx(us,{issue:a},a.id))})]}):null,(h?Z.length:W.length)===0?se.visible?r.jsx(tt,{discovery:_,discoveryPhase:P.discovery,windowMs:H,nowMs:L,layout:h?"none":E?"grid":"scroll",gridColumns:I,laneWidthPx:tn(A.defaultLaneWidth,A.defaultLaneWidth),matchTranscript:kn}):_e?r.jsx(fs,{loadState:P,onRetry:()=>{q()}}):r.jsx(ms,{activeFilterLabel:pe,horizon:N,horizonLabel:Y,showAutoLanes:A.showAutoLanes,onHorizonChange:p,onAddAttentionLane:Oe,onAddCodexLane:()=>X("codex","Codex sessions"),sourceCount:De,eventCount:B.length}):h?r.jsx(et,{lanes:Z,now:L,onOpenTrace:In,railLedger:!0,operatorName:c}):E?r.jsx("div",{className:"s-agent-lanes-grid","data-grid-columns":I,role:"listbox","aria-label":"Agent lane grid",children:W.map((a,g)=>oe(a,g,!0))}):r.jsxs("div",{className:"s-agent-lanes-body",children:[x.pinnedLeft.length>0?r.jsxs("section",{className:"s-agent-lanes-zone s-agent-lanes-zone--pinned-left","aria-label":"Pinned lanes",children:[r.jsx("div",{className:"s-agent-lanes-zone-label",children:"Pinned"}),r.jsx("div",{ref:Nn,className:"s-agent-lanes-scroll",role:"listbox","aria-label":"Pinned agent lanes",onScroll:Cn,children:x.pinnedLeft.map((a,g)=>oe(a,g))})]}):null,x.main.length>0?r.jsxs("section",{className:"s-agent-lanes-zone s-agent-lanes-zone--main","aria-label":"Active lanes",children:[x.pinnedLeft.length>0?r.jsx("div",{className:"s-agent-lanes-zone-label",children:"Live"}):null,r.jsx("div",{ref:En,className:"s-agent-lanes-scroll",role:"listbox","aria-label":"Active agent lanes",onScroll:Rn,children:x.main.map((a,g)=>oe(a,x.pinnedLeft.length+g))})]}):null,x.pinnedRight.length>0?r.jsxs("section",{className:"s-agent-lanes-zone s-agent-lanes-zone--pinned-right","aria-label":"Pinned right lanes",children:[r.jsx("div",{className:"s-agent-lanes-zone-label",children:"Pinned"}),r.jsx("div",{ref:jn,className:"s-agent-lanes-scroll",role:"listbox","aria-label":"Pinned right agent lanes",onScroll:An,children:x.pinnedRight.map((a,g)=>oe(a,x.pinnedLeft.length+x.main.length+g))})]}):null]}),se.visible?r.jsx(st,{loadState:P,sourceCount:De,processCount:_?.processes.length??0,eventCount:B.length,laneCount:h?Z.length:W.length,horizonLabel:Y,handedOff:se.exiting,exiting:se.exiting}):null,ze&&r.jsx(ct,{lane:ze,navigate:e,returnRoute:Ln,navigationEnabled:t==null,onClose:()=>Ie(null)}),He&&r.jsx(dt,{target:He,onClose:()=>ye(null)})]})}function ue(e){const n=e?.trim().toLowerCase();return n||null}function xe(e){return e.trim().toLowerCase().replace(/['"]/gu,"").replace(/[^a-z0-9]+/gu,"-").replace(/^-+|-+$/gu,"")}function ps(e){return e.trim().replace(/\/+$/u,"").split(/[\\/]/u).filter(Boolean).pop()?.trim()||null}function fe(e,n){if(!n)return!0;const t=xe(n);return e.some(s=>{const i=s?.trim();if(!i)return!1;const d=i.toLowerCase(),f=ps(i);return d===n||xe(i)===t||!!(f&&(f.toLowerCase()===n||xe(f)===t))})}function Ls(e,n){const t=ue(n.harnessFilter),s=ue(n.projectFilter),{agent:i,facts:d,source:f}=e;return fe([i.harness,i.definitionId,d?.attribution,f],t)&&fe([i.project,i.projectRoot,i.cwd,d?.cwd,K(i,f)],s)}function ys(e,n){return fe([e.harness,e.source],ue(n.harnessFilter))&&fe([e.project,e.cwd],ue(n.projectFilter))}function vs(e){return[e.harnessFilter?.trim()?`harness ${e.harnessFilter.trim()}`:"",e.projectFilter?.trim()?`project ${e.projectFilter.trim()}`:""].filter(Boolean).join(" · ")}const bs=On({id:"lanes",label:"Agent Lanes",route:{view:"ops",mode:"lanes"},webPath:"/ops/lanes",screen:"AgentLanesView",embed:{path:"/embed/agent-lanes",aliases:["/ops/lanes/embed","/embed/lanes","/embed/traces"],profile:"macos.lanes",rootClassName:"s-agent-lanes-embed",chrome:{showSecondaryNav:!1,showPageStatusBar:!1},hosts:{macos:!0},resolveEmbedProps:e=>({profileId:an(),laneSize:rn(),harnessFilter:e.get("harness")?.trim()||null,projectFilter:e.get("project")?.trim()||null})}}),Vs=Object.freeze(Object.defineProperty({__proto__:null,AgentLanesView:gs,scoutSurface:bs},Symbol.toStringTag,{value:"Module"}));export{gs as A,Vs as a,Wt as r,_t as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.agent-live-actions{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);min-width:0;padding:var(--space-sm);border:1px solid color-mix(in srgb,var(--border) 78%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 82%,var(--bg))}.agent-live-actions--inline{align-self:flex-start;width:min(100%,520px)}.agent-live-actions--compact{gap:var(--space-xs);padding:0;border:0;border-radius:0;background:transparent}.agent-live-actions--compact .agent-live-actions-status{flex:1 1 auto;min-width:0}.agent-live-actions-status{display:flex;align-items:center;gap:var(--space-xs);min-width:0;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted)}.agent-live-actions-dot{width:7px;height:7px;flex:none;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--ink) 22%,transparent)}.agent-live-actions--live .agent-live-actions-dot{background:var(--accent);box-shadow:0 0 10px color-mix(in srgb,var(--accent) 48%,transparent)}.agent-live-actions-status-main,.agent-live-actions-status-detail{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-live-actions-status-main{color:var(--ink)}.agent-live-actions-status-detail{color:var(--dim)}.agent-live-actions-buttons{display:flex;flex:none;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-xs)}.agent-live-actions-button{min-height:28px;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:0 var(--space-md);border:1px solid color-mix(in srgb,var(--border) 92%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--ink) 4%,transparent);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:650;line-height:var(--leading-none);letter-spacing:var(--tracking-md);text-transform:uppercase;white-space:nowrap;cursor:pointer;transition:border-color .14s ease,background .14s ease,color .14s ease}.agent-live-actions-button svg{flex:none}.agent-live-actions-button:hover{border-color:color-mix(in srgb,var(--accent) 30%,transparent);background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--ink)}.agent-live-actions-button:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 52%,transparent);outline-offset:2px}.agent-live-actions-button--primary{border-color:color-mix(in srgb,var(--accent) 38%,transparent);background:color-mix(in srgb,var(--accent) 13%,var(--surface));color:var(--accent);box-shadow:inset 0 1px color-mix(in srgb,white 6%,transparent)}.agent-live-actions-button--primary:hover{border-color:color-mix(in srgb,var(--accent) 56%,transparent);background:color-mix(in srgb,var(--accent) 20%,var(--surface))}.agent-live-actions--compact .agent-live-actions-buttons{flex:0 0 auto;flex-wrap:nowrap;justify-content:flex-end;gap:var(--space-2xs)}.agent-live-actions--compact .agent-live-actions-button{min-height:24px;padding:0 var(--space-xs);border-radius:var(--radius-sm);font-size:var(--text-2xs)}.agent-live-actions--compact .agent-live-actions-button--primary{flex:0 0 auto;min-height:24px}@media(max-width:720px){.agent-live-actions{align-items:stretch;flex-direction:column}.agent-live-actions-buttons{justify-content:flex-start}.agent-live-actions--compact{flex-direction:row;align-items:center}.agent-live-actions--compact .agent-live-actions-buttons{justify-content:flex-end}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i,j as t}from"./index-DMiGbrBt.js";import{n as W,e as q,f as D}from"./colors-BtO5_zlx.js";import{a as G}from"./api-h5zurxmi.js";import{q as M}from"./terminal-takeover-B8UeD9OX.js";import{t as S}from"./time-DltNTpLl.js";import{u as U}from"./Provider-C7UKGHQy.js";import{o as N}from"./openContent-C6XO6kr5.js";import{E as F}from"./eye-0PvebX_a.js";import{T as H}from"./terminal-B9AOZQKR.js";function A(e){return e?e.length>18?`${e.slice(0,8)}...${e.slice(-6)}`:e:null}function ee({agent:e,catalog:r,navigate:I,returnTo:g,variant:m="default",className:O,onNavigate:v}){const p=U(),[L,c]=i.useState(null),[$,b]=i.useState(!1),f=I??p.navigate,h=g??p.route;i.useEffect(()=>{b(!1)},[e.id]),i.useEffect(()=>{if(r!==void 0){c(null);return}let s=!1;return G(`/api/agents/${encodeURIComponent(e.id)}/session-catalog`).then(R=>{s||c(R)}).catch(()=>{s||c(null)}),()=>{s=!0}},[e.id,r]);const a=r===void 0?L:r,u=e.terminalSurface??(e.transport==="tmux"&&e.harnessSessionId?{backend:"tmux",sessionName:e.harnessSessionId,paneId:null,socketDir:null}:null),o=a?.activeSessionId??(u?e.harnessSessionId??u.sessionName:null),T=i.useMemo(()=>a?.sessions.find(s=>s.id===o)??null,[o,a?.sessions]);W(e.state);const n=!!(u&&o),w=n||!!a?.resumeCommand,x=q(e.state,e),l=m==="compact",E=x?o?l?n?"Live terminal":"Live trace":`Live ${A(o)}`:"Working":o?l?n?"Terminal":"Trace":`${n?"Terminal":"Trace"} ${A(o)}`:D(e.state,e)?"Callable":"No live turn",j=T?.startedAt?S(T.startedAt):e.updatedAt?S(e.updatedAt):null,y=n?l?"Observe":"Observe terminal":l?"Trace":"Observe trace",k=n?"Observe the live terminal":"Open the web observe trace",d=s=>{v?.(),N(f,{view:"terminal",agentId:e.id,mode:s},{returnTo:h})},C=()=>{v?.(),N(f,{view:"agents-v2",agentId:e.id,tab:"observe"},{returnTo:h})},z=()=>{if(n){d("takeover");return}const s=a?.resumeCommand;s&&(b(!0),M({command:s,cwd:a?.resumeCwd,agentId:e.id}).then(()=>d("takeover")))},B=["agent-live-actions",`agent-live-actions--${m}`,x?"agent-live-actions--live":"",O??""].filter(Boolean).join(" ");return t.jsxs("div",{className:B,children:[t.jsxs("div",{className:"agent-live-actions-status",children:[t.jsx("span",{className:"agent-live-actions-dot"}),t.jsx("span",{className:"agent-live-actions-status-main",children:E}),j&&t.jsx("span",{className:"agent-live-actions-status-detail",children:j})]}),t.jsxs("div",{className:"agent-live-actions-buttons",children:[t.jsxs("button",{type:"button",className:"agent-live-actions-button agent-live-actions-button--primary",onClick:()=>n?d("observe"):C(),title:k,"aria-label":k,children:[t.jsx(F,{size:13,strokeWidth:1.9,"aria-hidden":"true"}),t.jsx("span",{children:y})]}),n&&t.jsx("button",{type:"button",className:"agent-live-actions-button",onClick:C,title:"Open the web observe trace",children:t.jsx("span",{children:"Trace"})}),w&&t.jsxs("button",{type:"button",className:"agent-live-actions-button",onClick:z,title:a?.resumeCommand??"Open interactive terminal takeover",children:[t.jsx(H,{size:13,strokeWidth:1.9,"aria-hidden":"true"}),t.jsx("span",{children:$?"Going...":"Takeover"})]})]})]})}export{ee as A};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{j as s,r as p}from"./index-DMiGbrBt.js";import{u as K}from"./Provider-C7UKGHQy.js";import{o as E}from"./openContent-C6XO6kr5.js";import{a as H}from"./api-h5zurxmi.js";import{c as P}from"./clipboard-e3fSpeo7.js";import{t as D}from"./time-DltNTpLl.js";import"./router-Bq5dwf78.js";import"./terminal-sessions-D5CIR2OL.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";const q=30*6e4,z=/^(?:hey|hi|hello)\b[^,]{0,24},\s*|^(?:can|could|would|will)\s+(?:you|we|i)\s+(?:please\s+)?|^please\s+|^let'?s\s+/i,L={created:"+",modified:"~",read:"·"};function J(e){const a=(e.preview??"").replace(/^\[ask:[^\]]+\]\s*/i,"").replace(/\s+/g," ").replace(z,"").trim();if(a)return a.length>150?`${a.slice(0,150).replace(/\s+\S*$/,"")}…`:a;const t=e.title?.trim();return t&&t!==e.agentName?t:"Untitled session"}function R(e){if(!e)return"—";const a=e.replace(/\.jsonl$/,"").replace(/^c\./,"").replace(/^session[_:-]?/i,"");return a.length<=10?a:`${a.slice(0,8)}…${a.slice(-3)}`}function Q(e){return e.replace(/^\/(?:Users|home)\/[^/]+\/(?:dev\/|projects\/|src\/|code\/)?/,"")}function u(e){return!e||e<=0?"0":e<1e3?`${e}`:`${(e/1e3).toFixed(e<1e4?1:0).replace(/\.0$/,"")}k`}function X(e){const a=new Map;for(const t of e){if(t.kind!=="tool")continue;const l=(t.tool??"tool").toLowerCase();a.set(l,(a.get(l)??0)+1)}return[...a.entries()].map(([t,l])=>({name:t,n:l})).sort((t,l)=>l.n-t.n).slice(0,8)}function F(){const[e,a]=p.useState(!1),t=p.useRef(null),l=p.useCallback(o=>{P(o).then(r=>{r&&(a(!0),t.current&&window.clearTimeout(t.current),t.current=window.setTimeout(()=>a(!1),1200))})},[]);return p.useEffect(()=>()=>{t.current&&window.clearTimeout(t.current)},[]),[e,l]}function B({copied:e}){return s.jsx("svg",{className:"ap-sx-copyIco",width:"11",height:"11",viewBox:"0 0 12 12",fill:"none","aria-hidden":!0,children:e?s.jsx("path",{d:"M2.6 6.3 5 8.6 9.5 3.5",stroke:"currentColor",strokeWidth:"1.4",strokeLinecap:"round",strokeLinejoin:"round"}):s.jsxs(s.Fragment,{children:[s.jsx("rect",{x:"3.6",y:"3.6",width:"6",height:"6",rx:"1.3",stroke:"currentColor",strokeWidth:"1.05"}),s.jsx("path",{d:"M7.8 3.6V2.5A1.1 1.1 0 0 0 6.7 1.4H2.5A1.1 1.1 0 0 0 1.4 2.5v4.2A1.1 1.1 0 0 0 2.5 7.8h1.1",stroke:"currentColor",strokeWidth:"1.05",strokeLinecap:"round",strokeLinejoin:"round"})]})})}function Y({value:e,display:a,title:t,className:l}){const[o,r]=F();return s.jsxs("button",{type:"button",className:l?`ap-sx-copy ${l}`:"ap-sx-copy","data-copied":o||void 0,title:o?"Copied":t??e,"aria-label":`Copy ${e}`,onClick:c=>{c.stopPropagation(),r(e)},children:[s.jsx("span",{className:"ap-sx-copyText",children:a}),s.jsx(B,{copied:o})]})}function Z({session:e,agentId:a,status:t}){const{route:l,navigate:o}=K(),[r,c]=p.useState(null),[v,d]=p.useState("loading"),h=e.harnessSessionId??e.id;p.useEffect(()=>{if(!a){d("loaded");return}let n=!1;return d("loading"),c(null),H(`/api/agents/${encodeURIComponent(a)}/observe`).then(i=>{n||(c(i),d("loaded"))}).catch(()=>{n||d("loaded")}),()=>{n=!0}},[a]);const m=r?.data??null,b=m?.metadata,x=b?.usage,g=b?.session,f=m?.files??[],k=p.useMemo(()=>X(m?.events??[]),[m?.events]),[T,O]=F(),M=g?.gitBranch?.trim()||e.currentBranch?.trim()||"—",S=g?.model?.trim()||"—",y=g?.turnCount??x?.assistantMessages??e.messageCount??null,w=g?.sessionStart??e.lastMessageAt??null,A=x?.contextInputTokens??0,C=x?.contextWindowTokens??0,j=C>0?Math.min(100,Math.round(A/C*100)):null,I=(x?.cacheReadInputTokens??0)+(x?.cacheCreationInputTokens??0),W=()=>E(o,{view:"sessions",sessionId:e.id},{returnTo:l}),U=()=>E(o,{view:"terminal",agentId:a,mode:"takeover"},{returnTo:l}),V=[["branch",M],["model",S],["started",w?D(w):"—"],["turns",y!=null?`${y}`:"—"]],_=()=>{const i=[["session",h],["agent",a||"—"],["branch",M],["model",S],["cwd",g?.cwd?.trim()||"—"],["started",w?new Date(w).toISOString():"—"],["turns",y!=null?`${y}`:"—"],["context",j!=null?`${u(A)} / ${u(C)} (${j}%)`:"—"]].map(([N,G])=>`${`${N}:`.padEnd(9)}${G}`).join(`
|
|
2
|
+
`),$=f.length?`
|
|
3
|
+
|
|
4
|
+
files touched:
|
|
5
|
+
${[...f].slice(0,24).map(N=>` ${L[N.state]} ${N.path}`).join(`
|
|
6
|
+
`)}`:"";return i+$};return v==="loading"?s.jsx("div",{className:"ap-sx-card ap-sx-loading",children:"Loading session…"}):s.jsxs("div",{className:"ap-sx-card",children:[s.jsxs("div",{className:"ap-sx-statGrid",children:[s.jsxs("div",{className:"ap-sx-stat",children:[s.jsx("span",{className:"ap-sx-statKey",children:"session"}),s.jsx(Y,{className:"ap-sx-copyStat",value:h,display:`#${R(h)}`,title:h})]}),V.map(([n,i])=>s.jsxs("div",{className:"ap-sx-stat",children:[s.jsx("span",{className:"ap-sx-statKey",children:n}),s.jsx("span",{className:"ap-sx-statVal",title:i,children:i})]},n))]}),m?s.jsxs("div",{className:"ap-sx-cols",children:[s.jsxs("div",{className:"ap-sx-block",children:[s.jsxs("div",{className:"ap-sx-head",children:[s.jsx("span",{className:"ap-sx-lbl",children:"context"}),j!=null?s.jsxs("span",{className:"ap-sx-read",children:[s.jsx("span",{className:"ap-sx-num",children:u(A)}),s.jsxs("span",{className:"ap-sx-dim",children:[" / ",u(C)]}),s.jsx("span",{className:"ap-sx-sep",children:"·"}),s.jsxs("span",{className:"ap-sx-num",children:[j,"%"]})]}):null]}),j!=null?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"ap-sx-gauge","aria-hidden":!0,children:s.jsx("span",{className:"ap-sx-gaugeFill",style:{width:`${j}%`}})}),s.jsxs("div",{className:"ap-sx-flow",children:[s.jsxs("span",{children:["↑",u(x?.inputTokens)," in"]}),s.jsxs("span",{children:["↓",u(x?.outputTokens)," out"]}),I>0?s.jsxs("span",{className:"ap-sx-faint",children:["cache ",u(I)]}):null]})]}):s.jsx("div",{className:"ap-sx-empty",children:"No usage captured."})]}),s.jsxs("div",{className:"ap-sx-block",children:[s.jsxs("div",{className:"ap-sx-head",children:[s.jsx("span",{className:"ap-sx-lbl",children:"tools"}),k.length>0?s.jsxs("span",{className:"ap-sx-meta",children:[k.reduce((n,i)=>n+i.n,0)," calls"]}):null]}),k.length>0?s.jsx("div",{className:"ap-sx-tools",children:k.map(n=>s.jsxs("span",{className:"ap-sx-tool",children:[s.jsx("span",{className:"ap-sx-toolName",children:n.name}),s.jsxs("span",{className:"ap-sx-toolN",children:["×",n.n]})]},n.name))}):s.jsx("div",{className:"ap-sx-empty",children:"No tools yet."})]})]}):s.jsx("div",{className:"ap-sx-empty ap-sx-noTrace",children:"No live trace for this session."}),f.length>0?s.jsxs("div",{className:"ap-sx-block",children:[s.jsxs("div",{className:"ap-sx-head",children:[s.jsx("span",{className:"ap-sx-lbl",children:"files touched"}),s.jsx("span",{className:"ap-sx-meta",children:f.length})]}),s.jsx("div",{className:"ap-sx-files",children:[...f].sort((n,i)=>(n.state==="read"?1:0)-(i.state==="read"?1:0)).slice(0,8).map(n=>{const i=n.state!=="read",$=n.path.replace(/\/+$/,"").split("/").pop()??n.path,N=Q(n.path.slice(0,n.path.length-$.length));return s.jsxs("div",{className:"ap-sx-fileRow","data-changed":i||void 0,children:[s.jsx("span",{className:"ap-sx-fileMark","data-state":n.state,"aria-hidden":!0,children:L[n.state]}),s.jsx("span",{className:"ap-sx-fileName",children:$}),s.jsx("span",{className:"ap-sx-fileDir",children:N}),s.jsxs("span",{className:"ap-sx-fileN",children:["×",n.touches]})]},n.path)})})]}):null,s.jsxs("div",{className:"ap-sx-actions",children:[s.jsx("button",{type:"button",className:"ap-sx-open",onClick:W,children:"Open ↗"}),s.jsx("button",{type:"button",className:"ap-sx-resume",onClick:U,children:t==="running"?"Send":"Take over"}),s.jsxs("button",{type:"button",className:"ap-sx-copyAll","data-copied":T||void 0,title:"Copy session id + metadata",onClick:()=>O(_()),children:[s.jsx(B,{copied:T}),T?"Copied":"Copy details"]})]})]})}function ss({session:e,fallbackAgentId:a}){const t=e.agentId??a,[l,o]=p.useState(!1),c=e.lastMessageAt!=null&&Date.now()-e.lastMessageAt<q?"running":"idle",v=J(e),d=e.currentBranch?.trim(),h=R(e.harnessSessionId??e.id),m=e.lastMessageAt?D(e.lastMessageAt):"—";return s.jsxs("div",{className:"ap-sx-session","data-open":l||void 0,"data-status":c,children:[s.jsxs("button",{type:"button",className:"ap-sx-row",onClick:()=>o(b=>!b),children:[s.jsx("span",{className:"ap-sx-tri","data-open":l||void 0,"aria-hidden":!0,children:"▸"}),s.jsx("span",{className:"ap-sx-dot","data-tone":c,"aria-hidden":!0}),s.jsxs("span",{className:"ap-sx-rowBody",children:[s.jsxs("span",{className:"ap-sx-line",children:[s.jsx("span",{className:"ap-sx-title",title:v,children:v}),s.jsxs("span",{className:"ap-sx-rowMeta",children:[s.jsx("span",{className:"ap-sx-badge","data-tone":c,children:c==="running"?"RUNNING":"IDLE"}),s.jsx("span",{className:"ap-sx-age",children:m})]})]}),l?null:s.jsxs("span",{className:"ap-sx-sub",children:[d?s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"ap-sx-subBranch",children:d}),s.jsx("span",{className:"ap-sx-subSep",children:"·"})]}):null,s.jsxs("span",{className:"ap-sx-subId",children:["#",h]}),e.messageCount>0?s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"ap-sx-subSep",children:"·"}),s.jsxs("span",{children:[e.messageCount," turn",e.messageCount===1?"":"s"]})]}):null]})]})]}),l?s.jsx(Z,{session:e,agentId:t,status:c}):null]})}function Vs({agentIds:e,sessions:a}){const t=e??[],l=(a??[]).filter(r=>r.agentId!=null&&t.includes(r.agentId)).slice().sort((r,c)=>(c.lastMessageAt??0)-(r.lastMessageAt??0)).slice(0,8);if(l.length===0)return null;const o=t[0]??"";return s.jsx("div",{className:"ap-sx-list",children:l.map(r=>s.jsx(ss,{session:r,fallbackAgentId:o},r.id))})}export{Vs as AgentSessions};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as h,j as s}from"./index-DMiGbrBt.js";import{A as B}from"./AgentAvatar-D90c1Rzk.js";import{H as S,h as w}from"./HarnessMark-Cbv3Ib0c.js";import{c as P}from"./colors-BtO5_zlx.js";import{f as R}from"./text-DsBWV_4k.js";import{t as C}from"./time-DltNTpLl.js";import"./SpriteAvatar-DyaGuhik.js";function K(n){return n.needsYou?"needs":n.status==="in_turn"||n.status==="in_flight"?"live":"idle"}const H=[{id:"prompt",label:"System prompt",sigil:"◆"},{id:"config",label:"Config",sigil:"▤"},{id:"conversations",label:"Conversations",sigil:"◇"},{id:"context",label:"Context",sigil:"▸"}],q={prompt:"System prompt",config:"Config",conversations:"Conversations",context:"Context"};function U(n){return n?n.replace(/^\/Users\/[^/]+/,"~").replace(/^\/home\/[^/]+/,"~"):""}const k=(n,e)=>`${n} ${e}${n===1?"":"s"}`;function rs({projects:n,initialSelection:e,onEdit:a,onInterrupt:t,onResetContext:i,onOpenConversation:m,onNewAgent:d}){const o=h.useMemo(()=>n.flatMap(l=>l.agents.map(c=>[l,c])),[n]),p=o[0]?.[1],[u,A]=h.useState(e?.agentId??p?.agent.id??null),[F,E]=h.useState(e?.facet??"prompt"),[I,y]=h.useState(()=>new Set(u?[u]:[])),[M,V]=h.useState(""),g=M.trim().toLowerCase(),D=h.useMemo(()=>g?n.map(l=>({...l,agents:l.agents.filter(c=>c.agent.name.toLowerCase().includes(g)||(c.agent.harness??"").toLowerCase().includes(g)||l.slug.toLowerCase().includes(g))})).filter(l=>l.agents.length>0):n,[n,g]),v=h.useMemo(()=>{for(const[l,c]of o)if(c.agent.id===u)return{project:l,entry:c};return null},[o,u]),T=n.reduce((l,c)=>l+c.agents.length,0),_=T*H.length,z=(l,c)=>{A(l),c&&E(c),y(r=>new Set(r).add(l))},$=l=>{y(c=>{const r=new Set(c);return r.has(l)?r.delete(l):r.add(l),r}),A(l)};return s.jsxs("div",{className:"s-acon",children:[s.jsxs("div",{className:"ac-shell",children:[s.jsxs("aside",{className:"ac-tree",children:[s.jsxs("div",{className:"ac-treeHead",children:[s.jsx("span",{className:"ac-treeIco","aria-hidden":!0,children:"⌕"}),s.jsx("input",{className:"ac-treeFind",placeholder:"Filter agents…",value:M,onChange:l=>V(l.target.value)})]}),s.jsxs("div",{className:"ac-treeScroll",children:[D.map(l=>s.jsxs("div",{className:"ac-treeGroup",children:[s.jsxs("div",{className:"ac-treeProject",children:[s.jsx("span",{className:"ac-sigil",children:"/"}),l.slug,s.jsx("span",{className:"ac-treeProjectCount",children:l.agents.length})]}),l.agents.map(c=>{const r=I.has(c.agent.id),f=K(c),G=c.agent.id===u;return s.jsxs("div",{className:"ac-agentBlock",children:[s.jsxs("button",{type:"button",className:"ac-agent","data-open":r||void 0,onClick:()=>$(c.agent.id),children:[s.jsx("span",{className:"ac-agentChev","data-open":r||void 0,"aria-hidden":!0,children:"▸"}),s.jsx("span",{className:"ac-agentAvatar","aria-hidden":!0,children:s.jsx(B,{agent:{name:c.agent.name,harness:c.agent.harness,state:c.agent.state},placement:"node",size:16})}),s.jsx("span",{className:"ac-agentName","data-idle":f==="idle"||void 0,children:c.agent.name}),f==="needs"?s.jsx("span",{className:"ac-needs",children:"needs you"}):null,s.jsxs("span",{className:"ac-agentTail",children:[f!=="idle"?s.jsx("span",{className:"ac-dot","data-tone":f,"aria-hidden":!0}):null,c.agent.harness?s.jsx("span",{className:"ac-agentMark","aria-hidden":!0,children:s.jsx(S,{harness:c.agent.harness,size:11})}):null]})]}),r?s.jsx("div",{className:"ac-facets",children:H.map(j=>{const L=j.id==="conversations"?c.sessions.length:void 0,W=G&&F===j.id;return s.jsxs("button",{type:"button",className:"ac-facet","data-active":W||void 0,onClick:()=>z(c.agent.id,j.id),children:[s.jsx("span",{className:"ac-facetSigil","aria-hidden":!0,children:j.sigil}),s.jsx("span",{className:"ac-facetLabel",children:j.label}),L!=null?s.jsx("span",{className:"ac-facetCount",children:L}):null]},j.id)})}):null]},c.agent.id)})]},l.key)),d?s.jsx("button",{type:"button",className:"ac-newAgent",onClick:d,children:"+ new agent"}):null]})]}),s.jsx("main",{className:"ac-read",children:v?s.jsx(Y,{project:v.project,entry:v.entry,facet:F,onEdit:a,onInterrupt:t,onResetContext:i,onOpenConversation:m}):s.jsx("div",{className:"ac-empty",children:"No agents."})}),s.jsx("aside",{className:"ac-rail",children:v?s.jsx(ss,{entry:v.entry,onOpenConversation:m}):null})]}),s.jsxs("div",{className:"ac-foot",children:[s.jsx("span",{className:"ac-footStat",children:k(n.length,"project")}),s.jsx("span",{className:"ac-footSep",children:"·"}),s.jsx("span",{className:"ac-footStat",children:k(T,"agent")}),s.jsx("span",{className:"ac-footSep",children:"·"}),s.jsx("span",{className:"ac-footStat",children:k(_,"facet")})]})]})}function Y({project:n,entry:e,facet:a,onEdit:t,onInterrupt:i,onResetContext:m,onOpenConversation:d}){const{agent:o,config:p}=e,u=e.status==="in_turn"||e.status==="in_flight";return s.jsxs(s.Fragment,{children:[s.jsxs("header",{className:"ac-readHead",children:[s.jsxs("div",{className:"ac-crumb",children:[s.jsx("span",{className:"ac-crumbDim",children:n.slug}),s.jsx("span",{className:"ac-crumbSep",children:"/"}),s.jsxs("span",{className:"ac-crumbAgent",children:["@",o.name]}),s.jsx("span",{className:"ac-crumbSep",children:"/"}),s.jsx("span",{className:"ac-crumbFacet",children:q[a]})]}),s.jsxs("div",{className:"ac-readActions",children:[(a==="prompt"||a==="config")&&t&&p.editable?s.jsx("button",{type:"button",className:"ac-actPrimary",onClick:()=>t(o.id),children:"Edit"}):null,u&&i?s.jsx("button",{type:"button",className:"ac-act",onClick:()=>i(o.id),children:"Interrupt"}):null,a==="context"&&m?s.jsx("button",{type:"button",className:"ac-act",onClick:()=>m(o.id),children:"Reset"}):null,d?s.jsx("button",{type:"button",className:"ac-act",onClick:()=>d(o.id),children:"Open ↗"}):null]})]}),s.jsxs("div",{className:"ac-metaStrip",children:[s.jsx(b,{k:"Type",v:Q(a)}),p.model?s.jsx(b,{k:"Model",v:p.model,mono:!0}):null,s.jsx(b,{k:"Editable",v:p.editable?"yes":"read-only"}),e.lastActivityAt?s.jsx(b,{k:"Active",v:C(e.lastActivityAt)}):null]}),s.jsxs("div",{className:"ac-readBody",children:[a==="prompt"?s.jsx(J,{entry:e}):null,a==="config"?s.jsx(X,{entry:e}):null,a==="conversations"?s.jsx(Z,{entry:e,onOpenConversation:d}):null,a==="context"?s.jsx(O,{entry:e}):null]})]})}function Q(n){switch(n){case"prompt":return"Markdown · system prompt";case"config":return"Runtime config";case"conversations":return"Conversation list";case"context":return"Live context window"}}function J({entry:n}){const{agent:e,config:a}=n,t=a.systemPrompt.trim()||a.templateHint||"default template",i=!a.systemPrompt.trim();return s.jsxs("div",{className:"ac-doc",children:[s.jsxs("div",{className:"ac-docHead",children:[s.jsx("span",{className:"ac-docKey",children:"name"}),s.jsx("span",{className:"ac-docVal",children:e.name}),e.role?s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"ac-docKey",children:"role"}),s.jsx("span",{className:"ac-docVal",children:R(e.role)??e.role})]}):null,s.jsx("span",{className:"ac-docKey",children:"harness"}),s.jsx("span",{className:"ac-docVal",children:w(e.harness)}),a.model?s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"ac-docKey",children:"model"}),s.jsx("span",{className:"ac-docVal",children:a.model})]}):null]}),s.jsx("div",{className:"ac-docLabel",children:i?"Default template":"System prompt"}),s.jsx("pre",{className:"ac-prose","data-default":i||void 0,children:t})]})}function X({entry:n}){const{agent:e,config:a}=n;return s.jsxs("div",{className:"ac-config",children:[s.jsxs(N,{k:"Harness",children:[s.jsx("span",{className:"ac-inlineMark",children:s.jsx(S,{harness:e.harness,size:12})}),w(e.harness)]}),s.jsx(N,{k:"Model",children:a.model??"—"}),s.jsx(N,{k:"Permissions",children:a.permission??"default"}),s.jsx(N,{k:"Transport",children:a.runtime.transport}),s.jsx(N,{k:"Workdir",mono:!0,title:a.runtime.cwd,children:U(a.runtime.cwd)||a.runtime.cwd}),s.jsx(N,{k:"Session",mono:!0,children:a.runtime.sessionId}),a.launchArgs.length?s.jsxs("div",{className:"ac-configBlock",children:[s.jsx("div",{className:"ac-configKey",children:"Launch"}),s.jsxs("pre",{className:"ac-cmd",children:[a.runtime.harness," ",a.launchArgs.join(" ")]})]}):null,a.capabilities.length?s.jsxs("div",{className:"ac-configBlock",children:[s.jsx("div",{className:"ac-configKey",children:"Capabilities"}),s.jsx("div",{className:"ac-chips",children:a.capabilities.map(t=>s.jsx("span",{className:"ac-chip",children:t},t))})]}):null]})}function Z({entry:n,onOpenConversation:e}){return n.sessions.length?s.jsx("div",{className:"ac-convos",children:n.sessions.map(a=>s.jsxs("button",{type:"button",className:"ac-convo",disabled:!e,onClick:()=>e?.(n.agent.id,a.id),children:[s.jsx("span",{className:"ac-convoDot","aria-hidden":!0}),s.jsxs("span",{className:"ac-convoBody",children:[s.jsx("span",{className:"ac-convoTitle",children:a.title||a.preview||"Conversation"}),a.preview&&a.title?s.jsx("span",{className:"ac-convoPreview",children:a.preview}):null,s.jsxs("span",{className:"ac-convoMeta",children:[a.currentBranch?s.jsx("span",{className:"ac-convoBranch",children:a.currentBranch}):null,s.jsxs("span",{children:[a.messageCount," msgs"]}),a.lastMessageAt?s.jsx("span",{children:C(a.lastMessageAt)}):null]})]})]},a.id))}):s.jsx("div",{className:"ac-empty",children:"No conversations yet."})}function O({entry:n}){const e=n.context;if(!e)return s.jsx("div",{className:"ac-empty",children:"No live context — agent is not in an active session."});const a=e.usedPercent!=null?Math.round(e.usedPercent):null;return s.jsxs("div",{className:"ac-ctx",children:[s.jsxs("div",{className:"ac-ctxTop",children:[s.jsx("span",{className:"ac-ctxState","data-state":e.state,children:e.state}),s.jsxs("span",{className:"ac-ctxTurns",children:[e.turnCount," turns"]})]}),a!=null?s.jsxs(s.Fragment,{children:[s.jsx("div",{className:"ac-ctxGauge",children:s.jsx("span",{className:"ac-ctxFill",style:{width:`${Math.min(100,a)}%`}})}),s.jsxs("div",{className:"ac-ctxRead",children:[s.jsxs("span",{className:"ac-ctxNum",children:[a,"%"]}),s.jsx("span",{className:"ac-ctxDim",children:"of context window used"})]})]}):null,e.contextInputTokens!=null&&e.contextWindowTokens!=null?s.jsxs("div",{className:"ac-ctxTokens",children:[e.contextInputTokens.toLocaleString()," / ",e.contextWindowTokens.toLocaleString()," ","tokens"]}):null]})}function ss({entry:n,onOpenConversation:e}){const{agent:a,config:t}=n,i=K(n),m=a.ownerName||a.ownerHandle||null;return s.jsxs("div",{className:"ac-railInner",children:[s.jsxs("div",{className:"ac-railIdent",children:[s.jsx("span",{className:"ac-railAvatar","aria-hidden":!0,children:s.jsx(B,{agent:{name:a.name,harness:a.harness,state:a.state},placement:"inspector"})}),s.jsxs("div",{className:"ac-railNames",children:[s.jsxs("div",{className:"ac-railName",children:["@",a.name]}),a.role?s.jsx("div",{className:"ac-railRole",children:R(a.role)??a.role}):null]})]}),s.jsxs("div",{className:"ac-railState","data-tone":i==="idle"?void 0:i,children:[i!=="idle"?s.jsx("span",{className:"ac-dot","data-tone":i,"aria-hidden":!0}):null,s.jsx("span",{children:n.needsYou?"Needs you":P(a.state)})]}),n.activeTask?s.jsx("div",{className:"ac-railTask",children:n.activeTask}):null,s.jsxs("div",{className:"ac-railGroup",children:[s.jsx(x,{k:"Harness",v:w(a.harness),mark:a.harness}),s.jsx(x,{k:"Model",v:t.model??"—"}),m?s.jsx(x,{k:"Owner",v:m}):null,a.branch?s.jsx(x,{k:"Branch",v:a.branch,mono:!0}):null,s.jsx(x,{k:"State",v:P(a.state)}),a.updatedAt?s.jsx(x,{k:"Updated",v:C(a.updatedAt)}):null,s.jsx(x,{k:"Sessions",v:String(n.sessions.length)})]}),t.permission?s.jsxs("div",{className:"ac-railSub",children:[s.jsx("div",{className:"ac-railSubHead",children:"Permissions"}),s.jsx("span",{className:"ac-chip",children:t.permission})]}):null,t.capabilities.length?s.jsxs("div",{className:"ac-railSub",children:[s.jsxs("div",{className:"ac-railSubHead",children:["Capabilities · ",t.capabilities.length]}),s.jsx("div",{className:"ac-chips",children:t.capabilities.map(d=>s.jsx("span",{className:"ac-chip",children:d},d))})]}):null,a.conversationId&&e?s.jsx("button",{type:"button",className:"ac-railOpen",onClick:()=>e(a.id),children:"Open conversation →"}):null]})}function b({k:n,v:e,mono:a}){return s.jsxs("span",{className:"ac-metaItem",children:[s.jsx("span",{className:"ac-metaKey",children:n}),s.jsx("span",{className:"ac-metaVal","data-mono":a||void 0,children:e})]})}function N({k:n,children:e,mono:a,title:t}){return s.jsxs("div",{className:"ac-configRow",children:[s.jsx("span",{className:"ac-configKey",children:n}),s.jsx("span",{className:"ac-configVal","data-mono":a||void 0,title:t,children:e})]})}function x({k:n,v:e,mono:a,mark:t}){return s.jsxs("div",{className:"ac-railFact",children:[s.jsx("span",{className:"ac-railFactKey",children:n}),s.jsxs("span",{className:"ac-railFactVal","data-mono":a||void 0,children:[t?s.jsx("span",{className:"ac-inlineMark",children:s.jsx(S,{harness:t,size:11})}):null,e]})]})}export{rs as AgentsConsole};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.s-acon{--s-bg: var(--hud-bg);--s-surface: var(--hud-surface);--s-ink: var(--scout-chrome-ink-strong);--s-muted: var(--scout-chrome-ink-soft);--s-dim: var(--scout-chrome-ink-faint);--s-hairline: color-mix(in srgb, var(--hud-ink) 9%, transparent);--s-hairline-strong: color-mix(in srgb, var(--hud-ink) 20%, transparent);--s-accent: var(--accent);--s-accent-soft: var(--hud-accent-soft);--s-font-sans: var(--hud-font-sans);--s-font-mono: var(--hud-font-mono);height:100%;min-height:0;display:flex;flex-direction:column;background:var(--s-bg);color:var(--s-ink);font-family:var(--s-font-sans)}.ac-dot{flex:none;width:6px;height:6px;border-radius:999px;background:var(--s-accent)}.ac-dot[data-tone=live]{box-shadow:0 0 0 3px var(--s-accent-soft)}.ac-dot[data-tone=needs]{box-shadow:0 0 0 3px var(--s-accent-soft);animation:ac-pulse 2.2s ease-in-out infinite}@keyframes ac-pulse{0%,to{opacity:1}50%{opacity:.45}}.ac-shell{flex:1;min-height:0;display:grid;grid-template-columns:268px minmax(0,1fr) 288px;border:1px solid var(--s-hairline-strong);border-radius:14px;overflow:hidden;background:color-mix(in srgb,var(--s-surface) 30%,transparent)}@media(max-width:1100px){.ac-shell{grid-template-columns:248px minmax(0,1fr)}.ac-rail{display:none}}.ac-tree{min-height:0;display:flex;flex-direction:column;border-right:1px solid var(--s-hairline)}.ac-treeHead{display:flex;align-items:center;gap:9px;padding:12px 14px;border-bottom:1px solid var(--s-hairline);flex-shrink:0}.ac-treeIco{color:var(--s-dim);font-size:var(--text-lg);flex:none}.ac-treeFind{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--s-ink);font-family:var(--s-font-mono);font-size:var(--text-sm)}.ac-treeFind::placeholder{color:var(--s-muted)}.ac-treeScroll{flex:1;min-height:0;overflow-y:auto;padding:8px 7px 14px}.ac-treeGroup+.ac-treeGroup{margin-top:8px}.ac-treeProject{display:flex;align-items:center;gap:6px;padding:6px 9px 5px;font-size:var(--text-sm);font-weight:600;letter-spacing:.02em;color:var(--s-muted);font-family:var(--s-font-mono)}.ac-treeProjectCount{margin-left:auto;font-size:var(--text-xs);color:var(--s-dim)}.ac-sigil{color:var(--s-dim);font-weight:400}.ac-agent{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:8px;width:100%;padding:7px 9px;border-radius:7px;cursor:pointer;transition:background .12s ease}.ac-agent:hover,.ac-agent[data-open]{background:var(--s-surface)}.ac-agentChev{width:10px;flex:none;font-size:var(--text-3xs);color:var(--s-dim);transition:transform .14s ease}.ac-agentChev[data-open]{transform:rotate(90deg)}.ac-agentAvatar{flex:none;display:inline-flex;width:16px;height:16px}.ac-agentName{font-size:var(--text-lg);font-weight:600;color:var(--s-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ac-agentName[data-idle]{color:var(--s-muted);font-weight:540}.ac-needs{flex:none;font-size:var(--text-2xs);font-weight:660;letter-spacing:.04em;text-transform:uppercase;color:var(--s-accent)}.ac-agentTail{margin-left:auto;display:inline-flex;align-items:center;gap:8px;flex:none}.ac-agentMark{display:inline-flex;color:var(--s-muted)}.ac-facets{position:relative;display:flex;flex-direction:column;gap:1px;margin:1px 0 6px;padding-left:18px}.ac-facets:before{content:"";position:absolute;left:14px;top:2px;bottom:6px;width:1px;background:var(--s-hairline)}.ac-facet{all:unset;box-sizing:border-box;position:relative;display:flex;align-items:center;gap:8px;width:100%;padding:5px 9px 5px 8px;border-radius:6px;cursor:pointer;transition:background .12s ease}.ac-facet:hover,.ac-facet[data-active]{background:var(--s-surface)}.ac-facet[data-active]:before{content:"";position:absolute;left:-4px;top:6px;bottom:6px;width:2px;border-radius:999px;background:var(--s-accent)}.ac-facetSigil{flex:none;width:12px;font-size:var(--text-xs);color:var(--s-dim);font-family:var(--s-font-mono)}.ac-facetLabel{font-size:var(--text-md);font-family:var(--s-font-mono);color:var(--s-muted)}.ac-facet[data-active] .ac-facetLabel{color:var(--s-ink)}.ac-facetCount{margin-left:auto;font-size:var(--text-xs);font-family:var(--s-font-mono);color:var(--s-dim)}.ac-newAgent{all:unset;box-sizing:border-box;display:block;width:100%;margin-top:4px;padding:8px 9px;border-radius:7px;font-family:var(--s-font-mono);font-size:var(--text-sm);color:var(--s-dim);cursor:pointer;transition:background .12s ease,color .12s ease}.ac-newAgent:hover{background:var(--s-surface);color:var(--s-muted)}.ac-read{min-width:0;min-height:0;display:flex;flex-direction:column}.ac-readHead{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 22px;border-bottom:1px solid var(--s-hairline);flex-shrink:0}.ac-crumb{display:flex;align-items:center;gap:7px;min-width:0;font-family:var(--s-font-mono);font-size:var(--text-sm)}.ac-crumbDim{color:var(--s-muted)}.ac-crumbSep{color:var(--s-dim)}.ac-crumbAgent{color:var(--s-muted)}.ac-crumbFacet{color:var(--s-ink)}.ac-readActions{display:flex;align-items:center;gap:8px;flex:none}.ac-act,.ac-actPrimary{font-size:var(--text-md);font-weight:560;border:none;border-radius:7px;padding:6px 12px;cursor:pointer;transition:filter .12s ease,color .12s ease,background .12s ease}.ac-act{color:var(--s-muted);background:none;border:1px solid var(--s-hairline-strong)}.ac-act:hover{color:var(--s-ink);background:var(--s-surface)}.ac-actPrimary{color:var(--s-bg);background:var(--s-accent);font-weight:600}.ac-actPrimary:hover{filter:brightness(1.07)}.ac-metaStrip{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 22px;padding:9px 22px;border-bottom:1px solid var(--s-hairline);flex-shrink:0}.ac-metaItem{display:inline-flex;align-items:baseline;gap:7px;min-width:0}.ac-metaKey{font-size:var(--text-3xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--s-muted)}.ac-metaVal{font-size:var(--text-md);color:var(--s-ink)}.ac-metaVal[data-mono]{font-family:var(--s-font-mono);font-size:var(--text-sm)}.ac-readBody{flex:1;min-height:0;overflow-y:auto;padding:24px 26px 32px}.ac-empty{padding:40px 4px;text-align:center;font-size:var(--text-md);color:var(--s-dim)}.ac-doc{max-width:680px}.ac-docHead{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;align-items:baseline;padding:13px 16px;border:1px solid var(--s-hairline);border-radius:10px;background:color-mix(in srgb,var(--s-bg) 60%,transparent);font-family:var(--s-font-mono);font-size:var(--text-md)}.ac-docKey{color:var(--s-muted)}.ac-docVal{color:var(--s-ink);min-width:0;overflow:hidden;text-overflow:ellipsis}.ac-docLabel{margin:22px 0 9px;font-size:var(--text-2xs);font-weight:680;letter-spacing:.08em;text-transform:uppercase;color:var(--s-muted)}.ac-prose{margin:0;font-family:var(--s-font-sans);font-size:var(--text-lg);line-height:1.62;color:var(--s-ink);white-space:pre-wrap;word-break:break-word}.ac-prose[data-default]{color:var(--s-dim);font-family:var(--s-font-mono);font-size:var(--text-md)}.ac-config{max-width:680px;display:flex;flex-direction:column}.ac-configRow{display:grid;grid-template-columns:120px minmax(0,1fr);gap:14px;align-items:baseline;padding:8px 0;border-top:1px solid var(--s-hairline)}.ac-config .ac-configRow:last-of-type{border-bottom:1px solid var(--s-hairline)}.ac-configKey{font-size:var(--text-2xs);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--s-muted)}.ac-configVal{font-size:var(--text-md);color:var(--s-ink);display:inline-flex;align-items:center;gap:7px;min-width:0;overflow:hidden;text-overflow:ellipsis}.ac-configVal[data-mono]{font-family:var(--s-font-mono);font-size:var(--text-sm)}.ac-inlineMark{display:inline-flex;color:var(--s-muted);flex:none}.ac-configBlock{padding-top:18px}.ac-configBlock .ac-configKey{display:block;margin-bottom:9px}.ac-cmd{margin:0;padding:12px 14px;border:1px solid var(--s-hairline);border-radius:8px;background:color-mix(in srgb,var(--s-bg) 60%,transparent);font-family:var(--s-font-mono);font-size:var(--text-sm);line-height:1.6;color:var(--s-muted);white-space:pre-wrap;word-break:break-all}.ac-chips{display:flex;flex-wrap:wrap;gap:6px}.ac-chip{font-family:var(--s-font-mono);font-size:var(--text-xs);color:var(--s-muted);padding:3px 9px;border:1px solid var(--s-hairline);border-radius:999px}.ac-convos{display:flex;flex-direction:column;max-width:720px}.ac-convo{all:unset;box-sizing:border-box;display:flex;align-items:flex-start;gap:11px;padding:11px 10px;border-top:1px solid var(--s-hairline);cursor:pointer;transition:background .12s ease}.ac-convos .ac-convo:last-child{border-bottom:1px solid var(--s-hairline)}.ac-convo:hover:not(:disabled){background:var(--s-surface)}.ac-convo:disabled{cursor:default}.ac-convoDot{flex:none;width:6px;height:6px;margin-top:5px;border-radius:999px;background:var(--s-hairline-strong)}.ac-convo:hover:not(:disabled) .ac-convoDot{background:var(--s-accent)}.ac-convoBody{min-width:0;display:flex;flex-direction:column;gap:3px}.ac-convoTitle{font-size:var(--text-lg);font-weight:560;color:var(--s-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ac-convoPreview{font-size:var(--text-md);color:var(--s-muted);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ac-convoMeta{display:flex;align-items:center;gap:12px;font-family:var(--s-font-mono);font-size:var(--text-xs);color:var(--s-dim)}.ac-convoBranch{color:var(--s-muted)}.ac-ctx{max-width:520px}.ac-ctxTop{display:flex;align-items:center;gap:12px;margin-bottom:16px}.ac-ctxState{font-family:var(--s-font-mono);font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--s-muted)}.ac-ctxState[data-state=fresh]{color:var(--s-accent)}.ac-ctxState[data-state=stale]{color:var(--s-dim)}.ac-ctxTurns{font-family:var(--s-font-mono);font-size:var(--text-sm);color:var(--s-dim)}.ac-ctxGauge{height:6px;border-radius:999px;background:var(--s-hairline);overflow:hidden}.ac-ctxFill{display:block;height:100%;border-radius:999px;background:var(--s-accent)}.ac-ctxRead{display:flex;align-items:baseline;gap:8px;margin-top:9px}.ac-ctxNum{font-size:var(--text-3xl);font-weight:600;color:var(--s-ink)}.ac-ctxDim{font-size:var(--text-md);color:var(--s-muted)}.ac-ctxTokens{margin-top:12px;font-family:var(--s-font-mono);font-size:var(--text-sm);color:var(--s-dim)}.ac-rail{min-height:0;overflow-y:auto;border-left:1px solid var(--s-hairline)}.ac-railInner{padding:18px 17px}.ac-railIdent{display:flex;align-items:center;gap:11px;padding-bottom:16px;border-bottom:1px solid var(--s-hairline)}.ac-railAvatar{flex:none;display:inline-flex}.ac-railNames{min-width:0;display:flex;flex-direction:column;gap:2px}.ac-railName{font-size:var(--text-2xl);font-weight:700;color:var(--s-ink)}.ac-railRole{font-size:var(--text-sm);color:var(--s-muted);line-height:1.4}.ac-railState{display:inline-flex;align-items:center;gap:7px;margin-top:14px;font-family:var(--s-font-mono);font-size:var(--text-sm);font-weight:540;color:var(--s-dim)}.ac-railState[data-tone=needs]{color:var(--s-accent)}.ac-railState[data-tone=live]{color:var(--s-ink)}.ac-railTask{margin-top:8px;font-size:var(--text-md);line-height:1.45;color:var(--s-muted)}.ac-railGroup{margin-top:16px;display:flex;flex-direction:column}.ac-railFact{display:flex;justify-content:space-between;gap:10px;align-items:baseline;padding:7px 0;border-top:1px solid var(--s-hairline)}.ac-railFact:last-child{border-bottom:1px solid var(--s-hairline)}.ac-railFactKey{font-family:var(--s-font-mono);font-size:var(--text-xs);color:var(--s-muted);flex:none}.ac-railFactVal{font-size:var(--text-sm);color:var(--s-ink);display:inline-flex;align-items:center;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ac-railFactVal[data-mono]{font-family:var(--s-font-mono)}.ac-railSub{margin-top:18px}.ac-railSubHead{font-family:var(--s-font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--s-muted);margin-bottom:9px}.ac-railOpen{margin-top:18px;width:100%;border:1px solid var(--s-hairline-strong);background:none;color:var(--s-accent);font-family:var(--s-font-sans);font-size:var(--text-md);font-weight:540;padding:9px;border-radius:8px;cursor:pointer;transition:background .12s ease}.ac-railOpen:hover{background:var(--s-surface)}.ac-foot{display:flex;align-items:center;gap:9px;padding:9px 4px 0;font-family:var(--s-font-mono);font-size:var(--text-xs);color:var(--s-dim)}.ac-footSep{color:var(--s-hairline-strong)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e,r as d}from"./index-DMiGbrBt.js";import{p as v,a as b}from"./api-h5zurxmi.js";import{u as Q,e as Z}from"./Provider-C7UKGHQy.js";import{l as ee,b as te}from"./router-Bq5dwf78.js";import{u as se}from"./sse-CjIkKo46.js";import{o as oe,i as D}from"./surface-activity-B1rgWB1i.js";/* empty css */import{AgentsSubnav as ne}from"./AgentsSubnav-DIEO4NPx.js";import{AgentsLibrary as ie}from"./library-D-RxGiCw.js";import{r as re,d as ae}from"./model-Co0zkMIc.js";import{AgentDetailWithRail as de,AgentProfileBar as le}from"./profile-CVRziEDA.js";/* empty css *//* empty css *//* empty css */import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./time-DltNTpLl.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./terminal-sessions-D5CIR2OL.js";import"./index-BWHgHrtv.js";import"./SecondaryNav-B3-nh5dM.js";import"./secondaryNavConfig-DqUIp0Es.js";import"./message-square-DSaGpjFU.js";import"./terminal-B9AOZQKR.js";import"./scroll-text-D6Pdnar7.js";/* empty css */import"./SpriteAvatar-DyaGuhik.js";import"./AgentSessions-DyqOf4nG.js";import"./openContent-C6XO6kr5.js";import"./clipboard-e3fSpeo7.js";import"./text-DsBWV_4k.js";import"./agents-project-model-UYiamtrU.js";import"./AgentAvatar-D90c1Rzk.js";import"./context-budget-CbB4BDcO.js";import"./session-catalog-BmoyVTJ_.js";import"./terminal-relay-CWbJ1RCW.js";import"./BackToPicker-BRvfostO.js";import"./ConversationScreen-BDRhx-RU.js";import"./ConversationComposer-Bla3DDvM.js";import"./message-markup-3J9pi3nx.js";import"./mentions-jSuTGeet.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./eye-0PvebX_a.js";import"./message-visibility-kJM8XcSG.js";import"./sessionRead-CvFz2RHv.js";import"./types-B0PlfpKc.js";import"./ConversationHeader-DE3FC0m-.js";import"./ConversationFeedRows-B_gPxcqA.js";import"./ConversationPanels-DLek4H6A.js";import"./use-reduced-motion-RRBkmVkk.js";import"./activity-CA8qS6PI.js";import"./message-circle-CG-96zts.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./tail-events-D19uAGe3.js";import"./ConversationStatus-BwVLiiO4.js";import"./conversation-icons-IIG5ha6D.js";import"./SessionObserve-yfXFafp8.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-Bla0gBdm.js";import"./lane-observe-D0rfKDnU.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-DyUeV98H.js";import"./ObserveTextFlow-rsFj_rVo.js";import"./wrench-Bkc_0lKF.js";import"./external-link-CXBytO9o.js";import"./AgentDefinitionsWorkspace-CUpUrY57.js";import"./project-overview-helpers-BQTc_Ous.js";import"./FileViewerPane-CLgUhSm4.js";/* empty css */import"./agent-essentials-BSY1o46q.js";const K=new Set(["0","false","off","no","clear","none"]),ce=new Set(["1","true","on","yes"]),ue=new Set(["localhost","127.0.0.1","::1"]);function me(t){return t.startsWith("[")&&t.endsWith("]")?t.slice(1,-1):t}function L(t){const o=t?.trim().toLowerCase();return o==="before"||o==="after"?o:null}function z(t){if(!t)return null;const o=t.trim().toLowerCase();return ce.has(o)?!0:K.has(o)?!1:null}function M(t,o,i=[]){const r=z(t);if(r!==null)return r;if(!t)return null;const l=o.toLowerCase(),a=new Set([l,l.replace(/-/g,""),...i.map(n=>n.trim().toLowerCase()).filter(Boolean)]),s=t.split(",").map(n=>n.trim().toLowerCase()).filter(Boolean);return s.some(n=>K.has(n))?!1:s.some(n=>a.has(n))?!0:null}function pe({studyId:t,aliases:o,href:i,storedEnabled:r,storedMode:l,dev:a,defaultMode:s="after"}){const n=i?new URL(i,"http://localhost"):null,p=M(n?.searchParams.get("studio"),t,o)??M(n?.searchParams.get(`studio.${t}`),t,o)??M(n?.searchParams.get("studioInjection"),t,o),c=n?ue.has(me(n.hostname)):!1;if(!a&&!c)return{enabled:!1,mode:s};const m=p??z(r)??!1,g=L(n?.searchParams.get("studioMode"))??L(n?.searchParams.get(`studioMode.${t}`))??L(l)??s;return{enabled:m,mode:g}}const he="openscout.studio.inject.",fe="openscout.studio.mode.";function O(t){return`${he}${t}`}function T(t){return`${fe}${t}`}function $(t){if(typeof window>"u")return null;try{return window.localStorage.getItem(t)}catch{return null}}function I(t,o){if(!(typeof window>"u"))try{window.localStorage.setItem(t,o)}catch{}}function ge(){return import.meta.env?.DEV===!0}function je(t){return t==="before"?"after":"before"}function xe(t){typeof window>"u"||ee({searchPatch:{studio:null,[`studio.${t}`]:null,studioInjection:null,studioMode:null,[`studioMode.${t}`]:null},replace:!0})}function ve(t,o=[]){const[i,r]=d.useState(()=>pe({studyId:t,aliases:o,href:typeof window>"u"?void 0:window.location.href,storedEnabled:$(O(t)),storedMode:$(T(t)),dev:ge()})),[l,a]=d.useState(!1);d.useEffect(()=>{if(!i.enabled){a(!1);return}const c=j=>{j.altKey&&a(!0)},m=j=>{j.altKey||a(!1)},g=()=>a(!1);return window.addEventListener("keydown",c),window.addEventListener("keyup",m),window.addEventListener("blur",g),()=>{window.removeEventListener("keydown",c),window.removeEventListener("keyup",m),window.removeEventListener("blur",g)}},[i.enabled]);const s=d.useCallback(c=>{I(O(t),c?"1":"0"),r(m=>({...m,enabled:c}))},[t]),n=d.useCallback(c=>{I(T(t),c),r(m=>({...m,mode:c}))},[t]),p=l?je(i.mode):i.mode;return d.useMemo(()=>({...i,renderedMode:p,peeking:p!==i.mode,setEnabled:s,setMode:n}),[p,s,n,i])}function Se({studyId:t,aliases:o,anchor:i,title:r,children:l,renderStudy:a}){const s=ve(t,o);return s.enabled?e.jsxs("div",{className:"s-studio-injection","data-studio-anchor":i,children:[e.jsxs("div",{className:"s-studio-injection-bar",children:[e.jsxs("div",{className:"s-studio-injection-label",children:[e.jsx("span",{className:"s-studio-injection-kicker",children:"Studio injection"}),e.jsx("span",{className:"s-studio-injection-title",children:r}),e.jsx("span",{className:"s-studio-injection-anchor",children:i})]}),e.jsxs("div",{className:"s-studio-injection-controls",role:"group","aria-label":`${r} mode`,children:[e.jsx("button",{type:"button",className:"s-studio-injection-mode","data-active":s.mode==="before","aria-pressed":s.mode==="before",onClick:()=>s.setMode("before"),children:"Before"}),e.jsx("button",{type:"button",className:"s-studio-injection-mode","data-active":s.mode==="after","aria-pressed":s.mode==="after",onClick:()=>s.setMode("after"),children:"After"})]}),e.jsx("span",{className:"s-studio-injection-state",children:s.peeking?`Option: ${s.renderedMode}`:s.renderedMode}),e.jsx("button",{type:"button",className:"s-studio-injection-close",onClick:()=>{xe(t),s.setEnabled(!1)},children:"Close"})]}),e.jsx("div",{className:"s-studio-injection-body","data-studio-mode":s.renderedMode,children:s.renderedMode==="before"?l:a()})]}):e.jsx(e.Fragment,{children:l})}const N=[{id:"openscout",title:"openscout",root:"~/dev/openscout",signal:"Studio mode injection for agent directory",sessions:9,agents:[{id:"hudson",name:"Hudson",handle:"@hudson",state:"working",role:"web design system",branch:"feat/studio-mode",task:"Refactoring the agent directory into insertion points",last:"18s"},{id:"scout",name:"Scout",handle:"@scout",state:"attention",role:"operator assistant",branch:"main",task:"Needs placement decision",last:"1m"},{id:"quill",name:"Quill",handle:"@quill",state:"ready",role:"docs",branch:"docs/agent-view",task:"Ready to write the study summary",last:"7m"}]},{id:"hudson",title:"hudson",root:"~/dev/hudson",signal:"Slot contracts and chrome primitives",sessions:4,agents:[{id:"atlas",name:"Atlas",handle:"@atlas",state:"working",role:"framework",branch:"slots/studio-anchor",task:"Mapping chrome slots to page anchors",last:"3m"},{id:"mira",name:"Mira",handle:"@mira",state:"ready",role:"qa",branch:"main",task:"Idle",last:"12m"}]},{id:"lattices",title:"lattices",root:"~/dev/lattices",signal:"macOS web view parity pass",sessions:2,agents:[{id:"north",name:"North",handle:"@north",state:"offline",role:"native",branch:"main",task:"No active session",last:"1h"}]}],we={working:"working",ready:"ready",attention:"attention",offline:"offline"};function ye({children:t}){return e.jsx(Se,{studyId:"agent-directory",aliases:["agents","agent","agent-directory-before-after"],anchor:"agents.directory",title:"Agent Directory",renderStudy:()=>e.jsx(be,{}),children:t})}function be(){const t=N.flatMap(s=>s.agents),o=t.filter(s=>s.state==="working"),i=t.filter(s=>s.state==="ready"),r=t.filter(s=>s.state==="attention"),l=N.reduce((s,n)=>s+n.sessions,0),a=o[0]??t[0];return e.jsxs("section",{className:"s-agent-studio-study","aria-label":"Agent directory injected study",children:[e.jsxs("div",{className:"s-agent-studio-banner",children:[e.jsx("span",{children:"After study"}),e.jsx("strong",{children:"Injected static view inside the live Agents route"}),e.jsx("em",{children:"Fixture data · insertion-point prototype · no backend writes"})]}),e.jsxs("header",{className:"s-agent-studio-head","data-studio-anchor":"agent.directory.header",children:[e.jsxs("div",{className:"s-agent-studio-title-block",children:[e.jsx("span",{className:"s-agent-studio-kicker",children:"Studio / agents.directory / after"}),e.jsx("h1",{className:"s-agent-studio-title",children:"Project command center"}),e.jsxs("span",{className:"s-agent-studio-subtitle",children:[t.length," agents across ",N.length," projects"]})]}),e.jsxs("div",{className:"s-agent-studio-metrics","aria-label":"Agent study summary",children:[e.jsx(A,{label:"working",value:o.length,tone:"working"}),e.jsx(A,{label:"ready",value:i.length}),e.jsx(A,{label:"attention",value:r.length,tone:"attention"}),e.jsx(A,{label:"sessions",value:l})]})]}),e.jsxs("div",{className:"s-agent-studio-layout",children:[e.jsxs("div",{className:"s-agent-studio-main",children:[e.jsxs("section",{className:"s-agent-studio-pressure","data-studio-anchor":"agent.active-strip",children:[e.jsxs("div",{className:"s-agent-studio-section-head",children:[e.jsx("span",{children:"Pressure queue"}),e.jsx("strong",{children:o.length+r.length})]}),e.jsx("div",{className:"s-agent-studio-pressure-list",children:[...o,...r].map(s=>e.jsxs("article",{className:`s-agent-studio-pressure-card s-agent-studio-pressure-card--${s.state}`,children:[e.jsx("span",{className:"s-agent-studio-dot","data-state":s.state}),e.jsxs("div",{className:"s-agent-studio-pressure-copy",children:[e.jsx("strong",{children:s.name}),e.jsx("span",{children:s.task})]}),e.jsx("time",{children:s.last})]},s.id))})]}),e.jsx("section",{className:"s-agent-studio-projects","data-studio-anchor":"agent.project-board",children:N.map(s=>e.jsxs("article",{className:"s-agent-studio-project",children:[e.jsxs("div",{className:"s-agent-studio-project-main",children:[e.jsxs("div",{children:[e.jsx("span",{className:"s-agent-studio-project-root",children:s.root}),e.jsx("h2",{children:s.title})]}),e.jsxs("span",{className:"s-agent-studio-project-sessions",children:[s.sessions," sessions"]})]}),e.jsx("p",{children:s.signal}),e.jsx("div",{className:"s-agent-studio-agent-row",children:s.agents.map(n=>e.jsxs("span",{className:`s-agent-studio-agent-pill s-agent-studio-agent-pill--${n.state}`,children:[e.jsx("span",{className:"s-agent-studio-dot","data-state":n.state}),n.name]},n.id))})]},s.id))})]}),e.jsxs("aside",{className:"s-agent-studio-detail","data-studio-anchor":"agent.detail-preview",children:[e.jsx("span",{className:"s-agent-studio-kicker",children:"Pinned agent"}),e.jsx("h2",{children:a.name}),e.jsx("span",{className:`s-agent-studio-state s-agent-studio-state--${a.state}`,children:we[a.state]}),e.jsxs("dl",{children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Handle"}),e.jsx("dd",{children:a.handle})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Role"}),e.jsx("dd",{children:a.role})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Branch"}),e.jsx("dd",{children:a.branch})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Current task"}),e.jsx("dd",{children:a.task})]})]})]})]})]})}function A({label:t,value:o,tone:i}){return e.jsxs("div",{className:`s-agent-studio-metric${i?` s-agent-studio-metric--${i}`:""}`,children:[e.jsx("strong",{children:o}),e.jsx("span",{children:t})]})}const P="/api/conversations",H="/api/fleet",F="/api/tail/discover",U="/api/topology/snapshot?force=1",S=3e4;function hs({navigate:t,selectedAgentId:o,conversationId:i,tab:r,activeRoute:l}){const{agents:a,agentsLoaded:s,route:n}=Q(),[p,c]=d.useState(()=>v(P,S)??[]),[m,g]=d.useState(()=>v(H,S)),[j,G]=d.useState(()=>v(F,S)),[q,W]=d.useState(()=>v(U,S)),[X,Y]=d.useState(()=>v(P,S)===null),R=te(n),k=d.useMemo(()=>Z(a,R),[a,R]),x=d.useCallback(async()=>{const[h,f,y,C]=await Promise.allSettled([b(P),b(H),b(F),b(U)]);h.status==="fulfilled"&&c(h.value),f.status==="fulfilled"&&g(f.value),y.status==="fulfilled"&&G(y.value),C.status==="fulfilled"&&W(C.value),Y(!1)},[]);d.useEffect(()=>{x()},[x]),d.useEffect(()=>{const h=()=>{D()&&x()},f=window.setInterval(h,1e4),y=oe(h);return()=>{window.clearInterval(f),y()}},[x]),se(()=>{D()&&x()});const u=re(k,o),_=!!(o&&u&&u.id!==o),w=n.view==="agents-v2"?n.projectSlug:void 0,E=!!(w&&!r),{conversationByAgentId:B,sessionByAgentId:J}=ae(p);if(d.useEffect(()=>{!o||!u||!_||t({view:"agents-v2",agentId:u.id,...E&&w?{projectSlug:w}:{},...i?{conversationId:i}:{},...r?{tab:r}:{}})},[i,r,E,t,w,u,o,_]),u&&!E){const h=i??B.get(u.id)??u.conversationId??null,f=r??(i?"message":"profile");return e.jsx(V,{activeRoute:l??n,navigate:t,bar:e.jsx(le,{agent:u,conversationId:h,activeTab:f,navigate:t}),children:e.jsx(de,{agent:u,allAgents:k,conversationId:h,navigate:t,activeTab:f})})}return e.jsx(V,{activeRoute:l??n,navigate:t,children:e.jsx(ye,{children:e.jsx(ie,{agents:k,fleet:m,sessionByAgentId:J,conversationByAgentId:B,sessions:p,discovery:j,topologySnapshot:q,loading:!s||X,navigate:t,selectedAgentId:u?.id??o})})})}function V({activeRoute:t,children:o,navigate:i,bar:r}){return e.jsxs("div",{className:"s-secondary-nav-shell",children:[e.jsx("div",{className:"s-secondary-nav-bar",children:r??e.jsx(ne,{activeRoute:t,navigate:i})}),e.jsx("div",{className:"s-secondary-nav-body",children:o})]})}export{hs as AgentsScreen};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as t}from"./index-DMiGbrBt.js";import{S as i}from"./SecondaryNav-B3-nh5dM.js";import{A as m}from"./secondaryNavConfig-DqUIp0Es.js";import"./createLucideIcon-OpA4Amw5.js";import"./message-square-DSaGpjFU.js";import"./file-text-BODxCjcz.js";import"./search-CWfZtOt2.js";import"./terminal-B9AOZQKR.js";import"./code-xml-B6jOCM4V.js";import"./scroll-text-D6Pdnar7.js";function N({activeRoute:r,navigate:o}){return t.jsx(i,{ariaLabel:"Agents sections",activeRoute:r,groups:m,navigate:o})}export{N as AgentsSubnav};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as d,j as e}from"./index-DMiGbrBt.js";/* empty css */import{D as ys}from"./DataTable-E8s_MmoA.js";import{H,h as F}from"./HarnessMark-Cbv3Ib0c.js";import{O as vs}from"./ObservedTopologyPanel-DyUeV98H.js";import{a as es}from"./api-h5zurxmi.js";import{o as ts,i as U}from"./surface-activity-B1rgWB1i.js";import{d as Ns,b as gs}from"./time-DltNTpLl.js";import{u as Is}from"./tail-events-D19uAGe3.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};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as k,j as s}from"./index-DMiGbrBt.js";import{e as d,f as B,g as p}from"./router-Bq5dwf78.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:r,label:i}){const e=d(),o=k.useMemo(()=>B(e.state),[e.state]),a=o??n,u=i??m(a),l=p(e.state)&&!!o;return s.jsxs("button",{type:"button",className:`s-back-pill${r?` ${r}`:""}`,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
|
+
.s-back-pill{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-2xs) var(--space-md) var(--space-2xs) var(--space-sm);border:1px solid color-mix(in srgb,var(--border) 55%,transparent);background:color-mix(in srgb,var(--ink) 3%,transparent);color:color-mix(in srgb,var(--ink) 65%,transparent);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600;letter-spacing:var(--tracking-sm);border-radius:var(--radius-sm);cursor:pointer;align-self:flex-start;transition:background .12s,color .12s,border-color .12s,transform .08s}.s-back-pill:hover{color:var(--ink);border-color:color-mix(in srgb,var(--accent) 40%,transparent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.s-back-pill:active{transform:translateY(1px)}.s-back-pill-glyph{font-family:var(--font-mono);font-size:var(--text-md);font-weight:700;color:color-mix(in srgb,var(--ink) 50%,transparent);transition:color .12s,transform .12s}.s-back-pill:hover .s-back-pill-glyph{color:var(--accent);transform:translate(-2px)}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{j as e,r as c}from"./index-DMiGbrBt.js";import{E as g}from"./EmptyState-4F9XDFQm.js";import{a as b}from"./api-h5zurxmi.js";import{u as j}from"./Provider-C7UKGHQy.js";import{E as y}from"./external-link-CXBytO9o.js";import{a as N,t as k}from"./time-DltNTpLl.js";/* empty css *//* empty css */const f=new RegExp("(?:^|(?<=[\\s(`'\"<>]))(?:~\\/|\\/(?:Users|home|opt|var|etc|tmp|private)\\/)[^\\s)`'\"<>]+\\.[A-Za-z0-9]{1,8}\\b","g");function v(s){const r=s.replace(/\r\n?/g,`
|
|
2
|
+
`).split(`
|
|
3
|
+
`),n=[];let t=0;for(;t<r.length;){const i=r[t];if(i.trim()===""){t+=1;continue}if(i.startsWith("```")){const o=[];for(t+=1;t<r.length&&!r[t].startsWith("```");)o.push(r[t]),t+=1;t<r.length&&(t+=1),n.push({kind:"code",body:o.join(`
|
|
4
|
+
`)});continue}const a=i.match(/^(#{1,3})\s+(.*\S)\s*$/);if(a){const o=a[1].length;n.push({kind:"heading",level:o,tokens:p(a[2])}),t+=1;continue}if(h(i)){const o=[];for(;t<r.length&&h(r[t]);)o.push(p(w(r[t]))),t+=1;n.push({kind:"list",items:o});continue}const l=[];for(;t<r.length&&r[t].trim()!==""&&!r[t].startsWith("```")&&!h(r[t])&&!/^#{1,3}\s+\S/.test(r[t]);)l.push(p(r[t])),t+=1;n.push({kind:"paragraph",lines:l})}return n}const x=/^\s*[-*]\s+/;function h(s){return x.test(s)}function w(s){return s.replace(x,"")}function p(s){const r=[];let n=0,t="";const i=()=>{t&&(r.push({kind:"text",body:t}),t="")};for(;n<s.length;){const a=s[n];if(a==="`"){const l=s.indexOf("`",n+1);if(l!==-1&&l>n+1){i(),r.push({kind:"code",body:s.slice(n+1,l)}),n=l+1;continue}}else if(a==="*"&&s[n+1]==="*"){const l=s.indexOf("**",n+2);if(l!==-1&&l>n+2){i(),r.push({kind:"bold",body:s.slice(n+2,l)}),n=l+2;continue}}else if(a==="*"||a==="_"){const l=C(s,n+1,a);if(l!==-1){i(),r.push({kind:"italic",body:s.slice(n+1,l)}),n=l+1;continue}}t+=a,n+=1}return i(),S(r)}function S(s){const r=[];for(const n of s){if(n.kind!=="text"){r.push(n);continue}const t=$(n.body);t.length===1&&t[0].kind==="text"?r.push(n):r.push(...t)}return r}function $(s){if(!s)return[];const r=[];let n=0;f.lastIndex=0;let t;for(;(t=f.exec(s))!==null;){const i=t.index,a=i+t[0].length;i>n&&r.push({kind:"text",body:s.slice(n,i)}),r.push({kind:"file-path",body:t[0]}),n=a}return n===0?[{kind:"text",body:s}]:(n<s.length&&r.push({kind:"text",body:s.slice(n)}),r)}function C(s,r,n){if(s[r]===void 0||/\s/.test(s[r]))return-1;for(let t=r;t<s.length;t+=1){const i=s[t];if(i===n){const a=s[t-1];if(a&&!/\s/.test(a)&&s[t+1]!==n)return t}if(i===`
|
|
5
|
+
`)return-1}return-1}function L({text:s}){const r=v(s);return r.length===0?null:e.jsx("div",{className:"flex flex-col gap-1.5 text-sm leading-relaxed text-[var(--scout-chrome-ink)]",children:r.map((n,t)=>e.jsx(A,{block:n},t))})}function A({block:s}){switch(s.kind){case"paragraph":return e.jsx("p",{className:"whitespace-pre-wrap break-words",children:s.lines.map((r,n)=>e.jsxs(c.Fragment,{children:[n>0&&`
|
|
6
|
+
`,e.jsx(u,{tokens:r})]},n))});case"list":return e.jsx("ul",{className:"ml-3 flex list-disc flex-col gap-1 marker:text-[var(--scout-chrome-ink-ghost)]",children:s.items.map((r,n)=>e.jsx("li",{className:"break-words pl-0.5",children:e.jsx(u,{tokens:r})},n))});case"code":return e.jsx("pre",{className:"overflow-x-auto rounded border border-[var(--scout-chrome-border-soft)] bg-black/25 px-2 py-1.5 text-xs leading-relaxed text-lime-100/90",children:s.body});case"heading":{const r="font-mono text-[var(--scout-chrome-ink-strong)] mt-2 first:mt-0";return s.level===1?e.jsx("h2",{className:`${r} text-lg font-bold uppercase tracking-[0.12em]`,children:e.jsx(u,{tokens:s.tokens})}):s.level===2?e.jsx("h3",{className:`${r} text-sm font-bold uppercase tracking-[0.14em] text-[var(--scout-chrome-ink)]`,children:e.jsx(u,{tokens:s.tokens})}):e.jsx("h4",{className:`${r} text-xs font-bold uppercase tracking-[0.16em] text-[var(--scout-chrome-ink-faint)]`,children:e.jsx(u,{tokens:s.tokens})})}}}function u({tokens:s}){return e.jsx(e.Fragment,{children:s.map((r,n)=>{switch(r.kind){case"text":return e.jsx(c.Fragment,{children:r.body},n);case"code":return e.jsx("code",{className:"rounded bg-black/25 px-1 text-xs text-lime-100/90",children:r.body},n);case"bold":return e.jsx("strong",{className:"font-bold text-[var(--scout-chrome-ink-strong)]",children:r.body},n);case"italic":return e.jsx("em",{className:"italic",children:r.body},n);case"file-path":return e.jsx(O,{path:r.body},n)}})})}function O({path:s}){const{openFilePreview:r}=j(),n=P(s),t=i=>{i.stopPropagation(),b("/api/file/reveal",{method:"POST",body:JSON.stringify({path:s})}).catch(()=>{})};return e.jsxs("span",{className:"inline-flex items-center gap-1 align-baseline",children:[e.jsx("button",{type:"button",onClick:()=>r(s),title:`Preview ${s} in Scout`,className:"inline-flex items-center gap-1 rounded border border-lime-300/30 bg-lime-300/[0.05] px-1.5 py-[1px] font-mono text-xs text-lime-200 transition-colors hover:bg-lime-300/[0.12] hover:text-lime-100",children:e.jsx("span",{className:"truncate",children:n})}),e.jsx("button",{type:"button",onClick:t,title:`Open ${s} in your OS`,"aria-label":"Open in OS",className:"inline-flex items-center justify-center rounded border border-[var(--scout-chrome-border-soft)] p-[2px] text-[var(--scout-chrome-ink-faint)] transition-colors hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)]",children:e.jsx(y,{size:10})})]})}function P(s){const r=s.split("/").filter(Boolean);return r.length<=3?s:`…/${r.slice(-2).join("/")}`}const I={"fleet-home":"fleet briefing",tour:"tour briefing"};function T({briefingId:s,navigate:r}){const[n,t]=c.useState(null),[i,a]=c.useState(null),l=c.useCallback(async()=>{try{const o=await b(`/api/briefings/${encodeURIComponent(s)}`);t(o),a(null)}catch(o){a(o instanceof Error?o.message:"Failed to load briefing")}},[s]);return c.useEffect(()=>{l()},[l]),i?e.jsxs("div",{className:"sys-surface-page sys-surface-page-wide",children:[e.jsx("button",{type:"button",className:"briefing-detail-back",onClick:()=>r({view:"briefings"}),children:"← back to briefings"}),e.jsx(g,{title:"Couldn't load briefing",body:i})]}):n?e.jsxs("div",{className:"sys-surface-page sys-surface-page-wide briefing-detail",children:[e.jsx("button",{type:"button",className:"briefing-detail-back",onClick:()=>r({view:"briefings"}),children:"← back to briefings"}),e.jsxs("header",{className:"briefing-detail-header",children:[e.jsx("h2",{children:n.title}),e.jsxs("div",{className:"briefing-detail-header-meta",children:[e.jsx("span",{className:`briefing-kind briefing-kind-${n.kind}`,children:I[n.kind]}),e.jsx("span",{children:N(n.preparedAt)}),e.jsxs("span",{children:["· ",k(n.preparedAt)]})]}),e.jsx("p",{className:"briefing-detail-summary",children:n.summary}),n.recommendation?e.jsx("div",{className:"briefing-detail-recommendation",children:n.recommendation}):null]}),n.markdown?e.jsx(B,{markdown:n.markdown}):null,n.brief?.presented?e.jsx(M,{presented:n.brief.presented}):null,e.jsx(E,{call:n.call}),e.jsx(R,{brief:n.brief,navigate:r}),e.jsx(F,{observations:n.observations,navigate:r}),e.jsx(D,{snapshot:n.snapshot,call:n.call})]}):e.jsx("div",{className:"sys-surface-page sys-surface-page-wide",children:e.jsx("div",{className:"briefings-placeholder",children:"Loading briefing..."})})}function B({markdown:s}){return e.jsxs("section",{className:"briefing-layer briefing-layer-markdown",children:[e.jsx(d,{eyebrow:"Layer 0",title:"Brief (markdown)"}),e.jsx("div",{className:"briefing-markdown",children:e.jsx(L,{text:s})})]})}function E({call:s}){return!s||!s.telemetry&&!s.presenter?null:e.jsxs("section",{className:"briefing-layer briefing-layer-telemetry",children:[e.jsx(d,{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:r,responseId:n,telemetry:t,note:i}){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:r}),i?e.jsx("span",{className:"briefing-telemetry-note",children:i}):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??"—"]}),n?e.jsx("span",{className:"briefing-telemetry-response",children:n}):null]})]})}function M({presented:s}){return e.jsxs("section",{className:"briefing-layer briefing-layer-presented",children:[e.jsx(d,{eyebrow:"Spoken",title:`Presented as · ${s.voiceSpec.persona}, ~${s.voiceSpec.targetWords} words`}),e.jsx("ol",{className:"briefing-presented-sentences",children:s.sentences.map((r,n)=>e.jsx("li",{className:"briefing-presented-sentence",children:r},n))}),e.jsxs("div",{className:"briefing-presented-meta",children:["model: ",s.model,s.responseId?` · response: ${s.responseId}`:""]})]})}function R({brief:s,navigate:r}){return s?e.jsxs("section",{className:"briefing-layer",children:[e.jsx(d,{eyebrow:"Layer 3",title:"Brief"}),s.steps.length>0?e.jsx("ol",{className:"briefing-steps",children:s.steps.map((n,t)=>e.jsxs("li",{className:"briefing-step",children:[e.jsxs("div",{className:"briefing-step-label",children:[t+1,". ",n.label]}),n.narration?e.jsx("p",{className:"briefing-step-narration",children:n.narration}):null]},n.id??t))}):null,s.actions.length>0?e.jsx("div",{className:"briefing-actions",children:s.actions.map((n,t)=>e.jsx("button",{type:"button",className:"s-btn",onClick:()=>{n.route&&r(n.route)},children:n.label},`${n.label}-${t}`))}):null]}):e.jsxs("section",{className:"briefing-layer",children:[e.jsx(d,{eyebrow:"Layer 3",title:"Brief & call"}),e.jsx("p",{className:"briefings-placeholder",children:"No brief body persisted."})]})}function F({observations:s,navigate:r}){return e.jsxs("section",{className:"briefing-layer",children:[e.jsx(d,{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((n,t)=>{const i=n.tone==="warn"?"briefing-observation-warn":n.tone==="err"||n.tone==="error"?"briefing-observation-err":"";return e.jsxs("div",{className:`briefing-observation ${i}`.trim(),children:[e.jsx("div",{className:"briefing-observation-text",children:n.text}),n.references.length>0?e.jsx("div",{className:"briefing-observation-refs",children:n.references.map((a,l)=>e.jsx(_,{reference:a,navigate:r},`${a.label}-${l}`))}):null]},t)})})]})}function _({reference:s,navigate:r}){const n=!!s.route,t=s.detail?`${s.label} · ${s.detail}`:s.label;return n?e.jsx("button",{type:"button",className:"briefing-ref-chip",onClick:()=>r(s.route),children:t}):e.jsx("span",{className:"briefing-ref-chip briefing-ref-chip-static",children:t})}function D({snapshot:s,call:r}){const n=c.useMemo(()=>W(s),[s]),[t,i]=c.useState(!1);return e.jsxs("section",{className:"briefing-layer",children:[e.jsx(d,{eyebrow:"Layer 1",title:"Read snapshot"}),n.length>0?e.jsx("div",{className:"briefing-snapshot-counts",children:n.map(a=>e.jsxs("span",{className:"briefing-snapshot-count",children:[e.jsx("strong",{children:a.value})," ",a.label]},a.label))}):null,r?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:r.model}),e.jsx("dt",{children:"Response ID"}),e.jsx("dd",{children:r.responseId??"—"}),e.jsx("dt",{children:"System prompt"}),e.jsx("dd",{children:e.jsx("pre",{className:"briefing-call-prompt",children:r.systemPrompt})}),e.jsx("dt",{children:"Operator request"}),e.jsx("dd",{children:e.jsx("pre",{className:"briefing-call-prompt",children:r.operatorRequest})})]})]}):null,e.jsxs("div",{className:"briefing-snapshot-section",children:[e.jsx("button",{type:"button",className:"briefing-detail-back",onClick:()=>i(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 d({eyebrow:s,title:r}){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:r})]})}function W(s){if(!s?.state)return[];const r=s.state,n=[],t=(i,a)=>{Array.isArray(a)&&n.push({label:i,value:a.length})};if(t("agents",r.agents),r.fleet&&typeof r.fleet=="object"){const i=r.fleet;t("active requests",i.activeAsks),t("attention",i.needsAttention),t("recent",i.recentCompleted)}if(r.broker&&typeof r.broker=="object"){const i=r.broker;t("broker msgs",i.recentMessages)}if(t("scout chatter",r.scoutChatter),t("tail events",r.agentLogMessages),r.operatorAttention&&typeof r.operatorAttention=="object"){const i=r.operatorAttention;t("operator items",i.items)}return n}const Q=Object.freeze(Object.defineProperty({__proto__:null,BriefingDetailScreen:T},Symbol.toStringTag,{value:"Module"}));export{T as B,L as S,Q as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i,j as e}from"./index-DMiGbrBt.js";import{E as c}from"./EmptyState-4F9XDFQm.js";import{a as h}from"./api-h5zurxmi.js";import{t as m}from"./time-DltNTpLl.js";/* empty css *//* empty css */const g={"fleet-home":"fleet",tour:"tour"};function N({navigate:d}){const[r,f]=i.useState(null),[n,t]=i.useState(null),[l,o]=i.useState(!1),a=i.useCallback(async()=>{o(!0);try{const s=await h("/api/briefings?limit=50");f(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:()=>d({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:g[s.kind]}),e.jsx("span",{className:"briefing-row-title",children:s.title}),e.jsx("span",{className:"briefing-row-time",children:m(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{N as BriefingsScreen};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as m,j as s}from"./index-DMiGbrBt.js";import{a as y,c as p,d as b,f as x}from"./broker-display-pp33bLsu.js";import{C as u}from"./chevron-down-BGk5qoEw.js";import{C as j}from"./chevron-right-XiIHsk4m.js";import"./status-tone-BM_zuRy1.js";import"./createLucideIcon-OpA4Amw5.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};
|