@openscout/scout 0.2.102 → 0.2.106

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 (605) hide show
  1. package/README.md +37 -0
  2. package/bin/scout.mjs +6 -0
  3. package/bin/scoutd +0 -0
  4. package/dist/build-manifest.json +4 -4
  5. package/dist/chat.mjs +307 -0
  6. package/dist/client/assets/ActivityScreen-CZmGwQ2U.js +1 -0
  7. package/dist/client/assets/{AddProjectForm-DfbjlFfy.js → AddProjectForm-CusDRiVO.js} +1 -1
  8. package/dist/client/assets/{AdventureEvidence-Dzz9VbuE.js → AdventureEvidence-CyegKk1V.js} +1 -1
  9. package/dist/client/assets/{AdventureReader-ClMxT0e4.js → AdventureReader-X-hbTOi0.js} +1 -1
  10. package/dist/client/assets/{AdventureScenery-D548O0x4.js → AdventureScenery-LPXSVP67.js} +1 -1
  11. package/dist/client/assets/AgentAdventures-BAgxdOF8.js +1 -0
  12. package/dist/client/assets/AgentAvatar-CrP1eXxk.js +1 -0
  13. package/dist/client/assets/AgentConfigurationScreen-1L0IQm2w.js +1 -0
  14. package/dist/client/assets/AgentDefinitionsWorkspace-DguGs7jZ.js +1 -0
  15. package/dist/client/assets/{AgentDetailCard-CFDE8TLi.js → AgentDetailCard-DtHT3sCo.js} +1 -1
  16. package/dist/client/assets/AgentFloorView-DH4jiDgw.js +1 -0
  17. package/dist/client/assets/{AgentFloorWorld-BDJmXl3C.js → AgentFloorWorld-CjoIa6jA.js} +1 -1
  18. package/dist/client/assets/AgentInfoScreen-DYtmKkeE.js +1 -0
  19. package/dist/client/assets/{AgentLaneCard-C6YmwPxQ.js → AgentLaneCard-BaZ2g-f8.js} +1 -1
  20. package/dist/client/assets/{AgentLaneChrome-D9uJ4QY7.js → AgentLaneChrome-TF1SlJSc.js} +1 -1
  21. package/dist/client/assets/{AgentLaneDetailSheet-KYckCBCX.js → AgentLaneDetailSheet-EzEPsn3g.js} +1 -1
  22. package/dist/client/assets/{AgentLaneSummaryResize-BBYBS3DO.js → AgentLaneSummaryResize-dpp7YvrX.js} +1 -1
  23. package/dist/client/assets/AgentLanesEmbedScreen-BlSof_6S.js +1 -0
  24. package/dist/client/assets/{AgentLanesPreflight-pw2vMO3Q.js → AgentLanesPreflight-Ry-aqDTr.js} +1 -1
  25. package/dist/client/assets/AgentLanesView-BJi9xXz6.js +2 -0
  26. package/dist/client/assets/{AgentLiveActions-lYzicnNa.js → AgentLiveActions-CfTupTEl.js} +1 -1
  27. package/dist/client/assets/AgentMasterScreen-EJhmuKgl.js +1 -0
  28. package/dist/client/assets/AgentSessions-B1gOhDBf.js +6 -0
  29. package/dist/client/assets/AgentsConsole-RXGqRvcb.js +1 -0
  30. package/dist/client/assets/AgentsScreen-ChwMBs11.js +1 -0
  31. package/dist/client/assets/AgentsSubnav-DwNX4yy0.js +1 -0
  32. package/dist/client/assets/{AstronautSuit-C-4I5YKi.js → AstronautSuit-Cchnc4Ug.js} +1 -1
  33. package/dist/client/assets/{AtopView-DKm-ERYC.js → AtopView-gkEp4y__.js} +1 -1
  34. package/dist/client/assets/{BackToPicker-Bys9ColC.js → BackToPicker-CUkjnoVk.js} +1 -1
  35. package/dist/client/assets/BriefingDetailScreen-DrlC3qkm.js +1 -0
  36. package/dist/client/assets/{BriefingsScreen-D4Zf31Y6.js → BriefingsScreen-B1HlBMGZ.js} +1 -1
  37. package/dist/client/assets/{BrokerMetadataPanel-1GoSl2BV.js → BrokerMetadataPanel-Dk242Yh_.js} +1 -1
  38. package/dist/client/assets/BrokerScreen-DwOF6bMA.js +8 -0
  39. package/dist/client/assets/Canvas-X9pVSkw3.js +1 -0
  40. package/dist/client/assets/{CastPicker-BuwE_JQp.js → CastPicker-BXUtPAGC.js} +1 -1
  41. package/dist/client/assets/ChannelComposer-DoK7IDGa.js +1 -0
  42. package/dist/client/assets/ChannelSidebar-e9DOPulb.js +1 -0
  43. package/dist/client/assets/{CharacterFamilyPreview-CfO3j8Of.js → CharacterFamilyPreview-DMfw7UM_.js} +1 -1
  44. package/dist/client/assets/ChatAvatar-C3a_o5Hj.js +1 -0
  45. package/dist/client/assets/ChatBits-CsvxbToF.js +1 -0
  46. package/dist/client/assets/{ChatCollapsedStrip-TV0j1xTB.js → ChatCollapsedStrip-FEmQ_G9J.js} +1 -1
  47. package/dist/client/assets/ChatRichInput-DhtwFxQE.js +31 -0
  48. package/dist/client/assets/ChatRightPanel-C1h_aIkn.js +1 -0
  49. package/dist/client/assets/ChatSpaceSurface-BXyLYKHn.js +1 -0
  50. package/dist/client/assets/ChatSpaceTheme-3wLZGsvT.css +1 -0
  51. package/dist/client/assets/ChatSpaceTheme-CUH8bTZc.js +1 -0
  52. package/dist/client/assets/{CodeDiffPane-DB6-mqtX.js → CodeDiffPane-DuQRwpgK.js} +1 -1
  53. package/dist/client/assets/{CodeProjectPicker-B_LNLpIK.js → CodeProjectPicker-ZQ6gSBpg.js} +1 -1
  54. package/dist/client/assets/{CodeScreen-C9H160XS.js → CodeScreen-BXyKeL5T.js} +1 -1
  55. package/dist/client/assets/{CommsCanvas-DOKw3Q8i.js → CommsCanvas-THp0r_U8.js} +1 -1
  56. package/dist/client/assets/{CommsDeck-C18JA7rK.js → CommsDeck-BVmSMV2V.js} +1 -1
  57. package/dist/client/assets/{CommsFlowGraph-Czg-KTS0.js → CommsFlowGraph-DxoOaLF_.js} +1 -1
  58. package/dist/client/assets/{CommsFlowMap-CzBWvSa5.js → CommsFlowMap-Vi8ziCPg.js} +1 -1
  59. package/dist/client/assets/{CommsSelection-g1twA-Lb.js → CommsSelection-BUoRbu9o.js} +1 -1
  60. package/dist/client/assets/ComposerAttachments-DW0AIb8k.js +1 -0
  61. package/dist/client/assets/ConversationComposer-CUQyArlk.js +1 -0
  62. package/dist/client/assets/ConversationFeedRows-DWiOfT-y.js +1 -0
  63. package/dist/client/assets/ConversationHeader-C-ZWscKj.js +1 -0
  64. package/dist/client/assets/{ConversationPanels-C9yCAoJy.js → ConversationPanels-D9oC0xG5.js} +2 -2
  65. package/dist/client/assets/ConversationScreen-9MlMnEo4.css +1 -0
  66. package/dist/client/assets/ConversationScreen-CUfsQ4MR.js +2 -0
  67. package/dist/client/assets/ConversationStatus--IPm2nGh.js +1 -0
  68. package/dist/client/assets/{CrewAvatar-D0c9z5Qr.css → CrewAvatar-BnIPIn_Z.css} +1 -1
  69. package/dist/client/assets/CrewAvatar-kTznzqcO.js +1 -0
  70. package/dist/client/assets/{CrewSprite-hgpA3SWB.js → CrewSprite-Dhryjx2c.js} +1 -1
  71. package/dist/client/assets/CrewStage-vdO0qm3D.js +1 -0
  72. package/dist/client/assets/CrewWorkspaces-DCBzAAS4.js +1 -0
  73. package/dist/client/assets/CrewWorkspaces-DDuYMByu.css +1 -0
  74. package/dist/client/assets/{DataTable-BMOZ1-z8.js → DataTable-aH-jCyDq.js} +1 -1
  75. package/dist/client/assets/{DispatchAftermath-DDlwqSCY.js → DispatchAftermath-66uQAorV.js} +1 -1
  76. package/dist/client/assets/{DocumentFocusViewer-f12RRQpV.js → DocumentFocusViewer-DJr0v0D_.js} +1 -1
  77. package/dist/client/assets/{EmbeddableSurfacesLab-DGl9EMRV.js → EmbeddableSurfacesLab-BBa70EhJ.js} +1 -1
  78. package/dist/client/assets/{EmptyState-uyYN5piI.js → EmptyState-CZlrHXy-.js} +1 -1
  79. package/dist/client/assets/{FileViewerPane-HtiDbj9N.js → FileViewerPane-BAO6mtjD.js} +1 -1
  80. package/dist/client/assets/FleetRollCallHud-C5q2567n.js +1 -0
  81. package/dist/client/assets/FlightObserveScreen-DZ2mrw91.js +1 -0
  82. package/dist/client/assets/{FloorContextSheet-DV-SYA0K.js → FloorContextSheet-2_NVPQor.js} +1 -1
  83. package/dist/client/assets/{FloorExchangePanel-D59nvRCF.js → FloorExchangePanel-BU1pPu8K.js} +1 -1
  84. package/dist/client/assets/{FloorMessagePasses-BCwsz9VS.js → FloorMessagePasses-cLW2UGNP.js} +1 -1
  85. package/dist/client/assets/{FloorReplay-BHo79HCD.js → FloorReplay-VFzA6Kxc.js} +1 -1
  86. package/dist/client/assets/FloorResourcesSheet-C-kQ6Ren.js +1 -0
  87. package/dist/client/assets/{FloorSavedWork-2tjBoy06.js → FloorSavedWork-BeHDejWz.js} +1 -1
  88. package/dist/client/assets/FloorTacticalHUD-CO-iiFpb.js +1 -0
  89. package/dist/client/assets/{FollowScreen-eHXOlK-u.js → FollowScreen-CFfkIbc6.js} +1 -1
  90. package/dist/client/assets/HarnessMark-C4naWc16.js +1 -0
  91. package/dist/client/assets/HarnessesScreen-DX3NLcDG.js +1 -0
  92. package/dist/client/assets/{HerdrSession-CtJOUn7H.js → HerdrSession-_t7yM8vX.js} +2 -2
  93. package/dist/client/assets/{HomeHero-Cvwx2H0w.js → HomeHero-DouPyNmz.js} +1 -1
  94. package/dist/client/assets/{HostAdvisorView-CTJXIc1Q.js → HostAdvisorView-CnM1i8hW.js} +1 -1
  95. package/dist/client/assets/InviteLandingScreen-CEjG2E34.js +1 -0
  96. package/dist/client/assets/InviteSheet-CwxZtWCl.js +1 -0
  97. package/dist/client/assets/JumpPalette-O1aJE9gR.js +1 -0
  98. package/dist/client/assets/{KnowledgeSearchInspector-DwGMVmFL.js → KnowledgeSearchInspector-32n9baT-.js} +1 -1
  99. package/dist/client/assets/KnowledgeSearchScreen-Dd6jrQ0A.js +1 -0
  100. package/dist/client/assets/{LaneToolHoverCard-C6YehJqD.js → LaneToolHoverCard-CJa110yk.js} +1 -1
  101. package/dist/client/assets/LaneTraceDetailSheet-DYrd0BIf.js +1 -0
  102. package/dist/client/assets/{LaneTraceEventFocus-WLNZZVi_.js → LaneTraceEventFocus-TbrNHRj_.js} +1 -1
  103. package/dist/client/assets/{MeshCanvas-FDDGE69h.js → MeshCanvas-DWZHYh1A.js} +2 -2
  104. package/dist/client/assets/{MeshCanvasMinimap-CGRzQCac.js → MeshCanvasMinimap-iswYFpIb.js} +1 -1
  105. package/dist/client/assets/MeshScreen-8nAzQVbm.js +1 -0
  106. package/dist/client/assets/{MeshTopologyView-C2Cv_2gx.js → MeshTopologyView-BVvtqI8q.js} +2 -2
  107. package/dist/client/assets/MessageEmbeds-ksPazAKH.js +1 -0
  108. package/dist/client/assets/MessagesScreen-C3WB4T21.js +1 -0
  109. package/dist/client/assets/{MissionContextRail-CVSZJnvX.js → MissionContextRail-D62-Wis8.js} +1 -1
  110. package/dist/client/assets/MissionControlView-B9cNPXvl.js +1 -0
  111. package/dist/client/assets/{MissionFocusOverlay-B9SiuO-i.js → MissionFocusOverlay-C1zys3Jv.js} +1 -1
  112. package/dist/client/assets/MissionLeftAgentRow-vycMV77n.js +1 -0
  113. package/dist/client/assets/{MissionLogPane-CMBiI29U.js → MissionLogPane-B19lYSY9.js} +1 -1
  114. package/dist/client/assets/NativeAreaScreen-B1RLa85C.js +1 -0
  115. package/dist/client/assets/NativeAreaScreen-CV0OhGra.js +1 -0
  116. package/dist/client/assets/NativeAreaScreen-CzuZt6o1.js +1 -0
  117. package/dist/client/assets/{NewAgentModal-Cl4nsGhu.js → NewAgentModal-Bh-L-emz.js} +1 -1
  118. package/dist/client/assets/NewChatComposer-C97-iTMK.js +19 -0
  119. package/dist/client/assets/{NewChatOrigin-CyPPWTJP.js → NewChatOrigin-DFbF_XvR.js} +1 -1
  120. package/dist/client/assets/{NodeDetailPanel-BUG8rOb-.js → NodeDetailPanel-CElOEpCh.js} +1 -1
  121. package/dist/client/assets/{NodeMenu-Fw8ATWQA.js → NodeMenu-B-jjHf1c.js} +1 -1
  122. package/dist/client/assets/ObserveEmbedScreen-B7Qt69Ms.js +2 -0
  123. package/dist/client/assets/{ObserveTextFlow-ET0dD1wO.js → ObserveTextFlow-PFnG_10h.js} +2 -2
  124. package/dist/client/assets/{ObservedTopologyPanel-DkEkQzo-.js → ObservedTopologyPanel-CUTIoLZJ.js} +1 -1
  125. package/dist/client/assets/OpenScoutAppShell-37PDFfA4.js +31 -0
  126. package/dist/client/assets/OpsAgentsView-DajlX8LO.js +1 -0
  127. package/dist/client/assets/OpsScreen-jVcaBKGi.js +1 -0
  128. package/dist/client/assets/OpsSubnav-BOOYShHE.js +1 -0
  129. package/dist/client/assets/ProjectAgentProfile-D_wlW4sQ.js +1 -0
  130. package/dist/client/assets/{ProjectAgentProfileBar-C1fR65Eh.js → ProjectAgentProfileBar-DHuMKJj-.js} +1 -1
  131. package/dist/client/assets/ProjectAgentProfileHero-Dbebtug1.js +1 -0
  132. package/dist/client/assets/ProjectsInbox-B8zYE4vP.css +1 -0
  133. package/dist/client/assets/ProjectsInbox-Cgu7B4--.js +2 -0
  134. package/dist/client/assets/ProjectsRail-CDWocin_.js +1 -0
  135. package/dist/client/assets/ProjectsScreen-B_CJycqW.js +1 -0
  136. package/dist/client/assets/ProjectsThreadAside-1MMl_qUD.js +1 -0
  137. package/dist/client/assets/Provider-C35yu29I.js +5 -0
  138. package/dist/client/assets/{RailRow-BYguXNm4.js → RailRow-BjmWK420.js} +1 -1
  139. package/dist/client/assets/RawSessionsTable-DzT90hWu.js +1 -0
  140. package/dist/client/assets/RealtimeVoiceScreen-B6ylX3WQ.js +16 -0
  141. package/dist/client/assets/{RenderedWorkerSprite-CvdWO32C.js → RenderedWorkerSprite-Dhlyg89J.js} +1 -1
  142. package/dist/client/assets/{ReplayClock-B7JLTp8A.js → ReplayClock-348f17bW.js} +1 -1
  143. package/dist/client/assets/{ReplayLog-DZTpf2CW.js → ReplayLog-CBnAM3ui.js} +1 -1
  144. package/dist/client/assets/{ReplayOutpost-CvWQa30T.js → ReplayOutpost-DyRPfNFx.js} +1 -1
  145. package/dist/client/assets/{RepoDiffEmbedScreen-Cbu0_PJW.js → RepoDiffEmbedScreen-BWxvRDrS.js} +1 -1
  146. package/dist/client/assets/{RepoDiffPageScreen-Chwm6GXL.js → RepoDiffPageScreen-DN94irmY.js} +1 -1
  147. package/dist/client/assets/{RepoDiffViewer-C2mb0Wj-.js → RepoDiffViewer-_4JVXBIW.js} +1 -1
  148. package/dist/client/assets/RepoDiffViewerLazy-XGVC3WXv.js +2 -0
  149. package/dist/client/assets/{ReposScreen-C7JZQmyh.js → ReposScreen-uMCpt0e9.js} +2 -2
  150. package/dist/client/assets/{RiggedWorkerCharacter-DNe731GE.js → RiggedWorkerCharacter-q6QRc7_o.js} +1 -1
  151. package/dist/client/assets/{SageModelStudio-BR1J2D4R.js → SageModelStudio-CNDhZhgD.js} +1 -1
  152. package/dist/client/assets/{ScoutDeckSurface-flRamdvE.js → ScoutDeckSurface-CUaU4R6T.js} +1 -1
  153. package/dist/client/assets/{ScoutSurface-BpklGmDL.js → ScoutSurface-3_25USO_.js} +1 -1
  154. package/dist/client/assets/{ScoutbotFxLab-DeK7ySWZ.js → ScoutbotFxLab-CRqhYe0a.js} +1 -1
  155. package/dist/client/assets/{SecondaryNav-BkTn5tkq.js → SecondaryNav-D7dbV2qo.js} +1 -1
  156. package/dist/client/assets/SessionContextStrip-CXfs9hUD.js +1 -0
  157. package/dist/client/assets/SessionContextStrip-DAIXwtHd.css +1 -0
  158. package/dist/client/assets/{SessionEmbedScreen-CcQN6xlo.js → SessionEmbedScreen-D0zFmou-.js} +1 -1
  159. package/dist/client/assets/SessionHopMenu-E6VJZrE0.js +1 -0
  160. package/dist/client/assets/{SessionObserve-BOBJSfs0.css → SessionObserve-CDdJ7fAE.css} +1 -1
  161. package/dist/client/assets/SessionObserve-DXxBvejJ.js +12 -0
  162. package/dist/client/assets/SessionObserveEvidence-Cuj_KHxR.js +1 -0
  163. package/dist/client/assets/SessionRefScreen-DqLSUlCE.js +1 -0
  164. package/dist/client/assets/SessionsScreen-BLIRkohT.js +1 -0
  165. package/dist/client/assets/SettingsDrawer-juCpnbH6.js +3 -0
  166. package/dist/client/assets/SettingsScreen-BtGzE2-O.js +1 -0
  167. package/dist/client/assets/{SharedFloorCharacter-CSYG_t9t.js → SharedFloorCharacter-DNEiaOUh.js} +1 -1
  168. package/dist/client/assets/SharedWorkFloor-0rqtdF-n.css +1 -0
  169. package/dist/client/assets/SharedWorkFloor-D9mf9KSg.js +2 -0
  170. package/dist/client/assets/{ShikiPane-BudrOxNK.js → ShikiPane-CRtTYkMj.js} +1 -1
  171. package/dist/client/assets/{SlidePanel-Datu7XG4.js → SlidePanel-_CHAQdOa.js} +1 -1
  172. package/dist/client/assets/SpaceSwitcher-BLgSCf_T.js +1 -0
  173. package/dist/client/assets/{SpriteAvatar-BW1JzkDt.js → SpriteAvatar-CpZWf54-.js} +1 -1
  174. package/dist/client/assets/{SproutActionSprite-DveCzg6l.js → SproutActionSprite-BSiTS4en.js} +1 -1
  175. package/dist/client/assets/{StatusPill-MxYClPG5.js → StatusPill-2gCP6H7A.js} +1 -1
  176. package/dist/client/assets/{TailView-Dn7uWmPz.js → TailView-CYSijNTy.js} +2 -2
  177. package/dist/client/assets/Terminal-Bi97yb5s.js +4 -0
  178. package/dist/client/assets/TerminalEmbedScreen-Bqop67Bq.js +1 -0
  179. package/dist/client/assets/{TerminalHeaderMount-DCGstkZ4.js → TerminalHeaderMount-Cq4OD_xN.js} +1 -1
  180. package/dist/client/assets/TerminalRelay-DrikpUSJ.js +46 -0
  181. package/dist/client/assets/{TextDocumentSurface-BhYvAB0o.js → TextDocumentSurface-D52m7Vd8.js} +1 -1
  182. package/dist/client/assets/{TmuxPeek-BhK0V9Qt.js → TmuxPeek-CXFeweMg.js} +1 -1
  183. package/dist/client/assets/VoiceControlWell-DF3bjcYA.js +1 -0
  184. package/dist/client/assets/VoicePathDiagram-CmpHWfO-.js +1 -0
  185. package/dist/client/assets/{VoicePermissionsPanel-CecFWzva.js → VoicePermissionsPanel-Ok2nfxHw.js} +1 -1
  186. package/dist/client/assets/VoiceTurnDetails-wAByRaNB.js +8 -0
  187. package/dist/client/assets/VoiceTurnStage-edoJalLV.js +1 -0
  188. package/dist/client/assets/VoiceTurnView-D-8g5E4r.js +1 -0
  189. package/dist/client/assets/WorkDetailScreen-zQkNVy2F.js +5 -0
  190. package/dist/client/assets/{WorkFilesViewer-DJHftsH9.js → WorkFilesViewer-vNt01sDd.js} +1 -1
  191. package/dist/client/assets/{WorkRunView-x5PH1byG.js → WorkRunView-BDkR7Edq.js} +1 -1
  192. package/dist/client/assets/WorldActorTalk-BvSg_b1y.js +1 -0
  193. package/dist/client/assets/{WorldCharacter-Dn4sIXNP.js → WorldCharacter-CIIlutQq.js} +1 -1
  194. package/dist/client/assets/WorldMinimap-B6HNgcDe.js +1 -0
  195. package/dist/client/assets/{WorldSky-DV9bpvXj.js → WorldSky-Jm2Z6dfW.js} +1 -1
  196. package/dist/client/assets/{activity-CSUhvjD0.js → activity-CIlFrfPJ.js} +1 -1
  197. package/dist/client/assets/{addon-fit-MR98IWES.js → addon-fit-dFpj9Kfq.js} +1 -1
  198. package/dist/client/assets/{addon-webgl-CIIKXrvK.js → addon-webgl-BFCGRtGh.js} +1 -1
  199. package/dist/client/assets/{agent-essentials-8t2il7PV.js → agent-essentials-BGGvT5G6.js} +1 -1
  200. package/dist/client/assets/{agent-floor-actor-3v9drnxh.js → agent-floor-actor-DW8zLht0.js} +1 -1
  201. package/dist/client/assets/{agent-lane-card-model-l0stnU9N.js → agent-lane-card-model-CeqQGp-8.js} +1 -1
  202. package/dist/client/assets/{agent-lane-detail-Db7KyAlf.js → agent-lane-detail-Ti3trpfH.js} +1 -1
  203. package/dist/client/assets/{agent-lane-preview-B8lsQJOQ.js → agent-lane-preview-Dpa3DuOn.js} +1 -1
  204. package/dist/client/assets/{agent-lanes-model-CX0wTcnF.js → agent-lanes-model-DMAdqCmK.js} +1 -1
  205. package/dist/client/assets/{agent-master-model-C-KdOFDK.js → agent-master-model-Bk_yuUXJ.js} +1 -1
  206. package/dist/client/assets/{agent-specialization-CiVxQsFT.js → agent-specialization-DDc7mLCW.js} +1 -1
  207. package/dist/client/assets/agents-screen-BYakbO50.css +1 -0
  208. package/dist/client/assets/{api-B9_IqFKY.js → api-BQYTwoz6.js} +1 -1
  209. package/dist/client/assets/{api-CaROe5_H.js → api-DSqpVKC7.js} +1 -1
  210. package/dist/client/assets/{arc.es-BzhWalCl.js → arc.es-C1SQHJ3k.js} +1 -1
  211. package/dist/client/assets/{arrow-left-PuKdO3NM.js → arrow-left-MVUKauwQ.js} +1 -1
  212. package/dist/client/assets/{arrow-right-ldbfp4SZ.js → arrow-right-Bp-FpE5V.js} +1 -1
  213. package/dist/client/assets/{arrow-up-right-Hn754ybA.js → arrow-up-right-BPedAgxO.js} +1 -1
  214. package/dist/client/assets/{book-open-BlJnpf2U.js → book-open-CV98WMSp.js} +1 -1
  215. package/dist/client/assets/{bot-CfN9PSBF.js → bot-B4zLQ4IN.js} +1 -1
  216. package/dist/client/assets/{cache-DEy9E34b.js → cache-DGBo3vIf.js} +1 -1
  217. package/dist/client/assets/chat-api-DSJMBYoT.js +2 -0
  218. package/dist/client/assets/chat-message-markup-91DIry6R.js +1 -0
  219. package/dist/client/assets/chat-space-model-aW3Fd8_U.js +4 -0
  220. package/dist/client/assets/chat-transport-DNS5CB2I.js +1 -0
  221. package/dist/client/assets/{check-B8dMv3Is.js → check-lrJ3a73a.js} +1 -1
  222. package/dist/client/assets/{chevron-down-B5eMsn5c.js → chevron-down-l1mrh5S9.js} +1 -1
  223. package/dist/client/assets/{chevron-right-C7UGFpkl.js → chevron-right-DrfqcerI.js} +1 -1
  224. package/dist/client/assets/{chevron-up-BHOEgHcn.js → chevron-up-CETZJzjV.js} +1 -1
  225. package/dist/client/assets/{chunk-HRAB3GC3-C5X-kFhb.js → chunk-HRAB3GC3-DbVLgbWX.js} +1 -1
  226. package/dist/client/assets/{clock-DFcRbtrl.js → clock-BV1aqPkK.js} +1 -1
  227. package/dist/client/assets/{code-xml-BmyLM0I2.js → code-xml-BhcNbLWU.js} +1 -1
  228. package/dist/client/assets/{coffee-C_D9zooM.js → coffee-D7EAOdCk.js} +1 -1
  229. package/dist/client/assets/{compass-DTZdCpv9.js → compass-63TUaz5_.js} +1 -1
  230. package/dist/client/assets/content-B1lgE8qr.js +1 -0
  231. package/dist/client/assets/content-B5l11YyQ.js +1 -0
  232. package/dist/client/assets/content-BNZOZEpX.js +1 -0
  233. package/dist/client/assets/content-BRIxP155.js +1 -0
  234. package/dist/client/assets/content-BWd8gt8L.js +1 -0
  235. package/dist/client/assets/content-BfwS2jAK.js +1 -0
  236. package/dist/client/assets/content-C4p43_eT.js +1 -0
  237. package/dist/client/assets/content-CdYfaoDV.js +1 -0
  238. package/dist/client/assets/content-CzldLxw0.js +1 -0
  239. package/dist/client/assets/content-D-olnc4U.js +1 -0
  240. package/dist/client/assets/content-DTioimq4.js +1 -0
  241. package/dist/client/assets/content-LOebm3_d.js +1 -0
  242. package/dist/client/assets/content-nGlEZhUI.js +1 -0
  243. package/dist/client/assets/content-oyzDM-LK.js +1 -0
  244. package/dist/client/assets/content-x1PHxED7.js +1 -0
  245. package/dist/client/assets/content-zX3ZY3T9.js +1 -0
  246. package/dist/client/assets/{context-budget-DemtXu7E.js → context-budget-8qFKqM-j.js} +1 -1
  247. package/dist/client/assets/{conversation-icons-BQ4OeOmr.js → conversation-icons-Tqba2d56.js} +1 -1
  248. package/dist/client/assets/conversation-model-FxDeWlle.js +1 -0
  249. package/dist/client/assets/conversation-motion-features-C5zjuNwE.js +1 -0
  250. package/dist/client/assets/conversations-DoAAO6kA.js +1 -0
  251. package/dist/client/assets/{copy-D9WUpQRf.js → copy-xKeM5ZtU.js} +1 -1
  252. package/dist/client/assets/{cpu-Ck_4tB_-.js → cpu-BOTa_WLr.js} +1 -1
  253. package/dist/client/assets/{createLucideIcon-DkjnzvcJ.js → createLucideIcon-zZ8Hx7er.js} +1 -1
  254. package/dist/client/assets/{credentials-C4VXz2hr.js → credentials-OeoF-VKJ.js} +1 -1
  255. package/dist/client/assets/ctx-panel-BC8fpcWJ.css +1 -0
  256. package/dist/client/assets/direct-voice-BbLPuJ04.js +2 -0
  257. package/dist/client/assets/direct-voice-DbO7CSv_.css +1 -0
  258. package/dist/client/assets/discover-DJFxyV1k.js +2 -0
  259. package/dist/client/assets/embed-entry-Lyvu0Kfc.js +2 -0
  260. package/dist/client/assets/{external-link-RT4Ph-6-.js → external-link-CUObqmgX.js} +1 -1
  261. package/dist/client/assets/{eye-CtqSV8BS.js → eye-LrO-cXQt.js} +1 -1
  262. package/dist/client/assets/{file-code-corner-D_Aptal2.js → file-code-corner-CsU7jJpu.js} +1 -1
  263. package/dist/client/assets/{file-text-ChtICwub.js → file-text-CnISiiw6.js} +1 -1
  264. package/dist/client/assets/{flag-CqdOxVkI.js → flag-C4wl8z2-.js} +1 -1
  265. package/dist/client/assets/fleet-roll-call-BUgf7w-V.css +1 -0
  266. package/dist/client/assets/{floor-context-model-DZBpo_oD.js → floor-context-model-rWKqaKmV.js} +1 -1
  267. package/dist/client/assets/{floor-message-passes-CJh9f8Jp.js → floor-message-passes-CO3Ix_wR.js} +1 -1
  268. package/dist/client/assets/{folder-0fWevPvQ.js → folder-D5prSkzz.js} +1 -1
  269. package/dist/client/assets/{gauge-Dgtfxf_o.js → gauge-D9_5iJEm.js} +1 -1
  270. package/dist/client/assets/{gestures-BDCZ1FRG.js → gestures-QZub3Ot9.js} +1 -1
  271. package/dist/client/assets/{git-branch-CA3cHKCI.js → git-branch-B0_fPLO7.js} +1 -1
  272. package/dist/client/assets/{go-shortcuts-DKtw4qYx.js → go-shortcuts-DicR7sUf.js} +1 -1
  273. package/dist/client/assets/home-moving-signal-rpMhsOJB.js +1 -0
  274. package/dist/client/assets/home-now-card-ByE6Umcx.js +1 -0
  275. package/dist/client/assets/{home-now-card-nano-D1ScGrgv.js → home-now-card-nano-B5Dv3-pb.js} +1 -1
  276. package/dist/client/assets/hooks-_eCZZPsR.js +2 -0
  277. package/dist/client/assets/index-724SdE6r.js +1 -0
  278. package/dist/client/assets/{index-CvsM3jm8.js → index-CHD0qcfL.js} +1 -1
  279. package/dist/client/assets/index-CN4rBB_s.css +1 -0
  280. package/dist/client/assets/index-D1d98iYf.js +1 -0
  281. package/dist/client/assets/index-EsrkGBcv.js +10 -0
  282. package/dist/client/assets/index-gGHPA-By.js +1 -0
  283. package/dist/client/assets/{inspector-panel-BLhDODb3.js → inspector-panel-BkgUDn6G.js} +2 -2
  284. package/dist/client/assets/{keyboard-nav-CXfav14z.js → keyboard-nav-DDHegDbx.js} +1 -1
  285. package/dist/client/assets/lane-ask-display-BTVSakyo.js +18 -0
  286. package/dist/client/assets/{lane-observe-BD21P8BB.js → lane-observe-CteDwdD-.js} +3 -3
  287. package/dist/client/assets/{lane-roster-store-DzNHP392.js → lane-roster-store-D-RSWjb-.js} +1 -1
  288. package/dist/client/assets/{layers-Bolb8ejU.js → layers-C8PDiMul.js} +1 -1
  289. package/dist/client/assets/{layout-grid-DI9tVJ2E.js → layout-grid-Cor2frzj.js} +1 -1
  290. package/dist/client/assets/left-Bn5X7x2o.js +2 -0
  291. package/dist/client/assets/left-BqS0fYX1.js +1 -0
  292. package/dist/client/assets/left-CTCeeeD3.js +1 -0
  293. package/dist/client/assets/left-DhtVPVux.js +1 -0
  294. package/dist/client/assets/left-K39b-Wvx.js +2 -0
  295. package/dist/client/assets/left-KGmueNPt.js +1 -0
  296. package/dist/client/assets/left-P_GOYB-s.js +1 -0
  297. package/dist/client/assets/left-advisor-B0N47De2.js +1 -0
  298. package/dist/client/assets/left-agents-CsSNc51Y.js +1 -0
  299. package/dist/client/assets/left-default-BlO5LP2T.js +1 -0
  300. package/dist/client/assets/left-lanes-C4PhaJE6.js +1 -0
  301. package/dist/client/assets/left-mission-BjTE5vPa.js +1 -0
  302. package/dist/client/assets/library-CkWNPHRp.js +1 -0
  303. package/dist/client/assets/{loader-circle-DurUYl7E.js → loader-circle-OvccU82H.js} +1 -1
  304. package/dist/client/assets/{local-agents-D9fYYRyj.js → local-agents-BqnoxJrq.js} +1 -1
  305. package/dist/client/assets/log-in-7SnYqW5w.js +1 -0
  306. package/dist/client/assets/{machine-children-RGS4Q0r6.js → machine-children-DxcqCLmd.js} +1 -1
  307. package/dist/client/assets/media-blobs-Bi8pxr1u.js +1 -0
  308. package/dist/client/assets/{mentions-Ctw1ECUC.js → mentions-ByUvhS-v.js} +1 -1
  309. package/dist/client/assets/{mesh-ops-CGpRk4ik.js → mesh-ops-CiZ8xSAx.js} +1 -1
  310. package/dist/client/assets/{mesh-view-store-CliSYsmt.js → mesh-view-store-DZvJC4KU.js} +1 -1
  311. package/dist/client/assets/{message-circle-CSiJj6yo.js → message-circle-CxRVKNE-.js} +1 -1
  312. package/dist/client/assets/message-markup-BQW5jdJw.js +15 -0
  313. package/dist/client/assets/message-markup-Zwo3t4cI.js +1 -0
  314. package/dist/client/assets/{message-square-NmXWtWLR.js → message-square-BxesYglW.js} +1 -1
  315. package/dist/client/assets/mission-control-model-BpJHDV5D.js +1 -0
  316. package/dist/client/assets/{mission-control-store-DZ29Mlj1.js → mission-control-store-elEEsIvb.js} +1 -1
  317. package/dist/client/assets/{mission-wall-DOuGOxQy.js → mission-wall-CAo4BKfa.js} +1 -1
  318. package/dist/client/assets/monitor-DTTYEb73.js +1 -0
  319. package/dist/client/assets/{nav-destinations-CyXnw9kh.js → nav-destinations-uorRqFxf.js} +1 -1
  320. package/dist/client/assets/{observe-CkfOxYx_.js → observe-BJqERJVj.js} +1 -1
  321. package/dist/client/assets/{operator-attention-DGR4kOog.js → operator-attention-DBaRg5ep.js} +1 -1
  322. package/dist/client/assets/{page-status-CkS3SZu-.js → page-status-BswZLqvA.js} +1 -1
  323. package/dist/client/assets/{panel-right-BNTJhy8M.js → panel-right-Bv7sP_fc.js} +1 -1
  324. package/dist/client/assets/paperclip-BjcuP_Hx.js +1 -0
  325. package/dist/client/assets/{pause-DWS7YGQ3.js → pause-C2XTlkjs.js} +1 -1
  326. package/dist/client/assets/{persistent-state-xsuk6Kc-.js → persistent-state-KRk_yb0q.js} +1 -1
  327. package/dist/client/assets/{pin-DWlD1BOF.js → pin-C2mFOV1l.js} +1 -1
  328. package/dist/client/assets/{play-D_Pggug4.js → play-FT6K3It1.js} +1 -1
  329. package/dist/client/assets/{plus-D_wLGJGT.js → plus-DFDDeGKu.js} +1 -1
  330. package/dist/client/assets/profile-DTmzN16I.js +1 -0
  331. package/dist/client/assets/{projects-inbox-DvbqJO3q.js → projects-inbox-C0FUCv_p.js} +1 -1
  332. package/dist/client/assets/projects-inbox-ColX6lpx.css +1 -0
  333. package/dist/client/assets/provider-Dojd8quC.js +1 -0
  334. package/dist/client/assets/{proxy-DOG46ja4.js → proxy-AJsmwA6h.js} +1 -1
  335. package/dist/client/assets/{radio-C_jtwbFP.js → radio-DRoOZsws.js} +1 -1
  336. package/dist/client/assets/{refresh-cw-Da9DDLk2.js → refresh-cw-BmVr7sCD.js} +1 -1
  337. package/dist/client/assets/resolve-panes-pbY1fCWi.js +1 -0
  338. package/dist/client/assets/resolve-sidebar-context-YWkZTq1t.js +1 -0
  339. package/dist/client/assets/right-49kO-6nD.js +1 -0
  340. package/dist/client/assets/right-APtItA8A.js +1 -0
  341. package/dist/client/assets/right-BJwhPqtn.js +1 -0
  342. package/dist/client/assets/right-BPqrf4ek.js +1 -0
  343. package/dist/client/assets/right-D7djOy6K.js +1 -0
  344. package/dist/client/assets/right-DKOUCRob.js +1 -0
  345. package/dist/client/assets/right-DMNrVzg7.js +1 -0
  346. package/dist/client/assets/{right-BLJsc2-p.js → right-DWPVB-nK.js} +1 -1
  347. package/dist/client/assets/right-DppeMCy4.js +1 -0
  348. package/dist/client/assets/right-GAL5Mw1v.js +1 -0
  349. package/dist/client/assets/{rocket-DyrYDo8V.js → rocket-CGl4RTV7.js} +1 -1
  350. package/dist/client/assets/router-DCtl8wqb.js +1 -0
  351. package/dist/client/assets/runtime-picker-DXu2bOTh.js +1 -0
  352. package/dist/client/assets/{scope-views-B7PZGlhY.js → scope-views-RUWwCVAr.js} +1 -1
  353. package/dist/client/assets/scout-voice-CZx60X6E.js +1 -0
  354. package/dist/client/assets/{scoutbot-markdown-Bz0Vbto2.js → scoutbot-markdown-BKEBSbG0.js} +1 -1
  355. package/dist/client/assets/{scroll-text-DwC8r2g6.js → scroll-text-DNjxhyO2.js} +1 -1
  356. package/dist/client/assets/{search-C4VlW_0l.js → search-DT42oyRW.js} +1 -1
  357. package/dist/client/assets/secondaryNavConfig-CS1svh6n.js +1 -0
  358. package/dist/client/assets/secondaryNavConfig-D15P1Y9k.css +1 -0
  359. package/dist/client/assets/{selection-bridge-B5jqyMR9.js → selection-bridge-x3wFUjxj.js} +1 -1
  360. package/dist/client/assets/{send-horizontal-pOtGI7FM.js → send-horizontal-CH0-fbZE.js} +1 -1
  361. package/dist/client/assets/{send-to-agent-session-BZGq_ycy.js → send-to-agent-session-DoKCDBJ4.js} +1 -1
  362. package/dist/client/assets/{server-ms1yxUYJ.js → server-QfsgMLk1.js} +1 -1
  363. package/dist/client/assets/{session-catalog-s-T_w41t.js → session-catalog-CvSdPHPe.js} +1 -1
  364. package/dist/client/assets/session-recap-lanes-D-eVJnpY.js +1 -0
  365. package/dist/client/assets/session-recap-queue-41l2XVkI.js +1 -0
  366. package/dist/client/assets/{session-table-CDx_16xf.js → session-table-L-pns6Zl.js} +1 -1
  367. package/dist/client/assets/{sessions-view-DzYGsKWS.js → sessions-view-Dc-QAa7O.js} +1 -1
  368. package/dist/client/assets/{settings-TJIkkZ0P.js → settings-BVh7kldq.js} +1 -1
  369. package/dist/client/assets/{shared-work-artifacts-4IIQXQfc.js → shared-work-artifacts-DfNl9KTo.js} +1 -1
  370. package/dist/client/assets/{sliders-horizontal-CHf3ntw0.js → sliders-horizontal-782VC_yy.js} +1 -1
  371. package/dist/client/assets/{sparkles-BbOFw3d0.js → sparkles-BjHq_DNK.js} +1 -1
  372. package/dist/client/assets/{sse-v5QLsOHV.js → sse-BCPRocpq.js} +1 -1
  373. package/dist/client/assets/system-surfaces-redesign-q2BmCB7e.css +1 -0
  374. package/dist/client/assets/{tail-events-DQ46QBW1.js → tail-events-d0yAYxR0.js} +1 -1
  375. package/dist/client/assets/{terminal-96JWDYDL.js → terminal-hQKQygcf.js} +1 -1
  376. package/dist/client/assets/{terminal-relay-Bfx8pg80.js → terminal-relay-Bxs1hp-j.js} +1 -1
  377. package/dist/client/assets/{terminal-sessions-Ch9aYlgi.js → terminal-sessions-3RfJpen8.js} +1 -1
  378. package/dist/client/assets/{terminal-takeover-BlpxpvSp.js → terminal-takeover-Ay5C2c-M.js} +1 -1
  379. package/dist/client/assets/theme-vars-DNK0nn3k.js +1 -0
  380. package/dist/client/assets/triangle-alert-CHoRGdVO.js +1 -0
  381. package/dist/client/assets/use-beside-DoRC1nt0.js +1 -0
  382. package/dist/client/assets/{use-conversation-list-A_YUf8lo.js → use-conversation-list-CY4JciOV.js} +1 -1
  383. package/dist/client/assets/{use-fleet-active-asks-DFs_u-vM.js → use-fleet-active-asks-CymmXWH4.js} +1 -1
  384. package/dist/client/assets/{use-mesh-node-state-Ck9CYplv.js → use-mesh-node-state-BvaqtODo.js} +1 -1
  385. package/dist/client/assets/{use-mesh-ops-items-Be1WmwCg.js → use-mesh-ops-items-BSYaqH_0.js} +1 -1
  386. package/dist/client/assets/{use-reduced-motion-D7n3vK8t.js → use-reduced-motion-3gMYZNIp.js} +1 -1
  387. package/dist/client/assets/use-scout-dev-flags-DS_pYYQd.js +1 -0
  388. package/dist/client/assets/{useAgentHoverCard-Dr-OjNFF.js → useAgentHoverCard-BANmpjMh.js} +1 -1
  389. package/dist/client/assets/useContentSecondaryNav-C6OBu-3_.js +1 -0
  390. package/dist/client/assets/{useEmbedHeadline-BL8wQawZ.js → useEmbedHeadline-D6pJRxUg.js} +1 -1
  391. package/dist/client/assets/usePersistentState-B8lP7TRb.js +1 -0
  392. package/dist/client/assets/{usePierreRuntime-DJkRHMoe.js → usePierreRuntime-BAQdiN0L.js} +1 -1
  393. package/dist/client/assets/useSidebarCollapse-OL_8J5cL.js +1 -0
  394. package/dist/client/assets/users-BUjx36gx.js +1 -0
  395. package/dist/client/assets/voice-paths-CJUuBPh3.css +1 -0
  396. package/dist/client/assets/voice-turn-DftA0iIb.css +1 -0
  397. package/dist/client/assets/voice-turn-ledger-BMZxlSjg.js +1 -0
  398. package/dist/client/assets/{wrench-BsMTSeji.js → wrench-DR0i5BU7.js} +1 -1
  399. package/dist/client/assets/{x-DI1ktCYb.js → x-DAehov0E.js} +1 -1
  400. package/dist/client/assets/{xterm-B1YBE4Gq.js → xterm-BXQiLVnI.js} +1 -1
  401. package/dist/client/assets/{zap-sKPkh4sQ.js → zap-CEjZNZbI.js} +1 -1
  402. package/dist/client/crew/sheets/eye-plate-v1/look-down-left.webp +0 -0
  403. package/dist/client/crew/sheets/eye-plate-v1/look-down-right.webp +0 -0
  404. package/dist/client/crew/sheets/eye-plate-v1/look-down.webp +0 -0
  405. package/dist/client/crew/sheets/eye-plate-v1/look-up-left.webp +0 -0
  406. package/dist/client/crew/sheets/eye-plate-v1/look-up-right.webp +0 -0
  407. package/dist/client/crew/sheets/eye-plate-v1/look-up.webp +0 -0
  408. package/dist/client/crew/sheets/sprout/blink-half.webp +0 -0
  409. package/dist/client/crew/sheets/sprout/blink-shut.webp +0 -0
  410. package/dist/client/crew/sheets/sprout/look-down-left.webp +0 -0
  411. package/dist/client/crew/sheets/sprout/look-down-right.webp +0 -0
  412. package/dist/client/crew/sheets/sprout/look-down.webp +0 -0
  413. package/dist/client/crew/sheets/sprout/look-left.webp +0 -0
  414. package/dist/client/crew/sheets/sprout/look-right.webp +0 -0
  415. package/dist/client/crew/sheets/sprout/look-up-left.webp +0 -0
  416. package/dist/client/crew/sheets/sprout/look-up-right.webp +0 -0
  417. package/dist/client/crew/sheets/sprout/look-up.webp +0 -0
  418. package/dist/client/index.html +15 -3
  419. package/dist/drizzle/0019_session_actor_targets.sql +227 -0
  420. package/dist/drizzle/0020_message_reactions.sql +11 -0
  421. package/dist/drizzle/README.md +19 -0
  422. package/dist/drizzle/meta/_journal.json +14 -0
  423. package/dist/highlights-eq9cgrbb.scm +604 -0
  424. package/dist/highlights-ghv9g403.scm +205 -0
  425. package/dist/highlights-hk7bwhj4.scm +284 -0
  426. package/dist/highlights-r812a2qc.scm +150 -0
  427. package/dist/highlights-x6tmsnaa.scm +115 -0
  428. package/dist/injections-73j83es3.scm +27 -0
  429. package/dist/main.mjs +1721 -837
  430. package/dist/node/main.mjs +264 -39
  431. package/dist/pairing-runtime-controller.mjs +1090 -570
  432. package/dist/runtime/base-daemon.mjs +14272 -61
  433. package/dist/runtime/broker-daemon.mjs +16999 -1243
  434. package/dist/runtime/broker-process-manager.mjs +101 -6
  435. package/dist/runtime/mesh-discover.mjs +101 -6
  436. package/dist/scout-control-plane-web.mjs +27057 -6178
  437. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  438. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  439. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  440. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  441. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
  442. package/dist/update-helper.mjs +294 -56
  443. package/package.json +2 -2
  444. package/dist/client/assets/ActivityScreen-DCALiEXY.js +0 -1
  445. package/dist/client/assets/AgentAdventures-NwTKeF0F.js +0 -1
  446. package/dist/client/assets/AgentAvatar-BIwg54Tj.js +0 -1
  447. package/dist/client/assets/AgentConfigurationScreen-B2Hw0ce1.js +0 -1
  448. package/dist/client/assets/AgentDefinitionsWorkspace-CwZJ833X.js +0 -1
  449. package/dist/client/assets/AgentFloorView-l2wNKFob.js +0 -1
  450. package/dist/client/assets/AgentInfoScreen-ClZM1wQb.js +0 -1
  451. package/dist/client/assets/AgentLanesEmbedScreen-DqHwqY0X.js +0 -1
  452. package/dist/client/assets/AgentLanesView-aAyC7lHf.js +0 -2
  453. package/dist/client/assets/AgentMasterScreen-By6DN0jF.js +0 -1
  454. package/dist/client/assets/AgentSessions-Cox2zS-e.js +0 -6
  455. package/dist/client/assets/AgentsConsole-Dq0S_hRA.js +0 -1
  456. package/dist/client/assets/AgentsScreen-Bi9Lx47B.js +0 -1
  457. package/dist/client/assets/AgentsSubnav-BOobgtGE.js +0 -1
  458. package/dist/client/assets/BriefingDetailScreen-sprFl4Nk.js +0 -1
  459. package/dist/client/assets/BrokerScreen-CejzhRsB.js +0 -8
  460. package/dist/client/assets/ConversationComposer-B7RU6LKd.js +0 -1
  461. package/dist/client/assets/ConversationFeedRows-DVqnZQH0.js +0 -1
  462. package/dist/client/assets/ConversationHeader-CCSU8uo_.js +0 -1
  463. package/dist/client/assets/ConversationScreen-Brfas2y0.css +0 -1
  464. package/dist/client/assets/ConversationScreen-tTP6B_F-.js +0 -2
  465. package/dist/client/assets/ConversationStatus-CK-YfLpi.js +0 -1
  466. package/dist/client/assets/CrewAvatar-CJhuqTsJ.js +0 -1
  467. package/dist/client/assets/CrewWorkspaces-4O8dgRUD.js +0 -1
  468. package/dist/client/assets/CrewWorkspaces-Diq11KDq.css +0 -1
  469. package/dist/client/assets/FlightObserveScreen-DDXfNbsw.js +0 -1
  470. package/dist/client/assets/FloorResourcesSheet-Djrgd_ZU.js +0 -1
  471. package/dist/client/assets/FloorTacticalHUD-Bngao6sn.js +0 -1
  472. package/dist/client/assets/HarnessMark-Bt47OeHy.js +0 -1
  473. package/dist/client/assets/HarnessesScreen-M84sFjWY.js +0 -1
  474. package/dist/client/assets/KnowledgeSearchScreen-WC0WhFio.js +0 -1
  475. package/dist/client/assets/LaneTraceDetailSheet-mAhj7MJi.js +0 -1
  476. package/dist/client/assets/MeshScreen-DlfiMlaR.js +0 -1
  477. package/dist/client/assets/MessagesScreen-BZ7yaGJx.js +0 -1
  478. package/dist/client/assets/MissionControlView-DpGhxG4a.js +0 -1
  479. package/dist/client/assets/MissionLeftAgentRow-DhhRRim0.js +0 -1
  480. package/dist/client/assets/NativeAreaScreen-BQyHHRAM.js +0 -1
  481. package/dist/client/assets/NativeAreaScreen-Ditv-TYW.js +0 -1
  482. package/dist/client/assets/NativeAreaScreen-Dq3uPSEI.js +0 -1
  483. package/dist/client/assets/NewChatComposer-JjLbm3W2.js +0 -19
  484. package/dist/client/assets/ObserveEmbedScreen-BPiSXXvm.js +0 -2
  485. package/dist/client/assets/OpenScoutAppShell-CzKbjwCA.js +0 -22
  486. package/dist/client/assets/OpsAgentsView-CZbtkcQH.js +0 -1
  487. package/dist/client/assets/OpsScreen-DJq-aBmX.js +0 -1
  488. package/dist/client/assets/OpsSubnav-9sURjajO.js +0 -1
  489. package/dist/client/assets/ProjectAgentProfile-q_1tMJIL.js +0 -1
  490. package/dist/client/assets/ProjectAgentProfileHero-DyEFyTFs.js +0 -1
  491. package/dist/client/assets/ProjectsInbox-Bs8I__my.js +0 -2
  492. package/dist/client/assets/ProjectsRail-Deb38OJ1.js +0 -1
  493. package/dist/client/assets/ProjectsScreen-CgLiYiss.js +0 -1
  494. package/dist/client/assets/ProjectsThreadAside-C0Yw3yIL.js +0 -1
  495. package/dist/client/assets/Provider-5Hotn7NQ.js +0 -5
  496. package/dist/client/assets/RawSessionsTable-DIhmlvk-.js +0 -1
  497. package/dist/client/assets/RealtimeVoiceScreen-3oU7b7V5.js +0 -1
  498. package/dist/client/assets/RepoDiffViewerLazy-BQ6ZCrsq.js +0 -2
  499. package/dist/client/assets/SessionObserve-DaqDhqDI.js +0 -12
  500. package/dist/client/assets/SessionObserveEvidence-Drv-D8Oh.js +0 -1
  501. package/dist/client/assets/SessionRefScreen-BOQ1_ydg.js +0 -1
  502. package/dist/client/assets/SessionsScreen-R8QKvoey.js +0 -1
  503. package/dist/client/assets/SettingsDrawer-BDapR4E9.js +0 -3
  504. package/dist/client/assets/SettingsScreen-DirtO7Z0.js +0 -1
  505. package/dist/client/assets/SharedWorkFloor-BCmdeb3Q.css +0 -1
  506. package/dist/client/assets/SharedWorkFloor-yPWFLZwX.js +0 -2
  507. package/dist/client/assets/Terminal-D-DsQlmV.js +0 -4
  508. package/dist/client/assets/TerminalEmbedScreen-9Gmln759.js +0 -1
  509. package/dist/client/assets/WorkDetailScreen-CwtRCm_-.js +0 -5
  510. package/dist/client/assets/WorldActorTalk-uIH2jGqA.js +0 -1
  511. package/dist/client/assets/WorldMinimap-Blqg0d5r.js +0 -1
  512. package/dist/client/assets/agent-autocomplete-C7xwIcwd.css +0 -1
  513. package/dist/client/assets/agent-autocomplete-CeHQpuG9.js +0 -10
  514. package/dist/client/assets/agents-screen-BMu6PpRY.css +0 -1
  515. package/dist/client/assets/arrow-down-WoVlkUmg.js +0 -1
  516. package/dist/client/assets/chunk-JTPDIGGW-ZC-98AHT.js +0 -46
  517. package/dist/client/assets/chunk-T65CQEWV-CSVUz2rY.js +0 -1
  518. package/dist/client/assets/chunk-YOZR3KYS-B59jqwO0.js +0 -2
  519. package/dist/client/assets/content-B5Q4pb9R.js +0 -1
  520. package/dist/client/assets/content-BK1IfOZs.js +0 -1
  521. package/dist/client/assets/content-BeEsWLEm.js +0 -1
  522. package/dist/client/assets/content-BkOwEknW.js +0 -1
  523. package/dist/client/assets/content-C32W5kAG.js +0 -1
  524. package/dist/client/assets/content-CoqyLs9v.js +0 -1
  525. package/dist/client/assets/content-CwpdIS5b.js +0 -1
  526. package/dist/client/assets/content-DS2OkJ3Q.js +0 -1
  527. package/dist/client/assets/content-DXKaPDfn.js +0 -1
  528. package/dist/client/assets/content-DZt5-dkI.js +0 -1
  529. package/dist/client/assets/content-DbQJH8L1.js +0 -1
  530. package/dist/client/assets/content-DetoiaHq.js +0 -1
  531. package/dist/client/assets/content-Dhu3wL7J.js +0 -1
  532. package/dist/client/assets/content-Dpv34iZu.js +0 -1
  533. package/dist/client/assets/content-TtQJb61D.js +0 -1
  534. package/dist/client/assets/content-ymNb2R7g.js +0 -1
  535. package/dist/client/assets/conversation-model-BGFHoxQ0.js +0 -1
  536. package/dist/client/assets/conversation-motion-features-9x8uZpwh.js +0 -1
  537. package/dist/client/assets/conversations-Cbg9h_Af.js +0 -1
  538. package/dist/client/assets/ctx-panel-F05jXK4Q.css +0 -1
  539. package/dist/client/assets/discover-C8IOY7_K.js +0 -2
  540. package/dist/client/assets/embed-entry-CG3CfCbm.js +0 -2
  541. package/dist/client/assets/home-moving-signal-B7m-ngb2.js +0 -1
  542. package/dist/client/assets/home-now-card-DduXkHRR.js +0 -1
  543. package/dist/client/assets/hooks-C6VyQTQe.js +0 -2
  544. package/dist/client/assets/index-C5cX8dkl.js +0 -1
  545. package/dist/client/assets/index-C8uS5szO.js +0 -10
  546. package/dist/client/assets/index-Ck1__1yL.css +0 -1
  547. package/dist/client/assets/index-ClOOrVG1.js +0 -1
  548. package/dist/client/assets/index-Crtgfc9I.js +0 -1
  549. package/dist/client/assets/lane-ask-display-B6iCAVcd.js +0 -18
  550. package/dist/client/assets/left-B-_z_nqj.js +0 -2
  551. package/dist/client/assets/left-B1LY7rJc.js +0 -1
  552. package/dist/client/assets/left-C6bdjWcG.js +0 -2
  553. package/dist/client/assets/left-CF4iuqlz.js +0 -1
  554. package/dist/client/assets/left-DLtNyZl1.js +0 -1
  555. package/dist/client/assets/left-Fpxoq-VY.js +0 -1
  556. package/dist/client/assets/left-N2wXfTlp.js +0 -1
  557. package/dist/client/assets/left-advisor-CeIjCKbd.js +0 -1
  558. package/dist/client/assets/left-agents-upjHVlOj.js +0 -1
  559. package/dist/client/assets/left-default-08gmdCtb.js +0 -1
  560. package/dist/client/assets/left-lanes-Cvsp73Hw.js +0 -1
  561. package/dist/client/assets/left-mission-W1LLaz74.js +0 -1
  562. package/dist/client/assets/library-DLKBVUJ6.js +0 -1
  563. package/dist/client/assets/message-markup-DgFSyb3f.js +0 -15
  564. package/dist/client/assets/mission-control-model-C30vU1Fe.js +0 -1
  565. package/dist/client/assets/profile-C3KgiZvc.js +0 -1
  566. package/dist/client/assets/projects-inbox-BIW7nv-H.css +0 -1
  567. package/dist/client/assets/resolve-panes-DuowGRTk.js +0 -1
  568. package/dist/client/assets/resolve-sidebar-context-BkTbqteq.js +0 -1
  569. package/dist/client/assets/right-B9OUA6Ho.js +0 -1
  570. package/dist/client/assets/right-BDQnjetX.js +0 -1
  571. package/dist/client/assets/right-BUbKHmRH.js +0 -1
  572. package/dist/client/assets/right-Ci2IcD4s.js +0 -1
  573. package/dist/client/assets/right-CmCce3e5.js +0 -1
  574. package/dist/client/assets/right-D7w0zM5a.js +0 -1
  575. package/dist/client/assets/right-DIoON_bv.js +0 -1
  576. package/dist/client/assets/right-E0Jr3VN5.js +0 -1
  577. package/dist/client/assets/right-lCdAk9dW.js +0 -1
  578. package/dist/client/assets/router-BKiMcYa7.js +0 -1
  579. package/dist/client/assets/runtime-picker-DdsttHHc.js +0 -1
  580. package/dist/client/assets/scout-voice-DOQ_B77g.js +0 -1
  581. package/dist/client/assets/secondaryNavConfig-DAXIFtVd.js +0 -1
  582. package/dist/client/assets/secondaryNavConfig-xssF_ubT.css +0 -1
  583. package/dist/client/assets/system-surfaces-redesign-DKFg4GB5.css +0 -1
  584. package/dist/client/assets/use-beside-Df-F2Uvg.js +0 -1
  585. package/dist/client/assets/use-scout-dev-flags-0TXfQcG0.js +0 -1
  586. package/dist/client/assets/useContentSecondaryNav-CGvMOVGY.js +0 -1
  587. package/dist/drizzle/meta/0000_snapshot.json +0 -4575
  588. package/dist/drizzle/meta/0001_snapshot.json +0 -4624
  589. package/dist/drizzle/meta/0002_snapshot.json +0 -4631
  590. package/dist/drizzle/meta/0003_snapshot.json +0 -4952
  591. package/dist/drizzle/meta/0004_snapshot.json +0 -5235
  592. package/dist/drizzle/meta/0005_snapshot.json +0 -5599
  593. package/dist/drizzle/meta/0006_snapshot.json +0 -5606
  594. package/dist/drizzle/meta/0007_snapshot.json +0 -5767
  595. package/dist/drizzle/meta/0008_snapshot.json +0 -5774
  596. package/dist/drizzle/meta/0009_snapshot.json +0 -6262
  597. package/dist/drizzle/meta/0010_snapshot.json +0 -6286
  598. package/dist/drizzle/meta/0011_snapshot.json +0 -6337
  599. package/dist/drizzle/meta/0012_snapshot.json +0 -6458
  600. package/dist/drizzle/meta/0013_snapshot.json +0 -6465
  601. package/dist/drizzle/meta/0014_snapshot.json +0 -6503
  602. package/dist/drizzle/meta/0015_snapshot.json +0 -6596
  603. package/dist/drizzle/meta/0016_snapshot.json +0 -6611
  604. package/dist/drizzle/meta/0017_snapshot.json +0 -6785
  605. package/dist/drizzle/meta/0018_snapshot.json +0 -6804
