@openscout/scout 0.2.76 → 0.2.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -2
- package/bin/openscout-runtime.mjs +48 -30
- package/bin/scout.mjs +2 -2
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/client/assets/ActivityScreen-Cu_1V4bq.js +1 -0
- package/dist/client/assets/AddProjectForm-DMnobKch.js +1 -0
- package/dist/client/assets/AgentAvatar-D90c1Rzk.js +1 -0
- package/dist/client/assets/AgentConfigurationScreen-BqfOz90D.js +1 -0
- package/dist/client/assets/AgentDefinitionsWorkspace-CUpUrY57.js +1 -0
- package/dist/client/assets/AgentDetailCard-BcRBRp88.js +1 -0
- package/dist/client/assets/AgentDetailCard-C4WVeJvJ.css +1 -0
- package/dist/client/assets/AgentFloorView-8LoAEBwS.js +1 -0
- package/dist/client/assets/AgentInfoScreen-DZs2_ibL.js +1 -0
- package/dist/client/assets/AgentLaneCard-RrNnDZu8.js +1 -0
- package/dist/client/assets/AgentLaneChrome-D9ZwUKrl.js +1 -0
- package/dist/client/assets/AgentLaneDetailSheet-BXbPls9N.js +5 -0
- package/dist/client/assets/AgentLaneSummaryResize-BhFmGNzT.js +1 -0
- package/dist/client/assets/AgentLanesEmbedScreen-W3qs022h.js +1 -0
- package/dist/client/assets/AgentLanesPreflight-eSAoDsPi.js +1 -0
- package/dist/client/assets/AgentLanesView-B9vuEEmZ.js +2 -0
- package/dist/client/assets/AgentLiveActions-CGS-Bxb7.css +1 -0
- package/dist/client/assets/AgentLiveActions-DBtnD0qE.js +1 -0
- package/dist/client/assets/AgentSessions-DyqOf4nG.js +6 -0
- package/dist/client/assets/AgentsConsole-BgiYP2wR.js +1 -0
- package/dist/client/assets/AgentsConsole-BjSTs-TV.css +1 -0
- package/dist/client/assets/AgentsScreen-DBi8x4MB.js +1 -0
- package/dist/client/assets/AgentsSubnav-DIEO4NPx.js +1 -0
- package/dist/client/assets/AtopView-BCkae3e1.js +1 -0
- package/dist/client/assets/BackToPicker-BRvfostO.js +1 -0
- package/dist/client/assets/BackToPicker-CdgVu-to.css +1 -0
- package/dist/client/assets/BriefingDetailScreen-BwFyysT8.js +6 -0
- package/dist/client/assets/BriefingsScreen-BQEevztH.js +1 -0
- package/dist/client/assets/BrokerMetadataPanel-7UjcuNjd.js +1 -0
- package/dist/client/assets/BrokerScreen-7ekklu88.js +5 -0
- package/dist/client/assets/ChatCollapsedStrip-CQSYSd8s.js +1 -0
- package/dist/client/assets/CodeDiffPane-DDPt6KPh.js +1 -0
- package/dist/client/assets/CodeProjectPicker-DqKFCpLU.js +2 -0
- package/dist/client/assets/CodeScreen-BxCrpRHd.js +1 -0
- package/dist/client/assets/ContextMenu-bARZqTzD.js +1 -0
- package/dist/client/assets/ConversationComposer-Bla3DDvM.js +1 -0
- package/dist/client/assets/ConversationFeedRows-B_gPxcqA.js +1 -0
- package/dist/client/assets/ConversationHeader-DE3FC0m-.js +1 -0
- package/dist/client/assets/ConversationPanels-DLek4H6A.js +2 -0
- package/dist/client/assets/ConversationScreen-BDRhx-RU.js +1 -0
- package/dist/client/assets/ConversationScreen-C9yMAMYF.css +1 -0
- package/dist/client/assets/ConversationStatus-BwVLiiO4.js +1 -0
- package/dist/client/assets/DataTable-E8s_MmoA.js +1 -0
- package/dist/client/assets/DispatchAftermath-Dpe88DFX.js +1 -0
- package/dist/client/assets/DocumentFocusViewer-BeVwwl26.js +1 -0
- package/dist/client/assets/EmbeddableSurfacesLab-BQqFQVnI.js +1 -0
- package/dist/client/assets/EmptyState-4F9XDFQm.js +1 -0
- package/dist/client/assets/FileViewerPane-CLgUhSm4.js +3 -0
- package/dist/client/assets/FleetSearch-Dz5euQJe.js +1 -0
- package/dist/client/assets/FleetSearch-EXOe8ulE.css +1 -0
- package/dist/client/assets/FlightObserveScreen-6RpZYwVz.js +1 -0
- package/dist/client/assets/FollowScreen-DZ4qfYOY.js +1 -0
- package/dist/client/assets/HarnessMark-Cbv3Ib0c.js +1 -0
- package/dist/client/assets/HarnessesScreen-CznAImej.js +1 -0
- package/dist/client/assets/HomeHero-B3uYd-pP.js +1 -0
- package/dist/client/assets/HomeHero-DEl-WBsT.css +1 -0
- package/dist/client/assets/KnowledgeSearchInspector-Dgdkfvvz.js +1 -0
- package/dist/client/assets/KnowledgeSearchScreen-DJDGGaqC.js +1 -0
- package/dist/client/assets/LaneToolHoverCard-Bla0gBdm.js +1 -0
- package/dist/client/assets/LaneTraceDetailSheet-D1CspRbl.js +1 -0
- package/dist/client/assets/LaneTraceEventFocus-BF9ERP5O.js +1 -0
- package/dist/client/assets/MeshCanvas-DFEPkpqY.js +3 -0
- package/dist/client/assets/MeshCanvasMinimap-CyVFYixr.js +1 -0
- package/dist/client/assets/MeshCanvasMinimap-Dv7nMbl5.css +1 -0
- package/dist/client/assets/MeshScreen-DFgevn8N.js +1 -0
- package/dist/client/assets/MeshTopologyView-CalkZghg.js +2 -0
- package/dist/client/assets/MessageComposerSuggestions-DpxN9WiB.js +1 -0
- package/dist/client/assets/MessagesScreen-C8YKW10Y.js +1 -0
- package/dist/client/assets/MissionControlView-lUeAiSVg.js +1 -0
- package/dist/client/assets/MissionFocusOverlay-wlCmWDCT.js +1 -0
- package/dist/client/assets/MissionLeftAgentRow-BpZWntfl.js +1 -0
- package/dist/client/assets/MissionLogPane-__MVtEl9.js +1 -0
- package/dist/client/assets/NewAgentModal-Bg-eWHpY.js +1 -0
- package/dist/client/assets/NewAgentModal-ru8u5YdJ.css +1 -0
- package/dist/client/assets/NewChatComposer-Cs6OsxK6.js +19 -0
- package/dist/client/assets/NewChatComposer-W-t-L4oV.css +1 -0
- package/dist/client/assets/NewChatOrigin-Bk2OyVjI.js +1 -0
- package/dist/client/assets/ObserveEmbedScreen-y2EpuqRZ.js +2 -0
- package/dist/client/assets/ObserveTextFlow-rsFj_rVo.js +2 -0
- package/dist/client/assets/ObservedTopologyPanel-BsBsvVPL.css +1 -0
- package/dist/client/assets/ObservedTopologyPanel-DyUeV98H.js +2 -0
- package/dist/client/assets/OpenScoutAppShell-Bh6FnEJO.css +1 -0
- package/dist/client/assets/OpenScoutAppShell-C_URc8sV.js +87 -0
- package/dist/client/assets/OpsAgentsView-UN7iOscs.js +1 -0
- package/dist/client/assets/OpsScreen-Buf3LKjb.js +1 -0
- package/dist/client/assets/OpsSubnav-DsuXzHah.js +1 -0
- package/dist/client/assets/PlanView-C1CjH3PG.js +1 -0
- package/dist/client/assets/ProjectAgentProfile-DJusrAV-.js +1 -0
- package/dist/client/assets/ProjectAgentProfileBar-CtTpj6fU.js +1 -0
- package/dist/client/assets/ProjectAgentProfileHero-BFwNJo_N.js +1 -0
- package/dist/client/assets/ProjectsInbox-GhVMxOhw.js +2 -0
- package/dist/client/assets/ProjectsRail-BgiuV4LR.js +1 -0
- package/dist/client/assets/ProjectsScreen-eNUBy4YU.js +1 -0
- package/dist/client/assets/ProjectsThreadAside-CoBgnHmr.js +1 -0
- package/dist/client/assets/Provider-C7UKGHQy.js +1 -0
- package/dist/client/assets/Provider-CCzjtkda.css +1 -0
- package/dist/client/assets/RailRow-BoGxAHNF.js +1 -0
- package/dist/client/assets/RailRow-Cf9LOiEj.css +1 -0
- package/dist/client/assets/RawSessionsTable-DL8y_eEy.js +1 -0
- package/dist/client/assets/RealtimeVoiceScreen-ffS-39zy.js +1 -0
- package/dist/client/assets/RepoDiffEmbedScreen-C0rumUME.js +1 -0
- package/dist/client/assets/RepoDiffPageScreen-DMv6DioL.js +1 -0
- package/dist/client/assets/RepoDiffViewer-D_exm6xK.js +7 -0
- package/dist/client/assets/RepoDiffViewerLazy-BPgF92Bg.js +2 -0
- package/dist/client/assets/ReposScreen-CB_YBWYf.js +6 -0
- package/dist/client/assets/ScoutDeckSurface-CxIYFyWx.js +1 -0
- package/dist/client/assets/ScoutDeckSurface-uhmuZRzC.css +1 -0
- package/dist/client/assets/ScoutSurface-CYz_TcWC.js +1 -0
- package/dist/client/assets/ScoutbotBroadcastChip-CxtYZWPZ.css +1 -0
- package/dist/client/assets/ScoutbotBroadcastChip-L_R9atj0.js +2 -0
- package/dist/client/assets/ScoutbotFxLab-CgiZMDMW.js +4 -0
- package/dist/client/assets/ScoutbotRealtimeVoiceCall-FMQOr1Np.js +1 -0
- package/dist/client/assets/SecondaryNav-B3-nh5dM.js +1 -0
- package/dist/client/assets/SessionEmbedScreen-BVC7yvWF.js +1 -0
- package/dist/client/assets/SessionObserve-BpggNO_M.css +1 -0
- package/dist/client/assets/SessionObserve-yfXFafp8.js +12 -0
- package/dist/client/assets/SessionRefScreen-DRgJu7Jo.js +1 -0
- package/dist/client/assets/SessionsScreen-D6XUsZfA.js +1 -0
- package/dist/client/assets/SettingsDrawer-CmJt72ww.css +1 -0
- package/dist/client/assets/SettingsDrawer-XfdAa_nD.js +3 -0
- package/dist/client/assets/SettingsScreen-Cy8z-EuR.js +1 -0
- package/dist/client/assets/ShikiPane-Ap1iPxYb.js +15 -0
- package/dist/client/assets/SlidePanel-Bg5dVaIa.css +1 -0
- package/dist/client/assets/SlidePanel-COwtoJqR.js +1 -0
- package/dist/client/assets/SpriteAvatar-DyaGuhik.js +1 -0
- package/dist/client/assets/StatusPill-DhBL__p8.js +1 -0
- package/dist/client/assets/TailView-DGj_5HA9.js +2 -0
- package/dist/client/assets/TailView-Mj3AU2u0.css +1 -0
- package/dist/client/assets/Terminal-CqvGbjXU.js +1 -0
- package/dist/client/assets/TerminalEmbedScreen-DuZZFFzW.js +1 -0
- package/dist/client/assets/TextDocumentSurface-BpAw4eQS.js +4 -0
- package/dist/client/assets/TmuxPeek-m1osv33Q.js +1 -0
- package/dist/client/assets/VoicePermissionsPanel-DsK53ar4.js +1 -0
- package/dist/client/assets/VoicePermissionsPanel-RijAZ1gP.css +1 -0
- package/dist/client/assets/WorkDetailScreen-Bx0JimPC.js +5 -0
- package/dist/client/assets/WorkFilesViewer-Btl6C2Q1.js +1 -0
- package/dist/client/assets/activity-CA8qS6PI.js +1 -0
- package/dist/client/assets/{addon-fit-BOSszMLK.js → addon-fit-BZ-kXjeN.js} +1 -1
- package/dist/client/assets/{addon-webgl-WE840gr0.js → addon-webgl-D9-EQVEK.js} +1 -1
- package/dist/client/assets/agent-chat-Bfjd9y6c.js +1 -0
- package/dist/client/assets/agent-definitions-CymTYqvo.css +1 -0
- package/dist/client/assets/agent-directory-studio-injection-Bc8590z5.css +1 -0
- package/dist/client/assets/agent-essentials-BSY1o46q.js +1 -0
- package/dist/client/assets/agent-floor-CuJr1iK1.css +1 -0
- package/dist/client/assets/agent-lane-card-Dm7YWoew.css +1 -0
- package/dist/client/assets/agent-lane-card-model-r2frk57c.js +1 -0
- package/dist/client/assets/agent-lane-detail-Djm3YJEa.js +1 -0
- package/dist/client/assets/agent-lane-preview-CmHVe3dU.js +4 -0
- package/dist/client/assets/agent-lanes-BDNktFBZ.css +1 -0
- package/dist/client/assets/agent-lanes-model-B4YTt4OF.js +2 -0
- package/dist/client/assets/agents-detail-redesign-h34ROjOW.css +1 -0
- package/dist/client/assets/agents-project-COzHxZAF.css +1 -0
- package/dist/client/assets/agents-project-model-UYiamtrU.js +1 -0
- package/dist/client/assets/agents-screen-BMu6PpRY.css +1 -0
- package/dist/client/assets/api-BkjHJfgJ.js +1 -0
- package/dist/client/assets/api-h5zurxmi.js +1 -0
- package/dist/client/assets/{arc.es-KGqGKGIy.js → arc.es-CQBb-dVu.js} +1 -1
- package/dist/client/assets/arrow-down-BPLe0am9.js +1 -0
- package/dist/client/assets/arrow-left-DEZzHiPS.js +1 -0
- package/dist/client/assets/arrow-up-right-ClxBnsi7.js +1 -0
- package/dist/client/assets/bash-format-BRV5C6Gv.js +1 -0
- package/dist/client/assets/bot-eu8pBNvI.js +1 -0
- package/dist/client/assets/briefings-BwuAFQK6.css +1 -0
- package/dist/client/assets/broker-display-pp33bLsu.js +2 -0
- package/dist/client/assets/cache-Dr0why2k.js +2 -0
- package/dist/client/assets/check-DjgFiBxb.js +1 -0
- package/dist/client/assets/chevron-down-BGk5qoEw.js +1 -0
- package/dist/client/assets/chevron-right-XiIHsk4m.js +1 -0
- package/dist/client/assets/chunk-T65CQEWV-CrzwSeEt.js +1 -0
- package/dist/client/assets/chunk-YOZR3KYS-Bet8khjg.js +47 -0
- package/dist/client/assets/clipboard-e3fSpeo7.js +1 -0
- package/dist/client/assets/code-screen-DrKinCyh.css +1 -0
- package/dist/client/assets/code-xml-B6jOCM4V.js +1 -0
- package/dist/client/assets/collapsed-strip-Dz-of2SM.css +1 -0
- package/dist/client/assets/colors-BtO5_zlx.js +1 -0
- package/dist/client/assets/console-B1IBqLI_.css +1 -0
- package/dist/client/assets/content-BDt9VBPk.js +1 -0
- package/dist/client/assets/content-BIXf4cKR.js +1 -0
- package/dist/client/assets/content-BLm0NBJM.js +1 -0
- package/dist/client/assets/content-C2EwTb2y.js +1 -0
- package/dist/client/assets/content-C5UbLsDF.js +1 -0
- package/dist/client/assets/content-CHU0wwA3.css +1 -0
- package/dist/client/assets/content-CR3vdrYY.js +1 -0
- package/dist/client/assets/content-CSPVmo2s.js +1 -0
- package/dist/client/assets/content-C_FGqx1X.js +1 -0
- package/dist/client/assets/content-CvlVUOG8.js +1 -0
- package/dist/client/assets/content-D5kJmfgl.js +1 -0
- package/dist/client/assets/content-DTpQsomG.js +1 -0
- package/dist/client/assets/content-DikVsqLf.js +1 -0
- package/dist/client/assets/content-DlUe5Ono.js +1 -0
- package/dist/client/assets/content-GIBv_55n.js +1 -0
- package/dist/client/assets/content-Q2oclDzi.js +1 -0
- package/dist/client/assets/context-budget-CbB4BDcO.js +1 -0
- package/dist/client/assets/conversation-icons-IIG5ha6D.js +1 -0
- package/dist/client/assets/conversation-model-B47vYmWN.js +1 -0
- package/dist/client/assets/conversation-motion-features-BdAONVls.js +1 -0
- package/dist/client/assets/conversation-prefs-DNre-Lcx.js +1 -0
- package/dist/client/assets/copy-CQGYbxdu.js +1 -0
- package/dist/client/assets/createLucideIcon-OpA4Amw5.js +1 -0
- package/dist/client/assets/ctx-panel-B4s49N9e.css +1 -0
- package/dist/client/assets/discover-C1YwpBDE.js +2 -0
- package/dist/client/assets/document-focus-viewer-BSC_JwVE.css +1 -0
- package/dist/client/assets/embed-entry-BAcGL3g9.js +2 -0
- package/dist/client/assets/external-link-CXBytO9o.js +1 -0
- package/dist/client/assets/eye-0PvebX_a.js +1 -0
- package/dist/client/assets/file-text-BODxCjcz.js +1 -0
- package/dist/client/assets/flight-observe-GFg9L8ft.css +1 -0
- package/dist/client/assets/follow-route-BvcGtBIL.js +1 -0
- package/dist/client/assets/fx-z37u1o2z.js +1 -0
- package/dist/client/assets/gestures-CcwOTu8C.js +1 -0
- package/dist/client/assets/harnesses-screen-DBZoTZz8.css +1 -0
- package/dist/client/assets/home-live-action-B22u89j7.js +1 -0
- package/dist/client/assets/home-moving-signal-CAa0V91u.css +1 -0
- package/dist/client/assets/home-moving-signal-CK147hxn.js +1 -0
- package/dist/client/assets/home-now-card-BgvNWuea.js +1 -0
- package/dist/client/assets/home-now-card-nano-BcjnOU9H.js +1 -0
- package/dist/client/assets/hooks-B6y_O2FB.js +2 -0
- package/dist/client/assets/hooks-D6NI15f6.css +1 -0
- package/dist/client/assets/inbox-thread-redesign-Bz4FjWzr.css +1 -0
- package/dist/client/assets/index-BWHgHrtv.js +1 -0
- package/dist/client/assets/index-BcuhqXLe.js +1 -0
- package/dist/client/assets/index-CJXzfjo9.js +1 -0
- package/dist/client/assets/index-CvF09yvf.css +1 -0
- package/dist/client/assets/index-DMiGbrBt.js +10 -0
- package/dist/client/assets/index-DQPvraRS.js +1 -0
- package/dist/client/assets/index-DxGoC5l5.css +1 -0
- package/dist/client/assets/inspector-panel-DPoCWxKs.js +2 -0
- package/dist/client/assets/keyboard-nav-2kv_tGUS.js +1 -0
- package/dist/client/assets/knowledge-search-CVxQwxPn.js +1 -0
- package/dist/client/assets/knowledge-search-DjrQdiiW.css +1 -0
- package/dist/client/assets/lane-ask-display-B6iCAVcd.js +18 -0
- package/dist/client/assets/lane-edit-display-C_Aujldz.js +9 -0
- package/dist/client/assets/lane-observe-D0rfKDnU.js +7 -0
- package/dist/client/assets/lane-roster-store-D8x1jac2.js +1 -0
- package/dist/client/assets/lane-tool-detail-0WhMf4Vj.js +9 -0
- package/dist/client/assets/left-Bk3XnxPD.css +1 -0
- package/dist/client/assets/left-C--GiIh8.js +2 -0
- package/dist/client/assets/left-CAaRBK9S.css +1 -0
- package/dist/client/assets/left-CCoobxPS.css +1 -0
- package/dist/client/assets/left-Cj7Rt89X.js +1 -0
- package/dist/client/assets/left-CpNEtFEg.js +1 -0
- package/dist/client/assets/left-CzXAuK_t.js +2 -0
- package/dist/client/assets/left-agents-Bo9sO1by.js +1 -0
- package/dist/client/assets/left-bN4PCAXa.js +1 -0
- package/dist/client/assets/left-default-DV9GdvYi.js +1 -0
- package/dist/client/assets/left-jYYGAOYD.js +1 -0
- package/dist/client/assets/left-lanes-D0l_Co7V.js +1 -0
- package/dist/client/assets/left-mission-Ci7zREkQ.js +1 -0
- package/dist/client/assets/left-mission-DSenPIyb.css +1 -0
- package/dist/client/assets/left-plan-D4U1uflW.js +2 -0
- package/dist/client/assets/library-D-RxGiCw.js +1 -0
- package/dist/client/assets/loader-circle-CbHjZsz1.js +1 -0
- package/dist/client/assets/local-agents--00gLMqr.js +1 -0
- package/dist/client/assets/mentions-jSuTGeet.js +1 -0
- package/dist/client/assets/mesh-buckets-CfAukILK.js +1 -0
- package/dist/client/assets/mesh-screen-BSDUjrnV.css +1 -0
- package/dist/client/assets/mesh-view-store-CWidRbTE.js +1 -0
- package/dist/client/assets/message-circle-CG-96zts.js +1 -0
- package/dist/client/assets/message-markup-3J9pi3nx.js +15 -0
- package/dist/client/assets/message-square-DSaGpjFU.js +1 -0
- package/dist/client/assets/message-visibility-kJM8XcSG.js +1 -0
- package/dist/client/assets/mission-control-D3ikEPND.css +1 -0
- package/dist/client/assets/mission-control-model-C0fByIjm.js +1 -0
- package/dist/client/assets/mission-control-store-BlnEhiCq.js +1 -0
- package/dist/client/assets/model-Co0zkMIc.js +1 -0
- package/dist/client/assets/model-CpAxGuis.js +1 -0
- package/dist/client/assets/observe-CuLGD9Zp.js +1 -0
- package/dist/client/assets/openAgent-Bjt57GdM.js +1 -0
- package/dist/client/assets/openContent-C6XO6kr5.js +1 -0
- package/dist/client/assets/operator-attention-BwSPeheT.js +1 -0
- package/dist/client/assets/ops-agents-BOYxzPTm.css +1 -0
- package/dist/client/assets/ops-atop-BB4B4JdE.css +1 -0
- package/dist/client/assets/ops-screen-giu3If_N.css +1 -0
- package/dist/client/assets/page-status-DpkedE1F.js +1 -0
- package/dist/client/assets/page-status-bar-ByUD7VPM.css +1 -0
- package/dist/client/assets/plan-view-D56fneVF.css +1 -0
- package/dist/client/assets/plus--b1raV_O.js +1 -0
- package/dist/client/assets/profile-CVRziEDA.js +1 -0
- package/dist/client/assets/project-overview-helpers-BQTc_Ous.js +1 -0
- package/dist/client/assets/projects-inbox-CHyUFQ6w.js +1 -0
- package/dist/client/assets/projects-inbox-COZ23dLR.css +1 -0
- package/dist/client/assets/radio-Bz8ZePxj.js +1 -0
- package/dist/client/assets/refresh-cw-BBmAnCB7.js +1 -0
- package/dist/client/assets/repo-diff-C9Qs-bEn.css +1 -0
- package/dist/client/assets/resizable-columns-C7ygvLt8.css +1 -0
- package/dist/client/assets/resolve-panes-r9B3mpW7.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-DcG8xGaB.js +1 -0
- package/dist/client/assets/right-BHeiIaty.js +1 -0
- package/dist/client/assets/right-BkgKo9VT.js +1 -0
- package/dist/client/assets/right-BpEU5jWE.js +1 -0
- package/dist/client/assets/right-CRZXoy-X.js +1 -0
- package/dist/client/assets/right-ChF_pbPy.js +1 -0
- package/dist/client/assets/right-DMoUT3KN.js +1 -0
- package/dist/client/assets/right-DjRXbnRP.js +2 -0
- package/dist/client/assets/right-T4Ue6EqM.js +1 -0
- package/dist/client/assets/right-wzrLXKur.js +1 -0
- package/dist/client/assets/rocket-BSNS_rLs.js +1 -0
- package/dist/client/assets/router-Bq5dwf78.js +1 -0
- package/dist/client/assets/runtime-picker-Bcl5iIX5.js +1 -0
- package/dist/client/assets/runtime-picker-vhm0gtLs.css +1 -0
- package/dist/client/assets/scope-views-4khCg2_z.css +1 -0
- package/dist/client/assets/scope-views-U-ucT9m0.js +1 -0
- package/dist/client/assets/scout-voice-CU5c0LGi.js +1 -0
- package/dist/client/assets/scoutbot-BTIErYHo.js +3 -0
- package/dist/client/assets/scroll-text-D6Pdnar7.js +1 -0
- package/dist/client/assets/search-CWfZtOt2.js +1 -0
- package/dist/client/assets/secondaryNavConfig-DqUIp0Es.js +1 -0
- package/dist/client/assets/secondaryNavConfig-xssF_ubT.css +1 -0
- package/dist/client/assets/selection-bridge-16pk1qyG.js +1 -0
- package/dist/client/assets/send-horizontal-Bg5-QggH.js +1 -0
- package/dist/client/assets/server-CPp4ZJhZ.js +1 -0
- package/dist/client/assets/session-catalog-BmoyVTJ_.js +1 -0
- package/dist/client/assets/session-table-DZcrKoIH.js +1 -0
- package/dist/client/assets/sessionRead-CvFz2RHv.js +1 -0
- package/dist/client/assets/sliders-horizontal-1oW76Xc9.js +1 -0
- package/dist/client/assets/sparkles-ClfRJQ6w.js +1 -0
- package/dist/client/assets/sse-CjIkKo46.js +1 -0
- package/dist/client/assets/status-tone-BM_zuRy1.js +1 -0
- package/dist/client/assets/surface-activity-B1rgWB1i.js +1 -0
- package/dist/client/assets/system-surfaces-redesign-CD26LFc0.css +1 -0
- package/dist/client/assets/tail-display-BdyoLvzY.js +2 -0
- package/dist/client/assets/tail-events-D19uAGe3.js +1 -0
- package/dist/client/assets/terminal-B9AOZQKR.js +1 -0
- package/dist/client/assets/terminal-relay-CWbJ1RCW.js +1 -0
- package/dist/client/assets/terminal-screen-19jAI0Cw.css +1 -0
- package/dist/client/assets/terminal-sessions-D5CIR2OL.js +1 -0
- package/dist/client/assets/terminal-takeover-B8UeD9OX.js +1 -0
- package/dist/client/assets/text-DsBWV_4k.js +1 -0
- package/dist/client/assets/time-DltNTpLl.js +1 -0
- package/dist/client/assets/types-B0PlfpKc.js +1 -0
- package/dist/client/assets/ui-LM8pS8qE.js +1 -0
- package/dist/client/assets/use-conversation-list-Byab41G6.js +1 -0
- package/dist/client/assets/use-fleet-active-asks-BIbQx5AS.js +1 -0
- package/dist/client/assets/use-reduced-motion-RRBkmVkk.js +1 -0
- package/dist/client/assets/useAgentHoverCard-DMrbBif0.js +1 -0
- package/dist/client/assets/useContentSecondaryNav-DMl1WNm7.js +1 -0
- package/dist/client/assets/usePierreRuntime-wC-yMtBb.js +50 -0
- package/dist/client/assets/voice-levels-Dcr3jglk.js +1 -0
- package/dist/client/assets/wrench-Bkc_0lKF.js +1 -0
- package/dist/client/assets/x-D3GElQbe.js +1 -0
- package/dist/client/assets/{xterm-6eL7V7pF.js → xterm-BKR8oAkR.js} +1 -1
- package/dist/client/index.html +6 -3
- package/dist/drizzle/0003_harsh_meltdown.sql +45 -0
- package/dist/drizzle/0004_medical_aaron_stack.sql +40 -0
- package/dist/drizzle/0005_wet_shriek.sql +57 -0
- package/dist/drizzle/0006_woozy_dark_beast.sql +1 -0
- package/dist/drizzle/README.md +7 -0
- package/dist/drizzle/meta/0003_snapshot.json +4952 -0
- package/dist/drizzle/meta/0004_snapshot.json +5235 -0
- package/dist/drizzle/meta/0005_snapshot.json +5599 -0
- package/dist/drizzle/meta/0006_snapshot.json +5606 -0
- package/dist/drizzle/meta/_journal.json +28 -0
- package/dist/main.mjs +24907 -12910
- package/dist/node/main.mjs +10212 -195
- package/dist/openscout-terminal-relay.mjs +507 -64
- package/dist/pairing-runtime-controller.mjs +10793 -5165
- package/dist/runtime/base-daemon.mjs +627 -159
- package/dist/runtime/broker-daemon.mjs +65039 -30990
- package/dist/runtime/broker-process-manager.mjs +247 -54
- package/dist/runtime/mesh-discover.mjs +246 -54
- package/dist/scout-control-plane-web.mjs +56699 -47427
- package/dist/scout-web-server.mjs +56699 -47427
- package/package.json +1 -1
- package/dist/client/assets/RepoDiffViewer-DLVleMPW.js +0 -56
- package/dist/client/assets/embed-entry-BdmREZuc.js +0 -1
- package/dist/client/assets/index-DPFmfHm5.js +0 -271
- package/dist/client/assets/index-jpYnsyHM.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as c,j as e}from"./index-DMiGbrBt.js";import{u as st}from"./Provider-C7UKGHQy.js";import{o as Ee}from"./openContent-C6XO6kr5.js";import{a as B}from"./api-h5zurxmi.js";import{u as nt}from"./sse-CjIkKo46.js";import{u as at}from"./tail-events-D19uAGe3.js";import{n as it,a as ct,s as Le,c as Re}from"./colors-BtO5_zlx.js";import{A as rt}from"./AgentLiveActions-DBtnD0qE.js";import{i as lt}from"./message-visibility-kJM8XcSG.js";import{o as ot,m as dt,c as Pe,q as ut}from"./conversation-model-B47vYmWN.js";import{c as mt,e as pt,t as W,f as ce}from"./time-DltNTpLl.js";import{T as ht}from"./TmuxPeek-m1osv33Q.js";import{S as vt}from"./scroll-text-D6Pdnar7.js";import"./router-Bq5dwf78.js";import"./terminal-sessions-D5CIR2OL.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-bARZqTzD.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./createLucideIcon-OpA4Amw5.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./x-D3GElQbe.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./scout-voice-CU5c0LGi.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./runtime-picker-Bcl5iIX5.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CbHjZsz1.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BGk5qoEw.js";import"./search-CWfZtOt2.js";import"./index-BWHgHrtv.js";import"./terminal-takeover-B8UeD9OX.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";/* empty css */import"./refresh-cw-BBmAnCB7.js";const xt=20;function re(t){if(!t)return null;const s=t.replace(/[\\/]+$/,"");return s?s.split(/[\\/]/).filter(Boolean).at(-1)??s:null}function le(t){const s=t?.trim();return s?s.length>18?`${s.slice(0,8)}...${s.slice(-6)}`:s:null}function k(t){const s=new Set,a=[];for(const r of t){const m=r?.trim();if(!m)continue;const o=m.toLowerCase();s.has(o)||(s.add(o),a.push(m))}return a}function _e(t,s){const a=t?.trim().replace(/[\\/]+$/,""),r=s.trim().replace(/[\\/]+$/,"");if(!a||!r)return!1;if(a===r)return!0;if(r.startsWith("~/")){const m=r.slice(1);if(a.endsWith(m)||a.includes(`${m}/`))return!0}if(a.startsWith("~/")){const m=a.slice(1);if(r.endsWith(m)||r.includes(`${m}/`))return!0}return a.startsWith(`${r}/`)||r.startsWith(`${a}/`)}function Be(t,s){const a=t?.trim().toLowerCase(),r=s.trim().toLowerCase();return!a||!r?!1:a.includes(r)||r.includes(a)}function We(t,s){const a=t?.trim().toLowerCase(),r=s.trim().toLowerCase();return!a||!r?!1:a===r}function ft(t){const{activeSessionId:s,agent:a,sessionMeta:r}=t,m=k([s,a?.harnessSessionId]),o=k([a?.cwd,a?.projectRoot,r?.workspaceRoot]),i=k([a?.project,re(a?.cwd),re(a?.projectRoot),re(r?.workspaceRoot)]).filter(I=>I.length>2),j=k([...m.slice(0,2),...i.slice(0,2)]).join("|");return{sessionIds:m,paths:o,projects:i,query:j}}function ue(t,s){return!!(s.sessionIds.some(a=>Be(t.sessionId,a))||s.paths.some(a=>_e(t.cwd,a))||s.projects.some(a=>We(t.project,a)))}function jt(t,s){const a=s.filter(i=>ue(i,t)),r=k(a.filter(i=>t.sessionIds.some(j=>Be(i.sessionId,j))).map(i=>i.sessionId));if(r[0])return r[0];const m=k(a.filter(i=>t.paths.some(j=>_e(i.cwd,j))).map(i=>i.sessionId));if(m[0])return m[0];const o=k(a.filter(i=>t.projects.some(j=>We(i.project,j))).map(i=>i.sessionId));return o[0]?o[0]:t.paths[0]?t.paths[0]:t.sessionIds[0]?t.sessionIds[0]:t.projects[0]?t.projects[0]:t.query}function Y(t,s){const a=new Map;for(const r of[...s,...t])a.set(r.id,r);return[...a.values()].sort((r,m)=>mt(r.ts,m.ts)).slice(0,xt)}function gt(t){return t==="tool-result"?"tool result":t}function Nt(t){const s=t.replace(/\s+/g," ").trim();return s.length<=180?s:`${s.slice(0,177)}...`}const yt={direct:"Conversation",channel:"Conversation",group_direct:"Conversation",thread:"Thread"},wt=1800,It=4800,$e=2,St=120,Tt=650,bt=1800;function oe(t,s){try{return JSON.stringify(t)===JSON.stringify(s)?t:s}catch{return s}}function Me(t){if(!t)return null;const s=t.replace(/[\\/]+$/,"");return s?s.split(/[\\/]/).filter(Boolean).at(-1)??s:null}function kt(t){if(!t)return null;const s=t.replace(/[\\/]+$/,"");return s?s.replace(/^\/Users\/[^/]+(?=\/|$)/,"~"):null}function z(t){switch(t){case"queued":return"Queued";case"waking":return"Waking";case"waiting":return"Thinking";case"running":return"Working";default:return t.replace(/_/g," ")}}function Es(){const{route:t,agents:s,navigate:a,apiConnection:r,reload:m}=st(),o=t.view==="conversation"||t.view==="messages"?t.conversationId??null:null,[i,j]=c.useState(null),[I,me]=c.useState([]),[Z,pe]=c.useState(null),[ze,U]=c.useState(!1),F=c.useCallback(async()=>{if(!o){j(null),me([]),pe(null),U(!0);return}try{const[n,l,f]=await Promise.all([B(`/api/session/${encodeURIComponent(o)}`).catch(()=>null),B(`/api/flights?conversationId=${encodeURIComponent(o)}`).catch(()=>[]),B(`/api/messages?conversationId=${encodeURIComponent(o)}&limit=8`).catch(()=>[])]);j(p=>oe(p,n)),me(p=>oe(p,l??[])),pe(p=>oe(p,f?.filter(_=>!lt(_)).sort((_,tt)=>pt(_.createdAt,tt.createdAt)).at(-1)??null)),U(!0)}catch{U(!0)}},[o]);c.useEffect(()=>{U(!1),F()},[F]);const h=i?.agentId??null,u=c.useMemo(()=>h?s.find(n=>n.id===h)??null:null,[s,h]),[he,ve]=c.useState(null),[L,X]=c.useState([]),[S,G]=c.useState([]),xe=c.useRef([]),T=c.useRef(null),V=c.useRef(null),x=c.useRef([]),g=c.useRef(null),N=c.useRef(null),R=c.useRef(new Set),H=c.useCallback(()=>{T.current!==null&&(window.clearTimeout(T.current),T.current=null),V.current=null},[]),P=c.useCallback(()=>{if(!o)return;const n=Date.now(),l=V.current??n;V.current=l;const p=n-l>=It?0:wt;T.current!==null&&window.clearTimeout(T.current),T.current=window.setTimeout(()=>{T.current=null,V.current=null,F()},p)},[o,F]);c.useEffect(()=>H,[H]),c.useEffect(()=>{if(ve(null),!h)return;let n=!1;return B(`/api/agents/${encodeURIComponent(h)}/session-catalog`).then(l=>{n||ve(l)}).catch(()=>{}),()=>{n=!0}},[h]);const Ue=ot({name:u?.name,agentName:i?.agentName,id:h,title:i?.title}),fe=u?dt(u)??Pe(u.id)??u.id:h?Pe(h)??h:null,d=c.useMemo(()=>I.filter(ut).sort((n,l)=>(l.startedAt??0)-(n.startedAt??0))[0]??null,[I]);c.useEffect(()=>{R.current=new Set(I.map(n=>n.invocationId))},[I]),c.useEffect(()=>{H(),R.current.clear()},[H,o]),nt(n=>{if(o){if(n.kind==="message.posted"){n.payload?.message?.conversationId===o&&P();return}if(n.kind==="conversation.upserted"){n.payload?.conversation?.id===o&&P();return}if(n.kind==="invocation.requested"){const l=n.payload?.invocation;if(l?.conversationId===o){R.current.add(l.id),P();return}!l?.conversationId&&h&&l?.targetAgentId===h&&(R.current.add(l.id),P());return}if(n.kind==="flight.updated"){const l=n.payload?.flight;if(!l)return;(d?.id===l.id||d?.invocationId===l.invocationId||R.current.has(l.invocationId)||I.some(p=>p.id===l.id||p.invocationId===l.invocationId))&&P()}}});const v=he?.activeSessionId??u?.harnessSessionId??i?.harnessSessionId??null,w=u?.harnessSessionId??i?.harnessSessionId??null,A=u?.harnessLogPath??null,y=c.useMemo(()=>ft({activeSessionId:v,agent:u,sessionMeta:i}),[v,u,i]),ee=JSON.stringify({sessionIds:y.sessionIds,paths:y.paths,projects:y.projects}),$=y.sessionIds.length>0||y.paths.length>0||y.projects.length>0,q=c.useCallback(()=>{g.current!==null&&(window.clearTimeout(g.current),g.current=null),N.current!==null&&(window.clearInterval(N.current),N.current=null),x.current=[]},[]),O=c.useCallback(()=>{q()},[q]),je=c.useCallback(()=>{if(N.current!==null||(g.current!==null&&(window.clearTimeout(g.current),g.current=null),x.current.length===0))return;const l=()=>{const f=x.current.slice(0,$e);x.current=x.current.slice($e),f.length>0&&G(p=>Y(p,f)),!(x.current.length>0)&&N.current!==null&&(window.clearInterval(N.current),N.current=null)};l(),x.current.length>0&&(N.current=window.setInterval(l,St))},[]),ge=c.useCallback(n=>{N.current===null&&g.current===null&&(g.current=window.setTimeout(()=>{g.current=null,je()},n))},[je]);c.useEffect(()=>{xe.current=S},[S]),c.useEffect(()=>q,[q]),c.useEffect(()=>{O(),X([]),G([])},[O,ee]),c.useEffect(()=>{if(!$)return;let n=!1;const l=new URLSearchParams({limit:"180",transcripts:"true"});return B(`/api/tail/recent?${l.toString()}`).then(f=>{if(n)return;const p=(f.events??[]).filter(_=>ue(_,y));X(Y([],p))}).catch(()=>{}),()=>{n=!0}},[$,ee]),at(c.useCallback(n=>{$&&ue(n,y)&&X(l=>Y(l,[n]))},[$,ee])),c.useEffect(()=>{if(L.length===0){O(),G([]);return}const n=xe.current,l=new Set([...n.map(p=>p.id),...x.current.map(p=>p.id)]),f=L.filter(p=>!l.has(p.id));f.length!==0&&(x.current=Y(x.current,f),x.current.length>0&&ge(n.length===0?Tt:bt))},[ge,O,L]);const te=c.useMemo(()=>S.flatMap(Et).slice(0,5),[S]);if(!o)return e.jsx(At,{apiOffline:r.status==="offline",onRetry:()=>{m()}});if(!ze)return e.jsx("div",{className:"ctx-panel ctx-panel--conversation",children:e.jsx("div",{className:"ctx-panel-empty-state",children:e.jsx("div",{className:"ctx-panel-empty-hint",children:"Loading conversation…"})})});const Fe=i?.kind?yt[i.kind]??i.kind:"Conversation",D=i?.workspaceRoot??null,se=Me(D),K=kt(D),Ne=i?.currentBranch??null,ne=u?.harness??i?.harness??null,J=i?.lastMessageAt??Z?.createdAt??null,ye=i?.messageCount??null,we=i?i.participantIds.filter(n=>n!=="operator").length+1:null,C=u?.state??null,Ve=it(C),Ie=Z?.body?.trim()||i?.preview?.trim()||null,Se=Z?.actorName??null,Te=le(v),M=v??w,be=le(M),He=le(w),ke=!!(w&&w!==M),Ae=[ne,u?.transport].filter(Boolean).join(" · "),qe=!!(v||w||A),b=!!(u?.terminalSurface?.backend==="tmux"||u?.transport==="tmux"&&u.harnessSessionId),E=!!(d||ct(C,u)),Oe=E?d?z(d.state):"In motion":"At rest",De=d?.summary?.trim()??(J?`Last update ${W(J)??"recently"}`:"No recent activity recorded"),ae=[Ne?`branch ${Ne}`:null,ne,u?.transport].filter(Boolean),Ke=!!(se||K||ae.length>0),Je=E?"Live activity":b?"Terminal":"Activity",ie=d?.summary?.trim()??(v&&!b?"Terminal session is live.":S.length>0&&!b?"Streaming matching Tail events.":null),Q=jt(y,L),Qe=!!(u&&(d||v||L.length>0||b)),Ye=!b,Ze=v?b?"Terminal session":"Trace session":d?"Session starting":"Session context",Xe=v?be??v:d?z(d.state):"Waiting for a session id",Ce=v?[ne,u?.transport,d?z(d.state):null].filter(Boolean).join(" · "):d?.summary?.trim()??ie??null,Ge=()=>{h&&Ee(a,{view:"agent-info",conversationId:o},{returnTo:t})},et=()=>{Ee(a,{view:"ops",mode:"tail",...Q?{tailQuery:Q}:{}},{returnTo:t})};return e.jsxs("div",{className:"ctx-panel ctx-panel--conversation",children:[e.jsxs("section",{className:"ctx-panel-section ctx-panel-conversation-summary",children:[e.jsx("div",{className:"ctx-panel-section-label",children:Fe}),e.jsxs("div",{className:"ctx-panel-conversation-card",children:[e.jsx("div",{className:"ctx-panel-conversation-title",children:Ue}),fe&&e.jsxs("div",{className:"ctx-panel-conversation-handle",children:["@",fe]}),e.jsxs("div",{className:"ctx-panel-conversation-state",children:[e.jsx("span",{className:"ctx-panel-conversation-state-dot",style:{background:Le(C)}}),e.jsx("span",{children:Re(C)})]})]})]}),d&&e.jsxs("section",{className:"ctx-panel-section",children:[e.jsx("div",{className:"ctx-panel-section-label",children:"Now"}),e.jsxs("div",{className:"ctx-panel-conversation-flight",children:[e.jsxs("div",{className:"ctx-panel-conversation-flight-row",children:[e.jsx("span",{className:"ctx-panel-conversation-flight-label",children:z(d.state)}),d.startedAt&&e.jsx("span",{className:"ctx-panel-conversation-flight-time",children:W(d.startedAt)})]}),d.summary&&e.jsx("div",{className:"ctx-panel-conversation-flight-summary",children:d.summary})]})]}),e.jsxs("section",{className:"ctx-panel-section",children:[e.jsx("div",{className:"ctx-panel-section-label",children:"Workspace"}),Ke?e.jsxs("div",{className:"ctx-panel-workspace-card",children:[e.jsxs("div",{className:"ctx-panel-workspace-head",children:[e.jsx("div",{className:"ctx-panel-workspace-kicker",children:"Project"}),e.jsx("div",{className:"ctx-panel-workspace-title",title:D??se??void 0,children:se??"Unscoped workspace"})]}),K&&e.jsx("div",{className:"ctx-panel-workspace-path",title:D??K,children:K}),ae.length>0&&e.jsx("div",{className:"ctx-panel-workspace-strip",children:ae.map(n=>e.jsx("span",{className:"ctx-panel-workspace-chip",children:n},n))})]}):e.jsx("div",{className:"ctx-panel-empty",children:"No workspace metadata yet"})]}),qe&&e.jsxs("section",{className:"ctx-panel-section",children:[e.jsx("div",{className:"ctx-panel-section-label",children:"Session"}),e.jsxs("div",{className:"ctx-panel-session-card",children:[e.jsx("div",{className:"ctx-panel-session-head",children:e.jsxs("div",{className:"ctx-panel-session-primary",children:[Ae&&e.jsx("div",{className:"ctx-panel-session-kind",children:Ae}),M&&e.jsx("div",{className:"ctx-panel-session-id",title:M,children:be??M})]})}),(ke||A)&&e.jsxs("div",{className:"ctx-panel-session-meta",children:[ke&&w&&e.jsxs("div",{className:"ctx-panel-session-meta-item",children:[e.jsx("span",{children:"Harness session"}),e.jsx("strong",{title:w,children:He??w})]}),A&&e.jsxs("div",{className:"ctx-panel-session-meta-item",children:[e.jsx("span",{children:"Harness log"}),e.jsx("strong",{title:A,children:Me(A)??A})]})]})]})]}),e.jsxs("section",{className:"ctx-panel-section",children:[e.jsx("div",{className:"ctx-panel-section-label",children:"Activity"}),e.jsxs("div",{className:`ctx-panel-activity-card${E?" ctx-panel-activity-card--active":""}`,children:[e.jsxs("div",{className:"ctx-panel-activity-head",children:[e.jsx("span",{className:"ctx-panel-activity-dot",style:{background:E?"var(--green)":Le(C)}}),e.jsxs("div",{className:"ctx-panel-activity-main",children:[e.jsx("div",{className:"ctx-panel-activity-title",children:Oe}),e.jsx("div",{className:"ctx-panel-activity-sub",title:J?ce(J):void 0,children:De})]})]}),d&&e.jsxs("div",{className:"ctx-panel-activity-ledger",children:[e.jsx("span",{className:"ctx-panel-activity-ledger-label",children:z(d.state)}),d.startedAt&&e.jsx("span",{className:"ctx-panel-activity-ledger-time",title:ce(d.startedAt),children:W(d.startedAt)})]}),e.jsxs("div",{className:"ctx-panel-activity-facts",children:[typeof ye=="number"&&e.jsx(de,{label:"Messages",value:`${ye}`}),typeof we=="number"&&e.jsx(de,{label:"People",value:`${we}`}),Ve&&e.jsx(de,{label:"Agent",value:Re(C)})]})]})]}),Ie&&e.jsxs("section",{className:"ctx-panel-section ctx-panel-conversation-preview",children:[e.jsx("div",{className:"ctx-panel-section-label",children:Se?`Latest · ${Se}`:"Latest"}),e.jsx("div",{className:"ctx-panel-conversation-preview-body",children:Ie})]}),Qe&&u&&e.jsxs("section",{className:"ctx-panel-section ctx-panel-conversation-live-section",children:[e.jsxs("div",{className:"ctx-panel-section-label",children:[e.jsx("span",{children:Je}),Te&&e.jsx("span",{className:"ctx-panel-live-session",title:v??void 0,children:Te})]}),e.jsxs("div",{className:`ctx-panel-live-card${E?" ctx-panel-live-card--active":""}`,children:[e.jsxs("div",{className:`ctx-panel-live-session-card${E?" ctx-panel-live-session-card--active":""}`,children:[e.jsxs("div",{className:"ctx-panel-live-session-copy",children:[e.jsx("span",{children:Ze}),e.jsx("strong",{title:v??void 0,children:Xe}),Ce&&e.jsx("small",{children:Ce})]}),e.jsx("div",{className:"ctx-panel-live-session-pulse","aria-hidden":"true",children:e.jsx("span",{})})]}),e.jsx(rt,{agent:u,catalog:he,navigate:a,returnTo:t,variant:"compact",className:"ctx-panel-live-actions"}),ie&&e.jsx("div",{className:"ctx-panel-live-summary",children:ie}),b&&e.jsx(ht,{agentId:u.id,lines:24,columns:132,className:"ctx-panel-tmux-peek--conversation"}),te.length>0&&e.jsxs("div",{className:"ctx-panel-live-files","aria-live":"polite",children:[e.jsxs("div",{className:"ctx-panel-live-files-label",children:[e.jsx("span",{children:"Files"}),e.jsx("strong",{children:te.length})]}),e.jsx("ol",{className:"ctx-panel-live-file-list",children:te.map(n=>e.jsxs("li",{className:`ctx-panel-live-file ctx-panel-live-file--${n.tone}`,title:`${n.path} · ${n.verb}`,children:[e.jsx("span",{className:"ctx-panel-live-file-mark",children:n.mark}),e.jsx("span",{className:"ctx-panel-live-file-path",children:$t(n.path)}),e.jsx("span",{className:"ctx-panel-live-file-time",children:W(n.ts)})]},`${n.eventId}:${n.path}`))})]}),Ye&&e.jsx("div",{className:"ctx-panel-live-stream","aria-live":"polite",children:S.length>0?e.jsx("ol",{className:"ctx-panel-live-events",children:S.map(n=>e.jsxs("li",{className:"ctx-panel-live-event",children:[e.jsx("span",{className:"ctx-panel-live-event-kind",children:gt(n.kind)}),e.jsx("span",{className:"ctx-panel-live-event-summary",children:Nt(n.summary)}),e.jsx("span",{className:"ctx-panel-live-event-time",title:ce(n.ts),children:W(n.ts)})]},n.id))}):e.jsx("div",{className:"ctx-panel-live-stream-empty",children:"Waiting for matching Tail events"})}),$&&e.jsxs("button",{type:"button",className:"ctx-panel-live-tail-button",onClick:et,title:Q?`Tail filter: ${Q}`:"Open Tail",children:[e.jsx(vt,{size:13,strokeWidth:1.9,"aria-hidden":"true"}),e.jsx("span",{children:"Tail"})]})]})]}),h&&e.jsx("section",{className:"ctx-panel-section ctx-panel-conversation-profile-section",children:e.jsxs("button",{type:"button",className:"ctx-panel-roster-button ctx-panel-conversation-profile-button",onClick:Ge,children:[e.jsx("span",{className:"ctx-panel-roster-label",children:"Open agent profile"}),e.jsx("span",{className:"ctx-panel-roster-count",children:e.jsx("span",{children:"→"})})]})})]})}function At({apiOffline:t,onRetry:s}){return e.jsx("div",{className:"ctx-panel ctx-panel--conversation",children:e.jsx("div",{className:"ctx-panel-empty-state",children:e.jsxs("div",{className:"ctx-panel-empty-card","data-tone":t?"error":"neutral",children:[e.jsx("div",{className:"ctx-panel-empty-card-title",children:t?"Context unavailable":"No conversation selected"}),e.jsx("div",{className:"ctx-panel-empty-card-detail",children:t?"Scout context will load after the server reconnects.":"Select a chat to inspect participants, sessions, and recent activity."}),t&&e.jsx("button",{type:"button",className:"ctx-panel-empty-card-action",onClick:s,children:"Retry"})]})})})}function de({label:t,value:s}){return e.jsxs("div",{className:"ctx-panel-fact",children:[e.jsx("span",{className:"ctx-panel-fact-value",children:s}),e.jsx("span",{className:"ctx-panel-fact-label",children:t})]})}const Ct=/(?:["'`])?((?:~|\/|\.{1,2}\/|[A-Za-z0-9_.-]+\/)[^\s"'`),;]+?\.(?:ts|tsx|js|jsx|mjs|cjs|css|scss|swift|md|json|jsonc|yml|yaml|toml|sql|py|rs|go|sh|html|m|mm))(?:["'`])?/gi;function Et(t){const s=new Set,a=[],r=Lt(t.summary);for(const m of t.summary.matchAll(Ct)){const o=m[1]?.trim();if(!o)continue;const i=o.toLowerCase();s.has(i)||(s.add(i),a.push({eventId:t.id,path:o,verb:r,mark:Pt(r),tone:Rt(r),ts:t.ts}))}return a}function Lt(t){return/\b(created|create|wrote|write|edited|edit|modified|modify|updated|update|changed|change|patched|patch)\b/i.test(t)?"changed":/\b(read|opened|viewed|cat|sed)\b/i.test(t)?"read":"touched"}function Rt(t){return t==="changed"?"changed":t==="read"?"read":"touched"}function Pt(t){return t==="changed"?"+":t==="read"?"r":"·"}function $t(t){const s=t.replace(/[\\/]+$/g,""),a=s.split(/[\\/]/).filter(Boolean);return a.length<=2?s:`${a.at(-2)}/${a.at(-1)}`}export{Es as ConversationInspector};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c}from"./createLucideIcon-OpA4Amw5.js";const e=[["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}],["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09",key:"u4xsad"}],["path",{d:"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z",key:"676m9"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05",key:"92ym6u"}]],t=c("rocket",e);export{t as R};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as b,j as mn,n as ee,o as pn,p as Le,q as Ee,k as gn,t as hn,s as D,l as p,v as wn,w as K,x as In,y as vn}from"./index-DMiGbrBt.js";import{n as ne,e as Sn,g as Pe,h as bn,j as Ln}from"./terminal-sessions-D5CIR2OL.js";var ye=["local","url","sharedConfig","env"];function Re(e){const n=En(e),t=e.audienceIncludes??Pn(e.audienceOrder),s=new Set;function o(i){!e.warnOnUnknown||s.has(i)||(s.add(i),typeof console<"u"&&typeof console.warn=="function"&&console.warn(`[hudsonkit/flags] Unknown feature flag "${i}" resolved false.`))}const a=e.registry;function d(i){const l=a[i];if(!l)return o(i),{key:i,enabled:!1,value:!1,layer:"default",audience:n,reason:"unknown-flag"};const u=yn(e.layers,i);return u?{key:i,enabled:u.value,value:u.value,layer:u.layer,audience:n,requiredTier:l.tier,reason:"override",definition:l}:l.defaultEnabled?l.tier&&!t(n,l.tier)?{key:i,enabled:!1,value:!1,layer:"default",audience:n,requiredTier:l.tier,reason:"audience-denied",definition:l}:{key:i,enabled:!0,value:!0,layer:"default",audience:n,requiredTier:l.tier,reason:"default",definition:l}:{key:i,enabled:!1,value:!1,layer:"default",audience:n,requiredTier:l.tier,reason:"default",definition:l}}return{registry:e.registry,isEnabled:i=>d(String(i)).enabled,explain:i=>d(String(i)),all:()=>Object.keys(e.registry).sort().map(d),audience:()=>n}}function En(e){let n=e.audience.tier;for(const t of ye.slice().reverse()){const s=e.layers?.[t]?.audience;s&&(n=s)}return{...e.audience,tier:n}}function Pn(e){return(n,t)=>{if(n.tier===t)return!0;if(!e||e.length===0)return!1;const s=e.indexOf(n.tier),o=e.indexOf(t);return s<0||o<0?!1:s>=o}}function yn(e,n){for(const t of ye){const s=Rn(e?.[t]?.flags?.[n]);if(s!==null)return{layer:t,value:s}}return null}function Rn(e){return e===!0||e==="on"?!0:e===!1||e==="off"?!1:null}function $n(e){if(e===!0||e===!1)return e;if(typeof e=="number"){if(e===1)return!0;if(e===0)return!1}if(typeof e!="string")return;const n=e.trim().toLowerCase();if(["1","true","on","yes","enabled","enable"].includes(n))return!0;if(["0","false","off","no","disabled","disable"].includes(n))return!1;if(["default","null","unset","clear"].includes(n))return"default"}function An(e,n={}){const t=n.paramPrefix??"ff.",s=n.audienceParam??"ffAudience",o=typeof e=="string"?new URL(e,"http://hudson.local"):e,a={};let d;for(const[i,l]of o.searchParams.entries()){if(i===s&&l.trim()&&(d=l.trim()),!i.startsWith(t))continue;const u=i.slice(t.length),h=$n(l);u&&h!==void 0&&(a[u]=h)}return{flags:a,audience:d}}var O=1;function $e(e){if(typeof window>"u")return{version:O};try{const n=window.localStorage?.getItem(e);return Un(n)}catch{return{version:O}}}function V(e,n){if(typeof window>"u")return;const t=Ae(n),s=JSON.stringify(t);try{window.localStorage?.setItem(e,s)}catch{}Cn(e,s)}function Un(e){if(!e)return{version:O};try{const n=JSON.parse(e);return!n||typeof n!="object"?{version:O}:Ae(n)}catch{return{version:O}}}function Ae(e){const n={version:O};if(e.audience&&(n.audience=e.audience),e.flags&&typeof e.flags=="object"){n.flags={};for(const[t,s]of Object.entries(e.flags))(s===!0||s===!1)&&(n.flags[t]=s);Object.keys(n.flags).length===0&&delete n.flags}return n}function Cn(e,n){if(!(typeof document>"u"))try{const t=encodeURIComponent(n);document.cookie=`${encodeURIComponent(e)}=${t}; Path=/; SameSite=Lax; Max-Age=31536000`}catch{}}var _n="hudson.flags",Ue=b.createContext(null);function Kt({registry:e,audience:n,audienceOrder:t,audienceIncludes:s,initialLayers:o,storageKey:a=_n,warnOnUnknown:d=!1,children:i}){const[l,u]=b.useState(()=>{const g=o?.local;return{version:1,audience:g?.audience??void 0,flags:Fn(g)}});b.useEffect(()=>{const g=$e(a);(g.audience||Object.keys(g.flags??{}).length>0)&&u(g)},[a]);const h=b.useMemo(()=>({...o,local:{...o?.local,audience:l.audience??o?.local?.audience,flags:{...o?.local?.flags??{},...l.flags??{}}}}),[o,l]),R=b.useMemo(()=>Re({registry:e,audience:n,audienceOrder:t,audienceIncludes:s,layers:h,warnOnUnknown:d}),[e,n,t,s,h,d]),_=b.useMemo(()=>({...R,layers:h,storageKey:a,setLocalOverride:(g,A)=>{u(P=>{const F={...P.flags??{}};A===null?delete F[g]:F[g]=A;const U={...P,version:1,flags:F};return V(a,U),U})},setLocalAudienceOverride:g=>{u(A=>{const P={...A,version:1,audience:g??void 0};return V(a,P),P})},resetLocalOverrides:()=>{const g={version:1};V(a,g),u(g)}}),[R,h,a]);return mn.jsx(Ue.Provider,{value:_,children:i})}function Ce(){return b.useContext(Ue)}function Yt(){const e=Ce();if(!e)throw new Error("useFeatureFlags must be used within FeatureFlagsProvider");return e}function Qt(e,n=!0){return Ce()?.isEnabled(e)??n}function Fn(e){if(!e?.flags)return;const n={};for(const[t,s]of Object.entries(e.flags))(s===!0||s===!1)&&(n[t]=s);return Object.keys(n).length>0?n:void 0}const Dn=["ops.control","ops.mesh","ops.runtime","ops.plans","ops.terminal"],On=["surface.search","surface.sessions","surface.briefings","surface.work","surface.activity","surface.follow","surface.scoutbot","surface.workflows"];function ue(e,n){return Object.fromEntries(e.map(t=>[t,n]))}const _e={label:"Surface · Scope",description:`Scope presentation on Scout infra — lean lanes/tail/sessions/agents at ${pn}/*.`,defaultEnabled:!1,tier:"everyone",owner:"scout-web",tags:["surface","scope","observability"]},Tn={..._e,label:"Surface · Scope (legacy alias)",description:`Legacy alias for ${ee}. Prefer the primary flag; ${Le} remains for old dev links.`},qt=ee;function kn(){return{audience:"everyone",flags:{"ops.control":!0,"ops.lanes":!0,...ue(Dn,!1),...ue(On,!1)}}}const Fe=["ffBundle","ffVariant","scoutBundle","scoutExperience","ab"],De=["ffGlobal","scoutGlobalBundle"],Oe=["ffPersist","persistBundle"],jn=new Set(["no-ops","ffAudience",...Fe,...De,...Oe]);function Xt(e){for(const n of[...e.searchParams.keys()])(jn.has(n)||n.startsWith("ff."))&&e.searchParams.delete(n);return e}const xn=["everyone","internal","power"],Nn="openscout.flags",Y="openscout.flagBundle",Bn={tier:"power"},fe=["ops.control","ops.mesh","ops.runtime","ops.plans","ops.terminal","ops.lanes"],me=["surface.search","surface.sessions","surface.briefings","surface.work","surface.activity","surface.follow","surface.scoutbot","surface.realtime-voice","surface.workflows"],zn={"nav.sidebar":{label:"Nav · Sidebar",description:"Classic sidebar chrome (8 primary areas + icon rail). Default on since sco-083 soak; opt out with ?ff.nav.sidebar=off. Not included in max-pro.",defaultEnabled:!0,tier:"everyone",owner:"scout-web",tags:["nav","chrome"]},"ops.control":{label:"Ops · Control",description:"Mission control, issues, and the Ops section shell.",defaultEnabled:!0,tier:"power",owner:"scout-web",tags:["ops","nav"]},"ops.mesh":{label:"Ops · Mesh",description:"Mesh topology and peer status.",defaultEnabled:!0,tier:"power",owner:"scout-web",tags:["ops"]},"ops.runtime":{label:"Ops · Runtime",description:"Runtime / atop process telemetry.",defaultEnabled:!0,tier:"power",owner:"scout-web",tags:["ops"]},"ops.plans":{label:"Ops · Plans",description:"Plan documents and plan-mode review.",defaultEnabled:!0,tier:"power",owner:"scout-web",tags:["ops"]},"ops.terminal":{label:"Ops · Terminal",description:"Observe / takeover terminal sessions.",defaultEnabled:!0,tier:"power",owner:"scout-web",tags:["ops"]},"ops.lanes":{label:"Ops · Agent Lanes",description:"One column per local agent — follow live harness work in power-user mode.",defaultEnabled:!0,tier:"power",owner:"scout-web",tags:["ops"]},"surface.search":{label:"Surface · Search",description:"Knowledge + indexer search as a top-level nav entry.",defaultEnabled:!1,tier:"everyone",owner:"scout-web",tags:["surface","nav"]},"surface.sessions":{label:"Surface · Sessions",description:"Standalone top-level Sessions entry (still reachable under Agents).",defaultEnabled:!1,tier:"everyone",owner:"scout-web",tags:["surface","nav"]},"surface.briefings":{label:"Surface · Briefings",description:"Briefings list + detail.",defaultEnabled:!1,tier:"everyone",owner:"scout-web",tags:["surface"]},"surface.work":{label:"Surface · Work",description:"Work item detail.",defaultEnabled:!1,tier:"everyone",owner:"scout-web",tags:["surface"]},"surface.activity":{label:"Surface · Activity",description:"Activity stream.",defaultEnabled:!1,tier:"everyone",owner:"scout-web",tags:["surface"]},"surface.follow":{label:"Surface · Follow",description:"Follow view.",defaultEnabled:!1,tier:"everyone",owner:"scout-web",tags:["surface"]},"surface.scoutbot":{label:"Surface · Scoutbot",description:"Scoutbot assistant — the inspector panel, the status-bar broadcast chip, and the Message-Scout command-palette actions.",defaultEnabled:!0,tier:"everyone",owner:"scout-web",tags:["surface","assistant"]},"surface.realtime-voice":{label:"Surface · Realtime voice",description:"Live WebRTC voice conversations with Scoutbot through OpenAI Realtime.",defaultEnabled:!1,tier:"everyone",owner:"scout-web",tags:["surface","assistant","voice"]},"surface.workflows":{label:"Surface · Workflows",description:"Observed harness families / workflow topology telemetry on the Agents directory. Off in the lean view — the directory is just the project-grouped agent board.",defaultEnabled:!1,tier:"everyone",owner:"scout-web",tags:["surface","observability"]},[ee]:_e,[Le]:Tn},Mn={a:"light-prod",control:"light-prod",light:"light-prod","light-prod":"light-prod",prod:"light-prod",production:"light-prod",b:"max-pro",max:"max-pro","max-pro":"max-pro",pro:"max-pro",treatment:"max-pro",...hn},pe=new Set(["clear","default","none","reset","unset"]);function B(e,n){return Object.fromEntries(e.map(t=>[t,n]))}function Te(...e){const n={};for(const t of e)t.audience&&(n.audience=t.audience),t.flags&&Object.keys(t.flags).length>0&&(n.flags={...n.flags??{},...t.flags});return n}function te(e){switch(e){case"light-prod":return{audience:"everyone",flags:{...B(fe,!1),...B(me,!1)}};case"max-pro":return{audience:"power",flags:{...B(fe,!0),...B(me,!0)}};case gn:return kn()}}function k(e){return e?Mn[e.trim().toLowerCase()]??null:null}function Q(e,n){for(const t of n){const s=e.get(t);if(s!==null)return s}return null}function ke(e){const n=Q(e,Fe);return k(n)}function Gn(e){const n=Q(e,De);if(n){const d=n.trim().toLowerCase();if(pe.has(d))return{action:"clear"};const i=k(n);return i?{action:"set",bundle:i}:null}const t=Q(e,Oe);if(!t)return null;const s=t.trim().toLowerCase();if(pe.has(s))return{action:"clear"};if(["0","false","no"].includes(s))return null;const o=k(t);if(o)return{action:"set",bundle:o};const a=ke(e);return a?{action:"set",bundle:a}:null}function je(){if(typeof window>"u")return null;try{return k(window.localStorage.getItem(Y))}catch{return null}}function Wn(e){if(!(typeof window>"u"))try{e.action==="clear"?window.localStorage.removeItem(Y):window.localStorage.setItem(Y,e.bundle)}catch{}}function Jt(){return je()??k(Ee())??Ne}function xe(){const e=je();return e?te(e):{}}const Ne="light-prod";function Be(){const e=k(Ee())??Ne;return te(e)}function Vn(e){const n=Gn(e);n&&Wn(n)}function ze(e=new URLSearchParams(window.location.search)){const n=An(window.location.href),t=ke(e),s=t?te(t):{},o={audience:n.audience??s.audience,flags:{...s.flags??{},...n.flags??{}}};return e.has("no-ops")&&(o.flags={...o.flags,"ops.control":!1}),o}function Hn(){const e=$e(Nn);return{flags:e.flags,audience:e.audience??void 0}}function Zt(){if(typeof window>"u")return{};const e=new URLSearchParams(window.location.search);return Vn(e),{sharedConfig:Te(Be(),xe()),url:ze(e)}}function Kn(e){const n=typeof window>"u"?{}:{sharedConfig:Te(Be(),xe()),url:ze(),local:Hn()};return Re({registry:zn,audience:Bn,audienceOrder:xn,layers:n,warnOnUnknown:!1}).isEnabled(e)}function Me(){return Kn("ops.control")}const q={sm:408,md:512,lg:616},Ge=240,We=640,Yn=24,Ve="openscout:lane-deck:v1",Qn=new Set(["web.ops","macos.lanes","hud.tail","web.embed"]),se=new Set(["sm","md","lg"]),He={"web.ops":{defaultLaneWidth:"lg",showAutoLanes:!0},"macos.lanes":{defaultLaneWidth:"md",showAutoLanes:!0},"hud.tail":{defaultLaneWidth:"sm",showAutoLanes:!0,defaultHorizon:"30m"},"web.embed":{defaultLaneWidth:"md",showAutoLanes:!0}},qn=He["web.ops"];function oe(e){return Ke(e)?He[e]:qn}const M={pinned_left:0,main:1,pinned_right:2};function Ke(e){return Qn.has(e)}function es(e=window.location.search,n=window.location.pathname){const t=new URLSearchParams(e),s=t.get("profile")?.trim().toLowerCase();if(s&&Ke(s))return s;const o=t.get("embed")?.trim().toLowerCase();return o==="hud"?"hud.tail":o==="app"?"macos.lanes":n.includes("/lanes/embed")?"web.embed":(n.includes("/ops/lanes"),"web.ops")}function ns(e=window.location.search){const n=new URLSearchParams(e),t=(n.get("lanes")??n.get("size"))?.trim().toLowerCase();return t&&se.has(t)?t:"lg"}function ts(e,n){if(typeof e=="number"&&Number.isFinite(e))return Math.min(We,Math.max(Ge,Math.round(e)));const t=typeof e=="string"&&se.has(e)?e:n;return q[t]}function ss(e){const n=Math.min(We,Math.max(Ge,Math.round(e)));let t=null,s=Number.POSITIVE_INFINITY;for(const[o,a]of Object.entries(q)){const d=Math.abs(a-n);d<s&&(s=d,t=o)}return t&&s<=Yn?{px:q[t],tier:t}:{px:n,tier:null}}function ae(e,n,t){return{version:1,profileId:e,defaultLaneWidth:n??t.defaultLaneWidth,defaultHorizon:t.defaultHorizon,laneWidths:{},laneDefs:[],slots:[],showAutoLanes:t.showAutoLanes,updatedAt:Date.now()}}function ge(e,n){const t=oe(e);return ae(e,n,t)}function X(e){if(typeof e=="number"&&Number.isFinite(e)||typeof e=="string"&&se.has(e))return e}function Xn(e){if(!e||typeof e!="object")return null;const n=e;return typeof n.id!="string"||!n.id.trim()||n.kind!=="session"&&n.kind!=="harness"&&n.kind!=="project"&&n.kind!=="attention"||typeof n.title!="string"||!n.title.trim()?null:{id:n.id.trim(),kind:n.kind,title:n.title.trim(),sessionId:typeof n.sessionId=="string"?n.sessionId.trim():void 0,harness:typeof n.harness=="string"?n.harness.trim():void 0,projectPath:typeof n.projectPath=="string"?n.projectPath.trim():void 0}}function Jn(e){if(!e||typeof e!="object")return null;const n=e;return typeof n.id!="string"||!n.id.trim()||typeof n.laneDefId!="string"||!n.laneDefId.trim()||n.zone!=="pinned_left"&&n.zone!=="main"&&n.zone!=="pinned_right"||typeof n.position!="number"||!Number.isFinite(n.position)?null:{id:n.id.trim(),laneDefId:n.laneDefId.trim(),zone:n.zone,position:n.position,width:X(n.width)}}function Ye(e,n,t,s){if(!e||typeof e!="object")return ae(n,t,s);const o=e,a=Array.isArray(o.laneDefs)?o.laneDefs.map(Xn).filter(u=>u!==null):[],d=Array.isArray(o.slots)?o.slots.map(Jn).filter(u=>u!==null):[],i={};if(o.laneWidths&&typeof o.laneWidths=="object")for(const[u,h]of Object.entries(o.laneWidths)){const R=X(h);R!==void 0&&(i[u]=R)}const l=X(o.defaultLaneWidth);return{version:1,profileId:n,defaultLaneWidth:(typeof l=="string"?l:void 0)??t??s.defaultLaneWidth,defaultHorizon:typeof o.defaultHorizon=="string"?o.defaultHorizon:s.defaultHorizon,laneWidths:i,laneDefs:a,slots:d,showAutoLanes:typeof o.showAutoLanes=="boolean"?o.showAutoLanes:s.showAutoLanes,updatedAt:typeof o.updatedAt=="number"?o.updatedAt:Date.now()}}function Zn(e,n,t){return Ye(e,n,t,oe(n))}function os(e,n){const t=oe(e),s=n??t.defaultLaneWidth;try{const o=localStorage.getItem(`${Ve}:${e}`);return o?Zn(JSON.parse(o),e,s):ge(e,s)}catch{return ge(e,s)}}function et(e){try{localStorage.setItem(`${Ve}:${e.profileId}`,JSON.stringify({...e,updatedAt:Date.now()}))}catch{}}function as(e){return[...e].sort((n,t)=>{const s=M[n.zone]-M[t.zone];return s!==0?s:n.position-t.position})}function rs(e,n){return M[e]-M[n]}function Qe(){return`slot:${Date.now().toString(36)}-${Math.random().toString(36).slice(2,8)}`}function re(e){return e.trim().toLowerCase().replace(/['"]/gu,"").replace(/[^a-z0-9]+/gu,"-").replace(/^-+|-+$/gu,"")}function W(e){return`session:${e}`}function nt(e){return`harness:${re(e)}`}function tt(e){return`project:${re(e)}`}const st="attention:needs-input";function qe(e,n){const t=e.filter(s=>s.zone===n);return t.length===0?0:Math.max(...t.map(s=>s.position))+1}function Xe(e,n){const t=e.laneDefs.some(s=>s.id===n.id);return{...e,laneDefs:t?e.laneDefs.map(s=>s.id===n.id?n:s):[...e.laneDefs,n]}}function Je(e,n){const t=e.slots.some(s=>s.id===n.id);return{...e,slots:t?e.slots.map(s=>s.id===n.id?n:s):[...e.slots,n]}}function Ze(e,n){return{...e,slots:e.slots.filter(t=>t.laneDefId!==n)}}function ot(e,n){const t=W(n);return{...Ze(e,t),laneDefs:e.laneDefs.filter(s=>s.id!==t)}}function is(e,n){const t=W(n);return e.slots.some(s=>s.laneDefId===t&&s.zone!=="main")}function cs(e,n){const t=W(n),s=e.slots.find(o=>o.laneDefId===t);return!s||s.zone==="main"?null:s.zone}function ds(e,n){const t=n.zone??"pinned_left",s=W(n.laneId),o=ot(e,n.laneId),a=Xe(o,{id:s,kind:"session",title:n.title,sessionId:n.laneId});return Je(a,{id:Qe(),laneDefId:s,zone:t,position:qe(a.slots,t),width:n.width})}function ls(e,n){const t=n.zone??"pinned_left",s=n.kind==="attention"?st:n.kind==="harness"&&n.harness?nt(n.harness):n.kind==="project"&&n.projectPath?tt(n.projectPath):`${n.kind}:${re(n.title)}`,o=Ze(e,s),a=Xe(o,{id:s,kind:n.kind,title:n.title,harness:n.harness,projectPath:n.projectPath});return Je(a,{id:Qe(),laneDefId:s,zone:t,position:qe(a.slots,t),width:n.width})}function us(e,n,t){return{...e,laneWidths:{...e.laneWidths,[n]:t},updatedAt:Date.now()}}function fs(e,n){return{...e,defaultLaneWidth:n,updatedAt:Date.now()}}function ms(e){const n=new Set(e.slots.filter(t=>t.zone!=="main").map(t=>t.laneDefId));return{...e,slots:e.slots.filter(t=>t.zone==="main"),laneDefs:e.laneDefs.filter(t=>!n.has(t.id))}}const G="scope.lanes",J={defaultLaneWidth:"md",showAutoLanes:!0,defaultHorizon:"30m"},at="openscout:lane-deck:v1";function he(e){return ae(G,e,J)}function ps(e){const n=e??J.defaultLaneWidth;try{const t=localStorage.getItem(`${at}:${G}`);return t?Ye(JSON.parse(t),G,n,J):he(n)}catch{return he(n)}}function gs(e){et(e)}const rt=[p.lanes,p.tail,p.sessions,p.agents];function it(e){return rt.includes(e)}function ct(e){return e===In||e===vn}function en(e){return wn(e)}function H(e,n={}){switch(e){case p.tail:{const t=new URLSearchParams;n.tailQuery&&t.set("q",n.tailQuery);const s=t.toString();return D(e,s?`?${s}`:"")}case p.sessions:return n.sessionId?D(e,`/${encodeURIComponent(n.sessionId)}`):D(e);case p.lanes:return D(K);case p.agents:return D(e);default:return D(K)}}function nn(e){switch(e.view){case"ops":return!e.mode||e.mode==="lanes"?p.lanes:e.mode==="tail"?p.tail:null;case"sessions":return e.agentId?null:p.sessions;case"agents-v2":return e.agentId||e.projectSlug||e.sessionId||e.conversationId?null:p.agents;default:return null}}function dt(e){const n=nn(e);return n?n===p.tail&&e.view==="ops"?H(n,{tailQuery:e.tailQuery}):n===p.sessions&&e.view==="sessions"?H(n,{sessionId:e.sessionId}):H(n):null}function lt(e,n,t){if(!ct(e[0]))return null;const s=e[1]??K;if(!it(s))return{view:"ops",mode:"lanes"};switch(s){case p.tail:{const o=n.searchParams.get("q")?.trim();return{view:"ops",mode:"tail",...o?{tailQuery:o}:{}}}case p.sessions:return e[2]?t({view:"sessions",sessionId:decodeURIComponent(e[2])}):t({view:"sessions"});case p.agents:return t({view:"agents-v2"});case p.lanes:default:return{view:"ops",mode:"lanes"}}}const ut=new Set(["no-ops","ffBundle","ffVariant","scoutBundle","scoutExperience","ab","ffGlobal","scoutGlobalBundle","ffPersist","persistBundle","ffAudience","studio","studioInjection","studioMode"]),ft=["ff.","studio.","studioMode."];function mt(e){return ut.has(e)||ft.some(n=>e.startsWith(n))}function tn(e,n=""){const t=new URL(e,"http://scout.local");new URLSearchParams(n).forEach((a,d)=>{mt(d)&&(t.searchParams.has(d)||t.searchParams.set(d,a))});const o=t.searchParams.toString();return`${t.pathname}${o?`?${o}`:""}`}function hs(e){switch(e){case p.tail:return{view:"ops",mode:"tail"};case p.sessions:return{view:"sessions"};case p.agents:return{view:"agents-v2"};case p.lanes:default:return{view:"ops",mode:"lanes"}}}function pt(e=typeof window<"u"?window.location.pathname:""){return en(e)}function ws(){return G}function Is(e=pt()){return e?{"data-scope-presentation":!0}:void 0}function sn(e,n=typeof window<"u"?window.location.pathname:""){return en(n)?dt(e):null}function gt(e,n=typeof window<"u"?window.location.pathname:""){return sn(e,n)!==null}function vs(e,n=typeof window<"u"?window.location.pathname:""){return gt(e,n)?nn(e):null}const on=typeof window<"u"?window.location.href:"http://scout.local/";function ht(e){const n=e.toString();return new URL(n,on)}function wt(e){switch(e){case"profile":case"config":case"definitions":return e==="definitions"?"config":e;case"observe":case"message":return e;default:return}}function It(e){const n=e.trim().replace(/^#/,"");if(!n.startsWith("msg-"))return null;const t=n.slice(4).trim();if(!t)return null;try{return decodeURIComponent(t)}catch{return t}}function vt(e){switch(e){case"control":case"mission":case"command":case"warroom":case"conduct":case"conductor":return"mission";case"plan":return"plan";case"issues":case"errors":case"warnings":return"issues";case"agents":case"tail":case"atop":case"lanes":return e;default:return}}function St(e){return e==="delivered"||e==="failed"||e==="all"?e:void 0}function bt(e){return e==="indexer"||e==="knowledge"?e:void 0}function Lt(e){switch(e){case"pairing":case"agents":case"appearance":case"operator":case"comms":case"credentials":case"voice":case"devices":case"about":return e;case"communications":return"comms";default:return}}function Et(e){switch(e){case"tail":case"session":case"chat":case"work":return e;default:return}}function Pt(e){const n=e?.trim().replace(/\.+$/u,"");return n==="observe"||n==="takeover"?n:void 0}function yt(e){const n=e?.trim().toLowerCase();return n==="pty"||n==="tmux"||n==="zellij"||n==="herdr"?n:void 0}function Rt(e){const n=e?.trim().toLowerCase();return n==="shell"||n==="claude"||n==="codex"||n==="pi"?n:void 0}function $t(e){return e==="all"||e==="touched"?"all":e==="changed"?"changed":void 0}function we(e){if(!e)return;const n=Number.parseInt(e,10);return Number.isSafeInteger(n)&&n>0?n:void 0}function Ie(e){return e==="mission"?"control":e}function At(e){return e.searchParams.has("no-ops")?!1:typeof window>"u"?!0:Me()}function Ut(e){return e==="tail"}function Ct(e){return e==="lanes"}function an(e){return Ut(e)||Ct(e)}const ie="machineId",rn=new Set(["inbox","conversation","agents-v2","messages","sessions","repos","harnesses","mesh","activity","work","follow"]);function _t(e){return e.searchParams.get(ie)?.trim()||void 0}function Ft(e,n){return!n||!rn.has(e.view)?e:{...e,machineId:n}}function ce(e){return rn.has(e.view)}function Dt(e){return"machineId"in e&&e.machineId?e.machineId:null}function ve(e,n){if(!ce(e))return e;const t={...e},s=n?.trim();return s?t.machineId=s:delete t.machineId,t}function Ss(e){return ce(e)?{...e,machineId:""}:e}function Ot(e,n){return ce(e)?"machineId"in e?ve(e,e.machineId??null):ve(e,Dt(n)):e}function C(e,n){"machineId"in n&&n.machineId&&e.set(ie,n.machineId)}function I(e){const n=e.toString();return n?`?${n}`:""}function j(e,n){const t=new URLSearchParams;return C(t,n),`${e}${I(t)}`}function Tt(e){return"machineId"in e&&e.machineId?`:machine:${e.machineId}`:""}function cn(e){const n=ht(e),t=n.pathname.replace(/^\/+/,"").split("/").filter(Boolean),s=_t(n),o=r=>Ft(r,s),a=lt(t,n,o);if(a)return a;const d=It(n.hash),i=wt(n.searchParams.get("tab"))??(d?"message":void 0),l=n.searchParams.get("project")?.trim()||void 0,u=n.searchParams.get("agentId")?.trim()||void 0;if(t[0]==="agent"&&t[1])return{view:"agent-info",conversationId:decodeURIComponent(t[1])};const h=n.searchParams.get("project")?.trim()||void 0,R=n.searchParams.get("harness")?.trim()||void 0,_=n.searchParams.get("node")?.trim()||void 0,g=n.searchParams.get("set")?.trim(),A=g==="live"||g==="ephemeral"||g==="archived"?g:void 0,P=n.searchParams.get("view")?.trim(),F=P==="sessions"||P==="agents"?P:void 0,U=n.searchParams.get("state")?.trim(),de=U==="needs"||U==="live"||U==="idle"?U:void 0,fn=n.searchParams.get("ephemeral")==="1",N=n.searchParams.get("session")?.trim()||void 0,S=n.searchParams.get("select")?.trim()||void 0,E={...R?{harness:R}:{},..._?{node:_}:{},...A?{set:A}:{},...F?{indexView:F}:{},...de?{stateFilter:de}:{},...fn?{showEphemeral:!0}:{}};if(t[0]==="projects"){const r=t[1]?decodeURIComponent(t[1]):void 0;if(!r)return o({view:"agents-v2",...S?{selectedAgentId:S}:{},...E});if(t[2]==="agents"){const c=t[3]?decodeURIComponent(t[3]):void 0;if(c){if(t[4]==="c"&&t[5])return o({view:"agents-v2",projectSlug:r,agentId:c,conversationId:decodeURIComponent(t[5]),tab:i??"message",...E});const f=t[4]==="sessions"&&t[5]?decodeURIComponent(t[5]):N;return o({view:"agents-v2",projectSlug:r,agentId:c,...f?{sessionId:f}:{},...i?{tab:i}:{},...E})}return o({view:"agents-v2",projectSlug:r,indexView:"agents",...S?{selectedAgentId:S}:{},...E})}return t[2]==="sessions"?o({view:"agents-v2",projectSlug:r,indexView:"sessions",...t[3]?{sessionId:decodeURIComponent(t[3])}:{},...S?{selectedAgentId:S}:{},...E}):o({view:"agents-v2",projectSlug:r,...S?{selectedAgentId:S}:{},...E})}if(t[0]==="agents-v2"&&t[1]==="sessions"&&t[2])return o({view:"agents-v2",sessionId:decodeURIComponent(t[2]),...S?{selectedAgentId:S}:{},...h?{projectSlug:h}:{},...E});if(t[0]==="agents-v2"&&t[1]){const r=decodeURIComponent(t[1]);return o({view:"agents-v2",agentId:r,...i?{tab:i}:{},...N?{sessionId:N}:{},...h?{projectSlug:h}:{},...E})}if(t[0]==="agents-v2")return o({view:"agents-v2",...S?{selectedAgentId:S}:{},...h?{projectSlug:h}:{},...E});if(t[0]==="agents"&&t[1]){const r=decodeURIComponent(t[1]),c=t[2]==="sessions"&&t[3]?decodeURIComponent(t[3]):N;return t[2]==="c"&&t[3]?o({view:"agents-v2",agentId:r,conversationId:decodeURIComponent(t[3]),tab:i??"message",...E}):o({view:"agents-v2",agentId:r,...c?{sessionId:c}:{},...i?{tab:i}:{},...E})}if(t[0]==="agents")return o({view:"agents-v2",...S?{selectedAgentId:S}:{},...h?{projectSlug:h}:{},...E});if(t[0]==="agents.deprecated"&&t[1]&&t[2]==="sessions"&&t[3])return o({view:"sessions",agentId:decodeURIComponent(t[1]),sessionId:decodeURIComponent(t[3])});if(t[0]==="agents.deprecated"&&t[1]&&t[2]==="c"&&t[3])return o({view:"agents-v2",agentId:decodeURIComponent(t[1]),conversationId:decodeURIComponent(t[3]),tab:i??"message"});if(t[0]==="agents.deprecated"&&t[1]){const r=decodeURIComponent(t[1]);return o({view:"agents-v2",agentId:r,...i?{tab:i}:{},...!i&&l?{projectSlug:l}:{}})}if(t[0]==="agents.deprecated")return o({view:"agents-v2",...l?{projectSlug:l}:{}});if(t[0]==="fleet")return o({view:"inbox"});if(t[0]==="c"&&t[1])return o({view:"conversation",conversationId:decodeURIComponent(t[1])});if(t[0]==="flights"&&t[1]&&t[2]==="observe"){const r=n.searchParams.get("session")?.trim()||void 0,c=n.searchParams.get("compare")?.trim()||void 0;return o({view:"sessions",flightId:decodeURIComponent(t[1]),...r?{sessionId:r}:{},...c?{compareSessionId:c}:{}})}if(t[0]==="sessions"&&t[1])return o({view:"sessions",sessionId:decodeURIComponent(t[1]),...u?{agentId:u}:{}});if(t[0]==="conversations")return o({view:"messages"});if(t[0]==="messages"){const r={view:"messages",...t[1]?{conversationId:decodeURIComponent(t[1])}:{}};return o(r)}if(t[0]==="sessions")return o({view:"sessions",...u?{agentId:u}:{}});if(t[0]==="repos"){const r=n.searchParams.get("root")?.trim()||void 0;return o({view:"repos",...r?{root:r}:{}})}if(t[0]==="providers"||t[0]==="harnesses")return o({view:"harnesses"});if(t[0]==="repo-diff"){const r=n.searchParams.get("path")?.trim();if(r){const c=n.searchParams.getAll("layer").filter(w=>w==="unstaged"||w==="staged"||w==="branch"),f=n.searchParams.getAll("file").map(w=>w.trim()).filter(Boolean),m=n.searchParams.get("sessionId")?.trim()||void 0,v=n.searchParams.get("agentId")?.trim()||void 0,L=$t(n.searchParams.get("include"));return{view:"repo-diff",path:r,...c.length>0?{layers:c}:{},...f.length>0?{files:f}:{},...m?{sessionId:m}:{},...v?{agentId:v}:{},...L?{include:L}:{}}}}if(t[0]==="search"){const r=bt(t[1]),c=n.searchParams.get("hit")?.trim()||void 0;return{view:"search",...r&&r!=="knowledge"?{mode:r}:{},...c?{hitId:c}:{}}}if(t[0]==="channels"&&t[1])return o({view:"messages",conversationId:decodeURIComponent(t[1])});if(t[0]==="channels")return o({view:"messages"});if(t[0]==="mesh")return o({view:"mesh"});if(t[0]==="dispatch"||t[0]==="broker"){const r=n.searchParams.get("attempt")?.trim()||void 0,c=St(n.searchParams.get("filter"));return{view:"broker",...r?{attemptId:r}:{},...c&&c!=="all"?{filter:c}:{}}}if(t[0]==="code"){const r=n.searchParams.get("wt")?.trim()||void 0,c=n.searchParams.get("fromConversation")?.trim()||void 0,f=we(n.searchParams.get("line")),m=we(n.searchParams.get("endLine")),v=f&&m&&m>=f?m:void 0;if(t[1]){const $=decodeURIComponent(t[1]),y=t.length>2?t.slice(2).map(decodeURIComponent).join("/"):void 0;return{view:"code",project:$,...y?{path:y}:{},...r?{wt:r}:{},...f?{line:f}:{},...v?{endLine:v}:{},...c?{returnConversationId:c}:{}}}const L=n.searchParams.get("root")?.trim()||void 0,w=n.searchParams.get("file")?.trim()||void 0;return{view:"code",...L?{root:L}:{},...w?{file:w}:{},...r?{wt:r}:{},...f?{line:f}:{},...v?{endLine:v}:{},...c?{returnConversationId:c}:{}}}if(t[0]==="briefings"&&t[1])return{view:"briefings",briefingId:decodeURIComponent(t[1])};if(t[0]==="briefings")return{view:"briefings"};if(t[0]==="activity")return o({view:"activity"});if(t[0]==="voice")return{view:"voice"};if(t[0]==="work"&&t[1])return o({view:"work",workId:decodeURIComponent(t[1])});if(t[0]==="follow"){const r=Et(n.searchParams.get("view")),c={view:"follow",...r?{preferredView:r}:{}},f=t[1],m=t[2]?decodeURIComponent(t[2]):"";f==="flight"&&m&&(c.flightId=m),f==="invocation"&&m&&(c.invocationId=m),f==="conversation"&&m&&(c.conversationId=m),f==="work"&&m&&(c.workId=m),f==="session"&&m&&(c.sessionId=m),f==="agent"&&m&&(c.targetAgentId=m);const v=n.searchParams.get("flightId"),L=n.searchParams.get("invocationId"),w=n.searchParams.get("conversationId"),$=n.searchParams.get("workId"),y=n.searchParams.get("sessionId"),le=n.searchParams.get("targetAgentId");return v&&(c.flightId=v),L&&(c.invocationId=L),w&&(c.conversationId=w),$&&(c.workId=$),y&&(c.sessionId=y),le&&(c.targetAgentId=le),o(c)}if(t[0]==="settings"){if(t[1]==="agents")return{view:"settings",section:"agents",...t[2]?{agentId:decodeURIComponent(t[2])}:{}};const r=Lt(t[1]);return{view:"settings",...r?{section:r}:{}}}if(t[0]==="terminal"){const r=Pt(n.searchParams.get("mode")),c=n.searchParams.get("session")?.trim()||void 0,f=Sn(n.searchParams.get("surface"))??void 0;if(t[1]==="new"){const v=yt(n.searchParams.get("backend"))??"pty",L=Rt(n.searchParams.get("agent"))??"shell",w=n.searchParams.get("name")?.trim()||void 0,$=n.searchParams.get("tab")?.trim()||void 0,y=n.searchParams.get("socketDir")?.trim()||void 0;return{view:"terminal",terminalBackend:v,terminalAgent:L,...w?{terminalSessionName:w}:{},...$?{terminalTabId:$}:{},...y?{zellijSocketDir:y}:{}}}const m=t[1]==="s"&&t[2]?Pe(decodeURIComponent(t.slice(2).join("/")))?decodeURIComponent(t.slice(2).join("/")):null:bn(t[1]?decodeURIComponent(t[1]):void 0,t[2]?decodeURIComponent(t.slice(2).join("/")):void 0);return m?{view:"terminal",terminalSurfaceKey:m,...c?{terminalSessionId:c}:{},...r?{mode:r}:{}}:{view:"terminal",...t[1]?{agentId:decodeURIComponent(t[1])}:{},...r?{mode:r}:{},...!t[1]&&c?{terminalSessionId:c}:{},...!t[1]&&f?{terminalSurfaceKey:f}:{}}}if(t[0]==="ops"){const r=vt(t[1])??"mission";if(!an(r)&&!At(n))return o({view:"inbox"});const c=r==="tail"?n.searchParams.get("q")?.trim():"",f=r==="plan"?n.searchParams.get("plan")?.trim():"",m=n.searchParams.get("flightId")?.trim(),v=n.searchParams.get("invocationId")?.trim(),L=n.searchParams.get("conversationId")?.trim(),w=n.searchParams.get("workId")?.trim(),$=n.searchParams.get("sessionId")?.trim(),y=n.searchParams.get("targetAgentId")?.trim()??n.searchParams.get("agentId")?.trim();return{view:"ops",mode:r,...c?{tailQuery:c}:{},...f?{planDocumentId:f}:{},...m?{flightId:m}:{},...v?{invocationId:v}:{},...L?{conversationId:L}:{},...w?{workId:w}:{},...$?{sessionId:$}:{},...y?{targetAgentId:y}:{}}}return o({view:"inbox"})}function dn(e,n){const t=e.view==="sessions"&&e.flightId?null:sn(e,n);if(t)return t;switch(e.view){case"inbox":return j("/",e);case"conversation":{const s=new URLSearchParams;return C(s,e),`/c/${encodeURIComponent(e.conversationId)}${I(s)}`}case"agent-info":return`/agent/${encodeURIComponent(e.conversationId)}`;case"agents-v2":{const s=new URLSearchParams;e.harness&&s.set("harness",e.harness),e.node&&s.set("node",e.node),e.set&&s.set("set",e.set),!e.projectSlug&&e.indexView&&e.indexView!=="agents"&&s.set("view",e.indexView),e.stateFilter&&s.set("state",e.stateFilter),e.showEphemeral&&s.set("ephemeral","1"),e.selectedAgentId&&!e.agentId&&!e.sessionId&&s.set("select",e.selectedAgentId);const o=e.conversationId?"message":"profile";e.agentId&&e.tab&&e.tab!==o&&s.set("tab",e.tab),C(s,e);const a=e.projectSlug?`/projects/${encodeURIComponent(e.projectSlug)}`:null;return`${a?e.agentId?e.conversationId?`${a}/agents/${encodeURIComponent(e.agentId)}/c/${encodeURIComponent(e.conversationId)}`:e.sessionId?`${a}/agents/${encodeURIComponent(e.agentId)}/sessions/${encodeURIComponent(e.sessionId)}`:`${a}/agents/${encodeURIComponent(e.agentId)}`:e.sessionId?`${a}/sessions/${encodeURIComponent(e.sessionId)}`:e.indexView==="sessions"?`${a}/sessions`:e.indexView==="agents"?`${a}/agents`:a:e.agentId?e.conversationId?`/agents/${encodeURIComponent(e.agentId)}/c/${encodeURIComponent(e.conversationId)}`:e.sessionId?`/agents/${encodeURIComponent(e.agentId)}/sessions/${encodeURIComponent(e.sessionId)}`:`/agents/${encodeURIComponent(e.agentId)}`:e.sessionId?`/sessions/${encodeURIComponent(e.sessionId)}`:"/projects"}${I(s)}`}case"messages":{const s=new URLSearchParams;return C(s,e),`${e.conversationId?`/messages/${encodeURIComponent(e.conversationId)}`:"/messages"}${I(s)}`}case"sessions":{const s=new URLSearchParams;return e.agentId&&s.set("agentId",e.agentId),e.flightId?(e.sessionId&&s.set("session",e.sessionId),e.compareSessionId&&s.set("compare",e.compareSessionId),C(s,e),`/flights/${encodeURIComponent(e.flightId)}/observe${I(s)}`):(C(s,e),`${e.sessionId?`/sessions/${encodeURIComponent(e.sessionId)}`:"/sessions"}${I(s)}`)}case"repos":{const s=new URLSearchParams;return e.root&&s.set("root",e.root),C(s,e),`/repos${I(s)}`}case"harnesses":return j("/providers",e);case"repo-diff":{const s=new URLSearchParams;s.set("path",e.path);for(const o of e.layers??[])s.append("layer",o);for(const o of e.files??[])s.append("file",o);return e.sessionId&&s.set("sessionId",e.sessionId),e.agentId&&s.set("agentId",e.agentId),e.include&&s.set("include",e.include),`/repo-diff${I(s)}`}case"search":{const s=e.mode==="indexer"?"/search/indexer":"/search",o=new URLSearchParams;return e.hitId&&o.set("hit",e.hitId),`${s}${I(o)}`}case"mesh":return j("/mesh",e);case"broker":{const s=new URLSearchParams;return e.attemptId&&s.set("attempt",e.attemptId),e.filter&&e.filter!=="all"&&s.set("filter",e.filter),`/dispatch${I(s)}`}case"code":{const s=new URLSearchParams;if(e.wt&&s.set("wt",e.wt),e.line&&s.set("line",String(e.line)),e.line&&e.endLine&&e.endLine>=e.line&&s.set("endLine",String(e.endLine)),e.project){e.returnConversationId&&s.set("fromConversation",e.returnConversationId);const a=[encodeURIComponent(e.project)];return e.path&&a.push(...e.path.split("/").map(encodeURIComponent)),`${`/code/${a.join("/")}`}${I(s)}`}e.root&&s.set("root",e.root),e.file&&s.set("file",e.file),e.returnConversationId&&s.set("fromConversation",e.returnConversationId);const o=s.toString();return o?`/code?${o}`:"/code"}case"briefings":return e.briefingId?`/briefings/${encodeURIComponent(e.briefingId)}`:"/briefings";case"activity":return j("/activity",e);case"voice":return"/voice";case"work":return j(`/work/${encodeURIComponent(e.workId)}`,e);case"settings":return e.section==="agents"?e.agentId?`/settings/agents/${encodeURIComponent(e.agentId)}`:"/settings/agents":e.section?e.section==="pairing"?"/settings/pairing":e.section==="comms"?"/settings/comms":`/settings/${e.section}`:"/settings";case"ops":if(!e.mode)return"/ops";if(e.mode==="tail"||e.mode==="plan"){const s=new URLSearchParams;return e.mode==="tail"&&e.tailQuery&&s.set("q",e.tailQuery),e.mode==="plan"&&e.planDocumentId&&s.set("plan",e.planDocumentId),e.flightId&&s.set("flightId",e.flightId),e.invocationId&&s.set("invocationId",e.invocationId),e.conversationId&&s.set("conversationId",e.conversationId),e.workId&&s.set("workId",e.workId),e.sessionId&&s.set("sessionId",e.sessionId),e.targetAgentId&&s.set("targetAgentId",e.targetAgentId),`/ops/${Ie(e.mode)}${I(s)}`}return`/ops/${Ie(e.mode)}`;case"follow":{const s=new URLSearchParams;e.preferredView&&s.set("view",e.preferredView),e.flightId&&s.set("flightId",e.flightId),e.invocationId&&s.set("invocationId",e.invocationId),e.conversationId&&s.set("conversationId",e.conversationId),e.workId&&s.set("workId",e.workId),e.sessionId&&s.set("sessionId",e.sessionId),e.targetAgentId&&s.set("targetAgentId",e.targetAgentId),e.machineId&&s.set(ie,e.machineId);const o=s.toString();return`/follow${o?`?${o}`:""}`}case"terminal":if(e.agentId){const s=new URLSearchParams;return e.mode&&s.set("mode",e.mode),`/terminal/${encodeURIComponent(e.agentId)}${I(s)}`}{const s=new URLSearchParams;if(e.terminalBackend)return e.terminalBackend!=="pty"&&s.set("backend",e.terminalBackend),e.terminalAgent&&e.terminalAgent!=="shell"&&s.set("agent",e.terminalAgent),e.terminalSessionName&&s.set("name",e.terminalSessionName),e.terminalTabId&&s.set("tab",e.terminalTabId),e.zellijSocketDir&&s.set("socketDir",e.zellijSocketDir),`/terminal/new${I(s)}`;e.mode&&s.set("mode",e.mode);const o=Ln(e.terminalSurfaceKey);return o?`/terminal/${encodeURIComponent(o.backend)}/${encodeURIComponent(o.sessionName)}${I(s)}`:Pe(e.terminalSurfaceKey)?`/terminal/s/${encodeURIComponent(e.terminalSurfaceKey)}${I(s)}`:(e.terminalSessionId&&s.set("session",e.terminalSessionId),e.terminalSurfaceKey&&s.set("surface",e.terminalSurfaceKey),`/terminal${I(s)}`)}}}function x(e){const n=Tt(e);switch(e.view){case"conversation":return`conv:${e.conversationId}${n}`;case"agent-info":return`agent-info:${e.conversationId}`;case"settings":return`settings:${e.section??"pairing"}:${e.agentId??""}`;case"agents-v2":return["agents-v2",e.projectSlug??"",e.harness??"",e.node??"",e.set??"",e.indexView??"agents",e.stateFilter??"",e.showEphemeral?"eph":"",e.agentId??"",e.sessionId??"",n].join(":");case"sessions":return e.flightId?`flight-observe:${e.flightId}:${e.sessionId??""}:${e.compareSessionId??""}${n}`:e.sessionId?`session:${e.agentId??""}:${e.sessionId}${n}`:`sessions${n}`;case"messages":return e.conversationId?`messages:${e.conversationId}${n}`:`messages${n}`;case"work":return`work:${e.workId}${n}`;case"ops":return`ops:${e.mode??"plan"}:${e.tailQuery??""}:${e.planDocumentId??""}:${e.flightId??""}:${e.invocationId??""}:${e.workId??""}:${e.conversationId??""}:${e.sessionId??""}:${e.targetAgentId??""}`;case"search":return`search:${e.mode??"knowledge"}:${e.hitId??""}`;case"broker":return`broker:${e.attemptId??""}`;case"follow":return`follow:${e.flightId??e.invocationId??e.conversationId??e.workId??e.sessionId??e.targetAgentId??""}:${e.preferredView??""}${n}`;case"terminal":return`terminal:${e.agentId??""}:${e.terminalSessionId??""}:${e.terminalSurfaceKey??""}:${e.terminalBackend??""}:${e.terminalAgent??""}:${e.terminalSessionName??""}:${e.terminalTabId??""}:${e.mode??"detail"}`;case"repo-diff":return`repo-diff:${e.path}`;default:return`${e.view}${n}`}}function z(e,n){return ne(cn(`${e}${n}`))}function ln(e){return e?`#${e}`:""}function kt(e){return e.startsWith("/embed/")||e==="/ops/lanes/embed"}function Se(){if(typeof window>"u"){const e=new URL(on);return{pathname:e.pathname,searchStr:e.search,hash:e.hash.replace(/^#/,""),state:null}}return{pathname:window.location.pathname,searchStr:window.location.search,hash:window.location.hash.replace(/^#/,""),state:window.history.state}}function jt(e,n){return e.pathname===n.pathname&&e.searchStr===n.searchStr&&e.hash===n.hash&&Object.is(e.state,n.state)}function xt(e){let n=e.read();const t=new Set;let s=null;const o=()=>{const a=e.read();if(!jt(n,a)){n=a;for(const d of t)d()}};return{getSnapshot:()=>n,subscribe(a){return s||(s=e.observe(o)),t.add(a),()=>{t.delete(a)}},navigateTo(a,d={}){const i=d.state===void 0?n.state:d.state;d.replace?e.replace(a,i):e.push(a,i),o()}}}function Nt(){return typeof window>"u"?{read:Se,push:()=>{},replace:()=>{},observe:()=>()=>{}}:{read:Se,push:(e,n)=>window.history.pushState(n,"",e),replace:(e,n)=>window.history.replaceState(n,"",e),observe:e=>(window.addEventListener("popstate",e),window.addEventListener("hashchange",e),()=>{window.removeEventListener("popstate",e),window.removeEventListener("hashchange",e)})}}const T=xt(Nt());function Bt(){return b.useSyncExternalStore(T.subscribe,T.getSnapshot,T.getSnapshot)}function Z(e,n={}){T.navigateTo(e,n)}function bs(e){if(!e||typeof e!="object")return null;const n=e.returnTo;return!n||typeof n!="object"||typeof n.view!="string"?null:n}function Ls(e){return!e||typeof e!="object"?!1:e.returnUseHistory===!0}function be(e){if(!e||typeof e!="object")return e;const{returnTo:n,returnUseHistory:t,settingsEntry:s,...o}=e;return o}function zt(e,n){if(n.returnTo!==void 0){const t=n.state!==void 0?n.state:be(e),s=t&&typeof t=="object"?{...t}:{};return s.returnTo=n.returnTo,s.returnUseHistory=n.replace!==!0,s}return n.state!==void 0?n.state:n.replace?e:be(e)}function un(e){return e?e.replace(/^#/,""):""}function Mt(e,n,t={}){const s=z(e.pathname,e.searchStr),o=Ot(n,s),a=t.preserveSearch===!1?"":e.searchStr,d=tn(dn(o,e.pathname),a),i=un(t.hash);return{route:o,href:`${d}${i?`#${i}`:""}`}}function Gt(e,n){const t=new URLSearchParams(e.searchStr);for(const[a,d]of Object.entries(n.searchPatch??{}))d===null?t.delete(a):t.set(a,d);const s=t.toString(),o=n.hash===void 0?e.hash:un(n.hash);return`${e.pathname}${s?`?${s}`:""}${o?`#${o}`:""}`}function Es(e){const n=T.getSnapshot(),t=Gt(n,e),s=`${n.pathname}${n.searchStr}${ln(n.hash)}`;t!==s&&Z(t,{replace:e.replace??!0,state:e.state})}function Wt(e,n,t){if(kt(e))return null;const s=`${e}${n}`,o=cn(s),a=ne(o),d=tn(dn(a,e),n);return!(x(o)!==x(a)||a.view==="agents-v2"||s!==d)||s===d?null:`${d}${ln(t)}`}function Ps(){const{pathname:e,searchStr:n,hash:t}=Bt(),s=`${e}${n}`,o=b.useMemo(()=>z(e,n),[e,n]),a=b.useRef({}),d=b.useRef(s);b.useEffect(()=>{const l=Wt(e,n,t);l&&Z(l,{replace:!0})},[e,n,t]),b.useEffect(()=>{if(d.current===s)return;const l=z(e,n);requestAnimationFrame(()=>{window.scrollTo(0,a.current[x(l)]??0)}),d.current=s},[s,e,n]);const i=b.useCallback((l,u={})=>{const h=ne(l.view==="ops"&&!Me()&&!an(l.mode)?{view:"inbox"}:l),R=z(e,n),{route:_,href:g}=Mt({pathname:e,searchStr:n},h,u);a.current[x(R)]=window.scrollY;const A=T.getSnapshot().state,P=zt(A,u);Z(g,{replace:u.replace,state:P}),requestAnimationFrame(()=>{window.scrollTo(0,a.current[x(_)]??0)})},[e,n]);return{route:o,navigate:i}}export{ws as $,st as A,us as B,fs as C,ls as D,ms as E,Kt as F,is as G,cs as H,ss as I,We as J,Ge as K,ce as L,Ss as M,ps as N,gs as O,G as P,q as Q,qt as R,Nn as S,J as T,H as U,dt as V,pt as W,lt as X,tn as Y,gt as Z,kn as _,dn as a,sn as a0,_e as a1,vs as a2,Ps as a3,Yt as a4,je as a5,Jt as a6,te as a7,Wn as a8,Xt as a9,Ce as aa,Rn as ab,Dt as b,es as c,ns as d,Bt as e,bs as f,Ls as g,xn as h,Bn as i,zn as j,Zt as k,Es as l,hs as m,nn as n,en as o,Is as p,as as q,cn as r,ve as s,ts as t,Qt as u,rs as v,os as w,et as x,ds as y,ot as z};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r,j as t,u as Ce}from"./index-DMiGbrBt.js";import{g as ke,e as Ne,s as Me,a as de,f as Re}from"./scout-voice-CU5c0LGi.js";import{createLevelHistory as Ee,energyFromPartialDelta as me,tryStartMicLevelMeter as Le,VOICE_WAVE_BARS as he}from"./voice-levels-Dcr3jglk.js";import{L as Ve}from"./loader-circle-CbHjZsz1.js";import{c as ge}from"./createLucideIcon-OpA4Amw5.js";const Ae=[["path",{d:"M12 19v3",key:"npa21l"}],["path",{d:"M19 10v2a7 7 0 0 1-14 0v-2",key:"1vc78b"}],["rect",{x:"9",y:"2",width:"6",height:"13",rx:"3",key:"s6n7sd"}]],Be=ge("mic",Ae);const _e=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]],Pe=ge("square",_e);function Te(e,n=!1){return e.key==="Enter"&&!e.shiftKey&&(n||!!(e.metaKey||e.ctrlKey))&&!e.nativeEvent?.isComposing}function De(e){switch(e){case"starting":return"starting";case"recording":return"recording";case"processing":return"processing";default:return"idle"}}function qe(e,n,l){if(l)return l;switch(e){case"starting":return"Starting voice…";case"recording":return n.trim()?n.trim():null;case"processing":return"Transcribing…";default:return null}}function fe(e){return new Promise(n=>window.setTimeout(n,e))}function Fe({onAppend:e,onError:n,onStatus:l,disabled:L,className:m}){const h=r.useRef(ke()),u=r.useRef(null),g=r.useRef(Ee(he)),K=r.useRef(null),C=r.useRef(!1),S=r.useRef(""),T=r.useRef(0),b=r.useRef(0),[v,k]=r.useState("idle"),[G,_]=r.useState(""),[J,D]=r.useState("probing"),[se,q]=r.useState(null),[R,V]=r.useState(null),[P,W]=r.useState(null),[Q,y]=r.useState(0),N=r.useCallback(()=>{b.current&&(window.cancelAnimationFrame(b.current),b.current=0),K.current?.stop(),K.current=null,C.current=!1},[]),j=r.useCallback(s=>{W(s),n?.(s)},[n]),X=r.useCallback((s,i,o)=>{l?.({state:s,partial:i,message:qe(s,i,o),tone:o?"error":s==="recording"?"recording":s==="processing"?"processing":"neutral",levels:s==="idle"&&!o?[]:g.current.snapshot(),levelsLive:C.current})},[l]);r.useEffect(()=>{X(v,G,P)},[X,P,G,v,Q]);const A=r.useCallback(async(s=!1)=>{const i=h.current;D(x=>x==="launching"?x:"probing");const o=await i.probe(s?{force:!0}:void 0);return q(o),V(null),D("idle"),o},[]);r.useEffect(()=>{Ne();const s=h.current,i=Me(o=>{q(o.ok),V(null),D("idle")});return s.connectionState==="unknown"?A():(q(s.connectionState==="connected"),V(null),D("idle")),()=>{i(),N();const o=u.current;o&&(o.cancel().catch(()=>{}),u.current=null)}},[A,N]);const B=r.useCallback(s=>{g.current.push(s),y(i=>i+1)},[]),Z=r.useCallback(()=>{if(b.current)return;let s=performance.now();const i=o=>{if(o-s>=36){s=o;const x=o-(T.current||o),w=me(S.current,S.current,x);g.current.push(Math.max(.05,w)),y(c=>c+1)}b.current=window.requestAnimationFrame(i)};b.current=window.requestAnimationFrame(i)},[]),ee=r.useCallback(async()=>{const s=h.current;W(null),_(""),S.current="",T.current=performance.now(),g.current.clear(),y(c=>c+1),k("starting"),N();let i=await de({surface:"chat-composer",requestPermissions:!0});if(!i.ready&&i.issue?.code==="microphone_not_requested"&&(await fe(1800),i=await de({surface:"chat-composer"})),!(i.ready||i.issue?.code==="microphone_not_requested")){k("idle");const c=i.issue;c?(V(c),j(Re(c))):j("Scout voice is not ready."),A(!0);return}V(null),q(!0);let x=null,w=!1;try{if(x=await s.startLive({onState:p=>k(De(p)),onPartial:p=>{const U=S.current;if(S.current=p,T.current=performance.now(),_(p),!C.current){const ce=me(U,p,0);B(ce)}},onLevel:p=>{w=!0,C.current=!0,b.current&&(window.cancelAnimationFrame(b.current),b.current=0),B(p)}}),u.current=x,k("recording"),await fe(140),u.current&&!w&&!C.current){const p=await Le(U=>{w=!0,C.current=!0,b.current&&(window.cancelAnimationFrame(b.current),b.current=0),B(U)});p&&u.current?K.current=p:u.current&&!C.current&&(C.current=!1,Z())}const c=await x.result;u.current=null,N(),k("idle");const $=S.current.trim();_(""),S.current="",W(null),g.current.clear(),y(p=>p+1);const E=c.text?.trim()||$;E?e(E):j("No speech was detected. Check your microphone in Settings → Voice."),A(!0)}catch(c){u.current=null,N(),k("idle");const $=S.current.trim();_(""),S.current="",g.current.clear(),y(p=>p+1);const E=c instanceof Error?c.message:"Scout voice recording failed.";if($){e($),c instanceof Error&&c.name==="AbortError"||j(`Recording ended early, but Scout recovered the partial transcript. ${E}`);return}if(c instanceof Error&&c.name==="AbortError")return;j(E),A(!0)}},[e,A,B,j,Z,N]),te=r.useCallback(async()=>{const s=u.current;if(!s)return;k("processing"),N();const i=window.setInterval(()=>{g.current.decay(.82),y(o=>o+1)},50);window.setTimeout(()=>window.clearInterval(i),600);try{await s.stop()}catch(o){try{await s.cancel()}catch{}u.current=null,k("idle");const x=S.current.trim();_(""),S.current="",g.current.clear(),y(c=>c+1);const w=o instanceof Error?o.message:"Scout voice recording did not finish.";x?(e(x),j(`Recording ended early, but Scout recovered the partial transcript. ${w}`)):j(w)}},[e,j,N]),ne=r.useCallback(()=>{if(v==="recording"){te();return}v==="processing"||v==="starting"||ee()},[v,ee,te]),f=v==="recording",M=J==="launching"||v==="starting"||v==="processing",z=(h.current.canRequestMicrophone||R?.action==="request_microphone"||R?.action==="request_speech")&&!f&&!M,O=(h.current.isMicrophoneHardDenied||R?.action==="open_microphone_settings")&&!f&&!M,F=(se===!1||R!==null)&&!z&&!O&&!f&&!M,I=P||(R?R.title:O?"Microphone blocked. Open Privacy & Security → Microphone to change it.":z?"Allow microphone access":F?"Scout voice is not ready":J==="probing"?"Checking voice…":f?"Stop recording":v==="processing"?"Transcribing…":v==="starting"?"Starting voice…":"Start recording"),oe=P?"s-dictation-mic--error":f?"s-dictation-mic--recording":O?"s-dictation-mic--error":z?"s-dictation-mic--needs-permission":F?"s-dictation-mic--unavailable":M?"s-dictation-mic--busy":"",H=M?Ve:f?Pe:Be,d=f?12:14;return t.jsx("button",{type:"button",title:I,"aria-label":I,"aria-pressed":f,onClick:ne,disabled:L||v==="processing",className:["s-dictation-mic",oe,m].filter(Boolean).join(" "),children:t.jsx(H,{size:d,className:M?"s-dictation-mic-spin":f?"fill-current":""})})}function Ie({samples:e,active:n,processing:l=!1,className:L}){const m=$e(e,he,l?.06:.04),h=["s-msg-compose-wave",n?"s-msg-compose-wave--live":"",l?"s-msg-compose-wave--processing":"",L??""].filter(Boolean).join(" ");return t.jsx("div",{className:h,"aria-hidden":"true","data-wave-source":e&&e.length>0?"levels":"floor",children:m.map((u,g)=>t.jsx("span",{className:"s-msg-compose-wave-bar",style:{transform:`scaleY(${Math.max(.08,u)})`,opacity:l?.28+u*.35:n?.4+u*.55:.25}},g))})}function $e(e,n,l){if(!e||e.length===0)return Array.from({length:n},()=>l);if(e.length===n)return e.map(m=>Math.max(l,Math.min(1,m)));const L=new Array(n);for(let m=0;m<n;m+=1){const h=Math.min(e.length-1,Math.round(m/Math.max(1,n-1)*(e.length-1)));L[m]=Math.max(l,Math.min(1,e[h]??l))}return L}function Ke(){return t.jsxs("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[t.jsx("path",{d:"M12 19V5"}),t.jsx("path",{d:"m5 12 7-7 7 7"})]})}function We(){return t.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",children:t.jsx("rect",{x:"4",y:"4",width:"16",height:"16",rx:"2"})})}function ze(){return t.jsx("svg",{width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.8",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:t.jsx("path",{d:"M21.44 11.05 12.05 20.44a5.5 5.5 0 0 1-7.78-7.78l9.19-9.19a3.5 3.5 0 0 1 4.95 4.95l-9.2 9.19a1.5 1.5 0 0 1-2.12-2.12l8.49-8.48"})})}function pe(e,n){e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,n)}px`}function Oe(e){return e.tone==="error"?"Voice":e.state==="recording"?"Listening":e.state==="processing"?"Transcribing":e.state==="starting"?"Starting":"Voice"}function Xe({renderWhenEmbedded:e=!1,...n}){return Ce()&&!e?null:t.jsx(He,{...n})}function He({value:e,onChange:n,onSend:l,placeholder:L="Type a message…",disabled:m=!1,sending:h=!1,canSend:u,stopMode:g=!1,onStop:K,sendTitle:C="Send (Cmd+Enter)",sendAriaLabel:S="Send message (Cmd+Enter)",stopAriaLabel:T="Stop agent",showDictation:b=!0,onDictationStatusChange:v,showAttach:k=!1,onAttach:G,attachTitle:_="Add attachment",attachAriaLabel:J="Add attachment",onPaste:D,dropHandlers:se,dragActive:q=!1,secondaryAction:R,leadingTools:V,tools:P,footer:W,header:Q,above:y,aboveAttached:N=!1,input:j,overlay:X,status:A,textareaRef:B,onKeyDown:Z,sendOnEnter:ee=!1,onSelect:te,onBlur:ne,density:f="panel",as:M="form",className:z,rows:O=1,autoResize:F=!0,maxHeightPx:I=160,"aria-label":oe="Message"}){const H=r.useRef(null),[d,s]=r.useState(null),i=r.useCallback(a=>{H.current=a,B&&(B.current=a)},[B]);r.useEffect(()=>{if(!F)return;const a=H.current;a&&pe(a,I)},[e,F,I]);const o=(u??e.trim().length>0)&&!h&&!m,x=P??W,w=d?.state==="recording"||d?.state==="starting",c=d?.state==="processing",$=!!(d&&(d.tone==="error"||w||c||d.partial&&d.partial.trim())),E=r.useCallback(()=>{g||!(u??e.trim().length>0)||h||m||l()},[u,m,l,h,g,e]),p=a=>{a.preventDefault(),E()},U=a=>{if(Z?.(a)){a.preventDefault();return}if(Te(a,ee)){a.preventDefault(),E();return}},ce=a=>{const Y=a.target.value;n(Y,{caret:a.target.selectionStart??Y.length}),F&&pe(a.target,I)},ve=a=>{const Y=e.trim()?`${e.trimEnd()} ${a}`:a;n(Y,{caret:Y.length}),requestAnimationFrame(()=>H.current?.focus())},be=r.useCallback(a=>{s(a),v?.(a)},[v]),ie=["s-msg-compose",`s-msg-compose--${f}`,f==="thread"?"s-thread-compose":"",z??""].filter(Boolean).join(" "),xe=["s-msg-compose-shell",f==="thread"?"s-thread-compose-shell":""].filter(Boolean).join(" "),Se=["s-msg-compose-input",f==="thread"?"s-thread-compose-input":""].filter(Boolean).join(" "),ae=["s-msg-compose-send",f==="thread"?"s-thread-compose-send":"",g?"s-msg-compose-send--agent-stop s-thread-compose-send--stop":""].filter(Boolean).join(" "),we=["s-msg-compose-voice",d?.tone==="recording"||w?"s-msg-compose-voice--recording":"",d?.tone==="processing"||c?"s-msg-compose-voice--processing":"",d?.tone==="error"?"s-msg-compose-voice--error":""].filter(Boolean).join(" "),re=d?.tone==="error",ye=d?.partial?.trim()||null,le=re?d?.message:c?"Finalizing transcript…":ye,je=t.jsxs("div",{className:xe,"data-drag-active":q?"true":void 0,...se,children:[Q?t.jsx("div",{className:"s-msg-compose-header",children:Q}):null,t.jsxs("div",{className:"s-msg-compose-body",children:[j??t.jsx("textarea",{ref:i,className:Se,placeholder:L,value:e,disabled:m,rows:O,"aria-label":oe,onChange:ce,onKeyDown:U,onSelect:te,onBlur:ne,onPaste:D}),$?t.jsxs("div",{className:we,role:re?"alert":"status","aria-live":re?"assertive":"polite",children:[!re&&(w||c)?t.jsx(Ie,{samples:d?.levels,active:w,processing:c}):null,t.jsxs("div",{className:"s-msg-compose-voice-meta",children:[t.jsx("span",{className:"s-msg-compose-voice-label",children:d?Oe(d):"Voice"}),le?t.jsx("span",{className:"s-msg-compose-voice-text",children:le}):null]})]}):null]}),t.jsxs("div",{className:["s-msg-compose-toolbar",f==="thread"?"s-thread-compose-footer":""].filter(Boolean).join(" "),children:[t.jsxs("div",{className:"s-msg-compose-toolbar-start",children:[V,k?t.jsx("button",{type:"button",className:"s-msg-compose-icon-btn",title:_,"aria-label":J,disabled:m||h,onClick:G,children:t.jsx(ze,{})}):V?null:t.jsx("span",{className:"s-msg-compose-toolbar-spacer","aria-hidden":"true"})]}),t.jsxs("div",{className:"s-msg-compose-toolbar-end",children:[x?t.jsx("div",{className:"s-msg-compose-tools",children:x}):null,b?t.jsx(Fe,{onAppend:ve,onStatus:be,disabled:m||h}):null,R?t.jsx("div",{className:"s-msg-compose-secondary",children:R}):null,g?t.jsx("button",{type:"button",className:ae,onClick:K,title:T,"aria-label":T,children:t.jsx(We,{})}):t.jsx("button",{type:M==="form"?"submit":"button",className:ae,disabled:!o,title:C,"aria-label":S,"data-action":"send",onClick:M==="div"?()=>E():void 0,children:t.jsx(Ke,{})})]})]}),A]}),ue=t.jsxs("div",{className:"s-msg-compose-frame","data-above-attached":y&&N?"true":void 0,children:[X,y?t.jsx("div",{className:"s-msg-compose-above",children:y}):null,je]});return M==="div"?t.jsx("div",{className:ie,children:ue}):t.jsx("form",{className:ie,onSubmit:p,children:ue})}export{Fe as D,Xe as M,Pe as S,Be as a,Te as i};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.s-dictation-mic{width:34px;height:34px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;align-self:flex-end;cursor:pointer;transition:color .12s ease,border-color .12s ease,background .12s ease}.s-dictation-mic:not(:disabled):hover{color:var(--ink);border-color:color-mix(in srgb,var(--ink) 35%,var(--border))}.s-dictation-mic:disabled{opacity:.4;cursor:not-allowed}.s-dictation-mic--needs-permission{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 50%,var(--border))}.s-dictation-mic--needs-permission:not(:disabled):hover{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 70%,var(--border));background:color-mix(in srgb,var(--accent) 10%,transparent)}.s-dictation-mic--unavailable{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 45%,var(--border))}.s-dictation-mic--unavailable:not(:disabled):hover{color:var(--amber);border-color:color-mix(in srgb,var(--amber) 65%,var(--border));background:color-mix(in srgb,var(--amber) 8%,transparent)}.s-dictation-mic--error{color:var(--red, #ef4444);border-color:color-mix(in srgb,var(--red, #ef4444) 45%,var(--border))}.s-dictation-mic--recording{color:var(--green);border-color:color-mix(in srgb,var(--green) 55%,var(--border));background:color-mix(in srgb,var(--green) 10%,transparent)}.s-dictation-mic--recording:not(:disabled):hover{border-color:color-mix(in srgb,var(--green) 75%,var(--border))}.s-dictation-mic--busy{color:var(--muted)}.s-dictation-mic-spin{animation:s-dictation-mic-spin 1s linear infinite}@keyframes s-dictation-mic-spin{to{transform:rotate(360deg)}}.s-msg-compose{box-sizing:border-box;width:100%;min-width:0;flex-shrink:0}.s-msg-compose--panel{padding:0}.s-msg-compose--thread{padding:var(--space-md) var(--space-3xl) var(--space-2xl);border-top:1px solid color-mix(in srgb,var(--border) 40%,transparent);background:transparent;margin-top:auto}.s-msg-compose--compact{padding:var(--space-sm)}.s-msg-compose--bare{padding:0}.s-msg-compose-frame{position:relative;width:100%;min-width:0}.s-msg-compose-shell{position:relative;box-sizing:border-box;width:100%;max-width:100%;min-width:0;border:1px solid color-mix(in srgb,var(--border) 60%,var(--surface));border-radius:var(--radius-xl);background:var(--surface);transition:border-color .15s ease;overflow:hidden;display:flex;flex-direction:column}.s-msg-compose-shell:focus-within{border-color:color-mix(in srgb,var(--border) 100%,transparent)}.s-msg-compose-header{flex-shrink:0;padding:var(--space-sm) var(--space-md);border-bottom:1px solid color-mix(in srgb,var(--border) 40%,transparent);background:color-mix(in srgb,var(--bg) 40%,var(--surface));min-width:0}.s-msg-compose-body{flex:1;min-width:0;display:flex;flex-direction:column;padding:var(--space-sm) var(--space-md) var(--space-xs)}.s-msg-compose-body>*:first-child{min-width:0;width:100%}.s-msg-compose-input{display:block;width:100%;min-width:0;min-height:44px;max-height:160px;border:none;border-radius:0;background:transparent;padding:0;font-size:var(--text-lg);font-family:var(--font-sans);line-height:var(--leading-normal);color:var(--ink);resize:none;outline:none;cursor:text;user-select:text;-webkit-user-select:text}.s-msg-compose-input::placeholder{color:var(--dim)}.s-msg-compose-shell .s-msg-compose-input:focus,.s-msg-compose-shell .s-msg-compose-input:focus-visible{box-shadow:none}.s-msg-compose-input:disabled{opacity:.55;cursor:not-allowed}.s-msg-compose-suggest{position:absolute;left:0;right:0;bottom:calc(100% + 6px);max-height:260px;overflow-y:auto;padding:var(--space-2xs);background:var(--surface);border:1px solid color-mix(in srgb,var(--border) 80%,transparent);border-radius:var(--radius-xl);box-shadow:0 12px 32px color-mix(in srgb,var(--ink) 22%,transparent);z-index:20}.s-msg-compose-suggest[data-placement=inside]{top:40px;right:var(--space-sm);bottom:52px;left:var(--space-sm);max-height:none;border-radius:var(--radius-lg);box-shadow:0 14px 28px -18px color-mix(in srgb,var(--ink) 48%,transparent)}.s-msg-compose-suggest-label{padding:var(--space-xs) var(--space-md) var(--space-2xs);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-lg);text-transform:uppercase;color:var(--dim)}.s-msg-compose-suggest-item{display:flex;align-items:center;gap:var(--space-md);width:100%;padding:var(--space-xs) var(--space-md);border:none;border-radius:var(--radius-lg);background:transparent;color:var(--ink);text-align:left;cursor:pointer;font-family:inherit}.s-msg-compose-suggest-item:hover,.s-msg-compose-suggest-item--active{background:color-mix(in srgb,var(--accent) 8%,transparent)}.s-msg-compose-suggest-token{font-family:var(--font-mono);font-size:var(--text-md);color:var(--ink)}.s-msg-compose-suggest-desc{flex:1;min-width:0;font-size:var(--text-sm);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-msg-compose-suggest-avatar{flex-shrink:0}.s-msg-compose-voice{display:flex;flex-direction:column;gap:var(--space-2xs);margin-top:var(--space-sm);min-width:0;color:var(--dim)}.s-msg-compose-voice--recording{color:var(--green)}.s-msg-compose-voice--processing{color:var(--muted)}.s-msg-compose-voice--error{color:var(--red, #ef4444)}.s-msg-compose-voice-meta{display:flex;align-items:baseline;gap:var(--space-sm);min-width:0;font-size:var(--text-xs);line-height:var(--leading-snug)}.s-msg-compose-voice-label{flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:.08em;text-transform:uppercase}.s-msg-compose-voice-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-msg-compose-wave{display:flex;align-items:center;justify-content:space-between;gap:2px;width:100%;height:28px;padding:2px 0;pointer-events:none}.s-msg-compose-wave-bar{flex:1 1 0;min-width:1.5px;max-width:3px;height:100%;border-radius:999px;background:currentColor;opacity:.28;transform-origin:center;transform:scaleY(.12);transition:transform 40ms linear,opacity 80ms ease;will-change:transform}@media(prefers-reduced-motion:reduce){.s-msg-compose-wave-bar{transition:none}}.s-msg-compose-toolbar{flex-shrink:0;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:var(--space-sm);min-width:0;padding:var(--space-xs) var(--space-sm) var(--space-sm);border-top:1px solid color-mix(in srgb,var(--border) 40%,transparent);background:color-mix(in srgb,var(--bg) 28%,var(--surface))}.s-msg-compose-toolbar-start{grid-column:1;display:flex;align-items:center;gap:var(--space-xs);min-width:0}.s-msg-compose-toolbar-spacer{display:block;width:0;height:0}.s-msg-compose-toolbar-end{grid-column:3;justify-self:end;display:flex;align-items:center;justify-content:flex-end;flex-wrap:nowrap;gap:var(--space-xs);min-width:0;max-width:100%}.s-msg-compose-tools{display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-end;gap:var(--space-xs);min-width:0}.s-msg-compose-tools-hint{font-size:var(--text-xs);color:var(--dim);letter-spacing:.01em;white-space:nowrap}.s-msg-compose-tool{position:relative;display:inline-flex;align-items:center;gap:4px;max-width:min(200px,40vw);min-height:28px;padding:0 8px 0 10px;border-radius:var(--radius-pill);border:none;background:color-mix(in srgb,var(--ink) 7%,transparent);box-shadow:none;color:var(--ink);cursor:pointer;transition:background .12s ease,color .12s ease;-webkit-user-select:none;user-select:none}.s-msg-compose-tool:hover{background:color-mix(in srgb,var(--ink) 11%,transparent)}.s-msg-compose-tool:focus-within{background:color-mix(in srgb,var(--ink) 12%,transparent);outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--ink) 14%,transparent)}.s-msg-compose-tool--disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.s-msg-compose-tool-kicker{display:none}.s-msg-compose-tool-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;letter-spacing:.01em;color:var(--muted);line-height:1}.s-msg-compose-tool:hover .s-msg-compose-tool-value,.s-msg-compose-tool:focus-within .s-msg-compose-tool-value{color:var(--ink)}.s-msg-compose-tool-chevron{flex-shrink:0;color:var(--dim);opacity:.75;transition:color .12s ease,opacity .12s ease}.s-msg-compose-tool:hover .s-msg-compose-tool-chevron,.s-msg-compose-tool:focus-within .s-msg-compose-tool-chevron{color:var(--muted);opacity:1}.s-msg-compose-tool-native{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;opacity:0;cursor:inherit;border:none;background:transparent;font-size:var(--text-2xl);appearance:none}.s-msg-compose-tool--disabled .s-msg-compose-tool-native{cursor:not-allowed}.s-msg-compose-icon-btn{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:color .12s ease,border-color .12s ease,background .12s ease}.s-msg-compose-icon-btn:not(:disabled):hover{color:var(--ink);border-color:color-mix(in srgb,var(--ink) 35%,var(--border))}.s-msg-compose-icon-btn:disabled{opacity:.4;cursor:not-allowed}.s-msg-compose-send{width:32px;height:32px;border-radius:50%;border:none;background:var(--ink);color:var(--bg);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:opacity .12s ease,transform .12s ease}.s-msg-compose-send:not(:disabled):hover{transform:scale(1.05)}.s-msg-compose-send:disabled{opacity:.25;cursor:default}.s-msg-compose-send--agent-stop{background:var(--red, #ef4444)}.s-msg-compose-toolbar .s-dictation-mic{align-self:center;width:32px;height:32px}.s-msg-compose--compact .s-msg-compose-input{min-height:32px;font-size:var(--text-md)}.s-msg-compose--compact .s-msg-compose-body{padding:var(--space-xs) var(--space-sm)}.s-msg-compose--compact .s-msg-compose-send,.s-msg-compose--compact .s-msg-compose-icon-btn,.s-msg-compose--compact .s-msg-compose-toolbar .s-dictation-mic{width:28px;height:28px}.s-msg-compose--compact .s-msg-compose-toolbar{padding:var(--space-2xs) var(--space-xs) var(--space-xs)}.s-msg-compose-file-input{display:none}.s-msg-compose-attachments{display:flex;flex-wrap:wrap;gap:var(--space-2xs);padding-bottom:var(--space-2xs)}.s-msg-compose-attachment{position:relative;width:56px;height:56px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface-2)}.s-msg-compose-attachment img,.s-msg-compose-attachment video{width:100%;height:100%;object-fit:cover;display:block}.s-msg-compose-attachment-file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:100%;height:100%;padding:var(--space-2xs);color:var(--text-2)}.s-msg-compose-attachment-file span{font-size:var(--text-2xs);line-height:1.1;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-msg-compose-attachment-remove{position:absolute;top:2px;right:2px;width:16px;height:16px;display:grid;place-items:center;border:none;border-radius:50%;background:color-mix(in srgb,var(--surface-0) 78%,transparent);color:var(--text-1);font-size:var(--text-md);line-height:1;cursor:pointer}.s-msg-compose-attachment-remove:hover{background:var(--surface-0)}.s-msg-compose-attach-note{font-size:var(--text-xs);color:var(--text-3);padding-bottom:var(--space-2xs)}.s-msg-compose-attach-note[data-tone=error]{color:var(--danger-fg, var(--text-1))}.s-msg-compose[data-drag-active=true],.s-msg-compose-shell[data-drag-active=true]{outline:1px dashed var(--scout-accent);outline-offset:-2px}.s-msg-compose-secondary{display:flex;align-items:center}.s-msg-compose-steer{height:28px;padding:0 var(--space-xs);border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-2);font-size:var(--text-xs);font-weight:500;cursor:pointer;white-space:nowrap}.s-msg-compose-steer:hover:not(:disabled){color:var(--text-1);border-color:var(--scout-accent)}.s-msg-compose-steer:disabled{opacity:.5;cursor:default}.s-thread-compose-queue-note{font-size:var(--text-xs);color:var(--text-3);padding-top:var(--space-2xs)}.s-msg-compose-above{box-sizing:border-box;width:100%;min-width:0;margin-bottom:var(--space-2xs)}.s-msg-compose-frame[data-above-attached=true] .s-msg-compose-above{margin-bottom:0}.s-msg-compose-frame[data-above-attached=true] .s-msg-compose-shell{border-top-left-radius:0;border-top-right-radius:0}.s-msg-compose-queue{box-sizing:border-box;display:flex;flex-direction:column;gap:2px;width:100%;min-width:0;padding:var(--space-2xs) var(--space-sm) var(--space-xs);border:1px solid color-mix(in srgb,var(--border) 45%,transparent);border-radius:var(--radius-xl) var(--radius-xl) var(--radius-sm) var(--radius-sm);background:color-mix(in srgb,var(--surface) 55%,transparent)}.s-msg-compose-frame[data-above-attached=true] .s-msg-compose-queue{padding-bottom:var(--space-2xs);border-color:color-mix(in srgb,var(--border) 60%,var(--surface));border-bottom:none;border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:color-mix(in srgb,var(--bg) 40%,var(--surface))}.s-msg-compose-frame[data-above-attached=true]:focus-within .s-msg-compose-queue{border-color:color-mix(in srgb,var(--border) 100%,transparent)}.s-msg-compose-queue-head{display:flex;align-items:center;gap:var(--space-sm);min-width:0;padding-bottom:2px}.s-msg-compose-queue-kicker{flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}.s-msg-compose-queue-hint{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);color:var(--text-3)}.s-msg-compose-queue-head .s-msg-compose-steer{margin-left:auto;height:24px}.s-msg-compose-queue-row{display:flex;align-items:center;gap:var(--space-xs);min-width:0;min-height:24px;padding:2px var(--space-2xs) 2px 0;border-left:2px solid color-mix(in srgb,var(--scout-accent) 55%,transparent);padding-left:var(--space-xs);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:color-mix(in srgb,var(--ink) 4%,transparent)}.s-msg-compose-queue-index{flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--dim)}.s-msg-compose-queue-body{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-xs);color:var(--text-2)}.s-msg-compose-queue-clip{flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--dim)}.s-msg-compose-queue-edit,.s-msg-compose-queue-now,.s-msg-compose-queue-drop{flex-shrink:0;border:none;background:transparent;color:var(--text-3);font-size:var(--text-xs);line-height:1;cursor:pointer;opacity:0;transition:opacity .12s ease,color .12s ease}.s-msg-compose-queue-drop{width:16px;height:16px;display:grid;place-items:center;border-radius:50%}.s-msg-compose-queue-row:hover .s-msg-compose-queue-edit,.s-msg-compose-queue-row:hover .s-msg-compose-queue-now,.s-msg-compose-queue-row:hover .s-msg-compose-queue-drop,.s-msg-compose-queue-edit:focus-visible,.s-msg-compose-queue-now:focus-visible,.s-msg-compose-queue-drop:focus-visible{opacity:1}.s-msg-compose-queue-edit:hover,.s-msg-compose-queue-now:hover,.s-msg-compose-queue-drop:hover{color:var(--text-1)}.s-msg-compose-queue-edit:disabled,.s-msg-compose-queue-now:disabled,.s-msg-compose-queue-drop:disabled{opacity:.4;cursor:default}.s-msg-compose-queue-row[data-editing=true]{border-left-color:var(--scout-accent);background:color-mix(in srgb,var(--scout-accent) 10%,transparent)}.s-msg-compose-carried{font-size:var(--text-xs);color:var(--text-3);padding-bottom:var(--space-2xs)}.s-msg-compose-mode{flex-shrink:0;display:flex;align-items:center;margin-left:auto;padding:1px;border:1px solid color-mix(in srgb,var(--border) 60%,transparent);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--bg) 45%,transparent)}.s-msg-compose-mode-btn{height:20px;padding:0 var(--space-2xs);border:none;border-radius:calc(var(--radius-sm) - 1px);background:transparent;color:var(--text-3);font-size:var(--text-2xs);font-weight:500;letter-spacing:.02em;cursor:pointer;white-space:nowrap;transition:background .12s ease,color .12s ease}.s-msg-compose-mode-btn:hover:not(:disabled){color:var(--text-1)}.s-msg-compose-mode-btn[aria-pressed=true]{background:var(--surface);color:var(--text-1);box-shadow:0 1px 2px color-mix(in srgb,var(--ink) 12%,transparent)}.s-msg-compose-mode-btn[aria-pressed=true][data-mode=steer]{color:var(--scout-accent)}.s-msg-compose-mode-btn:disabled{opacity:.5;cursor:default}.s-rt-root,.s-rt-panel{--s-rt-accent: var(--hud-accent, oklch(.86 .17 125))}.s-rt-chip{position:relative;display:inline-flex;align-items:center;gap:5px;min-height:24px;max-width:min(280px,56vw);padding:0 6px 0 8px;border:none;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--ink) 7%,transparent);color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .12s ease,color .12s ease}.s-rt-chip:hover{background:color-mix(in srgb,var(--ink) 11%,transparent)}.s-rt-chip[aria-expanded=true]{background:color-mix(in srgb,var(--ink) 13%,transparent)}.s-rt-chip:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--s-rt-accent) 60%,transparent)}.s-rt-chip--disabled,.s-rt-chip:disabled{opacity:.45;cursor:not-allowed}.s-rt-chip-mark{flex-shrink:0;color:var(--muted);transition:color .12s ease}.s-rt-chip:hover .s-rt-chip-mark{color:var(--ink)}.s-rt-chip-type{display:inline-flex;align-items:baseline;gap:6px;min-width:0}.s-rt-chip-model{display:inline-block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;letter-spacing:.01em;color:var(--muted);line-height:1;transition:color .12s ease}.s-rt-chip:hover .s-rt-chip-model{color:var(--ink)}.s-rt-chip-model-text{display:inline-block;animation:s-rt-chip-swap .14s cubic-bezier(.16,.84,.44,1) both}@keyframes s-rt-chip-swap{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:translateY(0)}}.s-rt-chip-divider{align-self:center;flex-shrink:0;width:1px;height:10px;background:color-mix(in srgb,var(--ink) 22%,transparent)}.s-rt-chip-effort{flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:0;line-height:1;color:var(--muted)}.s-rt-chip-effort[data-effort=none],.s-rt-chip-effort[data-effort=minimal],.s-rt-chip-effort[data-effort=low]{color:var(--dim)}.s-rt-chip-effort[data-effort=medium]{color:var(--muted)}.s-rt-chip-effort[data-effort=high]{color:var(--ink)}.s-rt-chip-effort[data-effort=xhigh],.s-rt-chip-effort[data-effort=max],.s-rt-chip-effort[data-effort=ultra]{color:var(--s-rt-accent)}.s-rt-chip-chevron{flex-shrink:0;color:var(--dim);opacity:.75;transition:transform .18s cubic-bezier(.16,.84,.44,1),opacity .12s ease}.s-rt-chip:hover .s-rt-chip-chevron{opacity:1}.s-rt-chip[aria-expanded=true] .s-rt-chip-chevron{transform:rotate(180deg)}.s-rt-panel{position:fixed;z-index:60;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-md, 6px);background:var(--surface);box-shadow:0 18px 40px -12px #00000073;transform-origin:bottom right;animation:s-rt-in .17s cubic-bezier(.16,.84,.44,1) both}.s-rt-panel[data-placement=down]{transform-origin:top right}@keyframes s-rt-in{0%{opacity:0;transform:translateY(5px) scale(.985,.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes s-rt-row-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes s-rt-swap-in{0%{opacity:0;transform:translate(5px)}to{opacity:1;transform:translate(0)}}.s-rt-rail{display:flex;flex-direction:column}.s-rt-rail-main{display:flex}.s-rt-harnesses{position:relative;flex-shrink:0;padding:6px 8px 6px 6px;border-right:1px solid var(--border)}.s-rt-marker{position:absolute;left:0;top:6px;width:2px;border-radius:999px;background:var(--s-rt-accent);transition:transform .18s cubic-bezier(.16,.84,.44,1)}.s-rt-harness{display:flex;align-items:center;gap:8px;width:124px;padding:0 8px;border:none;border-radius:3px;background:transparent;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-md);font-weight:500;cursor:pointer;transition:color .12s ease,background .12s ease}.s-rt-harness:hover{color:var(--muted)}.s-rt-harness[data-on]{color:var(--ink)}.s-rt-harness[data-disabled]{opacity:.5;cursor:default}.s-rt-harness:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--s-rt-accent) 60%,transparent)}.s-rt-harness-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.s-rt-opt-mark{flex-shrink:0}.s-rt-models-col{display:flex;flex:1;min-width:0;flex-direction:column}.s-rt-models{display:flex;flex:1;min-width:0;flex-direction:column;gap:1px;padding:6px;max-height:264px;overflow-y:auto;animation:s-rt-swap-in .15s cubic-bezier(.16,.84,.44,1) both}.s-rt-row{display:flex;align-items:baseline;gap:8px;width:100%;padding:6px 8px;border:none;border-radius:3px;background:transparent;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-md);text-align:left;cursor:pointer;animation:s-rt-row-in .16s cubic-bezier(.16,.84,.44,1) both;transition:color .12s ease,background .12s ease}.s-rt-row:hover{color:var(--ink)}.s-rt-row[data-on]{color:var(--ink);background:color-mix(in srgb,var(--ink) 5%,transparent)}.s-rt-row[data-disabled]{opacity:.5;cursor:default}.s-rt-row:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--s-rt-accent) 60%,transparent)}.s-rt-dot{flex-shrink:0;align-self:center;width:6px;height:6px;border-radius:999px;background:transparent;transform:scale(.4);transition:transform .2s cubic-bezier(.34,1.56,.64,1),background-color .13s ease-out}.s-rt-row[data-on] .s-rt-dot{background:var(--s-rt-accent);transform:scale(1)}.s-rt-row-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.s-rt-note{flex-shrink:0;font-size:var(--text-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}.s-rt-search{display:flex;align-items:center;gap:6px;margin:6px 6px 0;padding:4px 8px;border:1px solid var(--border);border-radius:4px;color:var(--dim)}.s-rt-search-icon{flex-shrink:0}.s-rt-search-input{flex:1;min-width:0;border:none;background:transparent;color:var(--ink);font-family:var(--font-mono);font-size:var(--text-md);outline:none}.s-rt-search-input::placeholder{color:var(--dim)}.s-rt-search-clear{flex-shrink:0;border:none;border-radius:3px;background:transparent;padding:0 4px;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.12em;text-transform:uppercase;cursor:pointer}.s-rt-search-clear:hover{color:var(--ink)}.s-rt-search-clear:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--s-rt-accent) 60%,transparent)}.s-rt-status{display:flex;flex-direction:column;gap:4px;padding:6px}.s-rt-status--error{align-items:flex-start;gap:6px;padding:12px 10px}.s-rt-status-message{font-family:var(--font-mono);font-size:var(--text-md);color:var(--ink)}.s-rt-retry{border:none;border-radius:3px;background:transparent;padding:2px 6px;color:var(--s-rt-accent);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.12em;text-transform:uppercase;cursor:pointer}.s-rt-retry:hover{text-decoration:underline}.s-rt-retry:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--s-rt-accent) 60%,transparent)}.s-rt-empty{margin:0;padding:12px 10px;font-family:var(--font-mono);font-size:var(--text-md);color:var(--dim)}.s-rt-skel{display:block;height:26px;border-radius:3px;background:color-mix(in srgb,var(--ink) 6%,transparent);animation:s-rt-skel-pulse 1.2s ease-in-out infinite}@keyframes s-rt-skel-pulse{0%,to{opacity:.55}50%{opacity:1}}.s-rt-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.s-rt-effort-foot{padding:8px 12px 10px;border-top:1px solid var(--border)}.s-rt-effort-absent{margin:0;font-family:var(--font-mono);font-size:var(--text-2xs);line-height:1.5;color:var(--dim)}.s-rt-ladder{display:flex;gap:4px}.s-rt-step{flex:1;border:none;background:transparent;padding:0;cursor:pointer}.s-rt-step:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--s-rt-accent) 60%,transparent);border-radius:3px}.s-rt-step-bar{display:block;height:4px;width:100%;border-radius:999px;transition:background .14s ease-out}.s-rt-step-bar[data-state=filled]{background:color-mix(in srgb,var(--ink) 42%,transparent)}.s-rt-step-bar[data-state=empty]{background:color-mix(in srgb,var(--ink) 14%,transparent)}.s-rt-step:hover .s-rt-step-bar[data-state=empty]{background:color-mix(in srgb,var(--ink) 26%,transparent)}.s-rt-step-bar[data-state=current]{background:var(--s-rt-accent)}.s-rt-step-label{display:block;margin-top:6px;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:0;color:var(--dim)}.s-rt-step[aria-checked=true] .s-rt-step-label{color:var(--ink);font-weight:600}@media(prefers-reduced-motion:reduce){.s-rt-panel,.s-rt-models,.s-rt-row,.s-rt-chip-model-text{animation-duration:.01ms;animation-delay:0ms!important}.s-rt-chip-chevron,.s-rt-step-bar,.s-rt-marker,.s-rt-chip-model,.s-rt-dot,.s-rt-harness{transition-duration:.01ms}.s-rt-dot{transform:scale(1)}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[data-scope-presentation]{--scope-bg: #111316;--scope-panel: #15181b;--scope-line: rgba(255, 255, 255, .1);--scope-text: #ebe8e1;--scope-muted: #8d8980;--scope-accent: #5fd0c4;--scope-live: #7bd88f;--scope-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}[data-scope-presentation] .bg-background\/95{background:var(--scope-panel)!important;border-color:var(--scope-line)!important}[data-scope-presentation] .scout-nav-tab.active{color:var(--scope-accent)}[data-scope-presentation] .scout-nav-action--scout{appearance:none;border:1px solid rgba(95,208,196,.28);background:#5fd0c40f;color:var(--scope-accent);border-radius:6px;padding:4px 10px;font-family:var(--scope-mono);font-size:var(--text-sm)}[data-scope-presentation] .scout-nav-action--scout:hover{background:#5fd0c41f}[data-scope-presentation] .scout-surface-body{background:radial-gradient(1200px 600px at 10% -10%,rgba(95,208,196,.06),transparent 60%),var(--scope-bg);color:var(--scope-text)}[data-scope-presentation] .scout-nav-tabs--scope{gap:10px}[data-scope-presentation] .scout-nav-scope-tag{font-family:var(--scope-mono);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--scope-muted);padding-right:6px;border-right:1px solid var(--scope-line);margin-right:2px}[data-scope-presentation] .scout-nav-tab.active{border-bottom-color:var(--scope-accent)}.scope-lanes,.scope-dir{--scope-bg: #111316;--scope-panel: #15181b;--scope-line: rgba(255, 255, 255, .1);--scope-text: #ebe8e1;--scope-muted: #8d8980;--scope-accent: #5fd0c4;--scope-live: #7bd88f;--scope-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;display:flex;flex-direction:column;flex:1 1 auto;min-height:0;height:100%;background:radial-gradient(1200px 600px at 10% -10%,rgba(95,208,196,.06),transparent 60%),var(--scope-bg);color:var(--scope-text)}.scope-lanes-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid var(--scope-line);background:var(--scope-panel)}.scope-lanes-bar__summary{display:flex;align-items:baseline;gap:12px;font-family:var(--scope-mono);font-size:var(--text-sm);letter-spacing:.06em;color:var(--scope-muted)}.scope-lanes-bar__count{color:var(--scope-accent);text-transform:uppercase}.scope-lanes-bar__controls{display:flex;align-items:center;gap:12px}.scope-lanes-bar__layouts,.scope-lanes-bar__horizons,.scope-lane-width{display:flex;gap:4px}.scope-lane-width__btn,.scope-lanes-bar__layout,.scope-lanes-bar__horizon{appearance:none;border:1px solid transparent;background:transparent;color:var(--scope-muted);font-family:var(--scope-mono);font-size:var(--text-sm);padding:4px 8px;border-radius:4px;cursor:pointer}.scope-lanes-bar__layout.is-on,.scope-lanes-bar__horizon.is-on,.scope-lane-width__btn.is-on{border-color:#5fd0c459;color:var(--scope-accent);background:#5fd0c414}.scope-lanes-bar__layout:focus-visible,.scope-lanes-bar__horizon:focus-visible,.scope-lane-width__btn:focus-visible{outline:2px solid var(--scope-accent);outline-offset:2px}.scope-lane-width.is-compact{margin-top:4px}.scope-lane-width.is-compact .scope-lane-width__btn{padding:2px 5px;font-size:var(--text-2xs);letter-spacing:.04em;text-transform:uppercase}.scope-lane__meta .scope-lane-width{margin-top:6px}.scope-lanes__issues{padding:8px 16px;border-bottom:1px solid var(--scope-line)}.scope-lanes__issues-list{margin:0;padding:0;list-style:none;font-family:var(--scope-mono);font-size:var(--text-sm);color:var(--scope-muted)}.scope-lanes__empty,.scope-dir__empty{flex:1;display:grid;place-items:center;padding:48px 24px;font-family:var(--scope-mono);font-size:var(--text-md);color:var(--scope-muted)}.scope-lanes__canvas{flex:1;min-height:0;overflow:hidden}.scope-lanes__scroll{display:flex;gap:12px;height:100%;overflow-x:auto;padding:16px;scroll-snap-type:x proximity}.scope-lanes.is-dragging .scope-lanes__scroll:not(.is-grid){scroll-snap-type:none}.scope-lanes.is-dragging .scope-lanes__scroll:not(.is-grid) .scope-lane-space{scroll-snap-align:none}.scope-lanes__scroll.is-grid{--scope-grid-tracks: 4;display:grid;grid-template-columns:repeat(var(--scope-grid-tracks, 4),minmax(0,1fr));grid-auto-rows:minmax(220px,min(400px,42vh));align-content:start;gap:12px;overflow-x:hidden;overflow-y:auto;scroll-snap-type:none;position:relative;width:100%;min-height:0;box-sizing:border-box}.scope-lanes__scroll:not(.is-grid){position:relative}.scope-lane-space{display:flex;align-items:stretch;min-height:0;min-width:0;position:relative;overflow:hidden;isolation:isolate}.scope-lanes__scroll:not(.is-grid) .scope-lane-space{flex:0 0 auto;width:var(--scope-lane-width, 512px);height:100%;scroll-snap-align:start}.scope-lanes__scroll.is-grid .scope-lane-space{width:100%;max-width:100%;min-width:0;min-height:220px;max-height:min(400px,42vh);align-self:stretch}@media(max-width:640px){.scope-lanes__scroll.is-grid .scope-lane-space{grid-column:1 / -1}}.scope-lane-width.is-grid .scope-lane-width__btn{min-width:2.25rem}.scope-lane-space__lanes{flex:1 1 auto;min-width:0;min-height:0;display:flex;gap:4px;overflow:hidden}.scope-lane-space__lanes>.scope-lane{flex:1 1 0;min-width:0;min-height:0}.scope-lane-space[data-orient=row] .scope-lane-space__lanes{flex-direction:row}.scope-lane-space[data-orient=column] .scope-lane-space__lanes{flex-direction:column}.scope-lane-space[data-orient=column][data-split="2"] .scope-lane-space__lanes,.scope-lane-space[data-orient=column][data-split="3"] .scope-lane-space__lanes,.scope-lane-space[data-orient=column][data-split="4"] .scope-lane-space__lanes,.scope-lane-space[data-orient=column][data-split="5"] .scope-lane-space__lanes,.scope-lane-space[data-orient=column][data-split="6"] .scope-lane-space__lanes{min-height:calc(112px * var(--scope-lane-stack-max, 4))}.scope-lane-space[data-orient=column][data-split]:not([data-split="1"]) .scope-lane__trace{min-height:0;flex:1 1 0}.scope-lane{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;min-height:0;border:1px solid var(--scope-line);border-radius:8px;background:var(--scope-panel);outline:none;overflow:hidden;position:relative}.scope-lanes.is-grid .scope-lane.is-grid,.scope-lanes.is-grid .scope-lane{min-height:0;height:auto}.scope-lane.is-dragging{opacity:.58}.scope-lane.is-drop-target{outline:1px dashed rgba(95,208,196,.35);outline-offset:-1px}.scope-lane.is-cursor{border-color:#5fd0c473;box-shadow:0 0 0 1px #5fd0c433}.scope-lane__head{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-bottom:1px solid var(--scope-line);cursor:pointer}.scope-lane__head.is-compact{align-items:center;padding:5px 8px;gap:6px}.scope-lane__drag{flex-shrink:0;position:relative;z-index:2;width:22px;height:22px;margin-top:1px;border:1px solid rgba(95,208,196,.28);border-radius:4px;background:#5fd0c41a;color:var(--scope-accent);font-size:var(--text-sm);line-height:22px;text-align:center;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-user-drag:element;touch-action:none;transition:border-color .14s ease,color .14s ease,background .14s ease}.scope-lane__head.is-compact .scope-lane__drag{width:18px;height:18px;margin-top:0;font-size:var(--text-xs);line-height:18px}.scope-lane__drag:hover{border-color:#5fd0c473;color:var(--scope-text);background:#5fd0c429}.scope-lane__drag:focus-visible{outline:2px solid var(--scope-accent);outline-offset:1px}.scope-lane__drag:active,.scope-lane.is-dragging .scope-lane__drag{cursor:grabbing}.scope-lane-drop{position:absolute;top:0;left:0;z-index:5;pointer-events:none;border-radius:4px;box-sizing:border-box}.scope-lane-drop[hidden]{display:none}.scope-lane-drop.is-line{background:var(--scope-accent);box-shadow:0 0 10px #5fd0c473}.scope-lane-drop.is-band{background:#5fd0c41f;border:1px solid var(--scope-accent);border-radius:6px;box-shadow:inset 0 0 0 1px #5fd0c438}.scope-lane-drop.is-band.is-bottom-stack{border-radius:0 0 8px 8px;background:#5fd0c414;box-shadow:inset 0 0 0 1px #5fd0c42e}.scope-lane-drop.is-band[data-label="stack between"]{background:#5fd0c433;border-radius:4px;box-shadow:0 0 12px #5fd0c459}.scope-lane-drop.is-column{background:#5fd0c40f;border:1px dashed var(--scope-accent);border-radius:8px;box-shadow:inset 0 0 0 1px #5fd0c429,0 10px 28px -18px #5fd0c459}.scope-lane-drop[data-label]:after{content:attr(data-label);position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-family:var(--scope-mono);font-size:var(--text-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--scope-accent);white-space:nowrap;padding:2px 6px;border-radius:3px;background:#111316d1}.scope-lane__head:focus-visible{outline:2px solid var(--scope-accent);outline-offset:-2px}.scope-lane__live{width:6px;height:6px;margin-top:5px;border-radius:50%;background:transparent;flex-shrink:0}.scope-lane.is-live .scope-lane__live{background:var(--scope-live);box-shadow:0 0 8px #7bd88f80}.scope-lane__meta{display:flex;flex-direction:column;gap:2px;min-width:0;font-family:var(--scope-mono);font-size:var(--text-sm)}.scope-lane__source{color:var(--scope-accent);letter-spacing:.04em}.scope-lane__ref,.scope-lane__path,.scope-lane__status{color:var(--scope-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scope-lane.is-live .scope-lane__status{color:var(--scope-live)}.scope-lane__trace{flex:1;min-height:200px;overflow:hidden;display:flex;flex-direction:column}.scope-lane.is-stack-compact .scope-lane__trace{min-height:96px}.scope-lane.is-stack-compact .scope-lane__meta{font-size:var(--text-xs)}.scope-lane__empty{padding:24px 12px;font-family:var(--scope-mono);font-size:var(--text-sm);color:var(--scope-muted);text-align:center}.scope-lane__trace .s-observe--scope{--ink: var(--scope-text);--muted: color-mix(in srgb, var(--scope-text) 78%, var(--scope-muted));--dim: var(--scope-muted);--accent: var(--scope-accent);--bg: var(--scope-bg);--surface: var(--scope-panel);--red: #e07a7a;flex:1;min-height:0;height:100%;background:transparent;color:var(--scope-text)}.scope-lane__trace .s-observe--scope .s-observe-main{flex:1;min-height:0;padding:8px 10px 12px}.scope-lane__trace .s-observe--scope.s-observe--lane-gutter-label{--lane-time-col: 88px;--lane-spine-x: 90px}.scope-lane__trace .s-observe--scope.s-observe--lane{--lane-glyph-size: 15px;--lane-glyph-width: 20px;--lane-glyph-color: color-mix(in srgb, var(--scope-accent) 72%, var(--scope-text))}.scope-lane__trace .s-observe--scope .s-observe-tool--fam-file .s-observe-tool-path-base--file,.scope-lane__trace .s-observe--scope .s-observe-tool--fam-read .s-observe-tool-path-base--read{color:color-mix(in srgb,var(--scope-accent) 82%,var(--scope-text))}.scope-lane__trace .s-observe--scope .s-observe-tool-diff-add,.scope-lane__trace .s-observe--scope .s-observe-diff-line--add{color:color-mix(in srgb,var(--scope-live) 70%,var(--scope-text))}.scope-lane__trace .s-observe--scope .s-observe-row--selectable:hover .s-observe-tool,.scope-lane__trace .s-observe--scope .s-observe-row--selectable:focus-visible .s-observe-tool{border-left-color:color-mix(in srgb,var(--scope-accent) 28%,transparent);background:color-mix(in srgb,var(--scope-accent) 6%,var(--scope-panel))}.scope-lane__trace .s-observe--scope .s-observe-grok-permission{border-color:color-mix(in srgb,var(--scope-line) 85%,transparent);background:color-mix(in srgb,var(--scope-panel) 88%,transparent)}.scope-lane__trace .s-observe--scope .s-observe-grok-permission-decision.is-allow{color:color-mix(in srgb,var(--scope-accent) 78%,var(--scope-text))}.scope-lane__trace .s-observe--scope .s-observe-grok-permission-tool{color:var(--scope-text)}.scope-lane__trace .s-observe--scope .s-observe-grok-turn-num{color:color-mix(in srgb,var(--scope-accent) 55%,var(--scope-muted))}.scope-lane__trace .s-observe--scope .s-observe-live-sticky,.scope-lane__trace .s-observe--scope .s-observe-scrubber,.scope-lane__trace .s-observe--scope .s-observe-lane-trace-meta{display:none}.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-main{--lane-time-col: 72px;--lane-spine-x: 74px;padding:4px 6px 6px}.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-stream{padding:2px 4px 6px calc(var(--lane-time-col) + 8px)}.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-row{padding-bottom:0}.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-row-time{font-size:var(--text-2xs)}.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-tool-cmd,.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-message-text,.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-reasoning-text{font-size:var(--text-xs);line-height:1.35}.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-tool-glyph,.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-bash-prompt{font-size:var(--lane-glyph-size)}.scope-lane.is-stack-compact .scope-lane__trace .s-observe--lane .s-observe-tool-glyph{width:var(--lane-glyph-width);min-width:var(--lane-glyph-width)}.scope-lane-detail__trace .s-observe--scope{background:transparent;color:var(--scope-text)}.scope-lane-detail__trace .s-observe--scope .s-observe-live-sticky,.scope-lane-detail__trace .s-observe--scope .s-observe-scrubber{display:none}.scope-dir__bar{padding:12px 16px;border-bottom:1px solid var(--scope-line);background:var(--scope-panel)}.scope-dir__summary{display:flex;align-items:baseline;gap:12px;font-family:var(--scope-mono);font-size:var(--text-sm);letter-spacing:.06em;color:var(--scope-muted)}.scope-dir__count{color:var(--scope-accent);text-transform:uppercase}.scope-dir__live{color:var(--scope-live)}.scope-dir__body{flex:1;overflow:auto;padding:16px}.scope-dir__group+.scope-dir__group{margin-top:24px}.scope-dir__group-head{display:flex;align-items:baseline;gap:10px;margin-bottom:8px;font-family:var(--scope-mono);font-size:var(--text-sm)}.scope-dir__group-name{color:var(--scope-text);letter-spacing:.04em}.scope-dir__group-kind,.scope-dir__group-counts{color:var(--scope-muted)}.scope-dir__list{border:1px solid var(--scope-line);border-radius:6px;overflow:hidden}.scope-dir__row{display:grid;grid-template-columns:12px 72px 1fr auto auto;gap:10px;align-items:center;padding:8px 12px;font-family:var(--scope-mono);font-size:var(--text-sm);border-bottom:1px solid var(--scope-line);cursor:pointer}.scope-dir__row:last-child{border-bottom:none}.scope-dir__row:hover,.scope-dir__row:focus-visible{background:#5fd0c40f;outline:none}.scope-dir__row:focus-visible{box-shadow:inset 0 0 0 2px var(--scope-accent)}.scope-dir__dot{width:6px;height:6px;border-radius:50%;background:var(--scope-line)}.scope-dir__dot.is-live{background:var(--scope-live)}.scope-dir__ref{color:var(--scope-accent)}.scope-dir__path{color:var(--scope-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.scope-dir__events{color:var(--scope-muted);text-align:right}.scope-dir__unit{opacity:.6;margin-left:1px}.scope-dir__status{color:var(--scope-muted);white-space:nowrap}.scope-dir__row.is-live .scope-dir__status{color:var(--scope-live)}.scope-lane-trace-sheet{--slide-bg: var(--scope-panel, #15181b);color:var(--scope-text, #ebe8e1)}.scope-lane-trace-sheet__toolbar{display:flex;justify-content:flex-end;padding:8px 8px 0}.scope-lane-trace-sheet__close{appearance:none;border:none;background:transparent;color:var(--scope-muted, #8d8980);font-size:var(--text-4xl);line-height:1;padding:4px 8px;cursor:pointer;border-radius:4px}.scope-lane-trace-sheet__close:focus-visible{outline:2px solid var(--scope-accent, #5fd0c4);outline-offset:2px}.scope-lane-detail{display:flex;flex-direction:column;min-height:100%}.scope-lane-detail__head{display:flex;align-items:flex-start;gap:12px;padding:16px 16px 12px;border-bottom:1px solid var(--scope-line, rgba(255, 255, 255, .1))}.scope-lane-detail__copy{flex:1;min-width:0}.scope-lane-detail__kicker{display:block;font-family:var(--scope-mono, monospace);font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--scope-muted, #8d8980);margin-bottom:4px}.scope-lane-detail__title{margin:0;font-family:var(--scope-mono, monospace);font-size:var(--text-xl);font-weight:500;color:var(--scope-accent, #5fd0c4)}.scope-lane-detail__ref{color:var(--scope-muted, #8d8980)}.scope-lane-detail__sub{margin-top:4px;font-family:var(--scope-mono, monospace);font-size:var(--text-sm);color:var(--scope-muted, #8d8980)}.scope-lane-detail__meta{display:flex;flex-wrap:wrap;gap:12px 20px;margin:0;padding:10px 16px;border-bottom:1px solid var(--scope-line, rgba(255, 255, 255, .1));font-family:var(--scope-mono, monospace);font-size:var(--text-sm)}.scope-lane-detail__stat{display:flex;gap:6px}.scope-lane-detail__stat dt{margin:0;color:var(--scope-muted, #8d8980);text-transform:uppercase;letter-spacing:.06em}.scope-lane-detail__stat dd{margin:0;color:var(--scope-text, #ebe8e1)}.scope-lane-detail__trace{flex:1;min-height:0;overflow:auto}.scope-sessions-route{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;height:100%}.scope-sessions{--scope-bg: #111316;--scope-panel: #15181b;--scope-line: rgba(255, 255, 255, .1);--scope-text: #ebe8e1;--scope-muted: #8d8980;--scope-accent: #5fd0c4;--scope-live: #7bd88f;--scope-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;display:flex;flex-direction:column;flex:1 1 auto;min-height:0;height:100%;background:radial-gradient(1200px 600px at 10% -10%,rgba(95,208,196,.06),transparent 60%),var(--scope-bg);color:var(--scope-text)}.scope-sessions__bar{padding:12px 16px;border-bottom:1px solid var(--scope-line);background:var(--scope-panel)}.scope-sessions__summary{display:flex;align-items:baseline;gap:12px;font-family:var(--scope-mono);font-size:var(--text-sm);letter-spacing:.06em;color:var(--scope-muted)}.scope-sessions__count{color:var(--scope-accent);text-transform:uppercase}.scope-sessions__live{color:var(--scope-live)}.scope-sessions__warn{color:#e07a7a;text-transform:uppercase}.scope-sessions__body{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 16px 16px}.scope-sessions__atop{--bg: var(--scope-bg);--ink: var(--scope-text);--muted: var(--scope-muted);--dim: var(--scope-muted);--surface: var(--scope-panel);--border: var(--scope-line);--accent: var(--scope-accent);--green: var(--scope-live);--amber: #d4a574;--font-mono: var(--scope-mono);--font-sans: var(--scope-mono);flex:1;min-height:0;border:1px solid var(--scope-line);border-radius:8px;overflow:hidden;background:var(--scope-panel)}.scope-sessions__atop .s-atop-fbar{background:color-mix(in srgb,var(--scope-panel) 92%,var(--scope-bg));border-bottom-color:var(--scope-line)}.scope-sessions__atop .s-atop-search{background:#ffffff08;border-color:var(--scope-line)}.scope-sessions__atop .s-atop-search:focus-within{border-color:#5fd0c473;box-shadow:0 0 0 1px #5fd0c41f}.scope-sessions__atop .s-atop-search-prompt,.scope-sessions__atop .s-atop-pill--on .s-atop-pill-ct{color:var(--scope-accent)}.scope-sessions__atop .s-atop-pill{border-color:var(--scope-line);background:transparent;color:var(--scope-muted);border-radius:4px;font-size:var(--text-sm);letter-spacing:.04em}.scope-sessions__atop .s-atop-pill:hover{color:var(--scope-text);border-color:#5fd0c459}.scope-sessions__atop .s-atop-pill--on{background:#5fd0c414;border-color:#5fd0c459;color:var(--scope-accent)}.scope-sessions__atop .s-atop-pill:focus-visible,.scope-sessions__atop .s-atop-search-input:focus-visible{outline:2px solid var(--scope-accent);outline-offset:2px}.scope-sessions__atop .dt-wrap{border:0;border-radius:0;background:transparent;box-shadow:none}.scope-sessions__atop .dt-table thead th{background:color-mix(in srgb,var(--scope-panel) 88%,var(--scope-bg));border-bottom-color:var(--scope-line);color:var(--scope-muted);font-size:var(--text-xs);letter-spacing:.08em}.scope-sessions__atop .dt-table tbody td{border-bottom-color:var(--scope-line);color:var(--scope-muted)}.scope-sessions__atop .dt-row--interactive:hover td,.scope-sessions__atop .dt-row--interactive:focus-visible td{background:#5fd0c40f;color:var(--scope-text)}.scope-sessions__atop .s-atop-row--selected td,.scope-sessions__atop .dt-row--active td{background:#5fd0c41a;color:var(--scope-text)}.scope-sessions__atop .s-atop-agent-id,.scope-sessions__atop .s-atop-col-project{color:var(--scope-text)}.scope-sessions__atop .s-atop-chip--harness{color:var(--scope-accent);border-color:#5fd0c447;background:#5fd0c40f}.scope-sessions__atop .s-atop-status--run{color:var(--scope-live)}.scope-sessions__atop .s-atop-status--run .s-atop-status-dot{background:var(--scope-live);box-shadow:0 0 8px #7bd88f73}.scope-sessions__atop .s-atop-status--idle{color:var(--scope-muted)}.scope-sessions__atop .s-atop-keys{background:color-mix(in srgb,var(--scope-panel) 92%,var(--scope-bg));border-top-color:var(--scope-line);color:var(--scope-muted);font-size:var(--text-sm)}.scope-sessions__atop .s-atop-keys-count strong,.scope-sessions__atop .s-atop-keys kbd{color:var(--scope-text);border-color:var(--scope-line);background:#ffffff0a}.scope-sessions__atop .dt-empty-title{color:var(--scope-muted);font-family:var(--scope-mono)}.scope-sessions__atop .dt-empty{color:var(--scope-muted);font-family:var(--scope-mono);font-size:var(--text-md)}.scope-tail-route{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;height:100%}.scope-tail{--scope-bg: #111316;--scope-panel: #15181b;--scope-line: rgba(255, 255, 255, .1);--scope-text: #ebe8e1;--scope-muted: #8d8980;--scope-accent: #5fd0c4;--scope-live: #7bd88f;--scope-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;display:flex;flex-direction:column;flex:1 1 auto;min-height:0;height:100%;background:radial-gradient(1200px 600px at 10% -10%,rgba(95,208,196,.06),transparent 60%),var(--scope-bg);color:var(--scope-text)}.scope-tail__bar{padding:12px 16px;border-bottom:1px solid var(--scope-line);background:var(--scope-panel)}.scope-tail__summary{display:flex;align-items:baseline;gap:12px;font-family:var(--scope-mono);font-size:var(--text-sm);letter-spacing:.06em;color:var(--scope-muted)}.scope-tail__count{color:var(--scope-accent);text-transform:uppercase}.scope-tail__hint{color:var(--scope-muted)}.scope-tail__query{color:var(--scope-text);opacity:.85}.scope-tail__body{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 16px 16px}.scope-tail__stream{--bg: var(--scope-bg);--ink: var(--scope-text);--muted: var(--scope-muted);--dim: var(--scope-muted);--surface: var(--scope-panel);--border: var(--scope-line);--accent: var(--scope-accent);--green: var(--scope-live);--amber: #d4a574;--red: #e07a7a;--info: color-mix(in srgb, #7eb8da 75%, var(--scope-text));--cat-gold: #d4a574;--cat-sky: var(--scope-accent);--cat-purple: #b8a0d4;--font-mono: var(--scope-mono);--font-sans: var(--scope-mono);flex:1;min-height:0;border:1px solid var(--scope-line);border-radius:8px;overflow:hidden;background:var(--scope-panel)}.scope-tail__stream .s-tail-status{background:color-mix(in srgb,var(--scope-panel) 92%,var(--scope-bg));border-bottom-color:var(--scope-line);font-size:var(--text-sm)}.scope-tail__stream .s-tail-status-state{color:var(--scope-accent)}.scope-tail__stream .s-tail-status-state--paused{color:var(--scope-muted)}.scope-tail__stream .s-tail-live-dot{background:var(--scope-accent);box-shadow:0 0 8px #5fd0c473}.scope-tail__stream .s-tail-live-dot--paused{background:var(--scope-muted);box-shadow:none}.scope-tail__stream .s-tail-status-cluster--display,.scope-tail__stream .s-tail-status-cluster--issues{border-left-color:var(--scope-line)}.scope-tail__stream .s-tail-issue-filter-btn{border-radius:4px;padding:2px 6px}.scope-tail__stream .s-tail-issue-filter-btn:hover{color:var(--scope-text)}.scope-tail__stream .s-tail-issue-filter-btn--active{color:var(--scope-accent);text-decoration:none;background:#5fd0c414;border:1px solid rgba(95,208,196,.28)}.scope-tail__stream .s-tail-issue-filter-btn:focus-visible{outline:2px solid var(--scope-accent);outline-offset:2px}.scope-tail__stream .s-tail-filter{background:#ffffff08;border-bottom-color:var(--scope-line)}.scope-tail__stream .s-tail-filter-prompt{color:var(--scope-accent)}.scope-tail__stream .s-tail-filter-input{color:var(--scope-text)}.scope-tail__stream .s-tail-filter-input::placeholder{color:var(--scope-muted)}.scope-tail__stream .s-tail-body{background:var(--scope-bg)}.scope-tail__stream .s-tail-row:nth-child(2n){background:#ffffff05}.scope-tail__stream .s-tail-row:hover,.scope-tail__stream .s-tail-row:focus-visible{background:#5fd0c40f;color:var(--scope-text)}.scope-tail__stream .s-tail-row.s-tail-row--selected,.scope-tail__stream .s-tail-row.s-tail-row--selected:hover{background:#5fd0c41a;color:var(--scope-text)}.scope-tail__stream .s-tail-summary{color:var(--scope-text)}.scope-tail__stream .s-tail-token--harness{color:var(--scope-accent)}.scope-tail__stream .s-tail-link--active:hover,.scope-tail__stream .s-tail-link--active:focus-visible{color:var(--scope-accent)}.scope-tail__stream .s-tail-glyph--assistant{color:var(--scope-accent)}.scope-tail__stream .s-tail-glyph--tool-result{color:var(--scope-live)}.scope-tail__stream .s-tail-divider{border-color:var(--scope-line);background:#5fd0c40a;color:var(--scope-muted);font-size:var(--text-sm)}.scope-tail__stream .s-tail-divider:hover,.scope-tail__stream .s-tail-divider:focus-visible{background:#5fd0c414;color:var(--scope-accent)}.scope-tail__stream .s-tail-empty{color:var(--scope-muted);font-family:var(--scope-mono);font-size:var(--text-md)}.scope-tail__stream .s-tail-empty-title{color:var(--scope-text)}.scope-tail__stream .s-tail-keys{background:color-mix(in srgb,var(--scope-panel) 92%,var(--scope-bg));border-top:1px solid var(--scope-line);color:var(--scope-muted);font-size:var(--text-sm)}.scope-tail__stream .s-tail-keys kbd{color:var(--scope-text);border-color:var(--scope-line);background:#ffffff0a}.scope-tail__stream .s-tail-body>.s-tail-row:last-child{animation-name:s-tail-row-in,s-tail-row-settle-scope}@keyframes s-tail-row-settle-scope{0%{background-color:#5fd0c41f}to{background-color:transparent}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{k as a,s as m,l as n,m as r,r as l}from"./index-DMiGbrBt.js";import{m as p,n as i,o as c,e as E,p as S}from"./router-Bq5dwf78.js";const _={path:m(n.lanes),bundle:`?ffBundle=${a}`,deploy:`OPENSCOUT_WEB_FLAG_BUNDLE=${a}`},o=[{key:"lanes",label:"Agent Lanes",segment:n.lanes},{key:"sessions",label:"Sessions",segment:n.sessions},{key:"tail",label:"Live Activity",segment:n.tail},{key:"agents",label:"Agents",segment:n.agents}],b=o.map(e=>({key:e.key,label:e.label,route:p(e.segment)}));function A(e){const t=i(e);return o.find(s=>s.segment===t)?.key??"lanes"}function d(e){const t=i(e);return o.find(s=>s.segment===t)?.label??r}function u(){const{pathname:e}=E();return c(e)}function P(){return S(u())}function L(e){const t=u();return l.useEffect(()=>(t?document.documentElement.setAttribute("data-scope-presentation",""):document.documentElement.removeAttribute("data-scope-presentation"),()=>document.documentElement.removeAttribute("data-scope-presentation")),[t]),{active:t,brandLabel:t?d(e.route):r}}function O(){return c(typeof window<"u"?window.location.pathname:"")}export{b as S,u as a,_ as b,d as c,L as d,O as i,A as s,P as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{_ as x}from"./index-DMiGbrBt.js";import{b as k,p as D,V as A,D as q}from"./fx-z37u1o2z.js";function le(t){return t?t.hint?`${t.message} ${t.hint}`:t.message:"Scout voice is unavailable."}async function pe(t={}){const e=await fetch("/api/voice/engage",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(e.status===404)return j(t);if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}return await e.json()}async function j(t={}){const e=await ce(),n=e.settings,i=e.devices,r=i.length>0||(n.permissions?.length??0)>0,o=n.permissions?.find(f=>f.kind==="microphone")??null,a=n.permissions?.find(f=>f.kind==="speechRecognition")??null,u=U(n,i);if(t.requestPermissions&&(o&&!o.granted&&o.status!=="restricted"?await C("microphone").catch(()=>{}):(o?.granted??!1)&&a&&!a.granted&&a.status!=="restricted"&&await C("speechRecognition").catch(()=>{})),!r)return{ready:!1,issue:{code:"host_offline",title:"Scout Menu is not running",message:"Launch Scout Menu on this Mac to dictate in web chat.",hint:"Restart the web server if you just updated Scout — `scout server restart` or restart `bun run server/index.ts`.",action:"launch_host"},warnings:[],settings:n,devices:i,inputDevice:null,hostOnline:!1};const h=$(o);if(h)return{ready:!1,issue:h,warnings:[],settings:n,devices:i,inputDevice:u,hostOnline:r};if(!u)return{ready:!1,issue:{code:"no_input_device",title:"No microphone detected",message:"Scout Menu did not report any audio input devices.",hint:"Plug in a microphone, check Sound settings, then refresh Settings → Voice.",action:"open_voice_settings"},warnings:[],settings:n,devices:i,inputDevice:null,hostOnline:r};const d=F(a);return{ready:!0,issue:null,warnings:d?[d]:[],settings:n,devices:i,inputDevice:u,hostOnline:r}}function U(t,e){if(e.length===0)return null;const n=t.inputDeviceId?e.find(o=>o.id===t.inputDeviceId):null,i=e.find(o=>o.isDefault)??e[0]??null,r=n??i;return r?{id:r.id,name:r.name}:null}function $(t){return!t||t.granted?null:t.canRequest?{code:"microphone_not_requested",title:"Microphone access needed",message:"Scout Menu needs microphone access before dictation can start.",hint:"Request access or tap the mic again to show the macOS prompt.",action:"request_microphone"}:{code:"microphone_denied",title:"Microphone blocked",message:"Scout Menu cannot record because microphone access is off.",hint:"Scout is opening macOS Microphone settings and will detect the change automatically.",action:"open_microphone_settings"}}function F(t){return!t||t.granted?null:t.canRequest?{code:"speech_not_requested",title:"Speech recognition needed",message:"Scout Menu needs speech recognition for live partials.",hint:"Request access to show the macOS prompt.",action:"request_speech"}:{code:"speech_denied",title:"Speech recognition blocked",message:"Speech recognition is off for Scout Menu.",hint:"Choose Retry access to reopen macOS Speech Recognition settings.",action:"open_speech_settings"}}function N(t,e){switch(e){case"microphone_permission":return"Microphone access is off for Scout Menu. Tap the mic to retry; Scout will open macOS Microphone settings.";case"empty_transcript":return"No speech was detected. Check your microphone input in Settings → Voice.";default:return t}}const H=6e4,G=3e3,J=2e4,z=8e3,B=45e3;let M=null,E=null,l=null,_=!1;const R=new Set;function W(){return typeof window>"u"?!1:typeof fetch=="function"}function X(){return M||(M=new K),M}function he(t){return R.add(t),l&&t(l),()=>{R.delete(t)}}function fe(){if(_||!W())return;_=!0;const t=X();t.probe();const e=()=>{t.probeIfStale()};window.addEventListener("focus",e),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&e()})}function I(t){for(const e of R)e(t)}function O(t,e=Date.now()){const n=t.ok?J:z;return e-t.probedAt<n}class K{state="unknown";unavailableReason=null;captureMode=null;hostReachable=!1;microphoneGranted=null;microphoneCanRequest=null;get connectionState(){return this.state}get lastUnavailableReason(){return this.unavailableReason}get preferredCaptureMode(){return this.captureMode}get isVoiceHostReachable(){return this.hostReachable}get isMicrophoneGranted(){return this.microphoneGranted}get canRequestMicrophone(){return this.hostReachable&&this.microphoneGranted===!1&&this.microphoneCanRequest===!0}get isMicrophoneHardDenied(){return this.hostReachable&&this.microphoneGranted===!1&&this.microphoneCanRequest===!1}get isMicrophoneDenied(){return this.isMicrophoneHardDenied}async probeIfStale(){const e=Date.now();return l&&O(l,e)?(this.applyProbeSnapshot(l),l.ok):l&&l.ok&&e-l.probedAt<B?(this.applyProbeSnapshot(l),!0):l&&!l.ok?this.probe({force:!0}):this.probe()}async probe(e={}){const n=typeof e=="number"?{timeoutMs:e}:e,i=n.force??!1,r=n.timeoutMs??G,o=Date.now();return!i&&l&&O(l,o)?(this.applyProbeSnapshot(l),l.ok):E||(this.state="probing",E=this.fetchProbe(r).finally(()=>{E=null}),E)}async fetchProbe(e){const n=new AbortController,i=window.setTimeout(()=>n.abort(),e);try{const r=await fetch("/api/voice/health?quiet=1",{signal:n.signal}),o=await r.json().catch(()=>({})),a=!!o.host?.hostId,u=typeof o.microphoneGranted=="boolean"?o.microphoneGranted:null,h=typeof o.microphoneCanRequest=="boolean"?o.microphoneCanRequest:null,d=o.capture==="browser"?"browser":"native",f=r.ok&&o.ok===!0,v=f?null:o.detail??o.error??(a?"Scout voice is not ready.":"Scout voice service is unavailable."),w={ok:f,reason:v,captureMode:f?d:null,hostReachable:a,microphoneGranted:u,microphoneCanRequest:h,probedAt:Date.now()};return l=w,this.applyProbeSnapshot(w),I(w),f}catch(r){const a={ok:!1,reason:r instanceof Error&&r.name==="AbortError"?"Scout voice service did not respond.":"Scout voice service is unavailable.",captureMode:null,hostReachable:!1,microphoneGranted:null,microphoneCanRequest:null,probedAt:Date.now()};return l=a,this.applyProbeSnapshot(a),I(a),!1}finally{window.clearTimeout(i)}}applyProbeSnapshot(e){if(this.hostReachable=e.hostReachable,this.microphoneGranted=e.microphoneGranted,this.microphoneCanRequest=e.microphoneCanRequest,e.ok){this.unavailableReason=null,this.captureMode=e.captureMode,this.state="connected";return}this.unavailableReason=e.reason,this.captureMode=null,this.state="unavailable"}async launch(e={}){try{const i=await(await fetch("/api/scout-services/restart-link",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({target:"all"})})).json().catch(()=>({}));if(i.url?.startsWith("scout://services/restart/")){window.location.href=i.url;return}}catch{}window.location.href="scout://hud/show"}async startLive(e={},n={}){return this.captureMode!=="browser"?await Q(e,n):await Y(e)}}async function Q(t={},e={}){t.onState?.("starting");const n=await fetch("/api/voice/session",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({clientId:"openscout-web",surface:e.surface?.trim()||"chat-composer"})});if(!n.ok){const s=await n.text().catch(()=>"");throw new Error(g(s,n.status))}const r=(await n.json()).sessionId?.trim();if(!r)throw new Error("Scout voice did not return a session id.");let o=!1,a,u;const h=new Promise((s,p)=>{a=s,u=p});let d=null;const f=()=>{d&&window.clearTimeout(d),d=window.setTimeout(()=>{w(new Error("Scout voice transcription timed out. Try again or check voice settings."))},H)},v=()=>{d&&(window.clearTimeout(d),d=null)},w=(s,p="error")=>{o||(o=!0,v(),m.close(),t.onState?.(p),u(s))},y=s=>{o||(o=!0,v(),m.close(),t.onFinal?.(s),t.onState?.("done"),a(s))},m=new EventSource(`/api/voice/session/${encodeURIComponent(r)}/events`),c=s=>p=>{if(o)return;let S={};try{S=JSON.parse(p.data)}catch{return}if(s==="session.partial"){const b=typeof S.text=="string"?S.text:"";t.onPartial?.(b);return}if(s==="session.state"){const b=Z(S.state);b&&(t.onState?.(b),b==="processing"&&f());return}if(s==="session.final"){y({sessionId:r,text:typeof S.text=="string"?S.text.trim():"",durationMs:Number(S.durationMs??0)});return}if(s==="session.cancelled"){w(T(),"cancelled");return}if(s==="session.error"){const b=typeof S.message=="string"?S.message:"Scout voice session failed.",L=typeof S.code=="string"?S.code:null;w(new Error(N(b,L)))}};return m.addEventListener("session.started",()=>{t.onState?.("starting")}),m.addEventListener("session.state",c("session.state")),m.addEventListener("session.partial",c("session.partial")),m.addEventListener("session.final",c("session.final")),m.addEventListener("session.cancelled",c("session.cancelled")),m.addEventListener("session.error",c("session.error")),m.onerror=()=>{o||w(new Error("Scout voice event stream disconnected."))},{get sessionId(){return r},result:h,stop:async()=>{t.onState?.("processing"),f();const s=await fetch(`/api/voice/session/${encodeURIComponent(r)}/stop`,{method:"POST"});if(!s.ok){const p=await s.text().catch(()=>"");throw new Error(g(p,s.status))}},cancel:async()=>{o=!0,v(),m.close();const s=await fetch(`/api/voice/session/${encodeURIComponent(r)}/cancel`,{method:"POST"});if(!s.ok){const p=await s.text().catch(()=>"");throw new Error(g(p,s.status))}t.onState?.("cancelled"),u(T())}}}async function Y(t={}){if(typeof MediaRecorder>"u"||!navigator.mediaDevices?.getUserMedia)throw new Error("Scout voice capture is unavailable in this browser.");const{startStreamLevelMeter:e}=await x(async()=>{const{startStreamLevelMeter:c}=await import("./voice-levels-Dcr3jglk.js");return{startStreamLevelMeter:c}},[]),n=ae(),i=[];let r=null,o=null,a=null,u=!1,h=!1,d,f;const v=new Promise((c,s)=>{d=c,f=s}),w=()=>{a?.stop(),a=null;for(const c of r?.getTracks()??[])c.stop();r=null},y=(c,s="error")=>{h||(h=!0,w(),t.onState?.(s),f(c))},m=async()=>{if(h)return;if(w(),u){y(T(),"cancelled");return}t.onState?.("processing");const c=o?.mimeType||V()||"application/octet-stream",s=new Blob(i,{type:c});if(s.size===0){y(new Error("No voice audio was captured."));return}try{const p=await ne(s,{sessionId:n});if(h)return;h=!0,t.onFinal?.(p),t.onState?.("done"),d(p)}catch(p){y(p instanceof Error?p:new Error(String(p)))}};try{t.onState?.("starting"),r=await navigator.mediaDevices.getUserMedia({audio:!0}),t.onLevel&&(a=e(r,t.onLevel));const c=V();o=new MediaRecorder(r,c?{mimeType:c}:void 0),o.addEventListener("dataavailable",s=>{s.data.size>0&&i.push(s.data)}),o.addEventListener("error",()=>{y(new Error("Scout voice recorder failed."))}),o.addEventListener("stop",()=>{m()},{once:!0}),o.start(),t.onPartial?.(""),t.onState?.("recording")}catch(c){const s=c instanceof Error?c:new Error(String(c));throw y(s),v.catch(()=>{}),s}return{get sessionId(){return n},result:v,stop:async()=>{!o||o.state==="inactive"||o.stop()},cancel:async()=>{if(u=!0,o&&o.state!=="inactive"){o.stop();return}y(T(),"cancelled")}}}function Z(t){return t==="starting"||t==="recording"||t==="processing"||t==="done"||t==="cancelled"||t==="error"?t:null}function g(t,e){try{return JSON.parse(t).error??`Scout voice returned HTTP ${e}`}catch{return t||`Scout voice returned HTTP ${e}`}}function me(t){return t instanceof Error&&t.name==="AbortError"}async function ee(t,e={}){const n={text:t,speed:se(e.speed)};e.modelId&&(n.modelId=e.modelId),e.voiceId&&(n.voiceId=e.voiceId),e.originAppId&&(n.originAppId=e.originAppId),e.utteranceId&&(n.utteranceId=e.utteranceId),e.instructions&&(n.instructions=e.instructions),e.speechTiming?.enabled&&(n.speechTiming=e.speechTiming);const i=await fetch("/api/voice/speak",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n),signal:e.signal});if(!i.ok){const r=await i.text().catch(()=>"");try{const o=JSON.parse(r);throw new Error(o.error??`Scout voice returned HTTP ${i.status}`)}catch(o){throw o instanceof SyntaxError?new Error(r||`Scout voice returned HTTP ${i.status}`):o}}return await i.json()}async function we(t){const e=t?`?modelId=${encodeURIComponent(t)}`:"",n=await fetch(`/api/voice/catalog${e}`,{headers:{accept:"application/json"}});if(!n.ok)throw new Error(`Scout voice catalog returned HTTP ${n.status}`);return await n.json()}async function Se(t,e={}){if(e.signal?.aborted)throw P();const n=new Audio(`data:${t.contentType};base64,${t.audioBase64}`),i=()=>{n.pause(),n.currentTime=0};e.signal?.addEventListener("abort",i,{once:!0}),await n.play(),e.onPlaybackStart?.();try{return await new Promise((r,o)=>{const a=()=>{n.removeEventListener("ended",u),n.removeEventListener("error",h),e.signal?.removeEventListener("abort",d)},u=()=>{a(),r()},h=()=>{a(),o(new Error("Scout voice playback failed."))},d=()=>{a(),o(P())};if(e.signal?.aborted){d();return}n.addEventListener("ended",u,{once:!0}),n.addEventListener("error",h,{once:!0}),e.signal?.addEventListener("abort",d,{once:!0})}),t}finally{e.signal?.removeEventListener("abort",i)}}async function te(t,e={}){const n=await ee(t,e);if(e.signal?.aborted)throw P();const i=await k(n.audioBase64,n.contentType),r=ie(e.presetId,e.params);return await D(i,{params:r,signal:e.signal}).promise,n}function ge(t,e={}){const n=new AbortController;return{promise:te(t,{...e,signal:n.signal}),stop:()=>n.abort()}}async function ne(t,e){const n=new FormData,i=oe(t.type);n.append("audio",t,`audio.${re(t.type)}`),n.append("sessionId",e.sessionId),i&&n.append("format",i);const r=await fetch("/api/voice/transcribe",{method:"POST",body:n});if(!r.ok){const a=await r.text().catch(()=>"");try{const u=JSON.parse(a);throw new Error(u.error??`Scout voice returned HTTP ${r.status}`)}catch(u){throw u instanceof SyntaxError?new Error(a||`Scout voice returned HTTP ${r.status}`):u}}const o=await r.json();return{sessionId:e.sessionId,text:o.text?.trim()??"",durationMs:Number(o.durationMs??0)}}function P(){const t=new Error("Speech stopped.");return t.name="AbortError",t}function T(){const t=new Error("Voice recording was cancelled.");return t.name="AbortError",t}function V(){return typeof MediaRecorder>"u"||typeof MediaRecorder.isTypeSupported!="function"?void 0:["audio/webm;codecs=opus","audio/ogg;codecs=opus","audio/mp4","audio/webm","audio/wav"].find(e=>{try{return MediaRecorder.isTypeSupported(e)}catch{return!1}})}function oe(t){const e=t.toLowerCase();if(e.includes("mp3")||e.includes("mpeg"))return"mp3";if(e.includes("wav"))return"wav";if(e.includes("aac")||e.includes("mp4"))return"aac";if(e.includes("opus")||e.includes("ogg")||e.includes("webm"))return"opus"}function re(t){const e=t.toLowerCase();return e.includes("webm")?"webm":e.includes("ogg")||e.includes("opus")?"opus":e.includes("mp4")||e.includes("aac")?"m4a":e.includes("wav")?"wav":e.includes("mp3")||e.includes("mpeg")?"mp3":"audio"}function ie(t,e){const n=t?A.find(i=>i.id===t)?.params:void 0;return{...q,...n??{},...e??{}}}function se(t){if(!(t===void 0||!Number.isFinite(t)))return Math.min(2,Math.max(.5,Number(t.toFixed(2))))}function ae(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`scout-voice:${crypto.randomUUID()}`:`scout-voice:${Date.now().toString(36)}:${Math.random().toString(36).slice(2)}`}async function ce(){const t=await fetch("/api/voice/settings");if(!t.ok){const e=await t.text().catch(()=>"");throw new Error(g(e,t.status))}return await t.json()}async function ve(t="microphone"){const e=await fetch("/api/voice/permissions/open",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:t})});if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}}async function C(t="microphone"){const e=await fetch("/api/voice/permissions/request",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:t})});if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}}async function ye(t=12){const e=await fetch(`/api/voice/history?limit=${t}`);if(!e.ok){const i=await e.text().catch(()=>"");throw new Error(g(i,e.status))}return(await e.json()).sessions??[]}async function be(t){const e=await fetch("/api/voice/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}return await e.json()}export{pe as a,we as b,Se as c,ge as d,fe as e,le as f,X as g,ce as h,me as i,ye as j,be as k,ve as o,ee as p,C as r,he as s};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const g="scoutbot",O="scout:scoutbot-submit",h=new Set([g,"scoutbot","@scoutbot"]),S=new Set(["plan","conductor","conduct","warroom","command","mission","control","issues","errors","warnings","agents","tail","atop"]),_=new Set(["available","working","active","idle","waiting","registered"]);function U(t=globalThis.window){const e=t.webkit?.messageHandlers;return!!(e?.scoutNativeUI??e?.scoutRealtimeVoice)}function j(t,e=globalThis.window){const o=e.webkit?.messageHandlers,n=o?.scoutNativeUI??o?.scoutRealtimeVoice;if(!n)return!1;try{return n.postMessage({kind:"ui-action",action:t}),!0}catch{return!1}}function y(t){return[t.id,t.name,t.handle??"",t.selector??"",t.role??""].map(o=>o.trim().toLowerCase()).some(o=>h.has(o)||o==="scoutbot"||o.startsWith("scoutbot.")||o.includes(".scoutbot.")||o.includes(" scoutbot"))}function A(t){return _.has(t.state?.trim().toLowerCase()??"")}function m(t){if(!y(t))return Number.NEGATIVE_INFINITY;let e=0;return A(t)&&(e+=100),t.handle?.trim().toLowerCase()==="scoutbot"&&(e+=20),t.selector?.trim().toLowerCase()==="@scoutbot"&&(e+=20),t.role?.trim().toLowerCase()==="scoutbot"&&(e+=10),t.id===g&&(e+=1),e}function N(t){return t.filter(y).sort((e,o)=>{const n=m(o)-m(e);return n!==0?n:(o.updatedAt??0)-(e.updatedAt??0)})[0]??null}function C(t){return N(t)?.id??g}const T=new Set(["scout-ui","scout-ui-action","scoutbot-ui"]),b=/```([a-zA-Z0-9_-]*)\s*([\s\S]*?)```/g;function I(t){const e=[];let o="",n=0;b.lastIndex=0;let s;for(;(s=b.exec(t))!==null;){const[l,r,i]=s,a=(r??"").toLowerCase(),u=i??"";let d=[],f=!1;T.has(a)?(f=!0,d=w(u)):(a==="json"||a==="")&&(d=w(u),d.length>0&&(f=!0)),f&&(e.push(...d),o+=t.slice(n,s.index),n=s.index+l.length)}return o+=t.slice(n),{stripped:o.replace(/\n{3,}/g,`
|
|
2
|
+
|
|
3
|
+
`).trim(),actions:e}}function x(t){return I(t).actions}function F(t){return I(t).stripped}function w(t){const e=t.trim();if(!e)return[];try{const o=JSON.parse(e);return(Array.isArray(o)?o:[o]).map(s=>v(s)).filter(s=>!!s)}catch{return[]}}function v(t){if(!t||typeof t!="object")return null;const e=t,o=e.scoutUi??e.scout_ui??e.scoutbotUi??e.scoutbot_ui;if(o)return v(o);const n=typeof e.type=="string"?e.type:typeof e.action=="string"?e.action:"",s=typeof e.reason=="string"?e.reason:void 0;if(n==="open-scoutbot"||n==="open_scoutbot"){const r=e.mode==="tell"?"tell":e.mode==="ask"?"ask":void 0;return{type:"open-scoutbot",...r?{mode:r}:{},...s?{reason:s}:{}}}if(n==="refresh")return{type:"refresh",...s?{reason:s}:{}};if(n==="ask-agent"||n==="ask_agent"||n==="scout-ask"||n==="scout_ask"){const r=c(e.targetLabel,e.target_label,e.target,e.to,e.agent,e.handle),i=c(e.targetAgentId,e.target_agent_id,e.agentId,e.agent_id),a=c(e.body,e.message,e.prompt,e.task,e.question),u=c(e.channel);return!a?.trim()||!r?.trim()&&!i?.trim()?null:{type:"ask-agent",targetLabel:(r??i??"").trim(),body:a.trim(),...i?.trim()?{targetAgentId:i.trim()}:{},...u?.trim()?{channel:u.trim()}:{},...s?{reason:s}:{}}}if(n==="view-file"||n==="view_file"||n==="open-file"||n==="open_file"){const r=c(e.path,e.file,e.target);return r?.trim()?{type:"view-file",path:r.trim(),...s?{reason:s}:{}}:null}if(n==="reminder"||n==="set-reminder"||n==="set_reminder"||n==="remind"){const r=c(e.body,e.text,e.prompt,e.message);if(!r?.trim())return null;const i=c(e.title,e.label),a=k(e.dueAt??e.due_at),u=p(e.delayMs??e.delay_ms),d=p(e.delayMinutes??e.delay_minutes);return{type:"reminder",body:r.trim(),...i?.trim()?{title:i.trim()}:{},...a!==null?{dueAt:a}:{},...u!==null?{delayMs:u}:{},...d!==null?{delayMinutes:d}:{},...s?{reason:s}:{}}}if(n!=="navigate"&&n!=="open")return null;const l=L(e.route??e);return l?{type:"navigate",route:l,...s?{reason:s}:{}}:null}function c(...t){for(const e of t)if(typeof e=="string"&&e.trim())return e;return null}function p(t){if(typeof t=="number"&&Number.isFinite(t))return t;if(typeof t!="string")return null;const e=Number(t.trim());return Number.isFinite(e)?e:null}function k(t){const e=p(t);if(e!==null)return e;if(typeof t!="string")return null;const o=Date.parse(t);return Number.isFinite(o)?o:null}function L(t){if(!t||typeof t!="object")return null;const e=t;switch(typeof e.view=="string"?e.view:""){case"home":case"inbox":return{view:"inbox"};case"fleet":return{view:"inbox"};case"agents":case"projects":case"agents-v2":return{view:"agents-v2",...typeof e.agentId=="string"?{agentId:e.agentId}:{},...typeof e.conversationId=="string"?{conversationId:e.conversationId}:{},...typeof e.sessionId=="string"?{sessionId:e.sessionId}:{},...typeof e.projectSlug=="string"?{projectSlug:e.projectSlug}:{},...e.tab==="profile"||e.tab==="observe"||e.tab==="message"?{tab:e.tab}:{}};case"chat":case"messages":return{view:"messages",...typeof e.conversationId=="string"?{conversationId:e.conversationId}:{}};case"sessions":return{view:"sessions",...typeof e.sessionId=="string"?{sessionId:e.sessionId}:{}};case"repos":return{view:"repos",...typeof e.root=="string"?{root:e.root}:{}};case"harnesses":return{view:"harnesses"};case"repo-diff":return typeof e.path=="string"?{view:"repo-diff",path:e.path,...typeof e.sessionId=="string"?{sessionId:e.sessionId}:{},...typeof e.agentId=="string"?{agentId:e.agentId}:{}}:null;case"search":return{view:"search",...e.mode==="knowledge"||e.mode==="indexer"?{mode:e.mode}:{},...typeof e.hitId=="string"?{hitId:e.hitId}:{}};case"channels":return{view:"messages",...typeof e.channelId=="string"?{conversationId:e.channelId}:{}};case"mesh":return{view:"mesh"};case"broker":return{view:"broker"};case"activity":return{view:"activity"};case"settings":return{view:"settings",...e.section==="pairing"||e.section==="agents"||e.section==="operator"||e.section==="comms"||e.section==="credentials"||e.section==="voice"||e.section==="devices"?{section:e.section}:{},...typeof e.agentId=="string"?{agentId:e.agentId}:{}};case"code":{const n=c(e.project,e.projectSlug,e.project_slug,e.projectName,e.project_name,e.repository,e.repo),s=c(e.path,e.relativePath,e.relative_path),l=c(e.wt,e.worktree,e.worktreeName,e.worktree_name),r=typeof e.line=="number"&&Number.isSafeInteger(e.line)&&e.line>0?e.line:void 0,i=typeof e.endLine=="number"&&Number.isSafeInteger(e.endLine)&&e.endLine>0?e.endLine:void 0,a=r&&i&&i>=r?i:void 0;return{view:"code",...typeof e.root=="string"?{root:e.root}:{},...typeof e.file=="string"?{file:e.file}:{},...n?{project:n}:{},...s?{path:s}:{},...l?{wt:l}:{},...r?{line:r}:{},...a?{endLine:a}:{}}}case"briefings":return{view:"briefings",...typeof e.briefingId=="string"?{briefingId:e.briefingId}:{}};case"terminal":return{view:"terminal",...typeof e.agentId=="string"?{agentId:e.agentId}:{}};case"work":return typeof e.workId=="string"?{view:"work",workId:e.workId}:null;case"conversation":return typeof e.conversationId=="string"?{view:"conversation",conversationId:e.conversationId}:null;case"ops":{const n=typeof e.mode=="string"&&S.has(e.mode)?E(e.mode):void 0;return{view:"ops",...n?{mode:n}:{}}}default:return null}}function E(t){switch(t){case"control":case"mission":case"command":case"warroom":case"conduct":case"conductor":return"mission";case"plan":return"plan";case"issues":case"errors":case"warnings":return"issues";case"agents":case"tail":case"atop":case"lanes":return t;default:return}}export{O as S,C as a,x as e,j as f,U as i,N as r,F as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a}from"./createLucideIcon-OpA4Amw5.js";const t=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],c=a("scroll-text",t);export{c as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c}from"./createLucideIcon-OpA4Amw5.js";const e=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],o=c("search",e);export{o as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a}from"./createLucideIcon-OpA4Amw5.js";import{M as w}from"./message-square-DSaGpjFU.js";import{F as l}from"./file-text-BODxCjcz.js";import{S as c}from"./search-CWfZtOt2.js";import{T as k}from"./terminal-B9AOZQKR.js";import{C as y}from"./code-xml-B6jOCM4V.js";import{S as g}from"./scroll-text-D6Pdnar7.js";const O=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}]],p=a("compass",O);const S=[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]],_=a("folder-kanban",S);const A=[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]],N=a("git-branch",A);const j=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],v=a("house",j);const E=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],u=a("send",E);const R=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],C=a("settings",R),M=[{id:"home",label:"Home",icon:v,defaultRoute:{view:"inbox"},section:"navigate"},{id:"chat",label:"Messages",icon:w,defaultRoute:{view:"messages"},section:"navigate"},{id:"projects",label:"Projects",icon:_,defaultRoute:{view:"agents-v2"},section:"navigate"},{id:"sessions",label:"Sessions",icon:l,defaultRoute:{view:"sessions"},section:"navigate"},{id:"dispatch",label:"Dispatch",icon:u,defaultRoute:{view:"broker"},section:"navigate"},{id:"search",label:"Search",icon:c,defaultRoute:{view:"search"},section:"navigate"},{id:"ops",label:"Operations",icon:p,defaultRoute:{view:"ops",mode:"mission"},section:"system"},{id:"settings",label:"Settings",icon:C,defaultRoute:{view:"settings",section:"appearance"},section:"system"}],d={inbox:"home",activity:"home",briefings:"home","agents-v2":"projects","agent-info":"projects",repos:"projects","repo-diff":"projects",code:"projects",sessions:"sessions",terminal:"sessions",messages:"chat",conversation:"chat",broker:"dispatch",work:"dispatch",follow:"dispatch",search:"search",ops:"ops",mesh:"ops",harnesses:"ops",settings:"settings",voice:"settings"},T=new Map(M.map(e=>[e.id,e]));function G(e){const i=T.get(e);if(!i)throw new Error(`Unknown primary area: ${e}`);return i}function se(e){if(e.view==="follow"&&e.preferredView)switch(e.preferredView){case"tail":return"ops";case"session":return"sessions";case"chat":return"chat";case"work":return"dispatch"}return d[e.view]}function ae(e,i){const t=G(e);return e==="ops"?i?.opsControlEnabled??!0?{view:"ops",mode:"mission"}:{view:"ops",mode:"tail"}:t.defaultRoute}function P(e){return e.view==="ops"&&(e.mode===void 0||e.mode==="mission"||e.mode==="issues")}const D=[{id:"home",label:"Home",route:{view:"inbox"},active:e=>e.view==="inbox"},{id:"projects",label:"Projects",route:{view:"agents-v2"},active:e=>e.view==="agents-v2"||e.view==="agent-info"},{id:"sessions",label:"Sessions",route:{view:"sessions"},active:e=>e.view==="sessions"},{id:"chat",label:"Messages",route:{view:"messages"},active:e=>e.view==="messages"||e.view==="conversation"},{id:"search",label:"Search",route:{view:"search"},active:e=>e.view==="search"},{id:"terminals",label:"Terminals",route:{view:"terminal"},active:e=>e.view==="terminal"},{id:"tail",label:"Live Activity",route:{view:"ops",mode:"tail"},active:e=>e.view==="ops"&&e.mode==="tail"},{id:"dispatch",label:"Dispatch",route:{view:"broker"},active:e=>e.view==="broker"},{id:"activity",label:"Activity Log",route:{view:"activity"},active:e=>e.view==="activity"},{id:"mesh",label:"Network",route:{view:"mesh"},active:e=>e.view==="mesh"},{id:"mission-control",label:"Mission Control",route:{view:"ops",mode:"mission"},active:P,capability:"ops.control"},{id:"lanes",label:"Agent Lanes",route:{view:"ops",mode:"lanes"},active:e=>e.view==="ops"&&e.mode==="lanes"},{id:"repos",label:"Repositories",route:{view:"repos"},active:e=>e.view==="repos"||e.view==="repo-diff"},{id:"code",label:"Code Browser",route:{view:"code"},active:e=>e.view==="code"},{id:"providers",label:"Agent Providers",route:{view:"harnesses"},active:e=>e.view==="harnesses"},{id:"runtime",label:"Runtime Monitor",route:{view:"ops",mode:"atop"},active:e=>e.view==="ops"&&e.mode==="atop",capability:"ops.control"},{id:"plans",label:"Plans",route:{view:"ops",mode:"plan"},active:e=>e.view==="ops"&&e.mode==="plan"},{id:"agent-config",label:"Agent Configuration",route:{view:"settings",section:"agents"},active:e=>e.view==="settings"&&e.section==="agents"}],x=new Map(D.map(e=>[e.id,e]));function s(e){const i=x.get(e);if(!i)throw new Error(`Unknown nav destination: ${e}`);return i}function n(e,i){const t=s(e);return{id:t.id,label:i?.label??t.label,route:i?.route??t.route,active:i?.active??t.active,capability:t.capability}}const V=[{destinationId:"home",key:"home"},{destinationId:"projects",key:"agents",label:"Projects"},{destinationId:"sessions",key:"sessions"},{destinationId:"chat",key:"chat",label:"Messages"}];function ne(){return V.map(e=>{const i=s(e.destinationId);return{key:e.key,label:e.label??i.label,route:i.route}})}const B=[{destinationId:"search",key:"search"},{destinationId:"terminals",key:"terminals"},{destinationId:"tail",key:"tail"},{destinationId:"dispatch",key:"dispatch"}],J=[{destinationId:"mission-control",key:"control"},{destinationId:"lanes",key:"lanes"},{destinationId:"repos",key:"repos"},{destinationId:"code",key:"code"},{destinationId:"providers",key:"providers"},{destinationId:"mesh",key:"mesh"},{destinationId:"runtime",key:"runtime"},{destinationId:"plans",key:"plans"}];function b(e){const i=n(e.destinationId,{label:e.label});return{key:e.key,label:i.label,route:i.route,active:i.active,destinationId:i.id,capability:i.capability}}function de(){return B.map(b)}function re(){return J.map(b)}function m(e){return{items:e.map(i=>{const t=n(i.destinationId,{label:i.label,route:i.route,active:i.active});return{id:i.id,label:t.label,route:t.route,active:t.active}})}}function U(){return[m([{destinationId:"agent-config",id:"config",label:"Agent Configuration"}])]}function F(){return[m([{destinationId:"lanes",id:"lanes"},{destinationId:"mission-control",id:"control"},{destinationId:"providers",id:"harnesses",label:"Agent Providers"},{destinationId:"mesh",id:"mesh"},{destinationId:"tail",id:"tail"},{destinationId:"runtime",id:"runtime"},{destinationId:"plans",id:"plans"}])]}const L=[{key:"h",label:"Go home",destinationId:"home"},{key:"i",label:"Go to messages",destinationId:"chat"},{key:"c",label:"Go to messages",destinationId:"chat"},{key:"p",label:"Go to projects",destinationId:"projects"},{key:"s",label:"Go to sessions",destinationId:"sessions"},{key:"t",label:"Go to terminals",destinationId:"terminals"},{key:"r",label:"Go to repositories",destinationId:"repos"},{key:"b",label:"Go to code browser",destinationId:"code"},{key:"f",label:"Go to search",destinationId:"search"},{key:"l",label:"Go to live activity",destinationId:"tail"},{key:"o",label:"Go to operations",destinationId:"mission-control",route:{view:"ops"}},{key:"d",label:"Go to dispatch",destinationId:"dispatch"},{key:"m",label:"Go to network",destinationId:"mesh"},{key:"a",label:"Go to activity log",destinationId:"activity"}];function le(){return L.map(e=>{const i=s(e.destinationId);return{key:e.key,label:e.label,route:e.route??i.route,destinationId:e.destinationId}})}const Y=[{destinationId:"sessions",id:"sessions",icon:l},{destinationId:"terminals",id:"terminals",icon:k},{destinationId:"repos",id:"repos",icon:N},{destinationId:"code",id:"code",icon:y},{destinationId:"search",id:"search",icon:c},{destinationId:"tail",id:"tail",icon:g},{destinationId:"mission-control",id:"ops",label:"Operations",icon:p,route:{view:"ops",mode:"mission"},opsGated:!0},{destinationId:"home",id:"home",icon:v},{destinationId:"dispatch",id:"dispatch",icon:u}];function ce(){return Y.map(e=>{const i=s(e.destinationId);return{id:e.id,label:e.label??i.label,icon:e.icon,route:e.route??i.route,destinationId:e.destinationId,opsGated:e.opsGated??i.capability==="ops.control"}})}const H=[{id:"nav:home",label:"Go to Home",destinationId:"home",shortcut:"Cmd+1"},{id:"nav:agents",label:"Go to Projects",destinationId:"projects",shortcut:"Cmd+2"},{id:"nav:messages",label:"Go to Chat",destinationId:"chat",shortcut:"Cmd+3"},{id:"nav:sessions",label:"Open Sessions",destinationId:"sessions"},{id:"nav:terminals",label:"Open Terminals",destinationId:"terminals"},{id:"nav:search",label:"Go to Search",destinationId:"search",shortcut:"Cmd+4"},{id:"nav:activity",label:"Open Activity",destinationId:"activity"},{id:"nav:mesh",label:"Open Mesh",destinationId:"mesh"},{id:"nav:dispatch",label:"Open Dispatch",destinationId:"dispatch"},{id:"nav:repos",label:"Open Repos",destinationId:"repos"},{id:"nav:code",label:"Open Code Browser",destinationId:"code"},{id:"nav:harnesses",label:"Open Providers",destinationId:"providers"},{id:"nav:ops-lanes",label:"Open Agent Lanes",destinationId:"lanes"},{id:"nav:ops",label:"Go to Ops",destinationId:"mission-control",route:{view:"ops"},shortcut:"Cmd+5",capability:"ops.control"},{id:"nav:ops-atop",label:"Open Runtime",destinationId:"runtime",capability:"ops.control"},{id:"nav:agent-config",label:"Open Agent Configuration",destinationId:"agent-config"}];function $(e){const i=e?.opsEnabled??!0;return H.filter(t=>!((t.capability??s(t.destinationId).capability)==="ops.control"&&!i)).map(t=>{const o=s(t.destinationId);return{id:t.id,label:t.label,destinationId:t.destinationId,route:t.route??o.route,shortcut:t.shortcut,capability:t.capability??o.capability}})}function pe(e,i){return $(i).map(t=>({id:t.id,label:t.label,action:()=>e(t.route),shortcut:t.shortcut}))}const h={projects:[{destinationId:"projects",id:"projects",label:"Projects"},{destinationId:"repos",id:"repos"},{destinationId:"code",id:"code"}],sessions:[{destinationId:"sessions",id:"sessions"},{destinationId:"terminals",id:"terminals"}]};function z(e){const i=n(e.destinationId,{label:e.label});return{id:e.id,label:i.label,route:i.route,active:i.active,destinationId:i.id}}function q(e){return h[e].map(z)}function ve(e){const i=d[e.view];if(i!=="projects"&&i!=="sessions")return null;const t=i;return{areaId:t,items:q(t)}}const r={...h,dispatch:[{destinationId:"dispatch",id:"dispatch-all",label:"All Dispatches",route:{view:"broker"},active:e=>e.view==="broker"&&(e.filter===void 0||e.filter==="all")},{destinationId:"dispatch",id:"dispatch-delivered",label:"Delivered",route:{view:"broker",filter:"delivered"},active:e=>e.view==="broker"&&e.filter==="delivered"},{destinationId:"dispatch",id:"dispatch-failed",label:"Failed",route:{view:"broker",filter:"failed"},active:e=>e.view==="broker"&&e.filter==="failed"}],ops:[{destinationId:"lanes",id:"lanes",label:"Lanes"},{destinationId:"mission-control",id:"control"},{destinationId:"providers",id:"harnesses",label:"Providers"},{destinationId:"runtime",id:"runtime",label:"Runtime"},{destinationId:"mesh",id:"mesh"},{destinationId:"tail",id:"tail"},{destinationId:"plans",id:"plans"}]};function K(e){const i=n(e.destinationId,{label:e.label,route:e.route,active:e.active});return{id:e.id,label:i.label,route:i.route,active:i.active,destinationId:i.id}}function ue(e,i){const t=d[e.view];if(!(t in r))return null;const o=t,I=r[o].map(K).filter(f=>s(f.destinationId).capability!=="ops.control"||i?.opsControlEnabled!==!1);return{areaId:o,items:I}}const be=U(),me=F();export{be as A,me as O,M as P,C as S,de as a,re as b,pe as c,ce as d,le as e,se as f,ae as g,G as h,ve as i,ne as p,ue as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.s-secondary-nav{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);min-width:0;max-width:100%;overflow-x:auto;scrollbar-width:none;padding:0 var(--space-xs)}.s-secondary-nav-shell{display:flex;flex:1 1 auto;flex-direction:column;height:100%;min-height:0;background:var(--bg)}.s-secondary-nav-bar{flex:none;min-height:44px;display:flex;align-items:center;justify-content:center;padding:0 var(--space-3xl);border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface) 52%,transparent)}.s-secondary-nav-body{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.s-secondary-nav-body>*{flex:1 1 auto;min-height:0}.s-secondary-nav-body--scroll{overflow:auto}.s-secondary-nav::-webkit-scrollbar{display:none}.s-secondary-nav-group{flex:none;display:inline-flex;align-items:center;gap:var(--space-2xs);min-width:0}.s-secondary-nav-label{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-lg);text-transform:uppercase;color:var(--dim);opacity:.7;white-space:nowrap}.s-secondary-nav-switch{display:inline-flex;align-items:center;gap:var(--space-3xs);padding:var(--space-3xs);border:1px solid color-mix(in srgb,var(--border) 78%,transparent);border-radius:var(--radius-sm);background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 82%,transparent),transparent),color-mix(in srgb,var(--bg) 68%,transparent);box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent)}.s-secondary-nav-button{flex:none;min-height:24px;padding:var(--space-3xs) var(--space-md);border:0;border-radius:calc(var(--radius-sm) - 2px);background:transparent;color:var(--dim);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-md);line-height:var(--leading-none);white-space:nowrap;transition:background .12s,color .12s,box-shadow .12s}.s-secondary-nav-button:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 5%,transparent)}.s-secondary-nav-button--active{background:color-mix(in srgb,var(--accent) 90%,white 4%);color:var(--bg);box-shadow:inset 0 1px color-mix(in srgb,white 16%,transparent),0 0 0 1px color-mix(in srgb,var(--accent) 52%,transparent)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as r,r as o}from"./index-DMiGbrBt.js";import{j as l}from"./ui-LM8pS8qE.js";function p({branch:t,fallback:s}){const e=l(t,s);return e.detached?r.jsx("span",{className:"pre",children:e.sha??"detached"}):e.prefix?r.jsxs(r.Fragment,{children:[r.jsx("span",{className:"pre",children:e.prefix}),e.leaf]}):r.jsx(r.Fragment,{children:e.leaf})}const a={worktree:null,project:null,generatedAt:0,tone:"warm"};let n=a;const c=new Set;function i(){for(const t of c)t()}function h(t){n=t,i()}function d(){n!==a&&(n=a,i())}function m(){const[t,s]=o.useState(()=>n);return o.useEffect(()=>{s(n);const e=()=>s(n);return c.add(e),()=>{c.delete(e)}},[]),t}export{p as B,d as c,h as p,m as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a}from"./createLucideIcon-OpA4Amw5.js";const o=[["path",{d:"M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z",key:"117uat"}],["path",{d:"M6 12h16",key:"s4cdu5"}]],e=a("send-horizontal",o);export{e as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as e}from"./createLucideIcon-OpA4Amw5.js";const r=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],i=e("server",r);export{i as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as d}from"./terminal-relay-CWbJ1RCW.js";function S(r,e){const s=d(r),n=s?r.harnessSessionId??s.sessionName:null;return e?.activeSessionId??n}function I(r,e){return[...r].sort((s,n)=>{const t=s.id===e?1:0,o=n.id===e?1:0;return t!==o?o-t:(n.endedAt??n.startedAt)-(s.endedAt??s.startedAt)})}function c(r){const e=r;return[e.id,e.surfaceSessionId,e.harnessSessionId,e.externalSessionId,e.threadId,e.runtimeSessionId,e.runtimeSessionRef,e.runtimeRef,e.sourceSessionId,e.sessionId,e.refId].flatMap(s=>{const n=s?.trim();return n?[n]:[]})}function u(r){const e=/^relay-(.+)-(claude|codex)$/iu.exec(r);return e?{scope:e[1].toLowerCase(),harness:e[2].toLowerCase()}:null}function l(r,e){const s=u(r),n=u(e);return!s||!n?!1:s.harness===n.harness&&(s.scope===n.scope||s.scope.startsWith(`${n.scope}-`))}function f(r,e){const s=r?.trim();if(!s)return null;const n=e.find(a=>c(a).some(i=>i===s));if(n)return n.id;const t=e.filter(a=>c(a).some(i=>l(i,s)));return new Set(t.map(a=>a.id)).size===1?t[0]?.id??null:null}function h(r,e,s,n,t){const o=f(t,n);return o||(s??n[0]?.id??null)}function A(r,e,s,n){const t=!!d(r),o=n&&(!!s.canObserve||t),a=n&&(!!s.canTakeover||t||!!e?.resumeCommand);return{canObserve:o,canTakeover:a}}export{h as a,f as b,A as c,S as r,I as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as u}from"./createLucideIcon-OpA4Amw5.js";const l=[["path",{d:"m10 17 5-5-5-5",key:"1bsop3"}],["path",{d:"M15 12H3",key:"6jk70r"}],["path",{d:"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4",key:"u53s6r"}]],A=u("log-in",l);const d=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],y=u("power",d),f=10080*60*1e3,S=720*60*60*1e3,_={column:"state",direction:"desc"},m=[{id:"name",label:"Session",initialDirection:"asc"},{id:"host",label:"Host",initialDirection:"asc"},{id:"state",label:"State",initialDirection:"desc"},{id:"project",label:"Project",initialDirection:"asc"},{id:"activity",label:"Activity",initialDirection:"desc"}];function c(t){const e=typeof t.session.metadata?.attachedClients=="number"?t.session.metadata.attachedClients:0;return t.surface.state==="exited"?0:e>0?3:t.surface.state==="detached"?1:2}function h(t){const e=typeof t.session.metadata?.attachedClients=="number"?t.session.metadata.attachedClients:null;return t.surface.state==="exited"?"exited":e&&e>0?`${e} attached`:t.surface.state??"live"}function o(t){const e=t.session.metadata?.activityAt;if(typeof e=="number"&&Number.isFinite(e)&&e>0)return e;const n=t.session.metadata?.startedAt;return typeof n=="number"&&Number.isFinite(n)&&n>0?n:t.origin==="backend"?null:t.session.updatedAt||null}function v(t,e=Date.now()){const n=t.session.metadata?.activityAt,i=typeof n=="number"&&Number.isFinite(n)&&n>0?n:t.origin==="backend"?null:t.session.updatedAt||null;if(i===null)return"current";const a=Math.max(0,e-i);return a>=S?"review":a>=f?"inactive":"current"}function s(t,e){return t.localeCompare(e,void 0,{numeric:!0,sensitivity:"base"})}function N(t,e){const n=e.direction==="asc"?1:-1;return[...t].sort((i,a)=>{const r=p(i,a,e.column)*n;return r!==0?r:s(i.title,a.title)})}function p(t,e,n){switch(n){case"name":return s(t.title,e.title);case"host":return s(t.surface.backend,e.surface.backend);case"state":return c(t)-c(e);case"project":return s(t.project,e.project);case"activity":{const i=o(t),a=o(e);return i===null&&a===null?0:i===null?-1:a===null?1:i-a}}}function E(t,e){if(t.column===e)return{column:e,direction:t.direction==="asc"?"desc":"asc"};const n=m.find(i=>i.id===e)?.initialDirection??"asc";return{column:e,direction:n}}export{_ as D,A as L,y as P,m as T,E as a,o as b,h as c,N as s,v as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const n="scout:sessions:lastViewed";function a(){if(typeof localStorage>"u")return{};try{const t=localStorage.getItem(n);if(!t)return{};const e=JSON.parse(t);return e&&typeof e=="object"?e:{}}catch{return{}}}function o(t,e=Date.now()){const r=a();r[t]=e;try{localStorage.setItem(n,JSON.stringify(r))}catch{}return r}function s(t,e,r){return t?t>(r[e]??0):!1}export{s as i,a as l,o as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as t}from"./createLucideIcon-OpA4Amw5.js";const a=[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]],h=t("sliders-horizontal",a);export{h as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a}from"./createLucideIcon-OpA4Amw5.js";const c=[["path",{d:"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551",key:"1miecu"}]],o=a("paperclip",c);const e=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],p=a("sparkles",e);export{o as P,p as S};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as o,c as f}from"./index-DMiGbrBt.js";import{c as b,a as d,w as m}from"./index-BWHgHrtv.js";const n=new Set;let u=null,i=null,s=null,r=null;function c(e){for(const t of[...n])t(e)}function p(){r||n.size===0||(r=setTimeout(()=>{r=null,l()},2e3))}function l(){s||n.size===0||(u||(u=b({url:f()}),i=d({links:[m({client:u})]})),s=i.control.events.subscribe(void 0,{onData:e=>{const t=e.data;t&&c(t)},onError:()=>{s=null,p()}}),c({kind:"unknown",payload:{reason:"control_subscription_started"}}))}function v(){r&&(clearTimeout(r),r=null),s?.unsubscribe(),s=null}function k(e){return n.add(e),l(),()=>{n.delete(e),!(n.size>0)&&v()}}function S(e){const t=o.useRef(e);t.current=e,o.useEffect(()=>k(a=>{t.current(a)}),[])}export{S as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function r(e){switch(e){case"success":return"completed";case"danger":return"failed";case"working":return"working";default:return"updated"}}function t(e){return e}function a(e){return e.attention==="interrupt"?"danger":e.state==="done"?"success":e.attention==="badge"||e.state==="waiting"||e.state==="review"?"warning":"working"}function i(e){return e.attention==="interrupt"?"danger":"warning"}function c(e,n){return e==="success"||n==="sent"||n==="acknowledged"||n==="completed"?"success":e==="failed_query"||e==="failed_delivery"||n==="failed"||n==="cancelled"?"danger":n==="running"||n==="accepted"||n==="deferred"||n==="pending"?"working":"neutral"}function u(e){return e?e.status==="paired"||e.status==="connected"?"success":e.status==="error"||e.status==="closed"?"danger":"warning":"warning"}export{t as a,c as b,i as c,u as p,r as t,a as w};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function r(e=globalThis.document){return e?e.visibilityState!=="visible"?!1:typeof e.hasFocus!="function"||e.hasFocus():!0}function d(e,c={document:typeof document>"u"?void 0:document,window:typeof window>"u"?void 0:window}){const n=c.document,t=c.window;if(!n)return()=>{};let o=r(n);const i=()=>{const u=r(n);u&&!o&&e(),o=u},s=()=>{o=!1};return n.addEventListener("visibilitychange",i),t?.addEventListener("blur",s),t?.addEventListener("focus",i),()=>{n.removeEventListener("visibilitychange",i),t?.removeEventListener("blur",s),t?.removeEventListener("focus",i)}}export{r as i,d as o};
|