@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
|
@@ -74,33 +74,49 @@ function requestBrokerOverUnixSocket(socketPath, baseUrl, path, options) {
|
|
|
74
74
|
if (body !== undefined) {
|
|
75
75
|
headers["content-length"] = Buffer.byteLength(body).toString();
|
|
76
76
|
}
|
|
77
|
+
let settled = false;
|
|
78
|
+
const cleanupAbortListener = () => {
|
|
79
|
+
options.signal?.removeEventListener("abort", handleAbort);
|
|
80
|
+
};
|
|
81
|
+
const rejectOnce = (error) => {
|
|
82
|
+
if (settled)
|
|
83
|
+
return;
|
|
84
|
+
settled = true;
|
|
85
|
+
cleanupAbortListener();
|
|
86
|
+
reject(error);
|
|
87
|
+
};
|
|
77
88
|
const request = httpRequest({
|
|
78
89
|
socketPath,
|
|
79
90
|
path: `${url.pathname}${url.search}`,
|
|
80
91
|
method: options.method ?? (body === undefined ? "GET" : "POST"),
|
|
81
92
|
headers
|
|
82
93
|
}, (response) => {
|
|
83
|
-
|
|
84
|
-
response.setEncoding("utf8");
|
|
94
|
+
const chunks = [];
|
|
85
95
|
response.on("data", (chunk) => {
|
|
86
|
-
|
|
96
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
97
|
+
});
|
|
98
|
+
response.on("aborted", () => {
|
|
99
|
+
rejectOnce(new Error("Scout broker response aborted"));
|
|
87
100
|
});
|
|
101
|
+
response.on("error", rejectOnce);
|
|
88
102
|
response.on("end", () => {
|
|
89
|
-
|
|
103
|
+
if (settled)
|
|
104
|
+
return;
|
|
105
|
+
settled = true;
|
|
106
|
+
cleanupAbortListener();
|
|
90
107
|
resolve({
|
|
91
108
|
ok: Boolean(response.statusCode && response.statusCode >= 200 && response.statusCode < 300),
|
|
92
109
|
status: response.statusCode ?? 0,
|
|
93
|
-
text
|
|
110
|
+
text: Buffer.concat(chunks).toString("utf8")
|
|
94
111
|
});
|
|
95
112
|
});
|
|
96
113
|
});
|
|
97
114
|
const handleAbort = () => {
|
|
98
|
-
|
|
115
|
+
const error = options.signal?.reason instanceof Error ? options.signal.reason : new Error("Scout broker request aborted");
|
|
116
|
+
rejectOnce(error);
|
|
117
|
+
request.destroy(error);
|
|
99
118
|
};
|
|
100
|
-
request.on("error",
|
|
101
|
-
options.signal?.removeEventListener("abort", handleAbort);
|
|
102
|
-
reject(error);
|
|
103
|
-
});
|
|
119
|
+
request.on("error", rejectOnce);
|
|
104
120
|
if (options.signal) {
|
|
105
121
|
if (options.signal.aborted) {
|
|
106
122
|
handleAbort();
|
|
@@ -177,6 +193,175 @@ async function requestScoutBrokerJsonWithTrace(baseUrl, path, options = {}) {
|
|
|
177
193
|
return { value: undefined, trace };
|
|
178
194
|
}
|
|
179
195
|
|
|
196
|
+
// packages/runtime/src/schema-version.ts
|
|
197
|
+
var CONTROL_PLANE_SCHEMA_VERSION = 17;
|
|
198
|
+
|
|
199
|
+
// packages/runtime/src/sqlite-adapter.ts
|
|
200
|
+
import { createRequire } from "module";
|
|
201
|
+
|
|
202
|
+
// packages/runtime/src/runtime-adapters.ts
|
|
203
|
+
function detectRuntimeHost(globalScope = globalThis) {
|
|
204
|
+
return typeof globalScope.Bun === "undefined" ? "node" : "bun";
|
|
205
|
+
}
|
|
206
|
+
function normalizeRuntimeHost(value) {
|
|
207
|
+
const normalized = value?.trim().toLowerCase();
|
|
208
|
+
if (normalized === "bun")
|
|
209
|
+
return "bun";
|
|
210
|
+
if (normalized === "node")
|
|
211
|
+
return "node";
|
|
212
|
+
return null;
|
|
213
|
+
}
|
|
214
|
+
function normalizeRuntimeServiceAdapter(value) {
|
|
215
|
+
const normalized = value?.trim().toLowerCase().replaceAll("_", "-");
|
|
216
|
+
if (normalized === "macos-scoutd" || normalized === "macos-launchd")
|
|
217
|
+
return "macos-scoutd";
|
|
218
|
+
if (normalized === "linux-systemd-user" || normalized === "systemd-user")
|
|
219
|
+
return "linux-systemd-user";
|
|
220
|
+
if (normalized === "headless-foreground" || normalized === "foreground" || normalized === "headless") {
|
|
221
|
+
return "headless-foreground";
|
|
222
|
+
}
|
|
223
|
+
if (normalized === "windows-service")
|
|
224
|
+
return "windows-service";
|
|
225
|
+
return null;
|
|
226
|
+
}
|
|
227
|
+
function defaultServiceAdapterForPlatform(platform = process.platform, env = process.env) {
|
|
228
|
+
const explicit = normalizeRuntimeServiceAdapter(env.OPENSCOUT_SERVICE_ADAPTER);
|
|
229
|
+
if (explicit)
|
|
230
|
+
return explicit;
|
|
231
|
+
if (normalizeRuntimeHost(env.OPENSCOUT_RUNTIME_HOST) === "node") {
|
|
232
|
+
return "headless-foreground";
|
|
233
|
+
}
|
|
234
|
+
if (platform === "darwin")
|
|
235
|
+
return "macos-scoutd";
|
|
236
|
+
if (platform === "linux")
|
|
237
|
+
return "headless-foreground";
|
|
238
|
+
if (platform === "win32")
|
|
239
|
+
return "windows-service";
|
|
240
|
+
return "headless-foreground";
|
|
241
|
+
}
|
|
242
|
+
function planRuntimeAdapters(options = {}) {
|
|
243
|
+
const env = options.env ?? process.env;
|
|
244
|
+
const host = options.host ?? normalizeRuntimeHost(env.OPENSCOUT_RUNTIME_HOST) ?? detectRuntimeHost();
|
|
245
|
+
return {
|
|
246
|
+
host,
|
|
247
|
+
database: host === "bun" ? "bun-sqlite" : "node-sqlite",
|
|
248
|
+
httpServer: host === "bun" ? "bun-serve" : "node-http-ws",
|
|
249
|
+
files: host === "bun" ? "bun-file" : "node-fs",
|
|
250
|
+
process: host === "bun" ? "bun-spawn" : "node-child-process",
|
|
251
|
+
service: defaultServiceAdapterForPlatform(options.platform, env)
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// packages/runtime/src/sqlite-adapter.ts
|
|
256
|
+
var require2 = createRequire(import.meta.url);
|
|
257
|
+
function controlPlaneSqliteAdapterKind() {
|
|
258
|
+
return planRuntimeAdapters().database;
|
|
259
|
+
}
|
|
260
|
+
function openControlPlaneSqliteDatabase(path, options) {
|
|
261
|
+
return openRuntimeSqliteDatabase(path, options);
|
|
262
|
+
}
|
|
263
|
+
function openRuntimeSqliteDatabase(path, options) {
|
|
264
|
+
const adapter = controlPlaneSqliteAdapterKind();
|
|
265
|
+
if (adapter === "bun-sqlite") {
|
|
266
|
+
const { Database } = require2("bun:sqlite");
|
|
267
|
+
return new Database(path, options);
|
|
268
|
+
}
|
|
269
|
+
const { DatabaseSync } = require2("node:sqlite");
|
|
270
|
+
return new NodeSqliteDatabaseAdapter(new DatabaseSync(path, {
|
|
271
|
+
open: true,
|
|
272
|
+
readOnly: options?.readonly === true
|
|
273
|
+
}));
|
|
274
|
+
}
|
|
275
|
+
function prepareNodeSqliteSql(sql) {
|
|
276
|
+
const numberedParamIndexes = [];
|
|
277
|
+
const normalizedSql = sql.replace(/\?(\d+)/g, (_match, rawIndex) => {
|
|
278
|
+
numberedParamIndexes.push(Number.parseInt(rawIndex, 10) - 1);
|
|
279
|
+
return "?";
|
|
280
|
+
});
|
|
281
|
+
return {
|
|
282
|
+
sql: normalizedSql,
|
|
283
|
+
numberedParamIndexes: numberedParamIndexes.length > 0 ? numberedParamIndexes : null
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
function bindNodeSqliteParams(numberedParamIndexes, params) {
|
|
287
|
+
if (!numberedParamIndexes) {
|
|
288
|
+
return params;
|
|
289
|
+
}
|
|
290
|
+
return numberedParamIndexes.map((index) => params[index]);
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
class NodeSqliteStatementAdapter {
|
|
294
|
+
statement;
|
|
295
|
+
numberedParamIndexes;
|
|
296
|
+
constructor(statement, numberedParamIndexes) {
|
|
297
|
+
this.statement = statement;
|
|
298
|
+
this.numberedParamIndexes = numberedParamIndexes;
|
|
299
|
+
}
|
|
300
|
+
all(...params) {
|
|
301
|
+
return this.statement.all(...bindNodeSqliteParams(this.numberedParamIndexes, params));
|
|
302
|
+
}
|
|
303
|
+
get(...params) {
|
|
304
|
+
return this.statement.get(...bindNodeSqliteParams(this.numberedParamIndexes, params)) ?? null;
|
|
305
|
+
}
|
|
306
|
+
run(...params) {
|
|
307
|
+
return this.statement.run(...bindNodeSqliteParams(this.numberedParamIndexes, params));
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
class NodeSqliteDatabaseAdapter {
|
|
312
|
+
database;
|
|
313
|
+
transactionDepth = 0;
|
|
314
|
+
savepointId = 0;
|
|
315
|
+
constructor(database) {
|
|
316
|
+
this.database = database;
|
|
317
|
+
}
|
|
318
|
+
exec(sql) {
|
|
319
|
+
return this.database.exec(sql);
|
|
320
|
+
}
|
|
321
|
+
query(sql) {
|
|
322
|
+
const prepared = prepareNodeSqliteSql(sql);
|
|
323
|
+
return new NodeSqliteStatementAdapter(this.database.prepare(prepared.sql), prepared.numberedParamIndexes);
|
|
324
|
+
}
|
|
325
|
+
close() {
|
|
326
|
+
this.database.close();
|
|
327
|
+
}
|
|
328
|
+
transaction(callback) {
|
|
329
|
+
return (...args) => {
|
|
330
|
+
if (this.transactionDepth > 0) {
|
|
331
|
+
return this.runSavepoint(callback, args);
|
|
332
|
+
}
|
|
333
|
+
this.database.exec("BEGIN IMMEDIATE;");
|
|
334
|
+
this.transactionDepth += 1;
|
|
335
|
+
try {
|
|
336
|
+
const result = callback(...args);
|
|
337
|
+
this.database.exec("COMMIT;");
|
|
338
|
+
return result;
|
|
339
|
+
} catch (error) {
|
|
340
|
+
this.database.exec("ROLLBACK;");
|
|
341
|
+
throw error;
|
|
342
|
+
} finally {
|
|
343
|
+
this.transactionDepth -= 1;
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
runSavepoint(callback, args) {
|
|
348
|
+
const savepointName = `openscout_nested_${this.savepointId++}`;
|
|
349
|
+
this.database.exec(`SAVEPOINT ${savepointName};`);
|
|
350
|
+
this.transactionDepth += 1;
|
|
351
|
+
try {
|
|
352
|
+
const result = callback(...args);
|
|
353
|
+
this.database.exec(`RELEASE SAVEPOINT ${savepointName};`);
|
|
354
|
+
return result;
|
|
355
|
+
} catch (error) {
|
|
356
|
+
this.database.exec(`ROLLBACK TO SAVEPOINT ${savepointName};`);
|
|
357
|
+
this.database.exec(`RELEASE SAVEPOINT ${savepointName};`);
|
|
358
|
+
throw error;
|
|
359
|
+
} finally {
|
|
360
|
+
this.transactionDepth -= 1;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
180
365
|
// packages/runtime/src/support-paths.ts
|
|
181
366
|
import { homedir } from "os";
|
|
182
367
|
import { join } from "path";
|
|
@@ -787,7 +972,7 @@ var SCOUT_HOST_PROBE_SCHEMA_VERSIONS = {
|
|
|
787
972
|
"git.mergeBase": 1,
|
|
788
973
|
"git.logLastCommitUnix": 1,
|
|
789
974
|
"git.worktreeListPorcelain": 1,
|
|
790
|
-
"tmux.sessions":
|
|
975
|
+
"tmux.sessions": 2,
|
|
791
976
|
"tmux.panes": 1,
|
|
792
977
|
"zellij.sessions": 1,
|
|
793
978
|
"ps.runtime": 1,
|
|
@@ -1546,6 +1731,8 @@ var tailscaleStatusProbe = defineProbe({
|
|
|
1546
1731
|
|
|
1547
1732
|
// packages/runtime/src/tailscale.ts
|
|
1548
1733
|
var DEFAULT_TAILSCALE_STATUS_TIMEOUT_MS2 = 1500;
|
|
1734
|
+
var SYNC_TAILSCALE_STATUS_CACHE_MS = 30000;
|
|
1735
|
+
var syncStatusCache = null;
|
|
1549
1736
|
function readStatusJsonFromFileSync(filePath) {
|
|
1550
1737
|
const raw = readFileSync2(filePath, "utf8");
|
|
1551
1738
|
return parseTailscaleStatusJson(raw);
|
|
@@ -1570,6 +1757,15 @@ function readStatusJsonSync(env = process.env) {
|
|
|
1570
1757
|
if (!tailscaleBin) {
|
|
1571
1758
|
return null;
|
|
1572
1759
|
}
|
|
1760
|
+
const cacheKey = [
|
|
1761
|
+
tailscaleBin,
|
|
1762
|
+
env.OPENSCOUT_TAILSCALE_AUTO_HOSTS ?? "",
|
|
1763
|
+
env.OPENSCOUT_TAILSCALE_STATUS_TIMEOUT_MS ?? ""
|
|
1764
|
+
].join("\x00");
|
|
1765
|
+
const cached = syncStatusCache;
|
|
1766
|
+
if (env === process.env && cached?.key === cacheKey && Date.now() - cached.at < SYNC_TAILSCALE_STATUS_CACHE_MS) {
|
|
1767
|
+
return cached.value;
|
|
1768
|
+
}
|
|
1573
1769
|
try {
|
|
1574
1770
|
const stdout = execFileSync(tailscaleBin, ["status", "--json"], {
|
|
1575
1771
|
encoding: "utf8",
|
|
@@ -1577,8 +1773,13 @@ function readStatusJsonSync(env = process.env) {
|
|
|
1577
1773
|
timeout: statusTimeoutMs2(env),
|
|
1578
1774
|
windowsHide: true
|
|
1579
1775
|
});
|
|
1580
|
-
|
|
1776
|
+
const value = parseTailscaleStatusJson(stdout);
|
|
1777
|
+
if (env === process.env)
|
|
1778
|
+
syncStatusCache = { key: cacheKey, at: Date.now(), value };
|
|
1779
|
+
return value;
|
|
1581
1780
|
} catch {
|
|
1781
|
+
if (env === process.env)
|
|
1782
|
+
syncStatusCache = { key: cacheKey, at: Date.now(), value: null };
|
|
1582
1783
|
return null;
|
|
1583
1784
|
}
|
|
1584
1785
|
}
|
|
@@ -1798,44 +1999,6 @@ function findExecutableOnSearchPath(name, env) {
|
|
|
1798
1999
|
return null;
|
|
1799
2000
|
}
|
|
1800
2001
|
|
|
1801
|
-
// packages/runtime/src/runtime-adapters.ts
|
|
1802
|
-
function normalizeRuntimeHost(value) {
|
|
1803
|
-
const normalized = value?.trim().toLowerCase();
|
|
1804
|
-
if (normalized === "bun")
|
|
1805
|
-
return "bun";
|
|
1806
|
-
if (normalized === "node")
|
|
1807
|
-
return "node";
|
|
1808
|
-
return null;
|
|
1809
|
-
}
|
|
1810
|
-
function normalizeRuntimeServiceAdapter(value) {
|
|
1811
|
-
const normalized = value?.trim().toLowerCase().replaceAll("_", "-");
|
|
1812
|
-
if (normalized === "macos-scoutd" || normalized === "macos-launchd")
|
|
1813
|
-
return "macos-scoutd";
|
|
1814
|
-
if (normalized === "linux-systemd-user" || normalized === "systemd-user")
|
|
1815
|
-
return "linux-systemd-user";
|
|
1816
|
-
if (normalized === "headless-foreground" || normalized === "foreground" || normalized === "headless") {
|
|
1817
|
-
return "headless-foreground";
|
|
1818
|
-
}
|
|
1819
|
-
if (normalized === "windows-service")
|
|
1820
|
-
return "windows-service";
|
|
1821
|
-
return null;
|
|
1822
|
-
}
|
|
1823
|
-
function defaultServiceAdapterForPlatform(platform = process.platform, env = process.env) {
|
|
1824
|
-
const explicit = normalizeRuntimeServiceAdapter(env.OPENSCOUT_SERVICE_ADAPTER);
|
|
1825
|
-
if (explicit)
|
|
1826
|
-
return explicit;
|
|
1827
|
-
if (normalizeRuntimeHost(env.OPENSCOUT_RUNTIME_HOST) === "node") {
|
|
1828
|
-
return "headless-foreground";
|
|
1829
|
-
}
|
|
1830
|
-
if (platform === "darwin")
|
|
1831
|
-
return "macos-scoutd";
|
|
1832
|
-
if (platform === "linux")
|
|
1833
|
-
return "headless-foreground";
|
|
1834
|
-
if (platform === "win32")
|
|
1835
|
-
return "windows-service";
|
|
1836
|
-
return "headless-foreground";
|
|
1837
|
-
}
|
|
1838
|
-
|
|
1839
2002
|
// packages/runtime/src/broker-process-manager.ts
|
|
1840
2003
|
function isTmpPath(p) {
|
|
1841
2004
|
return /^\/(?:private\/)?tmp\//.test(p);
|
|
@@ -2001,12 +2164,12 @@ function resolveBrokerServiceLabel(mode) {
|
|
|
2001
2164
|
}
|
|
2002
2165
|
switch (mode) {
|
|
2003
2166
|
case "prod":
|
|
2004
|
-
return "
|
|
2167
|
+
return "app.openscout";
|
|
2005
2168
|
case "custom":
|
|
2006
|
-
return "
|
|
2169
|
+
return "app.openscout.custom";
|
|
2007
2170
|
case "dev":
|
|
2008
2171
|
default:
|
|
2009
|
-
return "
|
|
2172
|
+
return "app.openscout";
|
|
2010
2173
|
}
|
|
2011
2174
|
}
|
|
2012
2175
|
function resolveBrokerServiceConfig() {
|
|
@@ -2173,13 +2336,16 @@ function readRuntimeFreshness(value) {
|
|
|
2173
2336
|
state,
|
|
2174
2337
|
intentional: readBoolean(value.intentional) ?? false,
|
|
2175
2338
|
basis,
|
|
2339
|
+
reasonCode: readString2(value.reasonCode) ?? null,
|
|
2176
2340
|
artifactCommit: readString2(value.artifactCommit) ?? null,
|
|
2177
2341
|
expectedCommit: readString2(value.expectedCommit) ?? null,
|
|
2178
2342
|
pin: readString2(value.pin) ?? null,
|
|
2179
2343
|
pinReason: readString2(value.pinReason) ?? null,
|
|
2180
2344
|
manifestPath: readString2(value.manifestPath) ?? null,
|
|
2181
2345
|
version: readString2(value.version) ?? null,
|
|
2182
|
-
|
|
2346
|
+
actualBuiltAt: readString2(value.actualBuiltAt) ?? readString2(value.builtAt) ?? null,
|
|
2347
|
+
expectedBuiltAt: readString2(value.expectedBuiltAt) ?? null,
|
|
2348
|
+
builtAt: readString2(value.builtAt) ?? readString2(value.actualBuiltAt) ?? null,
|
|
2183
2349
|
sourceDirty: readBoolean(value.sourceDirty) ?? null,
|
|
2184
2350
|
detail
|
|
2185
2351
|
};
|
|
@@ -2309,7 +2475,30 @@ function spawnScoutdJson(scoutdPath, command, env, timeoutMs) {
|
|
|
2309
2475
|
});
|
|
2310
2476
|
});
|
|
2311
2477
|
}
|
|
2478
|
+
var SCHEMA_GUARDED_SERVICE_COMMANDS = new Set([
|
|
2479
|
+
"install",
|
|
2480
|
+
"start",
|
|
2481
|
+
"restart"
|
|
2482
|
+
]);
|
|
2483
|
+
function assertBrokerServiceSchemaCompatible(config) {
|
|
2484
|
+
const databasePath = join5(config.controlHome, "control-plane.sqlite");
|
|
2485
|
+
if (!existsSync5(databasePath))
|
|
2486
|
+
return;
|
|
2487
|
+
const database = openControlPlaneSqliteDatabase(databasePath, { readonly: true });
|
|
2488
|
+
try {
|
|
2489
|
+
const row = database.query("PRAGMA user_version").get();
|
|
2490
|
+
const databaseVersion = row?.user_version ?? 0;
|
|
2491
|
+
if (databaseVersion > CONTROL_PLANE_SCHEMA_VERSION) {
|
|
2492
|
+
throw new Error(`Refusing to change the Scout service: candidate runtime schema v${CONTROL_PLANE_SCHEMA_VERSION} ` + `is older than control-plane database schema v${databaseVersion}. ` + "The existing service was left untouched. Update or rebase this checkout before restarting Scout.");
|
|
2493
|
+
}
|
|
2494
|
+
} finally {
|
|
2495
|
+
database.close?.();
|
|
2496
|
+
}
|
|
2497
|
+
}
|
|
2312
2498
|
async function runScoutdServiceCommand(command, config, timeoutMs = SCOUTD_DEFAULT_TIMEOUT_MS, runScoutdJson = spawnScoutdJson) {
|
|
2499
|
+
if (SCHEMA_GUARDED_SERVICE_COMMANDS.has(command)) {
|
|
2500
|
+
assertBrokerServiceSchemaCompatible(config);
|
|
2501
|
+
}
|
|
2313
2502
|
const scoutd = resolveScoutdCommand(config);
|
|
2314
2503
|
if (!scoutd) {
|
|
2315
2504
|
throw new Error("Unable to locate scoutd for broker service management. Build scoutd with `npm run scoutd:build`, install a package that includes scoutd, or set OPENSCOUT_SCOUTD_BIN.");
|
|
@@ -2544,6 +2733,9 @@ function formatBrokerServiceStatus(status) {
|
|
|
2544
2733
|
];
|
|
2545
2734
|
if (status.runtimeFreshness) {
|
|
2546
2735
|
lines.push(`runtime freshness detail: ${status.runtimeFreshness.detail}`);
|
|
2736
|
+
if (status.runtimeFreshness.reasonCode) {
|
|
2737
|
+
lines.push(`runtime freshness reason: ${status.runtimeFreshness.reasonCode}`);
|
|
2738
|
+
}
|
|
2547
2739
|
}
|
|
2548
2740
|
if (status.health.socketFallbackError) {
|
|
2549
2741
|
lines.push(`socket fallback: ${status.health.socketFallbackError}`);
|