@@ -2069,6 +2069,7 @@ var AGENT_HARNESSES = [
2069
2069
  "flue",
2070
2070
  "cursor",
2071
2071
  "opencode",
2072
+ "devin",
2072
2073
  "native",
2073
2074
  "worker",
2074
2075
  "bridge",
@@ -2579,7 +2580,8 @@ var SCOUT_LAUNCHABLE_HARNESSES = [
2579
2580
  "flue",
2580
2581
  "cursor",
2581
2582
  "opencode",
2582
- "pi"
2583
+ "pi",
2584
+ "devin"
2583
2585
  ];
2584
2586
 
2585
2587
  // ../protocol/src/scout-composer.ts
@@ -2710,8 +2712,11 @@ var scoutBrokerPaths = {
2710
2712
  machines: "/v1/machines",
2711
2713
  machinesScan: "/v1/machines/scan",
2712
2714
  messages: "/v1/messages",
2715
+ messageReactions: "/v1/message-reactions",
2716
+ messageReactionsRemove: "/v1/message-reactions/remove",
2713
2717
  brokerMessages: "/v1/broker/messages",
2714
2718
  eventsStream: "/v1/events/stream",
2719
+ commands: "/v1/commands",
2715
2720
  actors: "/v1/actors",
2716
2721
  agents: "/v1/agents",
2717
2722
  endpoints: "/v1/endpoints",
@@ -3184,6 +3189,13 @@ var CREDENTIAL_DOMAINS = {
3184
3189
  ]
3185
3190
  },
3186
3191
  groq: { id: "groq", label: "Groq", env: [envCredential("GROQ_API_KEY")] },
3192
+ devin: {
3193
+ id: "devin",
3194
+ label: "Cognition / Devin",
3195
+ env: [
3196
+ envCredential("WINDSURF_API_KEY", { billing: "subscription" })
3197
+ ]
3198
+ },
3187
3199
  cerebras: { id: "cerebras", label: "Cerebras", env: [envCredential("CEREBRAS_API_KEY")] },
3188
3200
  mistral: { id: "mistral", label: "Mistral", env: [envCredential("MISTRAL_API_KEY")] },
3189
3201
  zai: { id: "zai", label: "Z.ai", env: [envCredential("ZAI_API_KEY")] },
@@ -3267,6 +3279,22 @@ var HARNESS_AUTH_MODELS = {
3267
3279
  ],
3268
3280
  login: { command: "grok login", interactive: true },
3269
3281
  notReadyMessage: "Grok is installed but not authenticated yet."
3282
+ },
3283
+ devin: {
3284
+ harness: "devin",
3285
+ mode: "hybrid",
3286
+ domains: ["devin"],
3287
+ credentials: [
3288
+ {
3289
+ kind: "file",
3290
+ path: "~/.local/share/devin/credentials.toml",
3291
+ portable: false,
3292
+ fileType: "file"
3293
+ },
3294
+ ...domainEnv("devin")
3295
+ ],
3296
+ login: { command: "devin auth login", interactive: true },
3297
+ notReadyMessage: "Devin is installed but still needs devin auth login or WINDSURF_API_KEY."
3270
3298
  }
