@openscout/scout 0.2.90 → 0.2.92
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 +12 -4
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/client/assets/{ActivityScreen-BUeb4ERK.js → ActivityScreen-DkUP7V7M.js} +1 -1
- package/dist/client/assets/{AddProjectForm-DtTfn4Zk.js → AddProjectForm-CpyytDf2.js} +1 -1
- package/dist/client/assets/{AgentAvatar-CneOa70z.js → AgentAvatar-D8ZtMluU.js} +1 -1
- package/dist/client/assets/{AgentConfigurationScreen-CkZ7EjZh.js → AgentConfigurationScreen-BlGI6fuM.js} +1 -1
- package/dist/client/assets/{AgentDefinitionsWorkspace-0Y3kqMtv.js → AgentDefinitionsWorkspace-CfaDVCVt.js} +1 -1
- package/dist/client/assets/{AgentDetailCard-Dtc02KUO.js → AgentDetailCard-BTiOmh-a.js} +1 -1
- package/dist/client/assets/{AgentFloorView-B5raPB_U.js → AgentFloorView-DjNLILLt.js} +1 -1
- package/dist/client/assets/{AgentInfoScreen-DFG4ElZD.js → AgentInfoScreen-DG5dlHb_.js} +1 -1
- package/dist/client/assets/{AgentLaneCard-BRAkw8YJ.js → AgentLaneCard-lfRNb7JD.js} +1 -1
- package/dist/client/assets/{AgentLaneChrome-T8QE5742.js → AgentLaneChrome-Dlwrbq3g.js} +1 -1
- package/dist/client/assets/{AgentLaneDetailSheet-C8RYotnv.js → AgentLaneDetailSheet-BzYzBfcW.js} +1 -1
- package/dist/client/assets/{AgentLaneSummaryResize-FyYweLo_.js → AgentLaneSummaryResize-6SOEWUnr.js} +1 -1
- package/dist/client/assets/AgentLanesEmbedScreen-Crxx1srt.js +1 -0
- package/dist/client/assets/{AgentLanesPreflight-Cil3dNwu.js → AgentLanesPreflight-C3uOiOzd.js} +1 -1
- package/dist/client/assets/{AgentLanesView-DPfO8MOo.js → AgentLanesView-ChNlmY-F.js} +1 -1
- package/dist/client/assets/{AgentLiveActions-DwScaVRF.js → AgentLiveActions-BJ5dIfL3.js} +1 -1
- package/dist/client/assets/{AgentSessions-DKoWA0Lm.js → AgentSessions-DpY0htZV.js} +1 -1
- package/dist/client/assets/{AgentsConsole-DoBIWGoq.js → AgentsConsole-CHyXrjhm.js} +1 -1
- package/dist/client/assets/{AgentsScreen-JuUiSuwY.js → AgentsScreen-BhCjX2lD.js} +1 -1
- package/dist/client/assets/AgentsSubnav-az_VDkri.js +1 -0
- package/dist/client/assets/{AtopView-ycxMrRwp.js → AtopView-BjjPM8OX.js} +1 -1
- package/dist/client/assets/{BackToPicker-D6WgIDb-.js → BackToPicker-D1LV6Cqp.js} +1 -1
- package/dist/client/assets/{BriefingDetailScreen-Zw-taW1s.js → BriefingDetailScreen-B7qJ90Np.js} +1 -1
- package/dist/client/assets/{BriefingsScreen-BerYOoWS.js → BriefingsScreen-CW6N829d.js} +1 -1
- package/dist/client/assets/{BrokerMetadataPanel-Cu93j-Ga.js → BrokerMetadataPanel-BhjECqOK.js} +1 -1
- package/dist/client/assets/{BrokerScreen-CeN90URH.js → BrokerScreen-X3z50712.js} +1 -1
- package/dist/client/assets/{ChatCollapsedStrip-DdKyMSEM.js → ChatCollapsedStrip-DNR9osDy.js} +1 -1
- package/dist/client/assets/{CodeDiffPane-BjCOBLze.js → CodeDiffPane-Bx_2VAzv.js} +1 -1
- package/dist/client/assets/{CodeProjectPicker-NSGdCaK0.js → CodeProjectPicker-C1yOJKvs.js} +1 -1
- package/dist/client/assets/{CodeScreen-CA9Sq6Dx.js → CodeScreen-CIKK1LcZ.js} +1 -1
- package/dist/client/assets/{ContextMenu-DnFcmfMR.js → ContextMenu-CHIuVKz7.js} +1 -1
- package/dist/client/assets/{ConversationComposer-CjRXFkvY.js → ConversationComposer-Bf7Ga_49.js} +1 -1
- package/dist/client/assets/{ConversationFeedRows-CgRTIpAv.js → ConversationFeedRows-Cm1Lgo43.js} +1 -1
- package/dist/client/assets/{ConversationHeader-CRmdtuL7.js → ConversationHeader-B_GXrKR0.js} +1 -1
- package/dist/client/assets/{ConversationPanels-DCkcLIHk.js → ConversationPanels-BTBbEvrP.js} +2 -2
- package/dist/client/assets/{ConversationScreen-Br0QQ3xo.js → ConversationScreen-B3l2m3JI.js} +1 -1
- package/dist/client/assets/{ConversationStatus-BJ1CMbAv.js → ConversationStatus-BqhUHD85.js} +1 -1
- package/dist/client/assets/{DataTable-Dzqiaha4.js → DataTable-CJbbgBdA.js} +1 -1
- package/dist/client/assets/{DispatchAftermath-B0WMg_z3.js → DispatchAftermath-BDA9CrOd.js} +1 -1
- package/dist/client/assets/{DocumentFocusViewer-CZVVIAD5.js → DocumentFocusViewer-B9vodVmG.js} +1 -1
- package/dist/client/assets/{EmbeddableSurfacesLab-C3a7hJWO.js → EmbeddableSurfacesLab-BdsYRDky.js} +1 -1
- package/dist/client/assets/{EmptyState-CYNJZMrZ.js → EmptyState-BRY5jTpz.js} +1 -1
- package/dist/client/assets/{FileViewerPane-Fwt8_KmD.js → FileViewerPane-9Bveqm9c.js} +1 -1
- package/dist/client/assets/{FleetSearch-Dsi_l2KW.js → FleetSearch-Bj9SCl2f.js} +1 -1
- package/dist/client/assets/{FlightObserveScreen-g_tiGmvz.js → FlightObserveScreen-BVMdsiCC.js} +1 -1
- package/dist/client/assets/{FollowScreen-Bb_rcrzi.js → FollowScreen-BifwHWOV.js} +1 -1
- package/dist/client/assets/{HarnessMark-DrE57dUq.js → HarnessMark-BPAphNjx.js} +1 -1
- package/dist/client/assets/{HarnessesScreen-CAsCJ_tG.js → HarnessesScreen-fMnbnrD4.js} +1 -1
- package/dist/client/assets/{HerdrSession-1eVu9Owj.js → HerdrSession-BujfGzrP.js} +1 -1
- package/dist/client/assets/{HomeHero-W445QrG1.js → HomeHero-BgM6S39l.js} +1 -1
- package/dist/client/assets/{KnowledgeSearchInspector-CbPVg3fr.js → KnowledgeSearchInspector-B4ZY24xE.js} +1 -1
- package/dist/client/assets/{KnowledgeSearchScreen-C1lN1xJk.js → KnowledgeSearchScreen-Ch_WENUC.js} +1 -1
- package/dist/client/assets/{LaneToolHoverCard-BkBcDYm-.js → LaneToolHoverCard-B7KdvQvf.js} +1 -1
- package/dist/client/assets/{LaneTraceDetailSheet-CzTd44rf.js → LaneTraceDetailSheet-H3AnN-vN.js} +1 -1
- package/dist/client/assets/{LaneTraceEventFocus-BmMmPTyJ.js → LaneTraceEventFocus-mkMw2wJU.js} +1 -1
- package/dist/client/assets/{MeshCanvas-DwkjsiJ5.js → MeshCanvas-CpKcWxKy.js} +1 -1
- package/dist/client/assets/{MeshCanvasMinimap-vmCpU1sD.js → MeshCanvasMinimap-C9IoGHbe.js} +1 -1
- package/dist/client/assets/{MeshScreen-CkMepUpT.js → MeshScreen-48QkJSDI.js} +1 -1
- package/dist/client/assets/{MeshTopologyView-BD2xLE2C.js → MeshTopologyView-DFzr0IZM.js} +2 -2
- package/dist/client/assets/{MessageComposerSuggestions-qbalTne_.js → MessageComposerSuggestions-FdVHnT_q.js} +1 -1
- package/dist/client/assets/{MessagesScreen-C8UynyLC.js → MessagesScreen-BMOOfbWX.js} +1 -1
- package/dist/client/assets/{MissionContextRail-D5MEP2f4.js → MissionContextRail-Y8QxUZGE.js} +1 -1
- package/dist/client/assets/{MissionControlView-K_I7eftL.js → MissionControlView-BpsHKu1F.js} +1 -1
- package/dist/client/assets/{MissionFocusOverlay-CWKLdUKG.js → MissionFocusOverlay-BPnAEA3F.js} +1 -1
- package/dist/client/assets/{MissionLeftAgentRow-ByGrNAcs.js → MissionLeftAgentRow-iOZ6ds9L.js} +1 -1
- package/dist/client/assets/{MissionLogPane-ZwHJ137T.js → MissionLogPane-B0csI89E.js} +1 -1
- package/dist/client/assets/{NewAgentModal-Do9aVvan.js → NewAgentModal-DBHJR9Qm.js} +1 -1
- package/dist/client/assets/{NewChatComposer-DKlNX1UA.js → NewChatComposer-Hd7pI5Ac.js} +1 -1
- package/dist/client/assets/{NewChatOrigin-DXPvX-hh.js → NewChatOrigin-DmuJ32wa.js} +1 -1
- package/dist/client/assets/{ObserveEmbedScreen-Dghsq2on.js → ObserveEmbedScreen-DyArn7Id.js} +1 -1
- package/dist/client/assets/{ObserveTextFlow-DWNlmTVm.js → ObserveTextFlow-CkMrtT8s.js} +2 -2
- package/dist/client/assets/{ObservedTopologyPanel-BlmGoxCE.js → ObservedTopologyPanel-CaSZZP05.js} +1 -1
- package/dist/client/assets/{OpenScoutAppShell-DDqQi-oe.js → OpenScoutAppShell-BtlKkiuF.js} +1 -1
- package/dist/client/assets/{OpsAgentsView-Bn_fGBdo.js → OpsAgentsView-CnqrwbC2.js} +1 -1
- package/dist/client/assets/OpsScreen-DOlmlVkP.js +1 -0
- package/dist/client/assets/OpsSubnav-Dj3ShAKv.js +1 -0
- package/dist/client/assets/{PlanView-B6gKo543.js → PlanView-BLGdWDx6.js} +1 -1
- package/dist/client/assets/ProjectAgentProfile-Dv1sVnQl.js +1 -0
- package/dist/client/assets/{ProjectAgentProfileBar-C5QWwZCn.js → ProjectAgentProfileBar-BLVg5EeA.js} +1 -1
- package/dist/client/assets/{ProjectAgentProfileHero-DC7Dd8VL.js → ProjectAgentProfileHero-0-GDhsPT.js} +1 -1
- package/dist/client/assets/{ProjectsInbox-DCLrDmj1.js → ProjectsInbox-B3DpAI5b.js} +1 -1
- package/dist/client/assets/{ProjectsRail-C4hiXYSb.js → ProjectsRail-BDl7U9Jq.js} +1 -1
- package/dist/client/assets/ProjectsScreen-Dl2FcGrR.js +1 -0
- package/dist/client/assets/{ProjectsThreadAside-DYmL2dCY.js → ProjectsThreadAside-BcGC5mHE.js} +1 -1
- package/dist/client/assets/{Provider-p-xuaAoE.js → Provider-cJCdHAxu.js} +1 -1
- package/dist/client/assets/{RailRow-bRkkXIpR.js → RailRow-CLcVmywd.js} +1 -1
- package/dist/client/assets/{RawSessionsTable-B7WKmXrk.js → RawSessionsTable-DBto4Ts-.js} +1 -1
- package/dist/client/assets/{RealtimeVoiceScreen-BzP3BQq9.js → RealtimeVoiceScreen-DXEU5v3g.js} +1 -1
- package/dist/client/assets/{RepoDiffEmbedScreen-xjzjcJ_c.js → RepoDiffEmbedScreen-BCDXFE3D.js} +1 -1
- package/dist/client/assets/{RepoDiffPageScreen-DRzIY-dk.js → RepoDiffPageScreen-m62FiWXC.js} +1 -1
- package/dist/client/assets/{RepoDiffViewer-CNDp01KM.js → RepoDiffViewer-PaNeZMhJ.js} +1 -1
- package/dist/client/assets/RepoDiffViewerLazy-CWE5GxMP.js +2 -0
- package/dist/client/assets/{ReposScreen-CpaLC_NU.js → ReposScreen-Cksv1cAD.js} +1 -1
- package/dist/client/assets/{ScoutDeckSurface-DkpZ-0DH.js → ScoutDeckSurface-BCjPl7C4.js} +1 -1
- package/dist/client/assets/{ScoutSurface-BENBUt5-.js → ScoutSurface-CkgT7A-c.js} +1 -1
- package/dist/client/assets/{ScoutbotBroadcastChip-CGZyxS5H.js → ScoutbotBroadcastChip-DkiRCHuK.js} +1 -1
- package/dist/client/assets/{ScoutbotFxLab-Bk2ZsfPp.js → ScoutbotFxLab-D-kV5j4T.js} +1 -1
- package/dist/client/assets/{ScoutbotRealtimeVoiceCall-n63LdBZs.js → ScoutbotRealtimeVoiceCall-1ixiEn1L.js} +1 -1
- package/dist/client/assets/{SecondaryNav-B4IsujYh.js → SecondaryNav-_wyKjwNf.js} +1 -1
- package/dist/client/assets/{SessionEmbedScreen-CPfH-jqN.js → SessionEmbedScreen-CJZmIBV7.js} +1 -1
- package/dist/client/assets/{SessionObserve-B-SkP3tu.js → SessionObserve-yYA8Gy5s.js} +1 -1
- package/dist/client/assets/{SessionObserveEvidence-CF5jnH3-.js → SessionObserveEvidence-cHdjYOJe.js} +1 -1
- package/dist/client/assets/{SessionRefScreen-C-4jjmVG.js → SessionRefScreen-OkTY7Szg.js} +1 -1
- package/dist/client/assets/SessionsScreen-B-GFjxIA.js +1 -0
- package/dist/client/assets/{SettingsDrawer-DATxwZrn.js → SettingsDrawer-Co11RFX0.js} +1 -1
- package/dist/client/assets/{SettingsScreen-Bu53X7J_.js → SettingsScreen-Cn09nq5_.js} +1 -1
- package/dist/client/assets/{ShikiPane-DH8yYDks.js → ShikiPane-dBS9hD-z.js} +1 -1
- package/dist/client/assets/{SlidePanel-RFXJpfUa.js → SlidePanel-CH-3-8_2.js} +1 -1
- package/dist/client/assets/{SpriteAvatar-CEYdCzem.js → SpriteAvatar-DS6Tmyua.js} +1 -1
- package/dist/client/assets/{StatusPill-9uy70ttd.js → StatusPill-C8m9ZymF.js} +1 -1
- package/dist/client/assets/{TailView-6bIrgdxN.js → TailView-B0BSopPs.js} +1 -1
- package/dist/client/assets/{Terminal-BI6km7H4.js → Terminal-U8gjIdm3.js} +1 -1
- package/dist/client/assets/{TerminalEmbedScreen-D4JOWwtm.js → TerminalEmbedScreen-CTmdE7us.js} +1 -1
- package/dist/client/assets/{TextDocumentSurface-BcP9vvji.js → TextDocumentSurface-BWJCGBZf.js} +1 -1
- package/dist/client/assets/{TmuxPeek-IaWqCgyJ.js → TmuxPeek-B4QdHbGm.js} +1 -1
- package/dist/client/assets/{VoicePermissionsPanel-C80iZxgy.js → VoicePermissionsPanel-Dd4ITJy_.js} +1 -1
- package/dist/client/assets/{WorkDetailScreen-CweZ6fEd.js → WorkDetailScreen-mJs0mb99.js} +1 -1
- package/dist/client/assets/{WorkFilesViewer-Dy_-06iI.js → WorkFilesViewer-ODzLXKxj.js} +1 -1
- package/dist/client/assets/{activity-DS0u0Itf.js → activity-CC8JzJNH.js} +1 -1
- package/dist/client/assets/{addon-fit-CN888B3D.js → addon-fit-CaZ-uLrg.js} +1 -1
- package/dist/client/assets/{addon-webgl-CoAnanQS.js → addon-webgl-B8utL3bM.js} +1 -1
- package/dist/client/assets/{agent-essentials-CuK4G_zS.js → agent-essentials-B3wcxg_v.js} +1 -1
- package/dist/client/assets/{arc.es-BET9ev6q.js → arc.es-uFv9UrHn.js} +1 -1
- package/dist/client/assets/{arrow-down-DxxPnPwh.js → arrow-down-w1HPzDSE.js} +1 -1
- package/dist/client/assets/{arrow-left-CXDkJuCg.js → arrow-left-B-3GJ7ct.js} +1 -1
- package/dist/client/assets/{arrow-up-right-Bj8RjSqW.js → arrow-up-right-G6bJXxhK.js} +1 -1
- package/dist/client/assets/{bot-BSGSicKC.js → bot-DzCOGKi6.js} +1 -1
- package/dist/client/assets/{check-BfA0T8UD.js → check-BX8nRgop.js} +1 -1
- package/dist/client/assets/{chevron-down-BVg09D6U.js → chevron-down-B3VVRJcV.js} +1 -1
- package/dist/client/assets/{chevron-right-CaEwYkxE.js → chevron-right-BYMV1511.js} +1 -1
- package/dist/client/assets/{chunk-HRAB3GC3-HhKwnZCi.js → chunk-HRAB3GC3-dRd2eQMJ.js} +1 -1
- package/dist/client/assets/{chunk-JTPDIGGW-DX2eTIQ_.js → chunk-JTPDIGGW-BjX67kHU.js} +3 -3
- package/dist/client/assets/{chunk-T65CQEWV-D-bOfuCH.js → chunk-T65CQEWV-kP6nJjkU.js} +1 -1
- package/dist/client/assets/{chunk-YOZR3KYS-oS9dlQCI.js → chunk-YOZR3KYS-C13bZPVd.js} +1 -1
- package/dist/client/assets/{clock-C3TUL7D7.js → clock-B9ukVaVn.js} +1 -1
- package/dist/client/assets/{code-xml-Dbvjk9Kw.js → code-xml-BFc3TMSm.js} +1 -1
- package/dist/client/assets/{content-CiOMtgQc.js → content-B8gahuBy.js} +1 -1
- package/dist/client/assets/content-BIqX06OQ.js +1 -0
- package/dist/client/assets/content-BKDZ6Fxe.js +1 -0
- package/dist/client/assets/content-C15Ya-iu.js +1 -0
- package/dist/client/assets/content-CDE9tJDF.js +1 -0
- package/dist/client/assets/content-CSAfI-PX.js +1 -0
- package/dist/client/assets/content-CTF9D60D.js +1 -0
- package/dist/client/assets/{content-CJuH5cDP.js → content-CbAGkYQO.js} +1 -1
- package/dist/client/assets/content-CtqLJOVp.js +1 -0
- package/dist/client/assets/content-Dvs1KRfo.js +1 -0
- package/dist/client/assets/content-DyJdVZjI.js +1 -0
- package/dist/client/assets/{content-C2TZOKSE.js → content-Ji7ATaf7.js} +1 -1
- package/dist/client/assets/content-eqZXKWcP.js +1 -0
- package/dist/client/assets/content-iyyQKwvA.js +1 -0
- package/dist/client/assets/content-pDE7Fpb9.js +1 -0
- package/dist/client/assets/content-pPSd2dua.js +1 -0
- package/dist/client/assets/{conversation-icons-DmC_Ak3z.js → conversation-icons-gpsv650H.js} +1 -1
- package/dist/client/assets/conversation-motion-features-DXtKlmuM.js +1 -0
- package/dist/client/assets/{copy-C79v_7D-.js → copy-BFmOcWof.js} +1 -1
- package/dist/client/assets/{createLucideIcon-DCq_3fQn.js → createLucideIcon-CFBn0Sdk.js} +1 -1
- package/dist/client/assets/{discover-IEnbrH8_.js → discover-DKf0aTr_.js} +2 -2
- package/dist/client/assets/embed-entry-RlQUTtc4.js +2 -0
- package/dist/client/assets/{external-link-Dd8xaveL.js → external-link-B1TI5yIt.js} +1 -1
- package/dist/client/assets/{eye-DkU59kfl.js → eye-1J4yOUoG.js} +1 -1
- package/dist/client/assets/{file-text-BITQqGtF.js → file-text-DcYSrI4v.js} +1 -1
- package/dist/client/assets/{gestures-B5rLNRpi.js → gestures-CcEOV6Sr.js} +1 -1
- package/dist/client/assets/{home-moving-signal-Bs635mVw.js → home-moving-signal-Bh2FugbH.js} +1 -1
- package/dist/client/assets/{home-now-card-VxlLjg1A.js → home-now-card-ByRH5fFx.js} +1 -1
- package/dist/client/assets/{home-now-card-nano-C06GMiwD.js → home-now-card-nano-y1EhBvVL.js} +1 -1
- package/dist/client/assets/{hooks-BWiLxTw1.js → hooks-DUZwL3Aq.js} +1 -1
- package/dist/client/assets/index-BBznYVWk.css +1 -0
- package/dist/client/assets/{index-BTj2MguM.js → index-BTuq-8Iv.js} +1 -1
- package/dist/client/assets/index-CmwGCxUk.js +1 -0
- package/dist/client/assets/{index-BZovGpDk.js → index-DmFAhGPj.js} +2 -2
- package/dist/client/assets/{index-vbaJ8sin.js → index-Dtaswdsh.js} +1 -1
- package/dist/client/assets/{inspector-panel-C96HcyK5.js → inspector-panel-DzgS5_Mv.js} +1 -1
- package/dist/client/assets/{keyboard-nav-CHo_xmjw.js → keyboard-nav-h1IdakpD.js} +1 -1
- package/dist/client/assets/{lane-roster-store-B6ybJlHJ.js → lane-roster-store-71vFgAem.js} +1 -1
- package/dist/client/assets/{left-DMJkmJOF.js → left-8NITBvFX.js} +1 -1
- package/dist/client/assets/{left-COMAiMfB.js → left-B2HEqrTM.js} +1 -1
- package/dist/client/assets/{left-C6Zj3cR4.js → left-CTYUvXbe.js} +1 -1
- package/dist/client/assets/{left-BuJ0wJW1.js → left-CwDRT50z.js} +1 -1
- package/dist/client/assets/{left-l92tw5Kc.js → left-CxlDLJlw.js} +1 -1
- package/dist/client/assets/{left-Ce4WKYPK.js → left-XFXxNd4g.js} +1 -1
- package/dist/client/assets/{left-agents-BuSyVNGE.js → left-agents-Ck4Xn-R8.js} +1 -1
- package/dist/client/assets/{left-default-DRHywOKX.js → left-default-BeOyS0bR.js} +1 -1
- package/dist/client/assets/{left-lanes-4-aUyyrV.js → left-lanes-DZp3jJMo.js} +1 -1
- package/dist/client/assets/{left-mission-e849d_Td.js → left-mission-CuKFQ5xL.js} +1 -1
- package/dist/client/assets/left-p1hkO6P0.js +1 -0
- package/dist/client/assets/{left-plan-MchYwAB_.js → left-plan-3rrFENhp.js} +1 -1
- package/dist/client/assets/{library-DygjpA6u.js → library-E--gKzEZ.js} +1 -1
- package/dist/client/assets/{loader-circle-B-l2Wj3-.js → loader-circle-d6PKL_KD.js} +1 -1
- package/dist/client/assets/{local-agents-Wof5knTJ.js → local-agents-B5pq17tZ.js} +1 -1
- package/dist/client/assets/{mentions-BjXfeF7t.js → mentions-agCGDgyA.js} +1 -1
- package/dist/client/assets/{mesh-ops-C1gq8zKf.js → mesh-ops-5pZCYptW.js} +1 -1
- package/dist/client/assets/{mesh-view-store-B56D3f77.js → mesh-view-store-KJzABIkN.js} +1 -1
- package/dist/client/assets/{message-circle-BwVx5X0q.js → message-circle-CJO-pi7b.js} +1 -1
- package/dist/client/assets/{message-markup-DlVX-iuc.js → message-markup-CyRDLdOn.js} +1 -1
- package/dist/client/assets/{message-square-BnkG6tae.js → message-square-D1hMsMj_.js} +1 -1
- package/dist/client/assets/{mission-control-store-CMgIVjLJ.js → mission-control-store-Ce6dOvnZ.js} +1 -1
- package/dist/client/assets/{observe-DVHAcIrv.js → observe-BSWVM8YA.js} +1 -1
- package/dist/client/assets/{page-status-Bg2hd27j.js → page-status-D2FQLJOX.js} +1 -1
- package/dist/client/assets/{paperclip-DblaLD_N.js → paperclip-iZmDMOS5.js} +1 -1
- package/dist/client/assets/{plus-BAI0t5g9.js → plus-gZ0T0eBI.js} +1 -1
- package/dist/client/assets/{profile-3Q4sUtvJ.js → profile-Dxj3VVOM.js} +1 -1
- package/dist/client/assets/{projects-inbox-Da2hYEn6.js → projects-inbox-Dzt_GQDv.js} +1 -1
- package/dist/client/assets/{radio-BGtkyCG9.js → radio-RMLfV4EO.js} +1 -1
- package/dist/client/assets/{refresh-cw-DtF8xPqX.js → refresh-cw-C4x1x6b_.js} +1 -1
- package/dist/client/assets/resolve-panes-C9gF0w4e.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-DxbY5RCH.js +1 -0
- package/dist/client/assets/{right-Dd2DscRz.js → right-5L7Tn0zG.js} +1 -1
- package/dist/client/assets/{right-BU_W1kSH.js → right-CYtkMmRu.js} +1 -1
- package/dist/client/assets/{right-CUP-NIDG.js → right-CreoQzPP.js} +1 -1
- package/dist/client/assets/{right-c4PAdFYZ.js → right-D-k9Z1Fe.js} +1 -1
- package/dist/client/assets/{right-ByptvkVX.js → right-D9xFfy2b.js} +1 -1
- package/dist/client/assets/{right-BlR7h0US.js → right-DI7zHADe.js} +1 -1
- package/dist/client/assets/{right-BwgwTGGd.js → right-DUbJ3WVc.js} +1 -1
- package/dist/client/assets/{right-DmVHd8Xj.js → right-DiybhsiK.js} +1 -1
- package/dist/client/assets/{right-Ch_jrNe2.js → right-Jh_1Q88s.js} +1 -1
- package/dist/client/assets/{right-B8qg3JdB.js → right-udr1qTJG.js} +1 -1
- package/dist/client/assets/{rocket-BWh18pt_.js → rocket-CMM-IdLy.js} +1 -1
- package/dist/client/assets/{router-63XV_E7f.js → router-Cn_s9IGH.js} +1 -1
- package/dist/client/assets/{runtime-picker-BXKJbLot.js → runtime-picker--IW3cRry.js} +1 -1
- package/dist/client/assets/{scope-views-Dm2_-NPi.js → scope-views-BIfMTXU4.js} +1 -1
- package/dist/client/assets/{scout-voice-D8Q5sZOL.js → scout-voice-CwbOz6EN.js} +1 -1
- package/dist/client/assets/{scroll-text-DZb3mmYo.js → scroll-text-DPPYrqB9.js} +1 -1
- package/dist/client/assets/{search-1QMVOxF3.js → search-DAyagUtF.js} +1 -1
- package/dist/client/assets/{secondaryNavConfig-c0cz3MkJ.js → secondaryNavConfig-Dw3gS1jR.js} +1 -1
- package/dist/client/assets/{selection-bridge-O9C4kGfF.js → selection-bridge-BXw09aRF.js} +1 -1
- package/dist/client/assets/{send-horizontal-DbyEkGql.js → send-horizontal-IcG46D2M.js} +1 -1
- package/dist/client/assets/{server-Bncn9S7r.js → server-BySujhDV.js} +1 -1
- package/dist/client/assets/{session-catalog-DC6BlBBC.js → session-catalog-ClS9xf6i.js} +1 -1
- package/dist/client/assets/{session-table-BUPq9Viy.js → session-table-BdpHs1GN.js} +1 -1
- package/dist/client/assets/{sliders-horizontal-CMe8Bay1.js → sliders-horizontal-R5pWUUcH.js} +1 -1
- package/dist/client/assets/{sparkles-_7cTZsIH.js → sparkles-DJOBD_8l.js} +1 -1
- package/dist/client/assets/{sse-Bb0EOcU9.js → sse-CxXt4tqI.js} +1 -1
- package/dist/client/assets/{tail-events-C12pfUax.js → tail-events-BdvqZHLr.js} +1 -1
- package/dist/client/assets/{terminal-xGf_F3y7.js → terminal-DJPUp_Qn.js} +1 -1
- package/dist/client/assets/{terminal-relay-BgfVJXIL.js → terminal-relay-TffuSPGs.js} +1 -1
- package/dist/client/assets/{terminal-takeover--05EYhJm.js → terminal-takeover-BOFPRPjR.js} +1 -1
- package/dist/client/assets/{use-conversation-list-DWX02INv.js → use-conversation-list-C-dPcjQe.js} +1 -1
- package/dist/client/assets/{use-fleet-active-asks-Cnwa4hTK.js → use-fleet-active-asks-BHzeBZSW.js} +1 -1
- package/dist/client/assets/{use-mesh-ops-items-BRFm37oY.js → use-mesh-ops-items-KmaauBr_.js} +1 -1
- package/dist/client/assets/{use-reduced-motion-C8cWvIZ3.js → use-reduced-motion-CYqhYqHO.js} +1 -1
- package/dist/client/assets/{use-scout-dev-flags-FkMreOOb.js → use-scout-dev-flags-BJbw87PK.js} +1 -1
- package/dist/client/assets/{useAgentHoverCard-DvPZSJK3.js → useAgentHoverCard-C6o0tlat.js} +1 -1
- package/dist/client/assets/useContentSecondaryNav-DjHBrgnS.js +1 -0
- package/dist/client/assets/{usePierreRuntime-C8WJ0X3F.js → usePierreRuntime-Cm7-qdm0.js} +1 -1
- package/dist/client/assets/{wrench-_tHBGTop.js → wrench-CvRjjByE.js} +1 -1
- package/dist/client/assets/{x-CrGUKNRv.js → x-C8ayPBtj.js} +1 -1
- package/dist/client/assets/{xterm-Ks-VlLTq.js → xterm-B0ci4Q9a.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/main.mjs +348 -254
- package/dist/scout-web-server.mjs +2 -96660
- package/package.json +3 -3
- package/dist/client/assets/AgentLanesEmbedScreen-Br7cmZVO.js +0 -1
- package/dist/client/assets/AgentsSubnav-BV0WAgzf.js +0 -1
- package/dist/client/assets/OpsScreen-DHnT-Q9R.js +0 -1
- package/dist/client/assets/OpsSubnav-CJRD7MjM.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-Be1VOkI4.js +0 -1
- package/dist/client/assets/ProjectsScreen-jruZRjgD.js +0 -1
- package/dist/client/assets/RepoDiffViewerLazy-b6vjYxez.js +0 -2
- package/dist/client/assets/SessionsScreen-HAjFvmIq.js +0 -1
- package/dist/client/assets/content-BQuEedeL.js +0 -1
- package/dist/client/assets/content-BUae-L_N.js +0 -1
- package/dist/client/assets/content-BfG98J1k.js +0 -1
- package/dist/client/assets/content-BkVTfkAC.js +0 -1
- package/dist/client/assets/content-BsNMos_d.js +0 -1
- package/dist/client/assets/content-CCn98eSk.js +0 -1
- package/dist/client/assets/content-CYnPp9yo.js +0 -1
- package/dist/client/assets/content-CcrUhm4P.js +0 -1
- package/dist/client/assets/content-CxuVONeQ.js +0 -1
- package/dist/client/assets/content-Dmq9n1_L.js +0 -1
- package/dist/client/assets/content-DskHP2NI.js +0 -1
- package/dist/client/assets/content-DvvzL2HK.js +0 -1
- package/dist/client/assets/content-snCAUbwv.js +0 -1
- package/dist/client/assets/conversation-motion-features-DPiGTO21.js +0 -1
- package/dist/client/assets/embed-entry-XUPb-AzL.js +0 -2
- package/dist/client/assets/index-9as_JTUs.css +0 -1
- package/dist/client/assets/index-DiiEQwdc.js +0 -1
- package/dist/client/assets/left-DrCbY6ja.js +0 -1
- package/dist/client/assets/resolve-panes-D4tlKNCT.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-B27lj3Ci.js +0 -1
- package/dist/client/assets/useContentSecondaryNav-CNlrhvvx.js +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as p,j as s}from"./index-BZovGpDk.js";import{A as Fe}from"./AgentAvatar-CneOa70z.js";import{H as be}from"./HarnessMark-DrE57dUq.js";import{a as $e}from"./api-h5zurxmi.js";import{g as ie,a as De,f as ae,b as Oe}from"./api-BkjHJfgJ.js";import{r as ve,i as Be}from"./ui-LM8pS8qE.js";import{t as q,d as He,n as se}from"./time-Dhsh_2EG.js";import{p as ze,l as qe,s as _e,f as Ve}from"./terminal-sessions-AmSgHklm.js";import{u as Ge,A as Ke}from"./Provider-p-xuaAoE.js";import{o as Ue}from"./openContent-C6XO6kr5.js";import{p as Z}from"./model-Co0zkMIc.js";import{SessionRefScreen as Je}from"./SessionRefScreen-C-4jjmVG.js";import{F as we,A as Xe}from"./AddProjectForm-DtTfn4Zk.js";import{r as J,s as _}from"./project-overview-helpers-BQTc_Ous.js";import{u as Ze,e as Y,d as le,g as Qe,s as ce,a as de,f as Ye,h as Ne,b as es,j as ss,r as ts}from"./projects-inbox-Da2hYEn6.js";import{f as ns}from"./cache-Dr0why2k.js";import{A as ue}from"./arrow-up-right-Bj8RjSqW.js";import{S as ke}from"./search-1QMVOxF3.js";import{C as is}from"./chevron-right-CaEwYkxE.js";import{E as as}from"./external-link-Dd8xaveL.js";import{F as os}from"./DocumentFocusViewer-CZVVIAD5.js";import"./SpriteAvatar-CEYdCzem.js";import"./agent-identity-BxCsXnDp.js";import"./colors-BtO5_zlx.js";import"./router-63XV_E7f.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./sse-Bb0EOcU9.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-DnFcmfMR.js";import"./TextDocumentSurface-BcP9vvji.js";import"./file-text-BITQqGtF.js";import"./createLucideIcon-DCq_3fQn.js";import"./code-xml-Dbvjk9Kw.js";import"./arrow-left-CXDkJuCg.js";import"./scout-voice-D8Q5sZOL.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-CHo_xmjw.js";import"./MessageComposerSuggestions-qbalTne_.js";import"./NewChatComposer-DKlNX1UA.js";import"./runtime-picker-BXKJbLot.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-B-l2Wj3-.js";import"./index-DiiEQwdc.js";import"./conversation-model-CHwHZNw-.js";import"./NewChatOrigin-DXPvX-hh.js";import"./x-CrGUKNRv.js";import"./chevron-down-BVg09D6U.js";import"./chunk-HRAB3GC3-HhKwnZCi.js";import"./text-DsBWV_4k.js";import"./tail-events-C12pfUax.js";import"./BackToPicker-D6WgIDb-.js";import"./ConversationScreen-Br0QQ3xo.js";import"./ConversationComposer-CjRXFkvY.js";import"./message-markup-DlVX-iuc.js";import"./mentions-BjXfeF7t.js";import"./AgentDetailCard-Dtc02KUO.js";import"./AgentLiveActions-DwScaVRF.js";import"./terminal-takeover--05EYhJm.js";import"./eye-DkU59kfl.js";import"./terminal-xGf_F3y7.js";import"./message-visibility-kJM8XcSG.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-CRmdtuL7.js";import"./ConversationFeedRows-CgRTIpAv.js";/* empty css */import"./ConversationPanels-DCkcLIHk.js";import"./use-reduced-motion-C8cWvIZ3.js";import"./activity-DS0u0Itf.js";import"./message-circle-BwVx5X0q.js";import"./tail-display-BRcJltQa.js";import"./lane-edit-display-C_Aujldz.js";import"./ConversationStatus-BJ1CMbAv.js";import"./SessionObserve-B-SkP3tu.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-BkBcDYm-.js";import"./lane-observe-BA3g9aVd.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-BlmGoxCE.js";import"./ObserveTextFlow-DWNlmTVm.js";import"./SessionObserveEvidence-CF5jnH3-.js";import"./wrench-_tHBGTop.js";/* empty css */import"./agents-project-model-UYiamtrU.js";import"./model-IGCUEsMy.js";function pe(e){const t=e?.trim();if(!t)return null;const i=t.split(/[\\/]/u).filter(Boolean).at(-1)??t;return i.endsWith(".jsonl")?i.slice(0,-6):i}function rs(e){return e.surfaces.filter(t=>t.backend==="tmux")}function ls(e,t){return{terminalSessionId:e.id,terminalSurfaceKey:_e(t),sessionName:t.sessionName}}function cs(e,t){const i=pe(t.agentId),n=new Set(t.sessionRefs.map(pe).filter(r=>!!r)),o=i?.split(".",1)[0]??null;o?.startsWith("session-")&&n.add(o);for(const r of e){const a=rs(r).find(l=>n.has(l.sessionName));if(a)return ls(r,a)}return null}function ds(e,t){const i=ze(e.terminalSurfaceKey);return i?`scout://terminal?${new URLSearchParams({session:e.terminalSessionId,surface:qe(i),mode:t}).toString()}`:null}const us=1e4,ps=2e4,hs=6e4,ms=15e3,fs=45e3,js=["branch","unstaged","staged"];function ee(e){const t=()=>{document.visibilityState==="visible"&&e()};return window.addEventListener("focus",t),document.addEventListener("visibilitychange",t),()=>{window.removeEventListener("focus",t),document.removeEventListener("visibilitychange",t)}}function xs(e,t){const i=new Set;for(const n of[e,...t]){const o=n?.trim();o&&i.add(o.replace(/\/+$/u,""))}return[...i].slice(0,6)}function gs(e){return e.replace(/\/+$/u,"").split("/").pop()?.toLocaleLowerCase()??e.toLocaleLowerCase()}function bs(e,t,i){return e.path===t||i?.worktrees.some(o=>o.path===e.path)?!0:e.repo.split("/").pop()?.toLocaleLowerCase()===(i?.name.toLocaleLowerCase()??gs(t))}function Q(e){return e&&typeof e=="object"&&"name"in e&&e.name==="AbortError"?"The repository scan timed out.":e instanceof Error?e.message:String(e)}function vs(e,t=[]){const i=xs(e,t).join("\0"),n=p.useMemo(()=>i?i.split("\0"):[],[i]),[o,r]=p.useState(()=>ie()),[a,l]=p.useState(()=>De()),[c,g]=p.useState(!!(e&&!J(o,e))),[x,N]=p.useState(!!e),[S,j]=p.useState(!!e),[T,M]=p.useState(null),[y,F]=p.useState(null),[O,$]=p.useState(()=>new Map),[E,L]=p.useState(()=>new Map),[C,k]=p.useState(0),b=p.useRef(null),h=p.useCallback(()=>{b.current=null,k(f=>f+1)},[]);p.useEffect(()=>{if(!e){g(!1),M(null);return}let f=!1,v=!1,P=!0;const D=async()=>{if(v)return;v=!0,f||(g(!0),M(null));let B=null;try{let W=null;const H=C>0&&P;P=!1;try{W=await ae("standard",H,ms)}catch(R){B=Q(R)}if((!W||!J(W,e))&&b.current!==e){b.current=e;try{const R=await ae("expanded",H,fs);J(R,e)&&(W=R)}catch(R){B=Q(R)}}!f&&W&&r(R=>J(W,e)?W:R&&J(R,e)?R:W),!f&&!J(W,e)&&M(B??"Repo Watch did not include this project in its latest scan.")}finally{v=!1,f||g(!1)}};D();const u=window.setInterval(()=>{document.visibilityState==="visible"&&D()},us),I=ee(()=>{D()});return()=>{f=!0,window.clearInterval(u),I()}},[e,C]),p.useEffect(()=>{if(n.length===0){j(!1),L(new Map);return}let f=!1,v=!1,P=!0;const D=async()=>{if(v)return;v=!0,f||j(!0);const B=await Promise.allSettled(n.map(W=>ns(W,[...js],{force:C>0&&P,tier:"summary"})));if(P=!1,!f){const W=new Map,H=new Map;B.forEach((R,K)=>{const V=n[K];R.status==="fulfilled"?W.set(V,R.value.snapshot):H.set(V,Q(R.reason))}),$(R=>{const K=new Map(R);for(const V of n)K.delete(V);for(const[V,te]of W)K.set(V,te);return K}),L(H),j(!1)}v=!1};D();const u=window.setInterval(()=>{document.visibilityState==="visible"&&D()},ps),I=ee(()=>{D()});return()=>{f=!0,window.clearInterval(u),I()}},[n,C]),p.useEffect(()=>{if(n.length===0){N(!1),F(null);return}let f=!1,v=!1;const P=async()=>{if(!v){v=!0;try{const I=await Oe(n);f||(l(I),F(null))}catch(I){f||F(Q(I))}finally{v=!1,f||N(!1)}}};N(!0),F(null),P();const D=window.setInterval(()=>{document.visibilityState==="visible"&&P()},hs),u=ee(()=>{P()});return()=>{f=!0,window.clearInterval(D),u()}},[n,C]);const d=p.useMemo(()=>J(o,e),[e,o]),m=p.useMemo(()=>e?(a?.pullRequests??[]).filter(f=>bs(f,e,d)):[],[d,e,a]),A=p.useMemo(()=>{const f=a?.paths.some(v=>n.includes(v))?a.warnings:[];return y?[y,...f]:f},[n,y,a]);return{project:d,pullRequests:m,pullRequestsLoading:x,pullRequestWarnings:A,repoLoading:c,repoError:T,diffSnapshots:O,diffErrors:E,diffLoading:S,refresh:h}}function ws(e,t){return e.thread===t.thread&&e.crossProject===t.crossProject&&e.selected===t.selected&&e.cursor===t.cursor&&e.nowMs===t.nowMs&&e.workLabel===t.workLabel}const Ns=p.memo(function({thread:t,crossProject:i,selected:n,cursor:o,nowMs:r,onSelect:a,onOpen:l,rowRef:c,workLabel:g}){return s.jsxs("button",{ref:c,type:"button",className:"pi-row","data-state":t.group,"data-selected":n||void 0,"data-cursor":o||void 0,onClick:a,onDoubleClick:l,children:[s.jsx("span",{className:"pi-rowDot","aria-hidden":!0}),s.jsxs("span",{className:"pi-rowBody",children:[s.jsx("span",{className:"pi-rowWork",title:t.work,children:g??t.work}),s.jsxs("span",{className:"pi-rowAttr",children:[s.jsx("span",{className:"pi-rowAvatar",children:s.jsx(Fe,{agent:{name:t.agentName,harness:t.harness,state:t.working?"in_turn":null},placement:"row",size:22})}),s.jsx("span",{className:"pi-rowAgent",title:t.agentName,children:t.agentName}),s.jsx("span",{className:"pi-rowHmark","aria-hidden":!0,children:s.jsx(be,{harness:t.harness,size:11})}),i?s.jsxs("span",{className:"pi-rowChip",title:`/${t.projectTitle}`,children:["/",t.projectTitle]}):t.branch?s.jsx("span",{className:"pi-rowBranch",title:t.branch,children:t.branch}):null]})]}),s.jsxs("span",{className:"pi-rowVitals",children:[t.working?s.jsx("span",{className:"pi-rowLiveTag",children:"live"}):null,s.jsx("span",{className:"pi-rowAgo",children:t.lastActivityAt?q(t.lastActivityAt,r):"—"}),t.contextPct!=null?s.jsxs("span",{className:"pi-rowCtx",children:[t.contextPct,"%"]}):null]}),s.jsxs("span",{className:"pi-rowOpen","aria-hidden":!0,children:[s.jsx("span",{children:"Open"}),s.jsx(is,{size:14,strokeWidth:1.8})]})]})},ws);function he({title:e,detail:t,tone:i="muted"}){return s.jsxs("div",{className:"pi-stateBlock","data-tone":i,role:i==="loading"?"status":"note",children:[s.jsx("span",{className:"pi-statePulse","aria-hidden":!0}),s.jsx("span",{className:"pi-stateTitle",children:e}),t?s.jsx("span",{className:"pi-stateDetail",children:t}):null]})}function ks({rows:e=7}){return s.jsxs("div",{className:"pi-loadingRows","aria-hidden":"true",children:[s.jsxs("div",{className:"pi-sectionHead pi-sectionHead--loading",children:[s.jsx("span",{className:"pi-loadingLine pi-loadingLine--label"}),s.jsx("span",{className:"pi-loadingLine pi-loadingLine--count"})]}),Array.from({length:e},(t,i)=>s.jsxs("div",{className:"pi-row pi-row--loading",children:[s.jsx("span",{className:"pi-rowDot"}),s.jsxs("span",{className:"pi-rowBody",children:[s.jsx("span",{className:"pi-loadingLine pi-loadingLine--title"}),s.jsx("span",{className:"pi-loadingLine pi-loadingLine--meta"})]}),s.jsx("span",{className:"pi-rowVitals",children:s.jsx("span",{className:"pi-loadingLine pi-loadingLine--time"})})]},i))]})}function Ss({route:e,navigate:t,slug:i,model:n,mode:o,repoProject:r}){const a=n.projects.find(y=>y.slug===i)??null,l=Y(n.threads,i),c=l.filter(y=>y.kind==="agent"),g=a?.title??i,x=a?.root??null,N=(a?.agentCount??c.length)>1,S=e.machineId?{machineId:e.machineId}:{},j={view:"agents-v2",projectSlug:i,...S},T=ys(a?.needs??0,a?.working??0,l.length),M=r?.worktrees.length??a?.worktreeCount??0;return s.jsxs("header",{className:"pi-projectHead",children:[s.jsx("div",{className:"pi-projectHeadTop",children:s.jsxs("div",{className:"pi-projectIdent",children:[s.jsx("h1",{className:"pi-projectTitle",children:g}),s.jsxs("div",{className:"pi-projectMeta",children:[x?s.jsx("span",{title:x,children:_(x)}):null,s.jsx("span",{className:"pi-projectDigest",children:T})]})]})}),s.jsxs("div",{className:"pi-projectFacets","aria-label":"Project sections",children:[s.jsx("button",{type:"button",className:"pi-projectFacet","data-selected":o==="overview"||void 0,onClick:()=>t(j),children:s.jsx("span",{children:"Overview"})}),s.jsxs("button",{type:"button",className:"pi-projectFacet","data-selected":o==="sessions"||void 0,onClick:()=>t({...j,indexView:"sessions"}),children:[s.jsx("span",{children:"Sessions"}),s.jsx("b",{children:a?.sessionCount??0})]}),N?s.jsxs("button",{type:"button",className:"pi-projectFacet","data-selected":o==="agents"||void 0,onClick:()=>t({...j,indexView:"agents"}),children:[s.jsx("span",{children:"Agents"}),s.jsx("b",{children:a?.agentCount??c.length})]}):null,s.jsxs("button",{type:"button",className:"pi-projectFacet",title:"Open worktrees in Repos",onClick:()=>t({view:"repos",...x?{root:x}:{},...S}),children:[s.jsx("span",{children:"Worktrees"}),s.jsx("b",{children:M}),s.jsx(ue,{className:"pi-projectFacetOut",size:11,strokeWidth:2,"aria-hidden":!0})]}),s.jsxs("button",{type:"button",className:"pi-projectFacet",disabled:!x,title:x?"Open this project's AGENTS.md":"No project root known",onClick:()=>t({view:"code",project:i,path:"AGENTS.md"}),children:[s.jsx("span",{children:"Rules"}),s.jsx("b",{children:x?"set":"—"}),s.jsx(ue,{className:"pi-projectFacetOut",size:11,strokeWidth:2,"aria-hidden":!0})]})]})]})}function ys(e,t,i){if(i===0)return s.jsx("span",{children:"No conversations yet."});const n=[];return t>0&&n.push(s.jsxs("b",{children:[t," moving"]},"w")),e>0&&n.push(s.jsxs("b",{children:[e," needs you"]},"n")),n.push(s.jsxs("span",{children:[i," conversation",i===1?"":"s"]},"t")),n.reduce((o,r,a)=>(a>0&&o.push(s.jsx("span",{children:" · "},`sep${a}`)),o.push(r),o),[])}function Se(e){if(e.length<=18)return e;const t=e.match(/^([0-9a-f]{8})-[0-9a-f-]{27,}$/iu);return t?t[1]:`${e.slice(0,10)}…${e.slice(-5)}`}function Cs(e,t){return`${t?0:e.projects.length} tracked`}function As({route:e,navigate:t,projects:i}){const{onboarding:n,refreshOnboarding:o,reload:r}=Ge(),a=Rs(n?.defaultHarness),[l,c]=p.useState(""),[g,x]=p.useState(""),[N,S]=p.useState(a),[j,T]=p.useState(!1),[M,y]=p.useState(null),[F,O]=p.useState(null),[$,E]=p.useState(null);p.useEffect(()=>{S(a)},[a]);const L=p.useMemo(()=>Ts(i),[i]),C=p.useMemo(()=>Ls(L,l),[l,L]),k=p.useMemo(()=>L.find(u=>u.slug===g)??fe(L,l),[l,L,g]),b=l.trim(),h=Ms(b)&&!fe(L,b),d=k??(!h&&b?C[0]??null:null),m=d?"Open project":h?"Create project":"Find project",A=!!(d||h||b);p.useEffect(()=>{g&&(L.some(u=>u.slug===g)||x(""))},[L,g]),p.useEffect(()=>{if(!$)return;const u=L.find(I=>Es(I,$));u&&(E(null),t(me(e,u.slug)))},[$,t,L,e]);const f=u=>{x(u.slug),c(u.title),y(null),O(null)},v=u=>{t(me(e,u.slug))},P=async u=>{T(!0),y(null),O(null);try{await $e("/api/onboarding/project",{method:"POST",body:JSON.stringify({contextRoot:u,sourceRoots:[u],defaultHarness:N})}),E(u),O("Project created. Refreshing inventory."),x(""),c(""),ts(),await Promise.all([o(),r()])}catch(I){y(I instanceof Error?I.message:"Could not create project.")}finally{T(!1)}},D=u=>{if(u.preventDefault(),!j){if(d){v(d);return}if(h){P(b);return}if(b){y("No project matches that search. Paste a repo path to create one.");return}y("Choose a project or paste a repo path.")}};return s.jsxs("div",{className:"pi-zero",children:[s.jsxs("div",{className:"pi-zeroHead",children:[s.jsxs("span",{className:"pi-zeroKicker",children:[s.jsx(we,{size:13,strokeWidth:1.9,"aria-hidden":!0}),"Projects"]}),s.jsx("h2",{children:"Pick a project to start."})]}),s.jsxs("form",{className:"pi-zeroComposer",onSubmit:D,children:[s.jsxs("div",{className:"pi-zeroBar",children:[s.jsxs("label",{className:"pi-zeroSelect",children:[s.jsx(ke,{size:13,strokeWidth:1.8,"aria-hidden":!0}),s.jsxs("select",{value:g,"aria-label":"Choose project",onChange:u=>{const I=L.find(B=>B.slug===u.currentTarget.value);I?f(I):x("")},children:[s.jsx("option",{value:"",children:"Choose project"}),L.slice(0,80).map(u=>s.jsx("option",{value:u.slug,children:u.title},u.slug))]})]}),s.jsx("div",{className:"pi-zeroHarness",role:"group","aria-label":"Default harness",children:["claude","codex"].map(u=>s.jsx("button",{type:"button","data-on":N===u||void 0,onClick:()=>S(u),children:u==="claude"?"Claude":"Codex"},u))})]}),s.jsxs("div",{className:"pi-zeroInputRow",children:[s.jsx("textarea",{value:l,rows:2,placeholder:"Find project or paste /path/to/repo","aria-label":"Find or create project",onChange:u=>{c(u.currentTarget.value),x(""),y(null),O(null)},onKeyDown:u=>{u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),u.currentTarget.form?.requestSubmit())}}),s.jsxs("button",{type:"submit",className:"pi-zeroSend",disabled:j||!A,title:m,children:[s.jsx(Ke,{size:15,strokeWidth:2,"aria-hidden":!0}),s.jsx("span",{children:j?"Working":m})]})]}),C.length>0?s.jsx("div",{className:"pi-zeroMatches","aria-label":"Matching projects",children:C.map(u=>s.jsxs("button",{type:"button",className:"pi-zeroMatch","data-selected":k?.slug===u.slug||void 0,onClick:()=>f(u),onDoubleClick:()=>v(u),children:[s.jsxs("span",{className:"pi-zeroMatchMain",children:[s.jsxs("span",{className:"pi-zeroMatchTitle",children:["/",u.title]}),s.jsx("span",{className:"pi-zeroMatchRoot",title:u.root??void 0,children:u.root?_(u.root):u.slug})]}),s.jsx("span",{className:"pi-zeroMatchMeta",children:Is(u)})]},u.slug))}):b?s.jsx("div",{className:"pi-zeroEmpty",children:"No project matches."}):null,M?s.jsx("div",{className:"pi-zeroError",children:M}):null,F?s.jsx("div",{className:"pi-zeroStatus",children:F}):null]})]})}function Rs(e){return e==="codex"?"codex":"claude"}function me(e,t){return{view:"agents-v2",projectSlug:t,...e.showEphemeral?{showEphemeral:!0}:{},...e.machineId?{machineId:e.machineId}:{}}}function Ts(e){return e.map(t=>({slug:t.slug,title:t.title,root:t.root,agentCount:t.agentCount,sessionCount:t.sessionCount,lastActivityAt:t.lastActivityAt})).sort((t,i)=>i.lastActivityAt-t.lastActivityAt||i.agentCount-t.agentCount||i.sessionCount-t.sessionCount||t.title.localeCompare(i.title))}function Ls(e,t){const i=z(t);return i?e.map(n=>({option:n,score:Ps(n,i)})).filter(n=>n.score!==null).sort((n,o)=>n.score-o.score||o.option.lastActivityAt-n.option.lastActivityAt||n.option.title.localeCompare(o.option.title)).slice(0,6).map(n=>n.option):e.slice(0,6)}function fe(e,t){const i=z(t);return i?e.find(n=>{const o=z(n.root??""),r=z(n.root?Z(n.root):"");return z(n.title)===i||z(n.slug)===i||o===i||r===i||z(n.root?_(n.root):"")===i})??null:null}function Ps(e,t){const i=z(e.title),n=z(e.slug),o=z(e.root??""),r=z(e.root?Z(e.root):"");return i===t||n===t||o===t||r===t?0:i.startsWith(t)||n.startsWith(t)||r.startsWith(t)?1:i.includes(t)||n.includes(t)||r.includes(t)?2:o.includes(t)?3:null}function z(e){return e.trim().toLowerCase().replace(/^~(?=\/)/u,"").replace(/\s+/g," ")}function Ms(e){const t=e.trim();return/^(~\/|\/|\.{1,2}\/)/u.test(t)||t.includes("/")}function Es(e,t){const i=z(t);return i?[e.root??"",e.root?_(e.root):"",e.root?Z(e.root):"",e.slug,e.title].map(z).some(o=>o===i||o.endsWith(i)):!1}function Is(e){return[je(e.agentCount,"agent"),je(e.sessionCount,"session"),e.lastActivityAt?q(e.lastActivityAt):null].filter(Boolean).join(" · ")}function je(e,t){return`${e} ${t}${e===1?"":"s"}`}function Ws(e,t){return t.sessionId?e.find(i=>i.sessionId===t.sessionId||i.conversationId===t.sessionId||i.id===t.sessionId)??null:null}function xe(e){return/^native:process:/iu.test(e??"")}function Fs(e){return e.startsWith("/")||e.startsWith("~/")||e.includes("/")&&/\.(jsonl?|events)$/i.test(e)}function ye(e,t,i){const n=e?.trim()??"";return!n||Fs(n)?t:n}function $s({session:e,sessionRef:t,threads:i,lookup:n,route:o,navigate:r,nowMs:a}){const[l,c]=p.useState(null),g=e?.agentName??o.selectedAgentId??o.agentId??"Session",x=e?.harness??"session",N=n?.kind==="observe"?n.observe.data:null,S=N?.metadata?.session,j=e?.lastActivityAt??n?.session?.lastMessageAt??null,[T,M,y]=p.useMemo(()=>[re(N),Ae(N,j),zs(N,j)],[N,j]),F=S?.gitBranch??n?.session?.currentBranch??e?.branch??null,O=S?.model??null,$=S?.turnCount??N?.metadata?.usage?.assistantMessages??(n?.kind==="conversation"?n.session.messageCount:null),E=M?q(M,a):e?.lastActivityAt?q(e.lastActivityAt,a):"—",L=e?.working?`live · last ${E}`:E!=="—"?`last ${E}`:"trace resolving",C=ye(e?.work,g),k=Se(t),b=n?.session??null,h=n?.kind==="observe"?n.observe.agentId??b?.agentId??e?.agentId:b?.agentId??e?.agentId,d=n?.kind==="observe"?n.observe.sessionId:b?.harnessSessionId,m=[g,x,O,F,T?`started ${He(T)}`:null,y,$!=null?`turn ${w($)}`:null,k].filter(v=>!!v&&v!=="—");p.useEffect(()=>{let v=!0;return c(null),!h&&!d&&!t?()=>{v=!1}:(Ve({includeDiscovered:!0}).then(P=>{v&&c(cs(P,{agentId:h,sessionRefs:[t,d,e?.sessionId]}))}).catch(()=>{v&&c(null)}),()=>{v=!1})},[e?.sessionId,t,h,d]);const A=()=>{l&&Ue(r,{view:"terminal",terminalSessionId:l.terminalSessionId,terminalSurfaceKey:l.terminalSurfaceKey,mode:"takeover"},{returnTo:o})},f=l?ds(l,"takeover"):null;return s.jsxs("section",{className:"pi-sessionOverview","aria-label":"Session overview",children:[s.jsxs("section",{className:"pi-sessionMasthead","data-state":e?.working?"working":"recent",children:[s.jsxs("div",{className:"pi-sessionMastTop",children:[s.jsx("span",{className:"pi-sessionCrumb",children:"Sessions ▸"}),s.jsx("h2",{className:"pi-sessionHeadline",title:C,children:C}),s.jsxs("span",{className:"pi-sessionState",children:[e?.working?s.jsx("span",{className:"pi-sessionLiveDot","aria-hidden":!0}):null,L]})]}),s.jsx("div",{className:"pi-sessionMeta",children:m.map((v,P)=>s.jsxs("span",{title:P===m.length-1?t:v,children:[P===1?s.jsx(be,{harness:x,size:11}):null,v]},`${v}:${P}`))}),l?s.jsxs("div",{className:"pi-sessionTerminalActions","aria-label":"tmux terminal actions",children:[s.jsxs("span",{className:"pi-sessionTerminalName",title:l.sessionName,children:["tmux · ",l.sessionName]}),s.jsx("button",{type:"button",onClick:A,children:"Open in web terminal"}),f?s.jsxs("a",{href:f,children:["Open in native terminal",s.jsx(as,{size:11,strokeWidth:1.8,"aria-hidden":!0})]}):null]}):null]}),s.jsx(Js,{lookup:n,session:e,threads:i,nowMs:a,route:o,navigate:r})]})}function Ds({session:e,sessionRef:t,threads:i,route:n,navigate:o,nowMs:r}){const[a,l]=p.useState(null);return p.useEffect(()=>{l(null)},[t]),s.jsx("main",{className:"pi-sessionDetail","aria-label":"Selected session",children:s.jsxs("div",{className:"pi-sessionContent",children:[s.jsx($s,{session:e,sessionRef:t,threads:i,lookup:a,route:n,navigate:o,nowMs:r}),s.jsx(Je,{sessionRef:t,navigate:o,showObserveRail:!1,onLookup:l})]})})}function w(e){return typeof e!="number"||!Number.isFinite(e)?"—":Math.abs(e)<1e3?e.toLocaleString("en-US"):Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function Ce(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?"—":`${w(e)} tok`}function G(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:null}function Os(e){const t=G(e?.contextInputTokens),i=G(e?.contextWindowTokens);return t===null||i===null?null:Math.max(0,Math.min(1,t/i))}function Bs(e){const t=[{key:"input",label:"input",value:G(e?.inputTokens)??0},{key:"cache-read",label:"cache rd",value:G(e?.cacheReadInputTokens)??0},{key:"cache-write",label:"cache wr",value:G(e?.cacheCreationInputTokens)??0},{key:"output",label:"output",value:G(e?.outputTokens)??0},{key:"reasoning",label:"reasoning",value:G(e?.reasoningOutputTokens)??0}].filter(r=>r.value>0),i=t.reduce((r,a)=>r+a.value,0),n=t.filter(r=>r.key!=="reasoning"||i>0&&r.value/i>=.02);if(n.length>0)return n;const o=G(e?.totalTokens);return o!==null?[{key:"total",label:"total",value:o}]:[]}function Hs({buckets:e}){const t=e.reduce((i,n)=>i+n.value,0);return e.length===0?null:s.jsxs("div",{className:"pi-sessionGlanceTokens","aria-label":"Token usage",children:[s.jsx("div",{className:"pi-sessionGlanceTokenBars",children:e.map(i=>s.jsx("span",{className:"pi-sessionGlanceTokenSeg","data-kind":i.key,style:{flexGrow:t>0?Math.max(.035,i.value/t):1,flexBasis:0},title:`${i.label}: ${Ce(i.value)}`},i.key))}),s.jsx("div",{className:"pi-sessionGlanceTokenLegend",children:e.map(i=>s.jsxs("span",{children:[s.jsx("i",{"data-kind":i.key,"aria-hidden":!0}),i.label," ",s.jsx("b",{children:w(i.value)})]},i.key))})]})}function re(e){const t=se(e?.metadata?.session?.sessionStart);if(t!==null)return t;for(const i of e?.events??[]){const n=se(i.at);if(n!==null)return n}return null}function Ae(e,t){for(let o=(e?.events.length??0)-1;o>=0;o-=1){const r=se(e?.events[o]?.at);if(r!==null)return r}const i=re(e),n=e?.events.at(-1)?.t;return i!==null&&typeof n=="number"&&Number.isFinite(n)?i+n*1e3:se(t)}function zs(e,t){const i=re(e),n=Ae(e,t);if(i!==null&&n!==null)return oe(Math.max(0,n-i))||"—";const o=e?.events.at(-1)?.t;return typeof o=="number"&&Number.isFinite(o)&&oe(o*1e3)||"—"}function oe(e){if(typeof e!="number"||!Number.isFinite(e)||e<0)return"";const t=Math.floor(e/1e3);if(t<60)return`${t}s`;const i=Math.floor(t/60);if(i<60)return`${i}m`;const n=Math.floor(i/60),o=i%60;if(n<48)return o>0?`${n}h ${o}m`:`${n}h`;const r=Math.floor(n/24),a=n%24;return a>0?`${r}d ${a}h`:`${r}d`}function qs(e){const t=e?.metadata?.topology;if(!t)return null;const i=t.agents.length,n=t.agents.filter(l=>l.role!=="lead").length,o=t.groups.filter(l=>l.kind==="workflow").length,r=t.tasks.length,a=[];return n>0?a.push(`${n} worker${n===1?"":"s"}`):i>0&&a.push(`${i} agent${i===1?"":"s"}`),o>0&&a.push(`${o} workflow${o===1?"":"s"}`),r>0&&a.push(`${r} task${r===1?"":"s"}`),a.length?a.join(" · "):null}function _s(e){return[...e].sort((t,i)=>ge(i.state)-ge(t.state)||i.touches-t.touches||i.lastT-t.lastT||t.path.localeCompare(i.path)).slice(0,5).map(t=>({path:t.path,kind:t.state,detail:[t.touches>1?`${w(t.touches)} touches`:"1 touch",t.lastT>0?`last ${oe(t.lastT*1e3)}`:null].filter(Boolean).join(" · ")}))}function ge(e){switch(e){case"created":return 3;case"modified":return 2;case"read":return 1}}function Vs(e){const t=new Map;for(const i of e){if(i.kind!=="tool")continue;const n=Gs(i.tool||i.text),o=t.get(n)??{count:0,samples:[]};o.count+=1;const r=i.arg||i.detail||i.text;r&&o.samples.length<2&&o.samples.push(r),t.set(n,o)}return[...t.entries()].sort((i,n)=>n[1].count-i[1].count||i[0].localeCompare(n[0])).slice(0,5).map(([i,n])=>({name:i,count:n.count,detail:n.samples.join(" · ")||`${w(n.count)} uses`}))}function Gs(e){return(e.trim().split(/\s+/u)[0]??"tool").replace(/[_-]+/gu," ").toLowerCase()}function Ks({usage:e,contextPct:t,topology:i,workspace:n,projectRoot:o,branch:r}){const a=[];return t!==null&&a.push({label:"Context",value:`${t}%`,detail:t>=80?"approaching limit":"within window",tone:t>=80?"warn":void 0}),(e?.serviceTier||e?.planType||e?.speed)&&a.push({label:"Budget",value:e.serviceTier??e.planType??e.speed??"usage",detail:[e.planType,e.speed].filter(Boolean).join(" · ")||"provider metadata"}),n&&o&&n!==o?a.push({label:"Worktree",value:_(n),detail:"session cwd differs from project root",tone:"warn"}):r&&a.push({label:"Repo",value:r,detail:"session branch"}),i&&a.push({label:"Topology",value:i,detail:"observed harness hierarchy"}),(e?.webSearchRequests||e?.webFetchRequests)&&a.push({label:"Network",value:`${w((e.webSearchRequests??0)+(e.webFetchRequests??0))} req`,detail:[e.webSearchRequests?`${w(e.webSearchRequests)} search`:null,e.webFetchRequests?`${w(e.webFetchRequests)} fetch`:null].filter(Boolean).join(" · ")}),a.slice(0,4)}function Us({session:e,threads:t,nowMs:i}){return t.filter(n=>n.kind==="agent").filter(n=>n.agentId!==e?.agentId||n.work!==e?.work).sort((n,o)=>Number(o.working)-Number(n.working)||o.lastActivityAt-n.lastActivityAt).slice(0,4).map(n=>{const o=!!(e?.branch&&n.branch===e.branch),r=!!(e?.agentName&&n.agentName===e.agentName);return{thread:n,title:ye(n.work,n.agentName,n.id),channel:n.conversationId?Se(n.conversationId):n.agentName,state:n.needs?"needs":n.working?"working":"recent",time:n.lastActivityAt?q(n.lastActivityAt,i):"—",participants:n.agentName,why:o?"same branch":r?"same agent":n.working?"active in project":"project thread"}})}function X({label:e,value:t,title:i,detail:n}){return s.jsxs("span",{className:"pi-sessionGlanceField",title:i,children:[s.jsx("span",{children:e}),s.jsx("b",{children:t}),n?s.jsx("small",{children:n}):null]})}function Js({lookup:e,session:t,threads:i,nowMs:n,route:o,navigate:r}){const[a,l]=p.useState(!1),c=p.useMemo(()=>{const h=e?.kind==="observe"?e.observe.data:null,d=h?.metadata?.session,m=h?.metadata?.usage,A=h?.events??[],f=h?.files??[],v=d?.turnCount??m?.assistantMessages??(e?.kind==="conversation"?e.session.messageCount:null),P=A.filter(U=>U.kind==="tool").length,D=f.filter(U=>U.state==="created").length,u=f.filter(U=>U.state==="modified").length,I=f.filter(U=>U.state==="read").length,B=D+u,W=Os(m),H=W!==null?Math.round(W*100):null,R=d?.cwd??e?.session?.workspaceRoot??t?.projectRoot??null,K=d?.gitBranch??e?.session?.currentBranch??t?.branch??null,V=qs(h),te=Ce(m?.totalTokens??(typeof m?.inputTokens=="number"||typeof m?.outputTokens=="number"?(m?.inputTokens??0)+(m?.outputTokens??0):null)),Te=Bs(m),Le=B>0?[u>0?`${w(u)} mod`:null,D>0?`${w(D)} new`:null].filter(Boolean).join(" · "):I>0?"read-only":"no file trace",Pe=f.length>0?`${w(f.length)} touched`:"—",Me=_s(f),Ee=Vs(A),Ie=Ks({usage:m,contextPct:H,topology:V,workspace:R,projectRoot:t?.projectRoot,branch:K}),We=Us({session:t,threads:i,nowMs:n});return{turnCount:v,toolCount:P,editCount:B,fileCountLabel:Pe,fileStateLabel:Le,workspace:R,contextPct:H,showContext:H!==null,contextWarn:H!==null&&H>=80,tokenTotal:te,buckets:Te,fileSignals:Me,toolSignals:Ee,contextSignals:Ie,threadSignals:We,projectRoot:t?.projectRoot??null}},[e,t,i,n]),{turnCount:g,toolCount:x,editCount:N,fileCountLabel:S,fileStateLabel:j,workspace:T,contextPct:M,showContext:y,contextWarn:F,tokenTotal:O,buckets:$,fileSignals:E,toolSignals:L,contextSignals:C,threadSignals:k,projectRoot:b}=c;return s.jsxs("section",{className:"pi-sessionGlance","aria-label":"Session glance",children:[s.jsxs("div",{className:"pi-sessionVitals","aria-label":"Session vitals",children:[s.jsx(X,{label:"Turns",value:w(g)}),s.jsx(X,{label:"Tools",value:w(x)}),s.jsx(X,{label:"Edits",value:w(N)}),s.jsx(X,{label:"Files",value:S,detail:j!=="no file trace"?j:null}),T&&b&&T!==b?s.jsx(X,{label:"Worktree",value:_(T),title:T}):null,y?s.jsxs("span",{className:"pi-sessionContextVital",title:"Context window usage",children:[s.jsx("span",{children:"Ctx"}),s.jsx("span",{className:"pi-sessionContextBar","aria-hidden":!0,children:s.jsx("span",{"data-warn":F||void 0,style:{width:`${M}%`}})}),s.jsxs("b",{"data-warn":F||void 0,children:[M,"%"]})]}):null,$.length>0?s.jsxs("button",{type:"button",className:"pi-sessionTokenToggle","aria-expanded":a,onClick:()=>l(h=>!h),children:[s.jsx("span",{children:"Tokens"}),s.jsx("b",{children:O}),s.jsx("i",{children:a?"▾":"▸"})]}):null]}),a&&$.length>0?s.jsx(Hs,{buckets:$}):null,s.jsx(Xs,{files:E,tools:L,context:C,threads:k,route:o,navigate:r})]})}function Xs({files:e,tools:t,context:i,threads:n,route:o,navigate:r}){return s.jsxs("section",{className:"pi-sessionSignals","aria-label":"Session work signals",children:[s.jsxs("div",{className:"pi-sessionSignalCol",children:[s.jsxs("div",{className:"pi-sessionSignalHead",children:[s.jsx("span",{children:"Files"}),s.jsx("b",{children:w(e.length)})]}),e.length>0?s.jsx("div",{className:"pi-sessionFileList",children:e.map(a=>s.jsxs("div",{className:"pi-sessionFileRow",children:[s.jsx("span",{"data-kind":a.kind,children:a.kind}),s.jsx("code",{title:a.path,children:a.path}),s.jsx("small",{children:a.detail})]},`${a.kind}:${a.path}`))}):s.jsx("span",{className:"pi-sessionSignalEmpty",children:"No file trace yet."})]}),s.jsxs("div",{className:"pi-sessionSignalCol",children:[s.jsx("div",{className:"pi-sessionSignalHead",children:s.jsx("span",{children:"Tools · Context · Topology"})}),t.length>0?s.jsx("div",{className:"pi-sessionToolGrid",children:t.map(a=>s.jsxs("span",{className:"pi-sessionToolPill",title:a.detail,children:[s.jsx("b",{children:a.name}),s.jsx("em",{children:w(a.count)})]},a.name))}):null,i.length>0?s.jsx("div",{className:"pi-sessionContextList",children:i.map(a=>s.jsxs("div",{className:"pi-sessionContextRow",children:[s.jsx("span",{children:a.label}),s.jsx("b",{"data-tone":a.tone,children:a.value}),s.jsx("small",{children:a.detail})]},`${a.label}:${a.value}`))}):t.length===0?s.jsx("span",{className:"pi-sessionSignalEmpty",children:"Trace metadata is still resolving."}):null]}),s.jsxs("div",{className:"pi-sessionSignalCol",children:[s.jsxs("div",{className:"pi-sessionSignalHead",children:[s.jsx("span",{children:"Recent threads"}),s.jsx("b",{children:w(n.length)})]}),n.length>0?s.jsx("div",{className:"pi-sessionThreadList",children:n.map(a=>s.jsxs("button",{type:"button",className:"pi-sessionThreadRow",onClick:()=>r(Ne(a.thread,o)),children:[s.jsx("span",{className:"pi-sessionThreadTitle",title:a.title,children:a.title}),s.jsxs("span",{className:"pi-sessionThreadMeta",children:[s.jsx("b",{children:a.channel}),s.jsx("em",{children:a.state}),s.jsx("small",{children:a.time})]}),s.jsxs("span",{className:"pi-sessionThreadWhy",children:[a.participants," · ",a.why]})]},a.thread.id))}):s.jsx("span",{className:"pi-sessionSignalEmpty",children:"No recent agent threads."})]})]})}function ne(e){return!e||e==="—"||/^\d+\s+branches$/iu.test(e)?null:e}function Re(e,t,i,n){const o=new Map,r=(l,c)=>{const g=l??e,x=ne(c),N=g??"project",S=o.get(N);if(S)return!S.branch&&x&&(S.branch=x),S;const j={key:N,root:g,branch:x,sessions:0,work:0,moving:0,lastActivityAt:0,repoWatch:null};return o.set(N,j),j};for(const l of t){const c=r(l.root,l.branch);l.working&&(c.moving+=1),c.lastActivityAt=Math.max(c.lastActivityAt,l.lastActivityAt)}const a=(l,c)=>{const g=l??e,x=o.get(g??"project");return x||(t.length>0?o.get(e??"")??o.values().next().value:r(l,c))};for(const l of i){const c=a(l.workspaceRoot??l.projectRoot,l.branch);c.sessions+=1,l.working&&(c.moving+=1,c.branch=ne(l.branch)??c.branch),c.lastActivityAt=Math.max(c.lastActivityAt,l.lastActivityAt)}for(const l of n){const c=a(l.workspaceRoot??l.projectRoot,l.branch);c.work+=1,l.working&&(c.moving+=1,c.branch=ne(l.branch)??c.branch),c.lastActivityAt=Math.max(c.lastActivityAt,l.lastActivityAt)}return o.size===0&&r(e,null),[...o.values()].sort((l,c)=>c.moving-l.moving||c.lastActivityAt-l.lastActivityAt||(l.root??"").localeCompare(c.root??""))}function Zs(e){return e.worktrees.map(t=>({key:t.id,root:t.path,branch:t.branch.name,sessions:t.sessions.length,work:t.agents.length,moving:t.agents.some(Be)?1:0,lastActivityAt:t.lastCommitAt??0,repoWatch:t}))}function Qs({pullRequests:e,loading:t,warnings:i,onRefresh:n,nowMs:o}){return s.jsxs("section",{className:"pi-projectPullRequests","aria-label":"Open pull requests",children:[s.jsxs("div",{className:"pi-projectPullRequestsHead",children:[s.jsx("span",{children:"Open PRs"}),s.jsx("b",{children:t&&e.length===0?"…":w(e.length)})]}),e.length>0?s.jsx("div",{className:"pi-projectPullRequestList",children:e.slice(0,6).map(r=>{const a=r.updatedAt?Date.parse(r.updatedAt):Number.NaN;return s.jsxs("a",{className:"pi-projectPullRequest",href:r.url,target:"_blank",rel:"noreferrer",children:[s.jsxs("span",{className:"pi-projectPullRequestNumber",children:["#",r.number]}),s.jsx("b",{title:r.title,children:r.title}),s.jsxs("span",{className:"pi-projectPullRequestBranch",title:`${r.headRefName} → ${r.baseRefName}`,children:[r.headRefName," → ",r.baseRefName]}),s.jsx("em",{children:r.isDraft?"draft":"open"}),s.jsx("time",{children:Number.isFinite(a)?q(a,o):"updated"})]},r.id)})}):s.jsxs("div",{className:"pi-projectPullRequestState","data-loading":t||void 0,children:[s.jsx("span",{children:t?"Checking GitHub for open pull requests…":i[0]??"No open pull requests for this repository."}),!t&&i.length>0?s.jsx("button",{type:"button",onClick:n,children:"Retry"}):null]})]})}function Ys(e){const t=new Set;let i=0,n=0;const o=[];for(const r of e.layers){r.files.length>0&&o.push(r.kind);for(const a of r.files)t.add(a.newPath??a.oldPath??"unknown"),i+=a.additions??0,n+=a.deletions??0}return{additions:i,deletions:n,files:[...t],layers:o}}function et({additions:e,deletions:t}){return e+t===0?s.jsx("span",{className:"pi-projectWorktreeChurnBar","data-empty":!0}):s.jsxs("span",{className:"pi-projectWorktreeChurnBar","aria-label":`${e} additions and ${t} deletions`,children:[e>0?s.jsx("i",{"data-add":!0,style:{flexGrow:e}}):null,t>0?s.jsx("i",{"data-delete":!0,style:{flexGrow:t}}):null]})}function st({project:e,repoProject:t,repoLoading:i,repoError:n,diffSnapshots:o,diffErrors:r,diffLoading:a,pullRequests:l,pullRequestsLoading:c,pullRequestWarnings:g,onRepositoryRefresh:x,threads:N,sessions:S,route:j,navigate:T,nowMs:M}){const y=e?.root??S[0]?.projectRoot??N[0]?.projectRoot??null,F=N.length,O=e?.sessionCount??S.length,$=e?.agentCount??0,E=Math.max(e?.lastActivityAt??0,S[0]?.lastActivityAt??0,N[0]?.lastActivityAt??0),L=e?.branches.length?e.branches:[...new Set([...S.map(d=>d.branch),...N.map(d=>d.branch)].filter(d=>!!d&&d!=="—"&&d!=="main"))],C=t?.worktrees.length?Zs(t):Re(y,e?.worktrees??[],S,N),k=C.find(d=>d.moving>0&&d.branch)?.branch??C.find(d=>d.branch)?.branch??L[0]??"main",b=y?Z(y):e?.title??j.projectSlug??"project",h=C.find(d=>d.moving>0)?.key??C.find(d=>d.branch===k)?.key??C[0]?.key;return s.jsxs("main",{className:"pi-projectOverview","aria-label":"Project overview",children:[s.jsxs("section",{className:"pi-projectSnapshot","aria-label":"Project snapshot",children:[s.jsxs("div",{className:"pi-projectRepository",children:[s.jsxs("div",{className:"pi-projectRepositoryHead",children:[s.jsx("span",{children:"Repository"}),s.jsx(os,{size:13,strokeWidth:1.7,"aria-hidden":!0})]}),s.jsxs("div",{className:"pi-projectRepositoryIdentity",children:[s.jsx("b",{children:b}),s.jsx("span",{title:y??void 0,children:y?_(y):j.projectSlug??"project"})]}),s.jsxs("div",{className:"pi-projectRepositoryCurrent",children:[C.some(d=>d.moving>0)?s.jsx("span",{className:"pi-projectRepositoryPulse","aria-label":"Active now"}):null,s.jsxs("span",{children:[s.jsx("small",{children:"Current branch"}),s.jsx("b",{title:k,children:k})]}),s.jsx("time",{children:E?q(E,M):"no activity"})]}),O>0||$>0||F>0?s.jsxs("div",{className:"pi-projectRepositoryStats","aria-label":"Repository activity",children:[O>0?s.jsxs("span",{children:[s.jsx("b",{children:w(O)})," sessions"]}):null,$>0?s.jsxs("span",{children:[s.jsx("b",{children:w($)})," agents"]}):null,F>0?s.jsxs("span",{children:[s.jsx("b",{children:w(F)})," threads"]}):null]}):null]}),s.jsxs("div",{className:"pi-projectWorktrees",children:[s.jsxs("div",{className:"pi-projectWorktreesHead",children:[s.jsx("span",{children:"Worktree preview"}),s.jsx("b",{children:w(C.length)})]}),s.jsx("div",{className:"pi-projectWorktreeList",children:C.slice(0,6).map(d=>{const m=d.repoWatch,A=d.root?o.get(d.root)??null:null,f=A?Ys(A):null,v=m?ve(m):null,P=f?.additions??v?.add??0,D=f?.deletions??v?.del??0,u=f?.files.length??(m?Math.max(m.status.changedFiles,v?.files??0):0),I=!!(u>0||m&&(!m.status.clean||m.branch.ahead>0||m.branch.behind>0)),B=l.filter(R=>R.headRefName===d.branch),W=!!(d.root&&a&&!A&&!r.has(d.root)),H=d.root?r.get(d.root)??null:"No worktree path is available.";return s.jsxs("article",{className:"pi-projectWorktree","data-active":d.key===h||void 0,"data-stranded":I||void 0,children:[s.jsx("span",{className:"pi-projectWorktreeTop",children:s.jsx("b",{title:d.branch??"main",children:d.branch??"main"})}),s.jsx("em",{title:d.root??void 0,children:d.root?_(d.root):"workspace"}),A||m?s.jsxs("div",{className:"pi-projectWorktreeDiff","data-clean":!I||void 0,children:[I?s.jsxs(s.Fragment,{children:[s.jsxs("span",{className:"pi-projectWorktreeChurn",children:[s.jsxs("b",{className:"pi-projectWorktreeAdd",children:["+",w(P)]}),s.jsxs("b",{className:"pi-projectWorktreeDel",children:["−",w(D)]}),s.jsx(et,{additions:P,deletions:D})]}),s.jsxs("small",{children:[w(u)," changed"]})]}):s.jsx("small",{children:"clean"}),d.root?s.jsx("button",{type:"button",className:"pi-projectWorktreeOpenDiff",onClick:()=>T({view:"repo-diff",path:d.root}),children:"View diff"}):null]}):s.jsxs("div",{className:"pi-projectWorktreeDiff","data-pending":!0,children:[s.jsx("small",{children:W||i?"Reading worktree diff…":H??n??"No diff data returned."}),!W&&!i?s.jsx("button",{type:"button",className:"pi-projectWorktreeOpenDiff",onClick:x,children:"Retry"}):null]}),f&&f.files.length>0?s.jsxs("span",{className:"pi-projectWorktreeFiles",title:f.files.join(`
|
|
1
|
+
import{r as p,j as s}from"./index-DmFAhGPj.js";import{A as Fe}from"./AgentAvatar-D8ZtMluU.js";import{H as be}from"./HarnessMark-BPAphNjx.js";import{a as $e}from"./api-h5zurxmi.js";import{g as ie,a as De,f as ae,b as Oe}from"./api-BkjHJfgJ.js";import{r as ve,i as Be}from"./ui-LM8pS8qE.js";import{t as q,d as He,n as se}from"./time-Dhsh_2EG.js";import{p as ze,l as qe,s as _e,f as Ve}from"./terminal-sessions-AmSgHklm.js";import{u as Ge,A as Ke}from"./Provider-cJCdHAxu.js";import{o as Ue}from"./openContent-C6XO6kr5.js";import{p as Z}from"./model-Co0zkMIc.js";import{SessionRefScreen as Je}from"./SessionRefScreen-OkTY7Szg.js";import{F as we,A as Xe}from"./AddProjectForm-CpyytDf2.js";import{r as J,s as _}from"./project-overview-helpers-BQTc_Ous.js";import{u as Ze,e as Y,d as le,g as Qe,s as ce,a as de,f as Ye,h as Ne,b as es,j as ss,r as ts}from"./projects-inbox-Dzt_GQDv.js";import{f as ns}from"./cache-Dr0why2k.js";import{A as ue}from"./arrow-up-right-G6bJXxhK.js";import{S as ke}from"./search-DAyagUtF.js";import{C as is}from"./chevron-right-BYMV1511.js";import{E as as}from"./external-link-B1TI5yIt.js";import{F as os}from"./DocumentFocusViewer-B9vodVmG.js";import"./SpriteAvatar-DS6Tmyua.js";import"./agent-identity-BxCsXnDp.js";import"./colors-BtO5_zlx.js";import"./router-Cn_s9IGH.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./sse-CxXt4tqI.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-CHIuVKz7.js";import"./TextDocumentSurface-BWJCGBZf.js";import"./file-text-DcYSrI4v.js";import"./createLucideIcon-CFBn0Sdk.js";import"./code-xml-BFc3TMSm.js";import"./arrow-left-B-3GJ7ct.js";import"./scout-voice-CwbOz6EN.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-h1IdakpD.js";import"./MessageComposerSuggestions-FdVHnT_q.js";import"./NewChatComposer-Hd7pI5Ac.js";import"./runtime-picker--IW3cRry.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-d6PKL_KD.js";import"./index-CmwGCxUk.js";import"./conversation-model-CHwHZNw-.js";import"./NewChatOrigin-DmuJ32wa.js";import"./x-C8ayPBtj.js";import"./chevron-down-B3VVRJcV.js";import"./chunk-HRAB3GC3-dRd2eQMJ.js";import"./text-DsBWV_4k.js";import"./tail-events-BdvqZHLr.js";import"./BackToPicker-D1LV6Cqp.js";import"./ConversationScreen-B3l2m3JI.js";import"./ConversationComposer-Bf7Ga_49.js";import"./message-markup-CyRDLdOn.js";import"./mentions-agCGDgyA.js";import"./AgentDetailCard-BTiOmh-a.js";import"./AgentLiveActions-BJ5dIfL3.js";import"./terminal-takeover-BOFPRPjR.js";import"./eye-1J4yOUoG.js";import"./terminal-DJPUp_Qn.js";import"./message-visibility-kJM8XcSG.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-B_GXrKR0.js";import"./ConversationFeedRows-Cm1Lgo43.js";/* empty css */import"./ConversationPanels-BTBbEvrP.js";import"./use-reduced-motion-CYqhYqHO.js";import"./activity-CC8JzJNH.js";import"./message-circle-CJO-pi7b.js";import"./tail-display-BRcJltQa.js";import"./lane-edit-display-C_Aujldz.js";import"./ConversationStatus-BqhUHD85.js";import"./SessionObserve-yYA8Gy5s.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-B7KdvQvf.js";import"./lane-observe-BA3g9aVd.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-CaSZZP05.js";import"./ObserveTextFlow-CkMrtT8s.js";import"./SessionObserveEvidence-cHdjYOJe.js";import"./wrench-CvRjjByE.js";/* empty css */import"./agents-project-model-UYiamtrU.js";import"./model-IGCUEsMy.js";function pe(e){const t=e?.trim();if(!t)return null;const i=t.split(/[\\/]/u).filter(Boolean).at(-1)??t;return i.endsWith(".jsonl")?i.slice(0,-6):i}function rs(e){return e.surfaces.filter(t=>t.backend==="tmux")}function ls(e,t){return{terminalSessionId:e.id,terminalSurfaceKey:_e(t),sessionName:t.sessionName}}function cs(e,t){const i=pe(t.agentId),n=new Set(t.sessionRefs.map(pe).filter(r=>!!r)),o=i?.split(".",1)[0]??null;o?.startsWith("session-")&&n.add(o);for(const r of e){const a=rs(r).find(l=>n.has(l.sessionName));if(a)return ls(r,a)}return null}function ds(e,t){const i=ze(e.terminalSurfaceKey);return i?`scout://terminal?${new URLSearchParams({session:e.terminalSessionId,surface:qe(i),mode:t}).toString()}`:null}const us=1e4,ps=2e4,hs=6e4,ms=15e3,fs=45e3,js=["branch","unstaged","staged"];function ee(e){const t=()=>{document.visibilityState==="visible"&&e()};return window.addEventListener("focus",t),document.addEventListener("visibilitychange",t),()=>{window.removeEventListener("focus",t),document.removeEventListener("visibilitychange",t)}}function xs(e,t){const i=new Set;for(const n of[e,...t]){const o=n?.trim();o&&i.add(o.replace(/\/+$/u,""))}return[...i].slice(0,6)}function gs(e){return e.replace(/\/+$/u,"").split("/").pop()?.toLocaleLowerCase()??e.toLocaleLowerCase()}function bs(e,t,i){return e.path===t||i?.worktrees.some(o=>o.path===e.path)?!0:e.repo.split("/").pop()?.toLocaleLowerCase()===(i?.name.toLocaleLowerCase()??gs(t))}function Q(e){return e&&typeof e=="object"&&"name"in e&&e.name==="AbortError"?"The repository scan timed out.":e instanceof Error?e.message:String(e)}function vs(e,t=[]){const i=xs(e,t).join("\0"),n=p.useMemo(()=>i?i.split("\0"):[],[i]),[o,r]=p.useState(()=>ie()),[a,l]=p.useState(()=>De()),[c,g]=p.useState(!!(e&&!J(o,e))),[x,N]=p.useState(!!e),[S,j]=p.useState(!!e),[T,M]=p.useState(null),[y,F]=p.useState(null),[O,$]=p.useState(()=>new Map),[E,L]=p.useState(()=>new Map),[C,k]=p.useState(0),b=p.useRef(null),h=p.useCallback(()=>{b.current=null,k(f=>f+1)},[]);p.useEffect(()=>{if(!e){g(!1),M(null);return}let f=!1,v=!1,P=!0;const D=async()=>{if(v)return;v=!0,f||(g(!0),M(null));let B=null;try{let W=null;const H=C>0&&P;P=!1;try{W=await ae("standard",H,ms)}catch(R){B=Q(R)}if((!W||!J(W,e))&&b.current!==e){b.current=e;try{const R=await ae("expanded",H,fs);J(R,e)&&(W=R)}catch(R){B=Q(R)}}!f&&W&&r(R=>J(W,e)?W:R&&J(R,e)?R:W),!f&&!J(W,e)&&M(B??"Repo Watch did not include this project in its latest scan.")}finally{v=!1,f||g(!1)}};D();const u=window.setInterval(()=>{document.visibilityState==="visible"&&D()},us),I=ee(()=>{D()});return()=>{f=!0,window.clearInterval(u),I()}},[e,C]),p.useEffect(()=>{if(n.length===0){j(!1),L(new Map);return}let f=!1,v=!1,P=!0;const D=async()=>{if(v)return;v=!0,f||j(!0);const B=await Promise.allSettled(n.map(W=>ns(W,[...js],{force:C>0&&P,tier:"summary"})));if(P=!1,!f){const W=new Map,H=new Map;B.forEach((R,K)=>{const V=n[K];R.status==="fulfilled"?W.set(V,R.value.snapshot):H.set(V,Q(R.reason))}),$(R=>{const K=new Map(R);for(const V of n)K.delete(V);for(const[V,te]of W)K.set(V,te);return K}),L(H),j(!1)}v=!1};D();const u=window.setInterval(()=>{document.visibilityState==="visible"&&D()},ps),I=ee(()=>{D()});return()=>{f=!0,window.clearInterval(u),I()}},[n,C]),p.useEffect(()=>{if(n.length===0){N(!1),F(null);return}let f=!1,v=!1;const P=async()=>{if(!v){v=!0;try{const I=await Oe(n);f||(l(I),F(null))}catch(I){f||F(Q(I))}finally{v=!1,f||N(!1)}}};N(!0),F(null),P();const D=window.setInterval(()=>{document.visibilityState==="visible"&&P()},hs),u=ee(()=>{P()});return()=>{f=!0,window.clearInterval(D),u()}},[n,C]);const d=p.useMemo(()=>J(o,e),[e,o]),m=p.useMemo(()=>e?(a?.pullRequests??[]).filter(f=>bs(f,e,d)):[],[d,e,a]),A=p.useMemo(()=>{const f=a?.paths.some(v=>n.includes(v))?a.warnings:[];return y?[y,...f]:f},[n,y,a]);return{project:d,pullRequests:m,pullRequestsLoading:x,pullRequestWarnings:A,repoLoading:c,repoError:T,diffSnapshots:O,diffErrors:E,diffLoading:S,refresh:h}}function ws(e,t){return e.thread===t.thread&&e.crossProject===t.crossProject&&e.selected===t.selected&&e.cursor===t.cursor&&e.nowMs===t.nowMs&&e.workLabel===t.workLabel}const Ns=p.memo(function({thread:t,crossProject:i,selected:n,cursor:o,nowMs:r,onSelect:a,onOpen:l,rowRef:c,workLabel:g}){return s.jsxs("button",{ref:c,type:"button",className:"pi-row","data-state":t.group,"data-selected":n||void 0,"data-cursor":o||void 0,onClick:a,onDoubleClick:l,children:[s.jsx("span",{className:"pi-rowDot","aria-hidden":!0}),s.jsxs("span",{className:"pi-rowBody",children:[s.jsx("span",{className:"pi-rowWork",title:t.work,children:g??t.work}),s.jsxs("span",{className:"pi-rowAttr",children:[s.jsx("span",{className:"pi-rowAvatar",children:s.jsx(Fe,{agent:{name:t.agentName,harness:t.harness,state:t.working?"in_turn":null},placement:"row",size:22})}),s.jsx("span",{className:"pi-rowAgent",title:t.agentName,children:t.agentName}),s.jsx("span",{className:"pi-rowHmark","aria-hidden":!0,children:s.jsx(be,{harness:t.harness,size:11})}),i?s.jsxs("span",{className:"pi-rowChip",title:`/${t.projectTitle}`,children:["/",t.projectTitle]}):t.branch?s.jsx("span",{className:"pi-rowBranch",title:t.branch,children:t.branch}):null]})]}),s.jsxs("span",{className:"pi-rowVitals",children:[t.working?s.jsx("span",{className:"pi-rowLiveTag",children:"live"}):null,s.jsx("span",{className:"pi-rowAgo",children:t.lastActivityAt?q(t.lastActivityAt,r):"—"}),t.contextPct!=null?s.jsxs("span",{className:"pi-rowCtx",children:[t.contextPct,"%"]}):null]}),s.jsxs("span",{className:"pi-rowOpen","aria-hidden":!0,children:[s.jsx("span",{children:"Open"}),s.jsx(is,{size:14,strokeWidth:1.8})]})]})},ws);function he({title:e,detail:t,tone:i="muted"}){return s.jsxs("div",{className:"pi-stateBlock","data-tone":i,role:i==="loading"?"status":"note",children:[s.jsx("span",{className:"pi-statePulse","aria-hidden":!0}),s.jsx("span",{className:"pi-stateTitle",children:e}),t?s.jsx("span",{className:"pi-stateDetail",children:t}):null]})}function ks({rows:e=7}){return s.jsxs("div",{className:"pi-loadingRows","aria-hidden":"true",children:[s.jsxs("div",{className:"pi-sectionHead pi-sectionHead--loading",children:[s.jsx("span",{className:"pi-loadingLine pi-loadingLine--label"}),s.jsx("span",{className:"pi-loadingLine pi-loadingLine--count"})]}),Array.from({length:e},(t,i)=>s.jsxs("div",{className:"pi-row pi-row--loading",children:[s.jsx("span",{className:"pi-rowDot"}),s.jsxs("span",{className:"pi-rowBody",children:[s.jsx("span",{className:"pi-loadingLine pi-loadingLine--title"}),s.jsx("span",{className:"pi-loadingLine pi-loadingLine--meta"})]}),s.jsx("span",{className:"pi-rowVitals",children:s.jsx("span",{className:"pi-loadingLine pi-loadingLine--time"})})]},i))]})}function Ss({route:e,navigate:t,slug:i,model:n,mode:o,repoProject:r}){const a=n.projects.find(y=>y.slug===i)??null,l=Y(n.threads,i),c=l.filter(y=>y.kind==="agent"),g=a?.title??i,x=a?.root??null,N=(a?.agentCount??c.length)>1,S=e.machineId?{machineId:e.machineId}:{},j={view:"agents-v2",projectSlug:i,...S},T=ys(a?.needs??0,a?.working??0,l.length),M=r?.worktrees.length??a?.worktreeCount??0;return s.jsxs("header",{className:"pi-projectHead",children:[s.jsx("div",{className:"pi-projectHeadTop",children:s.jsxs("div",{className:"pi-projectIdent",children:[s.jsx("h1",{className:"pi-projectTitle",children:g}),s.jsxs("div",{className:"pi-projectMeta",children:[x?s.jsx("span",{title:x,children:_(x)}):null,s.jsx("span",{className:"pi-projectDigest",children:T})]})]})}),s.jsxs("div",{className:"pi-projectFacets","aria-label":"Project sections",children:[s.jsx("button",{type:"button",className:"pi-projectFacet","data-selected":o==="overview"||void 0,onClick:()=>t(j),children:s.jsx("span",{children:"Overview"})}),s.jsxs("button",{type:"button",className:"pi-projectFacet","data-selected":o==="sessions"||void 0,onClick:()=>t({...j,indexView:"sessions"}),children:[s.jsx("span",{children:"Sessions"}),s.jsx("b",{children:a?.sessionCount??0})]}),N?s.jsxs("button",{type:"button",className:"pi-projectFacet","data-selected":o==="agents"||void 0,onClick:()=>t({...j,indexView:"agents"}),children:[s.jsx("span",{children:"Agents"}),s.jsx("b",{children:a?.agentCount??c.length})]}):null,s.jsxs("button",{type:"button",className:"pi-projectFacet",title:"Open worktrees in Repos",onClick:()=>t({view:"repos",...x?{root:x}:{},...S}),children:[s.jsx("span",{children:"Worktrees"}),s.jsx("b",{children:M}),s.jsx(ue,{className:"pi-projectFacetOut",size:11,strokeWidth:2,"aria-hidden":!0})]}),s.jsxs("button",{type:"button",className:"pi-projectFacet",disabled:!x,title:x?"Open this project's AGENTS.md":"No project root known",onClick:()=>t({view:"code",project:i,path:"AGENTS.md"}),children:[s.jsx("span",{children:"Rules"}),s.jsx("b",{children:x?"set":"—"}),s.jsx(ue,{className:"pi-projectFacetOut",size:11,strokeWidth:2,"aria-hidden":!0})]})]})]})}function ys(e,t,i){if(i===0)return s.jsx("span",{children:"No conversations yet."});const n=[];return t>0&&n.push(s.jsxs("b",{children:[t," moving"]},"w")),e>0&&n.push(s.jsxs("b",{children:[e," needs you"]},"n")),n.push(s.jsxs("span",{children:[i," conversation",i===1?"":"s"]},"t")),n.reduce((o,r,a)=>(a>0&&o.push(s.jsx("span",{children:" · "},`sep${a}`)),o.push(r),o),[])}function Se(e){if(e.length<=18)return e;const t=e.match(/^([0-9a-f]{8})-[0-9a-f-]{27,}$/iu);return t?t[1]:`${e.slice(0,10)}…${e.slice(-5)}`}function Cs(e,t){return`${t?0:e.projects.length} tracked`}function As({route:e,navigate:t,projects:i}){const{onboarding:n,refreshOnboarding:o,reload:r}=Ge(),a=Rs(n?.defaultHarness),[l,c]=p.useState(""),[g,x]=p.useState(""),[N,S]=p.useState(a),[j,T]=p.useState(!1),[M,y]=p.useState(null),[F,O]=p.useState(null),[$,E]=p.useState(null);p.useEffect(()=>{S(a)},[a]);const L=p.useMemo(()=>Ts(i),[i]),C=p.useMemo(()=>Ls(L,l),[l,L]),k=p.useMemo(()=>L.find(u=>u.slug===g)??fe(L,l),[l,L,g]),b=l.trim(),h=Ms(b)&&!fe(L,b),d=k??(!h&&b?C[0]??null:null),m=d?"Open project":h?"Create project":"Find project",A=!!(d||h||b);p.useEffect(()=>{g&&(L.some(u=>u.slug===g)||x(""))},[L,g]),p.useEffect(()=>{if(!$)return;const u=L.find(I=>Es(I,$));u&&(E(null),t(me(e,u.slug)))},[$,t,L,e]);const f=u=>{x(u.slug),c(u.title),y(null),O(null)},v=u=>{t(me(e,u.slug))},P=async u=>{T(!0),y(null),O(null);try{await $e("/api/onboarding/project",{method:"POST",body:JSON.stringify({contextRoot:u,sourceRoots:[u],defaultHarness:N})}),E(u),O("Project created. Refreshing inventory."),x(""),c(""),ts(),await Promise.all([o(),r()])}catch(I){y(I instanceof Error?I.message:"Could not create project.")}finally{T(!1)}},D=u=>{if(u.preventDefault(),!j){if(d){v(d);return}if(h){P(b);return}if(b){y("No project matches that search. Paste a repo path to create one.");return}y("Choose a project or paste a repo path.")}};return s.jsxs("div",{className:"pi-zero",children:[s.jsxs("div",{className:"pi-zeroHead",children:[s.jsxs("span",{className:"pi-zeroKicker",children:[s.jsx(we,{size:13,strokeWidth:1.9,"aria-hidden":!0}),"Projects"]}),s.jsx("h2",{children:"Pick a project to start."})]}),s.jsxs("form",{className:"pi-zeroComposer",onSubmit:D,children:[s.jsxs("div",{className:"pi-zeroBar",children:[s.jsxs("label",{className:"pi-zeroSelect",children:[s.jsx(ke,{size:13,strokeWidth:1.8,"aria-hidden":!0}),s.jsxs("select",{value:g,"aria-label":"Choose project",onChange:u=>{const I=L.find(B=>B.slug===u.currentTarget.value);I?f(I):x("")},children:[s.jsx("option",{value:"",children:"Choose project"}),L.slice(0,80).map(u=>s.jsx("option",{value:u.slug,children:u.title},u.slug))]})]}),s.jsx("div",{className:"pi-zeroHarness",role:"group","aria-label":"Default harness",children:["claude","codex"].map(u=>s.jsx("button",{type:"button","data-on":N===u||void 0,onClick:()=>S(u),children:u==="claude"?"Claude":"Codex"},u))})]}),s.jsxs("div",{className:"pi-zeroInputRow",children:[s.jsx("textarea",{value:l,rows:2,placeholder:"Find project or paste /path/to/repo","aria-label":"Find or create project",onChange:u=>{c(u.currentTarget.value),x(""),y(null),O(null)},onKeyDown:u=>{u.key==="Enter"&&!u.shiftKey&&(u.preventDefault(),u.currentTarget.form?.requestSubmit())}}),s.jsxs("button",{type:"submit",className:"pi-zeroSend",disabled:j||!A,title:m,children:[s.jsx(Ke,{size:15,strokeWidth:2,"aria-hidden":!0}),s.jsx("span",{children:j?"Working":m})]})]}),C.length>0?s.jsx("div",{className:"pi-zeroMatches","aria-label":"Matching projects",children:C.map(u=>s.jsxs("button",{type:"button",className:"pi-zeroMatch","data-selected":k?.slug===u.slug||void 0,onClick:()=>f(u),onDoubleClick:()=>v(u),children:[s.jsxs("span",{className:"pi-zeroMatchMain",children:[s.jsxs("span",{className:"pi-zeroMatchTitle",children:["/",u.title]}),s.jsx("span",{className:"pi-zeroMatchRoot",title:u.root??void 0,children:u.root?_(u.root):u.slug})]}),s.jsx("span",{className:"pi-zeroMatchMeta",children:Is(u)})]},u.slug))}):b?s.jsx("div",{className:"pi-zeroEmpty",children:"No project matches."}):null,M?s.jsx("div",{className:"pi-zeroError",children:M}):null,F?s.jsx("div",{className:"pi-zeroStatus",children:F}):null]})]})}function Rs(e){return e==="codex"?"codex":"claude"}function me(e,t){return{view:"agents-v2",projectSlug:t,...e.showEphemeral?{showEphemeral:!0}:{},...e.machineId?{machineId:e.machineId}:{}}}function Ts(e){return e.map(t=>({slug:t.slug,title:t.title,root:t.root,agentCount:t.agentCount,sessionCount:t.sessionCount,lastActivityAt:t.lastActivityAt})).sort((t,i)=>i.lastActivityAt-t.lastActivityAt||i.agentCount-t.agentCount||i.sessionCount-t.sessionCount||t.title.localeCompare(i.title))}function Ls(e,t){const i=z(t);return i?e.map(n=>({option:n,score:Ps(n,i)})).filter(n=>n.score!==null).sort((n,o)=>n.score-o.score||o.option.lastActivityAt-n.option.lastActivityAt||n.option.title.localeCompare(o.option.title)).slice(0,6).map(n=>n.option):e.slice(0,6)}function fe(e,t){const i=z(t);return i?e.find(n=>{const o=z(n.root??""),r=z(n.root?Z(n.root):"");return z(n.title)===i||z(n.slug)===i||o===i||r===i||z(n.root?_(n.root):"")===i})??null:null}function Ps(e,t){const i=z(e.title),n=z(e.slug),o=z(e.root??""),r=z(e.root?Z(e.root):"");return i===t||n===t||o===t||r===t?0:i.startsWith(t)||n.startsWith(t)||r.startsWith(t)?1:i.includes(t)||n.includes(t)||r.includes(t)?2:o.includes(t)?3:null}function z(e){return e.trim().toLowerCase().replace(/^~(?=\/)/u,"").replace(/\s+/g," ")}function Ms(e){const t=e.trim();return/^(~\/|\/|\.{1,2}\/)/u.test(t)||t.includes("/")}function Es(e,t){const i=z(t);return i?[e.root??"",e.root?_(e.root):"",e.root?Z(e.root):"",e.slug,e.title].map(z).some(o=>o===i||o.endsWith(i)):!1}function Is(e){return[je(e.agentCount,"agent"),je(e.sessionCount,"session"),e.lastActivityAt?q(e.lastActivityAt):null].filter(Boolean).join(" · ")}function je(e,t){return`${e} ${t}${e===1?"":"s"}`}function Ws(e,t){return t.sessionId?e.find(i=>i.sessionId===t.sessionId||i.conversationId===t.sessionId||i.id===t.sessionId)??null:null}function xe(e){return/^native:process:/iu.test(e??"")}function Fs(e){return e.startsWith("/")||e.startsWith("~/")||e.includes("/")&&/\.(jsonl?|events)$/i.test(e)}function ye(e,t,i){const n=e?.trim()??"";return!n||Fs(n)?t:n}function $s({session:e,sessionRef:t,threads:i,lookup:n,route:o,navigate:r,nowMs:a}){const[l,c]=p.useState(null),g=e?.agentName??o.selectedAgentId??o.agentId??"Session",x=e?.harness??"session",N=n?.kind==="observe"?n.observe.data:null,S=N?.metadata?.session,j=e?.lastActivityAt??n?.session?.lastMessageAt??null,[T,M,y]=p.useMemo(()=>[re(N),Ae(N,j),zs(N,j)],[N,j]),F=S?.gitBranch??n?.session?.currentBranch??e?.branch??null,O=S?.model??null,$=S?.turnCount??N?.metadata?.usage?.assistantMessages??(n?.kind==="conversation"?n.session.messageCount:null),E=M?q(M,a):e?.lastActivityAt?q(e.lastActivityAt,a):"—",L=e?.working?`live · last ${E}`:E!=="—"?`last ${E}`:"trace resolving",C=ye(e?.work,g),k=Se(t),b=n?.session??null,h=n?.kind==="observe"?n.observe.agentId??b?.agentId??e?.agentId:b?.agentId??e?.agentId,d=n?.kind==="observe"?n.observe.sessionId:b?.harnessSessionId,m=[g,x,O,F,T?`started ${He(T)}`:null,y,$!=null?`turn ${w($)}`:null,k].filter(v=>!!v&&v!=="—");p.useEffect(()=>{let v=!0;return c(null),!h&&!d&&!t?()=>{v=!1}:(Ve({includeDiscovered:!0}).then(P=>{v&&c(cs(P,{agentId:h,sessionRefs:[t,d,e?.sessionId]}))}).catch(()=>{v&&c(null)}),()=>{v=!1})},[e?.sessionId,t,h,d]);const A=()=>{l&&Ue(r,{view:"terminal",terminalSessionId:l.terminalSessionId,terminalSurfaceKey:l.terminalSurfaceKey,mode:"takeover"},{returnTo:o})},f=l?ds(l,"takeover"):null;return s.jsxs("section",{className:"pi-sessionOverview","aria-label":"Session overview",children:[s.jsxs("section",{className:"pi-sessionMasthead","data-state":e?.working?"working":"recent",children:[s.jsxs("div",{className:"pi-sessionMastTop",children:[s.jsx("span",{className:"pi-sessionCrumb",children:"Sessions ▸"}),s.jsx("h2",{className:"pi-sessionHeadline",title:C,children:C}),s.jsxs("span",{className:"pi-sessionState",children:[e?.working?s.jsx("span",{className:"pi-sessionLiveDot","aria-hidden":!0}):null,L]})]}),s.jsx("div",{className:"pi-sessionMeta",children:m.map((v,P)=>s.jsxs("span",{title:P===m.length-1?t:v,children:[P===1?s.jsx(be,{harness:x,size:11}):null,v]},`${v}:${P}`))}),l?s.jsxs("div",{className:"pi-sessionTerminalActions","aria-label":"tmux terminal actions",children:[s.jsxs("span",{className:"pi-sessionTerminalName",title:l.sessionName,children:["tmux · ",l.sessionName]}),s.jsx("button",{type:"button",onClick:A,children:"Open in web terminal"}),f?s.jsxs("a",{href:f,children:["Open in native terminal",s.jsx(as,{size:11,strokeWidth:1.8,"aria-hidden":!0})]}):null]}):null]}),s.jsx(Js,{lookup:n,session:e,threads:i,nowMs:a,route:o,navigate:r})]})}function Ds({session:e,sessionRef:t,threads:i,route:n,navigate:o,nowMs:r}){const[a,l]=p.useState(null);return p.useEffect(()=>{l(null)},[t]),s.jsx("main",{className:"pi-sessionDetail","aria-label":"Selected session",children:s.jsxs("div",{className:"pi-sessionContent",children:[s.jsx($s,{session:e,sessionRef:t,threads:i,lookup:a,route:n,navigate:o,nowMs:r}),s.jsx(Je,{sessionRef:t,navigate:o,showObserveRail:!1,onLookup:l})]})})}function w(e){return typeof e!="number"||!Number.isFinite(e)?"—":Math.abs(e)<1e3?e.toLocaleString("en-US"):Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}).format(e).toLowerCase()}function Ce(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?"—":`${w(e)} tok`}function G(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?e:null}function Os(e){const t=G(e?.contextInputTokens),i=G(e?.contextWindowTokens);return t===null||i===null?null:Math.max(0,Math.min(1,t/i))}function Bs(e){const t=[{key:"input",label:"input",value:G(e?.inputTokens)??0},{key:"cache-read",label:"cache rd",value:G(e?.cacheReadInputTokens)??0},{key:"cache-write",label:"cache wr",value:G(e?.cacheCreationInputTokens)??0},{key:"output",label:"output",value:G(e?.outputTokens)??0},{key:"reasoning",label:"reasoning",value:G(e?.reasoningOutputTokens)??0}].filter(r=>r.value>0),i=t.reduce((r,a)=>r+a.value,0),n=t.filter(r=>r.key!=="reasoning"||i>0&&r.value/i>=.02);if(n.length>0)return n;const o=G(e?.totalTokens);return o!==null?[{key:"total",label:"total",value:o}]:[]}function Hs({buckets:e}){const t=e.reduce((i,n)=>i+n.value,0);return e.length===0?null:s.jsxs("div",{className:"pi-sessionGlanceTokens","aria-label":"Token usage",children:[s.jsx("div",{className:"pi-sessionGlanceTokenBars",children:e.map(i=>s.jsx("span",{className:"pi-sessionGlanceTokenSeg","data-kind":i.key,style:{flexGrow:t>0?Math.max(.035,i.value/t):1,flexBasis:0},title:`${i.label}: ${Ce(i.value)}`},i.key))}),s.jsx("div",{className:"pi-sessionGlanceTokenLegend",children:e.map(i=>s.jsxs("span",{children:[s.jsx("i",{"data-kind":i.key,"aria-hidden":!0}),i.label," ",s.jsx("b",{children:w(i.value)})]},i.key))})]})}function re(e){const t=se(e?.metadata?.session?.sessionStart);if(t!==null)return t;for(const i of e?.events??[]){const n=se(i.at);if(n!==null)return n}return null}function Ae(e,t){for(let o=(e?.events.length??0)-1;o>=0;o-=1){const r=se(e?.events[o]?.at);if(r!==null)return r}const i=re(e),n=e?.events.at(-1)?.t;return i!==null&&typeof n=="number"&&Number.isFinite(n)?i+n*1e3:se(t)}function zs(e,t){const i=re(e),n=Ae(e,t);if(i!==null&&n!==null)return oe(Math.max(0,n-i))||"—";const o=e?.events.at(-1)?.t;return typeof o=="number"&&Number.isFinite(o)&&oe(o*1e3)||"—"}function oe(e){if(typeof e!="number"||!Number.isFinite(e)||e<0)return"";const t=Math.floor(e/1e3);if(t<60)return`${t}s`;const i=Math.floor(t/60);if(i<60)return`${i}m`;const n=Math.floor(i/60),o=i%60;if(n<48)return o>0?`${n}h ${o}m`:`${n}h`;const r=Math.floor(n/24),a=n%24;return a>0?`${r}d ${a}h`:`${r}d`}function qs(e){const t=e?.metadata?.topology;if(!t)return null;const i=t.agents.length,n=t.agents.filter(l=>l.role!=="lead").length,o=t.groups.filter(l=>l.kind==="workflow").length,r=t.tasks.length,a=[];return n>0?a.push(`${n} worker${n===1?"":"s"}`):i>0&&a.push(`${i} agent${i===1?"":"s"}`),o>0&&a.push(`${o} workflow${o===1?"":"s"}`),r>0&&a.push(`${r} task${r===1?"":"s"}`),a.length?a.join(" · "):null}function _s(e){return[...e].sort((t,i)=>ge(i.state)-ge(t.state)||i.touches-t.touches||i.lastT-t.lastT||t.path.localeCompare(i.path)).slice(0,5).map(t=>({path:t.path,kind:t.state,detail:[t.touches>1?`${w(t.touches)} touches`:"1 touch",t.lastT>0?`last ${oe(t.lastT*1e3)}`:null].filter(Boolean).join(" · ")}))}function ge(e){switch(e){case"created":return 3;case"modified":return 2;case"read":return 1}}function Vs(e){const t=new Map;for(const i of e){if(i.kind!=="tool")continue;const n=Gs(i.tool||i.text),o=t.get(n)??{count:0,samples:[]};o.count+=1;const r=i.arg||i.detail||i.text;r&&o.samples.length<2&&o.samples.push(r),t.set(n,o)}return[...t.entries()].sort((i,n)=>n[1].count-i[1].count||i[0].localeCompare(n[0])).slice(0,5).map(([i,n])=>({name:i,count:n.count,detail:n.samples.join(" · ")||`${w(n.count)} uses`}))}function Gs(e){return(e.trim().split(/\s+/u)[0]??"tool").replace(/[_-]+/gu," ").toLowerCase()}function Ks({usage:e,contextPct:t,topology:i,workspace:n,projectRoot:o,branch:r}){const a=[];return t!==null&&a.push({label:"Context",value:`${t}%`,detail:t>=80?"approaching limit":"within window",tone:t>=80?"warn":void 0}),(e?.serviceTier||e?.planType||e?.speed)&&a.push({label:"Budget",value:e.serviceTier??e.planType??e.speed??"usage",detail:[e.planType,e.speed].filter(Boolean).join(" · ")||"provider metadata"}),n&&o&&n!==o?a.push({label:"Worktree",value:_(n),detail:"session cwd differs from project root",tone:"warn"}):r&&a.push({label:"Repo",value:r,detail:"session branch"}),i&&a.push({label:"Topology",value:i,detail:"observed harness hierarchy"}),(e?.webSearchRequests||e?.webFetchRequests)&&a.push({label:"Network",value:`${w((e.webSearchRequests??0)+(e.webFetchRequests??0))} req`,detail:[e.webSearchRequests?`${w(e.webSearchRequests)} search`:null,e.webFetchRequests?`${w(e.webFetchRequests)} fetch`:null].filter(Boolean).join(" · ")}),a.slice(0,4)}function Us({session:e,threads:t,nowMs:i}){return t.filter(n=>n.kind==="agent").filter(n=>n.agentId!==e?.agentId||n.work!==e?.work).sort((n,o)=>Number(o.working)-Number(n.working)||o.lastActivityAt-n.lastActivityAt).slice(0,4).map(n=>{const o=!!(e?.branch&&n.branch===e.branch),r=!!(e?.agentName&&n.agentName===e.agentName);return{thread:n,title:ye(n.work,n.agentName,n.id),channel:n.conversationId?Se(n.conversationId):n.agentName,state:n.needs?"needs":n.working?"working":"recent",time:n.lastActivityAt?q(n.lastActivityAt,i):"—",participants:n.agentName,why:o?"same branch":r?"same agent":n.working?"active in project":"project thread"}})}function X({label:e,value:t,title:i,detail:n}){return s.jsxs("span",{className:"pi-sessionGlanceField",title:i,children:[s.jsx("span",{children:e}),s.jsx("b",{children:t}),n?s.jsx("small",{children:n}):null]})}function Js({lookup:e,session:t,threads:i,nowMs:n,route:o,navigate:r}){const[a,l]=p.useState(!1),c=p.useMemo(()=>{const h=e?.kind==="observe"?e.observe.data:null,d=h?.metadata?.session,m=h?.metadata?.usage,A=h?.events??[],f=h?.files??[],v=d?.turnCount??m?.assistantMessages??(e?.kind==="conversation"?e.session.messageCount:null),P=A.filter(U=>U.kind==="tool").length,D=f.filter(U=>U.state==="created").length,u=f.filter(U=>U.state==="modified").length,I=f.filter(U=>U.state==="read").length,B=D+u,W=Os(m),H=W!==null?Math.round(W*100):null,R=d?.cwd??e?.session?.workspaceRoot??t?.projectRoot??null,K=d?.gitBranch??e?.session?.currentBranch??t?.branch??null,V=qs(h),te=Ce(m?.totalTokens??(typeof m?.inputTokens=="number"||typeof m?.outputTokens=="number"?(m?.inputTokens??0)+(m?.outputTokens??0):null)),Te=Bs(m),Le=B>0?[u>0?`${w(u)} mod`:null,D>0?`${w(D)} new`:null].filter(Boolean).join(" · "):I>0?"read-only":"no file trace",Pe=f.length>0?`${w(f.length)} touched`:"—",Me=_s(f),Ee=Vs(A),Ie=Ks({usage:m,contextPct:H,topology:V,workspace:R,projectRoot:t?.projectRoot,branch:K}),We=Us({session:t,threads:i,nowMs:n});return{turnCount:v,toolCount:P,editCount:B,fileCountLabel:Pe,fileStateLabel:Le,workspace:R,contextPct:H,showContext:H!==null,contextWarn:H!==null&&H>=80,tokenTotal:te,buckets:Te,fileSignals:Me,toolSignals:Ee,contextSignals:Ie,threadSignals:We,projectRoot:t?.projectRoot??null}},[e,t,i,n]),{turnCount:g,toolCount:x,editCount:N,fileCountLabel:S,fileStateLabel:j,workspace:T,contextPct:M,showContext:y,contextWarn:F,tokenTotal:O,buckets:$,fileSignals:E,toolSignals:L,contextSignals:C,threadSignals:k,projectRoot:b}=c;return s.jsxs("section",{className:"pi-sessionGlance","aria-label":"Session glance",children:[s.jsxs("div",{className:"pi-sessionVitals","aria-label":"Session vitals",children:[s.jsx(X,{label:"Turns",value:w(g)}),s.jsx(X,{label:"Tools",value:w(x)}),s.jsx(X,{label:"Edits",value:w(N)}),s.jsx(X,{label:"Files",value:S,detail:j!=="no file trace"?j:null}),T&&b&&T!==b?s.jsx(X,{label:"Worktree",value:_(T),title:T}):null,y?s.jsxs("span",{className:"pi-sessionContextVital",title:"Context window usage",children:[s.jsx("span",{children:"Ctx"}),s.jsx("span",{className:"pi-sessionContextBar","aria-hidden":!0,children:s.jsx("span",{"data-warn":F||void 0,style:{width:`${M}%`}})}),s.jsxs("b",{"data-warn":F||void 0,children:[M,"%"]})]}):null,$.length>0?s.jsxs("button",{type:"button",className:"pi-sessionTokenToggle","aria-expanded":a,onClick:()=>l(h=>!h),children:[s.jsx("span",{children:"Tokens"}),s.jsx("b",{children:O}),s.jsx("i",{children:a?"▾":"▸"})]}):null]}),a&&$.length>0?s.jsx(Hs,{buckets:$}):null,s.jsx(Xs,{files:E,tools:L,context:C,threads:k,route:o,navigate:r})]})}function Xs({files:e,tools:t,context:i,threads:n,route:o,navigate:r}){return s.jsxs("section",{className:"pi-sessionSignals","aria-label":"Session work signals",children:[s.jsxs("div",{className:"pi-sessionSignalCol",children:[s.jsxs("div",{className:"pi-sessionSignalHead",children:[s.jsx("span",{children:"Files"}),s.jsx("b",{children:w(e.length)})]}),e.length>0?s.jsx("div",{className:"pi-sessionFileList",children:e.map(a=>s.jsxs("div",{className:"pi-sessionFileRow",children:[s.jsx("span",{"data-kind":a.kind,children:a.kind}),s.jsx("code",{title:a.path,children:a.path}),s.jsx("small",{children:a.detail})]},`${a.kind}:${a.path}`))}):s.jsx("span",{className:"pi-sessionSignalEmpty",children:"No file trace yet."})]}),s.jsxs("div",{className:"pi-sessionSignalCol",children:[s.jsx("div",{className:"pi-sessionSignalHead",children:s.jsx("span",{children:"Tools · Context · Topology"})}),t.length>0?s.jsx("div",{className:"pi-sessionToolGrid",children:t.map(a=>s.jsxs("span",{className:"pi-sessionToolPill",title:a.detail,children:[s.jsx("b",{children:a.name}),s.jsx("em",{children:w(a.count)})]},a.name))}):null,i.length>0?s.jsx("div",{className:"pi-sessionContextList",children:i.map(a=>s.jsxs("div",{className:"pi-sessionContextRow",children:[s.jsx("span",{children:a.label}),s.jsx("b",{"data-tone":a.tone,children:a.value}),s.jsx("small",{children:a.detail})]},`${a.label}:${a.value}`))}):t.length===0?s.jsx("span",{className:"pi-sessionSignalEmpty",children:"Trace metadata is still resolving."}):null]}),s.jsxs("div",{className:"pi-sessionSignalCol",children:[s.jsxs("div",{className:"pi-sessionSignalHead",children:[s.jsx("span",{children:"Recent threads"}),s.jsx("b",{children:w(n.length)})]}),n.length>0?s.jsx("div",{className:"pi-sessionThreadList",children:n.map(a=>s.jsxs("button",{type:"button",className:"pi-sessionThreadRow",onClick:()=>r(Ne(a.thread,o)),children:[s.jsx("span",{className:"pi-sessionThreadTitle",title:a.title,children:a.title}),s.jsxs("span",{className:"pi-sessionThreadMeta",children:[s.jsx("b",{children:a.channel}),s.jsx("em",{children:a.state}),s.jsx("small",{children:a.time})]}),s.jsxs("span",{className:"pi-sessionThreadWhy",children:[a.participants," · ",a.why]})]},a.thread.id))}):s.jsx("span",{className:"pi-sessionSignalEmpty",children:"No recent agent threads."})]})]})}function ne(e){return!e||e==="—"||/^\d+\s+branches$/iu.test(e)?null:e}function Re(e,t,i,n){const o=new Map,r=(l,c)=>{const g=l??e,x=ne(c),N=g??"project",S=o.get(N);if(S)return!S.branch&&x&&(S.branch=x),S;const j={key:N,root:g,branch:x,sessions:0,work:0,moving:0,lastActivityAt:0,repoWatch:null};return o.set(N,j),j};for(const l of t){const c=r(l.root,l.branch);l.working&&(c.moving+=1),c.lastActivityAt=Math.max(c.lastActivityAt,l.lastActivityAt)}const a=(l,c)=>{const g=l??e,x=o.get(g??"project");return x||(t.length>0?o.get(e??"")??o.values().next().value:r(l,c))};for(const l of i){const c=a(l.workspaceRoot??l.projectRoot,l.branch);c.sessions+=1,l.working&&(c.moving+=1,c.branch=ne(l.branch)??c.branch),c.lastActivityAt=Math.max(c.lastActivityAt,l.lastActivityAt)}for(const l of n){const c=a(l.workspaceRoot??l.projectRoot,l.branch);c.work+=1,l.working&&(c.moving+=1,c.branch=ne(l.branch)??c.branch),c.lastActivityAt=Math.max(c.lastActivityAt,l.lastActivityAt)}return o.size===0&&r(e,null),[...o.values()].sort((l,c)=>c.moving-l.moving||c.lastActivityAt-l.lastActivityAt||(l.root??"").localeCompare(c.root??""))}function Zs(e){return e.worktrees.map(t=>({key:t.id,root:t.path,branch:t.branch.name,sessions:t.sessions.length,work:t.agents.length,moving:t.agents.some(Be)?1:0,lastActivityAt:t.lastCommitAt??0,repoWatch:t}))}function Qs({pullRequests:e,loading:t,warnings:i,onRefresh:n,nowMs:o}){return s.jsxs("section",{className:"pi-projectPullRequests","aria-label":"Open pull requests",children:[s.jsxs("div",{className:"pi-projectPullRequestsHead",children:[s.jsx("span",{children:"Open PRs"}),s.jsx("b",{children:t&&e.length===0?"…":w(e.length)})]}),e.length>0?s.jsx("div",{className:"pi-projectPullRequestList",children:e.slice(0,6).map(r=>{const a=r.updatedAt?Date.parse(r.updatedAt):Number.NaN;return s.jsxs("a",{className:"pi-projectPullRequest",href:r.url,target:"_blank",rel:"noreferrer",children:[s.jsxs("span",{className:"pi-projectPullRequestNumber",children:["#",r.number]}),s.jsx("b",{title:r.title,children:r.title}),s.jsxs("span",{className:"pi-projectPullRequestBranch",title:`${r.headRefName} → ${r.baseRefName}`,children:[r.headRefName," → ",r.baseRefName]}),s.jsx("em",{children:r.isDraft?"draft":"open"}),s.jsx("time",{children:Number.isFinite(a)?q(a,o):"updated"})]},r.id)})}):s.jsxs("div",{className:"pi-projectPullRequestState","data-loading":t||void 0,children:[s.jsx("span",{children:t?"Checking GitHub for open pull requests…":i[0]??"No open pull requests for this repository."}),!t&&i.length>0?s.jsx("button",{type:"button",onClick:n,children:"Retry"}):null]})]})}function Ys(e){const t=new Set;let i=0,n=0;const o=[];for(const r of e.layers){r.files.length>0&&o.push(r.kind);for(const a of r.files)t.add(a.newPath??a.oldPath??"unknown"),i+=a.additions??0,n+=a.deletions??0}return{additions:i,deletions:n,files:[...t],layers:o}}function et({additions:e,deletions:t}){return e+t===0?s.jsx("span",{className:"pi-projectWorktreeChurnBar","data-empty":!0}):s.jsxs("span",{className:"pi-projectWorktreeChurnBar","aria-label":`${e} additions and ${t} deletions`,children:[e>0?s.jsx("i",{"data-add":!0,style:{flexGrow:e}}):null,t>0?s.jsx("i",{"data-delete":!0,style:{flexGrow:t}}):null]})}function st({project:e,repoProject:t,repoLoading:i,repoError:n,diffSnapshots:o,diffErrors:r,diffLoading:a,pullRequests:l,pullRequestsLoading:c,pullRequestWarnings:g,onRepositoryRefresh:x,threads:N,sessions:S,route:j,navigate:T,nowMs:M}){const y=e?.root??S[0]?.projectRoot??N[0]?.projectRoot??null,F=N.length,O=e?.sessionCount??S.length,$=e?.agentCount??0,E=Math.max(e?.lastActivityAt??0,S[0]?.lastActivityAt??0,N[0]?.lastActivityAt??0),L=e?.branches.length?e.branches:[...new Set([...S.map(d=>d.branch),...N.map(d=>d.branch)].filter(d=>!!d&&d!=="—"&&d!=="main"))],C=t?.worktrees.length?Zs(t):Re(y,e?.worktrees??[],S,N),k=C.find(d=>d.moving>0&&d.branch)?.branch??C.find(d=>d.branch)?.branch??L[0]??"main",b=y?Z(y):e?.title??j.projectSlug??"project",h=C.find(d=>d.moving>0)?.key??C.find(d=>d.branch===k)?.key??C[0]?.key;return s.jsxs("main",{className:"pi-projectOverview","aria-label":"Project overview",children:[s.jsxs("section",{className:"pi-projectSnapshot","aria-label":"Project snapshot",children:[s.jsxs("div",{className:"pi-projectRepository",children:[s.jsxs("div",{className:"pi-projectRepositoryHead",children:[s.jsx("span",{children:"Repository"}),s.jsx(os,{size:13,strokeWidth:1.7,"aria-hidden":!0})]}),s.jsxs("div",{className:"pi-projectRepositoryIdentity",children:[s.jsx("b",{children:b}),s.jsx("span",{title:y??void 0,children:y?_(y):j.projectSlug??"project"})]}),s.jsxs("div",{className:"pi-projectRepositoryCurrent",children:[C.some(d=>d.moving>0)?s.jsx("span",{className:"pi-projectRepositoryPulse","aria-label":"Active now"}):null,s.jsxs("span",{children:[s.jsx("small",{children:"Current branch"}),s.jsx("b",{title:k,children:k})]}),s.jsx("time",{children:E?q(E,M):"no activity"})]}),O>0||$>0||F>0?s.jsxs("div",{className:"pi-projectRepositoryStats","aria-label":"Repository activity",children:[O>0?s.jsxs("span",{children:[s.jsx("b",{children:w(O)})," sessions"]}):null,$>0?s.jsxs("span",{children:[s.jsx("b",{children:w($)})," agents"]}):null,F>0?s.jsxs("span",{children:[s.jsx("b",{children:w(F)})," threads"]}):null]}):null]}),s.jsxs("div",{className:"pi-projectWorktrees",children:[s.jsxs("div",{className:"pi-projectWorktreesHead",children:[s.jsx("span",{children:"Worktree preview"}),s.jsx("b",{children:w(C.length)})]}),s.jsx("div",{className:"pi-projectWorktreeList",children:C.slice(0,6).map(d=>{const m=d.repoWatch,A=d.root?o.get(d.root)??null:null,f=A?Ys(A):null,v=m?ve(m):null,P=f?.additions??v?.add??0,D=f?.deletions??v?.del??0,u=f?.files.length??(m?Math.max(m.status.changedFiles,v?.files??0):0),I=!!(u>0||m&&(!m.status.clean||m.branch.ahead>0||m.branch.behind>0)),B=l.filter(R=>R.headRefName===d.branch),W=!!(d.root&&a&&!A&&!r.has(d.root)),H=d.root?r.get(d.root)??null:"No worktree path is available.";return s.jsxs("article",{className:"pi-projectWorktree","data-active":d.key===h||void 0,"data-stranded":I||void 0,children:[s.jsx("span",{className:"pi-projectWorktreeTop",children:s.jsx("b",{title:d.branch??"main",children:d.branch??"main"})}),s.jsx("em",{title:d.root??void 0,children:d.root?_(d.root):"workspace"}),A||m?s.jsxs("div",{className:"pi-projectWorktreeDiff","data-clean":!I||void 0,children:[I?s.jsxs(s.Fragment,{children:[s.jsxs("span",{className:"pi-projectWorktreeChurn",children:[s.jsxs("b",{className:"pi-projectWorktreeAdd",children:["+",w(P)]}),s.jsxs("b",{className:"pi-projectWorktreeDel",children:["−",w(D)]}),s.jsx(et,{additions:P,deletions:D})]}),s.jsxs("small",{children:[w(u)," changed"]})]}):s.jsx("small",{children:"clean"}),d.root?s.jsx("button",{type:"button",className:"pi-projectWorktreeOpenDiff",onClick:()=>T({view:"repo-diff",path:d.root}),children:"View diff"}):null]}):s.jsxs("div",{className:"pi-projectWorktreeDiff","data-pending":!0,children:[s.jsx("small",{children:W||i?"Reading worktree diff…":H??n??"No diff data returned."}),!W&&!i?s.jsx("button",{type:"button",className:"pi-projectWorktreeOpenDiff",onClick:x,children:"Retry"}):null]}),f&&f.files.length>0?s.jsxs("span",{className:"pi-projectWorktreeFiles",title:f.files.join(`
|
|
2
2
|
`),children:[f.files.slice(0,2).map(R=>Z(R)).join(" · "),f.files.length>2?` · +${f.files.length-2} more`:""]}):null,s.jsx("span",{className:"pi-projectWorktreeMeta",children:m?s.jsxs(s.Fragment,{children:[s.jsx("small",{children:m.branch.ahead>0||m.branch.behind>0?`${m.branch.ahead}↑ ${m.branch.behind}↓`:"synced"}),m.status.staged>0?s.jsxs("small",{children:[w(m.status.staged)," staged"]}):null,m.status.unstaged>0?s.jsxs("small",{children:[w(m.status.unstaged)," unstaged"]}):null,m.status.untracked>0?s.jsxs("small",{children:[w(m.status.untracked)," untracked"]}):null,m.status.conflicts>0?s.jsxs("small",{children:[w(m.status.conflicts)," conflicts"]}):null,f?.layers.map(R=>s.jsx("small",{children:R},R)),B.length>0?s.jsxs("small",{children:[B.length," PR",B.length===1?"":"s"]}):null]}):s.jsxs(s.Fragment,{children:[s.jsx("small",{children:d.lastActivityAt?q(d.lastActivityAt,M):"idle"}),s.jsxs("small",{children:[w(d.sessions)," sessions"]}),s.jsxs("small",{children:[w(d.work)," threads"]})]})})]},d.key)})}),C.length>6?s.jsxs("div",{className:"pi-projectWorktreeMore",children:["+",C.length-6," more worktrees"]}):null]})]}),s.jsx(Qs,{pullRequests:l,loading:c,warnings:g,onRefresh:x,nowMs:M})]})}const tt=8,nt=6,it=3e4,at=15e3;function ot(){const[e,t]=p.useState(()=>ie()),[i,n]=p.useState(()=>ie()===null);return p.useEffect(()=>{let o=!1,r=!1;const a=async()=>{if(!r){r=!0;try{const g=await ae("standard",!1,at);o||(t(g),n(!1))}catch{o||n(!1)}finally{r=!1}}};a();const l=window.setInterval(()=>{document.visibilityState==="visible"&&a()},it),c=ee(()=>{a()});return()=>{o=!0,window.clearInterval(l),c()}},[]),{snapshot:e,loading:i}}function rt(e){if(!e)return[];const t=[];for(const i of e.projects)for(const n of i.worktrees)n.status.changedFiles<=0&&n.branch.ahead<=0||t.push({projectName:i.name,projectRoot:i.root,worktree:n});return t.sort((i,n)=>n.worktree.status.changedFiles-i.worktree.status.changedFiles||(n.worktree.lastCommitAt??0)-(i.worktree.lastCommitAt??0)||i.projectName.localeCompare(n.projectName))}function lt({model:e,route:t,navigate:i,nowMs:n}){const[o,r]=p.useState(!1),a=t.machineId?{machineId:t.machineId}:{},l=t.showEphemeral?{showEphemeral:!0}:{},c=p.useMemo(()=>[...e.projects].sort((j,T)=>T.lastActivityAt-j.lastActivityAt||j.title.localeCompare(T.title)).slice(0,tt),[e.projects]),{snapshot:g,loading:x}=ot(),N=p.useMemo(()=>rt(g).slice(0,nt),[g]),S=j=>i({view:"agents-v2",projectSlug:j.slug,...a,...l});return s.jsxs("main",{className:"pi-meta","aria-label":"Projects overview",children:[s.jsxs("div",{className:"pi-metaShortcuts",children:[s.jsxs("button",{type:"button",className:"pi-shortcut","aria-expanded":o,onClick:()=>r(j=>!j),children:[s.jsx(we,{size:13,strokeWidth:1.8,"aria-hidden":!0}),"Add project"]}),s.jsxs("button",{type:"button",className:"pi-shortcut",onClick:()=>i({view:"search"}),children:[s.jsx(ke,{size:13,strokeWidth:1.8,"aria-hidden":!0}),"Search agents & sessions"]}),s.jsx("button",{type:"button",className:"pi-shortcut",onClick:()=>i({view:"sessions",...a}),children:"Browse sessions"})]}),o?s.jsx(Xe,{onClose:()=>r(!1)}):null,s.jsxs("section",{className:"pi-metaSection","aria-label":"Recent projects",children:[s.jsxs("div",{className:"pi-sectionHead",children:[s.jsx("span",{className:"pi-sectionLabel",children:"Recent projects"}),s.jsx("span",{className:"pi-sectionCount",children:e.projects.length})]}),c.map(j=>s.jsx(ct,{project:j,nowMs:n,onOpen:()=>S(j)},j.slug))]}),s.jsxs("section",{className:"pi-metaSection","aria-label":"Active diffs",children:[s.jsxs("div",{className:"pi-sectionHead",children:[s.jsx("span",{className:"pi-sectionLabel",children:"Active diffs"}),s.jsx("span",{className:"pi-sectionCount",children:N.length})]}),N.length>0?N.map(j=>s.jsx(dt,{diff:j,machineScope:a,navigate:i},j.worktree.id)):s.jsx("div",{className:"pi-metaEmpty",children:x?"Reading repositories…":"No uncommitted changes across your repos."})]})]})}function ct({project:e,nowMs:t,onOpen:i}){const n=e.needs>0,o=Math.max(e.liveSessionCount,e.working);return s.jsxs("button",{type:"button",className:"pi-recentRow","data-state":n?"needs":o>0?"live":void 0,onClick:i,children:[s.jsx("span",{className:"pi-recentDot","aria-hidden":!0}),s.jsxs("span",{className:"pi-recentMain",children:[s.jsxs("span",{className:"pi-recentTitle",children:["/",e.title]}),s.jsx("span",{className:"pi-recentRoot",children:e.root?_(e.root):"Discovered project"})]}),s.jsxs("span",{className:"pi-recentMeta",children:[n?s.jsxs("b",{children:[e.needs," needs you"]}):null,o>0?s.jsxs("span",{children:[o," live"]}):null,s.jsx("time",{children:e.lastActivityAt?q(e.lastActivityAt,t):"—"})]})]})}function dt({diff:e,machineScope:t,navigate:i}){const n=ve(e.worktree);return s.jsxs("div",{className:"pi-diffRow",children:[s.jsxs("button",{type:"button",className:"pi-diffMain",title:e.worktree.path,onClick:()=>i({view:"repos",root:e.projectRoot,...t}),children:[s.jsxs("span",{className:"pi-diffProject",children:["/",e.projectName]}),s.jsx("span",{className:"pi-diffBranch",children:e.worktree.branch.name??"main"})]}),s.jsxs("span",{className:"pi-diffChurn",children:[s.jsxs("b",{className:"pi-projectWorktreeAdd",children:["+",w(n.add)]}),s.jsxs("b",{className:"pi-projectWorktreeDel",children:["−",w(n.del)]}),s.jsxs("small",{children:[w(e.worktree.status.changedFiles)," changed"]})]}),s.jsx("button",{type:"button",className:"pi-projectWorktreeOpenDiff",onClick:()=>i({view:"repo-diff",path:e.worktree.path}),children:"View diff"})]})}function ut({project:e,threads:t,sessions:i,route:n,navigate:o,nowMs:r}){const a=e?.root??i[0]?.projectRoot??t[0]?.projectRoot??null,l=p.useMemo(()=>Re(a,e?.worktrees??[],i,t).map(g=>g.root).filter(g=>!!g),[e?.worktrees,a,i,t]),c=vs(a,l);return s.jsx(st,{project:e,repoProject:c.project,repoLoading:c.repoLoading,repoError:c.repoError,diffSnapshots:c.diffSnapshots,diffErrors:c.diffErrors,diffLoading:c.diffLoading,pullRequests:c.pullRequests,pullRequestsLoading:c.pullRequestsLoading,pullRequestWarnings:c.pullRequestWarnings,onRepositoryRefresh:c.refresh,threads:t,sessions:i,route:n,navigate:o,nowMs:r})}function Xn({route:e,navigate:t,zeroPreview:i=!1}){const{model:n,nowMs:o,loading:r,error:a}=Ze(e),l=!!e.projectSlug,c=l&&!xe(e.sessionId)?e.sessionId??null:null,g=p.useMemo(()=>c?Ws(n.sessions,e):null,[n.sessions,e,c]),x=l?e.indexView==="agents"?"agents":e.indexView==="sessions"?"sessions":"overview":"overview",N=l?n.projects.find(k=>k.slug===e.projectSlug)??null:null,S=p.useMemo(()=>{if(i)return[];if(!l)return[];const k=e.projectSlug,b=Y(n.threads,k),h=le(n.sessions,k);return x==="overview"?[]:x==="agents"?b.filter(d=>d.kind==="agent"):h.length>0?h:b},[n.sessions,n.threads,x,e.projectSlug,l,i]),j=p.useMemo(()=>Qe(S),[S]),T=p.useMemo(()=>j.flatMap(k=>k.items),[j]),M=n.projects.length>0||n.threads.length>0||n.sessions.length>0,y=r&&!M,F=r&&!i,O=!l&&!F&&(i||n.projects.length===0&&S.length===0),$=!l&&!O,[E,L]=p.useState(-1),C=p.useRef(new Map);return p.useEffect(()=>{!l||!e.sessionId||!xe(e.sessionId)||t({...e,indexView:"sessions",sessionId:void 0,selectedAgentId:void 0})},[t,e,l]),p.useEffect(()=>{L(-1)},[e.projectSlug]),p.useEffect(()=>{function k(b){const h=document.activeElement;if(!!h&&(h.tagName==="INPUT"||h.tagName==="TEXTAREA"||h.isContentEditable))return;const m=T.length;if(m){if(b.key==="ArrowDown"||b.key==="j")b.preventDefault(),L(A=>A<0?0:Math.min(m-1,A+1));else if(b.key==="ArrowUp"||b.key==="k")b.preventDefault(),L(A=>A<0?0:Math.max(0,A-1));else if(b.key==="Enter"){const A=T[E<0?0:E];A&&(b.preventDefault(),t(A.kind==="session"?ce(A,e):de(A,e)))}}}return document.addEventListener("keydown",k),()=>document.removeEventListener("keydown",k)},[E,T,t,e]),p.useEffect(()=>{if(E<0)return;const k=T[E];k&&C.current.get(k.id)?.scrollIntoView({block:"nearest"})},[E,T]),s.jsxs("div",{className:"s-pi s-pi-inbox","aria-busy":r||void 0,"data-loading":r||void 0,children:[l?s.jsx(Ss,{route:e,navigate:t,slug:e.projectSlug,model:n,mode:x,repoProject:null}):s.jsx("div",{className:"pi-inboxHead",children:s.jsxs("div",{className:"pi-inboxHeading",children:[s.jsx("h1",{className:"pi-inboxTitle",children:"Projects"}),s.jsx("span",{className:"pi-inboxDigest",children:Cs(n,i)})]})}),c?s.jsx(Ds,{session:g,sessionRef:c,threads:Y(n.threads,e.projectSlug),route:e,navigate:t,nowMs:o}):l&&x==="overview"?s.jsx(ut,{project:N,threads:Y(n.threads,e.projectSlug),sessions:le(n.sessions,e.projectSlug),route:e,navigate:t,nowMs:o}):$?s.jsx(lt,{model:n,route:e,navigate:t,nowMs:o}):s.jsxs("div",{className:"pi-threads",children:[y?s.jsx(ks,{}):null,!y&&j.map(k=>{let b=0;for(const h of j){if(h.group===k.group)break;b+=h.items.length}return s.jsxs("div",{children:[s.jsxs("div",{className:"pi-sectionHead","data-tone":k.group,children:[s.jsx("span",{className:"pi-sectionLabel",children:k.label}),s.jsx("span",{className:"pi-sectionCount",children:k.items.length})]}),k.items.map((h,d)=>{const m=b+d;return s.jsx(Ns,{thread:h,crossProject:!l,selected:h.kind==="session"?es(h,e):ss(h,e),cursor:E===m,nowMs:o,onSelect:()=>{const A=h.kind==="session"?Ye(h,e):Ne(h,e);t(A)},onOpen:()=>t(h.kind==="session"?ce(h,e):de(h,e)),rowRef:A=>{A?C.current.set(h.id,A):C.current.delete(h.id)}},h.id)})]},k.group)}),!y&&S.length===0?a&&!M?s.jsx(he,{tone:"error",title:"Projects unavailable",detail:a}):O?s.jsx("div",{className:"pi-empty",children:s.jsx(As,{route:e,navigate:t,projects:n.projects})}):F?s.jsx("div",{className:"pi-empty",children:"Loading…"}):s.jsx(he,{title:pt(l,x)}):null]})]})}function pt(e,t){return e&&t==="agents"?"No visible agents in this project.":e?"No sessions in this project yet.":"No projects yet."}export{Xn as ProjectsInbox,Ns as ThreadRow};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as d,j as t}from"./index-BZovGpDk.js";import{t as se}from"./time-Dhsh_2EG.js";import{p as he}from"./model-Co0zkMIc.js";import{F as je,A as me}from"./AddProjectForm-DtTfn4Zk.js";import{s as Se}from"./project-overview-helpers-BQTc_Ous.js";import{u as xe,i as q,s as fe,b as $,c as I,d as ge}from"./projects-inbox-Da2hYEn6.js";import{S as K}from"./search-1QMVOxF3.js";import{X as we}from"./x-CrGUKNRv.js";import{C as ie}from"./chevron-down-BVg09D6U.js";import{C as ne}from"./chevron-right-CaEwYkxE.js";import{F as oe}from"./DocumentFocusViewer-CZVVIAD5.js";import{c as re}from"./createLucideIcon-DCq_3fQn.js";const ve=[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]],Ne=re("archive",ve);const ye=[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]],Ce=re("pin",ye),U=4,ae="openscout.projects.pinnedSessions",ce="openscout.projects.archivedSessions";function Ae(e){return e.needs>0?"needs":e.working>0||e.liveSessionCount>0?"working":"idle"}function Pe({rows:e=6}){return t.jsx("div",{className:"pi-railLoading","aria-hidden":"true",children:Array.from({length:e},(s,i)=>t.jsxs("div",{className:"pi-projectGroup pi-projectGroup--loading",children:[t.jsx("div",{className:"pi-projectGroupHead",children:t.jsxs("span",{className:"pi-projectPath",children:[t.jsx(oe,{size:13,strokeWidth:1.6,"aria-hidden":!0}),t.jsx("span",{className:"pi-loadingLine pi-loadingLine--railProject"})]})}),t.jsxs("div",{className:"pi-projectSessionList",children:[t.jsx("span",{className:"pi-loadingLine pi-loadingLine--railSession"}),t.jsx("span",{className:"pi-loadingLine pi-loadingLine--railSession"})]})]},i))})}function be({route:e,navigate:s,zeroPreview:i=!1}){const{model:o,nowMs:c,loading:r,error:l}=xe(e),[u,y]=d.useState(""),[j,m]=d.useState("recent"),[g,w]=d.useState(!1),[h,v]=d.useState(()=>new Set),[N,C]=d.useState(()=>new Set),[A,S]=d.useState(()=>Oe()),[G,pe]=d.useState(()=>Fe()),[W,H]=d.useState(!1),x=e.machineId,P=e.showEphemeral,ue=r&&o.projects.length===0&&o.sessions.length===0,L=d.useMemo(()=>i?[]:o.sessions.filter(n=>!G.has(b(n))),[o.sessions,G,i]),z=d.useMemo(()=>i?[]:Te(o.projects,L),[o.projects,L,i]),T=d.useMemo(()=>Ee(z,u,j),[z,u,j]),D=u.trim().length>0,V=D?T:T.filter(n=>!q(n.project,c)),E=D?[]:T.filter(n=>q(n.project,c)),B=d.useMemo(()=>i?[]:_(L.filter(n=>A.has(b(n))&&de(n,u))),[L,A,u,i]),J=d.useCallback(n=>{v(a=>ee(a,n)),s({view:"agents-v2",projectSlug:n,...x?{machineId:x}:{},...P?{showEphemeral:!0}:{}})},[x,s,P]),M=d.useCallback(n=>{v(a=>ee(a,n.projectSlug)),s(fe(n,{projectSlug:n.projectSlug,...x?{machineId:x}:{},...P?{showEphemeral:!0}:{}}))},[x,s,P]),O=d.useCallback(n=>{const a=b(n);S(f=>{const p=new Set(f);return p.has(a)?p.delete(a):p.add(a),te(p),p})},[]),F=d.useCallback(n=>{const a=b(n);pe(f=>{if(f.has(a))return f;const p=new Set(f);return p.add(a),$e(p),p}),S(f=>{if(!f.has(a))return f;const p=new Set(f);return p.delete(a),te(p),p}),$(n,e)&&s({view:"agents-v2",projectSlug:n.projectSlug,indexView:"sessions",...x?{machineId:x}:{},...P?{showEphemeral:!0}:{}})},[x,s,e,P]);return t.jsxs("nav",{className:"s-pi s-pi-rail","aria-label":"Projects","aria-busy":r||void 0,"data-loading":r||void 0,children:[t.jsxs("div",{className:"pi-railFind",role:"search",children:[t.jsx(K,{size:13,strokeWidth:1.8,"aria-hidden":!0}),t.jsx("input",{className:"pi-railFindInput",type:"search",value:u,placeholder:"Find project or session","aria-label":"Find project or session",onChange:n=>y(n.currentTarget.value)}),u?t.jsx("button",{type:"button",className:"pi-railFindClear","aria-label":"Clear",onClick:()=>y(""),children:t.jsx(we,{size:12,strokeWidth:2,"aria-hidden":!0})}):null]}),t.jsx("div",{className:"pi-railBody",children:t.jsxs("div",{className:"pi-railGroup pi-railGroup--projects",children:[t.jsxs("div",{className:"pi-railProjectTools",children:[t.jsx("div",{className:"pi-railLabel",children:"Projects"}),t.jsxs("label",{className:"pi-railSortWrap",title:"Sort projects",children:[t.jsx("span",{className:"pi-srOnly",children:"Sort projects"}),t.jsxs("select",{className:"pi-railSort",value:j,"aria-label":"Sort projects",onChange:n=>m(n.currentTarget.value),children:[t.jsx("option",{value:"recent",children:"Recent"}),t.jsx("option",{value:"name",children:"Name"}),t.jsx("option",{value:"sessions",children:"Sessions"})]}),t.jsx(ie,{size:12,strokeWidth:2,"aria-hidden":!0})]}),t.jsx("button",{type:"button",className:"pi-railAddBtn","aria-expanded":W,"aria-label":"Add project",title:"Add a project by path",onClick:()=>H(n=>!n),children:t.jsx(je,{size:13,strokeWidth:1.8,"aria-hidden":!0})})]}),W?t.jsx(me,{onClose:()=>H(!1)}):null,ue?t.jsx(Pe,{}):l&&T.length===0?t.jsx("div",{className:"pi-railEmpty",children:"Projects unavailable."}):t.jsxs(t.Fragment,{children:[B.length>0?t.jsxs("div",{className:"pi-pinnedSessions",children:[t.jsx("div",{className:"pi-pinnedLabel",children:"Pinned"}),t.jsx("div",{className:"pi-projectSessionList",children:B.map(n=>t.jsx(le,{session:n,pinned:!0,selected:$(n,e),showProject:!0,nowMs:c,onOpenSession:M,onTogglePinnedSession:O,onArchiveSession:F},`pinned:${n.id}`))})]}):null,V.map(n=>t.jsx(Q,{group:n,selected:e.projectSlug===n.project.slug,collapsed:h.has(n.project.slug),expanded:N.has(n.project.slug),pinnedSessions:A,nowMs:c,route:e,onOpenProject:J,onOpenSession:M,onToggleCollapsed:()=>v(a=>R(a,n.project.slug)),onToggleExpanded:()=>C(a=>R(a,n.project.slug)),onTogglePinnedSession:O,onArchiveSession:F},n.project.slug)),V.length===0&&E.length===0?t.jsx("div",{className:"pi-railEmpty",children:u?"No projects matched.":"No projects yet."}):null,E.length>0?t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",className:"pi-railDisclosure","data-open":g||void 0,onClick:()=>w(n=>!n),children:[t.jsx(ne,{className:"pi-railChev",size:12,strokeWidth:2,"aria-hidden":!0}),"All projects · ",E.length," quiet"]}),g?E.map(n=>t.jsx(Q,{group:n,selected:e.projectSlug===n.project.slug,collapsed:h.has(n.project.slug),expanded:N.has(n.project.slug),pinnedSessions:A,nowMs:c,route:e,onOpenProject:J,onOpenSession:M,onToggleCollapsed:()=>v(a=>R(a,n.project.slug)),onToggleExpanded:()=>C(a=>R(a,n.project.slug)),onTogglePinnedSession:O,onArchiveSession:F},n.project.slug)):null]}):null]})]})}),t.jsx("div",{className:"pi-railFoot",children:t.jsxs("button",{type:"button",className:"pi-railFootBtn",onClick:()=>s({view:"search"}),children:[t.jsx(K,{size:13,strokeWidth:1.8,"aria-hidden":!0}),"Search agents & sessions"]})})]})}function Q({group:e,selected:s,collapsed:i,expanded:o,pinnedSessions:c,nowMs:r,route:l,onOpenProject:u,onOpenSession:y,onToggleCollapsed:j,onToggleExpanded:m,onTogglePinnedSession:g,onArchiveSession:w}){const{project:h,sessions:v}=e,N=_(v.filter(S=>!c.has(b(S)))),C=i?[]:o?N:N.slice(0,U),A=Math.max(0,N.length-C.length);return t.jsxs("div",{className:"pi-projectGroup","data-selected":s||void 0,"data-state":Ae(h),"data-collapsed":i||void 0,children:[t.jsxs("div",{className:"pi-projectGroupHead",children:[t.jsxs("button",{type:"button",className:"pi-projectPath","aria-expanded":s?!i:void 0,title:Me(h),"aria-current":s?"page":void 0,"aria-label":s?i?`Expand /${h.title}`:`Collapse /${h.title}`:`Open /${h.title}`,onClick:()=>{s?j():u(h.slug)},children:[t.jsx(oe,{size:13,strokeWidth:1.6,"aria-hidden":!0}),t.jsxs("span",{className:"pi-projectPathText",children:["/",h.title]})]}),t.jsx("button",{type:"button",className:"pi-projectPathToggle","aria-expanded":!i,"aria-label":i?`Expand /${h.title}`:`Collapse /${h.title}`,onClick:j,children:i?t.jsx(ne,{size:12,strokeWidth:2}):t.jsx(ie,{size:12,strokeWidth:2})})]}),!i&&C.length>0?t.jsx("div",{className:"pi-projectSessionList",children:C.map(S=>t.jsx(le,{session:S,pinned:c.has(b(S)),selected:$(S,l),showProject:!1,nowMs:r,onOpenSession:y,onTogglePinnedSession:g,onArchiveSession:w},S.id))}):!i&&v.length===0?t.jsx("div",{className:"pi-projectSessionEmpty",children:"No sessions yet"}):null,!i&&A>0?t.jsx("button",{type:"button",className:"pi-projectShowMore",onClick:m,children:"Show more"}):!i&&o&&N.length>U?t.jsx("button",{type:"button",className:"pi-projectShowMore",onClick:m,children:"Show less"}):null]})}function ke(e,s){return e.session===s.session&&e.pinned===s.pinned&&e.selected===s.selected&&e.showProject===s.showProject&&e.nowMs===s.nowMs&&e.onOpenSession===s.onOpenSession&&e.onTogglePinnedSession===s.onTogglePinnedSession&&e.onArchiveSession===s.onArchiveSession}function Y(e){const s=e.getBoundingClientRect();return{left:Math.min(window.innerWidth-304-12,s.right+10),top:Math.max(12,Math.min(window.innerHeight-174-12,s.top-18))}}const le=d.memo(function({session:s,pinned:i,selected:o,showProject:c,nowMs:r,onOpenSession:l,onTogglePinnedSession:u,onArchiveSession:y}){const[j,m]=d.useState(null),g=k(s);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"pi-projectSession","data-active":s.working||void 0,"data-pinned":i||void 0,"data-selected":o||void 0,onMouseEnter:w=>m(Y(w.currentTarget)),onMouseLeave:()=>m(null),onFocusCapture:w=>m(Y(w.currentTarget)),onBlurCapture:()=>m(null),children:[t.jsxs("button",{type:"button",className:"pi-projectSessionMain","aria-label":c?`${g} /${s.projectTitle}`:g,onClick:()=>{m(null),l(s)},children:[t.jsx("span",{className:"pi-projectSessionTitle",children:g}),c?t.jsxs("span",{className:"pi-projectSessionProject",children:["/",s.projectTitle]}):null]}),t.jsx("button",{type:"button",className:"pi-sessionPin","data-pinned":i||void 0,"aria-pressed":i,"aria-label":i?"Unpin session":"Pin session",title:i?"Unpin session":"Pin session",onClick:()=>u(s),children:t.jsx(Ce,{size:11,strokeWidth:2,"aria-hidden":!0})}),t.jsx("button",{type:"button",className:"pi-sessionArchive","aria-label":"Archive session",title:"Archive session",onClick:()=>y(s),children:t.jsx(Ne,{size:11,strokeWidth:2,"aria-hidden":!0})}),t.jsx("span",{className:"pi-projectSessionWhen",children:s.lastActivityAt?se(s.lastActivityAt,r):"-"})]}),j?t.jsx(Le,{session:s,left:j.left,top:j.top,nowMs:r}):null]})},ke);function Le({session:e,left:s,top:i,nowMs:o}){const c=e.agentName||null,r=e.projectRoot?Se(e.projectRoot):`/${e.projectTitle}`,l=I(e);return t.jsxs("div",{className:"pi-sessionHoverCard",role:"tooltip",style:{left:s,top:i},children:[t.jsxs("div",{className:"pi-sessionHoverKicker",children:[t.jsxs("span",{children:["/",e.projectTitle]}),t.jsx("span",{children:e.lastActivityAt?se(e.lastActivityAt,o):"-"})]}),t.jsx("div",{className:"pi-sessionHoverTitle",children:k(e)}),t.jsxs("div",{className:"pi-sessionHoverContext",children:[e.working?"Live now":"Last touched"," in ",r]}),t.jsxs("div",{className:"pi-sessionHoverFacts",children:[t.jsx("span",{children:e.harness}),t.jsx("span",{children:e.working?"active":"recent"}),e.branch?t.jsx("span",{children:e.branch}):null,c?t.jsx("span",{children:c}):null]}),t.jsx("div",{className:"pi-sessionHoverRef",children:l??"No session archive yet"})]})}function Te(e,s){return e.map(i=>{const o=ge(s,i.slug);return{project:i,sessions:_(o),lastActivityAt:o[0]?.lastActivityAt??i.lastActivityAt}})}function Ee(e,s,i){const o=s.trim().toLowerCase();return[...o?e.filter(r=>r.project.title.toLowerCase().includes(o)||r.project.slug.toLowerCase().includes(o)||r.sessions.some(l=>de(l,o))):e].sort((r,l)=>{switch(i){case"name":return r.project.title.localeCompare(l.project.title);case"sessions":return l.project.sessionCount-r.project.sessionCount||l.lastActivityAt-r.lastActivityAt||r.project.title.localeCompare(l.project.title);default:return l.project.liveSessionCount-r.project.liveSessionCount||l.lastActivityAt-r.lastActivityAt||l.project.sessionCount-r.project.sessionCount||r.project.title.localeCompare(l.project.title)}})}function _(e){return[...e].sort((s,i)=>Number(i.working)-Number(s.working)||X(i)-X(s)||i.lastActivityAt-s.lastActivityAt||k(s).localeCompare(k(i)))}function X(e){return I(e)?2:e.agentId?1:0}function de(e,s){const i=s.trim().toLowerCase();return i?e.projectTitle.toLowerCase().includes(i)||e.projectSlug.toLowerCase().includes(i)||k(e).toLowerCase().includes(i)||e.agentName.toLowerCase().includes(i)||e.harness.toLowerCase().includes(i)||(e.branch?.toLowerCase().includes(i)??!1):!0}function b(e){return I(e)??e.id}function k(e){const s=e.work||e.sessionId||e.id,i=s.includes("/")?he(s):s;return Re(i,e.harness)}function Re(e,s){const i=e.replace(/\.jsonl$/iu,""),o=i.match(/^rollout-(\d{4})-(\d{2})-(\d{2})T(\d{2})-(\d{2})/u);if(o)return`${Z(s)} rollout ${o[4]}:${o[5]}`;const c=i.match(/^([0-9a-f]{8})-[0-9a-f-]{27,}$/iu);return c?`${Z(s)} session ${c[1]}`:i.length>42?`${i.slice(0,39).trim()}...`:i}function Me(e){return`/${e.title}`}function Z(e){const s=e.trim();return s?s.charAt(0).toUpperCase()+s.slice(1).toLowerCase():"Session"}function R(e,s){const i=new Set(e);return i.has(s)?i.delete(s):i.add(s),i}function ee(e,s){if(!e.has(s))return e;const i=new Set(e);return i.delete(s),i}function Oe(){if(typeof window>"u")return new Set;try{const e=window.localStorage.getItem(ae),s=e?JSON.parse(e):[];return new Set(Array.isArray(s)?s.filter(i=>typeof i=="string"):[])}catch{return new Set}}function te(e){if(!(typeof window>"u"))try{window.localStorage.setItem(ae,JSON.stringify([...e]))}catch{}}function Fe(){if(typeof window>"u")return new Set;try{const e=window.localStorage.getItem(ce),s=e?JSON.parse(e):[];return new Set(Array.isArray(s)?s.filter(i=>typeof i=="string"):[])}catch{return new Set}}function $e(e){if(!(typeof window>"u"))try{window.localStorage.setItem(ce,JSON.stringify([...e]))}catch{}}const Ue=Object.freeze(Object.defineProperty({__proto__:null,ProjectsRail:be},Symbol.toStringTag,{value:"Module"}));export{Ne as A,be as P,Ce as a,Ue as b};
|
|
1
|
+
import{r as d,j as t}from"./index-DmFAhGPj.js";import{t as se}from"./time-Dhsh_2EG.js";import{p as he}from"./model-Co0zkMIc.js";import{F as je,A as me}from"./AddProjectForm-CpyytDf2.js";import{s as Se}from"./project-overview-helpers-BQTc_Ous.js";import{u as xe,i as q,s as fe,b as $,c as I,d as ge}from"./projects-inbox-Dzt_GQDv.js";import{S as K}from"./search-DAyagUtF.js";import{X as we}from"./x-C8ayPBtj.js";import{C as ie}from"./chevron-down-B3VVRJcV.js";import{C as ne}from"./chevron-right-BYMV1511.js";import{F as oe}from"./DocumentFocusViewer-B9vodVmG.js";import{c as re}from"./createLucideIcon-CFBn0Sdk.js";const ve=[["rect",{width:"20",height:"5",x:"2",y:"3",rx:"1",key:"1wp1u1"}],["path",{d:"M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8",key:"1s80jp"}],["path",{d:"M10 12h4",key:"a56b0p"}]],Ne=re("archive",ve);const ye=[["path",{d:"M12 17v5",key:"bb1du9"}],["path",{d:"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",key:"1nkz8b"}]],Ce=re("pin",ye),U=4,ae="openscout.projects.pinnedSessions",ce="openscout.projects.archivedSessions";function Ae(e){return e.needs>0?"needs":e.working>0||e.liveSessionCount>0?"working":"idle"}function Pe({rows:e=6}){return t.jsx("div",{className:"pi-railLoading","aria-hidden":"true",children:Array.from({length:e},(s,i)=>t.jsxs("div",{className:"pi-projectGroup pi-projectGroup--loading",children:[t.jsx("div",{className:"pi-projectGroupHead",children:t.jsxs("span",{className:"pi-projectPath",children:[t.jsx(oe,{size:13,strokeWidth:1.6,"aria-hidden":!0}),t.jsx("span",{className:"pi-loadingLine pi-loadingLine--railProject"})]})}),t.jsxs("div",{className:"pi-projectSessionList",children:[t.jsx("span",{className:"pi-loadingLine pi-loadingLine--railSession"}),t.jsx("span",{className:"pi-loadingLine pi-loadingLine--railSession"})]})]},i))})}function be({route:e,navigate:s,zeroPreview:i=!1}){const{model:o,nowMs:c,loading:r,error:l}=xe(e),[u,y]=d.useState(""),[j,m]=d.useState("recent"),[g,w]=d.useState(!1),[h,v]=d.useState(()=>new Set),[N,C]=d.useState(()=>new Set),[A,S]=d.useState(()=>Oe()),[G,pe]=d.useState(()=>Fe()),[W,H]=d.useState(!1),x=e.machineId,P=e.showEphemeral,ue=r&&o.projects.length===0&&o.sessions.length===0,L=d.useMemo(()=>i?[]:o.sessions.filter(n=>!G.has(b(n))),[o.sessions,G,i]),z=d.useMemo(()=>i?[]:Te(o.projects,L),[o.projects,L,i]),T=d.useMemo(()=>Ee(z,u,j),[z,u,j]),D=u.trim().length>0,V=D?T:T.filter(n=>!q(n.project,c)),E=D?[]:T.filter(n=>q(n.project,c)),B=d.useMemo(()=>i?[]:_(L.filter(n=>A.has(b(n))&&de(n,u))),[L,A,u,i]),J=d.useCallback(n=>{v(a=>ee(a,n)),s({view:"agents-v2",projectSlug:n,...x?{machineId:x}:{},...P?{showEphemeral:!0}:{}})},[x,s,P]),M=d.useCallback(n=>{v(a=>ee(a,n.projectSlug)),s(fe(n,{projectSlug:n.projectSlug,...x?{machineId:x}:{},...P?{showEphemeral:!0}:{}}))},[x,s,P]),O=d.useCallback(n=>{const a=b(n);S(f=>{const p=new Set(f);return p.has(a)?p.delete(a):p.add(a),te(p),p})},[]),F=d.useCallback(n=>{const a=b(n);pe(f=>{if(f.has(a))return f;const p=new Set(f);return p.add(a),$e(p),p}),S(f=>{if(!f.has(a))return f;const p=new Set(f);return p.delete(a),te(p),p}),$(n,e)&&s({view:"agents-v2",projectSlug:n.projectSlug,indexView:"sessions",...x?{machineId:x}:{},...P?{showEphemeral:!0}:{}})},[x,s,e,P]);return t.jsxs("nav",{className:"s-pi s-pi-rail","aria-label":"Projects","aria-busy":r||void 0,"data-loading":r||void 0,children:[t.jsxs("div",{className:"pi-railFind",role:"search",children:[t.jsx(K,{size:13,strokeWidth:1.8,"aria-hidden":!0}),t.jsx("input",{className:"pi-railFindInput",type:"search",value:u,placeholder:"Find project or session","aria-label":"Find project or session",onChange:n=>y(n.currentTarget.value)}),u?t.jsx("button",{type:"button",className:"pi-railFindClear","aria-label":"Clear",onClick:()=>y(""),children:t.jsx(we,{size:12,strokeWidth:2,"aria-hidden":!0})}):null]}),t.jsx("div",{className:"pi-railBody",children:t.jsxs("div",{className:"pi-railGroup pi-railGroup--projects",children:[t.jsxs("div",{className:"pi-railProjectTools",children:[t.jsx("div",{className:"pi-railLabel",children:"Projects"}),t.jsxs("label",{className:"pi-railSortWrap",title:"Sort projects",children:[t.jsx("span",{className:"pi-srOnly",children:"Sort projects"}),t.jsxs("select",{className:"pi-railSort",value:j,"aria-label":"Sort projects",onChange:n=>m(n.currentTarget.value),children:[t.jsx("option",{value:"recent",children:"Recent"}),t.jsx("option",{value:"name",children:"Name"}),t.jsx("option",{value:"sessions",children:"Sessions"})]}),t.jsx(ie,{size:12,strokeWidth:2,"aria-hidden":!0})]}),t.jsx("button",{type:"button",className:"pi-railAddBtn","aria-expanded":W,"aria-label":"Add project",title:"Add a project by path",onClick:()=>H(n=>!n),children:t.jsx(je,{size:13,strokeWidth:1.8,"aria-hidden":!0})})]}),W?t.jsx(me,{onClose:()=>H(!1)}):null,ue?t.jsx(Pe,{}):l&&T.length===0?t.jsx("div",{className:"pi-railEmpty",children:"Projects unavailable."}):t.jsxs(t.Fragment,{children:[B.length>0?t.jsxs("div",{className:"pi-pinnedSessions",children:[t.jsx("div",{className:"pi-pinnedLabel",children:"Pinned"}),t.jsx("div",{className:"pi-projectSessionList",children:B.map(n=>t.jsx(le,{session:n,pinned:!0,selected:$(n,e),showProject:!0,nowMs:c,onOpenSession:M,onTogglePinnedSession:O,onArchiveSession:F},`pinned:${n.id}`))})]}):null,V.map(n=>t.jsx(Q,{group:n,selected:e.projectSlug===n.project.slug,collapsed:h.has(n.project.slug),expanded:N.has(n.project.slug),pinnedSessions:A,nowMs:c,route:e,onOpenProject:J,onOpenSession:M,onToggleCollapsed:()=>v(a=>R(a,n.project.slug)),onToggleExpanded:()=>C(a=>R(a,n.project.slug)),onTogglePinnedSession:O,onArchiveSession:F},n.project.slug)),V.length===0&&E.length===0?t.jsx("div",{className:"pi-railEmpty",children:u?"No projects matched.":"No projects yet."}):null,E.length>0?t.jsxs(t.Fragment,{children:[t.jsxs("button",{type:"button",className:"pi-railDisclosure","data-open":g||void 0,onClick:()=>w(n=>!n),children:[t.jsx(ne,{className:"pi-railChev",size:12,strokeWidth:2,"aria-hidden":!0}),"All projects · ",E.length," quiet"]}),g?E.map(n=>t.jsx(Q,{group:n,selected:e.projectSlug===n.project.slug,collapsed:h.has(n.project.slug),expanded:N.has(n.project.slug),pinnedSessions:A,nowMs:c,route:e,onOpenProject:J,onOpenSession:M,onToggleCollapsed:()=>v(a=>R(a,n.project.slug)),onToggleExpanded:()=>C(a=>R(a,n.project.slug)),onTogglePinnedSession:O,onArchiveSession:F},n.project.slug)):null]}):null]})]})}),t.jsx("div",{className:"pi-railFoot",children:t.jsxs("button",{type:"button",className:"pi-railFootBtn",onClick:()=>s({view:"search"}),children:[t.jsx(K,{size:13,strokeWidth:1.8,"aria-hidden":!0}),"Search agents & sessions"]})})]})}function Q({group:e,selected:s,collapsed:i,expanded:o,pinnedSessions:c,nowMs:r,route:l,onOpenProject:u,onOpenSession:y,onToggleCollapsed:j,onToggleExpanded:m,onTogglePinnedSession:g,onArchiveSession:w}){const{project:h,sessions:v}=e,N=_(v.filter(S=>!c.has(b(S)))),C=i?[]:o?N:N.slice(0,U),A=Math.max(0,N.length-C.length);return t.jsxs("div",{className:"pi-projectGroup","data-selected":s||void 0,"data-state":Ae(h),"data-collapsed":i||void 0,children:[t.jsxs("div",{className:"pi-projectGroupHead",children:[t.jsxs("button",{type:"button",className:"pi-projectPath","aria-expanded":s?!i:void 0,title:Me(h),"aria-current":s?"page":void 0,"aria-label":s?i?`Expand /${h.title}`:`Collapse /${h.title}`:`Open /${h.title}`,onClick:()=>{s?j():u(h.slug)},children:[t.jsx(oe,{size:13,strokeWidth:1.6,"aria-hidden":!0}),t.jsxs("span",{className:"pi-projectPathText",children:["/",h.title]})]}),t.jsx("button",{type:"button",className:"pi-projectPathToggle","aria-expanded":!i,"aria-label":i?`Expand /${h.title}`:`Collapse /${h.title}`,onClick:j,children:i?t.jsx(ne,{size:12,strokeWidth:2}):t.jsx(ie,{size:12,strokeWidth:2})})]}),!i&&C.length>0?t.jsx("div",{className:"pi-projectSessionList",children:C.map(S=>t.jsx(le,{session:S,pinned:c.has(b(S)),selected:$(S,l),showProject:!1,nowMs:r,onOpenSession:y,onTogglePinnedSession:g,onArchiveSession:w},S.id))}):!i&&v.length===0?t.jsx("div",{className:"pi-projectSessionEmpty",children:"No sessions yet"}):null,!i&&A>0?t.jsx("button",{type:"button",className:"pi-projectShowMore",onClick:m,children:"Show more"}):!i&&o&&N.length>U?t.jsx("button",{type:"button",className:"pi-projectShowMore",onClick:m,children:"Show less"}):null]})}function ke(e,s){return e.session===s.session&&e.pinned===s.pinned&&e.selected===s.selected&&e.showProject===s.showProject&&e.nowMs===s.nowMs&&e.onOpenSession===s.onOpenSession&&e.onTogglePinnedSession===s.onTogglePinnedSession&&e.onArchiveSession===s.onArchiveSession}function Y(e){const s=e.getBoundingClientRect();return{left:Math.min(window.innerWidth-304-12,s.right+10),top:Math.max(12,Math.min(window.innerHeight-174-12,s.top-18))}}const le=d.memo(function({session:s,pinned:i,selected:o,showProject:c,nowMs:r,onOpenSession:l,onTogglePinnedSession:u,onArchiveSession:y}){const[j,m]=d.useState(null),g=k(s);return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"pi-projectSession","data-active":s.working||void 0,"data-pinned":i||void 0,"data-selected":o||void 0,onMouseEnter:w=>m(Y(w.currentTarget)),onMouseLeave:()=>m(null),onFocusCapture:w=>m(Y(w.currentTarget)),onBlurCapture:()=>m(null),children:[t.jsxs("button",{type:"button",className:"pi-projectSessionMain","aria-label":c?`${g} /${s.projectTitle}`:g,onClick:()=>{m(null),l(s)},children:[t.jsx("span",{className:"pi-projectSessionTitle",children:g}),c?t.jsxs("span",{className:"pi-projectSessionProject",children:["/",s.projectTitle]}):null]}),t.jsx("button",{type:"button",className:"pi-sessionPin","data-pinned":i||void 0,"aria-pressed":i,"aria-label":i?"Unpin session":"Pin session",title:i?"Unpin session":"Pin session",onClick:()=>u(s),children:t.jsx(Ce,{size:11,strokeWidth:2,"aria-hidden":!0})}),t.jsx("button",{type:"button",className:"pi-sessionArchive","aria-label":"Archive session",title:"Archive session",onClick:()=>y(s),children:t.jsx(Ne,{size:11,strokeWidth:2,"aria-hidden":!0})}),t.jsx("span",{className:"pi-projectSessionWhen",children:s.lastActivityAt?se(s.lastActivityAt,r):"-"})]}),j?t.jsx(Le,{session:s,left:j.left,top:j.top,nowMs:r}):null]})},ke);function Le({session:e,left:s,top:i,nowMs:o}){const c=e.agentName||null,r=e.projectRoot?Se(e.projectRoot):`/${e.projectTitle}`,l=I(e);return t.jsxs("div",{className:"pi-sessionHoverCard",role:"tooltip",style:{left:s,top:i},children:[t.jsxs("div",{className:"pi-sessionHoverKicker",children:[t.jsxs("span",{children:["/",e.projectTitle]}),t.jsx("span",{children:e.lastActivityAt?se(e.lastActivityAt,o):"-"})]}),t.jsx("div",{className:"pi-sessionHoverTitle",children:k(e)}),t.jsxs("div",{className:"pi-sessionHoverContext",children:[e.working?"Live now":"Last touched"," in ",r]}),t.jsxs("div",{className:"pi-sessionHoverFacts",children:[t.jsx("span",{children:e.harness}),t.jsx("span",{children:e.working?"active":"recent"}),e.branch?t.jsx("span",{children:e.branch}):null,c?t.jsx("span",{children:c}):null]}),t.jsx("div",{className:"pi-sessionHoverRef",children:l??"No session archive yet"})]})}function Te(e,s){return e.map(i=>{const o=ge(s,i.slug);return{project:i,sessions:_(o),lastActivityAt:o[0]?.lastActivityAt??i.lastActivityAt}})}function Ee(e,s,i){const o=s.trim().toLowerCase();return[...o?e.filter(r=>r.project.title.toLowerCase().includes(o)||r.project.slug.toLowerCase().includes(o)||r.sessions.some(l=>de(l,o))):e].sort((r,l)=>{switch(i){case"name":return r.project.title.localeCompare(l.project.title);case"sessions":return l.project.sessionCount-r.project.sessionCount||l.lastActivityAt-r.lastActivityAt||r.project.title.localeCompare(l.project.title);default:return l.project.liveSessionCount-r.project.liveSessionCount||l.lastActivityAt-r.lastActivityAt||l.project.sessionCount-r.project.sessionCount||r.project.title.localeCompare(l.project.title)}})}function _(e){return[...e].sort((s,i)=>Number(i.working)-Number(s.working)||X(i)-X(s)||i.lastActivityAt-s.lastActivityAt||k(s).localeCompare(k(i)))}function X(e){return I(e)?2:e.agentId?1:0}function de(e,s){const i=s.trim().toLowerCase();return i?e.projectTitle.toLowerCase().includes(i)||e.projectSlug.toLowerCase().includes(i)||k(e).toLowerCase().includes(i)||e.agentName.toLowerCase().includes(i)||e.harness.toLowerCase().includes(i)||(e.branch?.toLowerCase().includes(i)??!1):!0}function b(e){return I(e)??e.id}function k(e){const s=e.work||e.sessionId||e.id,i=s.includes("/")?he(s):s;return Re(i,e.harness)}function Re(e,s){const i=e.replace(/\.jsonl$/iu,""),o=i.match(/^rollout-(\d{4})-(\d{2})-(\d{2})T(\d{2})-(\d{2})/u);if(o)return`${Z(s)} rollout ${o[4]}:${o[5]}`;const c=i.match(/^([0-9a-f]{8})-[0-9a-f-]{27,}$/iu);return c?`${Z(s)} session ${c[1]}`:i.length>42?`${i.slice(0,39).trim()}...`:i}function Me(e){return`/${e.title}`}function Z(e){const s=e.trim();return s?s.charAt(0).toUpperCase()+s.slice(1).toLowerCase():"Session"}function R(e,s){const i=new Set(e);return i.has(s)?i.delete(s):i.add(s),i}function ee(e,s){if(!e.has(s))return e;const i=new Set(e);return i.delete(s),i}function Oe(){if(typeof window>"u")return new Set;try{const e=window.localStorage.getItem(ae),s=e?JSON.parse(e):[];return new Set(Array.isArray(s)?s.filter(i=>typeof i=="string"):[])}catch{return new Set}}function te(e){if(!(typeof window>"u"))try{window.localStorage.setItem(ae,JSON.stringify([...e]))}catch{}}function Fe(){if(typeof window>"u")return new Set;try{const e=window.localStorage.getItem(ce),s=e?JSON.parse(e):[];return new Set(Array.isArray(s)?s.filter(i=>typeof i=="string"):[])}catch{return new Set}}function $e(e){if(!(typeof window>"u"))try{window.localStorage.setItem(ce,JSON.stringify([...e]))}catch{}}const Ue=Object.freeze(Object.defineProperty({__proto__:null,ProjectsRail:be},Symbol.toStringTag,{value:"Module"}));export{Ne as A,be as P,Ce as a,Ue as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as i}from"./index-DmFAhGPj.js";import{u as e}from"./Provider-cJCdHAxu.js";import{d as s}from"./types-B0PlfpKc.js";import{ProjectsInbox as c}from"./ProjectsInbox-B3DpAI5b.js";import{P as a}from"./ProjectsRail-BDl7U9Jq.js";import{ProjectAgentProfile as n}from"./ProjectAgentProfile-Dv1sVnQl.js";import{i as l}from"./model-IGCUEsMy.js";/* empty css */import"./projects-inbox-Dzt_GQDv.js";import"./router-Cn_s9IGH.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-AmSgHklm.js";import"./api-h5zurxmi.js";import"./sse-CxXt4tqI.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-CHIuVKz7.js";import"./DocumentFocusViewer-B9vodVmG.js";import"./createLucideIcon-CFBn0Sdk.js";import"./TextDocumentSurface-BWJCGBZf.js";/* empty css */import"./file-text-DcYSrI4v.js";import"./x-C8ayPBtj.js";import"./chevron-right-BYMV1511.js";import"./code-xml-BFc3TMSm.js";import"./arrow-left-B-3GJ7ct.js";import"./scout-voice-CwbOz6EN.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-h1IdakpD.js";import"./MessageComposerSuggestions-FdVHnT_q.js";import"./NewChatComposer-Hd7pI5Ac.js";import"./runtime-picker--IW3cRry.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-d6PKL_KD.js";import"./index-CmwGCxUk.js";import"./HarnessMark-BPAphNjx.js";import"./conversation-model-CHwHZNw-.js";import"./time-Dhsh_2EG.js";import"./NewChatOrigin-DmuJ32wa.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-B3VVRJcV.js";import"./search-DAyagUtF.js";import"./chunk-HRAB3GC3-dRd2eQMJ.js";import"./AgentAvatar-D8ZtMluU.js";import"./SpriteAvatar-DS6Tmyua.js";import"./agent-identity-BxCsXnDp.js";import"./api-BkjHJfgJ.js";import"./ui-LM8pS8qE.js";import"./openContent-C6XO6kr5.js";import"./SessionRefScreen-OkTY7Szg.js";import"./tail-events-BdvqZHLr.js";import"./BackToPicker-D1LV6Cqp.js";import"./ConversationScreen-B3l2m3JI.js";import"./ConversationComposer-Bf7Ga_49.js";import"./message-markup-CyRDLdOn.js";import"./mentions-agCGDgyA.js";import"./AgentDetailCard-BTiOmh-a.js";import"./AgentLiveActions-BJ5dIfL3.js";import"./terminal-takeover-BOFPRPjR.js";import"./eye-1J4yOUoG.js";import"./terminal-DJPUp_Qn.js";import"./message-visibility-kJM8XcSG.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";/* empty css */import"./ConversationHeader-B_GXrKR0.js";import"./ConversationFeedRows-Cm1Lgo43.js";import"./ConversationPanels-BTBbEvrP.js";import"./use-reduced-motion-CYqhYqHO.js";import"./activity-CC8JzJNH.js";import"./message-circle-CJO-pi7b.js";import"./tail-display-BRcJltQa.js";import"./lane-edit-display-C_Aujldz.js";import"./ConversationStatus-BqhUHD85.js";import"./SessionObserve-yYA8Gy5s.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-B7KdvQvf.js";import"./lane-observe-BA3g9aVd.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-CaSZZP05.js";import"./ObserveTextFlow-CkMrtT8s.js";import"./SessionObserveEvidence-cHdjYOJe.js";import"./wrench-CvRjjByE.js";import"./external-link-B1TI5yIt.js";/* empty css */import"./AddProjectForm-CpyytDf2.js";import"./project-overview-helpers-BQTc_Ous.js";import"./cache-Dr0why2k.js";import"./arrow-up-right-G6bJXxhK.js";import"./AgentsSubnav-az_VDkri.js";import"./SecondaryNav-_wyKjwNf.js";import"./secondaryNavConfig-Dw3gS1jR.js";import"./message-square-D1hMsMj_.js";import"./scroll-text-DPPYrqB9.js";import"./profile-Dxj3VVOM.js";import"./context-budget-DX_fwUs3.js";import"./session-catalog-ClS9xf6i.js";import"./terminal-relay-TffuSPGs.js";/* empty css */import"./AgentDefinitionsWorkspace-CfaDVCVt.js";import"./FileViewerPane-9Bveqm9c.js";import"./agent-essentials-B3wcxg_v.js";/* empty css *//* empty css */import"./ProjectAgentProfileBar-BLVg5EeA.js";import"./agents-project-model-UYiamtrU.js";function f({route:o,navigate:r}){const t=l(o),m=t?`profile:${o.agentId}`:"index",p=!t&&j();return i.jsx("div",{className:"s-av2","data-view":t?"profile":"index",children:i.jsx("div",{className:"av2-stagePane",children:t?i.jsx(n,{route:o,navigate:r}):i.jsx(c,{route:o,navigate:r,zeroPreview:p})},m)})}function Pr({navigate:o}){const{route:r}=e(),t=r.view==="agents-v2"?r:{view:"agents-v2"};return i.jsxs("div",{className:"pi-projectsEmbedShell",children:[i.jsx(a,{route:t,navigate:o}),i.jsx(f,{route:t,navigate:o})]})}const hr=s({id:"projects",label:"Projects",route:{view:"agents-v2"},webPath:"/projects",screen:"ProjectsEmbedScreen",embed:{path:"/embed/projects",profile:"macos.projects",ownsInternalRoutes:!0,rootClassName:"s-projects-embed",chrome:{showSecondaryNav:!1,showPageStatusBar:!1},hosts:{macos:!0}}});function j(){if(typeof window>"u")return!1;const o=window.location.hostname.toLowerCase();if(o!=="localhost"&&o!=="127.0.0.1"&&o!=="::1")return!1;const r=new URLSearchParams(window.location.search).get("zero")?.trim().toLowerCase();return r==="projects"||r==="project"||r==="1"||r==="true"}export{Pr as ProjectsEmbedScreen,f as ProjectsScreen,hr as scoutSurface};
|
package/dist/client/assets/{ProjectsThreadAside-DYmL2dCY.js → ProjectsThreadAside-BcGC5mHE.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s}from"./index-
|
|
1
|
+
import{j as s}from"./index-DmFAhGPj.js";import{A as R}from"./AgentAvatar-D8ZtMluU.js";import{H as O}from"./HarnessMark-BPAphNjx.js";import{t as P}from"./time-Dhsh_2EG.js";import{s as y}from"./project-overview-helpers-BQTc_Ous.js";import{u as H,t as T,a as B,s as C}from"./projects-inbox-Dzt_GQDv.js";import{A as g}from"./arrow-up-right-G6bJXxhK.js";import"./SpriteAvatar-DS6Tmyua.js";import"./agent-identity-BxCsXnDp.js";import"./colors-BtO5_zlx.js";import"./api-h5zurxmi.js";import"./router-Cn_s9IGH.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-AmSgHklm.js";import"./sse-CxXt4tqI.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./Provider-cJCdHAxu.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-CHIuVKz7.js";import"./DocumentFocusViewer-B9vodVmG.js";import"./createLucideIcon-CFBn0Sdk.js";import"./TextDocumentSurface-BWJCGBZf.js";/* empty css */import"./file-text-DcYSrI4v.js";import"./x-C8ayPBtj.js";import"./chevron-right-BYMV1511.js";import"./code-xml-BFc3TMSm.js";import"./arrow-left-B-3GJ7ct.js";import"./scout-voice-CwbOz6EN.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-h1IdakpD.js";import"./MessageComposerSuggestions-FdVHnT_q.js";import"./NewChatComposer-Hd7pI5Ac.js";import"./runtime-picker--IW3cRry.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-d6PKL_KD.js";import"./index-CmwGCxUk.js";import"./conversation-model-CHwHZNw-.js";import"./NewChatOrigin-DmuJ32wa.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-B3VVRJcV.js";import"./search-DAyagUtF.js";import"./chunk-HRAB3GC3-dRd2eQMJ.js";import"./agents-project-model-UYiamtrU.js";import"./model-IGCUEsMy.js";function L(i,r,t){if(t.sessionId){const d=r.find(a=>a.sessionId===t.sessionId||a.conversationId===t.sessionId||a.id===t.sessionId);if(d)return{kind:"session",session:d};const o=i.find(a=>a.kind==="native"&&a.sessionId===t.sessionId)??null;if(o)return{kind:"thread",thread:o}}if(t.selectedAgentId){const d=i.find(a=>a.agentId===t.selectedAgentId)??null;if(d)return{kind:"thread",thread:d};const o=r.find(a=>!a.sessionId&&a.agentId===t.selectedAgentId)??null;if(o)return{kind:"session",session:o}}return null}function p({label:i,value:r}){return s.jsxs("span",{className:"pi-stat",children:[s.jsx("span",{className:"pi-statLabel",children:i}),s.jsx("span",{className:"pi-statValue",children:r})]})}function Ps({route:i,navigate:r}){const{model:t,nowMs:d,loading:o,error:a}=H(i);if(!i.sessionId&&!i.selectedAgentId)return null;const l=L(t.threads,t.sessions,i);if(!l)return s.jsxs("div",{className:"s-pi s-pi-aside",children:[s.jsx("header",{className:"pi-asideHead",children:s.jsxs("div",{className:"pi-asideIdent",children:[s.jsx("div",{className:"pi-asideTop",children:s.jsx("span",{className:"pi-asideName",children:o?"Resolving selection":a?"Project data unavailable":"Selection unavailable"})}),s.jsx("div",{className:"pi-asideSub",children:s.jsxs("span",{className:"pi-asideStatus","data-tone":o?"working":"recent",children:[o?s.jsx("span",{className:"pi-asidePulse","aria-hidden":!0}):null,o?"loading":"idle"]})})]})}),s.jsx("div",{className:"pi-asideBody",children:s.jsx("p",{className:"pi-asideMuted",children:a??"The selected item is not in the current project snapshot."})})]});const n=l.kind==="thread"?l.thread:null,e=l.kind==="session"?l.session:null,m=n?.agentName??e?.agentName??"Session",h=n?.harness??e?.harness??"session",I=n?.projectTitle??e?.projectTitle??i.projectSlug??"project",x=n?.branch??e?.branch??null,c=n?.working??e?.working??!1,f=n?.needs?"needs":c?"working":"recent",b=n?.needs?"your turn":c?"working":e?"selected":"idle",k=n?.work??e?.work??"No session detail available.",v=n?.lastActivityAt??e?.lastActivityAt??0,j=e?.sessionId??n?.sessionId??null,u=n?.projectRoot??e?.projectRoot??null,N=n?T(n,i):null,w=n?B(n,i):e?C(e,i):i,A=e?e.route?.view==="conversation"?"Open conversation":e.route?.view==="sessions"?"Open session":e.agentId?"Open agent":"Open project":n?.kind==="native"?"Open session":n?.conversationId?"Open conversation":"Open agent",S={view:"agents-v2",...i.projectSlug?{projectSlug:i.projectSlug}:{},...i.indexView?{indexView:i.indexView}:{},...i.machineId?{machineId:i.machineId}:{},...i.showEphemeral?{showEphemeral:!0}:{}};return s.jsxs("div",{className:"s-pi s-pi-aside",children:[s.jsxs("header",{className:"pi-asideHead",children:[s.jsx("span",{className:"pi-asideAvatar",children:s.jsx(R,{agent:{name:m,harness:h,state:c?"in_turn":null},placement:"row",size:38})}),s.jsxs("div",{className:"pi-asideIdent",children:[s.jsxs("div",{className:"pi-asideTop",children:[s.jsx("span",{className:"pi-asideName",title:m,children:m}),s.jsx("span",{className:"pi-asideHmark","aria-hidden":!0,children:s.jsx(O,{harness:h,size:13})}),s.jsxs("span",{className:"pi-asideProj",children:["/",I]})]}),s.jsxs("div",{className:"pi-asideSub",children:[x?s.jsx("span",{className:"pi-asideBranch",children:x}):null,s.jsxs("span",{className:"pi-asideStatus","data-tone":f,children:[c?s.jsx("span",{className:"pi-asidePulse","aria-hidden":!0}):null,b]})]})]})]}),s.jsxs("div",{className:"pi-asideBody",children:[s.jsx("h2",{className:"pi-asideHeadline",children:k}),s.jsxs("div",{className:"pi-asideReadouts",children:[s.jsx(p,{label:"Last active",value:v?P(v,d):"—"}),s.jsx(p,{label:e?"Session":"Conversations",value:e?"1":String(n?.sessionCount??0)}),s.jsx(p,{label:"Harness",value:h}),n?.contextPct!=null?s.jsx(p,{label:"Context",value:`${n.contextPct}%`}):null]}),e?s.jsxs("div",{className:"pi-asideSection",children:[s.jsx("div",{className:"pi-asideSectionHead",children:"Session context"}),s.jsxs("div",{className:"pi-asideLine",children:[j?s.jsxs("span",{title:j,children:["ref · ",j]}):s.jsx("span",{children:"No stable session reference yet."}),u?s.jsxs("span",{title:u,children:["root · ",y(u)]}):null,e.conversationId?s.jsxs("span",{title:e.conversationId,children:["conversation · ",e.conversationId]}):null]})]}):null,s.jsxs("div",{className:"pi-asideActions",children:[s.jsxs("button",{type:"button",className:"pi-asideBtn pi-asideBtnPrimary",onClick:()=>r(w),children:[A,s.jsx(g,{size:13,strokeWidth:2,"aria-hidden":!0})]}),N?s.jsxs("button",{type:"button",className:"pi-asideBtn",onClick:()=>r(N),children:["Observe",s.jsx(g,{size:13,strokeWidth:2,"aria-hidden":!0})]}):null,s.jsx("button",{type:"button",className:"pi-asideBtn",onClick:()=>r(S),children:"Clear"})]})]})]})}export{Ps as ProjectsThreadAside};
|