@openscout/scout 0.2.108 → 0.2.110

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.
Files changed (557) hide show
  1. package/README.md +206 -122
  2. package/bin/scoutd +0 -0
  3. package/dist/build-manifest.json +3 -3
  4. package/dist/chat.mjs +211 -30
  5. package/dist/client/assets/conversation-motion-features-BeAplMGv.js +1 -0
  6. package/dist/client/assets/index-CMbTY75G.js +91 -0
  7. package/dist/client/assets/index-DYfh8pn_.css +1 -0
  8. package/dist/client/index.html +3 -3
  9. package/dist/main.mjs +7628 -3047
  10. package/dist/node/main.mjs +671 -115
  11. package/dist/openscout-terminal-relay.mjs +12 -3
  12. package/dist/pairing-runtime-controller.mjs +17539 -6059
  13. package/dist/runtime/base-daemon.mjs +410 -54
  14. package/dist/runtime/broker-daemon.mjs +67463 -52744
  15. package/dist/runtime/broker-process-manager.mjs +41 -14
  16. package/dist/runtime/mesh-discover.mjs +39 -13
  17. package/dist/scout-control-plane-web.mjs +80047 -58867
  18. package/dist/statusline.mjs +10 -3
  19. package/dist/update-helper.mjs +1105 -69
  20. package/package.json +2 -2
  21. package/server.json +2 -2
  22. package/dist/client/assets/ActivityScreen-C1H-vL0L.js +0 -1
  23. package/dist/client/assets/AddProjectForm-4sVXmjfN.js +0 -1
  24. package/dist/client/assets/AdventureEvidence-D5wq1vu8.js +0 -5
  25. package/dist/client/assets/AdventureReader-BICypcDY.js +0 -4
  26. package/dist/client/assets/AdventureScenery-CGEcG0zV.js +0 -1
  27. package/dist/client/assets/AgentAdventures-5yBt-Zl3.js +0 -1
  28. package/dist/client/assets/AgentAvatar-Dn8TUv5W.js +0 -1
  29. package/dist/client/assets/AgentConfigurationScreen-C0D9WNyL.js +0 -1
  30. package/dist/client/assets/AgentDefinitionsWorkspace-BzcBdC_s.js +0 -1
  31. package/dist/client/assets/AgentDetailCard-C4WVeJvJ.css +0 -1
  32. package/dist/client/assets/AgentDetailCard-CI-ufaEP.js +0 -1
  33. package/dist/client/assets/AgentFloorView-D8tlGlgy.js +0 -1
  34. package/dist/client/assets/AgentFloorWorld-DqmnQexg.js +0 -1
  35. package/dist/client/assets/AgentInfoScreen-BnRhfcFy.js +0 -1
  36. package/dist/client/assets/AgentLaneCard-pppHFROz.js +0 -1
  37. package/dist/client/assets/AgentLaneChrome-RptImDFc.js +0 -1
  38. package/dist/client/assets/AgentLaneDetailSheet-BqbwGskh.js +0 -4
  39. package/dist/client/assets/AgentLaneSummaryResize-DaIgwyVh.js +0 -1
  40. package/dist/client/assets/AgentLanesEmbedScreen-De6C4ZOw.js +0 -1
  41. package/dist/client/assets/AgentLanesPreflight-BQfj2twF.js +0 -1
  42. package/dist/client/assets/AgentLanesView-CiISx7pu.js +0 -2
  43. package/dist/client/assets/AgentLiveActions-CGS-Bxb7.css +0 -1
  44. package/dist/client/assets/AgentLiveActions-CkRGkv13.js +0 -1
  45. package/dist/client/assets/AgentMasterScreen-CijN_4tN.js +0 -1
  46. package/dist/client/assets/AgentSessions-ghjQcSrh.js +0 -6
  47. package/dist/client/assets/AgentsConsole-BjSTs-TV.css +0 -1
  48. package/dist/client/assets/AgentsConsole-D8upjDpn.js +0 -1
  49. package/dist/client/assets/AgentsScreen-C17BFqjf.js +0 -1
  50. package/dist/client/assets/AgentsSubnav-_1GVC4hj.js +0 -1
  51. package/dist/client/assets/AstronautSuit-Dzu4GOMR.js +0 -1
  52. package/dist/client/assets/AtopView-DJK5b3lZ.js +0 -1
  53. package/dist/client/assets/BackToPicker-BPU7kbXq.js +0 -1
  54. package/dist/client/assets/BackToPicker-CdgVu-to.css +0 -1
  55. package/dist/client/assets/BriefingDetailScreen-CTvFw523.js +0 -1
  56. package/dist/client/assets/BriefingsScreen-DpVC3OUk.js +0 -1
  57. package/dist/client/assets/BrokerMetadataPanel-glRVdwkU.js +0 -1
  58. package/dist/client/assets/BrokerScreen-CqKsBwEx.js +0 -8
  59. package/dist/client/assets/CastPicker-Y29K5kKk.js +0 -1
  60. package/dist/client/assets/CastPicker-zXsnkTIy.css +0 -1
  61. package/dist/client/assets/ChannelComposer-D4EY9jVW.js +0 -1
  62. package/dist/client/assets/ChannelSidebar-CVmykV4d.js +0 -1
  63. package/dist/client/assets/CharacterFamilyPreview-Bj8oMD-5.js +0 -1
  64. package/dist/client/assets/CharacterFamilyPreview-BniL8sEL.css +0 -1
  65. package/dist/client/assets/ChatAvatar-BsAOShUr.js +0 -1
  66. package/dist/client/assets/ChatBits-Cq54CmyB.js +0 -1
  67. package/dist/client/assets/ChatCollapsedStrip-B0DdrOo2.js +0 -1
  68. package/dist/client/assets/ChatRichInput-DYJRhGTP.js +0 -31
  69. package/dist/client/assets/ChatRightPanel-D94Lw7ud.js +0 -1
  70. package/dist/client/assets/ChatSpaceSurface-Cp532VmZ.js +0 -1
  71. package/dist/client/assets/ChatSpaceTheme-3wLZGsvT.css +0 -1
  72. package/dist/client/assets/ChatSpaceTheme-DPzYpw-v.js +0 -1
  73. package/dist/client/assets/CodeDiffPane-DCgMUi39.js +0 -1
  74. package/dist/client/assets/CodeProjectPicker-Dq787L77.js +0 -2
  75. package/dist/client/assets/CodeScreen-BN4TkiR0.js +0 -1
  76. package/dist/client/assets/CommsCanvas-BR2YS76H.css +0 -1
  77. package/dist/client/assets/CommsCanvas-Dh056d91.js +0 -1
  78. package/dist/client/assets/CommsDeck-CRXKIerH.js +0 -1
  79. package/dist/client/assets/CommsFlowGraph-Cc48o9u_.js +0 -1
  80. package/dist/client/assets/CommsFlowGraph-vQucylxF.css +0 -1
  81. package/dist/client/assets/CommsFlowMap-Ckasql5e.js +0 -1
  82. package/dist/client/assets/CommsSelection-CuphnUny.js +0 -1
  83. package/dist/client/assets/ComposerAttachments-9uYp_Lh5.js +0 -1
  84. package/dist/client/assets/ConversationComposer-hYtLurqy.js +0 -1
  85. package/dist/client/assets/ConversationFeedRows-Bu0ZJcy8.js +0 -1
  86. package/dist/client/assets/ConversationHeader-L9738YVP.js +0 -1
  87. package/dist/client/assets/ConversationPanels-D6KuqvGu.js +0 -6
  88. package/dist/client/assets/ConversationScreen-9MlMnEo4.css +0 -1
  89. package/dist/client/assets/ConversationScreen-Pzxy9x4m.js +0 -2
  90. package/dist/client/assets/ConversationStatus-BEefIbXq.js +0 -1
  91. package/dist/client/assets/CrewAvatar-BnIPIn_Z.css +0 -1
  92. package/dist/client/assets/CrewAvatar-a_C_F9r_.js +0 -1
  93. package/dist/client/assets/CrewSprite-CguHb2Ny.js +0 -1
  94. package/dist/client/assets/CrewSprite-DsQJdu3Z.css +0 -1
  95. package/dist/client/assets/CrewStage-IPpS3Oja.js +0 -1
  96. package/dist/client/assets/CrewWorkspaces-BTPtcEcx.js +0 -1
  97. package/dist/client/assets/CrewWorkspaces-DDuYMByu.css +0 -1
  98. package/dist/client/assets/DataTable-DnL_8SAu.js +0 -1
  99. package/dist/client/assets/DispatchAftermath-CoAYaL3B.js +0 -1
  100. package/dist/client/assets/DocumentFocusViewer-BSC_JwVE.css +0 -1
  101. package/dist/client/assets/DocumentFocusViewer-mxzPxQQW.js +0 -1
  102. package/dist/client/assets/EmbeddableSurfacesLab-BAZ_eRMc.js +0 -1
  103. package/dist/client/assets/EmptyState-DLiLgtPK.js +0 -1
  104. package/dist/client/assets/FileViewerPane-Dc7AoVod.js +0 -3
  105. package/dist/client/assets/FleetRollCallHud-VhpxVcGO.js +0 -1
  106. package/dist/client/assets/FlightObserveScreen-C1kASP3J.js +0 -1
  107. package/dist/client/assets/FloorContextSheet-BfrXNoBn.js +0 -1
  108. package/dist/client/assets/FloorExchangePanel-B3TFhjLk.css +0 -1
  109. package/dist/client/assets/FloorExchangePanel-DsG1cRzu.js +0 -1
  110. package/dist/client/assets/FloorMessagePasses-Cm3LbkHd.js +0 -1
  111. package/dist/client/assets/FloorMessagePasses-nxwwiUom.css +0 -1
  112. package/dist/client/assets/FloorReplay-Bg7kA-tR.js +0 -1
  113. package/dist/client/assets/FloorResourcesSheet-Ba9HubO2.js +0 -1
  114. package/dist/client/assets/FloorSavedWork-BDOvV3mA.js +0 -1
  115. package/dist/client/assets/FloorTacticalHUD-4d-Hr-YL.js +0 -1
  116. package/dist/client/assets/FollowScreen-DFVSlsQV.js +0 -1
  117. package/dist/client/assets/HarnessMark-CP-PWk2W.js +0 -1
  118. package/dist/client/assets/HarnessesScreen-j-91IoOo.js +0 -1
  119. package/dist/client/assets/HerdrSession-H2mmxeTK.js +0 -4
  120. package/dist/client/assets/HomeHero-7JwycwFY.css +0 -1
  121. package/dist/client/assets/HomeHero-g4H3Ctxg.js +0 -1
  122. package/dist/client/assets/HostAdvisorView-Cyt3b5Fq.js +0 -1
  123. package/dist/client/assets/InviteLandingScreen-C3DtAGD4.js +0 -1
  124. package/dist/client/assets/InviteSheet-BiGMNpsE.js +0 -1
  125. package/dist/client/assets/JumpPalette-goXAVByA.js +0 -1
  126. package/dist/client/assets/KnowledgeSearchInspector-BbOQIqdF.js +0 -1
  127. package/dist/client/assets/KnowledgeSearchScreen-DC8yX-kA.js +0 -1
  128. package/dist/client/assets/LaneToolHoverCard-B8Am_1DC.js +0 -1
  129. package/dist/client/assets/LaneTraceDetailSheet-CngYIxdI.js +0 -1
  130. package/dist/client/assets/LaneTraceEventFocus-BRR_jcl9.js +0 -1
  131. package/dist/client/assets/MeshCanvas-DzkuY_XI.js +0 -3
  132. package/dist/client/assets/MeshCanvasMinimap-BrscEPAH.js +0 -1
  133. package/dist/client/assets/MeshCanvasMinimap-Dv7nMbl5.css +0 -1
  134. package/dist/client/assets/MeshScreen-CAtRB8K6.js +0 -1
  135. package/dist/client/assets/MeshTopologyView-B1I2dAhu.js +0 -2
  136. package/dist/client/assets/MessageEmbeds-B-FbWI7a.js +0 -1
  137. package/dist/client/assets/MessagesScreen-hq7D3Lfi.js +0 -1
  138. package/dist/client/assets/MissionContextRail-ClR8amG1.js +0 -1
  139. package/dist/client/assets/MissionControlView-D6gbMrgx.js +0 -1
  140. package/dist/client/assets/MissionFocusOverlay-CzeNgI9Q.js +0 -1
  141. package/dist/client/assets/MissionLeftAgentRow-CB3cgeYr.js +0 -1
  142. package/dist/client/assets/MissionLogPane-2PMEoG44.js +0 -1
  143. package/dist/client/assets/NativeAreaScreen-BnlrAWT8.js +0 -1
  144. package/dist/client/assets/NativeAreaScreen-DSR5Tf6F.js +0 -1
  145. package/dist/client/assets/NativeAreaScreen-fGsxyeC3.js +0 -1
  146. package/dist/client/assets/NewAgentModal-4b_3aoZE.js +0 -1
  147. package/dist/client/assets/NewAgentModal-ru8u5YdJ.css +0 -1
  148. package/dist/client/assets/NewChatComposer-C5LT7MF7.css +0 -1
  149. package/dist/client/assets/NewChatComposer-D-VB5vdt.js +0 -19
  150. package/dist/client/assets/NewChatOrigin-BYsEu9dZ.js +0 -1
  151. package/dist/client/assets/NodeDetailPanel-9NaEnZAQ.js +0 -1
  152. package/dist/client/assets/NodeMenu-BgJMmffZ.js +0 -1
  153. package/dist/client/assets/ObserveEmbedScreen-W7Q5HbXP.js +0 -2
  154. package/dist/client/assets/ObserveTextFlow-C0oQEerY.js +0 -2
  155. package/dist/client/assets/ObservedTopologyPanel-BsBsvVPL.css +0 -1
  156. package/dist/client/assets/ObservedTopologyPanel-Ci7emnnj.js +0 -2
  157. package/dist/client/assets/OpenScoutAppShell-Bh6FnEJO.css +0 -1
  158. package/dist/client/assets/OpenScoutAppShell-Di9qdmI0.js +0 -22
  159. package/dist/client/assets/OpsAgentsView-DVotOMg2.js +0 -1
  160. package/dist/client/assets/OpsScreen-C955zgr3.js +0 -1
  161. package/dist/client/assets/OpsSubnav-CjMVj7Sk.js +0 -1
  162. package/dist/client/assets/ProjectAgentProfile-B1VqGSmu.js +0 -1
  163. package/dist/client/assets/ProjectAgentProfileBar-DhVU7zew.js +0 -1
  164. package/dist/client/assets/ProjectAgentProfileHero-CJk-Dx4t.js +0 -1
  165. package/dist/client/assets/ProjectsInbox-B7kap8nR.js +0 -2
  166. package/dist/client/assets/ProjectsInbox-B8zYE4vP.css +0 -1
  167. package/dist/client/assets/ProjectsRail-BhSaqbv0.js +0 -1
  168. package/dist/client/assets/ProjectsScreen-CSb7nwjb.js +0 -1
  169. package/dist/client/assets/ProjectsThreadAside-pEJutIO8.js +0 -1
  170. package/dist/client/assets/Provider-BEXAZWd9.js +0 -5
  171. package/dist/client/assets/Provider-CCzjtkda.css +0 -1
  172. package/dist/client/assets/RailRow-B25zKEub.css +0 -1
  173. package/dist/client/assets/RailRow-Ddz90weI.js +0 -1
  174. package/dist/client/assets/RawSessionsTable-TdKlJIPl.js +0 -1
  175. package/dist/client/assets/RealtimeVoiceScreen-BU5KmlNo.js +0 -8
  176. package/dist/client/assets/RenderedWorkerSprite-BNhFXMIo.js +0 -1
  177. package/dist/client/assets/RenderedWorkerSprite-qnTfkd_4.css +0 -1
  178. package/dist/client/assets/ReplayClock-wLpb4VqN.js +0 -1
  179. package/dist/client/assets/ReplayLog-IUyQdklN.js +0 -1
  180. package/dist/client/assets/ReplayOutpost-C4djhjZJ.js +0 -1
  181. package/dist/client/assets/ReplayOutpost-Y1DvZgeu.css +0 -1
  182. package/dist/client/assets/RepoDiffEmbedScreen-BmQX_8E-.js +0 -1
  183. package/dist/client/assets/RepoDiffPageScreen-B9oAjrC6.js +0 -1
  184. package/dist/client/assets/RepoDiffViewer-Ch_lIMt-.js +0 -7
  185. package/dist/client/assets/RepoDiffViewerLazy-DL6A2o_z.js +0 -2
  186. package/dist/client/assets/ReposScreen-D-E7fSAB.js +0 -6
  187. package/dist/client/assets/RiggedWorkerCharacter-BpYECnyK.css +0 -1
  188. package/dist/client/assets/RiggedWorkerCharacter-CF6fhzGd.js +0 -1
  189. package/dist/client/assets/SageModelStudio-768dRQr4.css +0 -1
  190. package/dist/client/assets/SageModelStudio-CSet_ITs.js +0 -4108
  191. package/dist/client/assets/ScoutDeckSurface-BJ-fl8AX.js +0 -1
  192. package/dist/client/assets/ScoutDeckSurface-uhmuZRzC.css +0 -1
  193. package/dist/client/assets/ScoutSurface-BvFRdce6.js +0 -1
  194. package/dist/client/assets/ScoutbotFxLab-CfPzycZ7.js +0 -4
  195. package/dist/client/assets/SecondaryNav-1FjBDWuY.js +0 -1
  196. package/dist/client/assets/SessionContextStrip-BoiIxXvS.js +0 -1
  197. package/dist/client/assets/SessionContextStrip-DAIXwtHd.css +0 -1
  198. package/dist/client/assets/SessionEmbedScreen-BizGNGOz.js +0 -1
  199. package/dist/client/assets/SessionHopMenu-DX6PJPNk.js +0 -1
  200. package/dist/client/assets/SessionObserve-CDdJ7fAE.css +0 -1
  201. package/dist/client/assets/SessionObserve-Dw3bVQYF.js +0 -12
  202. package/dist/client/assets/SessionObserveEvidence-uD1OX-R5.js +0 -1
  203. package/dist/client/assets/SessionRefScreen-Ch9H-qVk.js +0 -1
  204. package/dist/client/assets/SessionsScreen-DUeP23Xy.js +0 -1
  205. package/dist/client/assets/SettingsDrawer-BVrP6J52.js +0 -3
  206. package/dist/client/assets/SettingsDrawer-R8a0TlJD.css +0 -1
  207. package/dist/client/assets/SettingsScreen-BcJ05LE5.js +0 -1
  208. package/dist/client/assets/SharedFloorCharacter-Bi5_md4R.css +0 -1
  209. package/dist/client/assets/SharedFloorCharacter-dnamlt1p.js +0 -1
  210. package/dist/client/assets/SharedWorkFloor-0rqtdF-n.css +0 -1
  211. package/dist/client/assets/SharedWorkFloor-H-e2TVj9.js +0 -2
  212. package/dist/client/assets/ShikiPane-CDiIT_qn.js +0 -15
  213. package/dist/client/assets/SlidePanel-Bg5dVaIa.css +0 -1
  214. package/dist/client/assets/SlidePanel-D5oPQocF.js +0 -1
  215. package/dist/client/assets/SpaceSwitcher-WccPJ0fS.js +0 -1
  216. package/dist/client/assets/SpriteAvatar-D53GaaK3.js +0 -1
  217. package/dist/client/assets/SproutActionSprite-BrFCmgWS.js +0 -1
  218. package/dist/client/assets/StatusPill-jT--OXbn.js +0 -1
  219. package/dist/client/assets/TailView-B44cSuyl.js +0 -2
  220. package/dist/client/assets/TailView-Mj3AU2u0.css +0 -1
  221. package/dist/client/assets/Terminal-D0PanmIk.js +0 -4
  222. package/dist/client/assets/TerminalEmbedScreen-Eddi4sts.js +0 -1
  223. package/dist/client/assets/TerminalHeaderMount-CYYcKxQ-.js +0 -1
  224. package/dist/client/assets/TextDocumentSurface-DBslUq9k.js +0 -4
  225. package/dist/client/assets/TmuxPeek-Ctw5yYO5.js +0 -1
  226. package/dist/client/assets/VoiceControlWell-BkjuWjYu.js +0 -1
  227. package/dist/client/assets/VoicePathDiagram-u0i6ntbx.js +0 -1
  228. package/dist/client/assets/VoicePermissionsPanel-9Nuw-xCr.js +0 -1
  229. package/dist/client/assets/VoicePermissionsPanel-RijAZ1gP.css +0 -1
  230. package/dist/client/assets/VoiceTurnDetails-kS7lfbmt.js +0 -8
  231. package/dist/client/assets/VoiceTurnStage-DLY6aYDg.js +0 -1
  232. package/dist/client/assets/VoiceTurnView-CF4tIldB.js +0 -1
  233. package/dist/client/assets/WorkDetailScreen-BrrkENYq.js +0 -5
  234. package/dist/client/assets/WorkFilesViewer-B63sKRYZ.js +0 -1
  235. package/dist/client/assets/WorkRunView-CxwAZ2QQ.css +0 -1
  236. package/dist/client/assets/WorkRunView-DLIzAsc3.js +0 -1
  237. package/dist/client/assets/WorldActorTalk-CHhFTiQV.js +0 -1
  238. package/dist/client/assets/WorldCharacter-CJGx2DVy.js +0 -1
  239. package/dist/client/assets/WorldMinimap-DL12pBw3.js +0 -1
  240. package/dist/client/assets/WorldSky-BlPNvGLo.js +0 -1
  241. package/dist/client/assets/activity-CXkZ620t.js +0 -1
  242. package/dist/client/assets/addon-fit-G3qi01sy.js +0 -1
  243. package/dist/client/assets/addon-webgl-Bo7kSgOB.js +0 -82
  244. package/dist/client/assets/adventure-evidence-DgQbBmfa.css +0 -1
  245. package/dist/client/assets/adventure-habitats-v1-CVMbdB_Z.png +0 -0
  246. package/dist/client/assets/adventure-habitats-v1-M1lcpTJh.js +0 -1
  247. package/dist/client/assets/adventure-playback-DTfkhIc0.js +0 -3
  248. package/dist/client/assets/adventure-reader-DM5UDDm9.css +0 -1
  249. package/dist/client/assets/agent-adventures-DZtWpj6k.css +0 -1
  250. package/dist/client/assets/agent-definitions-CymTYqvo.css +0 -1
  251. package/dist/client/assets/agent-directory-studio-injection-Bc8590z5.css +0 -1
  252. package/dist/client/assets/agent-essentials-DnfdGmIX.js +0 -1
  253. package/dist/client/assets/agent-floor-Dmr9hZHL.css +0 -1
  254. package/dist/client/assets/agent-floor-actor-DW8zLht0.js +0 -1
  255. package/dist/client/assets/agent-floor-world-Bnd1AtwK.css +0 -1
  256. package/dist/client/assets/agent-floor-world-layout-hfMjuoui.js +0 -1
  257. package/dist/client/assets/agent-lane-card-BkWVDYM8.css +0 -1
  258. package/dist/client/assets/agent-lane-card-model-CeqQGp-8.js +0 -1
  259. package/dist/client/assets/agent-lane-detail-Ti3trpfH.js +0 -2
  260. package/dist/client/assets/agent-lane-preview-Dpa3DuOn.js +0 -4
  261. package/dist/client/assets/agent-lanes-DmgipV9D.css +0 -1
  262. package/dist/client/assets/agent-lanes-model-DMAdqCmK.js +0 -4
  263. package/dist/client/assets/agent-master-THmq-1k8.css +0 -1
  264. package/dist/client/assets/agent-master-model-Bk_yuUXJ.js +0 -1
  265. package/dist/client/assets/agent-specialization-DYX_DSlY.js +0 -1
  266. package/dist/client/assets/agent-state-DDhnFEEP.js +0 -1
  267. package/dist/client/assets/agents-detail-redesign-h34ROjOW.css +0 -1
  268. package/dist/client/assets/agents-project-DgbqDc65.css +0 -1
  269. package/dist/client/assets/agents-screen-BYakbO50.css +0 -1
  270. package/dist/client/assets/api-BQYTwoz6.js +0 -1
  271. package/dist/client/assets/api-DSqpVKC7.js +0 -1
  272. package/dist/client/assets/arc.es-CLA3XI14.js +0 -188
  273. package/dist/client/assets/arrow-down--OUDFWIq.js +0 -1
  274. package/dist/client/assets/arrow-left-DNjQHf4C.js +0 -1
  275. package/dist/client/assets/arrow-right-A_yyXwoH.js +0 -1
  276. package/dist/client/assets/arrow-up-DFy-9ghF.js +0 -1
  277. package/dist/client/assets/arrow-up-right-DUW1A1Hb.js +0 -1
  278. package/dist/client/assets/bash-format-BRV5C6Gv.js +0 -1
  279. package/dist/client/assets/book-open-B_idZgTF.js +0 -1
  280. package/dist/client/assets/bot-BNv_ZJzi.js +0 -1
  281. package/dist/client/assets/briefings-BwuAFQK6.css +0 -1
  282. package/dist/client/assets/broker-display-BkBzyvbR.js +0 -2
  283. package/dist/client/assets/cache-DGBo3vIf.js +0 -2
  284. package/dist/client/assets/chat-api-BHGHALv2.js +0 -2
  285. package/dist/client/assets/chat-message-markup-esR-YLtN.js +0 -1
  286. package/dist/client/assets/chat-space-model-aW3Fd8_U.js +0 -4
  287. package/dist/client/assets/chat-transport-CtxnPLMU.js +0 -1
  288. package/dist/client/assets/check-BM6QtbB7.js +0 -1
  289. package/dist/client/assets/chevron-down-DEDSNJNY.js +0 -1
  290. package/dist/client/assets/chevron-right-B02kAw12.js +0 -1
  291. package/dist/client/assets/chevron-up-CzveykKG.js +0 -1
  292. package/dist/client/assets/chunk-HRAB3GC3-DVhUsgOw.js +0 -1
  293. package/dist/client/assets/chunk-JTPDIGGW-hdpdYwXb.js +0 -46
  294. package/dist/client/assets/chunk-T65CQEWV-G_Z0lqtn.js +0 -1
  295. package/dist/client/assets/chunk-YOZR3KYS-apgUnfXh.js +0 -2
  296. package/dist/client/assets/clipboard-e3fSpeo7.js +0 -1
  297. package/dist/client/assets/clock-8tb9t2t9.js +0 -1
  298. package/dist/client/assets/code-screen-DrKinCyh.css +0 -1
  299. package/dist/client/assets/code-xml-E9gBuiVs.js +0 -1
  300. package/dist/client/assets/coffee-D0YEK6-l.js +0 -1
  301. package/dist/client/assets/collapsed-strip-raJWthAH.css +0 -1
  302. package/dist/client/assets/colors-CFlbwC25.js +0 -1
  303. package/dist/client/assets/comms-deck-C8nVeMBh.css +0 -1
  304. package/dist/client/assets/comms-deck-CBhsXnY-.js +0 -2
  305. package/dist/client/assets/comms-gesture-_aGFo6g3.js +0 -2
  306. package/dist/client/assets/compass-EmGkpxIe.js +0 -1
  307. package/dist/client/assets/console-B1IBqLI_.css +0 -1
  308. package/dist/client/assets/content-B-rn1rka.js +0 -1
  309. package/dist/client/assets/content-BHV-ZU8_.js +0 -1
  310. package/dist/client/assets/content-BI9yWpWC.js +0 -1
  311. package/dist/client/assets/content-BLVuukzF.js +0 -1
  312. package/dist/client/assets/content-BP3cQkAj.js +0 -1
  313. package/dist/client/assets/content-BRY-UTkP.js +0 -1
  314. package/dist/client/assets/content-BXTmYOPB.js +0 -1
  315. package/dist/client/assets/content-C3DZ77HZ.js +0 -1
  316. package/dist/client/assets/content-CINHz-rZ.css +0 -1
  317. package/dist/client/assets/content-CPchclaV.js +0 -1
  318. package/dist/client/assets/content-CVqPTQnr.js +0 -1
  319. package/dist/client/assets/content-CjAERU44.js +0 -1
  320. package/dist/client/assets/content-CoYG0nWL.js +0 -1
  321. package/dist/client/assets/content-DK1KeRPw.js +0 -1
  322. package/dist/client/assets/content-iWBSSXa6.js +0 -1
  323. package/dist/client/assets/content-ryJeaQk8.js +0 -1
  324. package/dist/client/assets/content-srNyLgDt.js +0 -1
  325. package/dist/client/assets/context-budget-8qFKqM-j.js +0 -1
  326. package/dist/client/assets/conversation-icons-Dxn9N1Kx.js +0 -1
  327. package/dist/client/assets/conversation-model-FxDeWlle.js +0 -1
  328. package/dist/client/assets/conversation-motion-features-BfmPlONx.js +0 -1
  329. package/dist/client/assets/conversation-prefs-DNre-Lcx.js +0 -1
  330. package/dist/client/assets/conversations-DoAAO6kA.js +0 -1
  331. package/dist/client/assets/copy-C1XrY27_.js +0 -1
  332. package/dist/client/assets/cpu-DVZ_LhPn.js +0 -1
  333. package/dist/client/assets/createLucideIcon-CKbjXlwv.js +0 -1
  334. package/dist/client/assets/credentials-OeoF-VKJ.js +0 -1
  335. package/dist/client/assets/ctx-panel-BC8fpcWJ.css +0 -1
  336. package/dist/client/assets/direct-voice-DAOUU-kc.js +0 -10
  337. package/dist/client/assets/direct-voice-DbO7CSv_.css +0 -1
  338. package/dist/client/assets/discover-BNa3BPr_.js +0 -2
  339. package/dist/client/assets/embed-entry-gK3z8Yxi.js +0 -2
  340. package/dist/client/assets/embed-navigation-DayfkQau.js +0 -1
  341. package/dist/client/assets/external-link-Df1R34rX.js +0 -1
  342. package/dist/client/assets/eye-CD-_aphP.js +0 -1
  343. package/dist/client/assets/file-code-corner-DtMWHBN3.js +0 -1
  344. package/dist/client/assets/file-text-BOJQiS8p.js +0 -1
  345. package/dist/client/assets/flag-CeKO8NoD.js +0 -1
  346. package/dist/client/assets/fleet-roll-call-BUgf7w-V.css +0 -1
  347. package/dist/client/assets/flight-observe-GFg9L8ft.css +0 -1
  348. package/dist/client/assets/floor-character-name-CqJPOlXb.js +0 -1
  349. package/dist/client/assets/floor-context-model-rWKqaKmV.js +0 -1
  350. package/dist/client/assets/floor-context-sheet-BFnkFiY3.css +0 -1
  351. package/dist/client/assets/floor-memory-YMM8AlLY.js +0 -1
  352. package/dist/client/assets/floor-message-passes-CO3Ix_wR.js +0 -1
  353. package/dist/client/assets/floor-preview-text-HrORUJ7D.js +0 -1
  354. package/dist/client/assets/floor-replay-CccYqE-f.css +0 -1
  355. package/dist/client/assets/floor-tactical-hud-HL5Vja5Y.css +0 -1
  356. package/dist/client/assets/folder-C2emmTHq.js +0 -1
  357. package/dist/client/assets/follow-route-BvcGtBIL.js +0 -1
  358. package/dist/client/assets/fx-z37u1o2z.js +0 -1
  359. package/dist/client/assets/gauge-BR5CrhRM.js +0 -1
  360. package/dist/client/assets/gestures-Dh8szhcU.js +0 -1
  361. package/dist/client/assets/git-branch-C45vy8qT.js +0 -1
  362. package/dist/client/assets/go-shortcuts--25Qg0lD.js +0 -1
  363. package/dist/client/assets/harnesses-screen-2z36fJKE.css +0 -1
  364. package/dist/client/assets/home-live-action-BkqGLVRY.js +0 -1
  365. package/dist/client/assets/home-moving-signal-BiiyEKEb.js +0 -1
  366. package/dist/client/assets/home-moving-signal-DMguaRWR.css +0 -1
  367. package/dist/client/assets/home-now-card-DaCpqUZe.js +0 -1
  368. package/dist/client/assets/home-now-card-nano-wbxgyY4q.js +0 -1
  369. package/dist/client/assets/hooks-D787lBmm.css +0 -1
  370. package/dist/client/assets/hooks-JNwYSH18.js +0 -2
  371. package/dist/client/assets/host-advisor-B2Fqs5Dd.css +0 -1
  372. package/dist/client/assets/inbox-thread-redesign-B_1ocqaX.css +0 -1
  373. package/dist/client/assets/index-BFbLvCJn.js +0 -10
  374. package/dist/client/assets/index-BRNHY2fp.css +0 -1
  375. package/dist/client/assets/index-BWHgHrtv.js +0 -1
  376. package/dist/client/assets/index-BrXaMEdK.js +0 -1
  377. package/dist/client/assets/index-CXzJ_hGx.js +0 -1
  378. package/dist/client/assets/index-V8FYEUpD.js +0 -1
  379. package/dist/client/assets/index-mYtyYeAe.js +0 -1
  380. package/dist/client/assets/index-wLwc74Pu.css +0 -1
  381. package/dist/client/assets/inspector-panel-BgU5xUln.js +0 -2
  382. package/dist/client/assets/keyboard-nav-CEe-ApvZ.js +0 -1
  383. package/dist/client/assets/knowledge-search-BNdQweGz.css +0 -1
  384. package/dist/client/assets/lane-ask-display-BTVSakyo.js +0 -18
  385. package/dist/client/assets/lane-edit-display-BjdT9oZl.js +0 -9
  386. package/dist/client/assets/lane-observe-CteDwdD-.js +0 -7
  387. package/dist/client/assets/lane-roster-store-MraynTHP.js +0 -1
  388. package/dist/client/assets/lane-tool-detail-Czggx8oM.js +0 -9
  389. package/dist/client/assets/layers-ClmyjwpB.js +0 -1
  390. package/dist/client/assets/layout-grid-DG2-JaPn.js +0 -1
  391. package/dist/client/assets/left-B66YR0c5.js +0 -1
  392. package/dist/client/assets/left-BP5P8lzw.js +0 -2
  393. package/dist/client/assets/left-BV9yMiTL.css +0 -1
  394. package/dist/client/assets/left-BbCKRDbW.js +0 -1
  395. package/dist/client/assets/left-CAaRBK9S.css +0 -1
  396. package/dist/client/assets/left-CaY5FK2k.js +0 -1
  397. package/dist/client/assets/left-CemrfeSs.js +0 -1
  398. package/dist/client/assets/left-DcYA26sH.js +0 -1
  399. package/dist/client/assets/left-DdMMaqFT.js +0 -2
  400. package/dist/client/assets/left-R2OOE7VG.css +0 -1
  401. package/dist/client/assets/left-advisor-DBml48M5.js +0 -1
  402. package/dist/client/assets/left-agents-DowYF2ag.js +0 -1
  403. package/dist/client/assets/left-default-Bifaeg_V.js +0 -1
  404. package/dist/client/assets/left-lanes-BGhjdqpD.js +0 -1
  405. package/dist/client/assets/left-mission-CvXPUovR.js +0 -1
  406. package/dist/client/assets/left-mission-DENnfshd.css +0 -1
  407. package/dist/client/assets/library-CnC8uzJt.js +0 -1
  408. package/dist/client/assets/loader-circle-CCG7hG7z.js +0 -1
  409. package/dist/client/assets/local-agents-BMcFlY_x.js +0 -1
  410. package/dist/client/assets/log-in-VL9mdgeE.js +0 -1
  411. package/dist/client/assets/machine-children-DvCiQxwA.js +0 -1
  412. package/dist/client/assets/machine-scope-DJt9RZ2w.js +0 -1
  413. package/dist/client/assets/media-blobs-Bi8pxr1u.js +0 -1
  414. package/dist/client/assets/mentions-s5oW4aQU.js +0 -1
  415. package/dist/client/assets/mesh-ops-9SzD3sPw.js +0 -1
  416. package/dist/client/assets/mesh-ops-B1kDjizF.css +0 -1
  417. package/dist/client/assets/mesh-screen-DjA4mOaN.css +0 -1
  418. package/dist/client/assets/mesh-view-store-CVqzYz4K.js +0 -1
  419. package/dist/client/assets/message-circle-BB3rFCVD.js +0 -1
  420. package/dist/client/assets/message-markup-BQW5jdJw.js +0 -15
  421. package/dist/client/assets/message-markup-D1C7GzHo.js +0 -1
  422. package/dist/client/assets/message-square-BwqBIfv5.js +0 -1
  423. package/dist/client/assets/message-visibility-DwxgcgYK.js +0 -1
  424. package/dist/client/assets/mission-control-CsX3Yc58.css +0 -1
  425. package/dist/client/assets/mission-control-model-BpJHDV5D.js +0 -1
  426. package/dist/client/assets/mission-control-store-e8F85JhP.js +0 -1
  427. package/dist/client/assets/mission-wall-CAo4BKfa.js +0 -1
  428. package/dist/client/assets/model-CBkMvT1w.js +0 -1
  429. package/dist/client/assets/monitor-M0VSmHQ-.js +0 -1
  430. package/dist/client/assets/nav-destinations-B3R5zxFX.js +0 -1
  431. package/dist/client/assets/observe-M3rLosT5.js +0 -1
  432. package/dist/client/assets/openAgent-Dbv5wfuL.js +0 -1
  433. package/dist/client/assets/openContent-C6XO6kr5.js +0 -1
  434. package/dist/client/assets/operator-attention-DBaRg5ep.js +0 -1
  435. package/dist/client/assets/ops-agents-BOYxzPTm.css +0 -1
  436. package/dist/client/assets/ops-atop-BB4B4JdE.css +0 -1
  437. package/dist/client/assets/ops-screen-CxYM0VOW.css +0 -1
  438. package/dist/client/assets/page-status-BIuh3C5p.js +0 -1
  439. package/dist/client/assets/page-status-bar-ByUD7VPM.css +0 -1
  440. package/dist/client/assets/panel-right-WKLdPm0F.js +0 -1
  441. package/dist/client/assets/paperclip-DLf_ABSv.js +0 -1
  442. package/dist/client/assets/pause-7mmEEvVx.js +0 -1
  443. package/dist/client/assets/persistent-state-3mbBFRDO.js +0 -1
  444. package/dist/client/assets/pin-q_0gAA6i.js +0 -1
  445. package/dist/client/assets/pip-idle-v1-Tt-CZsRG.png +0 -0
  446. package/dist/client/assets/pip-thinking-v1-BoHWSEye.png +0 -0
  447. package/dist/client/assets/pip-waiting-v1-DkuvJ-dN.png +0 -0
  448. package/dist/client/assets/pip-working-v1-wWQLRS1z.png +0 -0
  449. package/dist/client/assets/play-N5-hnPCV.js +0 -1
  450. package/dist/client/assets/plus-B0hdY0fF.js +0 -1
  451. package/dist/client/assets/profile-B7ZGToTo.js +0 -1
  452. package/dist/client/assets/project-overview-helpers-BQTc_Ous.js +0 -1
  453. package/dist/client/assets/projects-inbox-CMFBjQt0.js +0 -1
  454. package/dist/client/assets/projects-inbox-ColX6lpx.css +0 -1
  455. package/dist/client/assets/proxy-k0ILOVkK.js +0 -1
  456. package/dist/client/assets/radio-Bjqmv997.js +0 -1
  457. package/dist/client/assets/refresh-cw-BcqctLqo.js +0 -1
  458. package/dist/client/assets/repo-diff-DyYmQMSA.css +0 -1
  459. package/dist/client/assets/resizable-columns-C7ygvLt8.css +0 -1
  460. package/dist/client/assets/resolve-panes-wzGu9d8o.js +0 -1
  461. package/dist/client/assets/resolve-sidebar-context-C8SOo5oZ.js +0 -1
  462. package/dist/client/assets/right-9rMRZN_r.js +0 -1
  463. package/dist/client/assets/right-BHZq648O.js +0 -1
  464. package/dist/client/assets/right-BNJzCaH9.js +0 -2
  465. package/dist/client/assets/right-CAd7lTvY.js +0 -1
  466. package/dist/client/assets/right-Cc57bCTW.js +0 -1
  467. package/dist/client/assets/right-DY49Prjj.js +0 -1
  468. package/dist/client/assets/right-DfU47xKY.js +0 -1
  469. package/dist/client/assets/right-Dr7vxdZl.js +0 -1
  470. package/dist/client/assets/right-DsE4aR3A.js +0 -1
  471. package/dist/client/assets/right-zlkRjnkv.js +0 -1
  472. package/dist/client/assets/rocket-BahsdUe6.js +0 -1
  473. package/dist/client/assets/router-CJIx83Ia.js +0 -1
  474. package/dist/client/assets/runtime-picker-C3JwrDKP.css +0 -1
  475. package/dist/client/assets/runtime-picker-IRcTkMZ5.js +0 -1
  476. package/dist/client/assets/scope-views-4khCg2_z.css +0 -1
  477. package/dist/client/assets/scope-views-KDtZoLUC.js +0 -1
  478. package/dist/client/assets/scout-voice-Cdh6pCsb.js +0 -1
  479. package/dist/client/assets/scoutbot-Bk3nyrkj.js +0 -3
  480. package/dist/client/assets/scoutbot-markdown-7PRQHaAc.js +0 -6
  481. package/dist/client/assets/scroll-text-CA0QxBHu.js +0 -1
  482. package/dist/client/assets/search-Bv2IONmc.js +0 -1
  483. package/dist/client/assets/secondaryNavConfig-Bmb-oRvD.js +0 -1
  484. package/dist/client/assets/secondaryNavConfig-D15P1Y9k.css +0 -1
  485. package/dist/client/assets/selection-bridge-CthAuPRw.js +0 -1
  486. package/dist/client/assets/send-horizontal-_Tf_It04.js +0 -1
  487. package/dist/client/assets/send-to-agent-session-CWDHHgFB.js +0 -1
  488. package/dist/client/assets/server-U_l8A83n.js +0 -1
  489. package/dist/client/assets/session-catalog-Dx4tl3sx.js +0 -1
  490. package/dist/client/assets/session-recap-lanes-D-eVJnpY.js +0 -1
  491. package/dist/client/assets/session-recap-queue-GeicPLsQ.js +0 -1
  492. package/dist/client/assets/session-ref-lookup-state-SATH_jAP.js +0 -1
  493. package/dist/client/assets/session-table-BI62J4NP.js +0 -1
  494. package/dist/client/assets/sessionRead-CvFz2RHv.js +0 -1
  495. package/dist/client/assets/sessions-view-lGMwwZY7.js +0 -1
  496. package/dist/client/assets/settings-bo9X410k.js +0 -1
  497. package/dist/client/assets/shared-work-artifacts-DfNl9KTo.js +0 -1
  498. package/dist/client/assets/sliders-horizontal-CPSx6wd2.js +0 -1
  499. package/dist/client/assets/solar-system-scope-2k-stars-points-1FwHnkj0.png +0 -0
  500. package/dist/client/assets/sparkles-Br-bA2aZ.js +0 -1
  501. package/dist/client/assets/sprout-action-sprite-DZ8C0fTl.css +0 -1
  502. package/dist/client/assets/sprout-actions-proof-v1-BzUdc812.png +0 -0
  503. package/dist/client/assets/sse-BVxO0zNp.js +0 -1
  504. package/dist/client/assets/status-tone-BM_zuRy1.js +0 -1
  505. package/dist/client/assets/surface-activity-B1rgWB1i.js +0 -1
  506. package/dist/client/assets/synthetic-agent-routing-aduMYO7P.js +0 -1
  507. package/dist/client/assets/system-surfaces-redesign-q2BmCB7e.css +0 -1
  508. package/dist/client/assets/tail-display-DHSNmvor.js +0 -2
  509. package/dist/client/assets/tail-events-C6NWFB1N.js +0 -1
  510. package/dist/client/assets/terminal-DMBAZjPP.js +0 -1
  511. package/dist/client/assets/terminal-relay-CpGHpDa8.js +0 -1
  512. package/dist/client/assets/terminal-screen-Bpb2SZrn.css +0 -1
  513. package/dist/client/assets/terminal-sessions-3RfJpen8.js +0 -1
  514. package/dist/client/assets/terminal-takeover-CXwdoZ5j.js +0 -1
  515. package/dist/client/assets/theme-vars-DNK0nn3k.js +0 -1
  516. package/dist/client/assets/time-Dhsh_2EG.js +0 -1
  517. package/dist/client/assets/triangle-alert-BZikHKuT.js +0 -1
  518. package/dist/client/assets/types-B0PlfpKc.js +0 -1
  519. package/dist/client/assets/ui-LM8pS8qE.js +0 -1
  520. package/dist/client/assets/use-beside-DopIbJwf.js +0 -1
  521. package/dist/client/assets/use-conversation-list-CGtcpdPd.js +0 -1
  522. package/dist/client/assets/use-fleet-active-asks-DAHOPYPV.js +0 -1
  523. package/dist/client/assets/use-mesh-node-state-BlWIPTc4.js +0 -1
  524. package/dist/client/assets/use-mesh-ops-items-pKWBro7o.js +0 -1
  525. package/dist/client/assets/use-reduced-motion-DkdIQBwh.js +0 -1
  526. package/dist/client/assets/use-scout-dev-flags-CduUFb7l.js +0 -1
  527. package/dist/client/assets/useAgentHoverCard-DNlXPYQf.js +0 -1
  528. package/dist/client/assets/useContentSecondaryNav-LJGNYG3U.js +0 -1
  529. package/dist/client/assets/useEmbedHeadline-BeeBDb7E.js +0 -1
  530. package/dist/client/assets/usePierreRuntime-DUXZ-DTK.js +0 -50
  531. package/dist/client/assets/useSidebarCollapse-DoMvU_2R.js +0 -1
  532. package/dist/client/assets/users-BQPEIUfd.js +0 -1
  533. package/dist/client/assets/voice-levels-Dcr3jglk.js +0 -1
  534. package/dist/client/assets/voice-paths-CJUuBPh3.css +0 -1
  535. package/dist/client/assets/voice-turn-DftA0iIb.css +0 -1
  536. package/dist/client/assets/voice-turn-ledger-BMZxlSjg.js +0 -1
  537. package/dist/client/assets/worker-rendered-v1-DmGVMlVi.png +0 -0
  538. package/dist/client/assets/worker-thinking-v1-ujakpzrK.png +0 -0
  539. package/dist/client/assets/worker-waiting-v1-DbTSsfJJ.png +0 -0
  540. package/dist/client/assets/worker-working-v1-BROAvJ_z.png +0 -0
  541. package/dist/client/assets/world-outposts-v1-DOt0i98W.png +0 -0
  542. package/dist/client/assets/wrench-C-wjicn5.js +0 -1
  543. package/dist/client/assets/x-BcfhXYiF.js +0 -1
  544. package/dist/client/assets/xterm-qXD45dc0.js +0 -34
  545. package/dist/client/assets/zap-BqL8ttGz.js +0 -1
  546. package/dist/client/characters/sage/sage.glb +0 -0
  547. package/dist/highlights-eq9cgrbb.scm +0 -604
  548. package/dist/highlights-ghv9g403.scm +0 -205
  549. package/dist/highlights-hk7bwhj4.scm +0 -284
  550. package/dist/highlights-r812a2qc.scm +0 -150
  551. package/dist/highlights-x6tmsnaa.scm +0 -115
  552. package/dist/injections-73j83es3.scm +0 -27
  553. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  554. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  555. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  556. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  557. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