3271
3299
  };
3272
3300
  HARNESS_AUTH_MODELS["grok-acp"] = {
@@ -3612,6 +3640,39 @@ var BUILT_IN_HARNESS_CATALOG = [
3612
3640
  transport: "acp_stdio"
3613
3641
  }
3614
3642
  },
3643
+ {
3644
+ name: "devin",
3645
+ harness: "devin",
3646
+ label: "Devin",
3647
+ description: "Cognition's Devin CLI coding agent over ACP",
3648
+ homepage: "https://docs.devin.ai/cli",
3649
+ tags: ["coding", "cli", "devin", "cognition", "acp"],
3650
+ featured: true,
3651
+ order: 4,
3652
+ support: {
3653
+ ...DEFAULT_SUPPORT,
3654
+ workspace: true,
3655
+ collaboration: true,
3656
+ files: true
3657
+ },
3658
+ install: {
3659
+ binary: "devin",
3660
+ requires: ["curl"],
3661
+ macos: "brew install --cask devin-cli",
3662
+ linux: "curl -fsSL https://cli.devin.ai/install.sh | bash",
3663
+ windows: "irm https://cli.devin.ai/install.ps1 | iex",
3664
+ verify: "devin --version >/dev/null 2>&1"
3665
+ },
3666
+ readiness: readinessFromAuthModel("devin"),
3667
+ sessionDefaults: {
3668
+ defaultTransport: "devin_acp"
3669
+ },
3670
+ capabilities: ["chat", "invoke", "deliver", "review", "execute"],
3671
+ metadata: {
3672
+ adapterType: "devin-acp",
3673
+ transport: "acp_stdio"
3674
+ }
3675
+ },
3615
3676
  {
3616
3677
  name: "flue",
3617
3678
  harness: "flue",
@@ -5579,11 +5640,104 @@ import { basename as basename3, dirname as dirname5, join as join7, resolve as r
5579
5640
  import { fileURLToPath as fileURLToPath2 } from "url";
5580
5641
 
5581
5642
  // ../runtime/src/schema-version.ts
5582
- var CONTROL_PLANE_SCHEMA_VERSION = 17;
5643
+ var CONTROL_PLANE_SCHEMA_VERSION = 18;
5583
5644
 
5584
5645
  // ../runtime/src/sqlite-adapter.ts
5585
5646
  import { createRequire } from "module";
5586
5647
 
5648
+ // ../runtime/src/sqlite-observation.ts
5649
+ import { createHash as createHash2 } from "crypto";
5650
+ function observeSqliteDatabase(database, options) {
5651
+ const configured = options.thresholdMs ?? Number(process.env.OPENSCOUT_SLOW_DB_MS ?? 100);
5652
+ const threshold = Number.isFinite(configured) && configured >= 0 ? configured : 100;
5653
+ if (threshold === 0)
5654
+ return database;
5655
+ const now = options.now ?? (() => performance.now());
5656
+ const emit = options.emit ?? ((event) => console.warn("[scout-db]", JSON.stringify(event)));
5657
+ const statements = new WeakMap;
5658
+ let windowStart = -Infinity;
5659
+ let emitted = 0;
5660
+ let suppressed = 0;
5661
+ function timed(operation, sql, call) {
5662
+ const start = now();
5663
+ let outcome = "error";
5664
+ try {
5665
+ const result = call();
5666
+ outcome = "ok";
5667
+ return result;
5668
+ } finally {
5669
+ try {
5670
+ const end = now();
5671
+ const duration = end - start;
5672
+ if (duration >= threshold) {
5673
+ if (end - windowStart >= 60000) {
5674
+ windowStart = end;
5675
+ emitted = 0;
5676
+ }
5677
+ if (emitted >= 10) {
5678
+ suppressed += 1;
5679
+ } else {
5680
+ emitted += 1;
5681
+ const caller = (new Error().stack ?? "").split(`
5682
+ `).filter((line) => !/sqlite-observation\.(?:ts|js):/.test(line)).map((line) => line.match(/(?:packages|apps)\/[\w./-]+:\d+:\d+/)?.[0]).filter((line) => Boolean(line)).slice(0, 4);
5683
+ emit({
5684
+ event: "slow_sqlite",
5685
+ database: options.database,
5686
+ pid: process.pid,
5687
+ operation,
5688
+ queryId: createHash2("sha256").update(sql).digest("hex").slice(0, 16),
5689
+ durationMs: Math.round(duration * 100) / 100,
5690
+ outcome,
5691
+ suppressed,
5692
+ caller
5693
+ });
5694
+ suppressed = 0;
5695
+ }
5696
+ }
5697
+ } catch {}
5698
+ }
5699
+ }
5700
+ function statementProxy(statement, sql) {
5701
+ const existing = statements.get(statement);
5702
+ if (existing)
5703
+ return existing;
5704
+ const proxy = bindProxy(statement, (key, method, args) => {
5705
+ if (["all", "get", "run", "values"].includes(key)) {
5706
+ return timed(key, sql, () => Reflect.apply(method, statement, args));
5707
+ }
5708
+ return Reflect.apply(method, statement, args);
5709
+ });
5710
+ statements.set(statement, proxy);
5711
+ return proxy;
5712
+ }
5713
+ return bindProxy(database, (key, method, args) => {
5714
+ if (["query", "prepare"].includes(key) && typeof args[0] === "string") {
5715
+ const sql = args[0];
5716
+ const statement = timed(`${key}.prepare`, sql, () => Reflect.apply(method, database, args));
5717
+ return statementProxy(statement, sql);
5718
+ }
5719
+ if (["exec", "run"].includes(key) && typeof args[0] === "string") {
5720
+ return timed(key, args[0], () => Reflect.apply(method, database, args));
5721
+ }
5722
+ return Reflect.apply(method, database, args);
5723
+ });
5724
+ }
5725
+ function bindProxy(target, invoke) {
5726
+ const methods = new Map;
5727
+ return new Proxy(target, {
5728
+ get(object, key) {
5729
+ const value = Reflect.get(object, key, object);
5730
+ if (typeof value !== "function" || key === "constructor")
5731
+ return value;
5732
+ const cached = methods.get(key);
5733
+ if (cached?.original === value)
5734
+ return cached.wrapped;
5735
+ const wrapped = (...args) => invoke(String(key), value, args);
5736
+ methods.set(key, { original: value, wrapped });
5737
+ return wrapped;
5738
+ }
5739
+ });
5740
+ }
5587
5741
  // ../runtime/src/runtime-adapters.ts
5588
5742
  function detectRuntimeHost(globalScope = globalThis) {
5589
5743
  return typeof globalScope.Bun === "undefined" ? "node" : "bun";
@@ -5649,13 +5803,13 @@ function openRuntimeSqliteDatabase(path, options) {
5649
5803
  const adapter = controlPlaneSqliteAdapterKind();
5650
5804
  if (adapter === "bun-sqlite") {
5651
5805
  const { Database } = require2("bun:sqlite");
5652
- return new Database(path, options);
5806
+ return observeSqliteDatabase(new Database(path, options), { database: "runtime" });
5653
5807
  }
5654
5808
  const { DatabaseSync } = require2("node:sqlite");
5655
- return new NodeSqliteDatabaseAdapter(new DatabaseSync(path, {
5809
+ return observeSqliteDatabase(new NodeSqliteDatabaseAdapter(new DatabaseSync(path, {
5656
5810
  open: true,
5657
5811
  readOnly: options?.readonly === true
5658
- }));
5812
+ })), { database: "runtime" });
5659
5813
  }
5660
5814
  function prepareNodeSqliteSql(sql) {
5661
5815
  const numberedParamIndexes = [];
@@ -5961,7 +6115,9 @@ var OPENSCOUT_PORTS = {
5961
6115
  pairingBridge: 43130,
5962
6116
  pairingRelay: 43131,
5963
6117
  pairingFileServer: 43132,
5964
- studio: 43140
6118
+ studio: 43140,
6119
+ jetstream: 43150,
6120
+ jetstreamMonitor: 43151
5965
6121
  };
5966
6122
  var DEFAULT_LOCAL_CONFIG = {
5967
6123
  version: LOCAL_CONFIG_VERSION,
@@ -6000,7 +6156,7 @@ function validateLocalConfig(input) {
6000
6156
  if (typeof raw.webLocalName === "string" && raw.webLocalName.trim().length > 0) {
6001
6157
  out.webLocalName = raw.webLocalName.trim();
6002
6158
  }
6003
- if (raw.webLanScope === "full" || raw.webLanScope === "pairing") {
6159
+ if (raw.webLanScope === "full" || raw.webLanScope === "pairing" || raw.webLanScope === "chat") {
6004
6160
  out.webLanScope = raw.webLanScope;
6005
6161
  }
6006
6162
  if (raw.ports && typeof raw.ports === "object") {
@@ -13104,7 +13260,7 @@ var agentsTable = sqliteTable("agents", {
13104
13260
  ]);
13105
13261
  var agentEndpointsTable = sqliteTable("agent_endpoints", {
13106
13262
  id: text("id").primaryKey(),
13107
- agentId: text("agent_id").notNull().references(() => agentsTable.id, { onDelete: "cascade" }),
13263
+ agentId: text("agent_id").notNull().references(() => actorsTable.id, { onDelete: "cascade" }),
13108
13264
  nodeId: text("node_id").notNull().references(() => nodesTable.id, { onDelete: "restrict" }),
13109
13265
  harness: text("harness").notNull(),
13110
13266
  transport: text("transport").notNull(),
@@ -13128,7 +13284,7 @@ var agentEndpointsTable = sqliteTable("agent_endpoints", {
13128
13284
  ]);
13129
13285
  var runtimeSessionsTable = sqliteTable("runtime_sessions", {
13130
13286
  id: text("id").primaryKey(),
13131
- agentId: text("agent_id").notNull().references(() => agentsTable.id, { onDelete: "cascade" }),
13287
+ agentId: text("agent_id").notNull().references(() => actorsTable.id, { onDelete: "cascade" }),
13132
13288
  endpointId: text("endpoint_id").notNull().references(() => agentEndpointsTable.id, { onDelete: "cascade" }),
13133
13289
  nodeId: text("node_id").notNull().references(() => nodesTable.id, { onDelete: "restrict" }),
13134
13290
  harness: text("harness").notNull(),
@@ -13156,7 +13312,7 @@ var runtimeSessionAliasesTable = sqliteTable("runtime_session_aliases", {
13156
13312
  alias: text("alias").notNull(),
13157
13313
  sessionId: text("session_id").notNull().references(() => runtimeSessionsTable.id, { onDelete: "cascade" }),
13158
13314
  aliasKind: text("alias_kind").notNull(),
13159
- agentId: text("agent_id").notNull().references(() => agentsTable.id, { onDelete: "cascade" }),
13315
+ agentId: text("agent_id").notNull().references(() => actorsTable.id, { onDelete: "cascade" }),
13160
13316
  endpointId: text("endpoint_id").notNull().references(() => agentEndpointsTable.id, { onDelete: "cascade" }),
13161
13317
  nodeId: text("node_id").notNull().references(() => nodesTable.id, { onDelete: "restrict" }),
13162
13318
  harness: text("harness").notNull(),
@@ -13281,6 +13437,15 @@ var messageMentionsTable = sqliteTable("message_mentions", {
13281
13437
  }, (table) => [
13282
13438
  primaryKey({ columns: [table.messageId, table.actorId] })
13283
13439
  ]);
13440
+ var messageReactionsTable = sqliteTable("message_reactions", {
13441
+ messageId: text("message_id").notNull().references(() => messagesTable.id, { onDelete: "cascade" }),
13442
+ actorId: text("actor_id").notNull().references(() => actorsTable.id, { onDelete: "restrict" }),
13443
+ emoji: text("emoji").notNull(),
13444
+ createdAt: integer("created_at").notNull()
13445
+ }, (table) => [
13446
+ primaryKey({ columns: [table.messageId, table.actorId, table.emoji] }),
13447
+ index("idx_message_reactions_message").on(table.messageId)
13448
+ ]);
13284
13449
  var messageAttachmentsTable = sqliteTable("message_attachments", {
13285
13450
  id: text("id").primaryKey(),
13286
13451
  messageId: text("message_id").notNull().references(() => messagesTable.id, { onDelete: "cascade" }),
@@ -13402,7 +13567,7 @@ var invocationsTable = sqliteTable("invocations", {
13402
13567
  id: text("id").primaryKey(),
13403
13568
  requesterId: text("requester_id").notNull().references(() => actorsTable.id, { onDelete: "restrict" }),
13404
13569
  requesterNodeId: text("requester_node_id").notNull().references(() => nodesTable.id, { onDelete: "restrict" }),
13405
- targetAgentId: text("target_agent_id").notNull().references(() => agentsTable.id, { onDelete: "restrict" }),
13570
+ targetAgentId: text("target_agent_id").notNull().references(() => actorsTable.id, { onDelete: "restrict" }),
13406
13571
  targetNodeId: text("target_node_id").references(() => nodesTable.id, { onDelete: "set null" }),
13407
13572
  action: text("action").notNull(),
13408
13573
  task: text("task").notNull(),
@@ -13437,7 +13602,7 @@ var flightsTable = sqliteTable("flights", {
13437
13602
  id: text("id").primaryKey(),
13438
13603
  invocationId: text("invocation_id").notNull().references(() => invocationsTable.id, { onDelete: "cascade" }),
13439
13604
  requesterId: text("requester_id").notNull().references(() => actorsTable.id, { onDelete: "restrict" }),
13440
- targetAgentId: text("target_agent_id").notNull().references(() => agentsTable.id, { onDelete: "restrict" }),
13605
+ targetAgentId: text("target_agent_id").notNull().references(() => actorsTable.id, { onDelete: "restrict" }),
13441
13606
  state: text("state").notNull(),
13442
13607
  summary: text("summary"),
13443
13608
  output: text("output"),
@@ -13686,7 +13851,7 @@ var activityItemsTable = sqliteTable("activity_items", {
13686
13851
  recordId: text("record_id").references(() => collaborationRecordsTable.id, { onDelete: "cascade" }),
13687
13852
  actorId: text("actor_id").references(() => actorsTable.id, { onDelete: "set null" }),
13688
13853
  counterpartId: text("counterpart_id").references(() => actorsTable.id, { onDelete: "set null" }),
13689
- agentId: text("agent_id").references(() => agentsTable.id, { onDelete: "set null" }),
13854
+ agentId: text("agent_id").references(() => actorsTable.id, { onDelete: "set null" }),
13690
13855
  workspaceRoot: text("workspace_root"),
13691
13856
  sessionId: text("session_id"),
13692
13857
  title: text("title"),
@@ -13848,7 +14013,7 @@ var missionLogEntriesTable = sqliteTable("mission_log_entries", {
13848
14013
  var CONTROL_PLANE_RUNTIME_SESSION_SQLITE_SCHEMA = `
13849
14014
  CREATE TABLE IF NOT EXISTS runtime_sessions (
13850
14015
  id TEXT PRIMARY KEY,
13851
- agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
14016
+ agent_id TEXT NOT NULL REFERENCES actors(id) ON DELETE CASCADE,
13852
14017
  endpoint_id TEXT NOT NULL REFERENCES agent_endpoints(id) ON DELETE CASCADE,
13853
14018
  node_id TEXT NOT NULL REFERENCES nodes(id) ON DELETE RESTRICT,
13854
14019
  harness TEXT NOT NULL,
@@ -13871,7 +14036,7 @@ CREATE TABLE IF NOT EXISTS runtime_session_aliases (
13871
14036
  alias TEXT NOT NULL,
13872
14037
  session_id TEXT NOT NULL REFERENCES runtime_sessions(id) ON DELETE CASCADE,
13873
14038
  alias_kind TEXT NOT NULL,
13874
- agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
14039
+ agent_id TEXT NOT NULL REFERENCES actors(id) ON DELETE CASCADE,
13875
14040
  endpoint_id TEXT NOT NULL REFERENCES agent_endpoints(id) ON DELETE CASCADE,
13876
14041
  node_id TEXT NOT NULL REFERENCES nodes(id) ON DELETE RESTRICT,
13877
14042
  harness TEXT NOT NULL,
@@ -14067,7 +14232,7 @@ CREATE TABLE IF NOT EXISTS agents (
14067
14232
 
14068
14233
  CREATE TABLE IF NOT EXISTS agent_endpoints (
14069
14234
  id TEXT PRIMARY KEY,
14070
- agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE CASCADE,
14235
+ agent_id TEXT NOT NULL REFERENCES actors(id) ON DELETE CASCADE,
14071
14236
  node_id TEXT NOT NULL REFERENCES nodes(id) ON DELETE RESTRICT,
14072
14237
  harness TEXT NOT NULL,
14073
14238
  transport TEXT NOT NULL,
@@ -14128,6 +14293,16 @@ CREATE TABLE IF NOT EXISTS message_mentions (
14128
14293
  PRIMARY KEY (message_id, actor_id)
14129
14294
  );
14130
14295
 
14296
+ CREATE TABLE IF NOT EXISTS message_reactions (
14297
+ message_id TEXT NOT NULL REFERENCES messages(id) ON DELETE CASCADE,
14298
+ actor_id TEXT NOT NULL REFERENCES actors(id) ON DELETE RESTRICT,
14299
+ emoji TEXT NOT NULL,
14300
+ created_at INTEGER NOT NULL,
14301
+ PRIMARY KEY (message_id, actor_id, emoji)
14302
+ );
14303
+ CREATE INDEX IF NOT EXISTS idx_message_reactions_message
14304
+ ON message_reactions (message_id);
14305
+
14131
14306
  CREATE TABLE IF NOT EXISTS message_attachments (
14132
14307
  id TEXT PRIMARY KEY,
14133
14308
  message_id TEXT NOT NULL REFERENCES messages(id) ON DELETE CASCADE,
@@ -14241,7 +14416,7 @@ CREATE TABLE IF NOT EXISTS invocations (
14241
14416
  id TEXT PRIMARY KEY,
14242
14417
  requester_id TEXT NOT NULL REFERENCES actors(id) ON DELETE RESTRICT,
14243
14418
  requester_node_id TEXT NOT NULL REFERENCES nodes(id) ON DELETE RESTRICT,
14244
- target_agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE RESTRICT,
14419
+ target_agent_id TEXT NOT NULL REFERENCES actors(id) ON DELETE RESTRICT,
14245
14420
  target_node_id TEXT REFERENCES nodes(id) ON DELETE SET NULL,
14246
14421
  action TEXT NOT NULL,
14247
14422
  task TEXT NOT NULL,
@@ -14271,7 +14446,7 @@ CREATE TABLE IF NOT EXISTS flights (
14271
14446
  id TEXT PRIMARY KEY,
14272
14447
  invocation_id TEXT NOT NULL REFERENCES invocations(id) ON DELETE CASCADE,
14273
14448
  requester_id TEXT NOT NULL REFERENCES actors(id) ON DELETE RESTRICT,
14274
- target_agent_id TEXT NOT NULL REFERENCES agents(id) ON DELETE RESTRICT,
14449
+ target_agent_id TEXT NOT NULL REFERENCES actors(id) ON DELETE RESTRICT,
14275
14450
  state TEXT NOT NULL,
14276
14451
  summary TEXT,
14277
14452
  output TEXT,
@@ -14493,7 +14668,7 @@ CREATE TABLE IF NOT EXISTS activity_items (
14493
14668
  record_id TEXT REFERENCES collaboration_records(id) ON DELETE CASCADE,
14494
14669
  actor_id TEXT REFERENCES actors(id) ON DELETE SET NULL,
14495
14670
  counterpart_id TEXT REFERENCES actors(id) ON DELETE SET NULL,
14496
- agent_id TEXT REFERENCES agents(id) ON DELETE SET NULL,
14671
+ agent_id TEXT REFERENCES actors(id) ON DELETE SET NULL,
14497
14672
  workspace_root TEXT,
14498
14673
  session_id TEXT,
14499
14674
  title TEXT,
@@ -15079,6 +15254,10 @@ class InMemoryControlRuntime {
15079
15254
  return;
15080
15255
  case "stream.subscribe":
15081
15256
  return;
15257
+ case "channel.invite.create":
15258
+ case "channel.invite.revoke":
15259
+ case "channel.invite.redeem":
15260
+ throw new Error(`${command.kind} must be executed by the durable broker command service, not the in-memory registry.`);
15082
15261
  default: {
15083
15262
  const exhaustive = command;
15084
15263
  return exhaustive;
@@ -15511,7 +15690,7 @@ class InMemoryControlRuntime {
15511
15690
  }
15512
15691
  }
15513
15692
  // ../runtime/src/conversation-thread-artifact.ts
15514
- import { createHash as createHash2, randomBytes as randomBytes2 } from "crypto";
15693
+ import { createHash as createHash3, randomBytes as randomBytes2 } from "crypto";
15515
15694
  import {
15516
15695
  existsSync as existsSync13,
15517
15696
  mkdirSync as mkdirSync5,
@@ -15647,7 +15826,7 @@ function artifactBytes(artifact) {
15647
15826
  return Buffer.byteLength(encodedArtifact(artifact), "utf8");
15648
15827
  }
15649
15828
  function contentCursorForArtifact(artifact) {
15650
- return createHash2("sha256").update(JSON.stringify({
15829
+ return createHash3("sha256").update(JSON.stringify({
15651
15830
  feedId: artifact.feedId,
15652
15831
  entityKind: artifact.entityKind,
15653
15832
  conversationId: artifact.conversationId,
@@ -15657,7 +15836,7 @@ function contentCursorForArtifact(artifact) {
15657
15836
  })).digest("hex");
15658
15837
  }
15659
15838
  function nativeReadThreadArtifactPath(outputDirectory, feedId) {
15660
- const digest = createHash2("sha256").update(feedId).digest("hex");
15839
+ const digest = createHash3("sha256").update(feedId).digest("hex");
15661
15840
  return join14(outputDirectory, `${ARTIFACT_PREFIX}${digest}${ARTIFACT_SUFFIX}`);
15662
15841
  }
15663
15842
  function buildNativeReadThreadArtifact(snapshot) {
@@ -15826,7 +16005,7 @@ var QUOTA_HISTORY_BUCKET_MS = 60 * 60 * 1000;
15826
16005
  // ../runtime/src/sqlite-store.ts
15827
16006
  var RUNTIME_SESSION_RETENTION_MS = 30 * 24 * 60 * 60 * 1000;
15828
16007
  // ../runtime/src/mesh-peer-auth.ts
15829
- import { createHash as createHash3, randomBytes as randomBytes3 } from "crypto";
16008
+ import { createHash as createHash4, randomBytes as randomBytes3 } from "crypto";
15830
16009
  var PEER_AUTH_HEADERS = {
15831
16010
  peer: "x-openscout-peer",
15832
16011
  ts: "x-openscout-ts",
@@ -15861,7 +16040,7 @@ function peerRequestSigningPayload(input) {
15861
16040
  `);
15862
16041
  }
15863
16042
  function sha256Hex(body) {
15864
- return createHash3("sha256").update(body).digest("hex");
16043
+ return createHash4("sha256").update(body).digest("hex");
15865
16044
  }
15866
16045
  function signPeerRequest(identity, input) {
15867
16046
  const ts = input.ts ?? Date.now();
@@ -15926,7 +16105,7 @@ import { connect as tlsConnect } from "tls";
15926
16105
 
15927
16106
  // ../runtime/src/node-tls-identity.ts
15928
16107
  import {
15929
- createHash as createHash4,
16108
+ createHash as createHash5,
15930
16109
  createPrivateKey as createPrivateKey2,
15931
16110
  createPublicKey as createPublicKey2,
15932
16111
  generateKeyPairSync as generateKeyPairSync2,
@@ -27999,7 +28178,7 @@ AsnEcSignatureFormatter.namedCurveSize.set("P-521", 66);
27999
28178
  var TLS_CERT_VALIDITY_MS = 365 * 24 * 60 * 60 * 1000;
28000
28179
  var TLS_CERT_RENEWAL_WINDOW_MS = 30 * 24 * 60 * 60 * 1000;
28001
28180
  function tlsSpkiFingerprintFromDer(spkiDer) {
28002
- return createHash4("sha256").update(spkiDer).digest("hex");
28181
+ return createHash5("sha256").update(spkiDer).digest("hex");
28003
28182
  }
28004
28183
  function tlsSpkiFingerprintFromCertificateDer(certificateDer) {
28005
28184
  const certificate2 = new X509Certificate(asBufferSource(certificateDer));
@@ -28539,7 +28718,7 @@ var MAX_PEER_AGENT_SNAPSHOT_BYTES = 2 * 1024 * 1024;
28539
28718
  import { createRequire as createRequire3 } from "module";
28540
28719
  var require4 = createRequire3(import.meta.url);
28541
28720
  // ../runtime/src/mesh-sas.ts
28542
- import { createHash as createHash5, createHmac } from "crypto";
28721
+ import { createHash as createHash6, createHmac } from "crypto";
28543
28722
 
28544
28723
  // ../runtime/src/eff-short-wordlist.ts
28545
28724
  var EFF_SHORT_WORDLIST = [
@@ -29844,7 +30023,7 @@ var EFF_SHORT_WORDLIST = [
29844
30023
  // ../runtime/src/mesh-sas.ts
29845
30024
  var SAS_WORD_COUNT = 6;
29846
30025
  function createEnrollmentCommitment(nonce, cardSignature) {
29847
- return createHash5("sha256").update(Buffer.concat([nonce, Buffer.from(cardSignature, "utf8")])).digest("base64");
30026
+ return createHash6("sha256").update(Buffer.concat([nonce, Buffer.from(cardSignature, "utf8")])).digest("base64");
29848
30027
  }
29849
30028
  function verifyEnrollmentCommitment(commitment, nonce, cardSignature) {
29850
30029
  const expected = createEnrollmentCommitment(nonce, cardSignature);
@@ -30597,7 +30776,8 @@ var directLocalAgentTransports = new Set([
30597
30776
  "grok_acp",
30598
30777
  "kimi_acp",
30599
30778
  "cursor_acp",
30600
- "opencode_acp"
30779
+ "opencode_acp",
30780
+ "devin_acp"
30601
30781
  ]);
30602
30782
 
30603
30783
  // ../runtime/src/broker-endpoint-selection.ts
@@ -31253,6 +31433,8 @@ var ACTIVE_FLIGHT_STATES3 = new Set(["queued", "waking", "running", "waiting"]);
31253
31433
  // ../runtime/src/knowledge/store.ts
31254
31434
  var KNOWLEDGE_WARM_SPAN_STALE_MS = 6 * 60 * 60 * 1000;
31255
31435
  var STALE_INDEX_JOB_MS = 10 * 60 * 1000;
31436
+ // ../../apps/desktop/src/core/broker/sender.ts
31437
+ var TRUTHY_ENV_VALUES = new Set(["1", "true", "yes", "on"]);
31256
31438
  // ../../apps/desktop/src/core/broker/service.ts
31257
31439
  function resolveScoutBrokerUrl() {
31258
31440
  const explicit = process.env.OPENSCOUT_BROKER_URL?.trim();
@@ -31385,7 +31567,7 @@ function createScoutCommandContext(input = {}) {
31385
31567
 
31386
31568
  // ../../apps/desktop/src/cli/commands/install.ts
31387
31569
  import { spawnSync as spawnSync2 } from "child_process";
31388
- import { createHash as createHash6 } from "crypto";
31570
+ import { createHash as createHash7 } from "crypto";
31389
31571
  import {
31390
31572
  existsSync as fsExistsSync,
31391
31573
  mkdirSync as fsMkdirSync,
@@ -31396,7 +31578,7 @@ import {
31396
31578
  readFileSync as readFileSync11
31397
31579
  } from "fs";
31398
31580
  import { tmpdir as osTmpdir } from "os";
31399
- import { join as join16 } from "path";
31581
+ import { dirname as dirname11, join as join16 } from "path";
31400
31582
 
31401
31583
  // ../../apps/desktop/src/cli/errors.ts
31402
31584
  class ScoutCliError extends Error {
@@ -31409,7 +31591,8 @@ class ScoutCliError extends Error {
31409
31591
  // ../../apps/desktop/src/cli/commands/install.ts
31410
31592
  var OPENSCOUT_RELEASE_OWNER = "oscout";
31411
31593
  var OPENSCOUT_RELEASE_REPOSITORY = "scout";
31412
- var OPENSCOUT_APP_NAME = "OpenScout.app";
31594
+ var OPENSCOUT_APP_NAME = "Scout.app";
31595
+ var LEGACY_APP_BUNDLE_NAMES = ["OpenScout.app"];
31413
31596
  var OPENSCOUT_APP_BUNDLE_ID = "app.openscout.scout";
31414
31597
  var OPENSCOUT_SIGNING_TEAM_ID = "2U83JFPW66";
31415
31598
  var DEFAULT_OPENSCOUT_APP_PATH = `/Applications/${OPENSCOUT_APP_NAME}`;
@@ -31426,20 +31609,20 @@ var MENU_PROCESS_EXECUTABLE = "ScoutMenu";
31426
31609
  var HELP_FLAGS = new Set(["help", "--help", "-h"]);
31427
31610
  function renderInstallCommandHelp() {
31428
31611
  return [
31429
- "scout install \u2014 download and install the OpenScout macOS app",
31612
+ "scout install \u2014 download and install the Scout macOS app",
31430
31613
  "",
31431
31614
  "Usage:",
31432
31615
  " scout install # install or update to the latest signed release",
31433
31616
  " scout install --check # report installed vs latest, install nothing",
31434
31617
  " scout install --version <tag> # install a specific release (e.g. v0.2.70)",
31435
31618
  " scout install --force # reinstall even if already up to date",
31436
- " scout install --no-restart # do not relaunch OpenScout after installing",
31619
+ " scout install --no-restart # do not relaunch Scout after installing",
31437
31620
  " scout install --candidate <receipt.json> --dmg <file> # explicit local signed candidate",
31438
31621
  "",
31439
31622
  "Behavior:",
31440
31623
  " Downloads the signed + notarized OpenScout.dmg from the GitHub release,",
31441
31624
  " verifies the published byte size and sha256 digest when GitHub provides one,",
31442
- " then codesign and Gatekeeper-assess the DMG before mounting. OpenScout.app",
31625
+ " then codesign and Gatekeeper-assess the DMG before mounting. Scout.app",
31443
31626
  " must match the pinned bundle id and Team ID, pass codesign --deep --strict,",
31444
31627
  " and pass Gatekeeper execute after staging. A running copy of the installed",
31445
31628
  " app and any stale ScoutMenu helpers from other checkouts are stopped first;",
@@ -31538,7 +31721,7 @@ function stripLeadingV(tag) {
31538
31721
  function normalizeReleaseVersion(tag) {
31539
31722
  const version2 = stripLeadingV(tag);
31540
31723
  if (!/^\d+\.\d+\.\d+$/.test(version2)) {
31541
- throw new ScoutCliError(`unsupported OpenScout release tag: ${tag}`);
31724
+ throw new ScoutCliError(`unsupported Scout release tag: ${tag}`);
31542
31725
  }
31543
31726
  return version2;
31544
31727
  }
@@ -31634,7 +31817,7 @@ function verifyDownloadedAsset(buffer, asset) {
31634
31817
  const parsed = parseGithubAssetDigest(digest);
31635
31818
  let actual;
31636
31819
  try {
31637
- actual = createHash6(parsed.algorithm).update(buffer).digest("hex");
31820
+ actual = createHash7(parsed.algorithm).update(buffer).digest("hex");
31638
31821
  } catch {
31639
31822
  throw new ScoutCliError(`unsupported GitHub asset digest algorithm: ${parsed.algorithm}`);
31640
31823
  }
@@ -31651,7 +31834,7 @@ function findAppDmgAsset(release) {
31651
31834
  const latestAlias = assets.find((asset) => asset.name === LATEST_DMG_ALIAS);
31652
31835
  if (latestAlias)
31653
31836
  return latestAlias;
31654
- throw new ScoutCliError(`no OpenScout.app DMG found in release ${release.tag_name}. Assets: ${assets.map((asset) => asset.name).join(", ") || "(none)"}`);
31837
+ throw new ScoutCliError(`no product DMG found in release ${release.tag_name}. Assets: ${assets.map((asset) => asset.name).join(", ") || "(none)"}`);
31655
31838
  }
31656
31839
  function infoPlistPath(appPath) {
31657
31840
  return join16(appPath, "Contents", "Info.plist");
@@ -31684,7 +31867,7 @@ async function fetchRelease(version2, deps) {
31684
31867
  if ((gh.status ?? 1) === 0 && gh.stdout.trim()) {
31685
31868
  return JSON.parse(gh.stdout);
31686
31869
  }
31687
- throw new ScoutCliError(version2 ? `release "${version2}" not found on GitHub (${OPENSCOUT_RELEASE_OWNER}/${OPENSCOUT_RELEASE_REPOSITORY})` : `could not fetch the latest OpenScout release from GitHub (${OPENSCOUT_RELEASE_OWNER}/${OPENSCOUT_RELEASE_REPOSITORY})`);
31870
+ throw new ScoutCliError(version2 ? `release "${version2}" not found on GitHub (${OPENSCOUT_RELEASE_OWNER}/${OPENSCOUT_RELEASE_REPOSITORY})` : `could not fetch the latest Scout release from GitHub (${OPENSCOUT_RELEASE_OWNER}/${OPENSCOUT_RELEASE_REPOSITORY})`);
31688
31871
  }
31689
31872
  async function downloadDmg(asset, destination, context, deps) {
31690
31873
  context.stderr(`Downloading ${asset.name} (${formatBytes(asset.size)})\u2026`);
@@ -31721,11 +31904,13 @@ function unmountDmg(mountPoint, deps) {
31721
31904
  deps.run("hdiutil", ["detach", mountPoint, "-force", "-quiet"]);
31722
31905
  }
31723
31906
  function requireMountedOpenScoutApp(mountPoint, deps) {
31724
- const source = join16(mountPoint, OPENSCOUT_APP_NAME);
31725
- if (!deps.existsSync(source) || !deps.existsSync(infoPlistPath(source))) {
31726
- throw new ScoutCliError(`no ${OPENSCOUT_APP_NAME} found in the mounted DMG at ${mountPoint}`);
31907
+ for (const name2 of [OPENSCOUT_APP_NAME, ...LEGACY_APP_BUNDLE_NAMES]) {
31908
+ const source = join16(mountPoint, name2);
31909
+ if (deps.existsSync(source) && deps.existsSync(infoPlistPath(source)))
31910
+ return source;
31727
31911
  }
31728
- return source;
31912
+ const names2 = [OPENSCOUT_APP_NAME, ...LEGACY_APP_BUNDLE_NAMES].join(" or ");
31913
+ throw new ScoutCliError(`no ${names2} found in the mounted DMG at ${mountPoint}`);
31729
31914
  }
31730
31915
  function codesignField(output, key) {
31731
31916
  const match = output.match(new RegExp(`^${key}=(.+)$`, "m"));
@@ -31946,7 +32131,7 @@ function processIdsForMenuOutsideApp(psOutput, appPath) {
31946
32131
  }
31947
32132
  function inspectInstallProcessIds(deps) {
31948
32133
  const result = deps.run("ps", ["-axo", "pid=,args="]);
31949
- requireSuccess(result, "could not inspect running OpenScout processes");
32134
+ requireSuccess(result, "could not inspect running Scout processes");
31950
32135
  return {
31951
32136
  installed: processIdsForInstalledApp(result.stdout, deps.appPath),
31952
32137
  staleMenus: processIdsForMenuOutsideApp(result.stdout, deps.appPath)
@@ -31984,7 +32169,57 @@ function stopRunningApp(deps) {
31984
32169
  }
31985
32170
  if (waitUntilInstallUnblocked(deps, STOP_POLL_ATTEMPTS))
31986
32171
  return hadInstalledRunning;
31987
- throw new ScoutCliError("could not stop OpenScout before replacing it");
32172
+ throw new ScoutCliError("could not stop Scout before replacing it");
32173
+ }
32174
+ function stopAppAtPath(appPath, deps) {
32175
+ const scan = () => {
32176
+ const result = deps.run("ps", ["-axo", "pid=,args="]);
32177
+ requireSuccess(result, "could not inspect running Scout processes");
32178
+ return processIdsForInstalledApp(result.stdout, appPath);
32179
+ };
32180
+ if (scan().length === 0)
32181
+ return false;
32182
+ for (const pid of scan())
32183
+ deps.run("kill", [String(pid)]);
32184
+ for (let attempt = 0;attempt < STOP_POLL_ATTEMPTS; attempt += 1) {
32185
+ if (scan().length === 0)
32186
+ return true;
32187
+ deps.sleep(STOP_POLL_MS);
32188
+ }
32189
+ for (const pid of scan())
32190
+ deps.run("kill", ["-9", String(pid)]);
32191
+ for (let attempt = 0;attempt < STOP_POLL_ATTEMPTS; attempt += 1) {
32192
+ if (scan().length === 0)
32193
+ return true;
32194
+ deps.sleep(STOP_POLL_MS);
32195
+ }
32196
+ throw new ScoutCliError(`could not stop the pre-rename app at ${appPath}`);
32197
+ }
32198
+ function retireLegacyAppBundles(deps, context) {
32199
+ const removed = [];
32200
+ let hadRunning = false;
32201
+ let blocked = false;
32202
+ for (const name2 of LEGACY_APP_BUNDLE_NAMES) {
32203
+ const legacyPath = join16(dirname11(deps.appPath), name2);
32204
+ if (legacyPath === deps.appPath || !deps.existsSync(legacyPath))
32205
+ continue;
32206
+ try {
32207
+ if (stopAppAtPath(legacyPath, deps))
32208
+ hadRunning = true;
32209
+ } catch (error) {
32210
+ blocked = true;
32211
+ context.stderr(`Kept ${legacyPath}; automatic relaunch skipped: ${error instanceof Error ? error.message : String(error)}`);
32212
+ continue;
32213
+ }
32214
+ try {
32215
+ deps.rmSync(legacyPath, { recursive: true, force: true });
32216
+ removed.push(legacyPath);
32217
+ context.stderr(`Removed the pre-rename bundle at ${legacyPath}.`);
32218
+ } catch (error) {
32219
+ context.stderr(`Could not remove the pre-rename bundle at ${legacyPath}: ${error instanceof Error ? error.message : String(error)}`);
32220
+ }
32221
+ }
32222
+ return { removed, hadRunning, blocked };
31988
32223
  }
31989
32224
  function launchApp(deps) {
31990
32225
  requireSuccess(deps.run("open", [deps.appPath]), `could not relaunch ${deps.appPath}`);
@@ -32010,24 +32245,24 @@ async function runCheck(context, options, deps) {
32010
32245
  if (!deps.existsSync(deps.appPath)) {
32011
32246
  if (deps.existsSync(backupPathFor(deps.appPath))) {
32012
32247
  status = "repair-needed";
32013
- message = "An interrupted OpenScout install needs repair \u2014 run `scout install --force`.";
32248
+ message = "An interrupted Scout install needs repair \u2014 run `scout install --force`.";
32014
32249
  } else {
32015
32250
  status = "not-installed";
32016
- message = "OpenScout is not installed \u2014 run `scout install`.";
32251
+ message = "Scout is not installed \u2014 run `scout install`.";
32017
32252
  }
32018
32253
  } else {
32019
32254
  try {
32020
32255
  installed = verifyStagedOpenScoutApp(deps.appPath, deps);
32021
32256
  if (installed === target2) {
32022
32257
  status = "up-to-date";
32023
- message = `OpenScout ${installed} is up to date.`;
32258
+ message = `Scout ${installed} is up to date.`;
32024
32259
  } else {
32025
32260
  status = "update-available";
32026
32261
  message = `Update available: ${installed} \u2192 ${target2}. Run \`scout install\`.`;
32027
32262
  }
32028
32263
  } catch (error) {
32029
32264
  status = "repair-needed";
32030
- message = `OpenScout needs repair (${error instanceof Error ? error.message : String(error)}). ` + "Run `scout install --force`.";
32265
+ message = `Scout needs repair (${error instanceof Error ? error.message : String(error)}). ` + "Run `scout install --force`.";
32031
32266
  }
32032
32267
  }
32033
32268
  context.output.writeValue({ action: "check", status, installed, target: target2, bundlePath: deps.appPath, message }, renderInstallResult);
@@ -32048,7 +32283,7 @@ async function runInstallCommand(context, args, dependencies = {}) {
32048
32283
  await runCheck(context, options, deps);
32049
32284
  return;
32050
32285
  }
32051
- context.stderr(options.candidate ? "Verifying explicit local candidate (unpublished)\u2026" : options.version ? `Fetching release ${options.version}\u2026` : "Fetching the latest OpenScout release\u2026");
32286
+ context.stderr(options.candidate ? "Verifying explicit local candidate (unpublished)\u2026" : options.version ? `Fetching release ${options.version}\u2026` : "Fetching the latest Scout release\u2026");
32052
32287
  const release = options.candidate && options.dmg ? loadInstallCandidate(options.candidate, options.dmg) : await fetchRelease(options.version, deps);
32053
32288
  const target2 = normalizeReleaseVersion(release.tag_name);
32054
32289
  const releaseInstallLock = acquireInstallLock(deps);
@@ -32066,12 +32301,12 @@ async function runInstallCommand(context, args, dependencies = {}) {
32066
32301
  installed: verifiedVersion,
32067
32302
  target: target2,
32068
32303
  bundlePath: deps.appPath,
32069
- message: `OpenScout ${target2} is already installed (use --force to reinstall).`
32304
+ message: `Scout ${target2} is already installed (use --force to reinstall).`
32070
32305
  }, renderInstallResult);
32071
32306
  return;
32072
32307
  } catch (error) {
32073
32308
  repairingInstalledApp = true;
32074
- context.stderr(`Installed OpenScout ${target2} failed verification; repairing it: ${error instanceof Error ? error.message : String(error)}`);
32309
+ context.stderr(`Installed Scout ${target2} failed verification; repairing it: ${error instanceof Error ? error.message : String(error)}`);
32075
32310
  }
32076
32311
  }
32077
32312
  const asset = findAppDmgAsset(release);
@@ -32090,7 +32325,7 @@ async function runInstallCommand(context, args, dependencies = {}) {
32090
32325
  } else {
32091
32326
  await downloadDmg(asset, dmgPath, context, deps);
32092
32327
  }
32093
- context.stderr(`Installing OpenScout ${target2} to ${deps.appPath}\u2026`);
32328
+ context.stderr(`Installing Scout ${target2} to ${deps.appPath}\u2026`);
32094
32329
  verifyDownloadedDmg(dmgPath, deps);
32095
32330
  mountDmg(dmgPath, mountPoint, deps);
32096
32331
  mounted = true;
@@ -32104,11 +32339,14 @@ async function runInstallCommand(context, args, dependencies = {}) {
32104
32339
  unmountDmg(mountPoint, deps);
32105
32340
  deps.rmSync(workDir, { recursive: true, force: true });
32106
32341
  }
32107
- if (wasRunning && options.restart) {
32342
+ const retirement = retireLegacyAppBundles(deps, context);
32343
+ if (retirement.hadRunning)
32344
+ wasRunning = true;
32345
+ if (wasRunning && options.restart && !retirement.blocked) {
32108
32346
  launchApp(deps);
32109
32347
  }
32110
32348
  const status = hadInstalledApp ? "updated" : "installed";
32111
- const relaunchNote = wasRunning ? options.restart ? " (relaunched)" : " (restart OpenScout to use the new version)" : "";
32349
+ const relaunchNote = retirement.blocked ? " (legacy app cleanup incomplete; automatic relaunch skipped)" : wasRunning ? options.restart ? " (relaunched)" : " (restart Scout to use the new version)" : "";
32112
32350
  let verb = "Installed";
32113
32351
  if (repairingInstalledApp || hadInstalledApp && !installedBefore) {
32114
32352
  verb = "Repaired";
@@ -32121,7 +32359,7 @@ async function runInstallCommand(context, args, dependencies = {}) {
32121
32359
  installed: installedAfter,
32122
32360
  target: target2,
32123
32361
  bundlePath: deps.appPath,
32124
- message: `${verb} OpenScout ${installedAfter} \u2192 ${deps.appPath}${relaunchNote}`
32362
+ message: `${verb} Scout ${installedAfter} \u2192 ${deps.appPath}${relaunchNote}`
32125
32363
  }, renderInstallResult);
32126
32364
  } finally {
32127
32365
  releaseInstallLock();