@openscout/scout 0.2.75 → 0.2.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/README.md +41 -2
  2. package/bin/openscout-runtime.mjs +48 -30
  3. package/bin/scout.mjs +2 -2
  4. package/bin/scoutd +0 -0
  5. package/dist/build-manifest.json +3 -3
  6. package/dist/client/assets/ActivityScreen-Cu_1V4bq.js +1 -0
  7. package/dist/client/assets/AddProjectForm-DMnobKch.js +1 -0
  8. package/dist/client/assets/AgentAvatar-D90c1Rzk.js +1 -0
  9. package/dist/client/assets/AgentConfigurationScreen-BqfOz90D.js +1 -0
  10. package/dist/client/assets/AgentDefinitionsWorkspace-CUpUrY57.js +1 -0
  11. package/dist/client/assets/AgentDetailCard-BcRBRp88.js +1 -0
  12. package/dist/client/assets/AgentDetailCard-C4WVeJvJ.css +1 -0
  13. package/dist/client/assets/AgentFloorView-8LoAEBwS.js +1 -0
  14. package/dist/client/assets/AgentInfoScreen-DZs2_ibL.js +1 -0
  15. package/dist/client/assets/AgentLaneCard-RrNnDZu8.js +1 -0
  16. package/dist/client/assets/AgentLaneChrome-D9ZwUKrl.js +1 -0
  17. package/dist/client/assets/AgentLaneDetailSheet-BXbPls9N.js +5 -0
  18. package/dist/client/assets/AgentLaneSummaryResize-BhFmGNzT.js +1 -0
  19. package/dist/client/assets/AgentLanesEmbedScreen-W3qs022h.js +1 -0
  20. package/dist/client/assets/AgentLanesPreflight-eSAoDsPi.js +1 -0
  21. package/dist/client/assets/AgentLanesView-B9vuEEmZ.js +2 -0
  22. package/dist/client/assets/AgentLiveActions-CGS-Bxb7.css +1 -0
  23. package/dist/client/assets/AgentLiveActions-DBtnD0qE.js +1 -0
  24. package/dist/client/assets/AgentSessions-DyqOf4nG.js +6 -0
  25. package/dist/client/assets/AgentsConsole-BgiYP2wR.js +1 -0
  26. package/dist/client/assets/AgentsConsole-BjSTs-TV.css +1 -0
  27. package/dist/client/assets/AgentsScreen-DBi8x4MB.js +1 -0
  28. package/dist/client/assets/AgentsSubnav-DIEO4NPx.js +1 -0
  29. package/dist/client/assets/AtopView-BCkae3e1.js +1 -0
  30. package/dist/client/assets/BackToPicker-BRvfostO.js +1 -0
  31. package/dist/client/assets/BackToPicker-CdgVu-to.css +1 -0
  32. package/dist/client/assets/BriefingDetailScreen-BwFyysT8.js +6 -0
  33. package/dist/client/assets/BriefingsScreen-BQEevztH.js +1 -0
  34. package/dist/client/assets/BrokerMetadataPanel-7UjcuNjd.js +1 -0
  35. package/dist/client/assets/BrokerScreen-7ekklu88.js +5 -0
  36. package/dist/client/assets/ChatCollapsedStrip-CQSYSd8s.js +1 -0
  37. package/dist/client/assets/CodeDiffPane-DDPt6KPh.js +1 -0
  38. package/dist/client/assets/CodeProjectPicker-DqKFCpLU.js +2 -0
  39. package/dist/client/assets/CodeScreen-BxCrpRHd.js +1 -0
  40. package/dist/client/assets/ContextMenu-bARZqTzD.js +1 -0
  41. package/dist/client/assets/ConversationComposer-Bla3DDvM.js +1 -0
  42. package/dist/client/assets/ConversationFeedRows-B_gPxcqA.js +1 -0
  43. package/dist/client/assets/ConversationHeader-DE3FC0m-.js +1 -0
  44. package/dist/client/assets/ConversationPanels-DLek4H6A.js +2 -0
  45. package/dist/client/assets/ConversationScreen-BDRhx-RU.js +1 -0
  46. package/dist/client/assets/ConversationScreen-C9yMAMYF.css +1 -0
  47. package/dist/client/assets/ConversationStatus-BwVLiiO4.js +1 -0
  48. package/dist/client/assets/DataTable-E8s_MmoA.js +1 -0
  49. package/dist/client/assets/DispatchAftermath-Dpe88DFX.js +1 -0
  50. package/dist/client/assets/DocumentFocusViewer-BeVwwl26.js +1 -0
  51. package/dist/client/assets/EmbeddableSurfacesLab-BQqFQVnI.js +1 -0
  52. package/dist/client/assets/EmptyState-4F9XDFQm.js +1 -0
  53. package/dist/client/assets/FileViewerPane-CLgUhSm4.js +3 -0
  54. package/dist/client/assets/FleetSearch-Dz5euQJe.js +1 -0
  55. package/dist/client/assets/FleetSearch-EXOe8ulE.css +1 -0
  56. package/dist/client/assets/FlightObserveScreen-6RpZYwVz.js +1 -0
  57. package/dist/client/assets/FollowScreen-DZ4qfYOY.js +1 -0
  58. package/dist/client/assets/HarnessMark-Cbv3Ib0c.js +1 -0
  59. package/dist/client/assets/HarnessesScreen-CznAImej.js +1 -0
  60. package/dist/client/assets/HomeHero-B3uYd-pP.js +1 -0
  61. package/dist/client/assets/HomeHero-DEl-WBsT.css +1 -0
  62. package/dist/client/assets/KnowledgeSearchInspector-Dgdkfvvz.js +1 -0
  63. package/dist/client/assets/KnowledgeSearchScreen-DJDGGaqC.js +1 -0
  64. package/dist/client/assets/LaneToolHoverCard-Bla0gBdm.js +1 -0
  65. package/dist/client/assets/LaneTraceDetailSheet-D1CspRbl.js +1 -0
  66. package/dist/client/assets/LaneTraceEventFocus-BF9ERP5O.js +1 -0
  67. package/dist/client/assets/MeshCanvas-DFEPkpqY.js +3 -0
  68. package/dist/client/assets/MeshCanvasMinimap-CyVFYixr.js +1 -0
  69. package/dist/client/assets/MeshCanvasMinimap-Dv7nMbl5.css +1 -0
  70. package/dist/client/assets/MeshScreen-DFgevn8N.js +1 -0
  71. package/dist/client/assets/MeshTopologyView-CalkZghg.js +2 -0
  72. package/dist/client/assets/MessageComposerSuggestions-DpxN9WiB.js +1 -0
  73. package/dist/client/assets/MessagesScreen-C8YKW10Y.js +1 -0
  74. package/dist/client/assets/MissionControlView-lUeAiSVg.js +1 -0
  75. package/dist/client/assets/MissionFocusOverlay-wlCmWDCT.js +1 -0
  76. package/dist/client/assets/MissionLeftAgentRow-BpZWntfl.js +1 -0
  77. package/dist/client/assets/MissionLogPane-__MVtEl9.js +1 -0
  78. package/dist/client/assets/NewAgentModal-Bg-eWHpY.js +1 -0
  79. package/dist/client/assets/NewAgentModal-ru8u5YdJ.css +1 -0
  80. package/dist/client/assets/NewChatComposer-Cs6OsxK6.js +19 -0
  81. package/dist/client/assets/NewChatComposer-W-t-L4oV.css +1 -0
  82. package/dist/client/assets/NewChatOrigin-Bk2OyVjI.js +1 -0
  83. package/dist/client/assets/ObserveEmbedScreen-y2EpuqRZ.js +2 -0
  84. package/dist/client/assets/ObserveTextFlow-rsFj_rVo.js +2 -0
  85. package/dist/client/assets/ObservedTopologyPanel-BsBsvVPL.css +1 -0
  86. package/dist/client/assets/ObservedTopologyPanel-DyUeV98H.js +2 -0
  87. package/dist/client/assets/OpenScoutAppShell-Bh6FnEJO.css +1 -0
  88. package/dist/client/assets/OpenScoutAppShell-C_URc8sV.js +87 -0
  89. package/dist/client/assets/OpsAgentsView-UN7iOscs.js +1 -0
  90. package/dist/client/assets/OpsScreen-Buf3LKjb.js +1 -0
  91. package/dist/client/assets/OpsSubnav-DsuXzHah.js +1 -0
  92. package/dist/client/assets/PlanView-C1CjH3PG.js +1 -0
  93. package/dist/client/assets/ProjectAgentProfile-DJusrAV-.js +1 -0
  94. package/dist/client/assets/ProjectAgentProfileBar-CtTpj6fU.js +1 -0
  95. package/dist/client/assets/ProjectAgentProfileHero-BFwNJo_N.js +1 -0
  96. package/dist/client/assets/ProjectsInbox-GhVMxOhw.js +2 -0
  97. package/dist/client/assets/ProjectsRail-BgiuV4LR.js +1 -0
  98. package/dist/client/assets/ProjectsScreen-eNUBy4YU.js +1 -0
  99. package/dist/client/assets/ProjectsThreadAside-CoBgnHmr.js +1 -0
  100. package/dist/client/assets/Provider-C7UKGHQy.js +1 -0
  101. package/dist/client/assets/Provider-CCzjtkda.css +1 -0
  102. package/dist/client/assets/RailRow-BoGxAHNF.js +1 -0
  103. package/dist/client/assets/RailRow-Cf9LOiEj.css +1 -0
  104. package/dist/client/assets/RawSessionsTable-DL8y_eEy.js +1 -0
  105. package/dist/client/assets/RealtimeVoiceScreen-ffS-39zy.js +1 -0
  106. package/dist/client/assets/RepoDiffEmbedScreen-C0rumUME.js +1 -0
  107. package/dist/client/assets/RepoDiffPageScreen-DMv6DioL.js +1 -0
  108. package/dist/client/assets/RepoDiffViewer-D_exm6xK.js +7 -0
  109. package/dist/client/assets/RepoDiffViewerLazy-BPgF92Bg.js +2 -0
  110. package/dist/client/assets/ReposScreen-CB_YBWYf.js +6 -0
  111. package/dist/client/assets/ScoutDeckSurface-CxIYFyWx.js +1 -0
  112. package/dist/client/assets/ScoutDeckSurface-uhmuZRzC.css +1 -0
  113. package/dist/client/assets/ScoutSurface-CYz_TcWC.js +1 -0
  114. package/dist/client/assets/ScoutbotBroadcastChip-CxtYZWPZ.css +1 -0
  115. package/dist/client/assets/ScoutbotBroadcastChip-L_R9atj0.js +2 -0
  116. package/dist/client/assets/ScoutbotFxLab-CgiZMDMW.js +4 -0
  117. package/dist/client/assets/ScoutbotRealtimeVoiceCall-FMQOr1Np.js +1 -0
  118. package/dist/client/assets/SecondaryNav-B3-nh5dM.js +1 -0
  119. package/dist/client/assets/SessionEmbedScreen-BVC7yvWF.js +1 -0
  120. package/dist/client/assets/SessionObserve-BpggNO_M.css +1 -0
  121. package/dist/client/assets/SessionObserve-yfXFafp8.js +12 -0
  122. package/dist/client/assets/SessionRefScreen-DRgJu7Jo.js +1 -0
  123. package/dist/client/assets/SessionsScreen-D6XUsZfA.js +1 -0
  124. package/dist/client/assets/SettingsDrawer-CmJt72ww.css +1 -0
  125. package/dist/client/assets/SettingsDrawer-XfdAa_nD.js +3 -0
  126. package/dist/client/assets/SettingsScreen-Cy8z-EuR.js +1 -0
  127. package/dist/client/assets/ShikiPane-Ap1iPxYb.js +15 -0
  128. package/dist/client/assets/SlidePanel-Bg5dVaIa.css +1 -0
  129. package/dist/client/assets/SlidePanel-COwtoJqR.js +1 -0
  130. package/dist/client/assets/SpriteAvatar-DyaGuhik.js +1 -0
  131. package/dist/client/assets/StatusPill-DhBL__p8.js +1 -0
  132. package/dist/client/assets/TailView-DGj_5HA9.js +2 -0
  133. package/dist/client/assets/TailView-Mj3AU2u0.css +1 -0
  134. package/dist/client/assets/Terminal-CqvGbjXU.js +1 -0
  135. package/dist/client/assets/TerminalEmbedScreen-DuZZFFzW.js +1 -0
  136. package/dist/client/assets/TextDocumentSurface-BpAw4eQS.js +4 -0
  137. package/dist/client/assets/TmuxPeek-m1osv33Q.js +1 -0
  138. package/dist/client/assets/VoicePermissionsPanel-DsK53ar4.js +1 -0
  139. package/dist/client/assets/VoicePermissionsPanel-RijAZ1gP.css +1 -0
  140. package/dist/client/assets/WorkDetailScreen-Bx0JimPC.js +5 -0
  141. package/dist/client/assets/WorkFilesViewer-Btl6C2Q1.js +1 -0
  142. package/dist/client/assets/activity-CA8qS6PI.js +1 -0
  143. package/dist/client/assets/{addon-fit-3IrvLm2n.js → addon-fit-BZ-kXjeN.js} +1 -1
  144. package/dist/client/assets/{addon-webgl-BgxIDUI-.js → addon-webgl-D9-EQVEK.js} +1 -1
  145. package/dist/client/assets/agent-chat-Bfjd9y6c.js +1 -0
  146. package/dist/client/assets/agent-definitions-CymTYqvo.css +1 -0
  147. package/dist/client/assets/agent-directory-studio-injection-Bc8590z5.css +1 -0
  148. package/dist/client/assets/agent-essentials-BSY1o46q.js +1 -0
  149. package/dist/client/assets/agent-floor-CuJr1iK1.css +1 -0
  150. package/dist/client/assets/agent-lane-card-Dm7YWoew.css +1 -0
  151. package/dist/client/assets/agent-lane-card-model-r2frk57c.js +1 -0
  152. package/dist/client/assets/agent-lane-detail-Djm3YJEa.js +1 -0
  153. package/dist/client/assets/agent-lane-preview-CmHVe3dU.js +4 -0
  154. package/dist/client/assets/agent-lanes-BDNktFBZ.css +1 -0
  155. package/dist/client/assets/agent-lanes-model-B4YTt4OF.js +2 -0
  156. package/dist/client/assets/agents-detail-redesign-h34ROjOW.css +1 -0
  157. package/dist/client/assets/agents-project-COzHxZAF.css +1 -0
  158. package/dist/client/assets/agents-project-model-UYiamtrU.js +1 -0
  159. package/dist/client/assets/agents-screen-BMu6PpRY.css +1 -0
  160. package/dist/client/assets/api-BkjHJfgJ.js +1 -0
  161. package/dist/client/assets/api-h5zurxmi.js +1 -0
  162. package/dist/client/assets/{arc.es-Bh8P_xre.js → arc.es-CQBb-dVu.js} +1 -1
  163. package/dist/client/assets/arrow-down-BPLe0am9.js +1 -0
  164. package/dist/client/assets/arrow-left-DEZzHiPS.js +1 -0
  165. package/dist/client/assets/arrow-up-right-ClxBnsi7.js +1 -0
  166. package/dist/client/assets/bash-format-BRV5C6Gv.js +1 -0
  167. package/dist/client/assets/bot-eu8pBNvI.js +1 -0
  168. package/dist/client/assets/briefings-BwuAFQK6.css +1 -0
  169. package/dist/client/assets/broker-display-pp33bLsu.js +2 -0
  170. package/dist/client/assets/cache-Dr0why2k.js +2 -0
  171. package/dist/client/assets/check-DjgFiBxb.js +1 -0
  172. package/dist/client/assets/chevron-down-BGk5qoEw.js +1 -0
  173. package/dist/client/assets/chevron-right-XiIHsk4m.js +1 -0
  174. package/dist/client/assets/chunk-T65CQEWV-CrzwSeEt.js +1 -0
  175. package/dist/client/assets/chunk-YOZR3KYS-Bet8khjg.js +47 -0
  176. package/dist/client/assets/clipboard-e3fSpeo7.js +1 -0
  177. package/dist/client/assets/code-screen-DrKinCyh.css +1 -0
  178. package/dist/client/assets/code-xml-B6jOCM4V.js +1 -0
  179. package/dist/client/assets/collapsed-strip-Dz-of2SM.css +1 -0
  180. package/dist/client/assets/colors-BtO5_zlx.js +1 -0
  181. package/dist/client/assets/console-B1IBqLI_.css +1 -0
  182. package/dist/client/assets/content-BDt9VBPk.js +1 -0
  183. package/dist/client/assets/content-BIXf4cKR.js +1 -0
  184. package/dist/client/assets/content-BLm0NBJM.js +1 -0
  185. package/dist/client/assets/content-C2EwTb2y.js +1 -0
  186. package/dist/client/assets/content-C5UbLsDF.js +1 -0
  187. package/dist/client/assets/content-CHU0wwA3.css +1 -0
  188. package/dist/client/assets/content-CR3vdrYY.js +1 -0
  189. package/dist/client/assets/content-CSPVmo2s.js +1 -0
  190. package/dist/client/assets/content-C_FGqx1X.js +1 -0
  191. package/dist/client/assets/content-CvlVUOG8.js +1 -0
  192. package/dist/client/assets/content-D5kJmfgl.js +1 -0
  193. package/dist/client/assets/content-DTpQsomG.js +1 -0
  194. package/dist/client/assets/content-DikVsqLf.js +1 -0
  195. package/dist/client/assets/content-DlUe5Ono.js +1 -0
  196. package/dist/client/assets/content-GIBv_55n.js +1 -0
  197. package/dist/client/assets/content-Q2oclDzi.js +1 -0
  198. package/dist/client/assets/context-budget-CbB4BDcO.js +1 -0
  199. package/dist/client/assets/conversation-icons-IIG5ha6D.js +1 -0
  200. package/dist/client/assets/conversation-model-B47vYmWN.js +1 -0
  201. package/dist/client/assets/conversation-motion-features-BdAONVls.js +1 -0
  202. package/dist/client/assets/conversation-prefs-DNre-Lcx.js +1 -0
  203. package/dist/client/assets/copy-CQGYbxdu.js +1 -0
  204. package/dist/client/assets/createLucideIcon-OpA4Amw5.js +1 -0
  205. package/dist/client/assets/ctx-panel-B4s49N9e.css +1 -0
  206. package/dist/client/assets/discover-C1YwpBDE.js +2 -0
  207. package/dist/client/assets/document-focus-viewer-BSC_JwVE.css +1 -0
  208. package/dist/client/assets/embed-entry-BAcGL3g9.js +2 -0
  209. package/dist/client/assets/external-link-CXBytO9o.js +1 -0
  210. package/dist/client/assets/eye-0PvebX_a.js +1 -0
  211. package/dist/client/assets/file-text-BODxCjcz.js +1 -0
  212. package/dist/client/assets/flight-observe-GFg9L8ft.css +1 -0
  213. package/dist/client/assets/follow-route-BvcGtBIL.js +1 -0
  214. package/dist/client/assets/fx-z37u1o2z.js +1 -0
  215. package/dist/client/assets/gestures-CcwOTu8C.js +1 -0
  216. package/dist/client/assets/harnesses-screen-DBZoTZz8.css +1 -0
  217. package/dist/client/assets/home-live-action-B22u89j7.js +1 -0
  218. package/dist/client/assets/home-moving-signal-CAa0V91u.css +1 -0
  219. package/dist/client/assets/home-moving-signal-CK147hxn.js +1 -0
  220. package/dist/client/assets/home-now-card-BgvNWuea.js +1 -0
  221. package/dist/client/assets/home-now-card-nano-BcjnOU9H.js +1 -0
  222. package/dist/client/assets/hooks-B6y_O2FB.js +2 -0
  223. package/dist/client/assets/hooks-D6NI15f6.css +1 -0
  224. package/dist/client/assets/inbox-thread-redesign-Bz4FjWzr.css +1 -0
  225. package/dist/client/assets/index-BWHgHrtv.js +1 -0
  226. package/dist/client/assets/index-BcuhqXLe.js +1 -0
  227. package/dist/client/assets/index-CJXzfjo9.js +1 -0
  228. package/dist/client/assets/index-CvF09yvf.css +1 -0
  229. package/dist/client/assets/index-DMiGbrBt.js +10 -0
  230. package/dist/client/assets/index-DQPvraRS.js +1 -0
  231. package/dist/client/assets/index-DxGoC5l5.css +1 -0
  232. package/dist/client/assets/inspector-panel-DPoCWxKs.js +2 -0
  233. package/dist/client/assets/keyboard-nav-2kv_tGUS.js +1 -0
  234. package/dist/client/assets/knowledge-search-CVxQwxPn.js +1 -0
  235. package/dist/client/assets/knowledge-search-DjrQdiiW.css +1 -0
  236. package/dist/client/assets/lane-ask-display-B6iCAVcd.js +18 -0
  237. package/dist/client/assets/lane-edit-display-C_Aujldz.js +9 -0
  238. package/dist/client/assets/lane-observe-D0rfKDnU.js +7 -0
  239. package/dist/client/assets/lane-roster-store-D8x1jac2.js +1 -0
  240. package/dist/client/assets/lane-tool-detail-0WhMf4Vj.js +9 -0
  241. package/dist/client/assets/left-Bk3XnxPD.css +1 -0
  242. package/dist/client/assets/left-C--GiIh8.js +2 -0
  243. package/dist/client/assets/left-CAaRBK9S.css +1 -0
  244. package/dist/client/assets/left-CCoobxPS.css +1 -0
  245. package/dist/client/assets/left-Cj7Rt89X.js +1 -0
  246. package/dist/client/assets/left-CpNEtFEg.js +1 -0
  247. package/dist/client/assets/left-CzXAuK_t.js +2 -0
  248. package/dist/client/assets/left-agents-Bo9sO1by.js +1 -0
  249. package/dist/client/assets/left-bN4PCAXa.js +1 -0
  250. package/dist/client/assets/left-default-DV9GdvYi.js +1 -0
  251. package/dist/client/assets/left-jYYGAOYD.js +1 -0
  252. package/dist/client/assets/left-lanes-D0l_Co7V.js +1 -0
  253. package/dist/client/assets/left-mission-Ci7zREkQ.js +1 -0
  254. package/dist/client/assets/left-mission-DSenPIyb.css +1 -0
  255. package/dist/client/assets/left-plan-D4U1uflW.js +2 -0
  256. package/dist/client/assets/library-D-RxGiCw.js +1 -0
  257. package/dist/client/assets/loader-circle-CbHjZsz1.js +1 -0
  258. package/dist/client/assets/local-agents--00gLMqr.js +1 -0
  259. package/dist/client/assets/mentions-jSuTGeet.js +1 -0
  260. package/dist/client/assets/mesh-buckets-CfAukILK.js +1 -0
  261. package/dist/client/assets/mesh-screen-BSDUjrnV.css +1 -0
  262. package/dist/client/assets/mesh-view-store-CWidRbTE.js +1 -0
  263. package/dist/client/assets/message-circle-CG-96zts.js +1 -0
  264. package/dist/client/assets/message-markup-3J9pi3nx.js +15 -0
  265. package/dist/client/assets/message-square-DSaGpjFU.js +1 -0
  266. package/dist/client/assets/message-visibility-kJM8XcSG.js +1 -0
  267. package/dist/client/assets/mission-control-D3ikEPND.css +1 -0
  268. package/dist/client/assets/mission-control-model-C0fByIjm.js +1 -0
  269. package/dist/client/assets/mission-control-store-BlnEhiCq.js +1 -0
  270. package/dist/client/assets/model-Co0zkMIc.js +1 -0
  271. package/dist/client/assets/model-CpAxGuis.js +1 -0
  272. package/dist/client/assets/observe-CuLGD9Zp.js +1 -0
  273. package/dist/client/assets/openAgent-Bjt57GdM.js +1 -0
  274. package/dist/client/assets/openContent-C6XO6kr5.js +1 -0
  275. package/dist/client/assets/operator-attention-BwSPeheT.js +1 -0
  276. package/dist/client/assets/ops-agents-BOYxzPTm.css +1 -0
  277. package/dist/client/assets/ops-atop-BB4B4JdE.css +1 -0
  278. package/dist/client/assets/ops-screen-giu3If_N.css +1 -0
  279. package/dist/client/assets/page-status-DpkedE1F.js +1 -0
  280. package/dist/client/assets/page-status-bar-ByUD7VPM.css +1 -0
  281. package/dist/client/assets/plan-view-D56fneVF.css +1 -0
  282. package/dist/client/assets/plus--b1raV_O.js +1 -0
  283. package/dist/client/assets/profile-CVRziEDA.js +1 -0
  284. package/dist/client/assets/project-overview-helpers-BQTc_Ous.js +1 -0
  285. package/dist/client/assets/projects-inbox-CHyUFQ6w.js +1 -0
  286. package/dist/client/assets/projects-inbox-COZ23dLR.css +1 -0
  287. package/dist/client/assets/radio-Bz8ZePxj.js +1 -0
  288. package/dist/client/assets/refresh-cw-BBmAnCB7.js +1 -0
  289. package/dist/client/assets/repo-diff-C9Qs-bEn.css +1 -0
  290. package/dist/client/assets/resizable-columns-C7ygvLt8.css +1 -0
  291. package/dist/client/assets/resolve-panes-r9B3mpW7.js +1 -0
  292. package/dist/client/assets/resolve-sidebar-context-DcG8xGaB.js +1 -0
  293. package/dist/client/assets/right-BHeiIaty.js +1 -0
  294. package/dist/client/assets/right-BkgKo9VT.js +1 -0
  295. package/dist/client/assets/right-BpEU5jWE.js +1 -0
  296. package/dist/client/assets/right-CRZXoy-X.js +1 -0
  297. package/dist/client/assets/right-ChF_pbPy.js +1 -0
  298. package/dist/client/assets/right-DMoUT3KN.js +1 -0
  299. package/dist/client/assets/right-DjRXbnRP.js +2 -0
  300. package/dist/client/assets/right-T4Ue6EqM.js +1 -0
  301. package/dist/client/assets/right-wzrLXKur.js +1 -0
  302. package/dist/client/assets/rocket-BSNS_rLs.js +1 -0
  303. package/dist/client/assets/router-Bq5dwf78.js +1 -0
  304. package/dist/client/assets/runtime-picker-Bcl5iIX5.js +1 -0
  305. package/dist/client/assets/runtime-picker-vhm0gtLs.css +1 -0
  306. package/dist/client/assets/scope-views-4khCg2_z.css +1 -0
  307. package/dist/client/assets/scope-views-U-ucT9m0.js +1 -0
  308. package/dist/client/assets/scout-voice-CU5c0LGi.js +1 -0
  309. package/dist/client/assets/scoutbot-BTIErYHo.js +3 -0
  310. package/dist/client/assets/scroll-text-D6Pdnar7.js +1 -0
  311. package/dist/client/assets/search-CWfZtOt2.js +1 -0
  312. package/dist/client/assets/secondaryNavConfig-DqUIp0Es.js +1 -0
  313. package/dist/client/assets/secondaryNavConfig-xssF_ubT.css +1 -0
  314. package/dist/client/assets/selection-bridge-16pk1qyG.js +1 -0
  315. package/dist/client/assets/send-horizontal-Bg5-QggH.js +1 -0
  316. package/dist/client/assets/server-CPp4ZJhZ.js +1 -0
  317. package/dist/client/assets/session-catalog-BmoyVTJ_.js +1 -0
  318. package/dist/client/assets/session-table-DZcrKoIH.js +1 -0
  319. package/dist/client/assets/sessionRead-CvFz2RHv.js +1 -0
  320. package/dist/client/assets/sliders-horizontal-1oW76Xc9.js +1 -0
  321. package/dist/client/assets/sparkles-ClfRJQ6w.js +1 -0
  322. package/dist/client/assets/sse-CjIkKo46.js +1 -0
  323. package/dist/client/assets/status-tone-BM_zuRy1.js +1 -0
  324. package/dist/client/assets/surface-activity-B1rgWB1i.js +1 -0
  325. package/dist/client/assets/system-surfaces-redesign-CD26LFc0.css +1 -0
  326. package/dist/client/assets/tail-display-BdyoLvzY.js +2 -0
  327. package/dist/client/assets/tail-events-D19uAGe3.js +1 -0
  328. package/dist/client/assets/terminal-B9AOZQKR.js +1 -0
  329. package/dist/client/assets/terminal-relay-CWbJ1RCW.js +1 -0
  330. package/dist/client/assets/terminal-screen-19jAI0Cw.css +1 -0
  331. package/dist/client/assets/terminal-sessions-D5CIR2OL.js +1 -0
  332. package/dist/client/assets/terminal-takeover-B8UeD9OX.js +1 -0
  333. package/dist/client/assets/text-DsBWV_4k.js +1 -0
  334. package/dist/client/assets/time-DltNTpLl.js +1 -0
  335. package/dist/client/assets/types-B0PlfpKc.js +1 -0
  336. package/dist/client/assets/ui-LM8pS8qE.js +1 -0
  337. package/dist/client/assets/use-conversation-list-Byab41G6.js +1 -0
  338. package/dist/client/assets/use-fleet-active-asks-BIbQx5AS.js +1 -0
  339. package/dist/client/assets/use-reduced-motion-RRBkmVkk.js +1 -0
  340. package/dist/client/assets/useAgentHoverCard-DMrbBif0.js +1 -0
  341. package/dist/client/assets/useContentSecondaryNav-DMl1WNm7.js +1 -0
  342. package/dist/client/assets/usePierreRuntime-wC-yMtBb.js +50 -0
  343. package/dist/client/assets/voice-levels-Dcr3jglk.js +1 -0
  344. package/dist/client/assets/wrench-Bkc_0lKF.js +1 -0
  345. package/dist/client/assets/x-D3GElQbe.js +1 -0
  346. package/dist/client/assets/{xterm-CoGJTxj9.js → xterm-BKR8oAkR.js} +1 -1
  347. package/dist/client/index.html +6 -3
  348. package/dist/drizzle/0003_harsh_meltdown.sql +45 -0
  349. package/dist/drizzle/0004_medical_aaron_stack.sql +40 -0
  350. package/dist/drizzle/0005_wet_shriek.sql +57 -0
  351. package/dist/drizzle/0006_woozy_dark_beast.sql +1 -0
  352. package/dist/drizzle/README.md +7 -0
  353. package/dist/drizzle/meta/0003_snapshot.json +4952 -0
  354. package/dist/drizzle/meta/0004_snapshot.json +5235 -0
  355. package/dist/drizzle/meta/0005_snapshot.json +5599 -0
  356. package/dist/drizzle/meta/0006_snapshot.json +5606 -0
  357. package/dist/drizzle/meta/_journal.json +28 -0
  358. package/dist/main.mjs +24964 -12946
  359. package/dist/node/main.mjs +10212 -195
  360. package/dist/openscout-terminal-relay.mjs +507 -64
  361. package/dist/pairing-runtime-controller.mjs +10909 -5177
  362. package/dist/runtime/base-daemon.mjs +627 -159
  363. package/dist/runtime/broker-daemon.mjs +65060 -30990
  364. package/dist/runtime/broker-process-manager.mjs +247 -54
  365. package/dist/runtime/mesh-discover.mjs +246 -54
  366. package/dist/scout-control-plane-web.mjs +54699 -45309
  367. package/dist/scout-web-server.mjs +54699 -45309
  368. package/package.json +3 -3
  369. package/dist/client/assets/RepoDiffViewer-CTXJvjIL.js +0 -56
  370. package/dist/client/assets/embed-entry-wAEtYUEM.js +0 -1
  371. package/dist/client/assets/index-BK3mRYyN.js +0 -272
  372. package/dist/client/assets/index-Dm1ZQS9G.css +0 -1
