@openscout/scout 0.2.78 → 0.2.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/client/assets/ActivityScreen-BXm6nJ6L.js +1 -0
- package/dist/client/assets/{AddProjectForm-DMnobKch.js → AddProjectForm-CtEiLQnm.js} +1 -1
- package/dist/client/assets/{AgentAvatar-D90c1Rzk.js → AgentAvatar-CszU5eaU.js} +1 -1
- package/dist/client/assets/AgentConfigurationScreen-CfBXxrsD.js +1 -0
- package/dist/client/assets/AgentDefinitionsWorkspace-4Z0aN8AR.js +1 -0
- package/dist/client/assets/{AgentDetailCard-BcRBRp88.js → AgentDetailCard-sZuHl1de.js} +1 -1
- package/dist/client/assets/AgentFloorView-DMivAYHU.js +1 -0
- package/dist/client/assets/AgentInfoScreen-CPkLg1pK.js +1 -0
- package/dist/client/assets/{AgentLaneCard-RrNnDZu8.js → AgentLaneCard-nB68f2CI.js} +1 -1
- package/dist/client/assets/{AgentLaneChrome-D9ZwUKrl.js → AgentLaneChrome-O9Yf0uR-.js} +1 -1
- package/dist/client/assets/AgentLaneDetailSheet-BfhpaEQ3.js +4 -0
- package/dist/client/assets/{AgentLaneSummaryResize-BhFmGNzT.js → AgentLaneSummaryResize-Ct3b0TQR.js} +1 -1
- package/dist/client/assets/AgentLanesEmbedScreen-CjHMvy3v.js +1 -0
- package/dist/client/assets/{AgentLanesPreflight-eSAoDsPi.js → AgentLanesPreflight-DNGvZvjd.js} +1 -1
- package/dist/client/assets/AgentLanesView-DqRK5-d2.js +2 -0
- package/dist/client/assets/{AgentLiveActions-DBtnD0qE.js → AgentLiveActions-DI4ooSHW.js} +1 -1
- package/dist/client/assets/{AgentSessions-DyqOf4nG.js → AgentSessions-BxWIPkWh.js} +2 -2
- package/dist/client/assets/AgentsConsole-D6VHSCfZ.js +1 -0
- package/dist/client/assets/AgentsScreen-zR6b2bUL.js +1 -0
- package/dist/client/assets/AgentsSubnav-q0xcZi6C.js +1 -0
- package/dist/client/assets/{AtopView-BCkae3e1.js → AtopView-VZkk40v0.js} +1 -1
- package/dist/client/assets/BackToPicker-DZg_4nHL.js +1 -0
- package/dist/client/assets/{BriefingDetailScreen-BwFyysT8.js → BriefingDetailScreen-BZU4qMwE.js} +1 -1
- package/dist/client/assets/{BriefingsScreen-BQEevztH.js → BriefingsScreen-Bfc3tqPp.js} +1 -1
- package/dist/client/assets/{BrokerMetadataPanel-7UjcuNjd.js → BrokerMetadataPanel-CaFe6kdh.js} +1 -1
- package/dist/client/assets/BrokerScreen-Chh8sGen.js +5 -0
- package/dist/client/assets/{ChatCollapsedStrip-CQSYSd8s.js → ChatCollapsedStrip-Cov54p9V.js} +1 -1
- package/dist/client/assets/CodeDiffPane-C1ebFt-Y.js +1 -0
- package/dist/client/assets/{CodeProjectPicker-DqKFCpLU.js → CodeProjectPicker-tsCly-f3.js} +1 -1
- package/dist/client/assets/CodeScreen-D0hpZNLP.js +1 -0
- package/dist/client/assets/{ContextMenu-bARZqTzD.js → ContextMenu-N-Z6X0Z1.js} +1 -1
- package/dist/client/assets/ConversationComposer-CiEF7dhd.js +1 -0
- package/dist/client/assets/ConversationFeedRows-5it6QNBV.js +1 -0
- package/dist/client/assets/ConversationHeader-BGgbITvr.js +1 -0
- package/dist/client/assets/ConversationPanels-vI9YuQJh.js +2 -0
- package/dist/client/assets/ConversationScreen-C-PrCRz1.js +1 -0
- package/dist/client/assets/ConversationScreen-yIKEsm-8.css +1 -0
- package/dist/client/assets/ConversationStatus-COEj5loj.js +1 -0
- package/dist/client/assets/{DataTable-E8s_MmoA.js → DataTable-BoofV-_4.js} +1 -1
- package/dist/client/assets/{DispatchAftermath-Dpe88DFX.js → DispatchAftermath-OXYlMbT1.js} +1 -1
- package/dist/client/assets/{DocumentFocusViewer-BeVwwl26.js → DocumentFocusViewer-BCG2kOmd.js} +1 -1
- package/dist/client/assets/{EmbeddableSurfacesLab-BQqFQVnI.js → EmbeddableSurfacesLab-C2SZvrHJ.js} +1 -1
- package/dist/client/assets/{EmptyState-4F9XDFQm.js → EmptyState-DypEjx0V.js} +1 -1
- package/dist/client/assets/{FileViewerPane-CLgUhSm4.js → FileViewerPane-CXCq-oKj.js} +1 -1
- package/dist/client/assets/{FleetSearch-Dz5euQJe.js → FleetSearch-Dj7-CfNi.js} +1 -1
- package/dist/client/assets/FlightObserveScreen-Yq5NtQQJ.js +1 -0
- package/dist/client/assets/FollowScreen-DRgYuAvp.js +1 -0
- package/dist/client/assets/HarnessMark-BE-YSyci.js +1 -0
- package/dist/client/assets/HarnessesScreen-L-emPcXd.js +1 -0
- package/dist/client/assets/HerdrSession-DKFCJMst.js +4 -0
- package/dist/client/assets/{HomeHero-B3uYd-pP.js → HomeHero-CAEg8Yg5.js} +1 -1
- package/dist/client/assets/KnowledgeSearchInspector-C2EZsQ5i.js +1 -0
- package/dist/client/assets/KnowledgeSearchScreen-DvdOFh-b.js +1 -0
- package/dist/client/assets/{LaneToolHoverCard-Bla0gBdm.js → LaneToolHoverCard-DrPXYZvQ.js} +1 -1
- package/dist/client/assets/LaneTraceDetailSheet-Dl7foF88.js +1 -0
- package/dist/client/assets/{LaneTraceEventFocus-BF9ERP5O.js → LaneTraceEventFocus-X4-DDFEo.js} +1 -1
- package/dist/client/assets/{MeshCanvas-DFEPkpqY.js → MeshCanvas-rtCBD7s6.js} +2 -2
- package/dist/client/assets/{MeshCanvasMinimap-CyVFYixr.js → MeshCanvasMinimap-CuvXOkc7.js} +1 -1
- package/dist/client/assets/MeshScreen-D5zzTn0o.js +1 -0
- package/dist/client/assets/{MeshTopologyView-CalkZghg.js → MeshTopologyView-CeTShs-U.js} +2 -2
- package/dist/client/assets/{MessageComposerSuggestions-DpxN9WiB.js → MessageComposerSuggestions-Cs9u-F_3.js} +1 -1
- package/dist/client/assets/MessagesScreen-BhOJ7_tj.js +1 -0
- package/dist/client/assets/MissionContextRail-0O-Zu1Tn.js +1 -0
- package/dist/client/assets/MissionControlView-D2JO9u-y.js +1 -0
- package/dist/client/assets/{MissionFocusOverlay-wlCmWDCT.js → MissionFocusOverlay-LnjmqBiW.js} +1 -1
- package/dist/client/assets/MissionLeftAgentRow-nc1Jyq3D.js +1 -0
- package/dist/client/assets/MissionLogPane-lZ9vUftY.js +1 -0
- package/dist/client/assets/{NewAgentModal-Bg-eWHpY.js → NewAgentModal-K1cvdmZr.js} +1 -1
- package/dist/client/assets/NewChatComposer-C5LT7MF7.css +1 -0
- package/dist/client/assets/NewChatComposer-DXDxV2Mh.js +19 -0
- package/dist/client/assets/{NewChatOrigin-Bk2OyVjI.js → NewChatOrigin-CnjoswTG.js} +1 -1
- package/dist/client/assets/ObserveEmbedScreen-CRpzYf0Y.js +2 -0
- package/dist/client/assets/{ObserveTextFlow-rsFj_rVo.js → ObserveTextFlow-DJxQc2H6.js} +2 -2
- package/dist/client/assets/{ObservedTopologyPanel-DyUeV98H.js → ObservedTopologyPanel-C1AQM0Mq.js} +1 -1
- package/dist/client/assets/OpenScoutAppShell-DrHYD_pd.js +87 -0
- package/dist/client/assets/OpsAgentsView-BnMX0vEY.js +1 -0
- package/dist/client/assets/OpsScreen-BeC0lieE.js +1 -0
- package/dist/client/assets/OpsSubnav-D5Bpowtk.js +1 -0
- package/dist/client/assets/{PlanView-C1CjH3PG.js → PlanView-DDXdC19M.js} +1 -1
- package/dist/client/assets/ProjectAgentProfile-zE1cApxw.js +1 -0
- package/dist/client/assets/{ProjectAgentProfileBar-CtTpj6fU.js → ProjectAgentProfileBar-MODhG0P6.js} +1 -1
- package/dist/client/assets/ProjectAgentProfileHero-C1ImgGDu.js +1 -0
- package/dist/client/assets/ProjectsInbox-C3Jd6JTk.js +2 -0
- package/dist/client/assets/{ProjectsRail-BgiuV4LR.js → ProjectsRail-B1zrQLZe.js} +1 -1
- package/dist/client/assets/ProjectsScreen-PW_NH5VK.js +1 -0
- package/dist/client/assets/ProjectsThreadAside-DaCEUWN1.js +1 -0
- package/dist/client/assets/Provider-DSsb2gLR.js +1 -0
- package/dist/client/assets/{RailRow-BoGxAHNF.js → RailRow-DerXOXQS.js} +1 -1
- package/dist/client/assets/RawSessionsTable-LWEvXJzj.js +1 -0
- package/dist/client/assets/RealtimeVoiceScreen-XtxbCjOs.js +1 -0
- package/dist/client/assets/{RepoDiffEmbedScreen-C0rumUME.js → RepoDiffEmbedScreen-C9oLCcZX.js} +1 -1
- package/dist/client/assets/{RepoDiffPageScreen-DMv6DioL.js → RepoDiffPageScreen-CGEMAv2Z.js} +1 -1
- package/dist/client/assets/RepoDiffViewer-CB8PSVey.js +7 -0
- package/dist/client/assets/RepoDiffViewerLazy-DIxkiMto.js +2 -0
- package/dist/client/assets/{ReposScreen-CB_YBWYf.js → ReposScreen-BN1lVjOj.js} +2 -2
- package/dist/client/assets/{ScoutDeckSurface-CxIYFyWx.js → ScoutDeckSurface-BCpl0QCx.js} +1 -1
- package/dist/client/assets/{ScoutSurface-CYz_TcWC.js → ScoutSurface-BEnDlynn.js} +1 -1
- package/dist/client/assets/{ScoutbotBroadcastChip-L_R9atj0.js → ScoutbotBroadcastChip-z9R_pC_U.js} +1 -1
- package/dist/client/assets/{ScoutbotFxLab-CgiZMDMW.js → ScoutbotFxLab-fAROyIfz.js} +1 -1
- package/dist/client/assets/{ScoutbotRealtimeVoiceCall-FMQOr1Np.js → ScoutbotRealtimeVoiceCall-CDyFJX8m.js} +1 -1
- package/dist/client/assets/{SecondaryNav-B3-nh5dM.js → SecondaryNav-Hv5AJ3Fv.js} +1 -1
- package/dist/client/assets/SessionEmbedScreen-CDRpQc3g.js +1 -0
- package/dist/client/assets/SessionObserve-BmmJ8dEh.js +12 -0
- package/dist/client/assets/SessionObserve-CLrHfAKZ.css +1 -0
- package/dist/client/assets/SessionObserveEvidence-CEedIk2a.js +1 -0
- package/dist/client/assets/SessionRefScreen-Dk-O4OVt.js +1 -0
- package/dist/client/assets/SessionsScreen-BJEjuo2X.js +1 -0
- package/dist/client/assets/{SettingsDrawer-XfdAa_nD.js → SettingsDrawer-DL-SVLdd.js} +3 -3
- package/dist/client/assets/SettingsDrawer-UX7pFJU_.css +1 -0
- package/dist/client/assets/SettingsScreen-DJ-BhBwR.js +1 -0
- package/dist/client/assets/{ShikiPane-Ap1iPxYb.js → ShikiPane-B7O4if20.js} +1 -1
- package/dist/client/assets/{SlidePanel-COwtoJqR.js → SlidePanel-B3gc5HnM.js} +1 -1
- package/dist/client/assets/SpriteAvatar-BpQDpOkq.js +1 -0
- package/dist/client/assets/{StatusPill-DhBL__p8.js → StatusPill-B33sQinT.js} +1 -1
- package/dist/client/assets/{TailView-DGj_5HA9.js → TailView-DL3YZkzE.js} +2 -2
- package/dist/client/assets/Terminal-Dp1FSGIS.js +1 -0
- package/dist/client/assets/TerminalEmbedScreen-DP9IM4xf.js +1 -0
- package/dist/client/assets/{TextDocumentSurface-BpAw4eQS.js → TextDocumentSurface-DRjctOIt.js} +1 -1
- package/dist/client/assets/{TmuxPeek-m1osv33Q.js → TmuxPeek-DNC4uWky.js} +1 -1
- package/dist/client/assets/{VoicePermissionsPanel-DsK53ar4.js → VoicePermissionsPanel-WLN0V-Xv.js} +1 -1
- package/dist/client/assets/{WorkDetailScreen-Bx0JimPC.js → WorkDetailScreen-D2Yl0mYZ.js} +3 -3
- package/dist/client/assets/{WorkFilesViewer-Btl6C2Q1.js → WorkFilesViewer-BbVfcUN-.js} +1 -1
- package/dist/client/assets/{activity-CA8qS6PI.js → activity-BxwKkT8z.js} +1 -1
- package/dist/client/assets/{addon-fit-BZ-kXjeN.js → addon-fit-B9O2vJoh.js} +1 -1
- package/dist/client/assets/{addon-webgl-D9-EQVEK.js → addon-webgl-BhRZFDcn.js} +1 -1
- package/dist/client/assets/{agent-essentials-BSY1o46q.js → agent-essentials-SrzMYEXV.js} +1 -1
- package/dist/client/assets/agent-identity-BxCsXnDp.js +1 -0
- package/dist/client/assets/agent-lane-card-BkWVDYM8.css +1 -0
- package/dist/client/assets/{agent-lane-card-model-r2frk57c.js → agent-lane-card-model-DSWdGu-v.js} +1 -1
- package/dist/client/assets/agent-lane-detail-BNNm6FNu.js +2 -0
- package/dist/client/assets/{agent-lane-preview-CmHVe3dU.js → agent-lane-preview-C33Dwpn7.js} +1 -1
- package/dist/client/assets/{agent-lanes-model-B4YTt4OF.js → agent-lanes-model-CPgQRenB.js} +2 -2
- package/dist/client/assets/{arc.es-CQBb-dVu.js → arc.es-NlJw-19N.js} +1 -1
- package/dist/client/assets/{arrow-down-BPLe0am9.js → arrow-down-D3-IbArq.js} +1 -1
- package/dist/client/assets/{arrow-left-DEZzHiPS.js → arrow-left-_vS7itsV.js} +1 -1
- package/dist/client/assets/{arrow-up-right-ClxBnsi7.js → arrow-up-right-CcrWONpD.js} +1 -1
- package/dist/client/assets/{bot-eu8pBNvI.js → bot-BRINYlC6.js} +1 -1
- package/dist/client/assets/{check-DjgFiBxb.js → check-COxArFXG.js} +1 -1
- package/dist/client/assets/{chevron-down-BGk5qoEw.js → chevron-down-DRCbnzyY.js} +1 -1
- package/dist/client/assets/{chevron-right-XiIHsk4m.js → chevron-right-CNE6QAVr.js} +1 -1
- package/dist/client/assets/chunk-HRAB3GC3-CAeEKaf5.js +1 -0
- package/dist/client/assets/chunk-JTPDIGGW-s6WbxdjC.js +46 -0
- package/dist/client/assets/{chunk-T65CQEWV-CrzwSeEt.js → chunk-T65CQEWV-CiZ_ICHW.js} +1 -1
- package/dist/client/assets/chunk-YOZR3KYS-DLOc92uD.js +2 -0
- package/dist/client/assets/clock-CyfvRmj6.js +1 -0
- package/dist/client/assets/{code-xml-B6jOCM4V.js → code-xml--LjSM4Mv.js} +1 -1
- package/dist/client/assets/content-7ZeCPAEt.js +1 -0
- package/dist/client/assets/content-BHUcUCH5.js +1 -0
- package/dist/client/assets/content-BUhvLPkv.js +1 -0
- package/dist/client/assets/content-BomQ5YWo.js +1 -0
- package/dist/client/assets/content-C39ELNgC.js +1 -0
- package/dist/client/assets/content-C4RYKHut.js +1 -0
- package/dist/client/assets/content-CCiZfG4H.js +1 -0
- package/dist/client/assets/content-CDpDtVI-.js +1 -0
- package/dist/client/assets/content-CO-9CeFd.js +1 -0
- package/dist/client/assets/content-CuOLxp1x.js +1 -0
- package/dist/client/assets/content-CvtLIjXS.js +1 -0
- package/dist/client/assets/content-CzwTUb9n.js +1 -0
- package/dist/client/assets/content-DQXbo2RO.js +1 -0
- package/dist/client/assets/content-DRTQ9QQb.js +1 -0
- package/dist/client/assets/content-LCELs6zg.js +1 -0
- package/dist/client/assets/content-Uqt8AG-s.css +1 -0
- package/dist/client/assets/content-qsDjA4Au.js +1 -0
- package/dist/client/assets/{context-budget-CbB4BDcO.js → context-budget-DX_fwUs3.js} +1 -1
- package/dist/client/assets/{conversation-icons-IIG5ha6D.js → conversation-icons-c-hXv7hY.js} +1 -1
- package/dist/client/assets/conversation-model-CHwHZNw-.js +1 -0
- package/dist/client/assets/conversation-motion-features-T8vF9zED.js +1 -0
- package/dist/client/assets/{copy-CQGYbxdu.js → copy-4LfKIdQJ.js} +1 -1
- package/dist/client/assets/{createLucideIcon-OpA4Amw5.js → createLucideIcon-ClCdc3F9.js} +1 -1
- package/dist/client/assets/discover-7Ks00w-M.js +2 -0
- package/dist/client/assets/embed-entry-n2ThmSSX.js +2 -0
- package/dist/client/assets/{external-link-CXBytO9o.js → external-link-CnaI1QFS.js} +1 -1
- package/dist/client/assets/{eye-0PvebX_a.js → eye-BFlhMzQL.js} +1 -1
- package/dist/client/assets/{file-text-BODxCjcz.js → file-text-DG-pufl1.js} +1 -1
- package/dist/client/assets/{gestures-CcwOTu8C.js → gestures-CxG3Dphs.js} +1 -1
- package/dist/client/assets/home-live-action-BkqGLVRY.js +1 -0
- package/dist/client/assets/home-moving-signal-aNJusIzL.js +1 -0
- package/dist/client/assets/home-now-card-BQK4EFHx.js +1 -0
- package/dist/client/assets/{home-now-card-nano-BcjnOU9H.js → home-now-card-nano-CdtzqSIF.js} +1 -1
- package/dist/client/assets/hooks-Dst1TH7n.js +2 -0
- package/dist/client/assets/inbox-thread-redesign-B_1ocqaX.css +1 -0
- package/dist/client/assets/index-9as_JTUs.css +1 -0
- package/dist/client/assets/index-CU9dtwJk.js +1 -0
- package/dist/client/assets/{index-DMiGbrBt.js → index-CzVeWScw.js} +6 -6
- package/dist/client/assets/index-Dewd56RX.js +1 -0
- package/dist/client/assets/index-_YQXKEhb.js +1 -0
- package/dist/client/assets/{inspector-panel-DPoCWxKs.js → inspector-panel-DgOM8nCo.js} +2 -2
- package/dist/client/assets/keyboard-nav-BJnFoFDP.js +1 -0
- package/dist/client/assets/knowledge-search-D_bLoYtC.css +1 -0
- package/dist/client/assets/{lane-observe-D0rfKDnU.js → lane-observe-BA3g9aVd.js} +1 -1
- package/dist/client/assets/{lane-roster-store-D8x1jac2.js → lane-roster-store-pR4ZaYQm.js} +1 -1
- package/dist/client/assets/left-BhzPp-_E.js +1 -0
- package/dist/client/assets/left-CN1MABD0.js +2 -0
- package/dist/client/assets/left-DDgbsio7.js +1 -0
- package/dist/client/assets/left-Dpf2R9uD.js +1 -0
- package/dist/client/assets/left-HwwbMVtl.js +2 -0
- package/dist/client/assets/left-YfH0daht.js +1 -0
- package/dist/client/assets/left-agents-CYUwAy2Z.js +1 -0
- package/dist/client/assets/left-default-vEGZALPv.js +1 -0
- package/dist/client/assets/left-lanes-bphF-vlX.js +1 -0
- package/dist/client/assets/left-mission-B54-c3hq.js +1 -0
- package/dist/client/assets/left-np5USKqG.js +1 -0
- package/dist/client/assets/left-plan-BNBuDoPQ.js +2 -0
- package/dist/client/assets/library-DbCVJG_O.js +1 -0
- package/dist/client/assets/{loader-circle-CbHjZsz1.js → loader-circle-Byb9kSFx.js} +1 -1
- package/dist/client/assets/{local-agents--00gLMqr.js → local-agents-DBaUbP-_.js} +1 -1
- package/dist/client/assets/{mentions-jSuTGeet.js → mentions-fbQJ2mBI.js} +1 -1
- package/dist/client/assets/mesh-ops-B1kDjizF.css +1 -0
- package/dist/client/assets/mesh-ops-Cnw3vwAu.js +1 -0
- package/dist/client/assets/{mesh-view-store-CWidRbTE.js → mesh-view-store-Btlyc7rW.js} +1 -1
- package/dist/client/assets/{message-circle-CG-96zts.js → message-circle-aGOfQWm2.js} +1 -1
- package/dist/client/assets/{message-markup-3J9pi3nx.js → message-markup-mGF07emJ.js} +1 -1
- package/dist/client/assets/{message-square-DSaGpjFU.js → message-square-CIXda-Y7.js} +1 -1
- package/dist/client/assets/mission-control-m3BTDQ9l.css +1 -0
- package/dist/client/assets/{mission-control-store-BlnEhiCq.js → mission-control-store-CcoNeQHG.js} +1 -1
- package/dist/client/assets/mission-wall-CocIM1cF.js +1 -0
- package/dist/client/assets/{model-CpAxGuis.js → model-IGCUEsMy.js} +1 -1
- package/dist/client/assets/{observe-CuLGD9Zp.js → observe-BNFzh-7B.js} +1 -1
- package/dist/client/assets/openAgent-Dbv5wfuL.js +1 -0
- package/dist/client/assets/{page-status-DpkedE1F.js → page-status-DDvNdA8s.js} +1 -1
- package/dist/client/assets/paperclip-DfpJkR4s.js +1 -0
- package/dist/client/assets/{plus--b1raV_O.js → plus-CmFQp9Uj.js} +1 -1
- package/dist/client/assets/profile-s3KRbip1.js +1 -0
- package/dist/client/assets/{projects-inbox-CHyUFQ6w.js → projects-inbox-Diddml6e.js} +1 -1
- package/dist/client/assets/{radio-Bz8ZePxj.js → radio-PauJIekM.js} +1 -1
- package/dist/client/assets/{refresh-cw-BBmAnCB7.js → refresh-cw-4oeFn1Jn.js} +1 -1
- package/dist/client/assets/repo-diff-DyYmQMSA.css +1 -0
- package/dist/client/assets/resolve-panes-cp6eNewO.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-Dbo-5PWx.js +1 -0
- package/dist/client/assets/right-09W2JJFg.js +1 -0
- package/dist/client/assets/right-B-MKhiJ6.js +1 -0
- package/dist/client/assets/right-B91Zl8lQ.js +1 -0
- package/dist/client/assets/{right-DjRXbnRP.js → right-BcFnuse9.js} +1 -1
- package/dist/client/assets/right-BdtMzn35.js +1 -0
- package/dist/client/assets/right-BqmKXLtf.js +1 -0
- package/dist/client/assets/right-BzeB-Dpt.js +1 -0
- package/dist/client/assets/right-CkGOs-sq.js +1 -0
- package/dist/client/assets/right-CzGiNBzB.js +1 -0
- package/dist/client/assets/right-Dc7uqv7l.js +1 -0
- package/dist/client/assets/{rocket-BSNS_rLs.js → rocket-C-AskjZH.js} +1 -1
- package/dist/client/assets/router-B-K15T7B.js +1 -0
- package/dist/client/assets/{runtime-picker-Bcl5iIX5.js → runtime-picker-BCQD7d4K.js} +1 -1
- package/dist/client/assets/{scope-views-U-ucT9m0.js → scope-views-BhkbIFPY.js} +1 -1
- package/dist/client/assets/{scout-voice-CU5c0LGi.js → scout-voice-S5_YZ2v8.js} +1 -1
- package/dist/client/assets/{scroll-text-D6Pdnar7.js → scroll-text-BV-BB7v-.js} +1 -1
- package/dist/client/assets/{search-CWfZtOt2.js → search-C3bSJluv.js} +1 -1
- package/dist/client/assets/secondaryNavConfig-Bg4Tc0gT.js +1 -0
- package/dist/client/assets/{selection-bridge-16pk1qyG.js → selection-bridge-B1dmkX3P.js} +1 -1
- package/dist/client/assets/{send-horizontal-Bg5-QggH.js → send-horizontal-CqogPmbY.js} +1 -1
- package/dist/client/assets/{server-CPp4ZJhZ.js → server-Brw5Y1Gh.js} +1 -1
- package/dist/client/assets/{session-catalog-BmoyVTJ_.js → session-catalog-9FqXmjBw.js} +1 -1
- package/dist/client/assets/session-table-1xdSxSXq.js +1 -0
- package/dist/client/assets/{sliders-horizontal-1oW76Xc9.js → sliders-horizontal-CUiOH26y.js} +1 -1
- package/dist/client/assets/sparkles-BjCA3Evu.js +1 -0
- package/dist/client/assets/{sse-CjIkKo46.js → sse-QcU9bikk.js} +1 -1
- package/dist/client/assets/synthetic-agent-routing-aduMYO7P.js +1 -0
- package/dist/client/assets/system-surfaces-redesign-B7GQhfpw.css +1 -0
- package/dist/client/assets/{tail-display-BdyoLvzY.js → tail-display-BRcJltQa.js} +2 -2
- package/dist/client/assets/{tail-events-D19uAGe3.js → tail-events-C6K7bCWB.js} +1 -1
- package/dist/client/assets/{terminal-B9AOZQKR.js → terminal-DrTkVXIj.js} +1 -1
- package/dist/client/assets/{terminal-relay-CWbJ1RCW.js → terminal-relay-BkXjjSkq.js} +1 -1
- package/dist/client/assets/{terminal-screen-19jAI0Cw.css → terminal-screen-BqVnCwl0.css} +1 -1
- package/dist/client/assets/terminal-sessions-C3qU8tnY.js +1 -0
- package/dist/client/assets/{terminal-takeover-B8UeD9OX.js → terminal-takeover-KvmTwABa.js} +1 -1
- package/dist/client/assets/{time-DltNTpLl.js → time-Dhsh_2EG.js} +1 -1
- package/dist/client/assets/{use-conversation-list-Byab41G6.js → use-conversation-list-C5sF6WBR.js} +1 -1
- package/dist/client/assets/{use-fleet-active-asks-BIbQx5AS.js → use-fleet-active-asks-BOMPW0nl.js} +1 -1
- package/dist/client/assets/use-mesh-ops-items-Co05vcTV.js +1 -0
- package/dist/client/assets/{use-reduced-motion-RRBkmVkk.js → use-reduced-motion-Dla-G_Jz.js} +1 -1
- package/dist/client/assets/use-scout-dev-flags-BOQF3fW2.js +1 -0
- package/dist/client/assets/{useAgentHoverCard-DMrbBif0.js → useAgentHoverCard-FtCmY-b9.js} +1 -1
- package/dist/client/assets/useContentSecondaryNav-BX7Sq7vy.js +1 -0
- package/dist/client/assets/usePierreRuntime-Bo4lD7Ui.js +50 -0
- package/dist/client/assets/{wrench-Bkc_0lKF.js → wrench-CeCdjiPF.js} +1 -1
- package/dist/client/assets/{x-D3GElQbe.js → x-D4X_y1j_.js} +1 -1
- package/dist/client/assets/{xterm-BKR8oAkR.js → xterm-D2a5wrkJ.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/drizzle/0007_lean_venus.sql +26 -0
- package/dist/drizzle/0008_luxuriant_ted_forrester.sql +1 -0
- package/dist/drizzle/meta/0007_snapshot.json +5767 -0
- package/dist/drizzle/meta/0008_snapshot.json +5774 -0
- package/dist/drizzle/meta/_journal.json +14 -0
- package/dist/main.mjs +29271 -4824
- package/dist/node/main.mjs +31635 -11915
- package/dist/openscout-terminal-relay.mjs +16 -4
- package/dist/pairing-runtime-controller.mjs +37812 -16924
- package/dist/runtime/base-daemon.mjs +109 -18
- package/dist/runtime/broker-daemon.mjs +22247 -2746
- package/dist/runtime/broker-process-manager.mjs +122 -12
- package/dist/runtime/mesh-discover.mjs +90 -13
- package/dist/scout-control-plane-web.mjs +23083 -3481
- package/dist/scout-web-server.mjs +23083 -3481
- package/dist/statusline.mjs +2 -0
- package/package.json +3 -1
- package/dist/client/assets/ActivityScreen-Cu_1V4bq.js +0 -1
- package/dist/client/assets/AgentConfigurationScreen-BqfOz90D.js +0 -1
- package/dist/client/assets/AgentDefinitionsWorkspace-CUpUrY57.js +0 -1
- package/dist/client/assets/AgentFloorView-8LoAEBwS.js +0 -1
- package/dist/client/assets/AgentInfoScreen-DZs2_ibL.js +0 -1
- package/dist/client/assets/AgentLaneDetailSheet-BXbPls9N.js +0 -5
- package/dist/client/assets/AgentLanesEmbedScreen-W3qs022h.js +0 -1
- package/dist/client/assets/AgentLanesView-B9vuEEmZ.js +0 -2
- package/dist/client/assets/AgentsConsole-BgiYP2wR.js +0 -1
- package/dist/client/assets/AgentsScreen-DBi8x4MB.js +0 -1
- package/dist/client/assets/AgentsSubnav-DIEO4NPx.js +0 -1
- package/dist/client/assets/BackToPicker-BRvfostO.js +0 -1
- package/dist/client/assets/BrokerScreen-7ekklu88.js +0 -5
- package/dist/client/assets/CodeDiffPane-DDPt6KPh.js +0 -1
- package/dist/client/assets/CodeScreen-BxCrpRHd.js +0 -1
- package/dist/client/assets/ConversationComposer-Bla3DDvM.js +0 -1
- package/dist/client/assets/ConversationFeedRows-B_gPxcqA.js +0 -1
- package/dist/client/assets/ConversationHeader-DE3FC0m-.js +0 -1
- package/dist/client/assets/ConversationPanels-DLek4H6A.js +0 -2
- package/dist/client/assets/ConversationScreen-BDRhx-RU.js +0 -1
- package/dist/client/assets/ConversationScreen-C9yMAMYF.css +0 -1
- package/dist/client/assets/ConversationStatus-BwVLiiO4.js +0 -1
- package/dist/client/assets/FlightObserveScreen-6RpZYwVz.js +0 -1
- package/dist/client/assets/FollowScreen-DZ4qfYOY.js +0 -1
- package/dist/client/assets/HarnessMark-Cbv3Ib0c.js +0 -1
- package/dist/client/assets/HarnessesScreen-CznAImej.js +0 -1
- package/dist/client/assets/KnowledgeSearchInspector-Dgdkfvvz.js +0 -1
- package/dist/client/assets/KnowledgeSearchScreen-DJDGGaqC.js +0 -1
- package/dist/client/assets/LaneTraceDetailSheet-D1CspRbl.js +0 -1
- package/dist/client/assets/MeshScreen-DFgevn8N.js +0 -1
- package/dist/client/assets/MessagesScreen-C8YKW10Y.js +0 -1
- package/dist/client/assets/MissionControlView-lUeAiSVg.js +0 -1
- package/dist/client/assets/MissionLeftAgentRow-BpZWntfl.js +0 -1
- package/dist/client/assets/MissionLogPane-__MVtEl9.js +0 -1
- package/dist/client/assets/NewChatComposer-Cs6OsxK6.js +0 -19
- package/dist/client/assets/NewChatComposer-W-t-L4oV.css +0 -1
- package/dist/client/assets/ObserveEmbedScreen-y2EpuqRZ.js +0 -2
- package/dist/client/assets/OpenScoutAppShell-C_URc8sV.js +0 -87
- package/dist/client/assets/OpsAgentsView-UN7iOscs.js +0 -1
- package/dist/client/assets/OpsScreen-Buf3LKjb.js +0 -1
- package/dist/client/assets/OpsSubnav-DsuXzHah.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-DJusrAV-.js +0 -1
- package/dist/client/assets/ProjectAgentProfileHero-BFwNJo_N.js +0 -1
- package/dist/client/assets/ProjectsInbox-GhVMxOhw.js +0 -2
- package/dist/client/assets/ProjectsScreen-eNUBy4YU.js +0 -1
- package/dist/client/assets/ProjectsThreadAside-CoBgnHmr.js +0 -1
- package/dist/client/assets/Provider-C7UKGHQy.js +0 -1
- package/dist/client/assets/RawSessionsTable-DL8y_eEy.js +0 -1
- package/dist/client/assets/RealtimeVoiceScreen-ffS-39zy.js +0 -1
- package/dist/client/assets/RepoDiffViewer-D_exm6xK.js +0 -7
- package/dist/client/assets/RepoDiffViewerLazy-BPgF92Bg.js +0 -2
- package/dist/client/assets/SessionEmbedScreen-BVC7yvWF.js +0 -1
- package/dist/client/assets/SessionObserve-BpggNO_M.css +0 -1
- package/dist/client/assets/SessionObserve-yfXFafp8.js +0 -12
- package/dist/client/assets/SessionRefScreen-DRgJu7Jo.js +0 -1
- package/dist/client/assets/SessionsScreen-D6XUsZfA.js +0 -1
- package/dist/client/assets/SettingsDrawer-CmJt72ww.css +0 -1
- package/dist/client/assets/SettingsScreen-Cy8z-EuR.js +0 -1
- package/dist/client/assets/SpriteAvatar-DyaGuhik.js +0 -1
- package/dist/client/assets/Terminal-CqvGbjXU.js +0 -1
- package/dist/client/assets/TerminalEmbedScreen-DuZZFFzW.js +0 -1
- package/dist/client/assets/agent-chat-Bfjd9y6c.js +0 -1
- package/dist/client/assets/agent-lane-card-Dm7YWoew.css +0 -1
- package/dist/client/assets/agent-lane-detail-Djm3YJEa.js +0 -1
- package/dist/client/assets/chunk-YOZR3KYS-Bet8khjg.js +0 -47
- package/dist/client/assets/content-BDt9VBPk.js +0 -1
- package/dist/client/assets/content-BIXf4cKR.js +0 -1
- package/dist/client/assets/content-BLm0NBJM.js +0 -1
- package/dist/client/assets/content-C2EwTb2y.js +0 -1
- package/dist/client/assets/content-C5UbLsDF.js +0 -1
- package/dist/client/assets/content-CHU0wwA3.css +0 -1
- package/dist/client/assets/content-CR3vdrYY.js +0 -1
- package/dist/client/assets/content-CSPVmo2s.js +0 -1
- package/dist/client/assets/content-C_FGqx1X.js +0 -1
- package/dist/client/assets/content-CvlVUOG8.js +0 -1
- package/dist/client/assets/content-D5kJmfgl.js +0 -1
- package/dist/client/assets/content-DTpQsomG.js +0 -1
- package/dist/client/assets/content-DikVsqLf.js +0 -1
- package/dist/client/assets/content-DlUe5Ono.js +0 -1
- package/dist/client/assets/content-GIBv_55n.js +0 -1
- package/dist/client/assets/content-Q2oclDzi.js +0 -1
- package/dist/client/assets/conversation-model-B47vYmWN.js +0 -1
- package/dist/client/assets/conversation-motion-features-BdAONVls.js +0 -1
- package/dist/client/assets/discover-C1YwpBDE.js +0 -2
- package/dist/client/assets/embed-entry-BAcGL3g9.js +0 -2
- package/dist/client/assets/home-live-action-B22u89j7.js +0 -1
- package/dist/client/assets/home-moving-signal-CK147hxn.js +0 -1
- package/dist/client/assets/home-now-card-BgvNWuea.js +0 -1
- package/dist/client/assets/hooks-B6y_O2FB.js +0 -2
- package/dist/client/assets/inbox-thread-redesign-Bz4FjWzr.css +0 -1
- package/dist/client/assets/index-BcuhqXLe.js +0 -1
- package/dist/client/assets/index-CJXzfjo9.js +0 -1
- package/dist/client/assets/index-DQPvraRS.js +0 -1
- package/dist/client/assets/index-DxGoC5l5.css +0 -1
- package/dist/client/assets/keyboard-nav-2kv_tGUS.js +0 -1
- package/dist/client/assets/knowledge-search-CVxQwxPn.js +0 -1
- package/dist/client/assets/knowledge-search-DjrQdiiW.css +0 -1
- package/dist/client/assets/left-C--GiIh8.js +0 -2
- package/dist/client/assets/left-Cj7Rt89X.js +0 -1
- package/dist/client/assets/left-CpNEtFEg.js +0 -1
- package/dist/client/assets/left-CzXAuK_t.js +0 -2
- package/dist/client/assets/left-agents-Bo9sO1by.js +0 -1
- package/dist/client/assets/left-bN4PCAXa.js +0 -1
- package/dist/client/assets/left-default-DV9GdvYi.js +0 -1
- package/dist/client/assets/left-jYYGAOYD.js +0 -1
- package/dist/client/assets/left-lanes-D0l_Co7V.js +0 -1
- package/dist/client/assets/left-mission-Ci7zREkQ.js +0 -1
- package/dist/client/assets/left-plan-D4U1uflW.js +0 -2
- package/dist/client/assets/library-D-RxGiCw.js +0 -1
- package/dist/client/assets/mission-control-D3ikEPND.css +0 -1
- package/dist/client/assets/openAgent-Bjt57GdM.js +0 -1
- package/dist/client/assets/profile-CVRziEDA.js +0 -1
- package/dist/client/assets/repo-diff-C9Qs-bEn.css +0 -1
- package/dist/client/assets/resolve-panes-r9B3mpW7.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-DcG8xGaB.js +0 -1
- package/dist/client/assets/right-BHeiIaty.js +0 -1
- package/dist/client/assets/right-BkgKo9VT.js +0 -1
- package/dist/client/assets/right-BpEU5jWE.js +0 -1
- package/dist/client/assets/right-CRZXoy-X.js +0 -1
- package/dist/client/assets/right-ChF_pbPy.js +0 -1
- package/dist/client/assets/right-DMoUT3KN.js +0 -1
- package/dist/client/assets/right-T4Ue6EqM.js +0 -1
- package/dist/client/assets/right-wzrLXKur.js +0 -1
- package/dist/client/assets/router-Bq5dwf78.js +0 -1
- package/dist/client/assets/secondaryNavConfig-DqUIp0Es.js +0 -1
- package/dist/client/assets/session-table-DZcrKoIH.js +0 -1
- package/dist/client/assets/sparkles-ClfRJQ6w.js +0 -1
- package/dist/client/assets/system-surfaces-redesign-CD26LFc0.css +0 -1
- package/dist/client/assets/terminal-sessions-D5CIR2OL.js +0 -1
- package/dist/client/assets/useContentSecondaryNav-DMl1WNm7.js +0 -1
- package/dist/client/assets/usePierreRuntime-wC-yMtBb.js +0 -50
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
import "reflect-metadata";
|
|
3
|
+
|
|
2
4
|
// packages/runtime/src/broker-process-manager.ts
|
|
3
5
|
import { spawn as spawn2, spawnSync } from "child_process";
|
|
4
|
-
import { existsSync as existsSync5, readFileSync as readFileSync4 } from "fs";
|
|
5
|
-
import { homedir as homedir5 } from "os";
|
|
6
|
+
import { existsSync as existsSync5, mkdirSync as mkdirSync2, readFileSync as readFileSync4, renameSync as renameSync2, writeFileSync as writeFileSync2 } from "fs";
|
|
7
|
+
import { homedir as homedir5, networkInterfaces } from "os";
|
|
6
8
|
import { dirname as dirname3, join as join5, resolve as resolve2 } from "path";
|
|
7
9
|
import { fileURLToPath } from "url";
|
|
8
10
|
|
|
@@ -2023,7 +2025,39 @@ var DEFAULT_BROKER_HOST = "127.0.0.1";
|
|
|
2023
2025
|
var DEFAULT_BROKER_HOST_MESH = "0.0.0.0";
|
|
2024
2026
|
var DEFAULT_BROKER_PORT = OPENSCOUT_PORTS.broker;
|
|
2025
2027
|
var DEFAULT_ADVERTISE_SCOPE = "local";
|
|
2026
|
-
|
|
2028
|
+
var MESH_BIND_CONFIG_FILE = "mesh-bind.json";
|
|
2029
|
+
function meshBindConfigPath(supportDirectory) {
|
|
2030
|
+
const dir = supportDirectory ?? resolveOpenScoutSupportPaths().supportDirectory;
|
|
2031
|
+
return join5(dir, MESH_BIND_CONFIG_FILE);
|
|
2032
|
+
}
|
|
2033
|
+
function readPersistedAdvertiseScope(supportDirectory) {
|
|
2034
|
+
const path = meshBindConfigPath(supportDirectory);
|
|
2035
|
+
if (!existsSync5(path))
|
|
2036
|
+
return null;
|
|
2037
|
+
try {
|
|
2038
|
+
const parsed = JSON.parse(readFileSync4(path, "utf8"));
|
|
2039
|
+
if (parsed.version !== 1)
|
|
2040
|
+
return null;
|
|
2041
|
+
if (parsed.advertiseScope === "mesh" || parsed.advertiseScope === "local") {
|
|
2042
|
+
return parsed.advertiseScope;
|
|
2043
|
+
}
|
|
2044
|
+
} catch {}
|
|
2045
|
+
return null;
|
|
2046
|
+
}
|
|
2047
|
+
function writePersistedAdvertiseScope(scope, supportDirectory) {
|
|
2048
|
+
const path = meshBindConfigPath(supportDirectory);
|
|
2049
|
+
mkdirSync2(dirname3(path), { recursive: true });
|
|
2050
|
+
const payload = { version: 1, advertiseScope: scope };
|
|
2051
|
+
const tmp = `${path}.${process.pid}.tmp`;
|
|
2052
|
+
writeFileSync2(tmp, `${JSON.stringify(payload, null, 2)}
|
|
2053
|
+
`, { encoding: "utf8", mode: 384 });
|
|
2054
|
+
renameSync2(tmp, path);
|
|
2055
|
+
}
|
|
2056
|
+
function resolveAdvertiseScope(env = process.env, readPersisted = null) {
|
|
2057
|
+
const persisted = readPersisted?.() ?? null;
|
|
2058
|
+
if (persisted === "mesh" || persisted === "local") {
|
|
2059
|
+
return persisted;
|
|
2060
|
+
}
|
|
2027
2061
|
if (openScoutNetworkDiscoveryEnabled(env))
|
|
2028
2062
|
return "mesh";
|
|
2029
2063
|
const raw = (env.OPENSCOUT_ADVERTISE_SCOPE ?? "").trim().toLowerCase();
|
|
@@ -2033,15 +2067,12 @@ function resolveAdvertiseScope(env = process.env) {
|
|
|
2033
2067
|
return "local";
|
|
2034
2068
|
return DEFAULT_ADVERTISE_SCOPE;
|
|
2035
2069
|
}
|
|
2036
|
-
function resolveBrokerHost(
|
|
2070
|
+
function resolveBrokerHost(_scope = resolveAdvertiseScope(), env = process.env) {
|
|
2037
2071
|
const explicit = env.OPENSCOUT_BROKER_HOST?.trim();
|
|
2038
|
-
if (explicit) {
|
|
2039
|
-
if (scope === "mesh" && isLoopbackHost(explicit)) {
|
|
2040
|
-
return DEFAULT_BROKER_HOST_MESH;
|
|
2041
|
-
}
|
|
2072
|
+
if (explicit && !isWildcardHost(explicit)) {
|
|
2042
2073
|
return explicit;
|
|
2043
2074
|
}
|
|
2044
|
-
return
|
|
2075
|
+
return DEFAULT_BROKER_HOST;
|
|
2045
2076
|
}
|
|
2046
2077
|
function isLoopbackHost(host) {
|
|
2047
2078
|
const trimmed = host.trim();
|
|
@@ -2057,7 +2088,10 @@ function localBrokerControlHost2(host) {
|
|
|
2057
2088
|
function buildDefaultBrokerUrl(host = DEFAULT_BROKER_HOST, port = DEFAULT_BROKER_PORT) {
|
|
2058
2089
|
return `http://${host}:${port}`;
|
|
2059
2090
|
}
|
|
2060
|
-
function
|
|
2091
|
+
function buildDefaultBrokerHttpsUrl(host, port = DEFAULT_BROKER_PORT) {
|
|
2092
|
+
return `https://${host}:${port}`;
|
|
2093
|
+
}
|
|
2094
|
+
function resolveBrokerUrl(host, port, scope, env = process.env, lanHost = findLanIPv4Address()) {
|
|
2061
2095
|
const explicit = env.OPENSCOUT_BROKER_URL?.trim();
|
|
2062
2096
|
if (explicit && !(scope === "mesh" && isUnreachableMeshBrokerUrl(explicit))) {
|
|
2063
2097
|
return explicit;
|
|
@@ -2065,11 +2099,80 @@ function resolveBrokerUrl(host, port, scope, env = process.env) {
|
|
|
2065
2099
|
if (scope === "mesh") {
|
|
2066
2100
|
const tailnetHost = readTailscaleSelfWebHostsSync(env)[0];
|
|
2067
2101
|
if (tailnetHost) {
|
|
2068
|
-
return
|
|
2102
|
+
return buildDefaultBrokerHttpsUrl(tailnetHost, port);
|
|
2103
|
+
}
|
|
2104
|
+
if (lanHost) {
|
|
2105
|
+
return buildDefaultBrokerHttpsUrl(lanHost, port);
|
|
2069
2106
|
}
|
|
2070
2107
|
}
|
|
2071
2108
|
return buildDefaultBrokerUrl(host, port);
|
|
2072
2109
|
}
|
|
2110
|
+
function findLanIPv4Address(interfaces = networkInterfaces()) {
|
|
2111
|
+
const candidates = [];
|
|
2112
|
+
for (const [name, entries] of Object.entries(interfaces)) {
|
|
2113
|
+
for (const entry of entries ?? []) {
|
|
2114
|
+
if (entry.internal)
|
|
2115
|
+
continue;
|
|
2116
|
+
if (entry.family !== "IPv4" && entry.family !== 4)
|
|
2117
|
+
continue;
|
|
2118
|
+
if (!isPrivateIPv4(entry.address) || isLinkLocalIPv4(entry.address) || isTailscaleIPv4(entry.address))
|
|
2119
|
+
continue;
|
|
2120
|
+
candidates.push({ name, address: entry.address });
|
|
2121
|
+
}
|
|
2122
|
+
}
|
|
2123
|
+
candidates.sort((left, right) => {
|
|
2124
|
+
const scoreDelta = lanInterfaceScore(left.name) - lanInterfaceScore(right.name);
|
|
2125
|
+
return scoreDelta !== 0 ? scoreDelta : left.address.localeCompare(right.address);
|
|
2126
|
+
});
|
|
2127
|
+
return candidates[0]?.address ?? null;
|
|
2128
|
+
}
|
|
2129
|
+
function findTailscaleIPv4Address(interfaces = networkInterfaces()) {
|
|
2130
|
+
const candidates = [];
|
|
2131
|
+
for (const entries of Object.values(interfaces)) {
|
|
2132
|
+
for (const entry of entries ?? []) {
|
|
2133
|
+
if (entry.internal)
|
|
2134
|
+
continue;
|
|
2135
|
+
if (entry.family !== "IPv4" && entry.family !== 4)
|
|
2136
|
+
continue;
|
|
2137
|
+
if (isTailscaleIPv4(entry.address)) {
|
|
2138
|
+
candidates.push(entry.address);
|
|
2139
|
+
}
|
|
2140
|
+
}
|
|
2141
|
+
}
|
|
2142
|
+
candidates.sort();
|
|
2143
|
+
return candidates[0] ?? null;
|
|
2144
|
+
}
|
|
2145
|
+
function lanInterfaceScore(name) {
|
|
2146
|
+
if (/^en\d+$/i.test(name))
|
|
2147
|
+
return 0;
|
|
2148
|
+
if (/^bridge\d*$/i.test(name))
|
|
2149
|
+
return 2;
|
|
2150
|
+
return 1;
|
|
2151
|
+
}
|
|
2152
|
+
function isPrivateIPv4(address) {
|
|
2153
|
+
const octets = parseIPv4(address);
|
|
2154
|
+
if (!octets)
|
|
2155
|
+
return false;
|
|
2156
|
+
const [first, second] = octets;
|
|
2157
|
+
return first === 10 || first === 172 && second >= 16 && second <= 31 || first === 192 && second === 168;
|
|
2158
|
+
}
|
|
2159
|
+
function isLinkLocalIPv4(address) {
|
|
2160
|
+
const octets = parseIPv4(address);
|
|
2161
|
+
return Boolean(octets && octets[0] === 169 && octets[1] === 254);
|
|
2162
|
+
}
|
|
2163
|
+
function isTailscaleIPv4(address) {
|
|
2164
|
+
const octets = parseIPv4(address);
|
|
2165
|
+
return Boolean(octets && octets[0] === 100 && octets[1] >= 64 && octets[1] <= 127);
|
|
2166
|
+
}
|
|
2167
|
+
function parseIPv4(address) {
|
|
2168
|
+
const octets = address.split(".");
|
|
2169
|
+
if (octets.length !== 4)
|
|
2170
|
+
return null;
|
|
2171
|
+
const numbers = octets.map((octet) => Number(octet));
|
|
2172
|
+
if (numbers.some((value) => !Number.isInteger(value) || value < 0 || value > 255))
|
|
2173
|
+
return null;
|
|
2174
|
+
return numbers;
|
|
2175
|
+
}
|
|
2073
2176
|
function isUnreachableMeshBrokerUrl(value) {
|
|
2074
2177
|
try {
|
|
2075
2178
|
const host = new URL(value).hostname;
|
|
@@ -2226,7 +2329,7 @@ function resolveBrokerServiceConfig() {
|
|
|
2226
2329
|
const runtimeDirectory = join5(supportDirectory, "runtime");
|
|
2227
2330
|
const logsDirectory = join5(supportDirectory, "logs", "broker");
|
|
2228
2331
|
const controlHome = isTmpPath(supportPaths.controlHome) ? join5(homedir5(), ".openscout", "control-plane") : supportPaths.controlHome;
|
|
2229
|
-
const advertiseScope = resolveAdvertiseScope();
|
|
2332
|
+
const advertiseScope = resolveAdvertiseScope(process.env, () => readPersistedAdvertiseScope(supportDirectory));
|
|
2230
2333
|
const brokerHost = resolveBrokerHost(advertiseScope);
|
|
2231
2334
|
const brokerPort = Number.parseInt(process.env.OPENSCOUT_BROKER_PORT ?? String(resolveBrokerPort()), 10);
|
|
2232
2335
|
const brokerUrl = resolveBrokerUrl(brokerHost, brokerPort, advertiseScope);
|
|
@@ -2796,6 +2899,7 @@ if (process.argv[1] && fileURLToPath(import.meta.url) === process.argv[1] && !pr
|
|
|
2796
2899
|
});
|
|
2797
2900
|
}
|
|
2798
2901
|
export {
|
|
2902
|
+
writePersistedAdvertiseScope,
|
|
2799
2903
|
uninstallBrokerService,
|
|
2800
2904
|
stopBrokerService,
|
|
2801
2905
|
startBrokerService,
|
|
@@ -2812,13 +2916,19 @@ export {
|
|
|
2812
2916
|
resolveBrokerServiceAdapter,
|
|
2813
2917
|
resolveBrokerHost,
|
|
2814
2918
|
resolveAdvertiseScope,
|
|
2919
|
+
readPersistedAdvertiseScope,
|
|
2920
|
+
meshBindConfigPath,
|
|
2815
2921
|
isLoopbackHost,
|
|
2816
2922
|
installBrokerService,
|
|
2923
|
+
findTailscaleIPv4Address,
|
|
2924
|
+
findLanIPv4Address,
|
|
2817
2925
|
buildLocalBrokerControlUrl,
|
|
2818
2926
|
buildDefaultBrokerUrl,
|
|
2819
2927
|
buildDefaultBrokerSocketPath,
|
|
2928
|
+
buildDefaultBrokerHttpsUrl,
|
|
2820
2929
|
brokerServiceStatus,
|
|
2821
2930
|
assertBrokerServiceSchemaCompatible,
|
|
2931
|
+
MESH_BIND_CONFIG_FILE,
|
|
2822
2932
|
DEFAULT_BROKER_URL,
|
|
2823
2933
|
DEFAULT_BROKER_PORT,
|
|
2824
2934
|
DEFAULT_BROKER_HOST_MESH,
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
import "reflect-metadata";
|
|
3
|
+
|
|
2
4
|
// packages/runtime/src/broker-process-manager.ts
|
|
3
5
|
import { spawn as spawn2, spawnSync } from "child_process";
|
|
4
|
-
import { existsSync as existsSync5, readFileSync as readFileSync4 } from "fs";
|
|
5
|
-
import { homedir as homedir5 } from "os";
|
|
6
|
+
import { existsSync as existsSync5, mkdirSync as mkdirSync2, readFileSync as readFileSync4, renameSync as renameSync2, writeFileSync as writeFileSync2 } from "fs";
|
|
7
|
+
import { homedir as homedir5, networkInterfaces } from "os";
|
|
6
8
|
import { dirname as dirname3, join as join5, resolve as resolve2 } from "path";
|
|
7
9
|
import { fileURLToPath } from "url";
|
|
8
10
|
|
|
@@ -2004,10 +2006,32 @@ function isTmpPath(p) {
|
|
|
2004
2006
|
return /^\/(?:private\/)?tmp\//.test(p);
|
|
2005
2007
|
}
|
|
2006
2008
|
var DEFAULT_BROKER_HOST = "127.0.0.1";
|
|
2007
|
-
var DEFAULT_BROKER_HOST_MESH = "0.0.0.0";
|
|
2008
2009
|
var DEFAULT_BROKER_PORT = OPENSCOUT_PORTS.broker;
|
|
2009
2010
|
var DEFAULT_ADVERTISE_SCOPE = "local";
|
|
2010
|
-
|
|
2011
|
+
var MESH_BIND_CONFIG_FILE = "mesh-bind.json";
|
|
2012
|
+
function meshBindConfigPath(supportDirectory) {
|
|
2013
|
+
const dir = supportDirectory ?? resolveOpenScoutSupportPaths().supportDirectory;
|
|
2014
|
+
return join5(dir, MESH_BIND_CONFIG_FILE);
|
|
2015
|
+
}
|
|
2016
|
+
function readPersistedAdvertiseScope(supportDirectory) {
|
|
2017
|
+
const path = meshBindConfigPath(supportDirectory);
|
|
2018
|
+
if (!existsSync5(path))
|
|
2019
|
+
return null;
|
|
2020
|
+
try {
|
|
2021
|
+
const parsed = JSON.parse(readFileSync4(path, "utf8"));
|
|
2022
|
+
if (parsed.version !== 1)
|
|
2023
|
+
return null;
|
|
2024
|
+
if (parsed.advertiseScope === "mesh" || parsed.advertiseScope === "local") {
|
|
2025
|
+
return parsed.advertiseScope;
|
|
2026
|
+
}
|
|
2027
|
+
} catch {}
|
|
2028
|
+
return null;
|
|
2029
|
+
}
|
|
2030
|
+
function resolveAdvertiseScope(env = process.env, readPersisted = null) {
|
|
2031
|
+
const persisted = readPersisted?.() ?? null;
|
|
2032
|
+
if (persisted === "mesh" || persisted === "local") {
|
|
2033
|
+
return persisted;
|
|
2034
|
+
}
|
|
2011
2035
|
if (openScoutNetworkDiscoveryEnabled(env))
|
|
2012
2036
|
return "mesh";
|
|
2013
2037
|
const raw = (env.OPENSCOUT_ADVERTISE_SCOPE ?? "").trim().toLowerCase();
|
|
@@ -2017,15 +2041,12 @@ function resolveAdvertiseScope(env = process.env) {
|
|
|
2017
2041
|
return "local";
|
|
2018
2042
|
return DEFAULT_ADVERTISE_SCOPE;
|
|
2019
2043
|
}
|
|
2020
|
-
function resolveBrokerHost(
|
|
2044
|
+
function resolveBrokerHost(_scope = resolveAdvertiseScope(), env = process.env) {
|
|
2021
2045
|
const explicit = env.OPENSCOUT_BROKER_HOST?.trim();
|
|
2022
|
-
if (explicit) {
|
|
2023
|
-
if (scope === "mesh" && isLoopbackHost(explicit)) {
|
|
2024
|
-
return DEFAULT_BROKER_HOST_MESH;
|
|
2025
|
-
}
|
|
2046
|
+
if (explicit && !isWildcardHost(explicit)) {
|
|
2026
2047
|
return explicit;
|
|
2027
2048
|
}
|
|
2028
|
-
return
|
|
2049
|
+
return DEFAULT_BROKER_HOST;
|
|
2029
2050
|
}
|
|
2030
2051
|
function isLoopbackHost(host) {
|
|
2031
2052
|
const trimmed = host.trim();
|
|
@@ -2034,7 +2055,10 @@ function isLoopbackHost(host) {
|
|
|
2034
2055
|
function buildDefaultBrokerUrl(host = DEFAULT_BROKER_HOST, port = DEFAULT_BROKER_PORT) {
|
|
2035
2056
|
return `http://${host}:${port}`;
|
|
2036
2057
|
}
|
|
2037
|
-
function
|
|
2058
|
+
function buildDefaultBrokerHttpsUrl(host, port = DEFAULT_BROKER_PORT) {
|
|
2059
|
+
return `https://${host}:${port}`;
|
|
2060
|
+
}
|
|
2061
|
+
function resolveBrokerUrl(host, port, scope, env = process.env, lanHost = findLanIPv4Address()) {
|
|
2038
2062
|
const explicit = env.OPENSCOUT_BROKER_URL?.trim();
|
|
2039
2063
|
if (explicit && !(scope === "mesh" && isUnreachableMeshBrokerUrl(explicit))) {
|
|
2040
2064
|
return explicit;
|
|
@@ -2042,11 +2066,64 @@ function resolveBrokerUrl(host, port, scope, env = process.env) {
|
|
|
2042
2066
|
if (scope === "mesh") {
|
|
2043
2067
|
const tailnetHost = readTailscaleSelfWebHostsSync(env)[0];
|
|
2044
2068
|
if (tailnetHost) {
|
|
2045
|
-
return
|
|
2069
|
+
return buildDefaultBrokerHttpsUrl(tailnetHost, port);
|
|
2070
|
+
}
|
|
2071
|
+
if (lanHost) {
|
|
2072
|
+
return buildDefaultBrokerHttpsUrl(lanHost, port);
|
|
2046
2073
|
}
|
|
2047
2074
|
}
|
|
2048
2075
|
return buildDefaultBrokerUrl(host, port);
|
|
2049
2076
|
}
|
|
2077
|
+
function findLanIPv4Address(interfaces = networkInterfaces()) {
|
|
2078
|
+
const candidates = [];
|
|
2079
|
+
for (const [name, entries] of Object.entries(interfaces)) {
|
|
2080
|
+
for (const entry of entries ?? []) {
|
|
2081
|
+
if (entry.internal)
|
|
2082
|
+
continue;
|
|
2083
|
+
if (entry.family !== "IPv4" && entry.family !== 4)
|
|
2084
|
+
continue;
|
|
2085
|
+
if (!isPrivateIPv4(entry.address) || isLinkLocalIPv4(entry.address) || isTailscaleIPv4(entry.address))
|
|
2086
|
+
continue;
|
|
2087
|
+
candidates.push({ name, address: entry.address });
|
|
2088
|
+
}
|
|
2089
|
+
}
|
|
2090
|
+
candidates.sort((left, right) => {
|
|
2091
|
+
const scoreDelta = lanInterfaceScore(left.name) - lanInterfaceScore(right.name);
|
|
2092
|
+
return scoreDelta !== 0 ? scoreDelta : left.address.localeCompare(right.address);
|
|
2093
|
+
});
|
|
2094
|
+
return candidates[0]?.address ?? null;
|
|
2095
|
+
}
|
|
2096
|
+
function lanInterfaceScore(name) {
|
|
2097
|
+
if (/^en\d+$/i.test(name))
|
|
2098
|
+
return 0;
|
|
2099
|
+
if (/^bridge\d*$/i.test(name))
|
|
2100
|
+
return 2;
|
|
2101
|
+
return 1;
|
|
2102
|
+
}
|
|
2103
|
+
function isPrivateIPv4(address) {
|
|
2104
|
+
const octets = parseIPv4(address);
|
|
2105
|
+
if (!octets)
|
|
2106
|
+
return false;
|
|
2107
|
+
const [first, second] = octets;
|
|
2108
|
+
return first === 10 || first === 172 && second >= 16 && second <= 31 || first === 192 && second === 168;
|
|
2109
|
+
}
|
|
2110
|
+
function isLinkLocalIPv4(address) {
|
|
2111
|
+
const octets = parseIPv4(address);
|
|
2112
|
+
return Boolean(octets && octets[0] === 169 && octets[1] === 254);
|
|
2113
|
+
}
|
|
2114
|
+
function isTailscaleIPv4(address) {
|
|
2115
|
+
const octets = parseIPv4(address);
|
|
2116
|
+
return Boolean(octets && octets[0] === 100 && octets[1] >= 64 && octets[1] <= 127);
|
|
2117
|
+
}
|
|
2118
|
+
function parseIPv4(address) {
|
|
2119
|
+
const octets = address.split(".");
|
|
2120
|
+
if (octets.length !== 4)
|
|
2121
|
+
return null;
|
|
2122
|
+
const numbers = octets.map((octet) => Number(octet));
|
|
2123
|
+
if (numbers.some((value) => !Number.isInteger(value) || value < 0 || value > 255))
|
|
2124
|
+
return null;
|
|
2125
|
+
return numbers;
|
|
2126
|
+
}
|
|
2050
2127
|
function isUnreachableMeshBrokerUrl(value) {
|
|
2051
2128
|
try {
|
|
2052
2129
|
const host = new URL(value).hostname;
|
|
@@ -2183,7 +2260,7 @@ function resolveBrokerServiceConfig() {
|
|
|
2183
2260
|
const runtimeDirectory = join5(supportDirectory, "runtime");
|
|
2184
2261
|
const logsDirectory = join5(supportDirectory, "logs", "broker");
|
|
2185
2262
|
const controlHome = isTmpPath(supportPaths.controlHome) ? join5(homedir5(), ".openscout", "control-plane") : supportPaths.controlHome;
|
|
2186
|
-
const advertiseScope = resolveAdvertiseScope();
|
|
2263
|
+
const advertiseScope = resolveAdvertiseScope(process.env, () => readPersistedAdvertiseScope(supportDirectory));
|
|
2187
2264
|
const brokerHost = resolveBrokerHost(advertiseScope);
|
|
2188
2265
|
const brokerPort = Number.parseInt(process.env.OPENSCOUT_BROKER_PORT ?? String(resolveBrokerPort()), 10);
|
|
2189
2266
|
const brokerUrl = resolveBrokerUrl(brokerHost, brokerPort, advertiseScope);
|