@@ -13324,16 +13324,16 @@ var require_mod5 = __commonJS((exports) => {
13324
13324
 
13325
13325
  // packages/runtime/src/base-daemon.ts
13326
13326
  import { spawn as spawn4 } from "child_process";
13327
- import { existsSync as existsSync8, mkdirSync as mkdirSync6, openSync as openSync2, writeFileSync as writeFileSync5 } from "fs";
13328
- import { homedir as homedir7, networkInterfaces as networkInterfaces2 } from "os";
13329
- import { dirname as dirname7, join as join9, resolve as resolve3 } from "path";
13327
+ import { existsSync as existsSync9, mkdirSync as mkdirSync6, openSync as openSync2, writeFileSync as writeFileSync5 } from "fs";
13328
+ import { homedir as homedir8, networkInterfaces as networkInterfaces2 } from "os";
13329
+ import { dirname as dirname8, join as join10, resolve as resolve4 } from "path";
13330
13330
  import { fileURLToPath as fileURLToPath2 } from "url";
13331
13331
 
13332
13332
  // packages/runtime/src/broker-process-manager.ts
13333
13333
  import { spawn as spawn2, spawnSync } from "child_process";
13334
13334
  import { existsSync as existsSync5, mkdirSync as mkdirSync2, readFileSync as readFileSync4, renameSync as renameSync2, writeFileSync as writeFileSync2 } from "fs";
13335
13335
  import { homedir as homedir5, networkInterfaces } from "os";
13336
- import { basename as basename2, dirname as dirname3, join as join5, resolve as resolve2 } from "path";
13336
+ import { basename as basename2, dirname as dirname4, join as join5, resolve as resolve2 } from "path";
13337
13337
  import { fileURLToPath } from "url";
13338
13338
 
13339
13339
  // packages/runtime/src/broker-api.ts
@@ -13499,6 +13499,15 @@ async function requestBrokerWire(baseUrl, path, options) {
13499
13499
  }
13500
13500
  };
13501
13501
  }