@@ -74,33 +74,49 @@ function requestBrokerOverUnixSocket(socketPath, baseUrl, path, options) {
74
74
  if (body !== undefined) {
75
75
  headers["content-length"] = Buffer.byteLength(body).toString();
76
76
  }
77
+ let settled = false;
78
+ const cleanupAbortListener = () => {
79
+ options.signal?.removeEventListener("abort", handleAbort);
80
+ };
81
+ const rejectOnce = (error) => {
82
+ if (settled)
83
+ return;
84
+ settled = true;
85
+ cleanupAbortListener();
86
+ reject(error);
87
+ };
77
88
  const request = httpRequest({
78
89
  socketPath,
79
90
  path: `${url.pathname}${url.search}`,
80
91
  method: options.method ?? (body === undefined ? "GET" : "POST"),
81
92
  headers
82
93
  }, (response) => {
83
- let text = "";
84
- response.setEncoding("utf8");
94
+ const chunks = [];
85
95
  response.on("data", (chunk) => {
86
- text += String(chunk);
96
+ chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
97
+ });
98
+ response.on("aborted", () => {
99
+ rejectOnce(new Error("Scout broker response aborted"));
87
100
  });
101
+ response.on("error", rejectOnce);
88
102
  response.on("end", () => {
89
- options.signal?.removeEventListener("abort", handleAbort);
103
+ if (settled)
104
+ return;
105
+ settled = true;
106
+ cleanupAbortListener();
90
107
  resolve({
91
108
  ok: Boolean(response.statusCode && response.statusCode >= 200 && response.statusCode < 300),
92
109
  status: response.statusCode ?? 0,
93
- text
110
+ text: Buffer.concat(chunks).toString("utf8")
94
111
  });
95
112
  });
96
113
  });
97
114
  const handleAbort = () => {
98
- request.destroy(options.signal?.reason instanceof Error ? options.signal.reason : new Error("Scout broker request aborted"));
115
+ const error = options.signal?.reason instanceof Error ? options.signal.reason : new Error("Scout broker request aborted");
116
+ rejectOnce(error);
117
+ request.destroy(error);
99
118
  };
100
- request.on("error", (error) => {
101
- options.signal?.removeEventListener("abort", handleAbort);
102
- reject(error);
103
- });
119
+ request.on("error", rejectOnce);
104
120
  if (options.signal) {
105
121
  if (options.signal.aborted) {
106
122
  handleAbort();
@@ -177,6 +193,175 @@ async function requestScoutBrokerJsonWithTrace(baseUrl, path, options = {}) {
177
193
  return { value: undefined, trace };
178
194
  }
179
195
 
196
+ // packages/runtime/src/schema-version.ts
197
+ var CONTROL_PLANE_SCHEMA_VERSION = 17;
198
+
199
+ // packages/runtime/src/sqlite-adapter.ts
200
+ import { createRequire } from "module";
201
+
202
+ // packages/runtime/src/runtime-adapters.ts
203
+ function detectRuntimeHost(globalScope = globalThis) {
204
+ return typeof globalScope.Bun === "undefined" ? "node" : "bun";
205
+ }
206
+ function normalizeRuntimeHost(value) {
207
+ const normalized = value?.trim().toLowerCase();
208
+ if (normalized === "bun")
209
+ return "bun";
210
+ if (normalized === "node")
211
+ return "node";
212
+ return null;
213
+ }
214
+ function normalizeRuntimeServiceAdapter(value) {
215
+ const normalized = value?.trim().toLowerCase().replaceAll("_", "-");
216
+ if (normalized === "macos-scoutd" || normalized === "macos-launchd")
217
+ return "macos-scoutd";
218
+ if (normalized === "linux-systemd-user" || normalized === "systemd-user")
219
+ return "linux-systemd-user";
220
+ if (normalized === "headless-foreground" || normalized === "foreground" || normalized === "headless") {
221
+ return "headless-foreground";
222
+ }
223
+ if (normalized === "windows-service")
224
+ return "windows-service";
225
+ return null;
226
+ }
227
+ function defaultServiceAdapterForPlatform(platform = process.platform, env = process.env) {
228
+ const explicit = normalizeRuntimeServiceAdapter(env.OPENSCOUT_SERVICE_ADAPTER);
229
+ if (explicit)
230
+ return explicit;
231
+ if (normalizeRuntimeHost(env.OPENSCOUT_RUNTIME_HOST) === "node") {
232
+ return "headless-foreground";
233
+ }
234
+ if (platform === "darwin")
235
+ return "macos-scoutd";
236
+ if (platform === "linux")
237
+ return "headless-foreground";
238
+ if (platform === "win32")
239
+ return "windows-service";
240
+ return "headless-foreground";
241
+ }
242
+ function planRuntimeAdapters(options = {}) {
243
+ const env = options.env ?? process.env;
244
+ const host = options.host ?? normalizeRuntimeHost(env.OPENSCOUT_RUNTIME_HOST) ?? detectRuntimeHost();
245
+ return {
246
+ host,
247
+ database: host === "bun" ? "bun-sqlite" : "node-sqlite",
248
+ httpServer: host === "bun" ? "bun-serve" : "node-http-ws",
249
+ files: host === "bun" ? "bun-file" : "node-fs",
250
+ process: host === "bun" ? "bun-spawn" : "node-child-process",
251
+ service: defaultServiceAdapterForPlatform(options.platform, env)
252
+ };
253
+ }
254
+
255
+ // packages/runtime/src/sqlite-adapter.ts
256
+ var require2 = createRequire(import.meta.url);
257
+ function controlPlaneSqliteAdapterKind() {
258
+ return planRuntimeAdapters().database;
259
+ }
260
+ function openControlPlaneSqliteDatabase(path, options) {
261
+ return openRuntimeSqliteDatabase(path, options);
262
+ }
263
+ function openRuntimeSqliteDatabase(path, options) {
264
+ const adapter = controlPlaneSqliteAdapterKind();
265
+ if (adapter === "bun-sqlite") {
266
+ const { Database } = require2("bun:sqlite");
267
+ return new Database(path, options);
268
+ }
269
+ const { DatabaseSync } = require2("node:sqlite");
270
+ return new NodeSqliteDatabaseAdapter(new DatabaseSync(path, {
271
+ open: true,
272
+ readOnly: options?.readonly === true
273
+ }));
274
+ }
275
+ function prepareNodeSqliteSql(sql) {
276
+ const numberedParamIndexes = [];
277
+ const normalizedSql = sql.replace(/\?(\d+)/g, (_match, rawIndex) => {
278
+ numberedParamIndexes.push(Number.parseInt(rawIndex, 10) - 1);
279
+ return "?";
280
+ });
281
+ return {
282
+ sql: normalizedSql,
283
+ numberedParamIndexes: numberedParamIndexes.length > 0 ? numberedParamIndexes : null
284
+ };
285
+ }
286
+ function bindNodeSqliteParams(numberedParamIndexes, params) {
287
+ if (!numberedParamIndexes) {
288
+ return params;
289
+ }
290
+ return numberedParamIndexes.map((index) => params[index]);
291
+ }
292
+
293
+ class NodeSqliteStatementAdapter {
294
+ statement;
295
+ numberedParamIndexes;
296
+ constructor(statement, numberedParamIndexes) {
297
+ this.statement = statement;
298
+ this.numberedParamIndexes = numberedParamIndexes;
299
+ }
300
+ all(...params) {
301
+ return this.statement.all(...bindNodeSqliteParams(this.numberedParamIndexes, params));
302
+ }
303
+ get(...params) {
304
+ return this.statement.get(...bindNodeSqliteParams(this.numberedParamIndexes, params)) ?? null;
305
+ }
306
+ run(...params) {
307
+ return this.statement.run(...bindNodeSqliteParams(this.numberedParamIndexes, params));
308
+ }
309
+ }
310
+
311
+ class NodeSqliteDatabaseAdapter {
312
+ database;
313
+ transactionDepth = 0;
314
+ savepointId = 0;
315
+ constructor(database) {
316
+ this.database = database;
317
+ }
318
+ exec(sql) {
319
+ return this.database.exec(sql);
320
+ }
321
+ query(sql) {
322
+ const prepared = prepareNodeSqliteSql(sql);
323
+ return new NodeSqliteStatementAdapter(this.database.prepare(prepared.sql), prepared.numberedParamIndexes);
324
+ }
325
+ close() {
326
+ this.database.close();
327
+ }
328
+ transaction(callback) {
329
+ return (...args) => {
330
+ if (this.transactionDepth > 0) {
331
+ return this.runSavepoint(callback, args);
332
+ }
333
+ this.database.exec("BEGIN IMMEDIATE;");
334
+ this.transactionDepth += 1;
335
+ try {
336
+ const result = callback(...args);
337
+ this.database.exec("COMMIT;");
338
+ return result;
339
+ } catch (error) {
340
+ this.database.exec("ROLLBACK;");
341
+ throw error;
342
+ } finally {
343
+ this.transactionDepth -= 1;
344
+ }
345
+ };
346
+ }
347
+ runSavepoint(callback, args) {
348
+ const savepointName = `openscout_nested_${this.savepointId++}`;
349
+ this.database.exec(`SAVEPOINT ${savepointName};`);
350
+ this.transactionDepth += 1;
351
+ try {
352
+ const result = callback(...args);
353
+ this.database.exec(`RELEASE SAVEPOINT ${savepointName};`);
354
+ return result;
355
+ } catch (error) {
356
+ this.database.exec(`ROLLBACK TO SAVEPOINT ${savepointName};`);
357
+ this.database.exec(`RELEASE SAVEPOINT ${savepointName};`);
358
+ throw error;
359
+ } finally {
360
+ this.transactionDepth -= 1;
361
+ }
362
+ }
363
+ }
364
+
180
365
  // packages/runtime/src/support-paths.ts
181
366
  import { homedir } from "os";
182
367
  import { join } from "path";
@@ -787,7 +972,7 @@ var SCOUT_HOST_PROBE_SCHEMA_VERSIONS = {
787
972
  "git.mergeBase": 1,
788
973
  "git.logLastCommitUnix": 1,
789
974
  "git.worktreeListPorcelain": 1,
790
- "tmux.sessions": 1,
975
+ "tmux.sessions": 2,
791
976
  "tmux.panes": 1,
792
977
  "zellij.sessions": 1,
793
978
  "ps.runtime": 1,
@@ -1546,6 +1731,8 @@ var tailscaleStatusProbe = defineProbe({
1546
1731
 
1547
1732
  // packages/runtime/src/tailscale.ts
1548
1733
  var DEFAULT_TAILSCALE_STATUS_TIMEOUT_MS2 = 1500;
1734
+ var SYNC_TAILSCALE_STATUS_CACHE_MS = 30000;
1735
+ var syncStatusCache = null;
1549
1736
  function readStatusJsonFromFileSync(filePath) {
1550
1737
  const raw = readFileSync2(filePath, "utf8");
1551
1738
  return parseTailscaleStatusJson(raw);
@@ -1570,6 +1757,15 @@ function readStatusJsonSync(env = process.env) {
1570
1757
  if (!tailscaleBin) {
1571
1758
  return null;
1572
1759
  }
1760
+ const cacheKey = [
1761
+ tailscaleBin,
1762
+ env.OPENSCOUT_TAILSCALE_AUTO_HOSTS ?? "",
1763
+ env.OPENSCOUT_TAILSCALE_STATUS_TIMEOUT_MS ?? ""
1764
+ ].join("\x00");
1765
+ const cached = syncStatusCache;
1766
+ if (env === process.env && cached?.key === cacheKey && Date.now() - cached.at < SYNC_TAILSCALE_STATUS_CACHE_MS) {
1767
+ return cached.value;
1768
+ }
1573
1769
  try {
1574
1770
  const stdout = execFileSync(tailscaleBin, ["status", "--json"], {
1575
1771
  encoding: "utf8",
@@ -1577,8 +1773,13 @@ function readStatusJsonSync(env = process.env) {
1577
1773
  timeout: statusTimeoutMs2(env),
1578
1774
  windowsHide: true
1579
1775
  });
1580
- return parseTailscaleStatusJson(stdout);
1776
+ const value = parseTailscaleStatusJson(stdout);
1777
+ if (env === process.env)
1778
+ syncStatusCache = { key: cacheKey, at: Date.now(), value };
1779
+ return value;
1581
1780
  } catch {
1781
+ if (env === process.env)
1782
+ syncStatusCache = { key: cacheKey, at: Date.now(), value: null };
1582
1783
  return null;
1583
1784
  }
1584
1785
  }
@@ -1814,44 +2015,6 @@ function findExecutableOnSearchPath(name, env) {
1814
2015
  return null;
1815
2016
  }
1816
2017
 
1817
- // packages/runtime/src/runtime-adapters.ts
1818
- function normalizeRuntimeHost(value) {
1819
- const normalized = value?.trim().toLowerCase();
1820
- if (normalized === "bun")
1821
- return "bun";
1822
- if (normalized === "node")
1823
- return "node";
1824
- return null;
1825
- }
1826
- function normalizeRuntimeServiceAdapter(value) {
1827
- const normalized = value?.trim().toLowerCase().replaceAll("_", "-");
1828
- if (normalized === "macos-scoutd" || normalized === "macos-launchd")
1829
- return "macos-scoutd";
1830
- if (normalized === "linux-systemd-user" || normalized === "systemd-user")
1831
- return "linux-systemd-user";
1832
- if (normalized === "headless-foreground" || normalized === "foreground" || normalized === "headless") {
1833
- return "headless-foreground";
1834
- }
1835
- if (normalized === "windows-service")
1836
- return "windows-service";
1837
- return null;
1838
- }
1839
- function defaultServiceAdapterForPlatform(platform = process.platform, env = process.env) {
1840
- const explicit = normalizeRuntimeServiceAdapter(env.OPENSCOUT_SERVICE_ADAPTER);
1841
- if (explicit)
1842
- return explicit;
1843
- if (normalizeRuntimeHost(env.OPENSCOUT_RUNTIME_HOST) === "node") {
1844
- return "headless-foreground";
1845
- }
1846
- if (platform === "darwin")
1847
- return "macos-scoutd";
1848
- if (platform === "linux")
1849
- return "headless-foreground";
1850
- if (platform === "win32")
1851
- return "windows-service";
1852
- return "headless-foreground";
1853
- }
1854
-
1855
2018
  // packages/runtime/src/broker-process-manager.ts
1856
2019
  function isTmpPath(p) {
1857
2020
  return /^\/(?:private\/)?tmp\//.test(p);
@@ -2044,12 +2207,12 @@ function resolveBrokerServiceLabel(mode) {
2044
2207
  }
2045
2208
  switch (mode) {
2046
2209
  case "prod":
2047
- return "com.openscout";
2210
+ return "app.openscout";
2048
2211
  case "custom":
2049
- return "com.openscout.custom";
2212
+ return "app.openscout.custom";
2050
2213
  case "dev":
2051
2214
  default:
2052
- return "dev.openscout";
2215
+ return "app.openscout";
2053
2216
  }
2054
2217
  }
2055
2218
  function resolveBrokerServiceConfig() {
@@ -2216,13 +2379,16 @@ function readRuntimeFreshness(value) {
2216
2379
  state,
2217
2380
  intentional: readBoolean(value.intentional) ?? false,
2218
2381
  basis,
2382
+ reasonCode: readString2(value.reasonCode) ?? null,
2219
2383
  artifactCommit: readString2(value.artifactCommit) ?? null,
2220
2384
  expectedCommit: readString2(value.expectedCommit) ?? null,
2221
2385
  pin: readString2(value.pin) ?? null,
2222
2386
  pinReason: readString2(value.pinReason) ?? null,
2223
2387
  manifestPath: readString2(value.manifestPath) ?? null,
2224
2388
  version: readString2(value.version) ?? null,
2225
- builtAt: readString2(value.builtAt) ?? null,
2389
+ actualBuiltAt: readString2(value.actualBuiltAt) ?? readString2(value.builtAt) ?? null,
2390
+ expectedBuiltAt: readString2(value.expectedBuiltAt) ?? null,
2391
+ builtAt: readString2(value.builtAt) ?? readString2(value.actualBuiltAt) ?? null,
2226
2392
  sourceDirty: readBoolean(value.sourceDirty) ?? null,
2227
2393
  detail
2228
2394
  };
@@ -2352,7 +2518,30 @@ function spawnScoutdJson(scoutdPath, command, env, timeoutMs) {
2352
2518
  });
2353
2519
  });
2354
2520
  }
2521
+ var SCHEMA_GUARDED_SERVICE_COMMANDS = new Set([
2522
+ "install",
2523
+ "start",
2524
+ "restart"
2525
+ ]);
2526
+ function assertBrokerServiceSchemaCompatible(config) {
2527
+ const databasePath = join5(config.controlHome, "control-plane.sqlite");
2528
+ if (!existsSync5(databasePath))
2529
+ return;
2530
+ const database = openControlPlaneSqliteDatabase(databasePath, { readonly: true });
2531
+ try {
2532
+ const row = database.query("PRAGMA user_version").get();
2533
+ const databaseVersion = row?.user_version ?? 0;
2534
+ if (databaseVersion > CONTROL_PLANE_SCHEMA_VERSION) {
2535
+ throw new Error(`Refusing to change the Scout service: candidate runtime schema v${CONTROL_PLANE_SCHEMA_VERSION} ` + `is older than control-plane database schema v${databaseVersion}. ` + "The existing service was left untouched. Update or rebase this checkout before restarting Scout.");
2536
+ }
2537
+ } finally {
2538
+ database.close?.();
2539
+ }
2540
+ }
2355
2541
  async function runScoutdServiceCommand(command, config, timeoutMs = SCOUTD_DEFAULT_TIMEOUT_MS, runScoutdJson = spawnScoutdJson) {
2542
+ if (SCHEMA_GUARDED_SERVICE_COMMANDS.has(command)) {
2543
+ assertBrokerServiceSchemaCompatible(config);
2544
+ }
2356
2545
  const scoutd = resolveScoutdCommand(config);
2357
2546
  if (!scoutd) {
2358
2547
  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.");
@@ -2587,6 +2776,9 @@ function formatBrokerServiceStatus(status) {
2587
2776
  ];
2588
2777
  if (status.runtimeFreshness) {
2589
2778
  lines.push(`runtime freshness detail: ${status.runtimeFreshness.detail}`);
2779
+ if (status.runtimeFreshness.reasonCode) {
2780
+ lines.push(`runtime freshness reason: ${status.runtimeFreshness.reasonCode}`);
2781
+ }
2590
2782
  }
2591
2783
  if (status.health.socketFallbackError) {
2592
2784
  lines.push(`socket fallback: ${status.health.socketFallbackError}`);
@@ -2626,6 +2818,7 @@ export {
2626
2818
  buildDefaultBrokerUrl,
2627
2819
  buildDefaultBrokerSocketPath,
2628
2820
  brokerServiceStatus,
2821
+ assertBrokerServiceSchemaCompatible,
2629
2822
  DEFAULT_BROKER_URL,
2630
2823
  DEFAULT_BROKER_PORT,
2631
2824
  DEFAULT_BROKER_HOST_MESH,