@openscout/scout 0.2.78 → 0.2.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/client/assets/ActivityScreen-DnqqRSlS.js +1 -0
- package/dist/client/assets/{AddProjectForm-DMnobKch.js → AddProjectForm-BoVtelSP.js} +1 -1
- package/dist/client/assets/{AgentAvatar-D90c1Rzk.js → AgentAvatar-CufDA4A-.js} +1 -1
- package/dist/client/assets/AgentConfigurationScreen-CJqoMA0J.js +1 -0
- package/dist/client/assets/AgentDefinitionsWorkspace-FpEkb-tu.js +1 -0
- package/dist/client/assets/{AgentDetailCard-BcRBRp88.js → AgentDetailCard-DxxVkgT1.js} +1 -1
- package/dist/client/assets/AgentFloorView-CycUn0Lv.js +1 -0
- package/dist/client/assets/AgentInfoScreen-CAQAxpAK.js +1 -0
- package/dist/client/assets/{AgentLaneCard-RrNnDZu8.js → AgentLaneCard-DTUvE96I.js} +1 -1
- package/dist/client/assets/{AgentLaneChrome-D9ZwUKrl.js → AgentLaneChrome-BfVygkgL.js} +1 -1
- package/dist/client/assets/{AgentLaneDetailSheet-BXbPls9N.js → AgentLaneDetailSheet-CWs9wKWk.js} +1 -1
- package/dist/client/assets/{AgentLaneSummaryResize-BhFmGNzT.js → AgentLaneSummaryResize-CMgzYvAA.js} +1 -1
- package/dist/client/assets/AgentLanesEmbedScreen-BUCW4nUj.js +1 -0
- package/dist/client/assets/{AgentLanesPreflight-eSAoDsPi.js → AgentLanesPreflight-KWfLcaNB.js} +1 -1
- package/dist/client/assets/AgentLanesView-CxfbV8Kd.js +2 -0
- package/dist/client/assets/{AgentLiveActions-DBtnD0qE.js → AgentLiveActions-CZdAInEu.js} +1 -1
- package/dist/client/assets/{AgentSessions-DyqOf4nG.js → AgentSessions-Bkr0lyry.js} +2 -2
- package/dist/client/assets/AgentsConsole-WtFVqaPJ.js +1 -0
- package/dist/client/assets/AgentsScreen-BMXvuiA2.js +1 -0
- package/dist/client/assets/AgentsSubnav-BTNjPYoA.js +1 -0
- package/dist/client/assets/{AtopView-BCkae3e1.js → AtopView-_OKDlZ1h.js} +1 -1
- package/dist/client/assets/BackToPicker-CkUmHuuo.js +1 -0
- package/dist/client/assets/{BriefingDetailScreen-BwFyysT8.js → BriefingDetailScreen-i54EtZKW.js} +1 -1
- package/dist/client/assets/{BriefingsScreen-BQEevztH.js → BriefingsScreen-CBrHojlQ.js} +1 -1
- package/dist/client/assets/{BrokerMetadataPanel-7UjcuNjd.js → BrokerMetadataPanel-opTLuZU6.js} +1 -1
- package/dist/client/assets/{BrokerScreen-7ekklu88.js → BrokerScreen-CObCQvoy.js} +2 -2
- package/dist/client/assets/{ChatCollapsedStrip-CQSYSd8s.js → ChatCollapsedStrip-Dr2vmKXQ.js} +1 -1
- package/dist/client/assets/CodeDiffPane-CLOGjwul.js +1 -0
- package/dist/client/assets/{CodeProjectPicker-DqKFCpLU.js → CodeProjectPicker-DTV8hR6A.js} +1 -1
- package/dist/client/assets/CodeScreen-BXqi72NK.js +1 -0
- package/dist/client/assets/{ContextMenu-bARZqTzD.js → ContextMenu-BlBQhpax.js} +1 -1
- package/dist/client/assets/{ConversationComposer-Bla3DDvM.js → ConversationComposer-BBNPa5S9.js} +1 -1
- package/dist/client/assets/ConversationFeedRows-BuejHMCY.js +1 -0
- package/dist/client/assets/ConversationHeader-DXMT-YXv.js +1 -0
- package/dist/client/assets/ConversationPanels-DHCtilQF.js +2 -0
- package/dist/client/assets/ConversationScreen-DSxIt9pq.css +1 -0
- package/dist/client/assets/ConversationScreen-Dz2d_Z_F.js +1 -0
- package/dist/client/assets/ConversationStatus-DSgdVofa.js +1 -0
- package/dist/client/assets/{DataTable-E8s_MmoA.js → DataTable-0DwuXyvW.js} +1 -1
- package/dist/client/assets/{DispatchAftermath-Dpe88DFX.js → DispatchAftermath-BrreQifA.js} +1 -1
- package/dist/client/assets/{DocumentFocusViewer-BeVwwl26.js → DocumentFocusViewer-DU_9BHsD.js} +1 -1
- package/dist/client/assets/{EmbeddableSurfacesLab-BQqFQVnI.js → EmbeddableSurfacesLab-DdaswbfI.js} +1 -1
- package/dist/client/assets/{EmptyState-4F9XDFQm.js → EmptyState-CoL-QuUO.js} +1 -1
- package/dist/client/assets/{FileViewerPane-CLgUhSm4.js → FileViewerPane-C9Ly01Ef.js} +1 -1
- package/dist/client/assets/{FleetSearch-Dz5euQJe.js → FleetSearch-DlWTLl-v.js} +1 -1
- package/dist/client/assets/FlightObserveScreen-C-9S0nA5.js +1 -0
- package/dist/client/assets/{FollowScreen-DZ4qfYOY.js → FollowScreen--Q04xSSE.js} +1 -1
- package/dist/client/assets/{HarnessMark-Cbv3Ib0c.js → HarnessMark-Dm_qm1Ku.js} +1 -1
- package/dist/client/assets/HarnessesScreen-Y54viPX8.js +1 -0
- package/dist/client/assets/{HomeHero-B3uYd-pP.js → HomeHero-Cfsow7qL.js} +1 -1
- package/dist/client/assets/KnowledgeSearchInspector-DKashKoH.js +1 -0
- package/dist/client/assets/KnowledgeSearchScreen-DsdDz8wY.js +1 -0
- package/dist/client/assets/{LaneToolHoverCard-Bla0gBdm.js → LaneToolHoverCard-BzehBmdi.js} +1 -1
- package/dist/client/assets/LaneTraceDetailSheet-CBf_aNZx.js +1 -0
- package/dist/client/assets/{LaneTraceEventFocus-BF9ERP5O.js → LaneTraceEventFocus-DYvHfs_3.js} +1 -1
- package/dist/client/assets/{MeshCanvas-DFEPkpqY.js → MeshCanvas-DIjlrMPU.js} +2 -2
- package/dist/client/assets/{MeshCanvasMinimap-CyVFYixr.js → MeshCanvasMinimap-DEq-PkF0.js} +1 -1
- package/dist/client/assets/MeshScreen-TgDtz-1l.js +1 -0
- package/dist/client/assets/{MeshTopologyView-CalkZghg.js → MeshTopologyView-BMHpH5BU.js} +2 -2
- package/dist/client/assets/{MessageComposerSuggestions-DpxN9WiB.js → MessageComposerSuggestions-zAUUcLOv.js} +1 -1
- package/dist/client/assets/MessagesScreen-BTQL0UcE.js +1 -0
- package/dist/client/assets/{MissionControlView-lUeAiSVg.js → MissionControlView-D59SPnAm.js} +1 -1
- package/dist/client/assets/{MissionFocusOverlay-wlCmWDCT.js → MissionFocusOverlay-C7cPt6eU.js} +1 -1
- package/dist/client/assets/MissionLeftAgentRow-CxlH3dON.js +1 -0
- package/dist/client/assets/{MissionLogPane-__MVtEl9.js → MissionLogPane-Ye3YlF9s.js} +1 -1
- package/dist/client/assets/{NewAgentModal-Bg-eWHpY.js → NewAgentModal-DprvD4EK.js} +1 -1
- package/dist/client/assets/NewChatComposer-B5FnPyzS.js +19 -0
- package/dist/client/assets/{NewChatOrigin-Bk2OyVjI.js → NewChatOrigin--pHWUb4V.js} +1 -1
- package/dist/client/assets/ObserveEmbedScreen-CfvrnOiZ.js +2 -0
- package/dist/client/assets/{ObserveTextFlow-rsFj_rVo.js → ObserveTextFlow-CBitljxi.js} +2 -2
- package/dist/client/assets/{ObservedTopologyPanel-DyUeV98H.js → ObservedTopologyPanel-Dv6fbHzW.js} +1 -1
- package/dist/client/assets/OpenScoutAppShell-BIp0WitK.js +87 -0
- package/dist/client/assets/OpsAgentsView-CoBfAigH.js +1 -0
- package/dist/client/assets/OpsScreen-Bbo0W64T.js +1 -0
- package/dist/client/assets/OpsSubnav-CoN8utF8.js +1 -0
- package/dist/client/assets/{PlanView-C1CjH3PG.js → PlanView-DYtt8H37.js} +1 -1
- package/dist/client/assets/ProjectAgentProfile-FiiIcB5R.js +1 -0
- package/dist/client/assets/{ProjectAgentProfileBar-CtTpj6fU.js → ProjectAgentProfileBar-B3IvVbqS.js} +1 -1
- package/dist/client/assets/ProjectAgentProfileHero-D5E8yvDj.js +1 -0
- package/dist/client/assets/ProjectsInbox-BWiXjGi7.js +2 -0
- package/dist/client/assets/{ProjectsRail-BgiuV4LR.js → ProjectsRail-DEDS-M1c.js} +1 -1
- package/dist/client/assets/ProjectsScreen-Cxk4CuYn.js +1 -0
- package/dist/client/assets/ProjectsThreadAside-BF66ugT5.js +1 -0
- package/dist/client/assets/Provider-tFc3jqZ4.js +1 -0
- package/dist/client/assets/{RailRow-BoGxAHNF.js → RailRow-BTlVAnHS.js} +1 -1
- package/dist/client/assets/RawSessionsTable-BsGVgZB3.js +1 -0
- package/dist/client/assets/RealtimeVoiceScreen-B0Bem5Rc.js +1 -0
- package/dist/client/assets/{RepoDiffEmbedScreen-C0rumUME.js → RepoDiffEmbedScreen-CtTdlQ2A.js} +1 -1
- package/dist/client/assets/{RepoDiffPageScreen-DMv6DioL.js → RepoDiffPageScreen-BRvaVYoC.js} +1 -1
- package/dist/client/assets/RepoDiffViewer-Bo0gREMj.js +7 -0
- package/dist/client/assets/RepoDiffViewerLazy-C8UPk4oo.js +2 -0
- package/dist/client/assets/{ReposScreen-CB_YBWYf.js → ReposScreen-BBkJf8xT.js} +2 -2
- package/dist/client/assets/{ScoutDeckSurface-CxIYFyWx.js → ScoutDeckSurface-Bi9ov9Bm.js} +1 -1
- package/dist/client/assets/{ScoutSurface-CYz_TcWC.js → ScoutSurface-DEQg_7Io.js} +1 -1
- package/dist/client/assets/{ScoutbotBroadcastChip-L_R9atj0.js → ScoutbotBroadcastChip-DJXuyn73.js} +1 -1
- package/dist/client/assets/{ScoutbotFxLab-CgiZMDMW.js → ScoutbotFxLab-BgsuLDjo.js} +1 -1
- package/dist/client/assets/{ScoutbotRealtimeVoiceCall-FMQOr1Np.js → ScoutbotRealtimeVoiceCall-Bzyl0BCS.js} +1 -1
- package/dist/client/assets/{SecondaryNav-B3-nh5dM.js → SecondaryNav-Bks0CO2h.js} +1 -1
- package/dist/client/assets/SessionEmbedScreen-b0Zgmfx5.js +1 -0
- package/dist/client/assets/SessionObserve-CLrHfAKZ.css +1 -0
- package/dist/client/assets/SessionObserve-Dlx5vDaV.js +12 -0
- package/dist/client/assets/SessionObserveEvidence-ChBD1d4c.js +1 -0
- package/dist/client/assets/SessionRefScreen-D7TfPYPN.js +1 -0
- package/dist/client/assets/SessionsScreen-BlknOWAd.js +1 -0
- package/dist/client/assets/{SettingsDrawer-XfdAa_nD.js → SettingsDrawer-C587L1i1.js} +3 -3
- package/dist/client/assets/SettingsDrawer-UX7pFJU_.css +1 -0
- package/dist/client/assets/SettingsScreen-BIlYxv_a.js +1 -0
- package/dist/client/assets/{ShikiPane-Ap1iPxYb.js → ShikiPane-I_OTW5NO.js} +1 -1
- package/dist/client/assets/{SlidePanel-COwtoJqR.js → SlidePanel-FCqT1zO3.js} +1 -1
- package/dist/client/assets/SpriteAvatar-CQs-jC-v.js +1 -0
- package/dist/client/assets/{StatusPill-DhBL__p8.js → StatusPill-CbABggnQ.js} +1 -1
- package/dist/client/assets/{TailView-DGj_5HA9.js → TailView-C_MXVSum.js} +2 -2
- package/dist/client/assets/Terminal-DwZyo8kA.js +1 -0
- package/dist/client/assets/TerminalEmbedScreen-Czp3tQyd.js +1 -0
- package/dist/client/assets/{TextDocumentSurface-BpAw4eQS.js → TextDocumentSurface-C-9EtYqt.js} +1 -1
- package/dist/client/assets/{TmuxPeek-m1osv33Q.js → TmuxPeek-Dz1gJ2pU.js} +1 -1
- package/dist/client/assets/{VoicePermissionsPanel-DsK53ar4.js → VoicePermissionsPanel-MfICy9kk.js} +1 -1
- package/dist/client/assets/{WorkDetailScreen-Bx0JimPC.js → WorkDetailScreen-Cs7kdllj.js} +3 -3
- package/dist/client/assets/{WorkFilesViewer-Btl6C2Q1.js → WorkFilesViewer-CF-nhtZ4.js} +1 -1
- package/dist/client/assets/{activity-CA8qS6PI.js → activity-WhBf3FXP.js} +1 -1
- package/dist/client/assets/{addon-fit-BZ-kXjeN.js → addon-fit-q-x_HytU.js} +1 -1
- package/dist/client/assets/{addon-webgl-D9-EQVEK.js → addon-webgl-fhhvEA9h.js} +1 -1
- package/dist/client/assets/{agent-essentials-BSY1o46q.js → agent-essentials-DyJiUGpZ.js} +1 -1
- package/dist/client/assets/agent-identity-xQHedtLl.js +1 -0
- package/dist/client/assets/agent-lane-card-BkWVDYM8.css +1 -0
- package/dist/client/assets/{agent-lane-card-model-r2frk57c.js → agent-lane-card-model-BCIwPjEh.js} +1 -1
- package/dist/client/assets/{agent-lane-detail-Djm3YJEa.js → agent-lane-detail-Cw4QVAgH.js} +1 -1
- package/dist/client/assets/{agent-lane-preview-CmHVe3dU.js → agent-lane-preview-BtnfNyFR.js} +1 -1
- package/dist/client/assets/{agent-lanes-model-B4YTt4OF.js → agent-lanes-model-Bl6xfviL.js} +1 -1
- package/dist/client/assets/{arc.es-CQBb-dVu.js → arc.es-DPJ0xRV6.js} +1 -1
- package/dist/client/assets/{arrow-down-BPLe0am9.js → arrow-down-DsD-dYj-.js} +1 -1
- package/dist/client/assets/{arrow-left-DEZzHiPS.js → arrow-left-WjQIN9J6.js} +1 -1
- package/dist/client/assets/{arrow-up-right-ClxBnsi7.js → arrow-up-right-CtTDrZJr.js} +1 -1
- package/dist/client/assets/{bot-eu8pBNvI.js → bot-B_Uzf4_O.js} +1 -1
- package/dist/client/assets/{check-DjgFiBxb.js → check-BbgHJX8u.js} +1 -1
- package/dist/client/assets/{chevron-down-BGk5qoEw.js → chevron-down-BFai6ZfE.js} +1 -1
- package/dist/client/assets/{chevron-right-XiIHsk4m.js → chevron-right-CyUa1zXx.js} +1 -1
- package/dist/client/assets/chunk-HRAB3GC3-CvwpNg-G.js +1 -0
- package/dist/client/assets/{chunk-T65CQEWV-CrzwSeEt.js → chunk-T65CQEWV-DI4NKdNq.js} +1 -1
- package/dist/client/assets/{chunk-YOZR3KYS-Bet8khjg.js → chunk-YOZR3KYS-BW85tiCr.js} +3 -3
- package/dist/client/assets/clock-DviOalxA.js +1 -0
- package/dist/client/assets/{code-xml-B6jOCM4V.js → code-xml-05TD3uOC.js} +1 -1
- package/dist/client/assets/content-2u_eV3fX.js +1 -0
- package/dist/client/assets/content-5irOghrY.js +1 -0
- package/dist/client/assets/content-8Z_0CwtD.js +1 -0
- package/dist/client/assets/content-B38YRDBu.js +1 -0
- package/dist/client/assets/content-BE3uK0LB.js +1 -0
- package/dist/client/assets/{content-C2EwTb2y.js → content-BtIxSqVY.js} +1 -1
- package/dist/client/assets/content-CFsPAihU.js +1 -0
- package/dist/client/assets/content-CKj5g5tu.js +1 -0
- package/dist/client/assets/{content-D5kJmfgl.js → content-CLDWXf9Z.js} +1 -1
- package/dist/client/assets/content-CRr73E0r.js +1 -0
- package/dist/client/assets/content-CVR75_Uj.js +1 -0
- package/dist/client/assets/content-Czdp7_JQ.js +1 -0
- package/dist/client/assets/content-D0_EJ6nP.js +1 -0
- package/dist/client/assets/content-DNmxpNhD.js +1 -0
- package/dist/client/assets/content-XpbI9uxd.js +1 -0
- package/dist/client/assets/content-cyxWdgKQ.js +1 -0
- package/dist/client/assets/{context-budget-CbB4BDcO.js → context-budget-DX_fwUs3.js} +1 -1
- package/dist/client/assets/{conversation-icons-IIG5ha6D.js → conversation-icons-DohQL6GI.js} +1 -1
- package/dist/client/assets/conversation-model-C4yb6_FA.js +1 -0
- package/dist/client/assets/conversation-motion-features-CifSdJtm.js +1 -0
- package/dist/client/assets/{copy-CQGYbxdu.js → copy-CwCAivnc.js} +1 -1
- package/dist/client/assets/{createLucideIcon-OpA4Amw5.js → createLucideIcon-DlxlBfLC.js} +1 -1
- package/dist/client/assets/discover-DoiAJo4Z.js +2 -0
- package/dist/client/assets/embed-entry-D1Or9S4d.js +2 -0
- package/dist/client/assets/{external-link-CXBytO9o.js → external-link-CnjcXf32.js} +1 -1
- package/dist/client/assets/{eye-0PvebX_a.js → eye-So8tNNK6.js} +1 -1
- package/dist/client/assets/{file-text-BODxCjcz.js → file-text-i3xTDUjJ.js} +1 -1
- package/dist/client/assets/{gestures-CcwOTu8C.js → gestures-CgvAMd6F.js} +1 -1
- package/dist/client/assets/{home-moving-signal-CK147hxn.js → home-moving-signal-BdkERL6B.js} +1 -1
- package/dist/client/assets/home-now-card-lLkv6nQs.js +1 -0
- package/dist/client/assets/{home-now-card-nano-BcjnOU9H.js → home-now-card-nano-CkLHUQ4J.js} +1 -1
- package/dist/client/assets/hooks-BPLDD9yu.js +2 -0
- package/dist/client/assets/inbox-thread-redesign-B_1ocqaX.css +1 -0
- package/dist/client/assets/index-DGoLx89y.js +1 -0
- package/dist/client/assets/index-DITWsjFb.css +1 -0
- package/dist/client/assets/index-m6dFtY5f.js +1 -0
- package/dist/client/assets/index-pY8-Mz7y.js +1 -0
- package/dist/client/assets/{index-DMiGbrBt.js → index-sUomXsrf.js} +6 -6
- package/dist/client/assets/{inspector-panel-DPoCWxKs.js → inspector-panel-DhXd-YbT.js} +2 -2
- package/dist/client/assets/{keyboard-nav-2kv_tGUS.js → keyboard-nav-BhZZ5HEq.js} +1 -1
- package/dist/client/assets/knowledge-search-D_bLoYtC.css +1 -0
- package/dist/client/assets/{lane-observe-D0rfKDnU.js → lane-observe-DrhKkQ3A.js} +1 -1
- package/dist/client/assets/{lane-roster-store-D8x1jac2.js → lane-roster-store-NE15Oe6M.js} +1 -1
- package/dist/client/assets/left-B6eawimv.js +1 -0
- package/dist/client/assets/left-BL2uBHe0.js +2 -0
- package/dist/client/assets/left-BNJguPDG.js +1 -0
- package/dist/client/assets/left-BvCtvN0f.js +1 -0
- package/dist/client/assets/left-CfBb6bxM.js +1 -0
- package/dist/client/assets/left-DTrlBF0h.js +2 -0
- package/dist/client/assets/left-agents-DsOHgDCY.js +1 -0
- package/dist/client/assets/left-d4hlBBxY.js +1 -0
- package/dist/client/assets/left-default-BRCwoCJr.js +1 -0
- package/dist/client/assets/left-lanes-DNtoRzoV.js +1 -0
- package/dist/client/assets/left-mission-DsTu2X5Y.js +1 -0
- package/dist/client/assets/left-plan-CtySjsXC.js +2 -0
- package/dist/client/assets/library-CLpgWNJO.js +1 -0
- package/dist/client/assets/{loader-circle-CbHjZsz1.js → loader-circle-lWOOKezu.js} +1 -1
- package/dist/client/assets/{local-agents--00gLMqr.js → local-agents-C7fDHLVC.js} +1 -1
- package/dist/client/assets/{mentions-jSuTGeet.js → mentions-CY_wPZc5.js} +1 -1
- package/dist/client/assets/mesh-ops-B1kDjizF.css +1 -0
- package/dist/client/assets/mesh-ops-Kn8pCtyJ.js +1 -0
- package/dist/client/assets/{mesh-view-store-CWidRbTE.js → mesh-view-store-D14ihwkF.js} +1 -1
- package/dist/client/assets/{message-circle-CG-96zts.js → message-circle-C5UZ6fO7.js} +1 -1
- package/dist/client/assets/{message-markup-3J9pi3nx.js → message-markup-C8Nx04sP.js} +1 -1
- package/dist/client/assets/{message-square-DSaGpjFU.js → message-square-BD-4UUdc.js} +1 -1
- package/dist/client/assets/{mission-control-store-BlnEhiCq.js → mission-control-store-xQHVQdm8.js} +1 -1
- package/dist/client/assets/{model-CpAxGuis.js → model-IGCUEsMy.js} +1 -1
- package/dist/client/assets/{observe-CuLGD9Zp.js → observe-uJfIlIUV.js} +1 -1
- package/dist/client/assets/{page-status-DpkedE1F.js → page-status-BymFEFai.js} +1 -1
- package/dist/client/assets/paperclip-DL9BXPp2.js +1 -0
- package/dist/client/assets/{plus--b1raV_O.js → plus-C9lTjsgd.js} +1 -1
- package/dist/client/assets/profile-BqY5tesX.js +1 -0
- package/dist/client/assets/{projects-inbox-CHyUFQ6w.js → projects-inbox-DfVmGFFk.js} +1 -1
- package/dist/client/assets/{radio-Bz8ZePxj.js → radio-DedMyP8J.js} +1 -1
- package/dist/client/assets/{refresh-cw-BBmAnCB7.js → refresh-cw-D8PFyhUa.js} +1 -1
- package/dist/client/assets/repo-diff-DyYmQMSA.css +1 -0
- package/dist/client/assets/resolve-panes-1xeZMuaw.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-PLr32WHN.js +1 -0
- package/dist/client/assets/right-1x7HzabC.js +1 -0
- package/dist/client/assets/{right-DjRXbnRP.js → right-C1sIsSHR.js} +1 -1
- package/dist/client/assets/right-CFzPUzlF.js +1 -0
- package/dist/client/assets/right-CRKyeJDk.js +1 -0
- package/dist/client/assets/right-CagzkLWg.js +1 -0
- package/dist/client/assets/right-CsV149pN.js +1 -0
- package/dist/client/assets/right-DITNyG2s.js +1 -0
- package/dist/client/assets/right-E3nNcLE3.js +1 -0
- package/dist/client/assets/right-eUQvSjd7.js +1 -0
- package/dist/client/assets/right-ozp4nM44.js +1 -0
- package/dist/client/assets/{rocket-BSNS_rLs.js → rocket-CriBwkHM.js} +1 -1
- package/dist/client/assets/router-Dja9_ygK.js +1 -0
- package/dist/client/assets/{runtime-picker-Bcl5iIX5.js → runtime-picker-DOZpZOlt.js} +1 -1
- package/dist/client/assets/{scope-views-U-ucT9m0.js → scope-views-BF_RvGKU.js} +1 -1
- package/dist/client/assets/{scout-voice-CU5c0LGi.js → scout-voice-BZ4KqADJ.js} +1 -1
- package/dist/client/assets/{scroll-text-D6Pdnar7.js → scroll-text-BIYf6g6N.js} +1 -1
- package/dist/client/assets/{search-CWfZtOt2.js → search-DCT_EvPr.js} +1 -1
- package/dist/client/assets/secondaryNavConfig-Drb7wPG4.js +1 -0
- package/dist/client/assets/{selection-bridge-16pk1qyG.js → selection-bridge-CJOTyYQs.js} +1 -1
- package/dist/client/assets/{send-horizontal-Bg5-QggH.js → send-horizontal-DDwOgEs3.js} +1 -1
- package/dist/client/assets/{server-CPp4ZJhZ.js → server-CHZCp3cF.js} +1 -1
- package/dist/client/assets/{session-catalog-BmoyVTJ_.js → session-catalog-XhGxCtP-.js} +1 -1
- package/dist/client/assets/{session-table-DZcrKoIH.js → session-table-sAVe44a4.js} +1 -1
- package/dist/client/assets/{sliders-horizontal-1oW76Xc9.js → sliders-horizontal-B9Nj-Y4J.js} +1 -1
- package/dist/client/assets/sparkles-up7pVlX-.js +1 -0
- package/dist/client/assets/{sse-CjIkKo46.js → sse-CVoGDiKW.js} +1 -1
- package/dist/client/assets/{tail-events-D19uAGe3.js → tail-events-CTipUIli.js} +1 -1
- package/dist/client/assets/{terminal-B9AOZQKR.js → terminal-DXQISjZn.js} +1 -1
- package/dist/client/assets/{terminal-relay-CWbJ1RCW.js → terminal-relay-B5Sma7fK.js} +1 -1
- package/dist/client/assets/{terminal-takeover-B8UeD9OX.js → terminal-takeover-X97KCSJk.js} +1 -1
- package/dist/client/assets/{time-DltNTpLl.js → time-Dhsh_2EG.js} +1 -1
- package/dist/client/assets/{use-conversation-list-Byab41G6.js → use-conversation-list-B1T6J_qE.js} +1 -1
- package/dist/client/assets/{use-fleet-active-asks-BIbQx5AS.js → use-fleet-active-asks-DLofGhhK.js} +1 -1
- package/dist/client/assets/use-mesh-ops-items-ByGZk8rU.js +1 -0
- package/dist/client/assets/{use-reduced-motion-RRBkmVkk.js → use-reduced-motion-Cvk-HRKg.js} +1 -1
- package/dist/client/assets/use-scout-dev-flags-BHvg3G2c.js +1 -0
- package/dist/client/assets/{useAgentHoverCard-DMrbBif0.js → useAgentHoverCard-D5e8Qg1z.js} +1 -1
- package/dist/client/assets/useContentSecondaryNav-ZfBNi3d4.js +1 -0
- package/dist/client/assets/usePierreRuntime-DIVunfX0.js +50 -0
- package/dist/client/assets/{wrench-Bkc_0lKF.js → wrench-pEVd8JnN.js} +1 -1
- package/dist/client/assets/{x-D3GElQbe.js → x-0XjXwGqq.js} +1 -1
- package/dist/client/assets/{xterm-BKR8oAkR.js → xterm-CRLlV1Xp.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/drizzle/0007_lean_venus.sql +26 -0
- package/dist/drizzle/0008_luxuriant_ted_forrester.sql +1 -0
- package/dist/drizzle/meta/0007_snapshot.json +5767 -0
- package/dist/drizzle/meta/0008_snapshot.json +5774 -0
- package/dist/drizzle/meta/_journal.json +14 -0
- package/dist/main.mjs +27836 -4437
- package/dist/node/main.mjs +31770 -12098
- package/dist/pairing-runtime-controller.mjs +37653 -16847
- package/dist/runtime/base-daemon.mjs +109 -18
- package/dist/runtime/broker-daemon.mjs +22018 -2739
- package/dist/runtime/broker-process-manager.mjs +122 -12
- package/dist/runtime/mesh-discover.mjs +90 -13
- package/dist/scout-control-plane-web.mjs +22453 -3299
- package/dist/scout-web-server.mjs +22453 -3299
- package/dist/statusline.mjs +2 -0
- package/package.json +3 -1
- package/dist/client/assets/ActivityScreen-Cu_1V4bq.js +0 -1
- package/dist/client/assets/AgentConfigurationScreen-BqfOz90D.js +0 -1
- package/dist/client/assets/AgentDefinitionsWorkspace-CUpUrY57.js +0 -1
- package/dist/client/assets/AgentFloorView-8LoAEBwS.js +0 -1
- package/dist/client/assets/AgentInfoScreen-DZs2_ibL.js +0 -1
- package/dist/client/assets/AgentLanesEmbedScreen-W3qs022h.js +0 -1
- package/dist/client/assets/AgentLanesView-B9vuEEmZ.js +0 -2
- package/dist/client/assets/AgentsConsole-BgiYP2wR.js +0 -1
- package/dist/client/assets/AgentsScreen-DBi8x4MB.js +0 -1
- package/dist/client/assets/AgentsSubnav-DIEO4NPx.js +0 -1
- package/dist/client/assets/BackToPicker-BRvfostO.js +0 -1
- package/dist/client/assets/CodeDiffPane-DDPt6KPh.js +0 -1
- package/dist/client/assets/CodeScreen-BxCrpRHd.js +0 -1
- package/dist/client/assets/ConversationFeedRows-B_gPxcqA.js +0 -1
- package/dist/client/assets/ConversationHeader-DE3FC0m-.js +0 -1
- package/dist/client/assets/ConversationPanels-DLek4H6A.js +0 -2
- package/dist/client/assets/ConversationScreen-BDRhx-RU.js +0 -1
- package/dist/client/assets/ConversationScreen-C9yMAMYF.css +0 -1
- package/dist/client/assets/ConversationStatus-BwVLiiO4.js +0 -1
- package/dist/client/assets/FlightObserveScreen-6RpZYwVz.js +0 -1
- package/dist/client/assets/HarnessesScreen-CznAImej.js +0 -1
- package/dist/client/assets/KnowledgeSearchInspector-Dgdkfvvz.js +0 -1
- package/dist/client/assets/KnowledgeSearchScreen-DJDGGaqC.js +0 -1
- package/dist/client/assets/LaneTraceDetailSheet-D1CspRbl.js +0 -1
- package/dist/client/assets/MeshScreen-DFgevn8N.js +0 -1
- package/dist/client/assets/MessagesScreen-C8YKW10Y.js +0 -1
- package/dist/client/assets/MissionLeftAgentRow-BpZWntfl.js +0 -1
- package/dist/client/assets/NewChatComposer-Cs6OsxK6.js +0 -19
- package/dist/client/assets/ObserveEmbedScreen-y2EpuqRZ.js +0 -2
- package/dist/client/assets/OpenScoutAppShell-C_URc8sV.js +0 -87
- package/dist/client/assets/OpsAgentsView-UN7iOscs.js +0 -1
- package/dist/client/assets/OpsScreen-Buf3LKjb.js +0 -1
- package/dist/client/assets/OpsSubnav-DsuXzHah.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-DJusrAV-.js +0 -1
- package/dist/client/assets/ProjectAgentProfileHero-BFwNJo_N.js +0 -1
- package/dist/client/assets/ProjectsInbox-GhVMxOhw.js +0 -2
- package/dist/client/assets/ProjectsScreen-eNUBy4YU.js +0 -1
- package/dist/client/assets/ProjectsThreadAside-CoBgnHmr.js +0 -1
- package/dist/client/assets/Provider-C7UKGHQy.js +0 -1
- package/dist/client/assets/RawSessionsTable-DL8y_eEy.js +0 -1
- package/dist/client/assets/RealtimeVoiceScreen-ffS-39zy.js +0 -1
- package/dist/client/assets/RepoDiffViewer-D_exm6xK.js +0 -7
- package/dist/client/assets/RepoDiffViewerLazy-BPgF92Bg.js +0 -2
- package/dist/client/assets/SessionEmbedScreen-BVC7yvWF.js +0 -1
- package/dist/client/assets/SessionObserve-BpggNO_M.css +0 -1
- package/dist/client/assets/SessionObserve-yfXFafp8.js +0 -12
- package/dist/client/assets/SessionRefScreen-DRgJu7Jo.js +0 -1
- package/dist/client/assets/SessionsScreen-D6XUsZfA.js +0 -1
- package/dist/client/assets/SettingsDrawer-CmJt72ww.css +0 -1
- package/dist/client/assets/SettingsScreen-Cy8z-EuR.js +0 -1
- package/dist/client/assets/SpriteAvatar-DyaGuhik.js +0 -1
- package/dist/client/assets/Terminal-CqvGbjXU.js +0 -1
- package/dist/client/assets/TerminalEmbedScreen-DuZZFFzW.js +0 -1
- package/dist/client/assets/agent-lane-card-Dm7YWoew.css +0 -1
- package/dist/client/assets/content-BDt9VBPk.js +0 -1
- package/dist/client/assets/content-BIXf4cKR.js +0 -1
- package/dist/client/assets/content-BLm0NBJM.js +0 -1
- package/dist/client/assets/content-C5UbLsDF.js +0 -1
- package/dist/client/assets/content-CR3vdrYY.js +0 -1
- package/dist/client/assets/content-CSPVmo2s.js +0 -1
- package/dist/client/assets/content-C_FGqx1X.js +0 -1
- package/dist/client/assets/content-CvlVUOG8.js +0 -1
- package/dist/client/assets/content-DTpQsomG.js +0 -1
- package/dist/client/assets/content-DikVsqLf.js +0 -1
- package/dist/client/assets/content-DlUe5Ono.js +0 -1
- package/dist/client/assets/content-GIBv_55n.js +0 -1
- package/dist/client/assets/content-Q2oclDzi.js +0 -1
- package/dist/client/assets/conversation-model-B47vYmWN.js +0 -1
- package/dist/client/assets/conversation-motion-features-BdAONVls.js +0 -1
- package/dist/client/assets/discover-C1YwpBDE.js +0 -2
- package/dist/client/assets/embed-entry-BAcGL3g9.js +0 -2
- package/dist/client/assets/home-now-card-BgvNWuea.js +0 -1
- package/dist/client/assets/hooks-B6y_O2FB.js +0 -2
- package/dist/client/assets/inbox-thread-redesign-Bz4FjWzr.css +0 -1
- package/dist/client/assets/index-BcuhqXLe.js +0 -1
- package/dist/client/assets/index-CJXzfjo9.js +0 -1
- package/dist/client/assets/index-DQPvraRS.js +0 -1
- package/dist/client/assets/index-DxGoC5l5.css +0 -1
- package/dist/client/assets/knowledge-search-CVxQwxPn.js +0 -1
- package/dist/client/assets/knowledge-search-DjrQdiiW.css +0 -1
- package/dist/client/assets/left-C--GiIh8.js +0 -2
- package/dist/client/assets/left-Cj7Rt89X.js +0 -1
- package/dist/client/assets/left-CpNEtFEg.js +0 -1
- package/dist/client/assets/left-CzXAuK_t.js +0 -2
- package/dist/client/assets/left-agents-Bo9sO1by.js +0 -1
- package/dist/client/assets/left-bN4PCAXa.js +0 -1
- package/dist/client/assets/left-default-DV9GdvYi.js +0 -1
- package/dist/client/assets/left-jYYGAOYD.js +0 -1
- package/dist/client/assets/left-lanes-D0l_Co7V.js +0 -1
- package/dist/client/assets/left-mission-Ci7zREkQ.js +0 -1
- package/dist/client/assets/left-plan-D4U1uflW.js +0 -2
- package/dist/client/assets/library-D-RxGiCw.js +0 -1
- package/dist/client/assets/profile-CVRziEDA.js +0 -1
- package/dist/client/assets/repo-diff-C9Qs-bEn.css +0 -1
- package/dist/client/assets/resolve-panes-r9B3mpW7.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-DcG8xGaB.js +0 -1
- package/dist/client/assets/right-BHeiIaty.js +0 -1
- package/dist/client/assets/right-BkgKo9VT.js +0 -1
- package/dist/client/assets/right-BpEU5jWE.js +0 -1
- package/dist/client/assets/right-CRZXoy-X.js +0 -1
- package/dist/client/assets/right-ChF_pbPy.js +0 -1
- package/dist/client/assets/right-DMoUT3KN.js +0 -1
- package/dist/client/assets/right-T4Ue6EqM.js +0 -1
- package/dist/client/assets/right-wzrLXKur.js +0 -1
- package/dist/client/assets/router-Bq5dwf78.js +0 -1
- package/dist/client/assets/secondaryNavConfig-DqUIp0Es.js +0 -1
- package/dist/client/assets/sparkles-ClfRJQ6w.js +0 -1
- package/dist/client/assets/useContentSecondaryNav-DMl1WNm7.js +0 -1
- package/dist/client/assets/usePierreRuntime-wC-yMtBb.js +0 -50
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as r}from"./index-
|
|
1
|
+
import{j as r}from"./index-sUomXsrf.js";import{n as x,a as M,s as v,b as S}from"./colors-BtO5_zlx.js";import{A as m}from"./AgentAvatar-CufDA4A-.js";function T({state:n,className:e,style:s}){x(typeof n=="string"?n:n??null);const a=x(typeof n=="string"?n:n??null)!=="blocked"?M(typeof n=="string"?n:n??null)?"working":"available":null;return r.jsx("span",{className:e,style:{background:v(a),...s}})}function F({name:n,meta:e,sub:s,tone:a="neutral",avatarName:c,avatarKind:o="user",leadingIcon:i,caret:l,active:f,selected:g,unread:N,depth:k=0,detail:t,expanded:d,activityLabel:h,worktreeLabel:p,activityTone:y="working",actions:u,pinned:w,onClick:b,onKeyDown:C,onContextMenu:A,onPointerEnter:P,onPointerLeave:B,title:R,tabIndex:$}){const z=l?l==="open":t!==void 0?!!d:void 0,L=["rr-row",k===1&&"rr-row--child",f&&"rr-row--active",g&&"rr-row--selected",N&&"rr-row--unread",d&&"rr-row--expanded",h&&"rr-row--motion",w&&"rr-row--pinned",u&&"rr-row--has-actions"].filter(Boolean).join(" ");return r.jsxs("div",{className:L,children:[r.jsxs("button",{type:"button",className:"rr-row-head",onClick:b,onKeyDown:C,onContextMenu:A,onPointerEnter:P,onPointerLeave:B,title:R,tabIndex:$,"aria-expanded":z,children:[r.jsx(D,{icon:i,tone:a,caret:l,avatarName:c,avatarKind:o}),r.jsxs("span",{className:"rr-row-body",children:[r.jsxs("span",{className:"rr-row-name",children:[w?r.jsx("span",{className:"rr-row-pin-mark","aria-label":"Pinned",title:"Pinned",children:r.jsx(I,{})}):null,n]}),s&&r.jsx("span",{className:"rr-row-sub",children:s}),p&&r.jsx("span",{className:"rr-row-worktree",children:p}),h&&r.jsxs("span",{className:`rr-row-activity rr-row-activity--${y}`,children:[r.jsxs("span",{className:"rr-row-activity-bars","aria-hidden":!0,children:[r.jsx("span",{}),r.jsx("span",{}),r.jsx("span",{}),r.jsx("span",{})]}),r.jsx("span",{className:"rr-row-activity-label",children:h})]})]}),e&&r.jsx("span",{className:"rr-row-meta",children:e})]}),u?r.jsx("div",{className:"rr-row-actions",onClick:E=>E.stopPropagation(),children:u}):null,d&&t&&r.jsx("div",{className:"rr-row-detail",children:t})]})}function D({icon:n,tone:e,caret:s,avatarName:a,avatarKind:c}){if(s)return r.jsx("span",{className:`rr-row-caret rr-row-caret--leading rr-row-caret--${s}`,"aria-hidden":!0,children:r.jsx(G,{open:s==="open"})});if(a){if(c==="channel")return r.jsx(m,{kind:"channel",name:a,channelClassName:"rr-row-hash"});const i=j(e),l=i==="active"||i==="available";return r.jsxs("span",{className:"rr-row-avatar-wrap","aria-hidden":!0,children:[r.jsx(m,{name:a,placement:"roster",className:"rr-row-avatar"}),l&&r.jsx(T,{state:i,className:`rr-row-presence rr-row-presence--${i}`})]})}if(n)return r.jsx("span",{className:"rr-row-icon","aria-hidden":!0,children:n});const o=j(e);return r.jsx("span",{className:`rr-row-dot rr-row-dot--${o}`,style:o==="active"||o==="available"?{background:v(o)}:void 0,"aria-hidden":!0})}function G({open:n}){return r.jsx("svg",{className:`rr-chevron${n?" rr-chevron--open":""}`,viewBox:"0 0 12 12",width:"12",height:"12",fill:"none","aria-hidden":!0,children:r.jsx("path",{d:"M4.25 3L7.75 6L4.25 9",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})})}function j(n){return n==="channel"||n==="dm"||n==="neutral"?n:S(n)}function I(){return r.jsx("svg",{width:"9",height:"9",viewBox:"0 0 16 16",fill:"currentColor","aria-hidden":!0,children:r.jsx("path",{d:"M9.8 1.6 14.4 6.2a1 1 0 0 1-.2 1.6l-2.7 1.1-.9 3.4a.7.7 0 0 1-1.2.3L6.3 9.5 2.8 13 1.7 11.9l3.5-3.5L2.1 5.3a.7.7 0 0 1 .3-1.2l3.4-.9 1.1-2.7a1 1 0 0 1 1.6-.2Z"})})}export{F as R};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as o,j as n}from"./index-sUomXsrf.js";/* empty css */import{D as O}from"./DataTable-0DwuXyvW.js";import{p as W,a as L}from"./api-h5zurxmi.js";import{t as U,n as R,f as Y}from"./time-Dhsh_2EG.js";import{u as G}from"./tail-events-CTipUIli.js";import{o as Q}from"./openContent-C6XO6kr5.js";import{u as X}from"./Provider-tFc3jqZ4.js";/* empty css */import"./index-BWHgHrtv.js";import"./router-Dja9_ygK.js";import"./terminal-sessions-D5CIR2OL.js";import"./sse-CVoGDiKW.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-BlBQhpax.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./createLucideIcon-DlxlBfLC.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./x-0XjXwGqq.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-BhZZ5HEq.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./NewChatOrigin--pHWUb4V.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";const q=1e4,J=500,$=1e3,Z=6e4,D="/api/tail/discover",_=`/api/tail/recent?limit=${J}`,P=3e4,tt=[{key:"status",label:"status",cls:"s-atop-col-status",kind:"text",sortable:!1,defaultWidth:96,minWidth:70,render:t=>n.jsxs("span",{className:`s-atop-status s-atop-status--${t.status}`,children:[n.jsx("span",{className:"s-atop-status-dot","aria-hidden":"true"}),t.statusLabel]})},{key:"session",label:"session",cls:"s-atop-col-agent",kind:"text",sortable:!1,defaultWidth:168,minWidth:110,maxWidth:280,render:t=>n.jsxs("div",{className:"s-atop-agent-cell",title:t.sessionId??t.refId,children:[n.jsx("span",{className:`s-atop-chip s-atop-chip--harness s-atop-chip--harness-${st(t.source)}`,children:t.source}),n.jsx("span",{className:"s-atop-agent-id",children:t.refId.slice(0,8)})]})},{key:"project",label:"project",cls:"s-atop-col-project",kind:"text",sortable:!1,defaultWidth:200,minWidth:96,maxWidth:360,render:t=>n.jsx("span",{title:t.cwd??t.project,children:t.project})},{key:"updated",label:"updated",cls:"s-atop-col-last",kind:"time",sortable:!1,defaultWidth:86,minWidth:64,render:t=>n.jsx("span",{title:Y(t.mtimeMs),children:U(Math.max(R(t.mtimeMs)??0,R(t.lastEvent?.ts)??0))||"-"})},{key:"size",label:"size",cls:"s-atop-col-runtime",kind:"number",sortable:!1,defaultWidth:80,minWidth:64,render:t=>nt(t.size)},{key:"path",label:"path",kind:"text",sortable:!1,defaultWidth:360,minWidth:160,maxWidth:800,render:t=>n.jsx("span",{title:t.transcriptPath,children:t.cwd??t.transcriptPath})}];function z(t){const i=t?.trim();if(!i)return null;const r=F(i);return r.endsWith(".jsonl")?r.slice(0,-6):r}function F(t){const i=t.replace(/[\\/]+$/,"");return i.split(/[\\/]/).filter(Boolean).at(-1)??i}function et(t){const r=t.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean);return r.pop(),r.at(-1)??""}function st(t){return t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")||"unknown"}function nt(t){if(!Number.isFinite(t)||t<0)return"-";if(t<1024)return`${t} B`;const i=t/1024;if(i<1024)return`${i.toFixed(i>=10?0:1)} KiB`;const r=i/1024;return`${r.toFixed(r>=10?0:1)} MiB`}function at(t,i){return i?[t.refId,t.sessionId??"",t.source,t.project,t.cwd??"",t.transcriptPath,t.lastEvent?.summary??"",t.process?.command??""].join(" ").toLowerCase().includes(i.toLowerCase()):!0}function B(t){return`${t.source}\0${t.cwd??""}`}function ot(t){return`${t.source}\0${t.cwd??""}`}function it(t,i,r){if(!t?.transcripts?.length)return[];const d=new Map;for(const s of i){const l=d.get(s.sessionId);(!l||s.ts>l.ts)&&d.set(s.sessionId,s)}const h=new Map;for(const s of t.processes){if(!s.cwd)continue;const l=h.get(B(s));(!l||s.pid<l.pid)&&h.set(B(s),s)}return t.transcripts.map(s=>{const l=z(s.sessionId)??z(s.transcriptPath);if(!l)return null;const u=s.sessionId?d.get(s.sessionId)??null:null,x=h.get(ot(s))??null,m=Math.max(s.mtimeMs,u?.ts??0),j=!!x||r-m<=Z,p=s.project?.trim()||(s.cwd?F(s.cwd):et(s.transcriptPath))||"unknown";return{refId:l,source:s.source||"unknown",project:p,cwd:s.cwd,transcriptPath:s.transcriptPath,sessionId:s.sessionId,mtimeMs:s.mtimeMs,size:s.size,status:j?"run":"idle",statusLabel:j?"active":"idle",lastEvent:u,process:x}}).filter(s=>s!==null).sort((s,l)=>{const u=Math.max(s.mtimeMs,s.lastEvent?.ts??0);return Math.max(l.mtimeMs,l.lastEvent?.ts??0)-u||s.project.localeCompare(l.project)})}function qt({navigate:t}){const{route:i}=X(),[r]=o.useState(()=>W(D,P)),[d,h]=o.useState(r),[s,l]=o.useState(()=>W(_,P)?.events??[]),[u,x]=o.useState(r===null),[m,j]=o.useState(""),[p,S]=o.useState("all"),[y,k]=o.useState(0),[N,C]=o.useState(null),[T,V]=o.useState(Date.now()),b=o.useRef(null),I=o.useCallback(async()=>{C(null);try{h(await L(D))}catch(e){C(e instanceof Error?e.message:String(e))}finally{x(!1)}},[]);o.useEffect(()=>{I();const e=setInterval(()=>{I()},q);return()=>clearInterval(e)},[I]),o.useEffect(()=>{let e=!1;return(async()=>{try{const a=await L(_);e||l(a.events??[])}catch{}})(),()=>{e=!0}},[]),G(e=>{l(a=>a.length>=$?[...a.slice(a.length-$+1),e]:[...a,e])}),o.useEffect(()=>{const e=setInterval(()=>V(Date.now()),15e3);return()=>clearInterval(e)},[]);const f=o.useMemo(()=>it(d,s,T),[d,s,T]),H=o.useMemo(()=>[...new Set(f.map(e=>e.source))].sort(),[f]),c=o.useMemo(()=>f.filter(e=>(p==="all"||e.source===p)&&at(e,m.trim())),[f,p,m]);o.useEffect(()=>{y>=c.length&&k(Math.max(0,c.length-1))},[c.length,y]);const M=o.useCallback(e=>{e&&Q(t,{view:"sessions",sessionId:e.refId},{returnTo:i})},[t,i]);o.useEffect(()=>{const e=a=>{const E=a.target,A=E instanceof HTMLInputElement||E instanceof HTMLTextAreaElement||(E?.isContentEditable??!1);if(a.key==="/"&&!A){a.preventDefault(),b.current?.focus();return}if(A){a.key==="Escape"&&E===b.current&&(j(""),b.current?.blur());return}if(a.key==="ArrowDown"||a.key==="j"){a.preventDefault(),k(w=>c.length===0?0:Math.min(c.length-1,w+1));return}if(a.key==="ArrowUp"||a.key==="k"){a.preventDefault(),k(w=>Math.max(0,w-1));return}(a.key==="Enter"||a.key==="o")&&(a.preventDefault(),M(c[y]))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[c,y,M]);const K=N?[]:c,g=o.useCallback(e=>`${e.source}:${e.transcriptPath}`,[]),v=o.useMemo(()=>new Map(c.map((e,a)=>[g(e),a])),[c,g]);return n.jsxs("div",{className:"s-atop s-atop--sessions",children:[n.jsxs("div",{className:"s-atop-fbar",children:[n.jsxs("label",{className:"s-atop-search",children:[n.jsx("span",{className:"s-atop-search-prompt",children:"/"}),n.jsx("input",{ref:b,className:"s-atop-search-input",placeholder:"filter sessions",value:m,onChange:e=>j(e.target.value)}),n.jsx("kbd",{className:"s-atop-search-kbd",children:"/"})]}),n.jsx("span",{className:"s-atop-fbar-label",children:"source"}),n.jsxs("button",{type:"button",className:`s-atop-pill${p==="all"?" s-atop-pill--on":""}`,onClick:()=>S("all"),children:["all",n.jsx("span",{className:"s-atop-pill-ct",children:f.length})]}),H.map(e=>n.jsxs("button",{type:"button",className:`s-atop-pill${p===e?" s-atop-pill--on":""}`,onClick:()=>S(e),children:[e,n.jsx("span",{className:"s-atop-pill-ct",children:f.filter(a=>a.source===e).length})]},e)),n.jsx("div",{className:"s-atop-fbar-spacer"})]}),n.jsx(O,{rows:K,columns:tt,rowId:g,storageKey:"openscout.sessions.cols",rowBindings:e=>({onMouseEnter:()=>{const a=v.get(e);a!=null&&k(a)},onFocus:()=>{const a=v.get(e);a!=null&&k(a)}}),onRowClick:e=>M(e),rowClassName:e=>v.get(g(e))===y?"s-atop-row--selected":void 0,empty:N?{title:"Discovery failed",body:N}:{title:"No raw sessions",body:m?"No sessions match the current filter.":"No transcript sessions were discovered."},loading:u,density:"compact",className:"s-atop-data-table",ariaLabel:"Raw sessions"}),n.jsxs("div",{className:"s-atop-keys",children:[n.jsxs("span",{children:[n.jsx("kbd",{children:"/"}),"filter"]}),n.jsxs("span",{children:[n.jsx("kbd",{children:"j/k"}),"select"]}),n.jsxs("span",{children:[n.jsx("kbd",{children:"enter"}),"open"]}),n.jsx("span",{className:"s-atop-keys-spacer"}),n.jsxs("span",{className:"s-atop-keys-count",children:[n.jsx("strong",{children:c.length})," sessions"]})]})]})}export{qt as RawSessionsTable};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e,r}from"./index-sUomXsrf.js";import{u as w}from"./router-Dja9_ygK.js";import{a as p,b,c as g}from"./Provider-tFc3jqZ4.js";import{S as j,a as E}from"./ScoutbotRealtimeVoiceCall-Bzyl0BCS.js";import{d as _}from"./types-B0PlfpKc.js";import"./terminal-sessions-D5CIR2OL.js";import"./api-h5zurxmi.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-BlBQhpax.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./createLucideIcon-DlxlBfLC.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./x-0XjXwGqq.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-BhZZ5HEq.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./time-Dhsh_2EG.js";import"./NewChatOrigin--pHWUb4V.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";import"./radio-DedMyP8J.js";import"./plus-C9lTjsgd.js";function N({dictationActive:t=!1,autoStart:c=!1}){const a=w(p,!1),{enabled:l,state:i,leaseId:u,startCall:f,endCall:x}=b(),h=r.useRef(!1),n=r.useRef(null),[m,S]=r.useState(()=>window.innerWidth>=720&&window.innerHeight>=520?"page":"compact"),s=window.webkit?.messageHandlers?.scoutRealtimeVoice;return r.useEffect(()=>{const o=()=>{S(window.innerWidth>=720&&window.innerHeight>=520?"page":"compact")};return o(),window.addEventListener("resize",o),()=>window.removeEventListener("resize",o)},[]),r.useEffect(()=>{s?.postMessage({kind:"session-state",state:i,leaseId:u})},[u,s,i]),r.useEffect(()=>{const o=()=>{if(n.current)return n.current;const d=x().finally(()=>{n.current===d&&(n.current=null)});return n.current=d,d},v=()=>{o()};return window.__scoutRealtimeVoiceStop=o,window.addEventListener(g,v),window.__scoutRealtimeVoiceStopRequested&&o(),()=>{window.removeEventListener(g,v),window.__scoutRealtimeVoiceStop===o&&delete window.__scoutRealtimeVoiceStop}},[x]),r.useEffect(()=>{!c||t||!a||!l||h.current||i!=="idle"&&i!=="ended"&&i!=="error"||(h.current=!0,f())},[c,t,a,l,f,i]),a?l?e.jsxs("div",{className:"flex h-full flex-col overflow-hidden",children:[e.jsx(j,{state:i,onMinimize:s?()=>s.postMessage("minimize"):void 0,onExpand:s?()=>s.postMessage(m==="page"?"restore":"expand"):void 0,layout:m}),e.jsx(E,{dictationActive:t,layout:m})]}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-2 p-4",children:[e.jsx("p",{className:"font-mono text-xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-faint)]",children:"Live voice is disabled"}),e.jsx("p",{className:"text-sm leading-snug text-[var(--scout-chrome-ink-faint)]",children:"Enable realtime voice in Settings → Voice. The footer Voice control starts and manages calls."})]}):e.jsxs("div",{className:"flex h-full flex-col justify-center gap-2 p-4",children:[e.jsx("p",{className:"font-mono text-xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-faint)]",children:"Live voice is off"}),e.jsxs("p",{className:"text-sm leading-snug text-[var(--scout-chrome-ink-faint)]",children:["Turn on the ",e.jsx("span",{className:"font-mono",children:p})," flag to hold live conversations with Scoutbot. Calls use the configured OpenAI API account."]})]})}function xe(){const t=w(p,!1),{enabled:c,state:a}=b();return!t||!c?e.jsx(N,{}):e.jsxs("main",{className:"flex h-full min-h-0 flex-col overflow-hidden bg-[var(--scout-chrome-bg)]",children:[e.jsxs("div",{className:"border-b border-[var(--scout-chrome-border-soft)] px-6 py-5",children:[e.jsx("p",{className:"font-mono text-xs uppercase tracking-[0.14em] text-[var(--scout-chrome-ink-faint)]",children:"Scoutbot"}),e.jsx("h1",{className:"mt-1 text-3xl font-medium text-[var(--scout-chrome-ink-strong)]",children:"Live voice"}),e.jsx("p",{className:"mt-1 max-w-2xl text-xs leading-relaxed text-[var(--scout-chrome-ink-faint)]",children:"Hold a live conversation, inspect navigation attempts, and audit what Scoutbot tried without leaving the call."})]}),e.jsx("div",{className:"min-h-0 flex-1 p-5",children:e.jsxs("section",{className:"mx-auto flex h-full min-h-[26rem] w-full max-w-5xl flex-col overflow-hidden rounded-xl border border-[color-mix(in_srgb,var(--hud-ink)_11%,transparent)] bg-[color-mix(in_srgb,var(--scout-chrome-bg)_96%,black)] shadow-[0_18px_48px_rgba(0,0,0,0.24)]",children:[e.jsx(j,{state:a,layout:"page"}),e.jsx(E,{dictationActive:!1,layout:"page"})]})})]})}const he=_({id:"voice",label:"Live voice",route:{view:"voice"},webPath:"/voice",screen:"RealtimeVoiceScreen",embed:{path:"/embed/voice",profile:"macos.voice",rootClassName:"s-voice-embed",chrome:{showSecondaryNav:!1,showPageStatusBar:!1},hosts:{macos:!0},resolveEmbedProps:t=>({dictationActive:t.get("dictationActive")==="1",autoStart:t.get("autoStart")==="1"})}});export{xe as RealtimeVoicePage,N as RealtimeVoiceScreen,he as scoutSurface};
|
package/dist/client/assets/{RepoDiffEmbedScreen-C0rumUME.js → RepoDiffEmbedScreen-CtTdlQ2A.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s}from"./index-
|
|
1
|
+
import{j as s}from"./index-sUomXsrf.js";import{R as c}from"./RepoDiffViewerLazy-C8UPk4oo.js";/* empty css */const l=["unstaged","staged","branch"];function o(e){const t=e.getAll("layer").filter(r=>l.includes(r));return t.length>0?t:void 0}function p(){const e=typeof window>"u"?new URLSearchParams:new URLSearchParams(window.location.search),t=e.get("path")?.trim()??"",r=e.getAll("file").map(i=>i.trim()).filter(Boolean),a=e.get("sessionId")?.trim()||void 0,n=e.get("agentId")?.trim()||void 0,d=e.get("include")==="all"||e.get("include")==="touched"?"all":"changed";return t?s.jsx(c,{path:t,layers:o(e),files:r,session:a||n?{sessionId:a,agentId:n,include:d}:null,className:"rd-embed"}):s.jsx("div",{className:"rd-viewer rd-embed","data-scout-theme":!0,children:s.jsx("div",{className:"rd-center",children:s.jsxs("div",{className:"rd-center-card",children:[s.jsx("div",{className:"rd-center-title",children:"No worktree path"}),s.jsxs("div",{className:"rd-center-body",children:["This embed needs a ",s.jsx("code",{children:"?path=<absolute-path>"})," query parameter."]})]})})})}export{p as RepoDiffEmbedScreen,p as default};
|
package/dist/client/assets/{RepoDiffPageScreen-DMv6DioL.js → RepoDiffPageScreen-BRvaVYoC.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as e}from"./index-
|
|
1
|
+
import{j as e}from"./index-sUomXsrf.js";import{R as l}from"./RepoDiffViewerLazy-C8UPk4oo.js";/* empty css */const f=1;function m(t=typeof performance>"u"?void 0:performance){const r=(t?.getEntriesByType?.("navigation")??[]).find(i=>typeof i.type=="string");return r?r.type==="reload":t?.navigation?.type===f}function u({path:t,layers:n,files:r,sessionId:i,agentId:o,include:s,navigate:c}){const a=t.trim();if(!a)return e.jsx("div",{className:"rd-viewer",children:e.jsx("div",{className:"rd-center",children:e.jsxs("div",{className:"rd-center-card",children:[e.jsx("div",{className:"rd-center-title",children:"No worktree path"}),e.jsxs("div",{className:"rd-center-body",children:["This page needs a ",e.jsx("code",{children:"?path=<absolute-path>"})," query parameter."]})]})})});const d=[a,n?.join(",")??"",r?.join("\0")??"",i??"",o??"",s??""].join(""),p=m();return e.jsx(l,{path:a,layers:n,files:r,session:i||o?{sessionId:i,agentId:o,include:s}:null,forceInitialLoad:p,onClose:()=>c({view:"repos"})},d)}export{u as RepoDiffPageScreen,u as default};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{r as l,j as n}from"./index-sUomXsrf.js";import{a as X,p as Z}from"./ui-LM8pS8qE.js";/* empty css */import{a as T,s as q,l as ee,L as te,f as K,S as ne,r as se,b as re,c as _,d as ie,u as ae,V as A,C as H,D as le,e as oe}from"./usePierreRuntime-DIVunfX0.js";import{C as ce}from"./chevron-down-BFai6ZfE.js";import{C as de}from"./check-BbgHJX8u.js";import{L as ue}from"./loader-circle-lWOOKezu.js";import{S as fe}from"./send-horizontal-DDwOgEs3.js";import{c as he}from"./createLucideIcon-DlxlBfLC.js";import{C as me}from"./code-xml-05TD3uOC.js";import{X as pe}from"./x-0XjXwGqq.js";import{r as O,a as V,f as Y}from"./cache-Dr0why2k.js";import{M as xe}from"./message-square-BD-4UUdc.js";import{R as ge}from"./refresh-cw-D8PFyhUa.js";import{P as be}from"./plus-C9lTjsgd.js";import{a as B}from"./api-h5zurxmi.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";const ye=[["path",{d:"M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35",key:"1wthlu"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m5 16-3 3 3 3",key:"331omg"}],["path",{d:"m9 22 3-3-3-3",key:"lsp7cz"}]],je=he("file-code-corner",ye);function ke({snapshot:e,selectedFile:t,targets:r,targetId:s,onTargetId:i,draft:c,onDraft:f,contextItems:o,onRemoveContextItem:p,pending:a,status:d,error:g,textareaRef:$,onSubmit:S}){const[u,j]=l.useState(!1),b=l.useRef(null),w=r.find(h=>h.id===s)??null,m=w?.label??"Scout",k=r[0]?.id??null,N=t?T(t):null,I=(c.trim().length>0||o.length>0)&&!a,R=l.useMemo(()=>[...r.map(h=>({id:h.id,label:h.label,suffix:h.id===k?"best context":null})),{id:"scout",label:"Scout",suffix:null}],[k,r]);return l.useEffect(()=>{if(!u)return;const h=C=>{const D=b.current;D&&C.target instanceof Node&&D.contains(C.target)||j(!1)};return document.addEventListener("pointerdown",h),()=>document.removeEventListener("pointerdown",h)},[u]),n.jsxs("div",{className:"rd-comment",children:[o.length>0?n.jsx("div",{className:"rd-comment-context","aria-label":"Included diff context",children:o.map(h=>n.jsx(Ce,{item:h,disabled:a,onRemove:p},h.id))}):null,n.jsxs("div",{className:"rd-comment-main",children:[n.jsxs("div",{className:"rd-target-picker",ref:b,children:[n.jsxs("button",{type:"button",className:"rd-target-button",onClick:()=>j(h=>!h),onKeyDown:h=>{h.stopPropagation(),h.key==="Escape"&&j(!1)},disabled:a,"aria-label":"Diff comment target","aria-haspopup":"listbox","aria-expanded":u,title:"Diff comment target",children:[n.jsx("span",{children:m}),n.jsx(ce,{size:13,strokeWidth:2,"aria-hidden":!0})]}),u?n.jsx("div",{className:"rd-target-menu",role:"listbox","aria-label":"Diff comment target",children:R.map(h=>{const C=h.id===(w?.id??"scout");return n.jsxs("button",{type:"button",className:"rd-target-option",role:"option","aria-selected":C,onClick:()=>{i(h.id),j(!1)},children:[n.jsx("span",{className:"rd-target-option-label",children:h.label}),h.suffix?n.jsx("span",{className:"rd-target-option-suffix",children:h.suffix}):null,n.jsx("span",{className:"rd-target-option-check","aria-hidden":!0,children:C?n.jsx(de,{size:12,strokeWidth:2.2}):null})]},h.id)})}):null]}),n.jsx("textarea",{ref:$,value:c,onChange:h=>f(h.currentTarget.value),onKeyDown:h=>{h.stopPropagation(),(h.metaKey||h.ctrlKey)&&h.key==="Enter"&&(h.preventDefault(),S())},rows:1,disabled:a,placeholder:o.length>0?`Send to ${m} with included context`:"Leave a note on this diff…","aria-label":"Diff comment"}),n.jsxs("button",{type:"button",className:"rd-comment-send",disabled:!I,onClick:S,title:"Send diff comment","aria-label":"Send diff comment",children:[a?n.jsx(ue,{size:13,className:"rd-comment-spin","aria-hidden":!0}):n.jsx(fe,{size:13,"aria-hidden":!0}),n.jsx("span",{children:a?"Sending":"Send"})]})]}),n.jsx("div",{className:"rd-comment-meta",children:g?n.jsx("span",{className:"err",children:g}):d?n.jsx("span",{className:"ok",children:d}):n.jsxs("span",{children:[e.scope?.kind==="session"?"Session diff":"Worktree diff",N?` · ${N}`:""]})})]})}function Ce({item:e,disabled:t,onRemove:r}){const s=e.kind==="file"?je:me;return n.jsxs("div",{className:`rd-context-item ${e.kind}`,children:[n.jsxs("div",{className:"rd-context-head",children:[n.jsx("span",{className:"rd-context-icon","aria-hidden":!0,children:n.jsx(s,{size:12,strokeWidth:2})}),n.jsx("span",{className:"rd-context-label",title:e.label,children:e.label}),n.jsx("span",{className:"rd-context-detail",children:e.detail}),n.jsx("button",{type:"button",className:"rd-context-remove",onClick:()=>r(e.id),disabled:t,title:"Remove included context","aria-label":"Remove included context",children:n.jsx(pe,{size:11,strokeWidth:2.2,"aria-hidden":!0})})]}),e.preview?n.jsx("pre",{className:"rd-context-preview",children:e.preview}):null]})}function $e({heading:e,worktreePath:t,snapshot:r,freshness:s,activeLayer:i,onLayer:c,layout:f,onLayout:o,refreshing:p,onRefresh:a,onFocusComment:d,onClose:g,onOpenAsPage:$}){const{dir:S}=q(t);return n.jsxs("div",{className:"rd-header",children:[n.jsxs("div",{className:"rd-header-id",children:[n.jsxs("div",{className:"rd-header-title",children:[n.jsx("span",{className:"rd-header-name",title:t,children:e}),r.scope?n.jsx(Ne,{snapshot:r}):null,S?n.jsx("span",{className:"rd-header-dir",children:S}):null]}),n.jsx("div",{className:"rd-header-sub",children:n.jsx(ve,{layers:r.layers,activeLayer:i,onLayer:c})}),n.jsx(we,{freshness:s,generatedAt:r.generatedAt})]}),n.jsxs("div",{className:"rd-header-actions",children:[n.jsx("button",{type:"button",className:"rd-close","aria-label":"Comment on diff",title:"Comment on diff",onClick:d,children:n.jsx(xe,{size:14,strokeWidth:2,"aria-hidden":!0})}),n.jsxs("div",{className:"rd-segmented",role:"group","aria-label":"Diff layout",children:[n.jsx("button",{type:"button",className:f==="unified"?"on":"","aria-pressed":f==="unified",onClick:()=>o("unified"),children:"Unified"}),n.jsx("button",{type:"button",className:f==="split"?"on":"","aria-pressed":f==="split",onClick:()=>o("split"),children:"Split"})]}),n.jsx("button",{type:"button",className:`rd-close${p?" spinning":""}`,"aria-label":"Refresh diff",title:"Fetch fresh diff",onClick:a,disabled:p,children:n.jsx(ge,{size:14,strokeWidth:2,"aria-hidden":!0})}),$?n.jsx("button",{type:"button",className:"rd-close","aria-label":"Open diff as page",title:"Open as full page",onClick:$,children:"↗"}):null,g?n.jsx("button",{type:"button",className:"rd-close","aria-label":"Close",onClick:g,children:"✕"}):null]})]})}function Se({snapshot:e}){const t=[];e.coverage.truncatedLayers>0&&t.push({level:"warning",text:`${e.coverage.truncatedLayers} layer${e.coverage.truncatedLayers===1?"":"s"} truncated — the native diff hit a size budget; some files or hunks are omitted.`}),e.coverage.scanBudgetReached&&t.push({level:"warning",text:"Scan budget reached — this diff is partial."});for(const r of e.diagnostics)t.push({level:r.level,text:r.path?`${r.message} (${r.path})`:r.message});return t.length===0?null:n.jsx(n.Fragment,{children:t.map((r,s)=>n.jsxs("div",{className:`rd-banner ${r.level}`,children:[n.jsx("span",{className:"rd-banner-dot","aria-hidden":!0}),n.jsx("span",{children:r.text})]},s))})}function Ne({snapshot:e}){const t=e.scope;if(!t)return null;const r=t.kind==="session"?`Session · ${t.filteredPaths.length} files`:t.filteredPaths.length>0?`Filtered · ${t.filteredPaths.length} files`:"Worktree",s=t.kind==="session"?`${t.label}: path-filtered diff from ${t.changedFiles} changed / ${t.touchedFiles} touched session files`:t.label;return n.jsx("span",{className:`rd-scope-pill ${t.kind}`,title:s,children:r})}function we({freshness:e,generatedAt:t}){const r=e?.fetchedAt??t,s=Math.max(0,Date.now()-r),i=e?.cacheHit?`Prefetched ${O(s)}`:`Updated ${O(s)}`;return n.jsxs("div",{className:"rd-freshness",title:new Date(r).toLocaleString(),children:[n.jsx("span",{children:i}),e?.refreshing?n.jsx("span",{children:"Refreshing…"}):null,e?.refreshError?n.jsx("span",{children:"Refresh failed"}):null]})}function ve({layers:e,activeLayer:t,onLayer:r}){return n.jsx("div",{className:"rd-layers",role:"tablist","aria-label":"Diff layers",children:e.map(s=>{const i=ee(s);return n.jsxs("button",{type:"button",role:"tab","aria-selected":s.kind===t,className:"rd-layer-tab"+(s.kind===t?" on":""),onClick:()=>r(s.kind),title:s.shortstat??void 0,children:[n.jsx("span",{children:te[s.kind]??s.kind}),n.jsx("span",{className:"rd-layer-stat",children:s.files.length===0?"clean":n.jsxs(n.Fragment,{children:[s.files.length,"f"," ",n.jsxs("span",{style:{color:"var(--rd-add)"},children:["+",i.add]})," ",n.jsxs("span",{style:{color:"var(--rd-del)"},children:["−",i.del]}),s.truncated?" ⚠":""]})})]},s.kind)})})}const G="openscout.repo-diff.files-rail-width",U=268,Ie=196,De=520;function Re(e,t){if(e.length<=t)return e;const r=e.lastIndexOf(".");if(r<=0){const p=Math.max(1,Math.floor((t-1)/2)),a=t-p-1;return e.slice(0,p)+"…"+e.slice(-Math.max(1,a))}const s=e.slice(0,r),i=e.slice(r),c=t-i.length-1;if(c<2){const p=Math.max(1,t-i.length-1);return s.slice(0,p)+"…"+i}const f=Math.max(1,Math.floor(c/2)),o=Math.max(1,c-f);return s.slice(0,f)+"…"+s.slice(-o)+i}function Le(e,t){return Math.max(8,Math.floor((e-178-t*14)/6.7))}function W(e){return Math.max(Ie,Math.min(De,Math.round(e)))}function Pe(){if(typeof window>"u")return U;const e=Number(window.localStorage.getItem(G));return Number.isFinite(e)?W(e):U}function Me(e){const t={name:"",path:"",firstIndex:Number.MAX_SAFE_INTEGER,children:new Map,files:[]};for(const r of e){t.firstIndex=Math.min(t.firstIndex,r.index);const s=r.dir?r.dir.split("/").filter(Boolean):[];let i=t;for(const c of s){const f=i.path?`${i.path}/${c}`:c;let o=i.children.get(c);o||(o={name:c,path:f,firstIndex:r.index,children:new Map,files:[]},i.children.set(c,o)),o.firstIndex=Math.min(o.firstIndex,r.index),i=o}i.files.push(r)}return t}function J(e){let t=e.files.length;for(const r of e.children.values())t+=J(r);return t}function Ee({layer:e,selectedFileKey:t,onSelect:r,onIncludeFile:s}){const[i,c]=l.useState(Pe),[f,o]=l.useState(()=>new Set),p=l.useMemo(()=>(e?.files??[]).map((u,j)=>{const b=K(u,j),w=T(u),{name:m,dir:k}=q(w),N=(u.status==="renamed"||u.status==="copied")&&u.oldPath&&u.newPath&&u.oldPath!==u.newPath;return{file:u,index:j,key:b,display:w,name:m,dir:k,renamed:!!N}}),[e]),a=l.useMemo(()=>Me(p),[p]),d=l.useCallback(u=>{o(j=>{const b=new Set(j);return b.has(u)?b.delete(u):b.add(u),b})},[]),g=l.useCallback(u=>{u.preventDefault();const j=u.clientX,b=i,w=k=>{c(W(b+k.clientX-j))},m=()=>{window.removeEventListener("pointermove",w),window.removeEventListener("pointerup",m),c(k=>{const N=W(k);return window.localStorage.setItem(G,String(N)),N})};window.addEventListener("pointermove",w),window.addEventListener("pointerup",m,{once:!0})},[i]),$=(u,j)=>n.jsx(Fe,{entry:u,depth:j,railWidth:i,selected:u.key===t,onSelect:r,onIncludeFile:s},u.key),S=(u,j)=>{const b=[],w=[...u.children.values()].sort((m,k)=>m.firstIndex!==k.firstIndex?m.firstIndex-k.firstIndex:m.name.localeCompare(k.name));for(const m of w){const k=f.has(m.path);b.push(n.jsxs("button",{type:"button",className:"rd-dir-row",style:{paddingLeft:12+j*14},onClick:()=>d(m.path),title:m.path,children:[n.jsx("span",{className:"rd-dir-caret",children:k?"›":"⌄"}),n.jsx("span",{className:"rd-dir-name",children:m.name}),n.jsx("span",{className:"rd-dir-count",children:J(m)})]},`dir:${m.path}`)),k||b.push(...S(m,j+1))}for(const m of u.files)b.push($(m,j));return b};return n.jsxs("div",{className:"rd-rail",style:{width:i},children:[n.jsx("div",{className:"rd-rail-head",children:e?`Changed files · ${e.files.length}`:"Changed files"}),n.jsx("div",{className:"rd-rail-list",children:S(a,0)}),n.jsx("div",{className:"rd-rail-resizer",role:"separator","aria-orientation":"vertical","aria-label":"Resize file navigation",onPointerDown:g})]})}function Fe({entry:e,depth:t,railWidth:r,selected:s,onSelect:i,onIncludeFile:c}){const{file:f,key:o,display:p,name:a,dir:d,renamed:g}=e,$=Le(r,t),S=Re(a,$);return n.jsxs("div",{className:"rd-file-row"+(s?" on":""),title:g?`${f.oldPath} → ${f.newPath}`:p,children:[n.jsxs("button",{type:"button",className:"rd-file-pick",style:{paddingLeft:18+t*14},onClick:()=>i(o),children:[n.jsx("span",{className:`rd-file-glyph ${f.status}`,children:ne[f.status]}),n.jsxs("span",{className:"rd-file-id",children:[n.jsx("span",{className:"rd-file-name",children:S}),n.jsx("span",{className:"rd-file-dir",children:g?`${f.oldPath} → ${d||a}`:d}),n.jsx(Te,{file:f})]})]}),n.jsx("span",{className:"rd-file-churn",children:f.binary?n.jsx("span",{className:"add",style:{color:"var(--muted)"},children:"bin"}):n.jsxs(n.Fragment,{children:[n.jsxs("span",{className:"add",children:["+",f.additions??0]}),n.jsxs("span",{className:"del",children:["−",f.deletions??0]})]})}),n.jsx("button",{type:"button",className:"rd-file-include",onClick:u=>{u.stopPropagation(),c(f,o)},"aria-label":`Include ${p} in comment`,title:"Include in comment",children:n.jsx(be,{size:12,strokeWidth:2,"aria-hidden":!0})})]})}function Te({file:e}){const t=[];return e.binary&&t.push("BINARY"),e.truncated&&t.push("TRUNCATED"),e.status==="conflict"&&t.push("CONFLICT"),t.length===0?null:n.jsx("span",{className:"rd-file-tags",children:t.map(r=>n.jsx("span",{className:"rd-file-tag",children:r},r))})}function Ae(e){switch(e?.trim().toLowerCase()){case"active":case"working":case"running":case"in_turn":return 80;case"queued":case"waiting":case"waking":case"in_flight":return 50;case"idle":case"available":return 25;case"offline":case"retired":case"stale":return-40;default:return 0}}function Ke(e){return e.newPath??e.oldPath??"(unknown)"}function Q(e){const t=e.scope?.kind==="session"?e.scope.agentId:null,r=new Map;for(const s of e.scout.hints)s.agentId&&r.set(s.agentId,(r.get(s.agentId)??0)+1);return e.scout.agents.map(s=>({id:s.id,label:X(s),score:Ae(s.state)+(s.id===t?1e3:0)+(r.get(s.id)??0)*10})).sort((s,i)=>{const c=i.score-s.score;return c!==0?c:s.label.localeCompare(i.label)})}function We(e){return Q(e)[0]??null}function ze(e){const t=e.files.reduce((r,s)=>({add:r.add+(s.additions??0),del:r.del+(s.deletions??0)}),{add:0,del:0});return`${e.kind}: ${e.files.length} file${e.files.length===1?"":"s"}, +${t.add} -${t.del}${e.truncated?", truncated":""}`}function z(e){const t=e.binary?"binary":`+${e.additions??0} -${e.deletions??0}`;return`${e.status}: ${Ke(e)} (${t}${e.truncated?", truncated":""})`}function _e(e){const t=e.scope;return t?t.kind==="session"?`session ${t.sessionId??t.refId??"(unknown)"} (${t.changedFiles} changed / ${t.touchedFiles} touched files, ${t.include})`:t.filteredPaths.length>0?`filtered worktree (${t.filteredPaths.length} paths)`:"worktree":"worktree"}function He(e){const{comment:t,includedContext:r=[],snapshot:s,activeLayer:i,selectedFile:c}=e,o=((i?s.layers.find(d=>d.kind===i)??null:null)?.files??s.layers.flatMap(d=>d.files)).slice(0,12).map(z),p=s.scout.agents.map(d=>X(d)).slice(0,8),a=["Operator comment on repo diff:",t,"","Repo Diff context:",`- Worktree: ${s.worktreePath}`,`- Scope: ${_e(s)}`,`- Active layer: ${i??"none"}`];return r.length>0&&a.splice(3,0,"Included diff context:",...r.map(d=>d.trim()).filter(Boolean),""),c&&a.push(`- Selected file: ${z(c)}`),a.push(`- Layers: ${s.layers.map(ze).join("; ")}`),p.length>0&&a.push(`- Attached agents: ${p.join(", ")}`),s.scout.sessions.length>0&&a.push(`- Sessions: ${s.scout.sessions.map(d=>d.id).slice(0,8).join(", ")}`),o.length>0&&a.push(`- Changed files: ${o.join(", ")}`),s.diagnostics.length>0&&a.push(`- Diagnostics: ${s.diagnostics.map(d=>d.message).join("; ")}`),a.join(`
|
|
2
|
+
`)}function Oe(e){const{snapshot:t,activeLayer:r,file:s}=e,i=[r??"diff",z(s)];return t.scope?.kind==="session"&&i.push(`session ${t.scope.sessionId??t.scope.refId??"scope"}`),`[Diff context: ${i.join(" · ")}]`}function Be(e,t,r){return!e||!t?null:e.files.find((s,i)=>r(s,i)===t)??null}function Ue(e,t=120){const r=e.replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t-3)}...`:r}function Xe(e,t=7){const r=e.trimEnd().split(`
|
|
3
|
+
`),s=r.slice(0,t),i=r.length-s.length;return i>0?`${s.join(`
|
|
4
|
+
`)}
|
|
5
|
+
... ${i} more line${i===1?"":"s"}`:s.join(`
|
|
6
|
+
`)}function qe(e){return e.newLine!=null?`L${e.newLine}`:e.oldLine!=null?`old L${e.oldLine}`:"line"}function Ve(e){return e.side==="add"?"+":e.side==="del"?"-":" "}function Ye(e){const{snapshot:t,activeLayer:r,file:s}=e,i=T(s),c=s.binary?"binary":`+${s.additions??0} -${s.deletions??0}`;return{id:`file:${r??"diff"}:${i}`,kind:"file",label:i,detail:`${r??"diff"} · ${s.status} · ${c}`,preview:null,snippet:Oe({snapshot:t,activeLayer:r,file:s})}}function Ge(e){const{line:t}=e,r=Ve(t);return{id:`line:${t.layer}:${t.filePath}:${t.side}:${t.oldLine??""}:${t.newLine??""}`,kind:"line",label:`${t.filePath}:${qe(t)}`,detail:`${t.layer} · ${r}`,preview:`${r} ${Ue(t.text,180)}`,snippet:se({line:t})}}function Je(e){const{selection:t}=e,r=t.filePath??"diff selection",s=t.text.trim().split(`
|
|
7
|
+
`).filter(Boolean).length;return{id:`selection:${t.layer??"diff"}:${r}:${t.text}`,kind:"selection",label:r,detail:`${t.layer??"diff"} · ${s} line${s===1?"":"s"}`,preview:Xe(t.text),snippet:re({selection:t})}}function Qe({snapshot:e,activeLayer:t,selectedFile:r,setSelectedFileKey:s,resetKey:i}){const[c,f]=l.useState(""),[o,p]=l.useState([]),[a,d]=l.useState("scout"),[g,$]=l.useState(!1),[S,u]=l.useState(!1),[j,b]=l.useState(null),[w,m]=l.useState(null),k=l.useRef(null),N=l.useMemo(()=>e?Q(e):[],[e]),I=l.useMemo(()=>e?We(e):null,[e]);l.useEffect(()=>{f(""),p([]),$(!1),b(null),m(null)},[i]),l.useEffect(()=>{d(y=>g&&y==="scout"||N.some(x=>x.id===y)?y:I?.id??"scout")},[g,N,I?.id]);const R=l.useCallback(y=>{f(y),b(null),m(null)},[]),h=l.useCallback(y=>{$(!0),d(y)},[]),C=l.useCallback(y=>{p(x=>x.some(P=>P.id===y.id)?x:[...x,y]),b(null),m(null),queueMicrotask(()=>k.current?.focus())},[]),D=l.useCallback(y=>{p(x=>x.filter(P=>P.id!==y)),b(null),m(null)},[]),M=l.useCallback(async()=>{const y=c.trim();if(!y&&o.length===0||S||!e)return;const x=N.find(F=>F.id===a)??null,P=He({comment:y||"Please review the included diff context.",includedContext:o.map(F=>F.snippet),snapshot:e,activeLayer:t,selectedFile:r});u(!0),b(null),m(null);try{x?(await B("/api/ask",{method:"POST",body:JSON.stringify({body:P,targetAgentId:x.id,targetLabel:x.label,metadata:{source:"repo-diff",originSurface:"repo-diff",handoffKind:"repo-diff-comment",targetAgentId:x.id,worktreePath:e.worktreePath,activeLayer:t,selectedFile:r?T(r):null,scopeKind:e.scope?.kind??"worktree"}})}),b(`Sent to ${x.label}`)):(await B("/api/send",{method:"POST",body:JSON.stringify({body:P})}),b("Sent to Scout")),f(""),p([])}catch(F){m(F instanceof Error?F.message:String(F))}finally{u(!1)}},[t,o,c,S,a,N,r,e]),v=l.useCallback((y,x)=>{e&&(s(x),C(Ye({snapshot:e,activeLayer:t,file:y})))},[t,C,s,e]),L=l.useCallback(y=>{e&&C(Ge({line:y}))},[C,e]),E=l.useCallback(y=>{e&&C(Je({selection:y}))},[C,e]);return{targets:N,targetId:a,setTargetId:h,draft:c,setDraft:R,contextItems:o,removeContextItem:D,pending:S,status:j,error:w,textareaRef:k,submit:M,includeFileInComment:v,includeLineInComment:L,includeSelectionInComment:E}}function Ze({path:e,activeLayer:t,selectedFile:r,snapshotKey:s}){const i=r?T(r):null,c=`${e}\0${t??""}\0${i??""}\0${s}`,[f,o]=l.useState({layer:null,phase:"idle",error:null}),p=l.useRef(c),a=l.useMemo(()=>!t||!i?null:V(e,[t],{files:[i],tier:"patch",cacheScope:s}),[t,i,e,s]);return l.useEffect(()=>{if(p.current=c,!t||!i){o({layer:null,phase:"idle",error:null});return}if(a?.fresh){o({layer:a.snapshot.layers[0]??null,phase:"ready",error:null});return}o({layer:null,phase:"loading",error:null}),Y(e,[t],{files:[i],tier:"patch",cacheScope:s}).then(d=>{p.current===c&&o({layer:d.snapshot.layers[0]??null,phase:"ready",error:null})},d=>{p.current===c&&o(g=>({layer:g.layer,phase:"error",error:d instanceof Error?d.message:String(d)}))})},[t,a,i,e,c]),f}function et(e){const[t,r]=l.useState(null),[s,i]=l.useState(null),[c,f]=l.useState("split");l.useEffect(()=>{e&&f(e.render.preferredLayout==="stacked"?"unified":"split")},[e]),l.useEffect(()=>{if(!e)return;const d=e.layers.filter(g=>g.files.length>0)[0]??e.layers[0]??null;r(g=>g&&e.layers.some($=>$.kind===g)?g:d?d.kind:null)},[e]);const o=l.useMemo(()=>!e||!t?null:e.layers.find(a=>a.kind===t)??null,[e,t]),p=l.useMemo(()=>Be(o,s,K),[o,s]);return l.useEffect(()=>{if(!o){i(null);return}i(a=>{const d=o.files.map((g,$)=>K(g,$));return a&&d.includes(a)?a:d[0]??null})},[o]),{activeLayer:t,setActiveLayer:r,layer:o,selectedFileKey:s,setSelectedFileKey:i,selectedFile:p,layout:c,setLayout:f}}function tt({path:e,layers:t,files:r,session:s,tier:i="summary",forceInitialLoad:c}){const f=t.join(","),o=l.useMemo(()=>f.split(","),[f]),p=(r??[]).join("\0"),a=s?`${s.sessionId??""}\0${s.agentId??""}\0${s.include??"changed"}`:"",d=l.useMemo(()=>({files:p?p.split("\0").filter(Boolean):void 0,tier:i,session:a?{sessionId:s?.sessionId??null,agentId:s?.agentId??null,include:s?.include??"changed"}:null}),[p,s?.agentId,s?.include,s?.sessionId,a,i]),[g,$]=l.useState(null),[S,u]=l.useState("loading"),[j,b]=l.useState(null),[w,m]=l.useState(null),k=l.useRef(null),N=l.useRef(!1);l.useEffect(()=>{k.current=g},[g]);const I=l.useCallback(async(h={})=>{const C=V(e,o,d),D=h.force===!0||c&&!N.current,M=h.preserveCurrent===!0&&k.current!=null;b(null),C&&!D?($(C.snapshot),m(_(C,!0)),u("ready")):M?(m(v=>({fetchedAt:v?.fetchedAt??Date.now(),cacheHit:v?.cacheHit??!1,refreshing:!0,refreshError:null})),u("ready")):(u("loading"),m(null));try{const v=await Y(e,o,{force:D||C!=null,...d});D&&(N.current=!0),$(v.snapshot),m(ie(v,!1)),u("ready")}catch(v){const L=v instanceof Error?v.message:String(v);C?(m(_(C,!1,L)),u("ready")):M?(m(E=>E&&{...E,refreshing:!1,refreshError:L}),u("ready")):(b(L),u("error"))}},[c,e,o,d]);l.useEffect(()=>{I()},[I]);const R=l.useCallback(()=>{I({force:!0,preserveCurrent:!0})},[I]);return{snapshot:g,fetchPhase:S,fetchError:j,freshness:w,filesKey:p,sessionKey:a,requestedLayers:o,loadSnapshot:I,refreshSnapshot:R}}function yt({path:e,layers:t=oe,files:r,session:s,forceInitialLoad:i=!1,onClose:c,onOpenAsPage:f,className:o,title:p}){const{snapshot:a,fetchPhase:d,fetchError:g,freshness:$,filesKey:S,sessionKey:u,loadSnapshot:j,refreshSnapshot:b}=tt({path:e,layers:t,files:r,session:s,tier:"summary",forceInitialLoad:i}),{pierre:w,pierrePhase:m,pierreError:k,pierreTheme:N,retryPierre:I}=ae(a),{activeLayer:R,setActiveLayer:h,layer:C,selectedFileKey:D,setSelectedFileKey:M,selectedFile:v,layout:L,setLayout:E}=et(a),y=Ze({path:e,activeLayer:R,selectedFile:v,snapshotKey:a?.render.renderKey??""}),x=Qe({snapshot:a,activeLayer:R,selectedFile:v,setSelectedFileKey:M,resetKey:`${e}\0${S}\0${u}`});if(d==="loading"&&!a)return n.jsx(A,{className:o,children:n.jsxs(H,{children:[n.jsx("div",{className:"rd-spinner","aria-hidden":!0}),n.jsxs("div",{className:"rd-center-title",children:["Reading ",s?"session":"worktree"," diff…"]}),n.jsx("div",{className:"rd-center-body",children:e})]})});if(d==="error"&&!a)return n.jsx(A,{className:o,children:n.jsxs(H,{children:[n.jsx("div",{className:"rd-center-title",children:"Couldn’t load the diff"}),n.jsx("div",{className:"rd-center-body",children:g??"The broker did not return a diff snapshot."}),n.jsx("div",{className:"rd-center-action",children:n.jsx("button",{type:"button",className:"rd-btn",onClick:()=>{j()},children:"Retry"})})]})});if(!a)return n.jsx(A,{className:o});const P=p??Z(a.worktreePath);return n.jsxs(A,{className:o,children:[n.jsx($e,{heading:P,worktreePath:a.worktreePath,snapshot:a,freshness:$,activeLayer:R,onLayer:h,layout:L,onLayout:E,refreshing:$?.refreshing===!0,onRefresh:b,onFocusComment:()=>{x.textareaRef.current?.scrollIntoView({block:"nearest"}),x.textareaRef.current?.focus()},onClose:c,onOpenAsPage:f}),n.jsx(Se,{snapshot:a}),n.jsxs("div",{className:"rd-body",children:[n.jsx(Ee,{layer:C,selectedFileKey:D,onSelect:M,onIncludeFile:x.includeFileInComment}),n.jsx(ke,{snapshot:a,selectedFile:v,targets:x.targets,targetId:x.targetId,onTargetId:x.setTargetId,draft:x.draft,onDraft:x.setDraft,contextItems:x.contextItems,onRemoveContextItem:x.removeContextItem,pending:x.pending,status:x.status,error:x.error,textareaRef:x.textareaRef,onSubmit:x.submit}),n.jsx(le,{layer:C,patchLayer:y.layer,patchPhase:y.phase,patchError:y.error,selectedFileKey:D,renderKey:a.render.renderKey,theme:N,layout:L,pierre:w,pierrePhase:m,pierreError:k,onRetryPierre:I,onIncludeLineContext:x.includeLineInComment,onIncludeSelectionContext:x.includeSelectionInComment})]})]})}export{yt as RepoDiffViewer,yt as default};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/RepoDiffViewer-Bo0gREMj.js","assets/index-sUomXsrf.js","assets/index-DITWsjFb.css","assets/ui-LM8pS8qE.js","assets/usePierreRuntime-DIVunfX0.js","assets/chunk-HRAB3GC3-CvwpNg-G.js","assets/chevron-down-BFai6ZfE.js","assets/createLucideIcon-DlxlBfLC.js","assets/check-BbgHJX8u.js","assets/loader-circle-lWOOKezu.js","assets/send-horizontal-DDwOgEs3.js","assets/code-xml-05TD3uOC.js","assets/x-0XjXwGqq.js","assets/cache-Dr0why2k.js","assets/api-h5zurxmi.js","assets/message-square-BD-4UUdc.js","assets/refresh-cw-D8PFyhUa.js","assets/plus-C9lTjsgd.js","assets/repo-diff-DyYmQMSA.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{j as e,r as i,_ as s}from"./index-sUomXsrf.js";/* empty css */const a=i.lazy(()=>s(()=>import("./RepoDiffViewer-Bo0gREMj.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18])).then(r=>({default:r.RepoDiffViewer})));function t(){return e.jsx("div",{className:"rd-viewer","data-scout-theme":!0,children:e.jsx("div",{className:"rd-center",children:e.jsxs("div",{className:"rd-center-card",children:[e.jsx("div",{className:"rd-spinner","aria-hidden":!0}),e.jsx("div",{className:"rd-center-title",children:"Opening diff viewer…"})]})})})}function c(r){return e.jsx(i.Suspense,{fallback:e.jsx(t,{}),children:e.jsx(a,{...r})})}export{c as R};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{r as u,j as e}from"./index-
|
|
1
|
+
import{r as u,j as e}from"./index-sUomXsrf.js";import{E as se}from"./EmptyState-CoL-QuUO.js";import{u as We}from"./ContextMenu-BlBQhpax.js";import{f as he,b as qe}from"./api-BkjHJfgJ.js";import{a as _e}from"./api-h5zurxmi.js";import{c as te}from"./clipboard-e3fSpeo7.js";import{u as Be}from"./keyboard-nav-BhZZ5HEq.js";/* empty css */import{f as w,c as He,b as Ce,r as Ee,u as Pe,i as ie,w as Ae,k as Ie,l as Ue,m as G,a as X,s as Ke,h as Ve}from"./ui-LM8pS8qE.js";import{B as Me,p as ze,c as Ge}from"./selection-bridge-CJOTyYQs.js";import{S as Xe}from"./SlidePanel-FCqT1zO3.js";import{R as Ye}from"./RepoDiffViewerLazy-C8UPk4oo.js";import{p as Je}from"./cache-Dr0why2k.js";import{u as Qe}from"./Provider-tFc3jqZ4.js";import{R as Ze}from"./refresh-cw-D8PFyhUa.js";import{S as es}from"./sliders-horizontal-B9Nj-Y4J.js";/* empty css */import"./router-Dja9_ygK.js";import"./terminal-sessions-D5CIR2OL.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./createLucideIcon-DlxlBfLC.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./x-0XjXwGqq.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./time-Dhsh_2EG.js";import"./NewChatOrigin--pHWUb4V.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";const pe=[{value:"claude",label:"Claude"},{value:"codex",label:"Codex"},{value:"pi",label:"Grok"}],ss=[{value:"low",label:"Low"},{value:"medium",label:"Medium"},{value:"high",label:"High"},{value:"xhigh",label:"XHigh"}],ts=[{value:"new",label:"New session",hint:"Start a fresh harness session for this agent"},{value:"existing",label:"Continue session",hint:"Resume this agent’s current harness session"}];function me(s){return`gh pr checkout ${s.number}`}function ns(s){return[`Please review pull request #${s.number}: ${s.title}`,"",`URL: ${s.url}`,`Repo: ${s.repo}`,`Branch: ${s.headRefName||"head"} → ${s.baseRefName||"base"}`,s.path?`Local path: ${s.path}`:null,s.author?`Author: @${s.author}`:null,s.isDraft?"Status: draft":"Status: open","","Read the diff, summarize the change, call out risks or test gaps, and recommend ship / revise / hold."].filter(n=>n!=null).join(`
|
|
2
2
|
`)}function Q(s){return s.handle?.trim()||s.name?.trim()||s.id}function fe(s,n){const t=s?.trim(),r=n?.trim();return!t||!r?!1:t===r||t.startsWith(`${r}/`)||r.startsWith(`${t}/`)}function rs(s){switch(s?.trim().toLowerCase()){case"available":case"idle":case"callable":return 40;case"active":case"working":case"running":case"in_turn":case"in_flight":return 20;case"queued":case"waiting":case"waking":return 10;case"offline":case"retired":case"stale":case"blocked":return-50;default:return 0}}function as(s,n,t){const r=t?.trim()||s.path?.trim()||null,a=s.repo.split("/").pop()?.toLowerCase()??"",i=s.headRefName?.trim()??"";return n.filter(o=>!o.retiredFromFleet).map(o=>{let c=rs(o.state);return(fe(o.projectRoot,r)||fe(o.cwd,r))&&(c+=1e3),a&&o.project?.trim().toLowerCase()===a&&(c+=400),i&&o.branch?.trim()===i&&(c+=200),{agent:o,score:c}}).sort((o,c)=>c.score!==o.score?c.score-o.score:Q(o.agent).localeCompare(Q(c.agent))).map(o=>o.agent)}function ge(s,n){const t=new Map,r=s.path?.trim();if(r){const a=r.split("/").filter(Boolean).at(-1)??r;t.set(r,s.repo||a)}for(const a of n){const i=a.root?.trim();i&&(t.has(i)||t.set(i,a.name?.trim()||i.split("/").filter(Boolean).at(-1)||i))}return[...t.entries()].map(([a,i])=>({path:a,label:i}))}function ne(s,n){return s?.harness?.trim()||n?.trim()||"claude"}function is(s){return s?.model?.trim()||""}function ls(s,n){const t=new Set,r=n?.model?.trim();r&&t.add(r);for(const a of s){const i=a.model?.trim();i&&t.add(i)}return[...t]}function os(s){const n=s.harness?.trim()||void 0,t=s.model?.trim()||void 0,r=s.reasoningEffort?.trim()||void 0;return{...n?{harness:n}:{},...t?{model:t}:{},...r?{reasoningEffort:r}:{}}}async function cs(s,n){const t=ns(s),r=n.projectPath.trim();if(!r)throw new Error("Pick a project path for the review.");const a=os(n),i=n.agent??null,o=i&&n.sessionMode==="existing"?"existing":"new";if(i&&o==="existing"&&!i.harnessSessionId?.trim())throw new Error(`@${Q(i)} has no live harness session to continue. Pick “New session” instead.`);const c=await _e("/api/sessions",{method:"POST",body:JSON.stringify({target:i?{agentId:i.id,projectPath:r}:{projectPath:r},execution:{session:o,...o==="existing"&&i?.harnessSessionId?.trim()?{targetSessionId:i.harnessSessionId.trim()}:{},...a},agent:{persistence:i?"sticky":"one_time",...i?.handle?.trim()?{handle:i.handle.trim()}:{}},seed:{instructions:t}})}),h=c.flightId??c.flight?.id??null,p=c.targetAgentId??c.flight?.targetAgentId??c.agentId??i?.id??null,d=c.targetLabel?.trim()||(i?Q(i):null)||p||"one-time reviewer",m=i?o==="existing"?"continue":"new session":"one-time";return{message:[`Assigned #${s.number} for review → ${d.startsWith("@")?d:`@${d}`}`,`· ${m}`,a.harness?`· ${a.harness}`:null,a.model?`· ${a.model}`:null,a.reasoningEffort?`· ${a.reasoningEffort}`:null,h?`· ${h}`:null].filter(Boolean).join(" "),flightId:h,conversationId:c.conversationId??null,targetAgentId:p,targetLabel:d}}function ds(s){window.open(s.url,"_blank","noopener,noreferrer")}function us(s,n={}){const{matchingWorktree:t,onBeginAssign:r,onSelectWorktreeId:a,onOpenDiff:i,onStatus:o}=n,c=[];return r&&c.push({kind:"action",label:"Assign for review…",onSelect:()=>r(s)}),c.push({kind:"action",label:"Open on GitHub",onSelect:()=>ds(s)}),t&&a&&c.push({kind:"action",label:`Select worktree · ${t.branch}`,onSelect:()=>a(t.id)}),t&&i&&c.push({kind:"action",label:"Open local diff",onSelect:()=>i(t.path)}),c.push({kind:"separator"},{kind:"action",label:"Copy link",onSelect:()=>{te(s.url).then(h=>{o?.(h?`Copied link for #${s.number}`:`Could not copy link for #${s.number}`)})}},{kind:"action",label:"Copy checkout command",onSelect:()=>{te(me(s)).then(h=>{o?.(h?`Copied: ${me(s)}`:`Could not copy checkout command for #${s.number}`)})}},{kind:"action",label:"Copy title",onSelect:()=>{te(`#${s.number} ${s.title}`).then(h=>{o?.(h?`Copied title for #${s.number}`:`Could not copy title for #${s.number}`)})}}),c}function hs(s){return s.startsWith("/Users/")?`~/${s.split("/").slice(3).join("/")}`:s}function ps(s){const n=s.handle?.trim()||s.name?.trim()||s.id,t=[s.harness?.trim(),s.model?.trim(),s.state?.trim(),s.harnessSessionId?.trim()?"session":null].filter(Boolean);return t.length>0?`@${n} · ${t.join(" · ")}`:`@${n}`}function Y(s){const n=s?.trim();return n?n.length>18?`${n.slice(0,10)}…${n.slice(-4)}`:n:null}function ms({pr:s,agents:n,projects:t,pending:r,error:a,onClose:i,onPendingChange:o,onError:c,onAssigned:h}){const p=Be(),d=u.useMemo(()=>ge(s,t),[s,t]),[m,b]=u.useState(()=>d[0]?.path??s.path?.trim()??""),[S,A]=u.useState(""),P=u.useMemo(()=>as(s,n,m),[n,s,m]),f=P.find(l=>l.id===S)??null,x=!!f?.harnessSessionId?.trim(),[C,I]=u.useState(()=>ne(null)),[R,O]=u.useState(""),[j,y]=u.useState("medium"),[N,$]=u.useState("new");u.useEffect(()=>{const v=ge(s,t)[0]?.path??s.path?.trim()??"";b(v),A(""),I(ne(null)),O(""),y("medium"),$("new"),c(null)},[s.id]),u.useEffect(()=>{m&&d.some(l=>l.path===m)||b(d[0]?.path??s.path?.trim()??"")},[s.path,d,m]),u.useEffect(()=>{if(!f){$("new");return}I(ne(f)),O(is(f)),$(f.harnessSessionId?.trim()?"existing":"new")},[f?.id]),u.useEffect(()=>{S&&(P.some(l=>l.id===S)||A(""))},[S,P]),u.useEffect(()=>{N==="existing"&&f&&!x&&$("new")},[x,f,N]);const T=u.useMemo(()=>ls(P,f),[P,f]),D=!!m.trim()&&!r&&!(f&&N==="existing"&&!x),W=async()=>{if(D){o(!0),c(null);try{const l=await cs(s,{projectPath:m.trim(),harness:C,model:R,reasoningEffort:j,agent:f,sessionMode:f?N:"new"});h(l)}catch(l){c(l instanceof Error?l.message:String(l))}finally{o(!1)}}},F=r?"Assigning…":f?N==="existing"?"Continue session · review":"New session · review":"Start review",M=f?N==="existing"?`Continues @${f.handle?.trim()||f.name}'s current session${Y(f.harnessSessionId)?` (${Y(f.harnessSessionId)})`:""}.`:`Starts a fresh harness session for @${f.handle?.trim()||f.name}.`:"Starts a disposable one-time reviewer on the project with the runtime above.";return e.jsx("div",{className:"rw-pr-assign-backdrop",role:"presentation",onMouseDown:l=>{l.target===l.currentTarget&&!r&&i()},children:e.jsxs("div",{ref:p.ref,className:"rw-pr-assign-dialog",role:"dialog","aria-modal":"true","aria-labelledby":"rw-pr-assign-title",tabIndex:-1,onKeyDown:l=>{p.onKeyDown(l),l.key==="Escape"&&!r&&(l.stopPropagation(),i())},children:[e.jsxs("div",{className:"rw-pr-assign-head",children:[e.jsxs("div",{children:[e.jsx("div",{className:"rw-pr-assign-eyebrow",children:"Assign for review"}),e.jsxs("h2",{id:"rw-pr-assign-title",className:"rw-pr-assign-title",children:["#",s.number," · launch review"]}),e.jsx("p",{className:"rw-pr-assign-copy",title:s.title,children:s.title}),e.jsxs("p",{className:"rw-pr-assign-meta",children:[s.repo," · ",s.headRefName||"head"," → ",s.baseRefName||"base"]})]}),e.jsx("button",{type:"button",className:"rw-pr-assign-close",onClick:i,disabled:r,children:"Cancel"})]}),e.jsxs("div",{className:"rw-pr-assign-body",children:[e.jsxs("div",{className:"rw-pr-assign-fields",children:[e.jsxs("label",{className:"rw-pr-assign-field",children:[e.jsx("span",{children:"Project"}),e.jsx("select",{value:m,disabled:r||d.length===0,onChange:l=>b(l.target.value),"aria-label":"Project path",children:d.length===0?e.jsx("option",{value:"",children:"No local project"}):d.map(l=>e.jsxs("option",{value:l.path,children:[l.label," · ",hs(l.path)]},l.path))})]}),e.jsxs("label",{className:"rw-pr-assign-field",children:[e.jsx("span",{children:"Harness"}),e.jsxs("select",{value:C,disabled:r,onChange:l=>I(l.target.value),"aria-label":"Harness",children:[pe.map(l=>e.jsx("option",{value:l.value,children:l.label},l.value)),C&&!pe.some(l=>l.value===C)?e.jsx("option",{value:C,children:C}):null]})]}),e.jsxs("label",{className:"rw-pr-assign-field",children:[e.jsx("span",{children:"Model"}),e.jsx("input",{list:"rw-pr-assign-models",value:R,disabled:r,placeholder:"Default for harness",onChange:l=>O(l.target.value),"aria-label":"Model"}),e.jsx("datalist",{id:"rw-pr-assign-models",children:T.map(l=>e.jsx("option",{value:l},l))})]}),e.jsxs("label",{className:"rw-pr-assign-field",children:[e.jsx("span",{children:"Effort"}),e.jsx("select",{value:j,disabled:r,onChange:l=>y(l.target.value),"aria-label":"Reasoning effort",children:ss.map(l=>e.jsx("option",{value:l.value,children:l.label},l.value))})]}),e.jsxs("label",{className:"rw-pr-assign-field rw-pr-assign-field--wide",children:[e.jsxs("span",{children:["Agent ",e.jsx("em",{children:"(optional)"})]}),e.jsxs("select",{value:S,disabled:r,onChange:l=>A(l.target.value),"aria-label":"Existing agent (optional)",children:[e.jsx("option",{value:"",children:"New one-time reviewer on project"}),P.map(l=>e.jsx("option",{value:l.id,children:ps(l)},l.id))]})]}),f?e.jsxs("fieldset",{className:"rw-pr-assign-session",disabled:r,children:[e.jsx("legend",{children:"Session"}),e.jsx("div",{className:"rw-pr-assign-session-choices",role:"radiogroup","aria-label":"Session mode",children:ts.map(l=>{const v=l.value==="existing"&&!x,L=N===l.value;return e.jsxs("button",{type:"button",role:"radio","aria-checked":L,className:"rw-pr-assign-session-choice","data-active":L||void 0,disabled:v,title:v?"This agent has no live harness session to continue":l.hint,onClick:()=>$(l.value),children:[e.jsx("span",{className:"rw-pr-assign-session-title",children:l.label}),e.jsx("span",{className:"rw-pr-assign-session-sub",children:v?"No live session on this agent":l.value==="existing"&&Y(f.harnessSessionId)?Y(f.harnessSessionId):l.hint})]},l.value)})})]}):null]}),e.jsx("p",{className:"rw-pr-assign-hint",children:M}),a?e.jsx("div",{className:"rw-pr-assign-error",role:"alert",children:a}):null,e.jsx("div",{className:"rw-pr-assign-actions",children:e.jsx("button",{type:"button",className:"rw-pr-assign-submit",disabled:!D,onClick:()=>{W()},children:F})})]})]})})}const fs=/^Skipped missing repo-watch path:\s*(.+)$/i,gs=4;function js(s){const n=s.trim().replace(/\/+$/,"")||s.trim();if(!n)return"unknown paths";if(n==="~"||n.startsWith("~/"))return"~/*";if(!n.startsWith("/")){const[r]=n.split(/[\\/]/).filter(Boolean);return r?`${r}/*`:n}const t=n.split("/").filter(Boolean);return t[0]==="Users"&&t[1]?`/Users/${t[1]}/*`:t[0]==="Volumes"&&t[1]?`/Volumes/${t[1]}/*`:t.length>=2?`/${t[0]}/${t[1]}/*`:`/${t[0]??""}`}function xs(s,n){const t=[...new Set(s)];if(t.length===1)return{message:`Skipped missing repo-watch path: ${t[0]}`,examples:[],rawCount:1};const r=t.slice(0,gs),a=t.length-r.length;return a>0&&r.push(`+${a} more`),{message:`Skipped ${t.length} missing repo-watch paths under ${n}. These look like stale broker hints.`,examples:r,rawCount:t.length}}function je(s,n){if(s.length===0)return;const t=new Map;for(const r of s){const a=js(r),i=t.get(a);i?i.push(r):t.set(a,[r])}for(const[r,a]of t)n.push(xs(a,r));s.length=0}function bs(s){const n=[],t=[];for(const r of s){const a=fs.exec(r);if(a){t.push(a[1].trim());continue}je(t,n),n.push({message:r,examples:[],rawCount:1})}return je(t,n),n}const xe={attention:"desc",name:"asc",churn:"desc",files:"desc",drift:"desc",attached:"desc"},be="attention";function ws(s){return!s.status.clean||s.branch.ahead>0||s.branch.behind>0||s.agents.some(ie)||s.sessions.length>0||s.error!=null}function vs(s,n){const t=He(s),r=Ce(s),{add:a,del:i,total:o}=Ee(s),c=Pe(s);return{wt:s,project:n,state:Ae(s),add:a,del:i,churn:o,files:r.files+Math.max(t.files,s.status.changedFiles),live:c.filter(ie).length,agentsUnique:c}}function Te(s){return s.status.conflicts>0||s.error!=null}function Ns(s){const n=s.flatMap(i=>i.worktrees.filter(Te).map(o=>{const c=o.branch.name??o.name;return o.status.conflicts>0?`${i.name}/${c}: ${w(o.status.conflicts)} conflict${o.status.conflicts===1?"":"s"}`:`${i.name}/${c}: scan error`})),t="Worktrees blocked by conflicts or scan errors.";if(n.length===0)return t;const r=n.slice(0,8),a=n.length-r.length;return[t,...r,a>0?`+${a} more`:null].filter(i=>!!i).join(`
|
|
3
3
|
`)}function Ss({snapshot:s,selectedId:n,onSelect:t,onViewDiff:r,scanDepth:a,scanMorePending:i,onScanMore:o,openPullRequestCount:c,openPullRequestTitle:h}){const[p,d]=u.useState(be),[m,b]=u.useState(xe[be]),[S,A]=u.useState(!1),{liveRows:P,cleanRows:f,stats:x,blockedTitle:C}=u.useMemo(()=>{const j=[],y=[];let N=0,$=0,T=0;for(const F of s.projects)for(const M of F.worktrees){const l=vs(M,F);T+=l.files,l.live>0&&N++,Te(M)&&$++,(ws(M)?j:y).push(l)}const D=s.totals,W={repos:D.projects,worktrees:D.worktrees,dirtyWorktrees:D.dirtyWorktrees,changedFiles:T,live:N,blocked:$};return{liveRows:j,cleanRows:y,stats:W,blockedTitle:Ns(s.projects)}},[s.projects,s.totals]),I=u.useMemo(()=>{const j=Ms(P,p,m),y=new Map;for(const N of j){const $=y.get(N.project.id);$?$.push(N):y.set(N.project.id,[N])}return[...y.values()]},[P,p,m]);function R(j){j===p?b(y=>y==="asc"?"desc":"asc"):(d(j),b(xe[j]))}const O=P.length===0&&f.length===0;return e.jsxs("section",{className:"rw-table",children:[e.jsxs("div",{className:"rw-head",children:[e.jsxs("div",{className:"rw-head-top",children:[e.jsx("span",{className:"rw-eyebrow",children:"STATE OF REPOS"}),f.length>0?e.jsxs("button",{type:"button",className:"rw-clean",style:{marginLeft:"auto"},onClick:()=>A(j=>!j),"aria-pressed":S,children:[S?"hide":"show"," clean & idle (",f.length,")"]}):null]}),e.jsxs("div",{className:"stats",children:[e.jsx(U,{v:x.repos,k:"REPOS"}),x.worktrees>x.repos?e.jsx(U,{v:x.worktrees,k:"WORKTREES",title:`${w(x.worktrees)} worktrees across ${w(x.repos)} repos.`}):null,e.jsx(U,{v:x.changedFiles,k:"CHANGED",title:`${w(x.changedFiles)} changed files across ${w(x.dirtyWorktrees)} dirty worktree${x.dirtyWorktrees===1?"":"s"}.`}),x.live>0?e.jsx(U,{v:x.live,k:"WORKING",tone:"mint"}):null,(c??0)>0?e.jsx(U,{v:c??0,k:"OPEN PRS",tone:"amber",title:h??void 0}):null,x.blocked>0?e.jsx(U,{v:x.blocked,k:"BLOCKED",tone:"coral",title:C}):null]})]}),e.jsxs("div",{className:"tbl-wrap",children:[e.jsxs("div",{className:"tbl-head",children:[e.jsx(V,{label:"REPO / BRANCH · WORKTREE",k:"name",sortKey:p,dir:m,onSort:R}),e.jsx(V,{label:"CHURN",k:"churn",sortKey:p,dir:m,onSort:R,align:"r"}),e.jsx(V,{label:"FILES",k:"files",sortKey:p,dir:m,onSort:R,align:"c"}),e.jsx(V,{label:"DRIFT",k:"drift",sortKey:p,dir:m,onSort:R,align:"c"}),e.jsx(V,{label:"ATTACHED",k:"attached",sortKey:p,dir:m,onSort:R})]}),O?e.jsx("div",{className:"rw-empty",children:"No repositories discovered yet."}):I.map(j=>j.length>1?e.jsx(Rs,{group:j,selectedId:n,onSelect:t,onViewDiff:r},j[0].project.id):e.jsx(ae,{row:j[0],top:!0,selected:n===j[0].wt.id,onSelect:()=>t(j[0].wt.id),onViewDiff:r},j[0].wt.id)),S&&f.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"tbl-head",style:{position:"static"},children:e.jsxs("span",{children:["CLEAN & IDLE · ",f.length]})}),f.map(j=>e.jsx(ae,{row:j,top:!0,clean:!0,selected:n===j.wt.id,onSelect:()=>t(j.wt.id),onViewDiff:r},j.wt.id))]}):null,e.jsx(ks,{snapshot:s,scanDepth:a,scanMorePending:i,onScanMore:o})]})]})}function ks({snapshot:s,scanDepth:n,scanMorePending:t,onScanMore:r}){const a=ys(s),i=bs(s.warnings),o=i.reduce((c,h)=>c+h.rawCount,0);return e.jsxs("div",{className:"scan-coverage",children:[e.jsxs("div",{className:"scan-coverage-row",children:[e.jsx("b",{children:"SCAN"}),e.jsx("span",{className:"scan-main",children:a.summary}),a.canScanMore&&n==="standard"?e.jsx("button",{type:"button",onClick:r,disabled:t,children:t?"Scanning":"Scan more"}):e.jsx("span",{className:"scan-chip",children:n==="expanded"?"expanded":"standard"})]}),i.length>0?e.jsxs("details",{className:"scan-details",children:[e.jsxs("summary",{children:[w(i.length)," diagnostic group",i.length===1?"":"s",o!==i.length?` (${w(o)} raw)`:""]}),e.jsx("ul",{children:i.map((c,h)=>e.jsxs("li",{children:[e.jsx("span",{children:c.message}),c.examples.length>0?e.jsx("span",{className:"scan-detail-examples",children:c.examples.join(" · ")}):null]},`${h}:${c.message}`))})]}):null]})}function ys(s){let n=null,t=0,r=0,a=0,i=0,o=0,c=0;for(const p of s.warnings){const d=/limited discovery to (\d+) repositories/i.exec(p);if(d){n=`discovery capped at ${d[1]}`;continue}if(/limited .* to \d+ worktrees/i.test(p)){t++;continue}if(/skipped unreadable worktree/i.test(p)){r++;continue}if(/skipped missing repo-watch path/i.test(p)){a++;continue}if(/scan budget|stopped discovery|stopped scanning/i.test(p)){i++;continue}if(/could not resolve git common directory/i.test(p)){o++;continue}c++}const h=[`${w(s.totals.projects)} repo${s.totals.projects===1?"":"s"}`,`${w(s.totals.worktrees)} worktree${s.totals.worktrees===1?"":"s"}`];return n&&h.push(n),t&&h.push(`${w(t)} repo${t===1?"":"s"} at worktree cap`),r&&h.push(`${w(r)} unreadable worktree${r===1?"":"s"} skipped`),a&&h.push(`${w(a)} missing path${a===1?"":"s"}`),o&&h.push(`${w(o)} unresolved git dir${o===1?"":"s"}`),i&&h.push("scan budget reached"),c&&h.push(`${w(c)} other diagnostic${c===1?"":"s"}`),{summary:h.join(" · "),canScanMore:n!==null||t>0||i>0}}function Rs({group:s,selectedId:n,onSelect:t,onViewDiff:r}){const a=s[0].project,i=s.some(p=>p.state==="error"),o=s.reduce((p,d)=>p+d.add,0),c=s.reduce((p,d)=>p+d.del,0),h=s.reduce((p,d)=>p+(d.live?1:0),0);return e.jsxs("div",{children:[e.jsxs("div",{className:"repo-grp"+(i?" attn":""),children:[e.jsxs("div",{className:"rg-name",children:[e.jsx("span",{className:"rg-tw","aria-hidden":!0,children:e.jsx("svg",{width:"11",height:"11",viewBox:"0 0 11 11",fill:"none",style:{transform:"rotate(90deg)"},children:e.jsx("path",{d:"M3 2l4 3.5L3 9",stroke:"currentColor",strokeWidth:"1.3",fill:"none"})})}),e.jsx("span",{className:"dot "+Is(s)}),e.jsx("span",{className:"rg-nm",children:a.name}),e.jsx("span",{className:"rg-path",children:Ie(a.root,3)}),e.jsxs("span",{className:"rg-badge",children:[a.worktrees.length," worktrees"]})]}),e.jsx("div",{className:"rg-agg",children:o||c?e.jsxs("span",{children:[e.jsxs("span",{style:{color:"var(--mint-dim)"},children:["+",w(o)]})," ",e.jsxs("span",{style:{color:"var(--coral-dim)"},children:["−",w(c)]})]}):"—"}),e.jsx("div",{}),e.jsx("div",{}),e.jsx("div",{className:"rg-agg",style:{textAlign:"left"},children:h?`${h} working`:""})]}),s.map((p,d)=>e.jsx(ae,{row:p,guide:!0,last:d===s.length-1,selected:n===p.wt.id,onSelect:()=>t(p.wt.id),onViewDiff:r},p.wt.id))]})}function ae({row:s,top:n,guide:t,last:r,clean:a,selected:i,onSelect:o,onViewDiff:c}){const{wt:h,project:p}=s,d=h.branch,m=Ce(h),b=!!c&&(s.files>0||m.has||h.branch.ahead>0);return e.jsx(e.Fragment,{children:e.jsxs("div",{className:["wt",i?"sel":"",s.state==="error"?"attn":""].join(" "),style:n&&!a?{borderTop:"1px solid var(--line)"}:void 0,onClick:o,role:"button",tabIndex:0,onKeyDown:o?S=>{(S.key==="Enter"||S.key===" ")&&(S.preventDefault(),o())}:void 0,children:[e.jsxs("div",{className:"wt-name",children:[t?e.jsx("span",{className:"tw-guide"+(r?" last":"")}):null,e.jsxs("div",{className:"inner",children:[e.jsx("span",{className:"dot "+s.state}),e.jsxs("span",{className:"br",children:[n&&!t?e.jsxs("span",{className:"lead",children:[p.name," "]}):null,e.jsx(Me,{branch:h.branch,fallback:h.name})]}),e.jsx(As,{wt:h})]})]}),e.jsx($s,{add:s.add,del:s.del}),e.jsx("div",{className:"files",children:s.files>0?e.jsxs("span",{children:[s.files,h.status.conflicts>0?e.jsxs("span",{className:"conf",children:[" ⚠",h.status.conflicts]}):null]}):e.jsx("span",{className:"dash",children:"—"})}),e.jsx(Cs,{ahead:d.ahead,behind:d.behind}),e.jsxs("div",{className:"agents-cell",children:[e.jsx(Ps,{row:s}),b?e.jsx("button",{type:"button",className:"wt-diff",title:`View diff · ${s.files} changed file${s.files===1?"":"s"}`,"aria-label":"View diff",onClick:S=>{S.stopPropagation(),c?.(h.path)},children:"diff"}):null]})]})})}function U({v:s,k:n,tone:t,title:r}){return e.jsxs("div",{className:"stat",title:r,"aria-label":r?`${w(s)} ${n}. ${r}`:void 0,children:[e.jsx("span",{className:"v"+(t?" "+t:""),children:w(s)}),e.jsx("span",{className:"k",children:n})]})}function V({label:s,k:n,sortKey:t,dir:r,onSort:a,align:i}){const o=t===n;return e.jsx("div",{className:i==="r"?"r":i==="c"?"c":"",children:e.jsxs("button",{type:"button",className:o?"on":"",onClick:()=>a(n),children:[e.jsx("span",{children:s}),e.jsx("span",{className:"caret","aria-hidden":!0,children:r==="asc"?"▲":"▼"})]})})}function $s({add:s,del:n}){if(!s&&!n)return e.jsx("div",{className:"churn",children:e.jsx("span",{className:"dash",children:"—"})});const t=s+n||1;return e.jsxs("div",{className:"churn",children:[e.jsxs("span",{className:"nums",children:[e.jsxs("span",{className:"add",children:["+",w(s)]}),e.jsx("span",{className:"sl",children:"/"}),e.jsxs("span",{className:"del",children:["−",w(n)]})]}),e.jsxs("span",{className:"cbar",title:`+${w(s)} −${w(n)}`,children:[e.jsx("span",{className:"g",style:{width:s/t*100+"%"}}),e.jsx("span",{className:"r",style:{width:n/t*100+"%"}})]})]})}function Cs({ahead:s,behind:n}){return!s&&!n?e.jsx("div",{className:"drift",children:e.jsx("span",{className:"dash",children:"—"})}):e.jsxs("div",{className:"drift",children:[s?e.jsxs("span",{className:"dp ahead",children:["↑",s]}):null,n?e.jsxs("span",{className:"dp behind",children:["↓",n]}):null]})}const Es=2;function Ps({row:s}){const n=s.agentsUnique,t=s.wt.sessions,r=[...n.map(o=>`${X(o)} (${o.state??"—"})`),...t.map(o=>`session ${Ke(o)}`)].join(`
|
|
4
4
|
`);if(n.length===0)return e.jsx("div",{className:"agents",title:r,children:t.length>0?e.jsxs("span",{className:"ahandle",children:[t.length," session",t.length===1?"":"s"]}):e.jsx("span",{className:"dash",children:"—"})});const a=n.slice(0,Es),i=n.length-a.length;return e.jsxs("div",{className:"agents",title:r,children:[s.live>0?e.jsxs("span",{className:"alive",children:[e.jsx("span",{className:"d"}),s.live]}):null,e.jsx("span",{className:"ahandle",children:a.map(o=>X(o)).join(" ")}),i>0?e.jsxs("span",{className:"amore",children:["+",i]}):null]})}function As({wt:s}){const n=[];return s.branch.detached?n.push({label:"DETACHED",cls:""}):s.branch.upstream||n.push({label:"LOCAL",cls:""}),s.error!=null&&n.push({label:"SCAN ERR",cls:"err"}),s.isBare&&n.push({label:"BARE",cls:""}),e.jsx(e.Fragment,{children:n.map(t=>e.jsx("span",{className:"tag "+t.cls,children:t.label},t.label))})}const we={error:3,live:2,dirty:1,clean:0};function Is(s){return s.reduce((n,t)=>we[t.state]>we[n]?t.state:n,"clean")}function Ms(s,n,t){const r=t==="asc"?1:-1,a=d=>{switch(n){case"attention":return-G(d.wt.attention);case"churn":return d.churn;case"files":return d.files;case"drift":return d.wt.branch.ahead+d.wt.branch.behind;case"attached":return d.live*1e6+d.agentsUnique.length*1e3+d.wt.sessions.length;default:return 0}},i=new Map;for(const d of s){const m=i.get(d.project.id);m?m.push(d):i.set(d.project.id,[d])}const o=(d,m)=>{if(n==="name")return Ue(d,m,r);const b=(a(d)-a(m))*r;if(b!==0)return b;const S=G(d.wt.attention)-G(m.wt.attention);return S!==0?S:d.wt.path.localeCompare(m.wt.path)},c=d=>d.reduce((m,b)=>Math.max(m,a(b)),-1/0),h=[...i.values()].sort((d,m)=>{if(n==="name")return d[0].project.name.localeCompare(m[0].project.name)*r;const b=(c(d)-c(m))*r;return b!==0?b:d[0].project.name.localeCompare(m[0].project.name)}),p=[];for(const d of h)p.push(...[...d].sort(o));return p}const J=8;function ve(s){if(s.error!=null)return 0;const{ahead:n,behind:t}=s.branch;return n>0&&t>0?1:t>0||n>0?2:3}function Ts(s){const n=(s.name??"").trim();if(n){const a=n.split(/[\s_\-/]+/).filter(Boolean);if(a.length>=2)return(a[0][0]+a[1][0]).toUpperCase();if(a.length===1)return a[0].slice(0,2).toUpperCase()}return(X(s).replace(/^@/,"").replace(/[^a-z0-9]/gi,"").slice(0,2)||"··").toUpperCase()}function Ds({snapshot:s,selectedId:n,onSelect:t}){return e.jsxs("section",{className:"bd",children:[e.jsx("div",{className:"bd-head",children:"BRANCH DRIFT — distance from each worktree's base · behind ← origin → ahead · flags call out what needs a rebase"}),e.jsxs("div",{className:"bd-axis",children:[e.jsx("div",{}),e.jsxs("div",{className:"bd-axis-track",children:[e.jsx("span",{className:"bd-axis-lbl",style:{left:"0%"},children:"−8"}),e.jsx("span",{className:"bd-axis-lbl",style:{left:"25%"},children:"−4"}),e.jsx("span",{className:"bd-axis-lbl bd-origin-lbl",style:{left:"50%"},children:"origin"}),e.jsx("span",{className:"bd-axis-lbl",style:{left:"75%"},children:"+4"}),e.jsx("span",{className:"bd-axis-lbl",style:{left:"100%"},children:"+8"}),e.jsx("span",{className:"bd-axis-cap",children:"COMMITS ←"})]}),e.jsx("div",{}),e.jsx("div",{}),e.jsx("div",{})]}),s.projects.map(r=>e.jsx(Ls,{project:r,selectedId:n,onSelect:t},r.id))]})}function Ls({project:s,selectedId:n,onSelect:t}){const r=[...s.worktrees].sort((a,i)=>ve(a)-ve(i));return e.jsxs("div",{className:"bd-grp",children:[e.jsxs("div",{className:"bd-grp-h",children:[e.jsx("span",{className:"bd-grp-nm",children:s.name}),e.jsx("span",{className:"bd-grp-path",children:Ie(s.root,3)})]}),r.map(a=>e.jsx(Os,{wt:a,selected:n===a.id,onSelect:()=>t(a.id)},a.id))]})}function Os({wt:s,selected:n,onSelect:t}){const r=Ae(s),{ahead:a,behind:i}=s.branch,o=s.error!=null,c=Pe(s);return e.jsxs("div",{className:["bd-row",n?"sel":""].join(" "),role:"button",tabIndex:0,onClick:t,onKeyDown:h=>{(h.key==="Enter"||h.key===" ")&&(h.preventDefault(),t())},children:[e.jsxs("div",{className:"bd-id",children:[e.jsx("span",{className:"dot "+r}),e.jsx("span",{className:"bd-br",children:e.jsx(Me,{branch:s.branch,fallback:s.name})})]}),e.jsx(Fs,{ahead:a,behind:i,hasError:o}),e.jsx(Ws,{wt:s,hasError:o}),e.jsx(_s,{agents:c}),e.jsx(Bs,{ahead:a,behind:i,hasError:o})]})}function Fs({ahead:s,behind:n,hasError:t}){const r=s===0&&n===0;return e.jsxs("div",{className:"bd-track",children:[e.jsx("span",{className:"bd-tick",style:{left:"0%"}}),e.jsx("span",{className:"bd-tick",style:{left:"25%"}}),e.jsx("span",{className:"bd-tick bd-tick-origin",style:{left:"50%"}}),e.jsx("span",{className:"bd-tick",style:{left:"75%"}}),e.jsx("span",{className:"bd-tick",style:{left:"100%"}}),t||r?e.jsx("span",{className:"bd-origin-ring"}):e.jsxs(e.Fragment,{children:[n>0?e.jsxs("span",{className:"bd-bar bd-behind",style:{right:"50%",width:Math.min(n,J)/J*50+"%"},children:[e.jsx("span",{className:"bd-cap bd-cap-l"}),e.jsxs("span",{className:"bd-lbl bd-lbl-l",children:["↓",n]})]}):null,s>0?e.jsxs("span",{className:"bd-bar bd-ahead",style:{left:"50%",width:Math.min(s,J)/J*50+"%"},children:[e.jsx("span",{className:"bd-cap bd-cap-r"}),e.jsxs("span",{className:"bd-lbl bd-lbl-r",children:["↑",s]})]}):null]})]})}function Ws({wt:s,hasError:n}){const{add:t,del:r,has:a}=Ee(s);if(n||!a)return e.jsx("div",{className:"bd-churn",children:e.jsx("span",{className:"dash",children:"—"})});const i=t+r||1;return e.jsxs("div",{className:"bd-churn",children:[e.jsxs("span",{className:"bd-churn-nums",children:[e.jsxs("span",{className:"add",children:["+",w(t)]}),e.jsx("span",{className:"sl",children:"/"}),e.jsxs("span",{className:"del",children:["−",w(r)]})]}),e.jsxs("span",{className:"bd-cbar",title:`+${w(t)} −${w(r)}`,children:[e.jsx("span",{className:"g",style:{width:t/i*100+"%"}}),e.jsx("span",{className:"r",style:{width:r/i*100+"%"}})]})]})}const qs=2;function _s({agents:s}){if(s.length===0)return e.jsx("div",{className:"bd-agents",children:e.jsx("span",{className:"dash",children:"—"})});const n=s.slice(0,qs),t=s.length-n.length;return e.jsxs("div",{className:"bd-agents",title:s.map(r=>`${X(r)} (${r.state??"—"})`).join(`
|
|
5
5
|
`),children:[n.map(r=>e.jsx("span",{className:"bd-av"+(ie(r)?" live":""),children:Ts(r)},X(r))),t>0?e.jsxs("span",{className:"bd-av-more",children:["+",t]}):null]})}function Bs({ahead:s,behind:n,hasError:t}){return t?e.jsx("div",{className:"bd-flag err",children:"SCAN ERR"}):s>0&&n>0?e.jsx("div",{className:"bd-flag rebase",children:"DIVERGED ▸"}):n>0?e.jsx("div",{className:"bd-flag rebase",children:"REBASE ▸"}):s>0?e.jsxs("div",{className:"bd-flag ahead",children:["AHEAD ",s]}):e.jsx("div",{className:"bd-flag sync",children:"IN SYNC"})}const Hs=1e4,Us=15e3,Ks=45e3,Vs=45e3,zs="openscout.repos.tone",Ne=["warm","cool","mono"],Gs="openscout.repos.view",Se=["table","drift"],Xs=12;function Ys(s){return s.warnings.some(n=>/scan budget|stopped discovery|stopped scanning/i.test(n))}function Js(s,n){return s.totals.worktrees<n.totals.worktrees||s.totals.projects<n.totals.projects}function Qs(s){return s&&typeof s=="object"&&"name"in s&&s.name==="AbortError"?"Repo Watch scan timed out; keeping the last available snapshot.":s instanceof Error?s.message:String(s)}function ke(s,n,t){const[r,a]=u.useState(()=>{if(typeof window>"u")return t;try{const o=window.localStorage.getItem(s);return o&&n.includes(o)?o:t}catch{return t}}),i=u.useCallback(o=>{a(o);try{window.localStorage.setItem(s,o)}catch{}},[s]);return[r,i]}function ye(s){let n=null,t=-1/0;for(const r of s)for(const a of r.worktrees){const i=a.agents.filter(c=>(c.state??"").toLowerCase()==="active").length,o=(4-G(a.attention))*1e6+i*1e4+a.status.changedFiles;o>t&&(t=o,n=a)}return n}function Zs(s,n){if(!s||!n)return{worktree:null,project:null};for(const t of s.projects)for(const r of t.worktrees)if(r.id===n)return{worktree:r,project:t};return{worktree:null,project:null}}function re(s){if(!s)return 0;const n=/(\d+)\s+files?\s+changed/.exec(s);return n?Number(n[1]):0}function et(s){const n=new Set,t=[];for(const r of s.projects){const a=r.worktrees[0]?.path??r.root;!a||n.has(a)||(n.add(a),t.push(a))}return t}function st(s,n){if(!s)return"updated";const t=Date.parse(s);return Number.isFinite(t)?Ve(t,n):"updated"}function tt(s){const n=s?.pullRequests??[];if(n.length===0)return null;const t=n.slice(0,8).map(a=>`${a.repo}#${a.number}: ${a.title}`),r=n.length-t.length;return["Open pull requests from gh.",...t,r>0?`+${r} more`:null].filter(a=>!!a).join(`
|
|
6
|
-
`)}function Re(s,n){return n?s.path===n.root||n.worktrees.some(r=>r.path===s.path)?!0:s.repo.split("/").pop()?.toLowerCase()===n.name.toLowerCase():!1}function $e(s,n){const t=n?.branch.name?.trim();return!!(t&&s.headRefName===t)}function nt(s,n){if(!n)return null;const t=s.headRefName?.trim();if(!t)return null;const r=[];for(const a of n.projects)for(const i of a.worktrees)i.branch.name?.trim()===t&&r.push({id:i.id,path:i.path,branch:t});if(r.length===0)return null;if(s.path){const a=r.find(i=>i.path===s.path);if(a)return a}return r[0]??null}function rt(s,n){const t=[];for(const r of s.projects)for(const a of r.worktrees){const i=a.status.staged+a.status.unstaged+a.status.untracked+a.status.conflicts,o=a.agents.filter(m=>(m.state??"").toLowerCase()==="active").length,c=re(a.diff.branchShortstat),h=Math.max(a.status.changedFiles,re(a.diff.stagedShortstat)+re(a.diff.unstagedShortstat)),p=a.branch.ahead+a.branch.behind,d=o+a.sessions.length;i===0&&d===0&&c===0&&p===0||t.push({path:a.path,score:(a.id===n?1e7:0)+(4-G(a.attention))*1e5+o*1e4+a.sessions.length*5e3+p*1e3+c*250+i*100+h})}return t.sort((r,a)=>a.score-r.score).map(r=>r.path)}function z({children:s}){return e.jsx("div",{className:"s-ops",children:e.jsx("div",{className:"s-ops-body",style:{overflowY:"auto"},children:s})})}function at({error:s}){return e.jsxs("div",{className:"rw-empty-next",children:[e.jsx("p",{className:"rw-empty-copy",children:"Repos is waiting on the local Scout Services layer. Restart the broker from the menu bar app, then rescan."}),e.jsxs("ol",{className:"rw-empty-steps",children:[e.jsxs("li",{children:["Click ",e.jsx("span",{className:"rw-empty-action-name",children:"Restart broker"})," to hand off to the menu bar app."]}),e.jsx("li",{children:"Wait for Scout Services to report the broker online."}),e.jsxs("li",{children:["If nothing opens, run ",e.jsx("code",{children:"scout doctor"})," and follow the repair command it prints."]})]}),s?e.jsx("p",{className:"rw-empty-error",children:s}):null]})}function it({snapshot:s,loading:n,error:t,selectedProject:r,selectedWorktree:a,repoSnapshot:i,onSelectWorktree:o,onOpenDiff:c,navigate:h}){const{agents:p}=Qe(),d=We(),[m,b]=u.useState(null),[S,A]=u.useState(null),[P,f]=u.useState(!1),[x,C]=u.useState(null),I=u.useRef(null),R=u.useCallback(l=>{b(l),I.current!=null&&window.clearTimeout(I.current),l&&(I.current=window.setTimeout(()=>b(null),6e3))},[]);u.useEffect(()=>()=>{I.current!=null&&window.clearTimeout(I.current)},[]);const O=u.useCallback(()=>{P||(A(null),C(null))},[P]),j=u.useMemo(()=>(i?.projects??[]).map(l=>({root:l.root,name:l.name})),[i]),y=s?.pullRequests??[],N=a?.branch.name??null,$=y.filter(l=>Re(l,r)),T=$.filter(l=>$e(l,a)),D=$.filter(l=>!$e(l,a)),W=y.filter(l=>!Re(l,r)),F=[T.length>0?{key:"branch",label:N?`Selected branch · ${N}`:"Selected branch",items:T}:null,D.length>0?{key:"project",label:r?`${r.name} PRs`:"Selected project",items:D}:null,W.length>0?{key:"other",label:$.length>0?"Other open PRs":"Open PRs",items:W}:null].filter(l=>!!l);if(!n&&!t&&y.length===0)return null;const M=(l,v)=>{l.preventDefault(),d(l,us(v,{matchingWorktree:nt(v,i),onBeginAssign:L=>{C(null),A(L)},onSelectWorktreeId:o,onOpenDiff:c,onStatus:R}))};return e.jsxs("section",{className:"rw-open-prs","aria-label":"Open pull requests",children:[e.jsxs("div",{className:"rw-open-prs-head",children:[e.jsxs("div",{children:[e.jsx("div",{className:"rw-open-prs-eyebrow",children:"Open PRs"}),e.jsx("div",{className:"rw-open-prs-title",children:n&&y.length===0?"Checking GitHub":`${y.length} open`}),m?e.jsx("div",{className:"rw-open-prs-status",role:"status",children:m}):null]}),s?e.jsx("span",{className:"rw-open-prs-meta",children:"gh"}):null]}),y.length>0?e.jsx("div",{className:"rw-open-prs-list",children:F.map(l=>e.jsxs("div",{className:"rw-open-pr-group",children:[F.length>1?e.jsx("div",{className:"rw-open-pr-group-label",children:l.label}):null,l.items.map(v=>e.jsxs("button",{type:"button",className:"rw-open-pr",title:`${v.title} — click for actions`,onClick:L=>M(L,v),onContextMenu:L=>M(L,v),children:[e.jsxs("span",{className:"rw-open-pr-main",children:[e.jsxs("span",{className:"rw-open-pr-number",children:["#",v.number]}),e.jsx("span",{className:"rw-open-pr-title",title:v.title,children:v.title})]}),e.jsxs("span",{className:"rw-open-pr-detail",children:[e.jsx("span",{children:v.repo}),e.jsxs("span",{children:[v.headRefName||"head"," → ",v.baseRefName||"base"]}),v.isDraft?e.jsx("span",{children:"draft"}):e.jsx("span",{children:"open"}),v.author?e.jsxs("span",{children:["@",v.author]}):null,e.jsx("span",{children:st(v.updatedAt,s?.generatedAt??Date.now())})]})]},v.id))]},l.key))}):e.jsx("div",{className:"rw-open-prs-empty",children:t??"No open pull requests returned."}),S?e.jsx(ms,{pr:S,agents:p,projects:j,pending:P,error:x,onClose:O,onPendingChange:f,onError:C,onAssigned:l=>{A(null),C(null),R(l.message),(l.flightId||l.conversationId||l.targetAgentId)&&h({view:"follow",...l.flightId?{flightId:l.flightId}:{},...l.conversationId?{conversationId:l.conversationId}:{},...l.targetAgentId?{targetAgentId:l.targetAgentId}:{}})}}):null]})}function nn({navigate:s,focusRoot:n=null}){const[t,r]=u.useState(null),[a,i]=u.useState("loading"),[o,c]=u.useState(null),h=u.useRef(!1),p=u.useRef(0),d=u.useRef(null),m=u.useRef(!1),[b,S]=ke(zs,Ne,"warm"),[A,P]=ke(Gs,Se,"table"),[f,x]=u.useState(null),[C,I]=u.useState("standard"),[R,O]=u.useState(!1),[j,y]=u.useState(null),[N,$]=u.useState(!1),[T,D]=u.useState(!1),[W,F]=u.useState(null),[M,l]=u.useState(null),[v,L]=u.useState(!1),[De,Z]=u.useState(null),[B,K]=u.useState(null),q=u.useCallback(async(g={})=>{if(m.current&&!g.force)return;m.current=!0;const k=g.depth??C;g.scanMore&&$(!0),g.force&&!g.scanMore&&O(!0);try{let E=await he(k,g.force??!1,k==="expanded"?Ks:Us),_=k;if(!h.current&&k==="standard"&&!g.force&&E.projects.length===0)try{const ue=await he("expanded",!0,Vs);ue.projects.length>0&&(E=ue,_="expanded")}catch{}const de=d.current;if(de&&Ys(E)&&(E.projects.length===0||Js(E,de))){c("Scan budget was reached; keeping the last fuller Repo Watch snapshot."),i("ready");return}if(!g.force&&E.projects.length===0&&h.current&&p.current<3){p.current+=1,i("ready");return}p.current=0,h.current=!0,d.current=E,r(E),c(null),i("ready"),(g.scanMore||_!==k)&&I(_),g.force&&!g.scanMore&&y(`Fresh ${new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}`)}catch(E){const _=Qs(E);c(_),h.current||i("error")}finally{g.scanMore&&$(!1),g.force&&!g.scanMore&&O(!1),m.current=!1}},[C]);u.useEffect(()=>{d.current=t},[t]),u.useEffect(()=>{q();const g=setInterval(()=>{q()},Hs);return()=>clearInterval(g)},[q]);const le=u.useRef(null);u.useEffect(()=>{if(!t)return;if(n&&le.current!==n){const k=t.projects.find(E=>E.root===n||E.worktrees.some(_=>_.path===n));if(!k)return;if(le.current=n,!k.worktrees.some(E=>E.id===f)){x(ye([k])?.id??null);return}}t.projects.some(k=>k.worktrees.some(E=>E.id===f))||x(ye(t.projects)?.id??null)},[t,f,n]),u.useEffect(()=>{!t||t.projects.length===0||Je(rt(t,f),void 0,{limit:Xs})},[t,f]);const ee=u.useMemo(()=>t?et(t):[],[t]),Le=ee.join("\0");u.useEffect(()=>{if(ee.length===0){l(null),Z(null),L(!1);return}let g=!1;return L(!0),Z(null),qe(ee).then(k=>{g||l(k)}).catch(k=>{g||Z(k instanceof Error?k.message:String(k))}).finally(()=>{g||L(!1)}),()=>{g=!0}},[Le]);const H=u.useMemo(()=>Zs(t,f),[t,f]),Oe=u.useMemo(()=>tt(M),[M]);u.useEffect(()=>{ze({worktree:H.worktree,project:H.project,generatedAt:t?.generatedAt??0,tone:b})},[H.worktree,H.project,t?.generatedAt,b]),u.useEffect(()=>Ge,[]);const oe=u.useCallback(()=>{q({depth:"expanded",force:!0,scanMore:!0})},[q]),ce=u.useCallback(()=>{q({force:!0})},[q]),Fe=u.useCallback(async()=>{if(!T){D(!0),F(null);try{const g=await fetch("/api/scout-services/restart-link",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({target:"broker"})});if(!g.ok)throw new Error(`Scout Services link failed (${g.status})`);const k=await g.json();if(!k.url?.startsWith("scout://services/restart/"))throw new Error("Scout Services link was not returned.");window.location.assign(k.url)}catch(g){const k=g instanceof Error?g.message:String(g);F(`${k} Run scout doctor if the menu app did not open.`)}finally{D(!1)}}},[T]);return a==="loading"?e.jsx(z,{navigate:s,children:e.jsx("div",{className:"repo-watch-scope",style:{padding:"24px"},children:e.jsx(se,{title:"Scanning repositories…",body:"Reading worktree state from the broker."})})}):a==="error"&&!t?e.jsx(z,{navigate:s,children:e.jsx("div",{className:"repo-watch-scope",style:{padding:"24px"},children:e.jsx(se,{className:"sys-state-card-error",title:"Couldn’t load Repo Watch",body:o??"The broker did not return a snapshot.",action:e.jsx("button",{type:"button",className:"s-btn",onClick:()=>{i("loading"),q()},children:"Retry"})})})}):t&&t.projects.length===0?e.jsx(z,{navigate:s,children:e.jsx("div",{className:"repo-watch-scope",style:{padding:"24px"},children:e.jsx(se,{title:"Scout Services need attention",body:e.jsx(at,{error:W}),action:e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"s-btn s-btn-primary",onClick:()=>{Fe()},disabled:T,children:T?"Opening…":"Restart broker"}),e.jsx("button",{type:"button",className:"s-btn",onClick:ce,disabled:R||N,children:R?"Scanning…":"Scan again"}),e.jsx("button",{type:"button",className:"s-btn",onClick:oe,disabled:R||N,children:N?"Scanning…":"Scan more"})]})})})}):t?e.jsx(z,{navigate:s,children:e.jsxs("div",{className:"repo-watch-scope",children:[e.jsx("div",{className:"rw-scope tone-"+b,children:e.jsxs("div",{className:"rw-page-shell",children:[e.jsxs("div",{className:"rw-toolbar",children:[e.jsxs("button",{type:"button",className:"rw-refresh-main",onClick:ce,disabled:R||N,children:[e.jsx(Ze,{size:14,"aria-hidden":"true",className:R?"rw-refresh-spin":void 0}),e.jsx("span",{children:R?"Scanning":"Refresh"})]}),j?e.jsx("span",{className:"rw-refresh-receipt",children:j}):null,e.jsxs("details",{className:"rw-display-menu",children:[e.jsxs("summary",{"aria-label":"Display options",children:[e.jsx(es,{size:14,"aria-hidden":"true"}),e.jsx("span",{children:"Display"})]}),e.jsxs("div",{className:"rw-display-panel",children:[e.jsxs("div",{className:"rw-display-row",children:[e.jsx("span",{className:"rw-display-label",children:"View"}),e.jsx("div",{className:"rw-tone",role:"group","aria-label":"View",children:Se.map(g=>e.jsx("button",{type:"button",className:g===A?"on":"","aria-pressed":g===A,onClick:()=>P(g),children:g},g))})]}),e.jsxs("div",{className:"rw-display-row",children:[e.jsx("span",{className:"rw-display-label",children:"Tone"}),e.jsx("div",{className:"rw-tone",role:"group","aria-label":"Console tone",children:Ne.map(g=>e.jsx("button",{type:"button",className:g===b?"on":"","aria-pressed":g===b,onClick:()=>S(g),children:g},g))})]})]})]})]}),e.jsx("div",{className:"min-w-0",children:A==="drift"?e.jsx(Ds,{snapshot:t,selectedId:f,onSelect:x}):e.jsxs(e.Fragment,{children:[e.jsx(Ss,{snapshot:t,selectedId:f,onSelect:x,onViewDiff:K,scanDepth:C,scanMorePending:N,onScanMore:oe,openPullRequestCount:M?.pullRequests.length??null,openPullRequestTitle:Oe}),e.jsx(it,{snapshot:M,loading:v,error:De,selectedProject:H.project,selectedWorktree:H.worktree,repoSnapshot:t,onSelectWorktree:x,onOpenDiff:K,navigate:s})]})})]})}),e.jsx(Xe,{open:B!=null,onClose:()=>K(null),side:"right",owner:"openscout.repos-diff-viewer",resizable:!0,defaultSize:840,maxSize:1280,minSize:420,ariaLabel:"Worktree diff",children:B!=null?e.jsx(Ye,{path:B,onClose:()=>K(null),onOpenAsPage:()=>{B&&(s({view:"repo-diff",path:B}),K(null))}},B):null})]})}):e.jsx(z,{navigate:s})}export{nn as ReposScreen,nn as default};
|
|
6
|
+
`)}function Re(s,n){return n?s.path===n.root||n.worktrees.some(r=>r.path===s.path)?!0:s.repo.split("/").pop()?.toLowerCase()===n.name.toLowerCase():!1}function $e(s,n){const t=n?.branch.name?.trim();return!!(t&&s.headRefName===t)}function nt(s,n){if(!n)return null;const t=s.headRefName?.trim();if(!t)return null;const r=[];for(const a of n.projects)for(const i of a.worktrees)i.branch.name?.trim()===t&&r.push({id:i.id,path:i.path,branch:t});if(r.length===0)return null;if(s.path){const a=r.find(i=>i.path===s.path);if(a)return a}return r[0]??null}function rt(s,n){const t=[];for(const r of s.projects)for(const a of r.worktrees){const i=a.status.staged+a.status.unstaged+a.status.untracked+a.status.conflicts,o=a.agents.filter(m=>(m.state??"").toLowerCase()==="active").length,c=re(a.diff.branchShortstat),h=Math.max(a.status.changedFiles,re(a.diff.stagedShortstat)+re(a.diff.unstagedShortstat)),p=a.branch.ahead+a.branch.behind,d=o+a.sessions.length;i===0&&d===0&&c===0&&p===0||t.push({path:a.path,score:(a.id===n?1e7:0)+(4-G(a.attention))*1e5+o*1e4+a.sessions.length*5e3+p*1e3+c*250+i*100+h})}return t.sort((r,a)=>a.score-r.score).map(r=>r.path)}function z({children:s}){return e.jsx("div",{className:"s-ops",children:e.jsx("div",{className:"s-ops-body",style:{overflowY:"auto"},children:s})})}function at({error:s}){return e.jsxs("div",{className:"rw-empty-next",children:[e.jsx("p",{className:"rw-empty-copy",children:"Repos is waiting on the local Scout Services layer. Restart the broker from the menu bar app, then rescan."}),e.jsxs("ol",{className:"rw-empty-steps",children:[e.jsxs("li",{children:["Click ",e.jsx("span",{className:"rw-empty-action-name",children:"Restart broker"})," to hand off to the menu bar app."]}),e.jsx("li",{children:"Wait for Scout Services to report the broker online."}),e.jsxs("li",{children:["If nothing opens, run ",e.jsx("code",{children:"scout doctor"})," and follow the repair command it prints."]})]}),s?e.jsx("p",{className:"rw-empty-error",children:s}):null]})}function it({snapshot:s,loading:n,error:t,selectedProject:r,selectedWorktree:a,repoSnapshot:i,onSelectWorktree:o,onOpenDiff:c,navigate:h}){const{agents:p}=Qe(),d=We(),[m,b]=u.useState(null),[S,A]=u.useState(null),[P,f]=u.useState(!1),[x,C]=u.useState(null),I=u.useRef(null),R=u.useCallback(l=>{b(l),I.current!=null&&window.clearTimeout(I.current),l&&(I.current=window.setTimeout(()=>b(null),6e3))},[]);u.useEffect(()=>()=>{I.current!=null&&window.clearTimeout(I.current)},[]);const O=u.useCallback(()=>{P||(A(null),C(null))},[P]),j=u.useMemo(()=>(i?.projects??[]).map(l=>({root:l.root,name:l.name})),[i]),y=s?.pullRequests??[],N=a?.branch.name??null,$=y.filter(l=>Re(l,r)),T=$.filter(l=>$e(l,a)),D=$.filter(l=>!$e(l,a)),W=y.filter(l=>!Re(l,r)),F=[T.length>0?{key:"branch",label:N?`Selected branch · ${N}`:"Selected branch",items:T}:null,D.length>0?{key:"project",label:r?`${r.name} PRs`:"Selected project",items:D}:null,W.length>0?{key:"other",label:$.length>0?"Other open PRs":"Open PRs",items:W}:null].filter(l=>!!l);if(!n&&!t&&y.length===0)return null;const M=(l,v)=>{l.preventDefault(),d(l,us(v,{matchingWorktree:nt(v,i),onBeginAssign:L=>{C(null),A(L)},onSelectWorktreeId:o,onOpenDiff:c,onStatus:R}))};return e.jsxs("section",{className:"rw-open-prs","aria-label":"Open pull requests",children:[e.jsxs("div",{className:"rw-open-prs-head",children:[e.jsxs("div",{children:[e.jsx("div",{className:"rw-open-prs-eyebrow",children:"Open PRs"}),e.jsx("div",{className:"rw-open-prs-title",children:n&&y.length===0?"Checking GitHub":`${y.length} open`}),m?e.jsx("div",{className:"rw-open-prs-status",role:"status",children:m}):null]}),s?e.jsx("span",{className:"rw-open-prs-meta",children:"gh"}):null]}),y.length>0?e.jsx("div",{className:"rw-open-prs-list",children:F.map(l=>e.jsxs("div",{className:"rw-open-pr-group",children:[F.length>1?e.jsx("div",{className:"rw-open-pr-group-label",children:l.label}):null,l.items.map(v=>e.jsxs("button",{type:"button",className:"rw-open-pr",title:`${v.title} — click for actions`,onClick:L=>M(L,v),onContextMenu:L=>M(L,v),children:[e.jsxs("span",{className:"rw-open-pr-main",children:[e.jsxs("span",{className:"rw-open-pr-number",children:["#",v.number]}),e.jsx("span",{className:"rw-open-pr-title",title:v.title,children:v.title})]}),e.jsxs("span",{className:"rw-open-pr-detail",children:[e.jsx("span",{children:v.repo}),e.jsxs("span",{children:[v.headRefName||"head"," → ",v.baseRefName||"base"]}),v.isDraft?e.jsx("span",{children:"draft"}):e.jsx("span",{children:"open"}),v.author?e.jsxs("span",{children:["@",v.author]}):null,e.jsx("span",{children:st(v.updatedAt,s?.generatedAt??Date.now())})]})]},v.id))]},l.key))}):e.jsx("div",{className:"rw-open-prs-empty",children:t??"No open pull requests returned."}),S?e.jsx(ms,{pr:S,agents:p,projects:j,pending:P,error:x,onClose:O,onPendingChange:f,onError:C,onAssigned:l=>{A(null),C(null),R(l.message),(l.flightId||l.conversationId||l.targetAgentId)&&h({view:"follow",...l.flightId?{flightId:l.flightId}:{},...l.conversationId?{conversationId:l.conversationId}:{},...l.targetAgentId?{targetAgentId:l.targetAgentId}:{}})}}):null]})}function rn({navigate:s,focusRoot:n=null}){const[t,r]=u.useState(null),[a,i]=u.useState("loading"),[o,c]=u.useState(null),h=u.useRef(!1),p=u.useRef(0),d=u.useRef(null),m=u.useRef(!1),[b,S]=ke(zs,Ne,"warm"),[A,P]=ke(Gs,Se,"table"),[f,x]=u.useState(null),[C,I]=u.useState("standard"),[R,O]=u.useState(!1),[j,y]=u.useState(null),[N,$]=u.useState(!1),[T,D]=u.useState(!1),[W,F]=u.useState(null),[M,l]=u.useState(null),[v,L]=u.useState(!1),[De,Z]=u.useState(null),[B,K]=u.useState(null),q=u.useCallback(async(g={})=>{if(m.current&&!g.force)return;m.current=!0;const k=g.depth??C;g.scanMore&&$(!0),g.force&&!g.scanMore&&O(!0);try{let E=await he(k,g.force??!1,k==="expanded"?Ks:Us),_=k;if(!h.current&&k==="standard"&&!g.force&&E.projects.length===0)try{const ue=await he("expanded",!0,Vs);ue.projects.length>0&&(E=ue,_="expanded")}catch{}const de=d.current;if(de&&Ys(E)&&(E.projects.length===0||Js(E,de))){c("Scan budget was reached; keeping the last fuller Repo Watch snapshot."),i("ready");return}if(!g.force&&E.projects.length===0&&h.current&&p.current<3){p.current+=1,i("ready");return}p.current=0,h.current=!0,d.current=E,r(E),c(null),i("ready"),(g.scanMore||_!==k)&&I(_),g.force&&!g.scanMore&&y(`Fresh ${new Date().toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}`)}catch(E){const _=Qs(E);c(_),h.current||i("error")}finally{g.scanMore&&$(!1),g.force&&!g.scanMore&&O(!1),m.current=!1}},[C]);u.useEffect(()=>{d.current=t},[t]),u.useEffect(()=>{q();const g=setInterval(()=>{q()},Hs);return()=>clearInterval(g)},[q]);const le=u.useRef(null);u.useEffect(()=>{if(!t)return;if(n&&le.current!==n){const k=t.projects.find(E=>E.root===n||E.worktrees.some(_=>_.path===n));if(!k)return;if(le.current=n,!k.worktrees.some(E=>E.id===f)){x(ye([k])?.id??null);return}}t.projects.some(k=>k.worktrees.some(E=>E.id===f))||x(ye(t.projects)?.id??null)},[t,f,n]),u.useEffect(()=>{!t||t.projects.length===0||Je(rt(t,f),void 0,{limit:Xs})},[t,f]);const ee=u.useMemo(()=>t?et(t):[],[t]),Le=ee.join("\0");u.useEffect(()=>{if(ee.length===0){l(null),Z(null),L(!1);return}let g=!1;return L(!0),Z(null),qe(ee).then(k=>{g||l(k)}).catch(k=>{g||Z(k instanceof Error?k.message:String(k))}).finally(()=>{g||L(!1)}),()=>{g=!0}},[Le]);const H=u.useMemo(()=>Zs(t,f),[t,f]),Oe=u.useMemo(()=>tt(M),[M]);u.useEffect(()=>{ze({worktree:H.worktree,project:H.project,generatedAt:t?.generatedAt??0,tone:b})},[H.worktree,H.project,t?.generatedAt,b]),u.useEffect(()=>Ge,[]);const oe=u.useCallback(()=>{q({depth:"expanded",force:!0,scanMore:!0})},[q]),ce=u.useCallback(()=>{q({force:!0})},[q]),Fe=u.useCallback(async()=>{if(!T){D(!0),F(null);try{const g=await fetch("/api/scout-services/restart-link",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({target:"broker"})});if(!g.ok)throw new Error(`Scout Services link failed (${g.status})`);const k=await g.json();if(!k.url?.startsWith("scout://services/restart/"))throw new Error("Scout Services link was not returned.");window.location.assign(k.url)}catch(g){const k=g instanceof Error?g.message:String(g);F(`${k} Run scout doctor if the menu app did not open.`)}finally{D(!1)}}},[T]);return a==="loading"?e.jsx(z,{navigate:s,children:e.jsx("div",{className:"repo-watch-scope",style:{padding:"24px"},children:e.jsx(se,{title:"Scanning repositories…",body:"Reading worktree state from the broker."})})}):a==="error"&&!t?e.jsx(z,{navigate:s,children:e.jsx("div",{className:"repo-watch-scope",style:{padding:"24px"},children:e.jsx(se,{className:"sys-state-card-error",title:"Couldn’t load Repo Watch",body:o??"The broker did not return a snapshot.",action:e.jsx("button",{type:"button",className:"s-btn",onClick:()=>{i("loading"),q()},children:"Retry"})})})}):t&&t.projects.length===0?e.jsx(z,{navigate:s,children:e.jsx("div",{className:"repo-watch-scope",style:{padding:"24px"},children:e.jsx(se,{title:"Scout Services need attention",body:e.jsx(at,{error:W}),action:e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"s-btn s-btn-primary",onClick:()=>{Fe()},disabled:T,children:T?"Opening…":"Restart broker"}),e.jsx("button",{type:"button",className:"s-btn",onClick:ce,disabled:R||N,children:R?"Scanning…":"Scan again"}),e.jsx("button",{type:"button",className:"s-btn",onClick:oe,disabled:R||N,children:N?"Scanning…":"Scan more"})]})})})}):t?e.jsx(z,{navigate:s,children:e.jsxs("div",{className:"repo-watch-scope",children:[e.jsx("div",{className:"rw-scope tone-"+b,children:e.jsxs("div",{className:"rw-page-shell",children:[e.jsxs("div",{className:"rw-toolbar",children:[e.jsxs("button",{type:"button",className:"rw-refresh-main",onClick:ce,disabled:R||N,children:[e.jsx(Ze,{size:14,"aria-hidden":"true",className:R?"rw-refresh-spin":void 0}),e.jsx("span",{children:R?"Scanning":"Refresh"})]}),j?e.jsx("span",{className:"rw-refresh-receipt",children:j}):null,e.jsxs("details",{className:"rw-display-menu",children:[e.jsxs("summary",{"aria-label":"Display options",children:[e.jsx(es,{size:14,"aria-hidden":"true"}),e.jsx("span",{children:"Display"})]}),e.jsxs("div",{className:"rw-display-panel",children:[e.jsxs("div",{className:"rw-display-row",children:[e.jsx("span",{className:"rw-display-label",children:"View"}),e.jsx("div",{className:"rw-tone",role:"group","aria-label":"View",children:Se.map(g=>e.jsx("button",{type:"button",className:g===A?"on":"","aria-pressed":g===A,onClick:()=>P(g),children:g},g))})]}),e.jsxs("div",{className:"rw-display-row",children:[e.jsx("span",{className:"rw-display-label",children:"Tone"}),e.jsx("div",{className:"rw-tone",role:"group","aria-label":"Console tone",children:Ne.map(g=>e.jsx("button",{type:"button",className:g===b?"on":"","aria-pressed":g===b,onClick:()=>S(g),children:g},g))})]})]})]})]}),e.jsx("div",{className:"min-w-0",children:A==="drift"?e.jsx(Ds,{snapshot:t,selectedId:f,onSelect:x}):e.jsxs(e.Fragment,{children:[e.jsx(Ss,{snapshot:t,selectedId:f,onSelect:x,onViewDiff:K,scanDepth:C,scanMorePending:N,onScanMore:oe,openPullRequestCount:M?.pullRequests.length??null,openPullRequestTitle:Oe}),e.jsx(it,{snapshot:M,loading:v,error:De,selectedProject:H.project,selectedWorktree:H.worktree,repoSnapshot:t,onSelectWorktree:x,onOpenDiff:K,navigate:s})]})})]})}),e.jsx(Xe,{open:B!=null,onClose:()=>K(null),side:"right",owner:"openscout.repos-diff-viewer",resizable:!0,defaultSize:840,maxSize:1280,minSize:420,ariaLabel:"Worktree diff",children:B!=null?e.jsx(Ye,{path:B,onClose:()=>K(null),onOpenAsPage:()=>{B&&(s({view:"repo-diff",path:B}),K(null))}},B):null})]})}):e.jsx(z,{navigate:s})}export{rn as ReposScreen,rn as default};
|