13502
+
13503
+ class ScoutBrokerHttpError extends Error {
13504
+ status;
13505
+ constructor(status, path, body) {
13506
+ super(`${path} returned ${status}: ${body}`);
13507
+ this.status = status;
13508
+ this.name = "ScoutBrokerHttpError";
13509
+ }
13510
+ }
13502
13511
  async function requestScoutBrokerJsonWithTrace(baseUrl, path, options = {}) {
13503
13512
  const { response, trace } = await requestBrokerWire(baseUrl, path, options);
13504
13513
  let parsed;
@@ -13515,7 +13524,7 @@ async function requestScoutBrokerJsonWithTrace(baseUrl, path, options = {}) {
13515
13524
  if (parsedJson && options.acceptErrorJson?.(parsed)) {
13516
13525
  return { value: parsed, trace };
13517
13526
  }
13518
- throw new Error(`${path} returned ${response.status}: ${response.text}`);
13527
+ throw new ScoutBrokerHttpError(response.status, path, response.text);
13519
13528
  }
13520
13529
  if (parsedJson) {
13521
13530
  return { value: parsed, trace };
@@ -13787,11 +13796,18 @@ class NodeSqliteDatabaseAdapter {
13787
13796
 
13788
13797
  // packages/runtime/src/support-paths.ts
13789
13798
  import { homedir } from "os";
13790
- import { join } from "path";
13799
+ import { dirname, join } from "path";
13791
13800
  var OPENSCOUT_RPC_CUTOVER_MARKER = "rpc-runtime-cutover-v1";
13801
+ function defaultOpenScoutSupportDirectory(home = homedir()) {
13802
+ if (process.platform === "darwin") {
13803
+ return join(home, "Library", "Application Support", "OpenScout");
13804
+ }
13805
+ const xdgDataHome = process.env.XDG_DATA_HOME?.trim();
13806
+ return join(xdgDataHome || join(home, ".local", "share"), "openscout");
13807
+ }
13792
13808
  function resolveOpenScoutSupportPaths() {
13793
13809
  const home = homedir();
13794
- const supportDirectory = process.env.OPENSCOUT_SUPPORT_DIRECTORY ?? join(home, "Library", "Application Support", "OpenScout");
13810
+ const supportDirectory = process.env.OPENSCOUT_SUPPORT_DIRECTORY ?? defaultOpenScoutSupportDirectory(home);
13795
13811
  const logsDirectory = join(supportDirectory, "logs");
13796
13812
  const runtimeDirectory = join(supportDirectory, "runtime");
13797
13813
  const catalogDirectory = join(supportDirectory, "catalog");
@@ -15242,7 +15258,7 @@ import {
15242
15258
  writeFileSync
15243
15259
  } from "fs";
15244
15260
  import { homedir as homedir3, hostname as osHostname } from "os";
15245
- import { dirname, join as join3 } from "path";
15261
+ import { dirname as dirname2, join as join3 } from "path";
15246
15262
 
15247
15263
  // packages/runtime/src/node-identity.ts
15248
15264
  var NODE_CARD_TTL_MS = 24 * 60 * 60 * 1000;
@@ -15411,7 +15427,7 @@ function resolveWebPort() {
15411
15427
  // packages/runtime/src/tool-resolution.ts
15412
15428
  import { accessSync, constants, existsSync as existsSync4 } from "fs";
15413
15429
  import { homedir as homedir4 } from "os";
15414
- import { basename, dirname as dirname2, join as join4, resolve } from "path";
15430
+ import { basename, dirname as dirname3, join as join4, resolve } from "path";
15415
15431
  var DEFAULT_COMMON_EXECUTABLE_DIRECTORIES = [
15416
15432
  join4(homedir4(), ".bun", "bin"),
15417
15433
  "/opt/homebrew/bin",
@@ -15511,7 +15527,7 @@ function resolveOpenScoutRepoRoot(options = {}) {
15511
15527
  if (existsSync4(scoutEntry) && existsSync4(runtimeEntry)) {
15512
15528
  return current;
15513
15529
  }
15514
- const parent = dirname2(current);
15530
+ const parent = dirname3(current);
15515
15531
  if (parent === current) {
15516
15532
  break;
15517
15533
  }
@@ -15696,7 +15712,7 @@ function runtimePackageDir() {
15696
15712
  const fromGlobal = findGlobalRuntimeDir();
15697
15713
  if (fromGlobal)
15698
15714
  return fromGlobal;
15699
- const moduleDir = dirname3(fileURLToPath(import.meta.url));
15715
+ const moduleDir = dirname4(fileURLToPath(import.meta.url));
15700
15716
  return resolve2(moduleDir, "..");
15701
15717
  }
15702
15718
  function isInstalledRuntimePackageDir(candidate) {
@@ -15730,7 +15746,7 @@ function findGlobalRuntimeDir() {
15730
15746
  return null;
15731
15747
  }
15732
15748
  function findBundledRuntimeDir() {
15733
- const moduleDir = dirname3(fileURLToPath(import.meta.url));
15749
+ const moduleDir = dirname4(fileURLToPath(import.meta.url));
15734
15750
  return resolveBundledRuntimeDirFromModuleDir(moduleDir);
15735
15751
  }
15736
15752
  function resolveBundledRuntimeDirFromModuleDir(moduleDir) {
@@ -15749,7 +15765,7 @@ function resolveBundledRuntimeDirFromModuleDir(moduleDir) {
15749
15765
  return null;
15750
15766
  }
15751
15767
  function resolveSourceWorkspaceRuntimeDir(bundledPackageDir) {
15752
- const packagesDir = dirname3(bundledPackageDir);
15768
+ const packagesDir = dirname4(bundledPackageDir);
15753
15769
  if (resolve2(packagesDir, "cli") !== resolve2(bundledPackageDir))
15754
15770
  return null;
15755
15771
  const runtimeDir = join5(packagesDir, "runtime");
@@ -15772,7 +15788,7 @@ function findWorkspaceRuntimeDir(startDir) {
15772
15788
  if (existsSync5(join5(candidate, "package.json")) && existsSync5(join5(candidate, "src"))) {
15773
15789
  return candidate;
15774
15790
  }
15775
- const parent = dirname3(current);
15791
+ const parent = dirname4(current);
15776
15792
  if (parent === current)
15777
15793
  return null;
15778
15794
  current = parent;
@@ -15819,7 +15835,7 @@ function resolveBrokerServiceConfig() {
15819
15835
  const serviceAdapter = resolveBrokerServiceAdapter();
15820
15836
  const uid = typeof process.getuid === "function" ? process.getuid() : Number.parseInt(process.env.UID ?? "0", 10);
15821
15837
  const supportPaths = resolveOpenScoutSupportPaths();
15822
- const defaultSupportDir = join5(homedir5(), "Library", "Application Support", "OpenScout");
15838
+ const defaultSupportDir = defaultOpenScoutSupportDirectory();
15823
15839
  const supportDirectory = isTmpPath(supportPaths.supportDirectory) ? defaultSupportDir : supportPaths.supportDirectory;
15824
15840
  const runtimeDirectory = join5(supportDirectory, "runtime");
15825
15841
  const logsDirectory = join5(supportDirectory, "logs", "broker");
@@ -15878,7 +15894,7 @@ function findWorkspaceRootFromRuntimeDir(runtimePackageDir2) {
15878
15894
  if (existsSync5(join5(current, "Cargo.toml")) && existsSync5(join5(current, "crates", "scoutd", "Cargo.toml"))) {
15879
15895
  return current;
15880
15896
  }
15881
- const parent = dirname3(current);
15897
+ const parent = dirname4(current);
15882
15898
  if (parent === current)
15883
15899
  return null;
15884
15900
  current = parent;
@@ -15888,7 +15904,12 @@ function workspaceScoutdAllowed() {
15888
15904
  const raw = process.env.OPENSCOUT_ALLOW_WORKSPACE_SCOUTD?.trim().toLowerCase();
15889
15905
  return raw === "1" || raw === "true" || raw === "yes" || raw === "on";
15890
15906
  }
15907
+ function nativeSupervisorNotApplicableDetail(platform = process.platform) {
15908
+ return platform === "linux" ? "native supervisor: not applicable on linux" : `native supervisor: not applicable on ${platform}`;
15909
+ }
15891
15910
  function resolveScoutdCommand(config = resolveBrokerServiceConfig()) {
15911
+ if (process.platform !== "darwin")
15912
+ return null;
15892
15913
  const explicit = resolveEnvExecutable(process.env.OPENSCOUT_SCOUTD_BIN);
15893
15914
  if (explicit) {
15894
15915
  return { path: explicit, source: "env" };
@@ -15901,7 +15922,7 @@ function resolveScoutdCommand(config = resolveBrokerServiceConfig()) {
15901
15922
  workspaceRoot ? join5(workspaceRoot, "packages", "cli", "bin", "scoutd") : null,
15902
15923
  workspaceRoot ? join5(workspaceRoot, "packages", "runtime", "bin", "scoutd") : null,
15903
15924
  join5(config.runtimeDirectory, "scoutd"),
15904
- join5(dirname3(config.runtimePackageDir), "scout", "bin", "scoutd")
15925
+ join5(dirname4(config.runtimePackageDir), "scout", "bin", "scoutd")
15905
15926
  ];
15906
15927
  for (const candidate of packageCandidates) {
15907
15928
  const resolved = executableCandidate(candidate);
@@ -16031,6 +16052,8 @@ function normalizeNativeServiceStatus(input, config) {
16031
16052
  reachable: healthReachable,
16032
16053
  ok: healthOk,
16033
16054
  checkedAt: readNumber2(healthRecord.checkedAt) ?? Date.now(),
16055
+ state: readString2(healthRecord.state),
16056
+ durationMs: readNumber2(healthRecord.durationMs),
16034
16057
  transport: healthTransport,
16035
16058
  socketPath: config.brokerSocketPath,
16036
16059
  ...healthSocketFallbackError ? { socketFallbackError: healthSocketFallbackError } : {},
@@ -16142,6 +16165,9 @@ async function runScoutdServiceCommand(command, config, timeoutMs = SCOUTD_DEFAU
16142
16165
  }
16143
16166
  const scoutd = resolveScoutdCommand(config);
16144
16167
  if (!scoutd) {
16168
+ if (process.platform !== "darwin") {
16169
+ throw new Error(nativeSupervisorNotApplicableDetail());
16170
+ }
16145
16171
  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.");
16146
16172
  }
16147
16173
  const stdout = await runScoutdJson(scoutd.path, command, nativeServiceEnvironment(config, scoutd.path), timeoutMs);
@@ -16410,7 +16436,7 @@ import {
16410
16436
  writeFileSync as writeFileSync3
16411
16437
  } from "fs";
16412
16438
  import { homedir as homedir6 } from "os";
16413
- import { dirname as dirname4, join as join6 } from "path";
16439
+ import { dirname as dirname5, join as join6 } from "path";
16414
16440
  var SCOUT_PAIRING_SUPERVISOR_INTENT_FILE = "supervisor.json";
16415
16441
  var SCOUT_PAIRING_RUNTIME_PID_FILE = "runtime.pid";
16416
16442
  var SCOUT_PAIRING_SUPERVISOR_PID_FILE = "supervisor.pid";
@@ -16469,7 +16495,7 @@ function claimScoutPairingSupervision(pid = process.pid, supervisorPidPath = res
16469
16495
  if (currentPid && currentPid !== pid) {
16470
16496
  throw new Error(`Scout pairing is already supervised by pid ${currentPid}.`);
16471
16497
  }
16472
- mkdirSync3(dirname4(supervisorPidPath), { recursive: true });
16498
+ mkdirSync3(dirname5(supervisorPidPath), { recursive: true });
16473
16499
  writeFileAtomically(supervisorPidPath, `${pid}
16474
16500
  `);
16475
16501
  }
@@ -16496,7 +16522,7 @@ function readPairingIntent(intentPath) {
16496
16522
  }
16497
16523
  }
16498
16524
  function writePairingIntent(intentPath, intent) {
16499
- mkdirSync3(dirname4(intentPath), { recursive: true });
16525
+ mkdirSync3(dirname5(intentPath), { recursive: true });
16500
16526
  writeFileAtomically(intentPath, `${JSON.stringify(intent, null, 2)}
16501
16527
  `);
16502
16528
  }
@@ -16512,7 +16538,6 @@ function writeFileAtomically(path, contents) {
16512
16538
  function validRestartGeneration(value) {
16513
16539
  return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : 0;
16514
16540
  }
16515
-
16516
16541
  // packages/runtime/src/scout-ascii-mark.ts
16517
16542
  var ORB_COLS = 60;
16518
16543
  var ORB_ROWS = 47;
@@ -17146,8 +17171,10 @@ function renderOpenScoutCaddyfile(config, siteImportsGlob) {
17146
17171
  const imports = siteImportsGlob ? `
17147
17172
  import ${JSON.stringify(siteImportsGlob)}
17148
17173
  ` : "";
17174
+ const trust = config.scheme === "http" ? "" : ` skip_install_trust
17175
+ `;
17149
17176
  return `{
17150
- log {
17177
+ ${trust} log {
17151
17178
  level WARN
17152
17179
  }
17153
17180
  }
@@ -17292,7 +17319,7 @@ import {
17292
17319
  readFileSync as readFileSync6,
17293
17320
  rmSync as rmSync2
17294
17321
  } from "fs";
17295
- import { delimiter, dirname as dirname5, isAbsolute, join as join8 } from "path";
17322
+ import { delimiter, dirname as dirname6, isAbsolute, join as join8 } from "path";
17296
17323
  class JetStreamBinaryMissingError extends Error {
17297
17324
  constructor(binary) {
17298
17325
  super(`nats-server binary "${binary}" was not found on PATH.
@@ -17418,7 +17445,7 @@ class NatsJetStreamSidecar {
17418
17445
  throw new JetStreamBinaryMissingError(this.config.serverBinary);
17419
17446
  }
17420
17447
  mkdirSync4(this.config.storeDirectory, { recursive: true });
17421
- mkdirSync4(dirname5(this.config.logPath), { recursive: true });
17448
+ mkdirSync4(dirname6(this.config.logPath), { recursive: true });
17422
17449
  this.launch(binary);
17423
17450
  try {
17424
17451
  await this.waitUntilReady();
@@ -17565,7 +17592,25 @@ class NatsJetStreamSidecar {
17565
17592
  // packages/runtime/src/jetstream/publisher.ts
17566
17593
  import { randomUUID } from "crypto";
17567
17594
  import { mkdirSync as mkdirSync5, readFileSync as readFileSync7, renameSync as renameSync4, rmSync as rmSync3, writeFileSync as writeFileSync4 } from "fs";
17568
- import { dirname as dirname6 } from "path";
17595
+ import { dirname as dirname7 } from "path";
17596
+
17597
+ // packages/protocol/src/chat-message-corrections.ts
17598
+ function readChatMessageCorrection(metadata) {
17599
+ const value = metadata?.chatCorrection;
17600
+ if (!value || typeof value !== "object")
17601
+ return;
17602
+ const item = value;
17603
+ if (!Number.isSafeInteger(item.revision) || item.revision < 1 || typeof item.changedBy !== "string")
17604
+ return;
17605
+ return {
17606
+ revision: item.revision,
17607
+ changedBy: item.changedBy,
17608
+ ...typeof item.editedAt === "number" && Number.isFinite(item.editedAt) ? { editedAt: item.editedAt } : {},
17609
+ ...typeof item.deletedAt === "number" && Number.isFinite(item.deletedAt) ? { deletedAt: item.deletedAt } : {}
17610
+ };
17611
+ }
17612
+
17613
+ // packages/runtime/src/jetstream/publisher.ts
17569
17614
  var JETSTREAM_PUBLISHER_PROJECTION_ID = "jetstream-publisher";
17570
17615
  var JETSTREAM_PUBLISHER_PROJECTION_VERSION = 1;
17571
17616
  function readJetStreamPublisherProgress(path) {
@@ -17612,7 +17657,7 @@ function writeJetStreamPublisherProgress(path, barrierId, at) {
17612
17657
  barrierId,
17613
17658
  updatedAt: at
17614
17659
  };
17615
- mkdirSync5(dirname6(path), { recursive: true });
17660
+ mkdirSync5(dirname7(path), { recursive: true });
17616
17661
  const temporary = `${path}.${process.pid}.tmp`;
17617
17662
  try {
17618
17663
  writeFileSync4(temporary, `${JSON.stringify(payload, null, 2)}
@@ -17879,7 +17924,7 @@ class JetStreamJournalPublisher {
17879
17924
  }
17880
17925
  }
17881
17926
  function isPublishableEntry(entry) {
17882
- return entry.kind === "message.record";
17927
+ return entry.kind === "message.record" && !readChatMessageCorrection(entry.message.metadata);
17883
17928
  }
17884
17929
  function streamEventForEntry(entry, publisherNodeId) {
17885
17930
  if (!isPublishableEntry(entry))
@@ -17912,6 +17957,130 @@ class ScoutStreamDeduplicator {
17912
17957
  return this.seen.size;
17913
17958
  }
17914
17959
  }
17960
+ // packages/runtime/src/mesh-bridge-supervisor.ts
17961
+ import { spawnSync as spawnSync2 } from "child_process";
17962
+ import { existsSync as existsSync8, readFileSync as readFileSync8, statSync } from "fs";
17963
+ import { homedir as homedir7 } from "os";
17964
+ import { join as join9, resolve as resolve3 } from "path";
17965
+
17966
+ // packages/runtime/src/scout-bridge-command.ts
17967
+ var ENTRYPOINT = String.raw`(?:scout\.(?:mjs|ts|js)|\/bin\/scout|\/main\.mjs)`;
17968
+ var SUBCOMMAND = String.raw`\s+(mcp|channel|mesh\s+bridge)(?:\s|$)`;
17969
+ var RUNTIME = String.raw`(?:\S*\/)?(?:bun|node)(?:\s+(?!(?:-e|-p|--eval|--print)(?:[\s=]|$))-[\w-]+(?:=\S+)?)*`;
17970
+ var SCRIPT_PREFIX = String.raw`(?:[^-\s](?:(?!\s-|\.(?:[cm]?js|ts)\s).)*?)?`;
17971
+ var SCOUT_BRIDGE_COMMAND = new RegExp(String.raw`^(?:${RUNTIME}\s+${SCRIPT_PREFIX}|\S*?)${ENTRYPOINT}${SUBCOMMAND}`);
17972
+ var SCOUT_BRIDGE_BINARY = new RegExp(String.raw`^(?:${RUNTIME}\s+(?:${SCRIPT_PREFIX}\/)?|\S*\/)?scout-mcp(?:\s|$)`);
17973
+ function classifyScoutBridgeCommand(args) {
17974
+ const lowered = args.trim().toLowerCase();
17975
+ const match = SCOUT_BRIDGE_COMMAND.exec(lowered);
17976
+ if (match)
17977
+ return match[1].startsWith("mesh") ? "mesh" : match[1];
17978
+ return SCOUT_BRIDGE_BINARY.test(lowered) ? "mcp" : null;
17979
+ }
17980
+ function isMeshBridgeCommand(args) {
17981
+ return classifyScoutBridgeCommand(args) === "mesh";
17982
+ }
17983
+
17984
+ // packages/runtime/src/mesh-bridge-supervisor.ts
17985
+ var MESH_BRIDGE_CONFIG_FILENAME = "mcp-bridge.json";
17986
+ var LEGACY_MESH_BRIDGE_LAUNCH_AGENT_LABEL = "app.openscout.mcp-bridge";
17987
+ var MESH_BRIDGE_EXIT_UNCONFIGURED = 78;
17988
+ function meshBridgeConfigPath(supportDirectory) {
17989
+ return join9(supportDirectory, MESH_BRIDGE_CONFIG_FILENAME);
17990
+ }
17991
+ function legacyMeshBridgeLaunchAgentPath(home = homedir7()) {
17992
+ return join9(home, "Library", "LaunchAgents", `${LEGACY_MESH_BRIDGE_LAUNCH_AGENT_LABEL}.plist`);
17993
+ }
17994
+ function resolveMeshBridgeDesiredState(input) {
17995
+ if (input.env.OPENSCOUT_BASE_MESH_BRIDGE_ENABLED === "0") {
17996
+ return { run: false, reason: "disabled-by-env" };
17997
+ }
17998
+ const configPath = meshBridgeConfigPath(input.supportDirectory);
17999
+ if (!existsSync8(configPath)) {
18000
+ return { run: false, reason: "no-config" };
18001
+ }
18002
+ let configMtimeMs;
18003
+ let parsed;
18004
+ try {
18005
+ configMtimeMs = statSync(configPath).mtimeMs;
18006
+ parsed = JSON.parse(readFileSync8(configPath, "utf8"));
18007
+ } catch {
18008
+ return { run: false, reason: "invalid-config" };
18009
+ }
18010
+ if (parsed && typeof parsed === "object" && parsed.enabled === false) {
18011
+ return { run: false, reason: "disabled-in-config" };
18012
+ }
18013
+ if (existsSync8(legacyMeshBridgeLaunchAgentPath(input.home))) {
18014
+ return { run: false, reason: "legacy-launch-agent" };
18015
+ }
18016
+ return { run: true, configPath, configMtimeMs };
18017
+ }
18018
+ function resolveMeshBridgeEntrypoint(input) {
18019
+ const exists = input.exists ?? existsSync8;
18020
+ const home = input.home ?? homedir7();
18021
+ const repo = input.repoRoot;
18022
+ const source = repo ? join9(repo, "apps", "desktop", "bin", "scout.ts") : null;
18023
+ const candidates = [
18024
+ input.env.OPENSCOUT_MESH_BRIDGE_BIN?.trim() || null,
18025
+ input.serviceMode === "dev" ? source : null,
18026
+ repo ? join9(repo, "packages", "cli", "dist", "main.mjs") : null,
18027
+ resolve3(input.moduleDirectory, "..", "main.mjs"),
18028
+ join9(home, ".bun", "install", "global", "node_modules", "@openscout", "scout", "dist", "main.mjs")
18029
+ ].filter((candidate) => Boolean(candidate));
18030
+ return candidates.find((candidate) => exists(candidate)) ?? null;
18031
+ }
18032
+ function meshBridgeArgs(entrypoint, configPath) {
18033
+ return [entrypoint, "mesh", "bridge", "--config", configPath];
18034
+ }
18035
+ function meshBridgeStatePath(supportDirectory) {
18036
+ return join9(supportDirectory, "runtime", "mesh-bridge.json");
18037
+ }
18038
+ function readProcessIdentity(pid) {
18039
+ const result = spawnSync2("ps", ["-o", "lstart=,args=", "-p", String(pid)], { encoding: "utf8" });
18040
+ if (result.status !== 0)
18041
+ return null;
18042
+ const match = /^\s*(\S+\s+\S+\s+\S+\s+\S+\s+\S+)\s+(.+)$/.exec(result.stdout.trim());
18043
+ return match ? { startedAt: match[1], args: match[2] } : null;
18044
+ }
18045
+ function findRecordedLiveMeshBridgePid(supportDirectory, readIdentity = readProcessIdentity) {
18046
+ let recorded;
18047
+ try {
18048
+ recorded = JSON.parse(readFileSync8(meshBridgeStatePath(supportDirectory), "utf8"));
18049
+ } catch {
18050
+ return null;
18051
+ }
18052
+ const { pid, processStartedAt } = recorded;
18053
+ if (typeof pid !== "number" || !Number.isInteger(pid) || pid <= 1)
18054
+ return null;
18055
+ if (typeof processStartedAt !== "string" || !processStartedAt)
18056
+ return null;
18057
+ const identity = readIdentity(pid);
18058
+ if (!identity || identity.startedAt !== processStartedAt)
18059
+ return null;
18060
+ return isMeshBridgeCommand(identity.args) ? pid : null;
18061
+ }
18062
+ function inspectLaunchdJob(target, run = runLaunchctl) {
18063
+ const result = run(["print", target]);
18064
+ if (result.status === 0)
18065
+ return "loaded";
18066
+ if (result.status === 113 || /could not find service/i.test(result.output))
18067
+ return "absent";
18068
+ return "unknown";
18069
+ }
18070
+ function legacyMeshBridgeLaunchdTarget(uid = process.getuid?.() ?? 501) {
18071
+ return `gui/${uid}/${LEGACY_MESH_BRIDGE_LAUNCH_AGENT_LABEL}`;
18072
+ }
18073
+ function runLaunchctlProbe(args, spawn4) {
18074
+ if (process.platform !== "darwin") {
18075
+ return { status: 113, output: "Could not find service" };
18076
+ }
18077
+ const result = spawn4 ? spawn4("launchctl", args, { encoding: "utf8" }) : spawnSync2("launchctl", args, { encoding: "utf8" });
18078
+ return { status: result.status, output: `${result.stdout ?? ""}${result.stderr ?? ""}` };
18079
+ }
18080
+ function runLaunchctl(args) {
18081
+ return runLaunchctlProbe(args);
18082
+ }
18083
+
17915
18084
  // packages/runtime/src/base-daemon.ts
17916
18085
  var RESTART_MIN_DELAY_MS = 1000;
17917
18086
  var RESTART_MAX_DELAY_MS = 30000;
@@ -17921,6 +18090,10 @@ var CHILD_SHUTDOWN_TIMEOUT_MS = 15000;
17921
18090
  var WEB_START_RETRY_MS = 5000;
17922
18091
  var PAIRING_RECONCILE_INTERVAL_MS = 500;
17923
18092
  var PAIRING_STOP_TIMEOUT_MS = 5000;
18093
+ var MESH_BRIDGE_RECONCILE_INTERVAL_MS = 5000;
18094
+ var MESH_BRIDGE_STOP_TIMEOUT_MS = 6000;
18095
+ var MESH_BRIDGE_UNCONFIGURED_RETRY_MS = 5 * 60000;
18096
+ var MESH_BRIDGE_STABLE_AFTER_MS = 60000;
17924
18097
  var MENU_BUNDLE_ID = "app.openscout.scout.menu";
17925
18098
  var PROCESS_NAME = "scout-base";
17926
18099
  var BROKER_PROCESS_NAME = "scout-broker";
@@ -17944,6 +18117,15 @@ var pairingRestartGeneration = null;
17944
18117
  var pairingRestartDelayMs = RESTART_MIN_DELAY_MS;
17945
18118
  var pairingNextStartAt = 0;
17946
18119
  var pairingSupervisionClaimed = false;
18120
+ var meshBridgeProcess = null;
18121
+ var meshBridgeConfigMtimeMs = 0;
18122
+ var meshBridgeRestartDelayMs = RESTART_MIN_DELAY_MS;
18123
+ var meshBridgeNextStartAt = 0;
18124
+ var meshBridgeReconcileTimer = null;
18125
+ var meshBridgeLastIdleReason = null;
18126
+ var meshBridgeReconcileInFlight = false;
18127
+ var meshBridgeStartedAt = 0;
18128
+ var meshBridgeUnconfiguredMtimeMs = null;
17947
18129
  var parentPid = Number.parseInt(process.env.OPENSCOUT_PARENT_PID ?? "0", 10);
17948
18130
  var config = resolveBrokerServiceConfig();
17949
18131
  var brokerControlUrl = buildLocalBrokerControlUrl(config.brokerHost, config.brokerPort);
@@ -17996,12 +18178,12 @@ function ensureDirectory(path) {
17996
18178
  mkdirSync6(path, { recursive: true });
17997
18179
  }
17998
18180
  function logFile(name) {
17999
- const dir = join9(config.supportDirectory, "logs", "base");
18181
+ const dir = join10(config.supportDirectory, "logs", "base");
18000
18182
  ensureDirectory(dir);
18001
- return openSync2(join9(dir, name), "a");
18183
+ return openSync2(join10(dir, name), "a");
18002
18184
  }
18003
18185
  function runtimeEntrypoint(config2) {
18004
- return join9(config2.runtimePackageDir, "bin", "openscout-runtime.mjs");
18186
+ return join10(config2.runtimePackageDir, "bin", "openscout-runtime.mjs");
18005
18187
  }
18006
18188
  function spawnBroker() {
18007
18189
  if (shuttingDown || brokerProcess) {
@@ -18083,10 +18265,10 @@ function resolveEdgeScheme() {
18083
18265
  if (value === "http" || value === "https" || value === "both") {
18084
18266
  return value;
18085
18267
  }
18086
- return "http";
18268
+ return "both";
18087
18269
  }
18088
18270
  function forwardedProtoForEdgeScheme(scheme) {
18089
- return scheme === "http" ? "http" : "https";
18271
+ return scheme === "https" ? "https" : "http";
18090
18272
  }
18091
18273
  function resolveEdgeConfig() {
18092
18274
  const portalHost = process.env.OPENSCOUT_WEB_PORTAL_HOST?.trim() || DEFAULT_SCOUT_WEB_PORTAL_HOST;
@@ -18107,9 +18289,9 @@ function resolveEdgeConfig() {
18107
18289
  });
18108
18290
  }
18109
18291
  function resolveLocalEdgeCaddyfilePath() {
18110
- const dir = join9(homedir7(), ".scout", "local-edge");
18292
+ const dir = join10(homedir8(), ".scout", "local-edge");
18111
18293
  ensureDirectory(dir);
18112
- return join9(dir, "Caddyfile");
18294
+ return join10(dir, "Caddyfile");
18113
18295
  }
18114
18296
  function resolveCaddyExecutable() {
18115
18297
  return process.env.OPENSCOUT_CADDY_BIN?.trim() || "caddy";
@@ -18180,9 +18362,9 @@ function startLocalEdge() {
18180
18362
  const edgeConfig = resolveEdgeConfig();
18181
18363
  const schemes = edgeConfig.scheme === "both" ? ["http", "https"] : [edgeConfig.scheme];
18182
18364
  const caddyfilePath = resolveLocalEdgeCaddyfilePath();
18183
- const sitesDirectory = join9(dirname7(caddyfilePath), "sites");
18365
+ const sitesDirectory = join10(dirname8(caddyfilePath), "sites");
18184
18366
  ensureDirectory(sitesDirectory);
18185
- writeFileSync5(caddyfilePath, renderOpenScoutCaddyfile(edgeConfig, join9(sitesDirectory, "*.caddy")), "utf8");
18367
+ writeFileSync5(caddyfilePath, renderOpenScoutCaddyfile(edgeConfig, join10(sitesDirectory, "*.caddy")), "utf8");
18186
18368
  mdnsProcesses = schemes.flatMap((scheme) => {
18187
18369
  const edgePort = scheme === "https" ? 443 : 80;
18188
18370
  const suffix = scheme.toUpperCase();
@@ -18284,18 +18466,18 @@ function scheduleWebStartRetry() {
18284
18466
  webStartRetryTimer.unref();
18285
18467
  }
18286
18468
  function findRepoMenuBundle() {
18287
- let current = dirname7(fileURLToPath2(import.meta.url));
18469
+ let current = dirname8(fileURLToPath2(import.meta.url));
18288
18470
  while (true) {
18289
- const distRoot = resolve3(current, "apps", "macos", "dist");
18471
+ const distRoot = resolve4(current, "apps", "macos", "dist");
18290
18472
  const candidates = [
18291
- resolve3(distRoot, "Scout.app", "Contents", "Library", "LoginItems", "ScoutMenu.app"),
18292
- resolve3(distRoot, "ScoutMenu.app")
18473
+ resolve4(distRoot, "Scout.app", "Contents", "Library", "LoginItems", "ScoutMenu.app"),
18474
+ resolve4(distRoot, "ScoutMenu.app")
18293
18475
  ];
18294
18476
  for (const candidate of candidates) {
18295
- if (existsSync8(candidate))
18477
+ if (existsSync9(candidate))
18296
18478
  return candidate;
18297
18479
  }
18298
- const parent = dirname7(current);
18480
+ const parent = dirname8(current);
18299
18481
  if (parent === current) {
18300
18482
  return null;
18301
18483
  }
@@ -18307,7 +18489,7 @@ function startMenuBarApp() {
18307
18489
  return;
18308
18490
  }
18309
18491
  const explicitBundle = process.env.OPENSCOUT_MENU_BUNDLE_PATH?.trim();
18310
- const repoBundle = explicitBundle && existsSync8(explicitBundle) ? explicitBundle : findRepoMenuBundle();
18492
+ const repoBundle = explicitBundle && existsSync9(explicitBundle) ? explicitBundle : findRepoMenuBundle();
18311
18493
  const args = repoBundle ? [repoBundle] : ["-b", MENU_BUNDLE_ID];
18312
18494
  const child = spawn4("open", args, {
18313
18495
  stdio: ["ignore", logFile("menu.stdout.log"), logFile("menu.stderr.log")]
@@ -18321,7 +18503,7 @@ function startMenuBarApp() {
18321
18503
  });
18322
18504
  }
18323
18505
  function resolvePairingControllerCommand() {
18324
- const moduleDirectory = dirname7(fileURLToPath2(import.meta.url));
18506
+ const moduleDirectory = dirname8(fileURLToPath2(import.meta.url));
18325
18507
  const repoRoot = resolveOpenScoutRepoRoot({
18326
18508
  startDirectories: [
18327
18509
  process.env.OPENSCOUT_SETUP_CWD,
@@ -18333,14 +18515,14 @@ function resolvePairingControllerCommand() {
18333
18515
  const explicit = process.env.OPENSCOUT_PAIRING_RUNTIME_CONTROLLER_BIN?.trim();
18334
18516
  const candidates = [
18335
18517
  explicit,
18336
- repoRoot ? join9(repoRoot, "packages", "cli", "dist", "pairing-runtime-controller.mjs") : null,
18337
- repoRoot ? join9(repoRoot, "packages", "web", "dist", "pairing-runtime-controller.mjs") : null,
18338
- repoRoot ? join9(repoRoot, "packages", "web", "server", "pairing-runtime-controller.ts") : null,
18339
- resolve3(moduleDirectory, "..", "pairing-runtime-controller.mjs"),
18340
- join9(homedir7(), ".bun", "install", "global", "node_modules", "@openscout", "scout", "dist", "pairing-runtime-controller.mjs"),
18341
- join9(homedir7(), ".bun", "node_modules", "@openscout", "scout", "dist", "pairing-runtime-controller.mjs")
18518
+ repoRoot ? join10(repoRoot, "packages", "cli", "dist", "pairing-runtime-controller.mjs") : null,
18519
+ repoRoot ? join10(repoRoot, "packages", "web", "dist", "pairing-runtime-controller.mjs") : null,
18520
+ repoRoot ? join10(repoRoot, "packages", "web", "server", "pairing-runtime-controller.ts") : null,
18521
+ resolve4(moduleDirectory, "..", "pairing-runtime-controller.mjs"),
18522
+ join10(homedir8(), ".bun", "install", "global", "node_modules", "@openscout", "scout", "dist", "pairing-runtime-controller.mjs"),
18523
+ join10(homedir8(), ".bun", "node_modules", "@openscout", "scout", "dist", "pairing-runtime-controller.mjs")
18342
18524
  ].filter((candidate) => Boolean(candidate));
18343
- const entrypoint = candidates.find((candidate) => existsSync8(candidate));
18525
+ const entrypoint = candidates.find((candidate) => existsSync9(candidate));
18344
18526
  if (!entrypoint)
18345
18527
  return null;
18346
18528
  if (explicit === entrypoint && !/\.(?:[cm]?js|ts)$/.test(entrypoint)) {
@@ -18491,6 +18673,174 @@ function startPairingSupervision() {
18491
18673
  pairingReconcileTimer.unref();
18492
18674
  reconcilePairingController();
18493
18675
  }
18676
+ function writeMeshBridgeState(state) {
18677
+ try {
18678
+ ensureDirectory(join10(config.supportDirectory, "runtime"));
18679
+ writeFileSync5(meshBridgeStatePath(config.supportDirectory), `${JSON.stringify({ ...state, updatedAt: Date.now() }, null, 2)}
18680
+ `);
18681
+ } catch (error) {
18682
+ warn("could not record mesh bridge state", error instanceof Error ? error.message : String(error));
18683
+ }
18684
+ }
18685
+ function spawnMeshBridge(desired) {
18686
+ if (shuttingDown || meshBridgeProcess)
18687
+ return;
18688
+ const moduleDirectory = dirname8(fileURLToPath2(import.meta.url));
18689
+ const repoRoot = resolveOpenScoutRepoRoot({
18690
+ startDirectories: [process.env.OPENSCOUT_SETUP_CWD, process.cwd(), moduleDirectory]
18691
+ });
18692
+ const entrypoint = resolveMeshBridgeEntrypoint({
18693
+ repoRoot,
18694
+ moduleDirectory,
18695
+ serviceMode: config.mode,
18696
+ env: process.env
18697
+ });
18698
+ const bun = resolveBunExecutable();
18699
+ if (!entrypoint || !bun) {
18700
+ warn("mesh bridge entrypoint or Bun executable could not be resolved");
18701
+ meshBridgeNextStartAt = Date.now() + meshBridgeRestartDelayMs;
18702
+ meshBridgeRestartDelayMs = Math.min(meshBridgeRestartDelayMs * 2, RESTART_MAX_DELAY_MS);
18703
+ return;
18704
+ }
18705
+ const child = spawn4(bun.path, meshBridgeArgs(entrypoint, desired.configPath), {
18706
+ cwd: repoRoot ?? process.cwd(),
18707
+ env: { ...process.env, OPENSCOUT_PARENT_PID: String(process.pid) },
18708
+ stdio: ["ignore", logFile("mesh-bridge.stdout.log"), logFile("mesh-bridge.stderr.log")]
18709
+ });
18710
+ meshBridgeProcess = child;
18711
+ meshBridgeStartedAt = Date.now();
18712
+ meshBridgeUnconfiguredMtimeMs = null;
18713
+ meshBridgeConfigMtimeMs = desired.configMtimeMs;
18714
+ meshBridgeLastIdleReason = null;
18715
+ log("mesh bridge started", { pid: child.pid, entrypoint });
18716
+ const processStartedAt = child.pid ? readProcessIdentity(child.pid)?.startedAt ?? null : null;
18717
+ writeMeshBridgeState({
18718
+ state: "running",
18719
+ pid: child.pid ?? null,
18720
+ processStartedAt,
18721
+ entrypoint,
18722
+ configPath: desired.configPath,
18723
+ startedAt: Date.now()
18724
+ });
18725
+ const settle = (code, signal, error) => {
18726
+ if (meshBridgeProcess !== child)
18727
+ return;
18728
+ meshBridgeProcess = null;
18729
+ if (shuttingDown)
18730
+ return;
18731
+ if (code === MESH_BRIDGE_EXIT_UNCONFIGURED) {
18732
+ warn("mesh bridge has no relay token; retrying later", { retryInMs: MESH_BRIDGE_UNCONFIGURED_RETRY_MS });
18733
+ meshBridgeNextStartAt = Date.now() + MESH_BRIDGE_UNCONFIGURED_RETRY_MS;
18734
+ meshBridgeUnconfiguredMtimeMs = desired.configMtimeMs;
18735
+ writeMeshBridgeState({ state: "unconfigured", pid: null, reason: "no relay token" });
18736
+ return;
18737
+ }
18738
+ warn(error ? "mesh bridge failed to start" : "mesh bridge exited", error ?? { code, signal });
18739
+ meshBridgeNextStartAt = Date.now() + meshBridgeRestartDelayMs;
18740
+ meshBridgeRestartDelayMs = Math.min(meshBridgeRestartDelayMs * 2, RESTART_MAX_DELAY_MS);
18741
+ writeMeshBridgeState({ state: "restarting", pid: null, lastExit: { code, signal }, nextStartAt: meshBridgeNextStartAt });
18742
+ };
18743
+ child.once("error", (error) => settle(null, null, error.message));
18744
+ child.once("exit", (code, signal) => settle(code, signal));
18745
+ }
18746
+ async function reconcileMeshBridge() {
18747
+ if (shuttingDown || meshBridgeReconcileInFlight)
18748
+ return;
18749
+ meshBridgeReconcileInFlight = true;
18750
+ try {
18751
+ await reconcileMeshBridgeOnce();
18752
+ } catch (error) {
18753
+ warn("mesh bridge reconciliation failed", error instanceof Error ? error.message : String(error));
18754
+ } finally {
18755
+ meshBridgeReconcileInFlight = false;
18756
+ }
18757
+ }
18758
+ async function reconcileMeshBridgeOnce() {
18759
+ const desired = resolveMeshBridgeDesiredState({ supportDirectory: config.supportDirectory, env: process.env });
18760
+ const running = meshBridgeProcess && !isChildExited(meshBridgeProcess) ? meshBridgeProcess : null;
18761
+ if (!desired.run) {
18762
+ if (running) {
18763
+ log("stopping mesh bridge", { reason: desired.reason });
18764
+ meshBridgeProcess = null;
18765
+ await terminateChildProcess(running, "mesh bridge", MESH_BRIDGE_STOP_TIMEOUT_MS);
18766
+ }
18767
+ if (meshBridgeLastIdleReason !== desired.reason) {
18768
+ meshBridgeLastIdleReason = desired.reason;
18769
+ if (desired.reason === "legacy-launch-agent") {
18770
+ warn("mesh bridge is still installed as its own LaunchAgent; run `scout mesh bridge install` to hand it to scout-base");
18771
+ }
18772
+ writeMeshBridgeState({ state: "idle", pid: null, reason: desired.reason });
18773
+ }
18774
+ meshBridgeNextStartAt = 0;
18775
+ meshBridgeRestartDelayMs = RESTART_MIN_DELAY_MS;
18776
+ return;
18777
+ }
18778
+ if (running) {
18779
+ if (desired.configMtimeMs !== meshBridgeConfigMtimeMs) {
18780
+ log("mesh bridge config changed; restarting it");
18781
+ meshBridgeProcess = null;
18782
+ await terminateChildProcess(running, "mesh bridge", MESH_BRIDGE_STOP_TIMEOUT_MS);
18783
+ meshBridgeNextStartAt = 0;
18784
+ } else {
18785
+ if (Date.now() - meshBridgeStartedAt >= MESH_BRIDGE_STABLE_AFTER_MS) {
18786
+ meshBridgeRestartDelayMs = RESTART_MIN_DELAY_MS;
18787
+ }
18788
+ return;
18789
+ }
18790
+ }
18791
+ if (meshBridgeUnconfiguredMtimeMs !== null && desired.configMtimeMs !== meshBridgeUnconfiguredMtimeMs) {
18792
+ meshBridgeUnconfiguredMtimeMs = null;
18793
+ meshBridgeNextStartAt = 0;
18794
+ }
18795
+ if (shuttingDown || Date.now() < meshBridgeNextStartAt)
18796
+ return;
18797
+ if (process.platform === "darwin") {
18798
+ const legacyJob = inspectLaunchdJob(legacyMeshBridgeLaunchdTarget());
18799
+ if (legacyJob !== "absent") {
18800
+ const reason = `legacy-launchd-job-${legacyJob}`;
18801
+ if (meshBridgeLastIdleReason !== reason) {
18802
+ meshBridgeLastIdleReason = reason;
18803
+ warn("mesh bridge deferred: the legacy launchd job is not confirmed absent", { state: legacyJob });
18804
+ writeMeshBridgeState({ state: "idle", pid: null, reason });
18805
+ }
18806
+ return;
18807
+ }
18808
+ }
18809
+ await fencePreviousMeshBridge();
18810
+ if (shuttingDown)
18811
+ return;
18812
+ spawnMeshBridge(desired);
18813
+ }
18814
+ async function fencePreviousMeshBridge() {
18815
+ const pid = findRecordedLiveMeshBridgePid(config.supportDirectory);
18816
+ if (pid === null || pid === process.pid)
18817
+ return;
18818
+ warn("stopping a mesh bridge left by a previous scout-base", { pid });
18819
+ try {
18820
+ process.kill(pid, "SIGTERM");
18821
+ } catch {
18822
+ return;
18823
+ }
18824
+ const deadline = Date.now() + MESH_BRIDGE_STOP_TIMEOUT_MS;
18825
+ while (Date.now() < deadline) {
18826
+ try {
18827
+ process.kill(pid, 0);
18828
+ } catch {
18829
+ return;
18830
+ }
18831
+ await sleep(100);
18832
+ }
18833
+ try {
18834
+ process.kill(pid, "SIGKILL");
18835
+ } catch {}
18836
+ }
18837
+ function startMeshBridgeSupervision() {
18838
+ meshBridgeReconcileTimer = setInterval(() => {
18839
+ reconcileMeshBridge();
18840
+ }, MESH_BRIDGE_RECONCILE_INTERVAL_MS);
18841
+ meshBridgeReconcileTimer.unref();
18842
+ reconcileMeshBridge();
18843
+ }
18494
18844
  function isChildExited(child) {
18495
18845
  return child.exitCode !== null || child.signalCode !== null;
18496
18846
  }
@@ -18498,15 +18848,15 @@ function waitForChildExit(child, timeoutMs) {
18498
18848
  if (isChildExited(child)) {
18499
18849
  return Promise.resolve(true);
18500
18850
  }
18501
- return new Promise((resolve4) => {
18851
+ return new Promise((resolve5) => {
18502
18852
  const timeout = setTimeout(() => {
18503
18853
  child.off("exit", onExit);
18504
- resolve4(false);
18854
+ resolve5(false);
18505
18855
  }, timeoutMs);
18506
18856
  timeout.unref();
18507
18857
  const onExit = () => {
18508
18858
  clearTimeout(timeout);
18509
- resolve4(true);
18859
+ resolve5(true);
18510
18860
  };
18511
18861
  child.once("exit", onExit);
18512
18862
  });
@@ -18550,10 +18900,15 @@ async function shutdown(exitCode = 0) {
18550
18900
  clearInterval(pairingReconcileTimer);
18551
18901
  pairingReconcileTimer = null;
18552
18902
  }
18903
+ if (meshBridgeReconcileTimer) {
18904
+ clearInterval(meshBridgeReconcileTimer);
18905
+ meshBridgeReconcileTimer = null;
18906
+ }
18553
18907
  const activeCaddyProcess = caddyProcess;
18554
18908
  stopEdgeProcesses();
18555
18909
  await Promise.all([
18556
18910
  stopPairingController(),
18911
+ terminateChildProcess(meshBridgeProcess, "mesh bridge", MESH_BRIDGE_STOP_TIMEOUT_MS),
18557
18912
  terminateChildProcess(brokerProcess, "broker"),
18558
18913
  terminateChildProcess(activeCaddyProcess, "local edge", 2000)
18559
18914
  ]);
@@ -18612,5 +18967,6 @@ await startJetStreamSidecar();
18612
18967
  spawnBroker();
18613
18968
  startLocalEdge();
18614
18969
  startPairingSupervision();
18970
+ startMeshBridgeSupervision();
18615
18971
  startMenuBarApp();
18616
18972
  startWebWhenBrokerIsReady();