@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{j as e,r as n,z as no,A as ro,B as io,C as ao}from"./index-DMiGbrBt.js";import{u as F,C as co,o as lo,a as uo,b as mo,p as ge,q as vt,s as po,i as ho,f as yt,T as fo,j as go}from"./Provider-C7UKGHQy.js";import{resolveContentPane as xo,resolveRightPane as bo,resolveLeftPane as vo}from"./resolve-panes-r9B3mpW7.js";import{S as yo}from"./ScoutSurface-CYz_TcWC.js";import{u as nt}from"./router-Bq5dwf78.js";import{a as $}from"./api-h5zurxmi.js";import{c as Ee}from"./clipboard-e3fSpeo7.js";import{u as So}from"./ContextMenu-bARZqTzD.js";import{o as ko,S as jo,V as wo,a as Co}from"./ScoutbotBroadcastChip-L_R9atj0.js";import{e as No}from"./SettingsDrawer-XfdAa_nD.js";import{u as Xe,a as Pt,b as To}from"./content-C2EwTb2y.js";import{s as xe,e as Eo,S as St}from"./scoutbot-BTIErYHo.js";import{g as Ro,d as Oo,i as Ao,e as Io,s as Po}from"./scout-voice-CU5c0LGi.js";import{d as Mo}from"./colors-BtO5_zlx.js";import{i as Lo,S as Mt,a as zo}from"./runtime-picker-Bcl5iIX5.js";import{b as _o,f as kt,n as ve}from"./time-DltNTpLl.js";import{S as Do}from"./BriefingDetailScreen-BwFyysT8.js";import{L as K}from"./loader-circle-CbHjZsz1.js";import{P as Ho}from"./plus--b1raV_O.js";import{H as Bo}from"./ScoutbotRealtimeVoiceCall-FMQOr1Np.js";import{C as Qe}from"./chevron-down-BGk5qoEw.js";import{A as $o}from"./ProjectsRail-BgiuV4LR.js";import{S as Vo}from"./send-horizontal-Bg5-QggH.js";import{c as Uo}from"./createLucideIcon-OpA4Amw5.js";import{C as Fo}from"./copy-CQGYbxdu.js";import{R as jt}from"./rocket-BSNS_rLs.js";import{X as Wo}from"./x-D3GElQbe.js";import{R as Go}from"./refresh-cw-BBmAnCB7.js";import{S as qo,d as Yo}from"./secondaryNavConfig-DqUIp0Es.js";import{V as wt}from"./fx-z37u1o2z.js";import{B as Ko}from"./bot-eu8pBNvI.js";import{BrokerRight as Jo}from"./right-ChF_pbPy.js";import{OpsRight as Xo}from"./inspector-panel-DPoCWxKs.js";import{M as Qo}from"./MeshCanvasMinimap-CyVFYixr.js";import{u as Zo,T as es}from"./chunk-YOZR3KYS-Bet8khjg.js";import{u as ts,a as os,b as ss,c as ns,d as rs,e as is}from"./hooks-B6y_O2FB.js";import"./sse-CjIkKo46.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./DocumentFocusViewer-BeVwwl26.js";import"./TextDocumentSurface-BpAw4eQS.js";/* empty css */import"./file-text-BODxCjcz.js";import"./chevron-right-XiIHsk4m.js";import"./code-xml-B6jOCM4V.js";import"./arrow-left-DEZzHiPS.js";import"./keyboard-nav-2kv_tGUS.js";import"./MessageComposerSuggestions-DpxN9WiB.js";import"./NewChatComposer-Cs6OsxK6.js";import"./index-CJXzfjo9.js";import"./HarnessMark-Cbv3Ib0c.js";import"./conversation-model-B47vYmWN.js";import"./NewChatOrigin-Bk2OyVjI.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./search-CWfZtOt2.js";import"./content-CSPVmo2s.js";import"./ActivityScreen-Cu_1V4bq.js";import"./mentions-jSuTGeet.js";import"./AgentDetailCard-BcRBRp88.js";import"./AgentLiveActions-DBtnD0qE.js";import"./terminal-takeover-B8UeD9OX.js";import"./openContent-C6XO6kr5.js";import"./eye-0PvebX_a.js";import"./terminal-B9AOZQKR.js";import"./EmptyState-4F9XDFQm.js";/* empty css */import"./voice-levels-Dcr3jglk.js";import"./terminal-sessions-D5CIR2OL.js";import"./left-CpNEtFEg.js";/* empty css */import"./AgentAvatar-D90c1Rzk.js";import"./SpriteAvatar-DyaGuhik.js";import"./content-BIXf4cKR.js";import"./AgentInfoScreen-DZs2_ibL.js";/* empty css */import"./BackToPicker-BRvfostO.js";import"./ObservedTopologyPanel-DyUeV98H.js";import"./AgentsScreen-DBi8x4MB.js";/* empty css */import"./AgentsSubnav-DIEO4NPx.js";import"./SecondaryNav-B3-nh5dM.js";import"./message-square-DSaGpjFU.js";import"./scroll-text-D6Pdnar7.js";import"./library-D-RxGiCw.js";/* empty css */import"./AgentSessions-DyqOf4nG.js";import"./agents-project-model-UYiamtrU.js";import"./profile-CVRziEDA.js";import"./context-budget-CbB4BDcO.js";import"./session-catalog-BmoyVTJ_.js";import"./terminal-relay-CWbJ1RCW.js";import"./ConversationScreen-BDRhx-RU.js";import"./ConversationComposer-Bla3DDvM.js";import"./message-markup-3J9pi3nx.js";import"./message-visibility-kJM8XcSG.js";import"./sessionRead-CvFz2RHv.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-DE3FC0m-.js";import"./ConversationFeedRows-B_gPxcqA.js";import"./ConversationPanels-DLek4H6A.js";import"./use-reduced-motion-RRBkmVkk.js";import"./activity-CA8qS6PI.js";import"./message-circle-CG-96zts.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./tail-events-D19uAGe3.js";import"./ConversationStatus-BwVLiiO4.js";import"./conversation-icons-IIG5ha6D.js";import"./SessionObserve-yfXFafp8.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-Bla0gBdm.js";import"./lane-observe-D0rfKDnU.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObserveTextFlow-rsFj_rVo.js";import"./wrench-Bkc_0lKF.js";import"./external-link-CXBytO9o.js";import"./AgentDefinitionsWorkspace-CUpUrY57.js";import"./project-overview-helpers-BQTc_Ous.js";import"./FileViewerPane-CLgUhSm4.js";/* empty css */import"./agent-essentials-BSY1o46q.js";/* empty css *//* empty css */import"./right-BkgKo9VT.js";import"./openAgent-Bjt57GdM.js";import"./TmuxPeek-m1osv33Q.js";import"./ProjectsScreen-eNUBy4YU.js";import"./ProjectsInbox-GhVMxOhw.js";import"./api-BkjHJfgJ.js";import"./ui-LM8pS8qE.js";import"./SessionRefScreen-DRgJu7Jo.js";/* empty css */import"./AddProjectForm-DMnobKch.js";import"./projects-inbox-CHyUFQ6w.js";import"./model-CpAxGuis.js";import"./cache-Dr0why2k.js";import"./arrow-up-right-ClxBnsi7.js";import"./ProjectAgentProfile-DJusrAV-.js";import"./ProjectAgentProfileBar-CtTpj6fU.js";import"./ProjectsThreadAside-CoBgnHmr.js";import"./content-GIBv_55n.js";import"./BriefingsScreen-BQEevztH.js";/* empty css */import"./content-CvlVUOG8.js";import"./BrokerScreen-7ekklu88.js";import"./status-tone-BM_zuRy1.js";import"./broker-display-pp33bLsu.js";import"./BrokerMetadataPanel-7UjcuNjd.js";import"./DispatchAftermath-Dpe88DFX.js";import"./follow-route-BvcGtBIL.js";import"./ShikiPane-Ap1iPxYb.js";import"./arrow-down-BPLe0am9.js";import"./check-DjgFiBxb.js";import"./sparkles-ClfRJQ6w.js";import"./radio-Bz8ZePxj.js";import"./left-CzXAuK_t.js";import"./conversation-prefs-DNre-Lcx.js";import"./use-conversation-list-Byab41G6.js";import"./use-fleet-active-asks-BIbQx5AS.js";import"./RailRow-BoGxAHNF.js";/* empty css */import"./content-DikVsqLf.js";import"./MessagesScreen-C8YKW10Y.js";import"./right-wzrLXKur.js";import"./CodeScreen-BxCrpRHd.js";import"./CodeDiffPane-DDPt6KPh.js";import"./usePierreRuntime-wC-yMtBb.js";/* empty css */import"./CodeProjectPicker-DqKFCpLU.js";/* empty css */import"./content-D5kJmfgl.js";import"./FollowScreen-DZ4qfYOY.js";import"./content-C_FGqx1X.js";import"./HarnessesScreen-CznAImej.js";import"./useContentSecondaryNav-DMl1WNm7.js";import"./OpsSubnav-DsuXzHah.js";/* empty css */import"./left-C--GiIh8.js";import"./operator-attention-BwSPeheT.js";import"./right-BHeiIaty.js";import"./left-jYYGAOYD.js";import"./mesh-view-store-CWidRbTE.js";import"./mesh-buckets-CfAukILK.js";import"./FleetSearch-Dz5euQJe.js";import"./content-DTpQsomG.js";import"./MeshScreen-DFgevn8N.js";import"./MeshCanvas-DFEPkpqY.js";import"./chunk-T65CQEWV-CrzwSeEt.js";import"./useAgentHoverCard-DMrbBif0.js";import"./local-agents--00gLMqr.js";/* empty css */import"./right-BpEU5jWE.js";import"./left-bN4PCAXa.js";import"./left-agents-Bo9sO1by.js";import"./left-default-DV9GdvYi.js";import"./left-lanes-D0l_Co7V.js";import"./agent-lanes-model-B4YTt4OF.js";import"./lane-roster-store-D8x1jac2.js";import"./left-mission-Ci7zREkQ.js";import"./mission-control-store-BlnEhiCq.js";import"./MissionLeftAgentRow-BpZWntfl.js";import"./page-status-DpkedE1F.js";import"./left-plan-D4U1uflW.js";import"./content-BDt9VBPk.js";import"./OpsScreen-Buf3LKjb.js";/* empty css */import"./AgentLanesView-B9vuEEmZ.js";/* empty css */import"./observe-CuLGD9Zp.js";import"./AgentFloorView-8LoAEBwS.js";/* empty css */import"./AgentLanesPreflight-eSAoDsPi.js";import"./AgentLaneChrome-D9ZwUKrl.js";import"./AgentLaneCard-RrNnDZu8.js";/* empty css */import"./AgentLaneSummaryResize-BhFmGNzT.js";import"./agent-lane-card-model-r2frk57c.js";import"./agent-lane-preview-CmHVe3dU.js";import"./AgentLaneDetailSheet-BXbPls9N.js";import"./SlidePanel-COwtoJqR.js";import"./agent-lane-detail-Djm3YJEa.js";import"./LaneTraceDetailSheet-D1CspRbl.js";import"./LaneTraceEventFocus-BF9ERP5O.js";import"./MissionControlView-lUeAiSVg.js";/* empty css */import"./MissionFocusOverlay-wlCmWDCT.js";import"./mission-control-model-C0fByIjm.js";import"./MissionLogPane-__MVtEl9.js";import"./OpsAgentsView-UN7iOscs.js";/* empty css */import"./DataTable-E8s_MmoA.js";/* empty css */import"./sliders-horizontal-1oW76Xc9.js";import"./PlanView-C1CjH3PG.js";/* empty css */import"./AtopView-BCkae3e1.js";import"./TailView-DGj_5HA9.js";import"./content-DlUe5Ono.js";import"./RepoDiffPageScreen-DMv6DioL.js";import"./RepoDiffViewerLazy-BPgF92Bg.js";import"./ReposScreen-CB_YBWYf.js";/* empty css */import"./selection-bridge-16pk1qyG.js";import"./right-DjRXbnRP.js";import"./content-CR3vdrYY.js";import"./KnowledgeSearchScreen-DJDGGaqC.js";/* empty css */import"./knowledge-search-CVxQwxPn.js";import"./KnowledgeSearchInspector-Dgdkfvvz.js";import"./content-BLm0NBJM.js";import"./SessionsScreen-D6XUsZfA.js";import"./RawSessionsTable-DL8y_eEy.js";import"./FlightObserveScreen-6RpZYwVz.js";/* empty css */import"./right-DMoUT3KN.js";import"./content-Q2oclDzi.js";import"./SettingsScreen-Cy8z-EuR.js";import"./StatusPill-DhBL__p8.js";import"./AgentConfigurationScreen-BqfOz90D.js";import"./server-CPp4ZJhZ.js";import"./VoicePermissionsPanel-DsK53ar4.js";import"./left-Cj7Rt89X.js";import"./session-table-DZcrKoIH.js";import"./Terminal-CqvGbjXU.js";/* empty css */import"./right-T4Ue6EqM.js";import"./content-C5UbLsDF.js";import"./WorkDetailScreen-Bx0JimPC.js";import"./WorkFilesViewer-Btl6C2Q1.js";import"./right-CRZXoy-X.js";import"./RealtimeVoiceScreen-ffS-39zy.js";import"./HomeHero-B3uYd-pP.js";import"./home-moving-signal-CK147hxn.js";import"./home-live-action-B22u89j7.js";const as=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],cs=Uo("circle-check",as);function ls(){const{route:t,navigate:o,agents:s}=F();return e.jsx(yo,{children:xo(t,o,s)})}const ds=new Set(["air-local","local","mini","node"]),us=new Set(["main","master","trunk"]);function ms(t){return t.replace(/```[\s\S]*?```/g," code omitted ").replace(/\*\*([^*\n]+)\*\*/g,"$1").replace(/(^|[\s(])\*([^\s*][^*\n]*?[^\s*]|[^\s*])\*(?=[\s)\].,!?;:]|$)/g,"$1$2").replace(/(^|[\s(])_([^\s_][^_\n]*?[^\s_]|[^\s_])_(?=[\s)\].,!?;:]|$)/g,"$1$2").replace(/^\s*[-*]\s+/gm,"").replace(/\bhttps?:\/\/[^\s)]+/gi,o=>ps(o)).replace(/\b(session|conversation|message|flight|invocation|work)(?:\s+(?:id|ref))?\s*[:#]?\s+([a-z0-9][a-z0-9._:-]{9,})\b/gi,(o,s,r)=>`${s.toLowerCase()} ending in ${Ze(r)}`).replace(/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,o=>`ID ending in ${Ze(o)}`).replace(/@?([a-z][a-z0-9-]*(?:\.[a-z0-9][a-z0-9-]*){2,})\b/gi,(o,s)=>hs(o)?o:fs(s)).replace(/`([^`]+)`/g,(o,s)=>gs(s)).replace(/\s+/g," ").trim()}function ps(t){try{return new URL(t).hostname.replace(/^www\./,"").replace(/\./g," dot ")}catch{return"link"}}function hs(t){const o=t.replace(/^@/,"").toLowerCase();return/\.(com|app|dev|org|net|io|local)(?:\b|\/)/.test(o)&&!o.endsWith(".air-local")}function fs(t){const o=t.split(".").filter(Boolean);if(o.length<2)return t;const s=[...o];for(;s.length>1&&ds.has(s.at(-1).toLowerCase());)s.pop();const[r,...l]=s,a=l.filter(u=>!us.has(u.toLowerCase())).map(et).filter(Boolean);return[et(r),...a].filter(Boolean).join(", ")}function gs(t){return/^[a-z0-9][a-z0-9._:-]{12,}$/i.test(t)?`ID ending in ${Ze(t)}`:et(t)}function Ze(t){return(t.replace(/[^a-z0-9]/gi,"").slice(-4)||t.slice(-4)).split("").join(" ")}function et(t){return t.replace(/^@/,"").replace(/[_./:-]+/g," ").replace(/\s+/g," ").trim()}function rt(t){return t.handle??t.id}function xs(t,o){if(!o)return!0;const s=o.toLowerCase();return t.name.toLowerCase().includes(s)||rt(t).toLowerCase().includes(s)||t.id.toLowerCase().includes(s)}function bs({agents:t,query:o,excludeIds:s,maxResults:r=50}){const l=n.useMemo(()=>new Set(s??[]),[s]),a=n.useMemo(()=>t.filter(y=>!l.has(y.id)&&xs(y,o.trim())).slice(0,r),[t,l,o,r]),[u,d]=n.useState(0);n.useEffect(()=>{d(v=>a.length===0?0:Math.min(v,a.length-1))},[a]);const f=n.useCallback(v=>{d(y=>a.length===0?0:(y+v+a.length)%a.length)},[a.length]),b=n.useCallback(()=>d(0),[]);return{filtered:a,highlightedIndex:u,setHighlightedIndex:d,moveHighlight:f,resetHighlight:b}}function vs({agents:t,highlightedIndex:o,onSelect:s,onHover:r,emptyHint:l,pendingId:a,className:u,id:d}){return t.length===0?e.jsx("div",{className:`agent-autocomplete ${u??""}`,id:d,children:e.jsx("div",{className:"agent-autocomplete-empty",children:l??"No matches."})}):e.jsx("div",{className:`agent-autocomplete ${u??""}`,role:"listbox",id:d,children:t.map((f,b)=>{const v=rt(f),y=b===o;return e.jsxs("button",{type:"button",role:"option","aria-selected":y,className:`agent-autocomplete-item${y?" is-active":""}`,onMouseDown:S=>{S.preventDefault(),s(f)},onMouseEnter:()=>r?.(b),disabled:a===f.id,children:[e.jsx("div",{className:"agent-autocomplete-avatar",style:{background:Mo(f.name)},children:f.name[0]?.toUpperCase()??"?"}),e.jsxs("div",{className:"agent-autocomplete-info",children:[e.jsx("span",{className:"agent-autocomplete-name",children:f.name}),e.jsxs("span",{className:"agent-autocomplete-handle",children:["@",v]})]})]},f.id)})})}const ys=/(^|\s)@([a-zA-Z0-9_.-]*)$/,Ne=4,Ss=254;function ks(t,o){if(o<=0)return null;const s=t.slice(0,o),r=ys.exec(s);if(!r)return null;r[1];const l=r[2]??"",a=s.length-l.length-1;return a<0?null:(t.slice(o,o+1),{start:a,end:o,query:l})}const js=["boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","whiteSpace","wordWrap","wordBreak"];function ws(t,o){const s=document.createElement("div");document.body.appendChild(s);const r=s.style,l=window.getComputedStyle(t);r.position="absolute",r.visibility="hidden",r.whiteSpace="pre-wrap",r.wordWrap="break-word",r.top="0",r.left="-9999px";for(const b of js)r[b]=l[b];s.textContent=t.value.slice(0,o);const a=document.createElement("span");a.textContent=t.value.slice(o)||".",s.appendChild(a);const u=a.offsetTop,d=a.offsetLeft,f=parseInt(l.lineHeight,10)||a.offsetHeight;return document.body.removeChild(s),{top:u,left:d,height:f}}const Cs=n.forwardRef(function({agents:o,excludeIds:s,value:r,onChange:l,onSubmit:a,placeholder:u,rows:d=1,disabled:f,submitOnEnter:b=!1,className:v,textareaClassName:y,emptyHint:S,onMention:k},T){const j=n.useRef(null),I=n.useRef(null),[N,x]=n.useState(null),[h,C]=n.useState(null);n.useImperativeHandle(T,()=>({focus:()=>j.current?.focus(),blur:()=>j.current?.blur(),get textarea(){return j.current}}),[]);const O=N?.query??"",{filtered:P,highlightedIndex:L,setHighlightedIndex:V,moveHighlight:z}=bs({agents:o,query:O,excludeIds:s}),W=n.useCallback(()=>{const m=j.current;if(!m)return;const g=window.getComputedStyle(m),E=parseFloat(g.minHeight)||0,R=parseFloat(g.maxHeight);m.style.height="0px";const M=Math.max(m.scrollHeight,E),A=Number.isFinite(R)&&R>0?Math.min(M,R):M;m.style.height=`${A}px`,m.style.overflowY=M>A?"auto":"hidden"},[]);n.useLayoutEffect(()=>{W()},[W,r]);const J=n.useCallback(()=>{const m=j.current;if(!m)return;const g=ks(m.value,m.selectionStart??0);x(g)},[]);n.useLayoutEffect(()=>{const m=j.current;if(!m||!N){C(null);return}const{top:g,left:E,height:R}=ws(m,N.start),M=m.getBoundingClientRect(),A=m.parentElement?.getBoundingClientRect(),_=A?M.top-A.top:0,Z=A?M.left-A.left:0,ee=I.current?.offsetHeight||Ss,q=window.visualViewport,Me=q?.offsetTop??0,se=Me+(q?.height??window.innerHeight),le=M.top+g-m.scrollTop,D=le+R,X=se-D-Ne,de=le-Me-Ne,Le=X<ee&&de>X;C({top:Le?_+g-m.scrollTop-ee-Ne:_+g+R-m.scrollTop+Ne,left:Z+E-m.scrollLeft})},[N,r,P.length]);const G=n.useCallback(m=>{const g=j.current,E=N;if(!g||!E)return;const R=rt(m),M=r.slice(0,E.start),A=r.slice(E.end),_=`@${R} `,Z=`${M}${_}${A}`;l(Z),k?.(m),x(null);const ee=E.start+_.length;queueMicrotask(()=>{const q=j.current;q&&(q.focus(),q.setSelectionRange(ee,ee))})},[N,r,l,k]),ce=m=>{if(Lo(m)||b&&m.key==="Enter"&&!m.shiftKey&&!m.nativeEvent?.isComposing&&!(N&&P.length>0)){m.preventDefault(),a?.();return}if(N&&P.length>0){if(m.key==="ArrowDown"){m.preventDefault(),z(1);return}if(m.key==="ArrowUp"){m.preventDefault(),z(-1);return}if(m.key==="Enter"||m.key==="Tab"){if(m.key==="Enter"&&m.shiftKey)return;const E=P[L];if(E){m.preventDefault(),G(E);return}}if(m.key==="Escape"){m.preventDefault(),x(null);return}}};return e.jsxs("div",{className:`agent-mention-wrap ${v??""}`,children:[e.jsx("textarea",{ref:j,className:y,value:r,rows:d,placeholder:u,disabled:f,onChange:m=>{l(m.target.value),W(),queueMicrotask(J)},onKeyUp:J,onClick:J,onBlur:()=>x(null),onKeyDown:ce,"aria-autocomplete":"list"}),N&&e.jsx("div",{ref:I,className:"agent-mention-popover",style:{top:`${h?.top??0}px`,left:`${h?.left??0}px`,visibility:h?void 0:"hidden"},children:e.jsx(vs,{agents:P,highlightedIndex:L,onSelect:G,onHover:V,emptyHint:S??"No matches."})})]})});function Ns({state:t,chatExpanded:o,onToggleExpanded:s,sessionPickerOpen:r,onToggleSessionPicker:l,onStartNewChat:a,startingNewChat:u,onSwitchSession:d,switchingSessionId:f,sending:b,briefing:v,pendingAsk:y,onArchiveSession:S,archivingSessionId:k,onAssistantContextMenu:T,suggestedPrompts:j,onSelectPrompt:I}){const x=t.session.messages,h=o?x:x.slice(-4),C=o?0:Math.max(0,x.length-h.length),O=x.length,P=t.sessions.length,L=t.retention,V=x.length===0&&!y&&!b&&!v,z=u||b||v||!!f||!!k,W=t.session.createdAt?_o(t.session.createdAt):null,J=V?"Scout conversation":t.session.title&&t.session.title!=="New Scout Session"?t.session.title:`Session ${t.session.id.slice(0,8)}`,G=n.useRef(null),ce=x[x.length-1]?.id??null,m=x[x.length-1]?.body??"";return n.useEffect(()=>{const g=G.current;g&&(g.scrollTop=g.scrollHeight)},[ce,m,y,b,o,t.session.id]),e.jsxs("div",{className:"flex h-full min-h-0 flex-1 flex-col overflow-hidden rounded border border-[var(--scout-chrome-border-soft)] bg-black/10 font-mono text-xs text-[var(--scout-chrome-ink-faint)]",children:[e.jsxs("div",{className:"flex shrink-0 items-center justify-between gap-2 border-b border-[var(--scout-chrome-border-soft)] px-2.5 py-1.5",children:[e.jsxs("div",{className:"flex min-w-0 items-center gap-1.5",children:[e.jsx("span",{className:"min-w-0 truncate text-[var(--scout-chrome-ink)]",title:t.session.id,children:J}),W&&!V&&e.jsxs("span",{className:"shrink-0 text-[var(--scout-chrome-ink-ghost)]",children:["· ",W]}),!V&&e.jsxs("span",{className:"shrink-0 text-[var(--scout-chrome-ink-ghost)]",children:["· ",O," msg",O===1?"":"s"]})]}),e.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[e.jsxs("button",{type:"button",title:"Start a new chat (keeps this chat in Chats)","aria-label":"Start new chat",onClick:a,disabled:z,className:"flex items-center gap-1 rounded border border-lime-300/30 bg-lime-300/[0.06] px-1.5 py-0.5 text-2xs uppercase tracking-[0.1em] text-lime-100 transition-colors hover:border-lime-300/50 hover:bg-lime-300/10 disabled:cursor-not-allowed disabled:opacity-40",children:[u?e.jsx(K,{size:10,className:"animate-spin"}):e.jsx(Ho,{size:10}),e.jsx("span",{children:u?"Starting":"New chat"})]}),e.jsxs("button",{type:"button",title:`Switch chat (${P} total)`,"aria-label":"Switch chat",onClick:l,className:`flex items-center gap-1 rounded border px-1.5 py-0.5 text-2xs uppercase tracking-[0.1em] transition-colors ${r?"border-lime-300/40 bg-lime-300/10 text-lime-100":"border-[var(--scout-chrome-border-soft)] text-[var(--scout-chrome-ink-faint)] hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)]"}`,children:[e.jsx(Bo,{size:10}),e.jsx("span",{children:"Chats"}),e.jsx("span",{className:"text-[var(--scout-chrome-ink-ghost)]",children:P}),e.jsx(Qe,{size:9,className:r?"rotate-180 transition-transform":"transition-transform"})]}),O>4&&e.jsxs("button",{type:"button",title:o?"Collapse chat":"View full session","aria-label":o?"Collapse chat":"View full session",onClick:s,className:"flex items-center gap-1 rounded border border-[var(--scout-chrome-border-soft)] px-1.5 py-0.5 text-2xs uppercase tracking-[0.1em] text-[var(--scout-chrome-ink-faint)] transition-colors hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)]",children:[e.jsx("span",{children:o?"Collapse":"Full"}),o?e.jsx(co,{size:9}):e.jsx(Qe,{size:9})]})]})]}),r&&e.jsxs("div",{className:"shrink-0 border-b border-[var(--scout-chrome-border-soft)] px-2 py-1.5",children:[e.jsxs("div",{className:"mb-1 flex items-center justify-between gap-2 px-0.5 text-2xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-ghost)]",children:[e.jsx("span",{children:"Recent chats"}),L&&L.archivedCount>0&&e.jsxs("span",{children:[L.archivedCount," archived"]})]}),e.jsx("div",{className:"flex max-h-40 flex-col gap-0.5 overflow-y-auto pr-0.5",children:t.sessions.map(g=>{const E=g.id===t.session.id,R=f===g.id,M=k===g.id,A=kt(g.updatedAt)||"unknown",_=g.title&&g.title!=="New Scout Session"?g.title:`Session ${g.id.slice(0,8)}`;return e.jsxs("div",{className:`flex items-center gap-2 rounded border px-2 py-1 text-left transition-colors ${E?"border-lime-300/40 bg-lime-300/[0.06] text-lime-100":"border-transparent text-[var(--scout-chrome-ink-faint)] hover:border-[var(--scout-chrome-border-soft)] hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)]"}`,children:[e.jsxs("button",{type:"button",onClick:()=>{E||d(g.id)},disabled:E||!!f||!!k,className:"flex min-w-0 flex-1 items-center gap-2 text-left disabled:cursor-not-allowed disabled:opacity-40",children:[e.jsx("span",{className:`h-1.5 w-1.5 shrink-0 rounded-full ${E?"bg-lime-300":"bg-[var(--scout-chrome-ink-ghost)]"}`}),e.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-[var(--scout-chrome-ink)]",children:_}),e.jsxs("span",{className:"shrink-0 text-2xs text-[var(--scout-chrome-ink-ghost)]",children:[g.messageCount," msg"]}),e.jsx("span",{className:"shrink-0 text-2xs text-[var(--scout-chrome-ink-ghost)]",children:A}),R&&e.jsx(K,{size:10,className:"shrink-0 animate-spin text-lime-200"})]}),e.jsx("button",{type:"button",title:"Archive chat","aria-label":`Archive chat ${_}`,onClick:()=>S(g.id),disabled:!!f||!!k,className:"flex h-5 w-5 shrink-0 items-center justify-center rounded border border-transparent text-[var(--scout-chrome-ink-ghost)] transition-colors hover:border-[var(--scout-chrome-border-soft)] hover:bg-black/20 hover:text-[var(--scout-chrome-ink)] disabled:cursor-not-allowed disabled:opacity-30",children:M?e.jsx(K,{size:10,className:"animate-spin"}):e.jsx($o,{size:10})})]},g.id)})})]}),e.jsxs("div",{ref:G,className:"flex min-h-0 flex-1 flex-col gap-2 overflow-y-auto px-2.5 py-2",children:[C>0&&e.jsxs("button",{type:"button",onClick:s,className:"self-start text-2xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-ghost)] hover:text-[var(--scout-chrome-ink)]",children:["↑ ",C," earlier message",C===1?"":"s"]}),V&&e.jsx(Ts,{suggestedPrompts:j,onSelectPrompt:I}),h.map((g,E)=>{const R=Os(h[E-1],g),M=As(g.createdAt);return e.jsxs("div",{className:"flex flex-col gap-1",children:[R&&e.jsx("div",{className:"self-center rounded-full bg-white/[0.06] px-2.5 py-0.5 font-mono text-2xs font-medium text-[var(--scout-chrome-ink-ghost)]",title:kt(g.createdAt),"aria-label":M,children:M}),e.jsx(Ct,{role:g.role,body:g.body,onContextMenu:g.role==="assistant"&&T?A=>T(A,g.body):void 0})]},g.id)}),y&&e.jsx(Ct,{role:"user",body:y,pending:!0}),b&&!y&&e.jsx("p",{className:"text-[var(--scout-chrome-ink-ghost)]",children:"Reading the control plane…"}),v&&e.jsxs("div",{className:"flex items-center gap-2 rounded border border-lime-300/30 bg-lime-300/[0.06] px-2.5 py-2 font-mono text-xs leading-relaxed text-lime-100",children:[e.jsx(K,{size:12,className:"shrink-0 animate-spin text-lime-300","aria-hidden":"true"}),e.jsxs("div",{className:"min-w-0 flex flex-col gap-0.5",children:[e.jsx("span",{className:"text-xs uppercase tracking-[0.14em] text-lime-300",children:"Briefing"}),e.jsx("span",{className:"text-[var(--scout-chrome-ink)]",children:"Codex is reviewing the control-plane snapshot. Voice will pick up when it lands."})]})]})]})]})}function Ts({suggestedPrompts:t=[],onSelectPrompt:o}){return e.jsxs("div",{className:"flex min-h-0 flex-1 flex-col justify-start gap-2 px-1 py-2.5",children:[t.length>0?e.jsx("div",{className:"grid gap-1",children:t.slice(0,3).map(s=>e.jsx("button",{type:"button",onClick:()=>o?.(s),className:"min-h-7 truncate rounded border border-[var(--scout-chrome-border-soft)] bg-black/10 px-2.5 text-left font-mono text-xs leading-snug text-[var(--scout-chrome-ink-faint)] transition-colors hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)]",children:s},s))}):null,e.jsxs("div",{className:"max-w-[30rem]",children:[e.jsx("div",{className:"font-sans text-lg font-semibold leading-tight text-[var(--scout-chrome-ink)]",children:"Start with a question."}),e.jsx("p",{className:"mt-0.5 font-sans text-xs leading-snug text-[var(--scout-chrome-ink-faint)]",children:"Paste a failed result or ask about what you are seeing. Scout replies when you ask."})]})]})}function Es({agents:t,draft:o,onDraftChange:s,onSubmit:r,sending:l,recording:a,voiceLabel:u,voiceBusy:d,voiceUnavailable:f,voiceHeld:b=!1,onMicClick:v,prominent:y=!1,autoFocus:S,focusSignal:k}){const T=n.useRef(null),j=n.useCallback(()=>{const h=T.current;h&&(h.textarea?h.textarea.focus({preventScroll:!0}):h.focus())},[]);n.useEffect(()=>{S&&j()},[S,j]),n.useEffect(()=>{k&&j()},[k,j]);let I="Start talking";f&&(I="Set up Scout voice"),a&&(I="Stop talking"),(d||b)&&(I=u);const N=d||a||b,x=["w-full resize-none rounded border font-mono text-sm leading-relaxed text-[var(--scout-chrome-ink)] placeholder:text-[var(--scout-chrome-ink-ghost)]",y?"min-h-[88px] max-h-[170px] border-lime-300/30 bg-black/25 px-3 py-2 text-md":"min-h-[44px] max-h-[124px] border-[var(--scout-chrome-border-soft)] bg-black/20 px-2 py-1.5"].join(" ");return e.jsxs("form",{className:"flex flex-col gap-1.5",onSubmit:h=>{h.preventDefault(),r()},children:[e.jsx(Cs,{ref:T,agents:t,value:o,onChange:s,onSubmit:()=>{o.trim()&&!l&&r()},placeholder:b?"Type while live voice is on…":y?"Ask Scout about what you are seeing…":"Ask Scout…",rows:y?4:2,disabled:l,submitOnEnter:!0,className:"min-w-0",textareaClassName:x}),e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("button",{type:"button",title:I,"aria-label":I,onClick:v,disabled:l||d||b,className:`flex h-8 items-center justify-center rounded border transition-colors disabled:cursor-not-allowed disabled:opacity-40 ${a?"border-lime-300/50 bg-lime-300/10 text-lime-200":b?"border-lime-300/25 bg-lime-300/[0.05] text-lime-100/70":"border-[var(--scout-chrome-border-soft)] text-[var(--scout-chrome-ink-faint)] hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)]"} ${N?"gap-1.5 px-3 font-mono text-xs uppercase tracking-[0.12em]":"w-9"}`,children:[d?e.jsx(K,{size:13,className:"animate-spin"}):a?e.jsx(Mt,{size:12,className:"fill-current"}):e.jsx(zo,{size:13}),N&&e.jsx("span",{className:"truncate",children:u})]}),e.jsx("button",{type:"submit",title:"Send","aria-label":"Send",disabled:!o.trim()||l,className:"flex h-8 w-9 items-center justify-center rounded bg-lime-300/90 text-black transition-opacity disabled:cursor-not-allowed disabled:opacity-40",children:l?e.jsx(K,{size:13,className:"animate-spin"}):e.jsx(Vo,{size:13})})]})]})}function Ct({role:t,body:o,pending:s=!1,onContextMenu:r}){const l=t==="user",a=l?o:xe(o),[u,d]=n.useState(!1),f=n.useCallback(()=>{Ee(a).then(()=>{d(!0),window.setTimeout(()=>d(!1),1200)}).catch(()=>{})},[a]);return e.jsxs("div",{className:"group flex flex-col gap-0.5",onContextMenu:r,children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("span",{className:`text-2xs uppercase tracking-[0.12em] ${l?"text-[var(--scout-chrome-ink-ghost)]":"text-lime-300"}`,children:[l?"You":"Reply",s&&" · sending"]}),e.jsx("button",{type:"button",title:u?"Copied":"Copy message","aria-label":u?"Copied message":"Copy message",disabled:s||!a.trim(),onClick:f,className:"flex h-5 w-5 shrink-0 items-center justify-center rounded border border-[var(--scout-chrome-border-soft)] text-[var(--scout-chrome-ink-ghost)] opacity-70 transition hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)] disabled:cursor-not-allowed disabled:opacity-20 group-hover:opacity-100",children:u?e.jsx(cs,{size:11}):e.jsx(Fo,{size:11})})]}),l?e.jsx("p",{className:`whitespace-pre-wrap break-words text-sm leading-relaxed text-[var(--scout-chrome-ink)] ${s?"opacity-60":""}`,children:a}):e.jsx("div",{className:s?"opacity-60":"",children:e.jsx(Do,{text:a})})]})}const Rs=5*6e4;function Os(t,o){if(!t||!tt(t.createdAt,o.createdAt))return!0;const s=ve(t.createdAt),r=ve(o.createdAt);return s===null||r===null?!0:Math.abs(r-s)>=Rs}function tt(t,o){const s=ve(t),r=ve(o);if(s===null||r===null)return!1;const l=new Date(s),a=new Date(r);return l.getFullYear()===a.getFullYear()&&l.getMonth()===a.getMonth()&&l.getDate()===a.getDate()}function As(t){const o=ve(t);if(o===null)return"";const s=new Date(o),r=new Date,l=new Date(r);l.setDate(r.getDate()-1);const a=s.toLocaleTimeString([],{hour:"numeric",minute:"2-digit"});return tt(o,r.getTime())?`Today ${a}`:tt(o,l.getTime())?`Yesterday ${a}`:s.getFullYear()===r.getFullYear()?`${s.toLocaleDateString([],{month:"short",day:"numeric"})} ${a}`:`${s.toLocaleDateString([],{month:"short",day:"numeric",year:"numeric"})} ${a}`}function Nt({icon:t,title:o,onClick:s,disabled:r,active:l,badge:a}){return e.jsxs("button",{type:"button",title:o,"aria-label":o,onClick:s,disabled:r,className:`flex shrink-0 items-center gap-1 rounded border p-1 text-xs transition-colors disabled:cursor-not-allowed disabled:opacity-40 ${l?"border-lime-300/50 bg-lime-300/10 text-lime-200":"border-[var(--scout-chrome-border-soft)] text-[var(--scout-chrome-ink-faint)] hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)]"}`,children:[t,a&&e.jsx("span",{className:"font-mono text-3xs tracking-tight",children:a})]})}function Is({issue:t,probeState:o,onLaunch:s,onRetry:r,onSettings:l,onDismiss:a}){const u=o==="probing"||o==="launching";return e.jsxs("div",{className:"rounded border border-[var(--scout-chrome-border-soft)] bg-black/15 px-2.5 py-2 font-mono text-xs text-[var(--scout-chrome-ink)]",children:[e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsx(jt,{size:13,className:"mt-0.5 shrink-0 text-[var(--scout-chrome-ink-faint)]"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"uppercase tracking-[0.14em] text-[var(--scout-chrome-ink-faint)]",children:"Scout Voice"}),e.jsx("p",{className:"mt-1 leading-relaxed text-[var(--scout-chrome-ink-ghost)]",children:"Open Scout Menu to use speech."}),t&&e.jsx("p",{className:"mt-2 break-words leading-relaxed text-[var(--scout-chrome-ink-ghost)]",children:t})]}),a?e.jsx("button",{type:"button",title:"Hide voice setup","aria-label":"Hide voice setup",onClick:a,className:"shrink-0 rounded border border-transparent p-1 text-[var(--scout-chrome-ink-ghost)] transition-colors hover:border-[var(--scout-chrome-border-soft)] hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)]",children:e.jsx(Wo,{size:11})}):null]}),e.jsxs("div",{className:"mt-2 grid grid-cols-3 gap-1.5",children:[e.jsx(qe,{icon:o==="launching"?e.jsx(K,{size:12,className:"animate-spin"}):e.jsx(jt,{size:12}),label:o==="launching"?"Opening":"Open",onClick:s,disabled:o==="probing",title:"Open Scout services"}),e.jsx(qe,{icon:o==="probing"?e.jsx(K,{size:12,className:"animate-spin"}):e.jsx(Go,{size:12}),label:"Retry",onClick:r,disabled:u,title:"Check Scout voice again"}),e.jsx(qe,{icon:e.jsx(qo,{size:12}),label:"Voice",onClick:l,disabled:o==="probing",title:"Open Scoutbot voice settings"})]})]})}function qe({icon:t,label:o,onClick:s,disabled:r,title:l}){return e.jsxs("button",{type:"button",title:l,onClick:s,disabled:r,className:"flex min-h-7 items-center justify-center gap-1.5 rounded border border-[var(--scout-chrome-border-soft)] px-2 text-2xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-faint)] transition-colors hover:bg-[var(--scout-chrome-hover)] hover:text-[var(--scout-chrome-ink)] disabled:cursor-not-allowed disabled:opacity-45",children:[t,o]})}function Ps({voicePresetId:t,onVoicePresetId:o,voiceDefaults:s,modelDraft:r,onModelDraft:l,promptDraft:a,onPromptDraft:u,configLoading:d,configSaving:f,configError:b,configStatus:v,onSave:y,onReload:S}){return e.jsx("div",{className:"rounded border border-[var(--scout-chrome-border-soft)] bg-black/10 p-3",children:e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("label",{className:"flex flex-col gap-1 font-mono text-xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-faint)]",children:["Voice FX",e.jsx("select",{value:t,onChange:k=>o(k.target.value),className:"rounded border border-[var(--scout-chrome-border-soft)] bg-black/20 px-2 py-1.5 font-mono text-sm normal-case tracking-normal text-[var(--scout-chrome-ink)]",children:wt.map(k=>e.jsxs("option",{value:k.id,children:[k.label," — ",k.family]},k.id))}),e.jsx("span",{className:"font-mono text-2xs normal-case leading-relaxed tracking-normal text-[var(--scout-chrome-ink-ghost)]",children:wt.find(k=>k.id===t)?.description??"Custom voice mood for spoken replies."})]}),e.jsxs("div",{className:"flex flex-col gap-1 font-mono text-xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-faint)]",children:["Scout Voice",e.jsx("div",{className:"rounded border border-[var(--scout-chrome-border-soft)] bg-black/20 px-2 py-1.5 font-mono text-sm normal-case tracking-normal text-[var(--scout-chrome-ink)]",children:s?`${s.modelId}${s.voiceId?` / ${s.voiceId}`:""}`:"Unavailable"})]}),e.jsxs("label",{className:"flex flex-col gap-1 font-mono text-xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-faint)]",children:["Preferred model",e.jsx("input",{value:r,onChange:k=>l(k.target.value),placeholder:"gpt-4.1-mini",className:"rounded border border-[var(--scout-chrome-border-soft)] bg-black/20 px-2 py-1.5 font-mono text-sm normal-case tracking-normal text-[var(--scout-chrome-ink)] placeholder:text-[var(--scout-chrome-ink-ghost)]",disabled:d||f})]}),e.jsxs("label",{className:"flex flex-col gap-1 font-mono text-xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-faint)]",children:["System Prompt",e.jsx("textarea",{value:a,onChange:k=>u(k.target.value),rows:6,className:"w-full resize-y rounded border border-[var(--scout-chrome-border-soft)] bg-black/20 px-2 py-1.5 font-mono text-xs normal-case leading-relaxed tracking-normal text-[var(--scout-chrome-ink)]",disabled:d||f})]}),b&&e.jsx("div",{className:"font-mono text-xs leading-relaxed text-red-300",children:b}),v&&e.jsx("div",{className:"font-mono text-xs leading-relaxed text-lime-200",children:v}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{type:"button",onClick:y,disabled:d||f||!a.trim(),className:"flex items-center justify-center gap-2 rounded bg-lime-300/90 px-2.5 py-2 font-mono text-xs font-bold uppercase tracking-[0.12em] text-black transition-opacity disabled:cursor-not-allowed disabled:opacity-40",children:[(d||f)&&e.jsx(K,{size:13,className:"animate-spin"}),f?"Saving":"Save"]}),e.jsx("button",{type:"button",onClick:S,disabled:d||f,className:"rounded border border-[var(--scout-chrome-border-soft)] px-2.5 py-2 font-mono text-xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-faint)] hover:bg-[var(--scout-chrome-hover)] disabled:cursor-not-allowed disabled:opacity-40",children:"Reload"})]})]})})}const Ms="chill-dispatcher",Ls=6e4,zs=2500,_s=1.2,Ds={lowCutHz:160,highCutHz:5200,bandQ:.35,saturationAmount:.035,bitcrushAmount:0,hissGain:0,hissCutoffHz:1800,presencePeakDb:1.5,presenceCenterHz:1500,presenceQ:.65,compressorThresholdDb:-15,compressorRatio:2.2,clickEnabled:!0,clickGain:.24,clickDurationMs:45,squelchTailEnabled:!0,squelchTailGain:.018,squelchTailDurationMs:95,outputGain:1,wetMix:.38};function Hs(t){const o=Math.min(1,t/8);return{saturationAmount:.035+o*.025,presencePeakDb:1.5+o*1.5}}function Bs(t,o){return{...t==="chill-dispatcher"?Ds:{},...Hs(o)}}function Lt(t,o,s){return new Promise((r,l)=>{const a=window.setTimeout(()=>l(new Error(s)),o);t.then(r,l).finally(()=>window.clearTimeout(a))})}async function Tt(t,o={}){!t.sessionId&&!o.allowCurrentSession||await Lt(t.cancel(),zs,"Timed out releasing Scout voice session.").catch(()=>{})}function $s(t){const o=t instanceof Error?t.message:String(t);return/session_cancelled|was cancelled|cancelled/i.test(o)}const Et=new RegExp("(?:^|(?<=[\\s(`'\"<>]))(?:~\\/|\\/(?:Users|home|opt|var|etc|tmp|private)\\/)[^\\s)`'\"<>]+\\.[A-Za-z0-9]{1,8}\\b","g");function Vs(t){const o=[],s=new Set;Et.lastIndex=0;let r;for(;(r=Et.exec(t))!==null;)s.has(r[0])||(s.add(r[0]),o.push(r[0]));return o}function Rt(t){const o=t.split("/").filter(Boolean);return o.length<=2?t:`…/${o.slice(-2).join("/")}`}function Us(){return{requesterName:"OpenScout",productName:"Scout Voice",headline:"Turn on local voice",body:"Scout voice handles local speech capture and spoken replies. Start Scout services, then return here to talk with your workspace.",actionLabel:"Return to OpenScout",logo:{url:new URL("/openscout-icon.png",window.location.href).toString(),symbolName:"sparkles"}}}const Fs=["Explain what went wrong here.","Help me rewrite this message.","What should I try next?"];function Ot({height:t,forceExpanded:o=!1,fill:s=!1}={}){const{applyScoutbotUiAction:r,agents:l,route:a,onlineCount:u}=F(),d=lo(),f=nt(uo,!1),b=mo(),v=f&&(b.state==="connecting"||b.state==="live"),[y,S]=Xe("openscout.scoutbot.collapsed",!0),[k,T]=n.useState(""),[j,I]=n.useState(!1),[N,x]=n.useState(null),[h,C]=n.useState(null),[O,P]=n.useState(null),[L,V]=n.useState("idle"),[z,W]=Xe("openscout.scoutbot.voiceReplies",!1),[J]=Pt("openscout.scoutbot.voiceSpeed",_s),[G,ce]=To("openscout.scoutbot.voicePresetId",Ms),[m,g]=n.useState(!1),[E,R]=n.useState(null),[M,A]=n.useState(""),[_,Z]=n.useState(!1),[ee,q]=n.useState(null),[Me,se]=n.useState(null),[le,D]=n.useState(null),[X,de]=n.useState(!1),[Le,ze]=n.useState(!1),[Y,ne]=n.useState(null),[ue,it]=n.useState(!1),[_e,at]=n.useState(null),[Dt,ct]=n.useState(!1),[Ht,lt]=n.useState(!1),[Bt,Se]=n.useState(null),[$t,De]=n.useState(null),[He,Be]=n.useState(""),[$e,Ve]=n.useState(""),[Vt,dt]=n.useState(null),[Ut,re]=n.useState(!1),[Ft,ie]=n.useState(0),[Wt,ke]=n.useState(!1),[Ue,ut]=n.useState(null),je=n.useRef(Ro()),te=n.useRef(null),me=n.useRef(null),pe=n.useRef(null),mt=n.useRef(z);mt.current=z;const B=n.useCallback(()=>{pe.current?.stop(),pe.current=null,Z(!1)},[]),we=n.useCallback(i=>{if(!i)return;B();const c=Oo(ms(i),{speed:J,presetId:G,params:Bs(G,u)});pe.current=c,Z(!0),c.promise.catch(p=>{Ao(p)||x(p instanceof Error?p.message:"Scout voice speech failed.")}).finally(()=>{pe.current===c&&(pe.current=null,Z(!1))})},[B,J,u,G]),pt=n.useCallback(i=>{mt.current&&we(i)},[we]),ht=n.useCallback(i=>{we(xe(i))},[we]),{openFilePreview:ft}=F(),gt=So(),Gt=n.useCallback((i,c)=>{const p=window.getSelection()?.toString().trim(),w=xe(c),H=Vs(w),U=[];if(p&&(U.push({kind:"action",label:"Copy selection",shortcut:"⌘C",onSelect:()=>{Ee(p)}}),U.push({kind:"separator"})),U.push({kind:"action",label:"Copy message",onSelect:()=>{Ee(w)}}),H.length>0){U.push({kind:"separator"});for(const Q of H.slice(0,5)){const Ge=Rt(Q);U.push({kind:"action",label:`Preview ${Ge}`,onSelect:()=>ft(Q)})}for(const Q of H.slice(0,5)){const Ge=Rt(Q);U.push({kind:"action",label:`Open ${Ge} in OS`,onSelect:()=>{$("/api/file/reveal",{method:"POST",body:JSON.stringify({path:Q})}).catch(()=>{})}})}U.push({kind:"action",label:H.length===1?"Copy path":"Copy first path",onSelect:()=>{Ee(H[0])}})}U.push({kind:"separator"}),U.push({kind:"action",label:_?"Say again (stop current)":"Say",onSelect:()=>ht(c)}),gt(i,U)},[ft,ht,gt,_]);n.useEffect(()=>()=>{B()},[B]);const qt=Fs,ae=n.useCallback(i=>{const c=[...i.messages].reverse().find(w=>w.role==="user"),p=[...i.messages].reverse().find(w=>w.role==="assistant");q(c?.body??null),se(p?xe(p.body):null)},[]),he=n.useCallback(async()=>{try{const i=await $("/api/scoutbot/session");ne(i),ae(i.session)}catch{ne(null)}},[ae]);n.useEffect(()=>{he()},[he]);const Fe=n.useCallback(async()=>{ct(!0),Se(null);try{const i=await $("/api/scoutbot/config");Be(i.model),Ve(i.systemPrompt),De(null)}catch(i){Se(i instanceof Error?i.message:"Could not load settings.")}finally{ct(!1)}},[]);n.useEffect(()=>{X&&Fe()},[Fe,X]),n.useEffect(()=>{if(!X)return;let i=!1;return $("/api/voice/defaults").then(c=>{i||dt(c)}).catch(()=>{i||dt(null)}),()=>{i=!0}},[X]);const Yt=n.useCallback(async()=>{lt(!0),Se(null),De(null);try{const i=await $("/api/scoutbot/config",{method:"POST",body:JSON.stringify({model:He,systemPrompt:$e})});Be(i.config.model),Ve(i.config.systemPrompt),De("Saved")}catch(i){Se(i instanceof Error?i.message:"Could not save settings.")}finally{lt(!1)}},[He,$e]),Kt=n.useCallback(async i=>{if(!(!i||Ue)){ut(i),x(null),B();try{const c=await $("/api/scoutbot/session/switch",{method:"POST",body:JSON.stringify({id:i})});ne(c),ae(c.session),ke(!1),re(!1),window.dispatchEvent(new CustomEvent(ge,{detail:{id:c.session.id}}))}catch(c){x(c instanceof Error?c.message:"Could not switch session.")}finally{ut(null)}}},[B,Ue,ae]),We=n.useCallback(async()=>{if(!(ue||j)){if(Y?.session.messages.length===0){T(""),x(null),re(!1),ke(!1),D("New chat ready"),ie(i=>i+1);return}it(!0),x(null),D("Starting new chat"),B();try{const i=await $("/api/scoutbot/session/reset",{method:"POST"});ne(i),T(""),q(null),se(null),re(!1),ke(!1),D("New chat ready"),ie(c=>c+1),window.dispatchEvent(new CustomEvent(ge,{detail:{id:i.session.id}}))}catch(i){D(null),x(i instanceof Error?i.message:"Could not start a new chat.")}finally{it(!1)}}},[ue,j,Y,B]),Jt=n.useCallback(async i=>{if(!(!i||_e)){at(i),x(null),B();try{const c=await $("/api/scoutbot/session/archive",{method:"POST",body:JSON.stringify({id:i})});ne(c),ae(c.session),re(!1),D("session archived"),window.dispatchEvent(new CustomEvent(ge,{detail:{id:c.session.id}}))}catch(c){x(c instanceof Error?c.message:"Could not archive session.")}finally{at(null)}}},[_e,B,ae]),Ce=n.useCallback((i,c)=>{C(c),P(c?null:i.lastUnavailableReason??"Scout voice service is not reachable."),V("idle")},[]),oe=n.useCallback(async(i=!1)=>{const c=je.current;V(w=>w==="launching"?w:"probing");const p=await c.probe(i?{force:!0}:void 0);return Ce(c,p),p},[Ce]);n.useEffect(()=>{Io();const i=je.current,c=Po(p=>{C(p.ok),P(p.ok?null:p.reason),V("idle")});return i.connectionState==="unknown"?oe():Ce(i,i.connectionState==="connected"),c},[Ce,oe]);const Xt=n.useCallback(()=>{const i=je.current;x(null),V("launching"),i.launch({source:"openscout",context:Us()}),window.setTimeout(()=>{oe(!0)},2400)},[oe]),xt=n.useCallback(i=>{const c=xe(i);se(c);for(const p of Eo(i))p.type==="ask-agent"?(D(`Sending to ${p.targetLabel}`),$("/api/scoutbot/actions/ask",{method:"POST",body:JSON.stringify({targetLabel:p.targetLabel,targetAgentId:p.targetAgentId,body:p.body,channel:p.channel})}).then(w=>{D(w.flightId?`Sent to ${w.targetAgentId??w.targetLabel} · run ${w.flightId}`:`Sent to ${w.targetAgentId??w.targetLabel}`)}).catch(w=>{D(null),x(w instanceof Error?w.message:"Could not send to agent.")})):p.type!=="reminder"&&r(p);pt(c)},[r,pt]);n.useEffect(()=>{const i=()=>{D("Scoutbot replied by voice"),he()},c=()=>{D("Scoutbot chat changed"),he()};return window.addEventListener(vt,i),window.addEventListener(ge,c),()=>{window.removeEventListener(vt,i),window.removeEventListener(ge,c)}},[he]);const fe=n.useCallback(async i=>{const c=i.trim();if(!(!c||j)){I(!0),x(null),q(c),se(null),D("Sending"),T(p=>p.trim()===c?"":p);try{await No().catch(()=>null);const p=await $("/api/scoutbot/chat",{method:"POST",body:JSON.stringify({body:c,route:a,uiContext:po("web")})});ne({session:p.session,sessions:p.sessions,config:p.config}),D("Reply received"),xt(p.reply.body)}catch(p){D(null),x(p instanceof Error?p.message:"Could not send.")}finally{I(!1)}}},[xt,a,j]),Qt=n.useCallback(async()=>{if(m)return;const i=je.current;if(me.current=null,x(null),A(""),R("starting"),h!==!0&&!await oe(!0)){R(null);return}let c=null,p=!1;const w=async()=>{!c||p||(p=!0,await Tt(c,{allowCurrentSession:te.current===c}),te.current===c&&(te.current=null))};try{c=await i.startLive({onState:R,onPartial:A}),te.current=c,g(!0);const H=await c.result;if(await w(),g(!1),A(""),me.current)return;R("done"),H.text&&await fe(H.text)}catch(H){const U=me.current,Q=!!U||$s(H);if(await w(),g(!1),A(""),U==="stop-failed")return;R(Q?null:"error"),Q||x(H instanceof Error?H.message:"Scout voice recording failed.")}finally{await w(),me.current=null}},[fe,oe,m,h]),Zt=n.useCallback(async()=>{const i=te.current;if(i){R("processing");try{await Lt(i.stop(),Ls,"Scout voice did not finish processing the recording.")}catch(c){me.current="stop-failed",await Tt(i,{allowCurrentSession:!0}),te.current===i&&(te.current=null,g(!1),A(""),R("error")),x(c instanceof Error?`Scout voice recording did not finish: ${c.message}`:"Scout voice recording did not finish.")}}},[]);n.useEffect(()=>{const i=()=>S(!1);return window.addEventListener("scout:scoutbot-panel-open",i),()=>window.removeEventListener("scout:scoutbot-panel-open",i)},[S]),n.useEffect(()=>ko(()=>S(!y)),[y,S]),n.useEffect(()=>{const i=c=>{const p=c.detail,w=p&&typeof p=="object"&&"body"in p?p.body:null;typeof w=="string"&&w.trim()&&(S(!1),fe(w))};return window.addEventListener(St,i),()=>window.removeEventListener(St,i)},[fe,S]),n.useEffect(()=>{const i=c=>{const p=c.detail,w=p&&typeof p=="object"&&"body"in p?p.body:null;typeof w=="string"&&w.trim()&&(S(!1),T(w),ie(H=>H+1))};return window.addEventListener("scout:scoutbot-compose",i),()=>window.removeEventListener("scout:scoutbot-compose",i)},[S]);const bt=n.useMemo(()=>{const i=_?"speaking":j?"thinking":m?"listening":"idle",c=Y?.session??null,p=c&&c.messages.length>0?c.messages[c.messages.length-1]:null;return{activity:i,brief:{lastDeliveredAt:null},reminders:{dueCount:0,upcomingCount:0,due:[],next:null},voice:{available:h,setupBlocked:h===!1,replies:z},error:N,session:{title:c?.title??null,lastActivityAt:p?.createdAt??c?.updatedAt??null},conversation:{messageCount:c?.messages.length??0,loading:Y===null}}},[_,j,m,h,z,N,Y]);n.useEffect(()=>{d?.publishState(bt)},[d,bt]),n.useEffect(()=>{if(!d)return;const i={focusScoutbot:()=>S(!1),triggerBrief:()=>{S(!1),ie(c=>c+1)},triggerAskState:()=>{S(!1),ie(c=>c+1)},toggleVoiceReplies:()=>{const c=!z;W(c),c||B()},openScoutbotSettings:()=>{S(!1),de(!0)},startNewChat:()=>{S(!1),ue||We()},dismissReminder:()=>{},askReminderStatus:()=>{S(!1),ie(c=>c+1)}};d.registerActions(i)},[d,S,z,W,B,de,ue,We]),n.useEffect(()=>{h===!0&&ze(!1)},[h]);const eo=v?"Live call":m?E==="processing"?"Sending":"Stop":L==="probing"?"Checking Voice":L==="launching"?"Opening Scout":h===!1?"Open Scout":"Start Talking",to=Y!==null&&Y.session.messages.length===0&&!j;if(y&&!o)return e.jsx("div",{className:"flex shrink-0 items-center border-t border-[var(--scout-chrome-border-soft)] px-3 py-1.5",children:e.jsx(jo,{})});const oo=s?"flex h-full min-h-0 flex-col overflow-hidden border-t border-[var(--scout-chrome-border-soft)]":t===void 0?"flex max-h-[60vh] shrink-0 flex-col overflow-hidden border-t border-[var(--scout-chrome-border-soft)]":"flex shrink-0 flex-col overflow-hidden border-t border-[var(--scout-chrome-border-soft)]",so=t===void 0||s?void 0:{height:`${t}px`};return e.jsxs("section",{className:oo,style:so,children:[e.jsxs("div",{className:"flex shrink-0 flex-col gap-2 px-3 pt-2.5 pb-1.5",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("div",{className:"flex min-w-0 items-center gap-2",children:e.jsx(Ko,{size:20,className:"shrink-0 text-lime-300","aria-hidden":"true"})}),e.jsxs("div",{className:"flex shrink-0 items-center gap-0.5",children:[e.jsx(Nt,{icon:z?e.jsx(wo,{size:11}):e.jsx(Co,{size:11}),title:v?z?"Voice replies on for typed chat (live call has its own audio)":"Voice replies off for typed chat (live call has its own audio)":z?"Voice replies on (click to mute)":"Voice replies off (click to enable)",onClick:()=>{const i=!z;W(i),i||B()},active:z}),!o&&e.jsx(Nt,{icon:e.jsx(Qe,{size:11}),title:"Minimize",onClick:()=>S(!0)})]})]}),X&&e.jsx(Ps,{voicePresetId:G,onVoicePresetId:ce,voiceDefaults:Vt,modelDraft:He,onModelDraft:Be,promptDraft:$e,onPromptDraft:Ve,configLoading:Dt,configSaving:Ht,configError:Bt,configStatus:$t,onSave:()=>{Yt()},onReload:()=>{Fe()}})]}),e.jsx("div",{className:"flex min-h-0 flex-1 flex-col px-3 pb-1.5",children:Y&&e.jsx(Ns,{state:Y,chatExpanded:Ut,onToggleExpanded:()=>re(i=>!i),sessionPickerOpen:Wt,onToggleSessionPicker:()=>ke(i=>!i),onStartNewChat:()=>{We()},startingNewChat:ue,onSwitchSession:i=>{Kt(i)},switchingSessionId:Ue,sending:j,briefing:!1,pendingAsk:j?ee:null,onArchiveSession:i=>{Jt(i)},archivingSessionId:_e,onAssistantContextMenu:Gt,suggestedPrompts:qt,onSelectPrompt:i=>{T(i),re(!1)}})}),e.jsxs("div",{className:"flex shrink-0 flex-col gap-1.5 border-t border-[var(--scout-chrome-border-soft)] bg-black/10 px-3 pt-2 pb-2.5",children:[h===!1&&Le&&!v&&e.jsx(Is,{issue:O,probeState:L,onLaunch:Xt,onRetry:()=>{oe(!0)},onSettings:()=>de(!0),onDismiss:()=>ze(!1)}),(M||_)&&!v&&e.jsxs("div",{className:"flex items-center justify-between gap-2 rounded border border-[var(--scout-chrome-border-soft)] bg-black/10 px-2.5 py-2 font-mono text-xs leading-relaxed text-[var(--scout-chrome-ink-faint)]",children:[e.jsx("span",{className:"min-w-0 truncate",children:_?"Speaking reply…":M}),_&&e.jsx("button",{type:"button",title:"Stop spoken reply",onClick:B,className:"shrink-0 rounded border border-[var(--scout-chrome-border-soft)] p-1 text-[var(--scout-chrome-ink)] hover:bg-[var(--scout-chrome-hover)]",children:e.jsx(Mt,{size:11,className:"fill-current"})})]}),le&&!j&&e.jsx("div",{className:"font-mono text-2xs uppercase tracking-[0.12em] text-[var(--scout-chrome-ink-ghost)]",children:le}),e.jsx(Es,{agents:l,draft:k,onDraftChange:T,onSubmit:()=>{fe(k)},sending:j,recording:m,voiceLabel:eo,voiceBusy:E==="processing"||L==="probing"||L==="launching",voiceUnavailable:h===!1,voiceHeld:v,onMicClick:()=>{if(!v){if(h===!1){ze(!0);return}m?Zt():Qt()}},prominent:to&&!v,autoFocus:o,focusSignal:Ft}),N&&e.jsx("div",{className:"rounded border border-red-400/30 bg-red-400/10 px-2.5 py-2 font-mono text-xs leading-relaxed text-red-200",children:N})]})]})}function Ws({onResizeStart:t}){const o=n.useCallback(s=>{s.preventDefault(),t(s)},[t]);return e.jsxs("div",{role:"separator","aria-orientation":"horizontal",onMouseDown:o,className:"group relative flex h-[7px] shrink-0 cursor-ns-resize items-center justify-center",children:[e.jsx("div",{className:"absolute inset-x-0 top-0 h-px bg-[var(--scout-chrome-border-soft)] transition-colors group-hover:bg-[var(--scout-chrome-ink-faint)]"}),e.jsxs("div",{className:"flex flex-row gap-[3px] opacity-0 transition-opacity group-hover:opacity-100",children:[e.jsx("div",{className:"h-[3px] w-[3px] rounded-full bg-[var(--scout-chrome-ink-faint)]"}),e.jsx("div",{className:"h-[3px] w-[3px] rounded-full bg-[var(--scout-chrome-ink-faint)]"}),e.jsx("div",{className:"h-[3px] w-[3px] rounded-full bg-[var(--scout-chrome-ink-faint)]"})]})]})}const At=260,Gs=.7,qs=260;function Ye(t,o){const s=Math.max(At,Math.floor(o*Gs));return Math.min(s,Math.max(At,Math.round(t)))}function Ys(){const t=nt("surface.scoutbot",!0),{route:o,navigate:s,agents:r,selectedBrokerAttempt:l,clearBrokerAttempt:a}=F(),[u]=Xe("openscout.scoutbot.collapsed",!0),[d,f]=Pt("openscout.scoutbot.height",qs),b=n.useRef(null),[v,y]=n.useState(0);n.useLayoutEffect(()=>{const N=b.current;if(!N)return;y(N.getBoundingClientRect().height);const x=new ResizeObserver(h=>{const C=h[0];C&&y(C.contentRect.height)});return x.observe(N),()=>x.disconnect()},[]),n.useEffect(()=>{if(v<=0)return;const N=Ye(d,v);N!==d&&f(N)},[v,d,f]);const S=n.useCallback(N=>{const x=N.clientY,h=d,C=b.current?.getBoundingClientRect().height??v,O=L=>{const V=L.clientY-x;f(Ye(h-V,C))},P=()=>{document.removeEventListener("mousemove",O),document.removeEventListener("mouseup",P),document.body.style.removeProperty("cursor"),document.body.style.removeProperty("user-select")};document.body.style.cursor="ns-resize",document.body.style.userSelect="none",document.addEventListener("mousemove",O),document.addEventListener("mouseup",P)},[v,d,f]);let k=null;const T=t&&o.view==="ops"&&o.mode==="lanes";if(T)k=e.jsx(Ot,{forceExpanded:!0,fill:!0});else switch(o.view){case"ops":k=e.jsx(Xo,{mode:o.mode??"mission",agents:r,navigate:s,returnRoute:o});break;case"broker":k=e.jsx(Jo,{selectedAttempt:l,navigate:s,onClose:a});break;default:k=bo(o,s)}const j=v>0?Ye(d,v):d,I=t&&o.view!=="broker";return e.jsxs("div",{ref:b,className:"flex h-full flex-col overflow-hidden",children:[e.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:k}),I&&!T&&!u&&e.jsx(Ws,{onResizeStart:S}),I&&!T&&e.jsx(Ot,{height:u?void 0:j})]})}const zt="openscout.globalJumpDock.mode.v1";function Ks(){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(zt);return t==="jump"||t==="minimap"?t:null}catch{return null}}function Js(t){try{window.localStorage.setItem(zt,t)}catch{}}function Xs(){const{route:t,navigate:o}=F(),s=t.view==="mesh",[r,l]=n.useState(()=>{const u=Ks();return u==="minimap"&&s?"minimap":u==="jump"?"jump":s?"minimap":"jump"});n.useEffect(()=>{r==="minimap"&&!s&&l("jump")},[r,s]);const a=u=>{l(u),Js(u)};return e.jsxs("div",{className:"gjd",children:[e.jsxs("div",{className:"gjd-head",children:[e.jsx("span",{className:"gjd-ear","aria-hidden":!0}),e.jsxs("div",{className:"gjd-mode",role:"group","aria-label":"Bottom dock mode",children:[e.jsx("button",{type:"button",className:`gjd-mode-btn${r==="jump"?" gjd-mode-btn--active":""}`,onClick:()=>a("jump"),"aria-pressed":r==="jump",children:"jump"}),s&&e.jsx("button",{type:"button",className:`gjd-mode-btn${r==="minimap"?" gjd-mode-btn--active":""}`,onClick:()=>a("minimap"),"aria-pressed":r==="minimap",children:"minimap"})]}),e.jsx("span",{className:"gjd-ear","aria-hidden":!0})]}),e.jsx("div",{className:"gjd-body",children:r==="minimap"&&s?e.jsx(Qo,{}):e.jsx(Zs,{navigate:o})})]})}const Qs=Yo();function Zs({navigate:t}){const o=nt("ops.control",!0),s=Qs.filter(r=>!r.opsGated||o);return e.jsx("div",{className:"gjd-jumps",children:s.map(r=>{const l=r.icon;return e.jsxs("button",{type:"button",className:"gjd-jump",onClick:()=>t(r.route),children:[e.jsx("span",{className:"gjd-jump-icon",children:n.createElement(l,{size:13,strokeWidth:1.6})}),e.jsx("span",{className:"gjd-jump-label",children:r.label})]},r.id)})})}function en(){const{route:t,navigate:o}=F();return e.jsxs("div",{className:"scout-left-shell",children:[e.jsx("div",{className:"scout-left-shell-rail",children:vo(t,o)}),e.jsx(Xs,{})]})}function tn(){const t=no(),o=ro(),s=Zo({url:t,healthUrl:o,autoConnect:!0,sessionKey:"scout-terminal"});return e.jsx("div",{style:{height:"100%",background:"#0d0d0d",overflow:"hidden"},children:e.jsx(es,{relay:s,fontSize:13,configItems:[{label:"ws",value:t},{label:"health",value:o}]})})}const on="Scout's local server isn't responding. It may still be starting up — wait a moment and try again.",sn="Scout couldn't start its background service. Restart Scout from the menu bar icon, then try again.",nn="The broker isn't running yet. Start Scout's services from the menu bar icon, then run setup again.",rn="Starting the broker took too long. Try again — if it keeps happening, restart Scout.",an="Scout couldn't write its settings in your home folder (~/.openscout). Check the folder's permissions and try again.",cn="That folder doesn't exist on this Mac. Double-check the path — for example /Users/you/dev.";function ye(t,o){const s=o instanceof Error?o.message:String(o);return ho(yt(o))?on:/Unable to locate scoutd|Unable to locate Bun/i.test(s)?sn:/openscout-runtime broker/i.test(s)?nn:/timed out/i.test(s)?rn:/EACCES|EPERM|EROFS/i.test(s)?an:t==="project"&&/ENOENT|does not exist|doesn'?t exist/i.test(s)?/does not exist|doesn'?t exist/i.test(s)&&/[/~]/.test(s)?s:cn:yt(o)}const Oe=4;function ln(){const{onboarding:t}=F();return t?t.hasLocalConfig?t.hasOperatorName?t.hasProjectConfig?t.needed!==!1&&(!t.brokerReachable||!t.hasReadyRuntime)?e.jsx(Te,{children:e.jsx(pn,{step:4})}):null:e.jsx(Te,{children:e.jsx(mn,{step:3})}):e.jsx(Te,{children:e.jsx(un,{step:2})}):e.jsx(Te,{children:e.jsx(dn,{step:1})}):null}function Te({children:t}){return e.jsx("div",{style:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",overflow:"auto",background:"var(--bg)",color:"var(--ink)"},children:e.jsx("div",{style:{width:"100%",maxWidth:720,padding:"80px 72px",display:"flex",flexDirection:"column",gap:40},children:t})})}function Ae({eyebrow:t,title:o,description:s}){return e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:16},children:[e.jsx("div",{style:hn,children:t}),e.jsx("div",{style:fn,children:o}),e.jsx("div",{style:gn,children:s})]})}function Ie({primary:t,onPrimary:o,primaryDisabled:s,busy:r}){const{skipOnboarding:l}=F();return e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:10,paddingTop:8},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:24},children:[e.jsx("button",{type:"button",onClick:o,disabled:s||r,style:{...xn,opacity:s||r?.5:1,cursor:s||r?"default":"pointer"},children:r?"Working…":t}),e.jsx("button",{type:"button",onClick:l,style:bn,onMouseEnter:a=>{a.currentTarget.style.color="rgba(255,255,255,0.8)"},onMouseLeave:a=>{a.currentTarget.style.color="rgba(255,255,255,0.45)"},children:"Set up later"})]}),e.jsx("div",{style:{fontSize:11,color:"rgba(255,255,255,0.35)",lineHeight:1.5},children:"Scout stays limited until setup finishes."})]})}function Pe({message:t}){return t?e.jsx("div",{style:{borderRadius:8,border:"1px solid rgba(239,68,68,0.35)",backgroundColor:"rgba(239,68,68,0.08)",color:"rgba(252,165,165,0.95)",padding:"12px 16px",fontSize:12,lineHeight:1.5},children:t}):null}function dn({step:t}){const{onboarding:o,refreshOnboarding:s}=F(),[r,l]=n.useState(!1),[a,u]=n.useState(null),d=async()=>{l(!0),u(null);try{await $("/api/onboarding/init",{method:"POST",body:"{}"}),await s()}catch(f){u(ye("init",f))}finally{l(!1)}};return e.jsxs(e.Fragment,{children:[e.jsx(Ae,{eyebrow:`First-run setup · Step ${t} of ${Oe}`,title:"Welcome to Scout",description:e.jsxs(e.Fragment,{children:["Scout needs a local config before it can talk to the broker, the web app, and paired devices. This writes"," ",e.jsx("code",{style:st,children:"~/.openscout/config.json"})," with sensible defaults — you can edit it any time."]})}),e.jsxs("ul",{style:_t,children:[e.jsx(be,{label:"Local config (~/.openscout/config.json)",done:!1,hint:"missing"}),e.jsx(be,{label:".openscout/project.json in a repo",done:!!o?.hasProjectConfig,hint:o?.hasProjectConfig?o.projectRoot??void 0:"checked after setup"})]}),e.jsx(Pe,{message:a}),e.jsx(Ie,{primary:"Initialize Scout",onPrimary:()=>{d()},busy:r})]})}function un({step:t}){const{onboarding:o,refreshOnboarding:s}=F(),r=o?.operatorNameSuggestion??"",[l,a]=n.useState(r),[u,d]=n.useState(!1),[f,b]=n.useState(null);n.useEffect(()=>{!l&&r&&a(r)},[r,l]);const v=async()=>{const y=l.trim();if(!y){b("Name is required.");return}d(!0),b(null);try{await $("/api/user",{method:"POST",body:JSON.stringify({name:y})}),await s()}catch(S){b(ye("identity",S))}finally{d(!1)}};return e.jsxs(e.Fragment,{children:[e.jsx(Ae,{eyebrow:`Identity · Step ${t} of ${Oe}`,title:"What should we call you?",description:"Your name shows up on messages you send and in any agent that speaks for you. You can change it later in Settings."}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[e.jsx("label",{style:Re,children:"Your name"}),e.jsx("input",{autoFocus:!0,value:l,onChange:y=>{a(y.target.value),b(null)},onKeyDown:y=>{y.key==="Enter"&&v()},placeholder:r||"Operator",style:ot}),r?e.jsx("div",{style:{fontSize:11,color:"rgba(255,255,255,0.4)",fontFamily:"var(--hud-font-mono)"},children:"Prefilled from your machine."}):null]}),e.jsx(Pe,{message:f}),e.jsx(Ie,{primary:"Continue",onPrimary:()=>{v()},busy:u,primaryDisabled:!l.trim()})]})}function mn({step:t}){const{onboarding:o,refreshOnboarding:s}=F(),r=o?.currentDirectory??"",l=r||"~/dev",[a,u]=n.useState([l]),[d,f]=n.useState(r),[b,v]=n.useState("claude"),[y,S]=n.useState(!1),[k,T]=n.useState(null),j=(h,C)=>{u(O=>O.map((P,L)=>L===h?C:P))},I=()=>u(h=>[...h,""]),N=h=>u(C=>C.filter((O,P)=>P!==h)),x=async()=>{const h=a.map(O=>O.trim()).filter(Boolean),C=d.trim();if(!C){T("Pick where Scout should anchor this context.");return}S(!0),T(null);try{await $("/api/onboarding/project",{method:"POST",body:JSON.stringify({contextRoot:C,sourceRoots:h,defaultHarness:b})}),await s()}catch(O){T(ye("project",O))}finally{S(!1)}};return e.jsxs(e.Fragment,{children:[e.jsx(Ae,{eyebrow:`Project · Step ${t} of ${Oe}`,title:"Where do your repos live?",description:e.jsxs(e.Fragment,{children:["Scout scans these folders for projects and anchors this context at"," ",e.jsx("code",{style:st,children:"<context>/.openscout/project.json"}),"."]})}),e.jsxs("div",{style:Ke,children:[e.jsx("label",{style:Re,children:"Scan folders"}),e.jsxs("div",{style:{display:"flex",flexDirection:"column",gap:8},children:[a.map((h,C)=>e.jsxs("div",{style:{display:"flex",gap:8},children:[e.jsx("input",{value:h,onChange:O=>j(C,O.target.value),placeholder:C===0?l:"Add another folder",style:{...ot,flex:1}}),e.jsx("button",{type:"button",onClick:()=>N(C),disabled:a.length<=1,style:{...It,opacity:a.length<=1?.4:1,cursor:a.length<=1?"default":"pointer"},"aria-label":`Remove folder ${C+1}`,children:"−"})]},C)),e.jsx("button",{type:"button",onClick:I,style:{...It,alignSelf:"flex-start"},children:"+ Add folder"})]})]}),e.jsxs("div",{style:Ke,children:[e.jsx("label",{style:Re,children:"Context root"}),e.jsx("input",{value:d,onChange:h=>f(h.target.value),placeholder:l,style:ot}),e.jsxs("div",{style:Je,children:["Scout writes ",e.jsx("code",{style:st,children:".openscout/project.json"})," ","inside this folder."]}),e.jsx("div",{style:Je,children:"Tip: ~ expands to your home folder."})]}),e.jsxs("div",{style:Ke,children:[e.jsx("label",{style:Re,children:"Default harness"}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr",gap:12},children:["claude","codex"].map(h=>{const C=b===h;return e.jsxs("button",{type:"button",onClick:()=>v(h),style:{...vn,borderColor:C?"var(--accent, #2dd4bf)":"rgba(255,255,255,0.12)",backgroundColor:C?"rgba(45,212,191,0.08)":"rgba(255,255,255,0.02)"},children:[e.jsx("div",{style:{fontSize:15,fontWeight:600,textTransform:"capitalize"},children:h}),e.jsx("div",{style:{fontSize:12,color:"rgba(255,255,255,0.55)",marginTop:6,lineHeight:1.5},children:h==="claude"?"Anthropic Claude Code — local CLI agent.":"OpenAI Codex — cloud agentic sandbox."}),e.jsx("div",{style:{fontSize:11,fontFamily:"var(--hud-font-mono)",color:"rgba(255,255,255,0.4)",marginTop:8,lineHeight:1.5},children:h==="claude"?"Requires the Claude Code CLI, installed and signed in.":"Requires the Codex CLI, installed and signed in."})]},h)})}),e.jsx("div",{style:Je,children:"Not installed yet? Pick one anyway — the final step checks and tells you what's missing."})]}),e.jsx(Pe,{message:k}),e.jsx(Ie,{primary:"Create project",onPrimary:()=>{x()},busy:y,primaryDisabled:!d.trim()})]})}function pn({step:t}){const{onboarding:o,refreshOnboarding:s}=F(),[r,l]=n.useState(!1),[a,u]=n.useState(null),d=async()=>{l(!0),u(null);try{const f=await $("/api/onboarding/setup",{method:"POST",body:"{}"});await s(),f.brokerWarning?u(ye("setup",f.brokerWarning)):f.hasReadyRuntime===!1&&u("Setup finished, but Scout didn't find a coding agent it can use. Install Claude Code or Codex, sign in from a terminal, then choose Run setup again.")}catch(f){u(ye("setup",f))}finally{l(!1)}};return e.jsxs(e.Fragment,{children:[e.jsx(Ae,{eyebrow:`Setup · Step ${t} of ${Oe}`,title:"Finish setup",description:"Scout will install its harness skills, start the local broker, refresh discovery, and check for a ready agent runtime."}),e.jsxs("ul",{style:_t,children:[e.jsx(be,{label:".openscout/project.json",done:!!o?.hasProjectConfig,hint:o?.projectConfigPath??o?.projectRoot??void 0}),e.jsx(be,{label:"Broker reachable",done:!!o?.brokerReachable,hint:o?.brokerReachable?"ready":"will start during setup"}),e.jsx(be,{label:"Claude or Codex runtime",done:!!o?.hasReadyRuntime,hint:o?.hasReadyRuntime?"ready":"install Claude Code or Codex, then sign in"})]}),e.jsx(Pe,{message:a}),e.jsx(Ie,{primary:"Run setup",onPrimary:()=>{d()},busy:r})]})}function be({label:t,done:o,hint:s}){return e.jsxs("li",{style:{display:"flex",alignItems:"flex-start",gap:16},children:[e.jsx("span",{style:{marginTop:2,width:20,height:20,borderRadius:999,display:"flex",alignItems:"center",justifyContent:"center",fontSize:11,fontWeight:700,flexShrink:0,backgroundColor:o?"rgba(34,197,94,0.15)":"rgba(239,68,68,0.12)",color:o?"#4ade80":"#f87171"},children:o?"✓":"•"}),e.jsxs("div",{style:{minWidth:0},children:[e.jsx("div",{style:{fontSize:13,lineHeight:1.5,color:o?"rgba(255,255,255,0.75)":"rgba(255,255,255,0.9)"},children:t}),s?e.jsx("div",{style:{fontSize:11,fontFamily:"var(--hud-font-mono)",color:"rgba(255,255,255,0.35)",marginTop:4,wordBreak:"break-all"},children:s}):null]})]})}const hn={fontSize:11,fontFamily:"var(--hud-font-mono)",textTransform:"uppercase",letterSpacing:"0.18em",color:"rgba(255,255,255,0.4)"},fn={fontSize:36,fontWeight:600,letterSpacing:"-0.01em",lineHeight:1.15},gn={fontSize:15,lineHeight:1.75,color:"rgba(255,255,255,0.6)",maxWidth:580},Ke={display:"flex",flexDirection:"column",gap:10},Re={fontSize:11,fontFamily:"var(--hud-font-mono)",textTransform:"uppercase",letterSpacing:"0.15em",color:"rgba(255,255,255,0.5)"},ot={width:"100%",padding:"10px 14px",fontSize:14,fontFamily:"var(--hud-font-mono)",color:"rgba(255,255,255,0.92)",backgroundColor:"rgba(255,255,255,0.04)",border:"1px solid rgba(255,255,255,0.12)",borderRadius:8,outline:"none",boxSizing:"border-box"},Je={fontSize:12,color:"rgba(255,255,255,0.45)",lineHeight:1.6},st={fontFamily:"var(--hud-font-mono)",fontSize:12,padding:"2px 6px",borderRadius:4,backgroundColor:"rgba(255,255,255,0.06)"},xn={fontSize:13,fontWeight:600,padding:"12px 24px",borderRadius:10,backgroundColor:"var(--accent, #2dd4bf)",color:"#0b0d12",border:"none",transition:"opacity 0.15s ease"},It={fontSize:13,fontWeight:500,padding:"10px 14px",borderRadius:8,backgroundColor:"rgba(255,255,255,0.04)",border:"1px solid rgba(255,255,255,0.12)",color:"rgba(255,255,255,0.85)",transition:"all 0.15s ease"},bn={fontSize:12,color:"rgba(255,255,255,0.45)",textDecoration:"underline dotted rgba(255,255,255,0.25)",textUnderlineOffset:4,background:"none",border:"none",cursor:"pointer",padding:"4px 2px",transition:"color 0.15s ease"},_t={display:"flex",flexDirection:"column",gap:20,margin:0,padding:0,listStyle:"none"},vn={textAlign:"left",padding:"16px 18px",borderRadius:12,borderWidth:1,borderStyle:"solid",borderColor:"rgba(255,255,255,0.12)",color:"rgba(255,255,255,0.9)",cursor:"pointer",transition:"all 0.15s ease"},yn=[{commandId:"nav:home",title:"Go to Home",description:"Navigate to the home overview showing queue, threads, signal, and activity",category:"navigation",keywords:["home","inbox","dashboard"],shortcut:"Cmd+1"},{commandId:"nav:agents",title:"Go to Agents",description:"Navigate to the agents roster showing all registered agents",category:"navigation",keywords:["agents","roster","list"],shortcut:"Cmd+2"},{commandId:"nav:messages",title:"Go to Chat",description:"Navigate to the unified chat surface backed by the normalized conversations service",category:"navigation",keywords:["conversations","comms","chat","threads","channels","channel","group","broadcast"],shortcut:"Cmd+3"},{commandId:"nav:sessions",title:"Open Sessions",description:"Navigate to the sessions list showing all active conversations",category:"navigation",keywords:["sessions","conversations","threads"]},{commandId:"nav:search",title:"Go to Search",description:"Navigate to the session knowledge search surface for extraction, search, and raw-log drilldown planning",category:"navigation",keywords:["search","knowledge","qmd","history"],shortcut:"Cmd+4"},{commandId:"nav:activity",title:"Open Activity",description:"Navigate to the activity feed showing recent events",category:"navigation",keywords:["activity","feed","events","log"]},{commandId:"nav:mesh",title:"Open Mesh",description:"Navigate to the mesh network view showing nodes and topology",category:"navigation",keywords:["mesh","network","nodes","peers","topology"]},{commandId:"nav:dispatch",title:"Open Dispatch",description:"Navigate to the dispatch ledger for routing, delivery attempts, and failed queries",category:"navigation",keywords:["dispatch","broker","routing","delivery","messages"]},{commandId:"nav:repos",title:"Open Repos",description:"Navigate to the repos view for branches, diffs, and working-tree state",category:"navigation",keywords:["repos","repositories","git","branches","diffs"]},{commandId:"nav:harnesses",title:"Open Providers",description:"Open the central view for providers, harnesses, observed topology, and budget feeds",category:"navigation",keywords:["provider","providers","harness","harnesses","claude","codex","budget","usage","topology"]},{commandId:"nav:ops",title:"Go to Ops",description:"Navigate to the operator workspace for dispatch, mesh, tail, runtime, alerts, and agent operations",category:"navigation",keywords:["ops","operator","control","tail","runtime","services","atop","dispatch","mesh"],shortcut:"Cmd+5"},{commandId:"nav:ops-atop",title:"Open Runtime",description:"Open the live agent/process view with observed harness families",category:"navigation",keywords:["runtime","services","atop","process","session","agent","topology"]},{commandId:"nav:settings",title:"Open Settings",description:"Open the settings screen for pairing, identity, and relay config",category:"settings",keywords:["settings","preferences","config","pair"],shortcut:"Cmd+,"},{commandId:"nav:agent-config",title:"Open Agent Configuration",description:"Open the unified agent configuration surface for runtimes, agents, tools, delivery, and broker state",category:"settings",keywords:["agent config","runtimes","providers","mcp","tools"]},{commandId:"nav:pair",title:"Pair Device",description:"Open the device pairing flow to connect a mobile device",category:"settings",keywords:["pair","qr","device","phone","mobile"]},{commandId:"scout:reload",title:"Reload Agents",description:"Refresh the agent list and message state from the broker",category:"workspace",keywords:["reload","refresh","sync"]},{commandId:"scout:open:*",title:"Open Agent",description:"Open the agent's view (runtime, sessions, inspector) for one specific agent.",category:"navigation",keywords:["open","agent","view","inspect"],params:[{name:"agentId",description:"The agent identifier to open",type:"string"}]},{commandId:"scout:message:*",title:"Message Agent",description:"Open the DM conversation for one specific agent to message them. One agent maps to a DM; group work belongs in an explicit channel and broadcasts belong in the shared channel.",category:"workspace",keywords:["message","chat","conversation","dm","tell","ask","reply"],params:[{name:"agentId",description:"The agent identifier to message",type:"string"}]}];function Sn(t={}){const{initialTheme:o="dark"}=t,s=io();return{id:"openscout",name:"Scout",description:"All your agents, one message away. Scout is a control plane for managing coding agents: Send posts into a Chat, direct agent messages create or steer Runs, and shared work stays in explicit channels.",mode:"panel",icon:n.createElement("svg",{width:14,height:14,viewBox:"0 0 20 20",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":!0},n.createElement("polygon",{points:"10,4.3 14.8,7.1 14.8,12.9 10,15.7 5.2,12.9 5.2,7.1",strokeWidth:1.9}),n.createElement("polygon",{points:"10,7 12.4,8.4 12.4,10.6 10,12 7.6,10.6 7.6,8.4",strokeWidth:1.32,opacity:.74})),Provider:({children:r})=>n.createElement(fo,{defaultTheme:o,defaultTemplate:s,storageKey:ao,children:n.createElement(go,{initialTheme:o,children:r})}),leftPanel:{title:"Navigation"},rightPanel:{title:"Context"},slots:{Content:ls,LeftPanel:en,Inspector:Ys,Takeover:ln,Terminal:tn},intents:yn,hooks:{useCommands:is,useStatus:rs,useNavCenter:ns,useNavActions:ss,useLayoutMode:os,useTakeover:ts}}}Sn();export{Sn as createScoutApp};
|