@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.
- package/README.md +37 -0
- package/bin/scout.mjs +6 -0
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +4 -4
- package/dist/chat.mjs +307 -0
- package/dist/client/assets/ActivityScreen-CZmGwQ2U.js +1 -0
- package/dist/client/assets/{AddProjectForm-DfbjlFfy.js → AddProjectForm-CusDRiVO.js} +1 -1
- package/dist/client/assets/{AdventureEvidence-Dzz9VbuE.js → AdventureEvidence-CyegKk1V.js} +1 -1
- package/dist/client/assets/{AdventureReader-ClMxT0e4.js → AdventureReader-X-hbTOi0.js} +1 -1
- package/dist/client/assets/{AdventureScenery-D548O0x4.js → AdventureScenery-LPXSVP67.js} +1 -1
- package/dist/client/assets/AgentAdventures-BAgxdOF8.js +1 -0
- package/dist/client/assets/AgentAvatar-CrP1eXxk.js +1 -0
- package/dist/client/assets/AgentConfigurationScreen-1L0IQm2w.js +1 -0
- package/dist/client/assets/AgentDefinitionsWorkspace-DguGs7jZ.js +1 -0
- package/dist/client/assets/{AgentDetailCard-CFDE8TLi.js → AgentDetailCard-DtHT3sCo.js} +1 -1
- package/dist/client/assets/AgentFloorView-DH4jiDgw.js +1 -0
- package/dist/client/assets/{AgentFloorWorld-BDJmXl3C.js → AgentFloorWorld-CjoIa6jA.js} +1 -1
- package/dist/client/assets/AgentInfoScreen-DYtmKkeE.js +1 -0
- package/dist/client/assets/{AgentLaneCard-C6YmwPxQ.js → AgentLaneCard-BaZ2g-f8.js} +1 -1
- package/dist/client/assets/{AgentLaneChrome-D9uJ4QY7.js → AgentLaneChrome-TF1SlJSc.js} +1 -1
- package/dist/client/assets/{AgentLaneDetailSheet-KYckCBCX.js → AgentLaneDetailSheet-EzEPsn3g.js} +1 -1
- package/dist/client/assets/{AgentLaneSummaryResize-BBYBS3DO.js → AgentLaneSummaryResize-dpp7YvrX.js} +1 -1
- package/dist/client/assets/AgentLanesEmbedScreen-BlSof_6S.js +1 -0
- package/dist/client/assets/{AgentLanesPreflight-pw2vMO3Q.js → AgentLanesPreflight-Ry-aqDTr.js} +1 -1
- package/dist/client/assets/AgentLanesView-BJi9xXz6.js +2 -0
- package/dist/client/assets/{AgentLiveActions-lYzicnNa.js → AgentLiveActions-CfTupTEl.js} +1 -1
- package/dist/client/assets/AgentMasterScreen-EJhmuKgl.js +1 -0
- package/dist/client/assets/AgentSessions-B1gOhDBf.js +6 -0
- package/dist/client/assets/AgentsConsole-RXGqRvcb.js +1 -0
- package/dist/client/assets/AgentsScreen-ChwMBs11.js +1 -0
- package/dist/client/assets/AgentsSubnav-DwNX4yy0.js +1 -0
- package/dist/client/assets/{AstronautSuit-C-4I5YKi.js → AstronautSuit-Cchnc4Ug.js} +1 -1
- package/dist/client/assets/{AtopView-DKm-ERYC.js → AtopView-gkEp4y__.js} +1 -1
- package/dist/client/assets/{BackToPicker-Bys9ColC.js → BackToPicker-CUkjnoVk.js} +1 -1
- package/dist/client/assets/BriefingDetailScreen-DrlC3qkm.js +1 -0
- package/dist/client/assets/{BriefingsScreen-D4Zf31Y6.js → BriefingsScreen-B1HlBMGZ.js} +1 -1
- package/dist/client/assets/{BrokerMetadataPanel-1GoSl2BV.js → BrokerMetadataPanel-Dk242Yh_.js} +1 -1
- package/dist/client/assets/BrokerScreen-DwOF6bMA.js +8 -0
- package/dist/client/assets/Canvas-X9pVSkw3.js +1 -0
- package/dist/client/assets/{CastPicker-BuwE_JQp.js → CastPicker-BXUtPAGC.js} +1 -1
- package/dist/client/assets/ChannelComposer-DoK7IDGa.js +1 -0
- package/dist/client/assets/ChannelSidebar-e9DOPulb.js +1 -0
- package/dist/client/assets/{CharacterFamilyPreview-CfO3j8Of.js → CharacterFamilyPreview-DMfw7UM_.js} +1 -1
- package/dist/client/assets/ChatAvatar-C3a_o5Hj.js +1 -0
- package/dist/client/assets/ChatBits-CsvxbToF.js +1 -0
- package/dist/client/assets/{ChatCollapsedStrip-TV0j1xTB.js → ChatCollapsedStrip-FEmQ_G9J.js} +1 -1
- package/dist/client/assets/ChatRichInput-DhtwFxQE.js +31 -0
- package/dist/client/assets/ChatRightPanel-C1h_aIkn.js +1 -0
- package/dist/client/assets/ChatSpaceSurface-BXyLYKHn.js +1 -0
- package/dist/client/assets/ChatSpaceTheme-3wLZGsvT.css +1 -0
- package/dist/client/assets/ChatSpaceTheme-CUH8bTZc.js +1 -0
- package/dist/client/assets/{CodeDiffPane-DB6-mqtX.js → CodeDiffPane-DuQRwpgK.js} +1 -1
- package/dist/client/assets/{CodeProjectPicker-B_LNLpIK.js → CodeProjectPicker-ZQ6gSBpg.js} +1 -1
- package/dist/client/assets/{CodeScreen-C9H160XS.js → CodeScreen-BXyKeL5T.js} +1 -1
- package/dist/client/assets/{CommsCanvas-DOKw3Q8i.js → CommsCanvas-THp0r_U8.js} +1 -1
- package/dist/client/assets/{CommsDeck-C18JA7rK.js → CommsDeck-BVmSMV2V.js} +1 -1
- package/dist/client/assets/{CommsFlowGraph-Czg-KTS0.js → CommsFlowGraph-DxoOaLF_.js} +1 -1
- package/dist/client/assets/{CommsFlowMap-CzBWvSa5.js → CommsFlowMap-Vi8ziCPg.js} +1 -1
- package/dist/client/assets/{CommsSelection-g1twA-Lb.js → CommsSelection-BUoRbu9o.js} +1 -1
- package/dist/client/assets/ComposerAttachments-DW0AIb8k.js +1 -0
- package/dist/client/assets/ConversationComposer-CUQyArlk.js +1 -0
- package/dist/client/assets/ConversationFeedRows-DWiOfT-y.js +1 -0
- package/dist/client/assets/ConversationHeader-C-ZWscKj.js +1 -0
- package/dist/client/assets/{ConversationPanels-C9yCAoJy.js → ConversationPanels-D9oC0xG5.js} +2 -2
- package/dist/client/assets/ConversationScreen-9MlMnEo4.css +1 -0
- package/dist/client/assets/ConversationScreen-CUfsQ4MR.js +2 -0
- package/dist/client/assets/ConversationStatus--IPm2nGh.js +1 -0
- package/dist/client/assets/{CrewAvatar-D0c9z5Qr.css → CrewAvatar-BnIPIn_Z.css} +1 -1
- package/dist/client/assets/CrewAvatar-kTznzqcO.js +1 -0
- package/dist/client/assets/{CrewSprite-hgpA3SWB.js → CrewSprite-Dhryjx2c.js} +1 -1
- package/dist/client/assets/CrewStage-vdO0qm3D.js +1 -0
- package/dist/client/assets/CrewWorkspaces-DCBzAAS4.js +1 -0
- package/dist/client/assets/CrewWorkspaces-DDuYMByu.css +1 -0
- package/dist/client/assets/{DataTable-BMOZ1-z8.js → DataTable-aH-jCyDq.js} +1 -1
- package/dist/client/assets/{DispatchAftermath-DDlwqSCY.js → DispatchAftermath-66uQAorV.js} +1 -1
- package/dist/client/assets/{DocumentFocusViewer-f12RRQpV.js → DocumentFocusViewer-DJr0v0D_.js} +1 -1
- package/dist/client/assets/{EmbeddableSurfacesLab-DGl9EMRV.js → EmbeddableSurfacesLab-BBa70EhJ.js} +1 -1
- package/dist/client/assets/{EmptyState-uyYN5piI.js → EmptyState-CZlrHXy-.js} +1 -1
- package/dist/client/assets/{FileViewerPane-HtiDbj9N.js → FileViewerPane-BAO6mtjD.js} +1 -1
- package/dist/client/assets/FleetRollCallHud-C5q2567n.js +1 -0
- package/dist/client/assets/FlightObserveScreen-DZ2mrw91.js +1 -0
- package/dist/client/assets/{FloorContextSheet-DV-SYA0K.js → FloorContextSheet-2_NVPQor.js} +1 -1
- package/dist/client/assets/{FloorExchangePanel-D59nvRCF.js → FloorExchangePanel-BU1pPu8K.js} +1 -1
- package/dist/client/assets/{FloorMessagePasses-BCwsz9VS.js → FloorMessagePasses-cLW2UGNP.js} +1 -1
- package/dist/client/assets/{FloorReplay-BHo79HCD.js → FloorReplay-VFzA6Kxc.js} +1 -1
- package/dist/client/assets/FloorResourcesSheet-C-kQ6Ren.js +1 -0
- package/dist/client/assets/{FloorSavedWork-2tjBoy06.js → FloorSavedWork-BeHDejWz.js} +1 -1
- package/dist/client/assets/FloorTacticalHUD-CO-iiFpb.js +1 -0
- package/dist/client/assets/{FollowScreen-eHXOlK-u.js → FollowScreen-CFfkIbc6.js} +1 -1
- package/dist/client/assets/HarnessMark-C4naWc16.js +1 -0
- package/dist/client/assets/HarnessesScreen-DX3NLcDG.js +1 -0
- package/dist/client/assets/{HerdrSession-CtJOUn7H.js → HerdrSession-_t7yM8vX.js} +2 -2
- package/dist/client/assets/{HomeHero-Cvwx2H0w.js → HomeHero-DouPyNmz.js} +1 -1
- package/dist/client/assets/{HostAdvisorView-CTJXIc1Q.js → HostAdvisorView-CnM1i8hW.js} +1 -1
- package/dist/client/assets/InviteLandingScreen-CEjG2E34.js +1 -0
- package/dist/client/assets/InviteSheet-CwxZtWCl.js +1 -0
- package/dist/client/assets/JumpPalette-O1aJE9gR.js +1 -0
- package/dist/client/assets/{KnowledgeSearchInspector-DwGMVmFL.js → KnowledgeSearchInspector-32n9baT-.js} +1 -1
- package/dist/client/assets/KnowledgeSearchScreen-Dd6jrQ0A.js +1 -0
- package/dist/client/assets/{LaneToolHoverCard-C6YehJqD.js → LaneToolHoverCard-CJa110yk.js} +1 -1
- package/dist/client/assets/LaneTraceDetailSheet-DYrd0BIf.js +1 -0
- package/dist/client/assets/{LaneTraceEventFocus-WLNZZVi_.js → LaneTraceEventFocus-TbrNHRj_.js} +1 -1
- package/dist/client/assets/{MeshCanvas-FDDGE69h.js → MeshCanvas-DWZHYh1A.js} +2 -2
- package/dist/client/assets/{MeshCanvasMinimap-CGRzQCac.js → MeshCanvasMinimap-iswYFpIb.js} +1 -1
- package/dist/client/assets/MeshScreen-8nAzQVbm.js +1 -0
- package/dist/client/assets/{MeshTopologyView-C2Cv_2gx.js → MeshTopologyView-BVvtqI8q.js} +2 -2
- package/dist/client/assets/MessageEmbeds-ksPazAKH.js +1 -0
- package/dist/client/assets/MessagesScreen-C3WB4T21.js +1 -0
- package/dist/client/assets/{MissionContextRail-CVSZJnvX.js → MissionContextRail-D62-Wis8.js} +1 -1
- package/dist/client/assets/MissionControlView-B9cNPXvl.js +1 -0
- package/dist/client/assets/{MissionFocusOverlay-B9SiuO-i.js → MissionFocusOverlay-C1zys3Jv.js} +1 -1
- package/dist/client/assets/MissionLeftAgentRow-vycMV77n.js +1 -0
- package/dist/client/assets/{MissionLogPane-CMBiI29U.js → MissionLogPane-B19lYSY9.js} +1 -1
- package/dist/client/assets/NativeAreaScreen-B1RLa85C.js +1 -0
- package/dist/client/assets/NativeAreaScreen-CV0OhGra.js +1 -0
- package/dist/client/assets/NativeAreaScreen-CzuZt6o1.js +1 -0
- package/dist/client/assets/{NewAgentModal-Cl4nsGhu.js → NewAgentModal-Bh-L-emz.js} +1 -1
- package/dist/client/assets/NewChatComposer-C97-iTMK.js +19 -0
- package/dist/client/assets/{NewChatOrigin-CyPPWTJP.js → NewChatOrigin-DFbF_XvR.js} +1 -1
- package/dist/client/assets/{NodeDetailPanel-BUG8rOb-.js → NodeDetailPanel-CElOEpCh.js} +1 -1
- package/dist/client/assets/{NodeMenu-Fw8ATWQA.js → NodeMenu-B-jjHf1c.js} +1 -1
- package/dist/client/assets/ObserveEmbedScreen-B7Qt69Ms.js +2 -0
- package/dist/client/assets/{ObserveTextFlow-ET0dD1wO.js → ObserveTextFlow-PFnG_10h.js} +2 -2
- package/dist/client/assets/{ObservedTopologyPanel-DkEkQzo-.js → ObservedTopologyPanel-CUTIoLZJ.js} +1 -1
- package/dist/client/assets/OpenScoutAppShell-37PDFfA4.js +31 -0
- package/dist/client/assets/OpsAgentsView-DajlX8LO.js +1 -0
- package/dist/client/assets/OpsScreen-jVcaBKGi.js +1 -0
- package/dist/client/assets/OpsSubnav-BOOYShHE.js +1 -0
- package/dist/client/assets/ProjectAgentProfile-D_wlW4sQ.js +1 -0
- package/dist/client/assets/{ProjectAgentProfileBar-C1fR65Eh.js → ProjectAgentProfileBar-DHuMKJj-.js} +1 -1
- package/dist/client/assets/ProjectAgentProfileHero-Dbebtug1.js +1 -0
- package/dist/client/assets/ProjectsInbox-B8zYE4vP.css +1 -0
- package/dist/client/assets/ProjectsInbox-Cgu7B4--.js +2 -0
- package/dist/client/assets/ProjectsRail-CDWocin_.js +1 -0
- package/dist/client/assets/ProjectsScreen-B_CJycqW.js +1 -0
- package/dist/client/assets/ProjectsThreadAside-1MMl_qUD.js +1 -0
- package/dist/client/assets/Provider-C35yu29I.js +5 -0
- package/dist/client/assets/{RailRow-BYguXNm4.js → RailRow-BjmWK420.js} +1 -1
- package/dist/client/assets/RawSessionsTable-DzT90hWu.js +1 -0
- package/dist/client/assets/RealtimeVoiceScreen-B6ylX3WQ.js +16 -0
- package/dist/client/assets/{RenderedWorkerSprite-CvdWO32C.js → RenderedWorkerSprite-Dhlyg89J.js} +1 -1
- package/dist/client/assets/{ReplayClock-B7JLTp8A.js → ReplayClock-348f17bW.js} +1 -1
- package/dist/client/assets/{ReplayLog-DZTpf2CW.js → ReplayLog-CBnAM3ui.js} +1 -1
- package/dist/client/assets/{ReplayOutpost-CvWQa30T.js → ReplayOutpost-DyRPfNFx.js} +1 -1
- package/dist/client/assets/{RepoDiffEmbedScreen-Cbu0_PJW.js → RepoDiffEmbedScreen-BWxvRDrS.js} +1 -1
- package/dist/client/assets/{RepoDiffPageScreen-Chwm6GXL.js → RepoDiffPageScreen-DN94irmY.js} +1 -1
- package/dist/client/assets/{RepoDiffViewer-C2mb0Wj-.js → RepoDiffViewer-_4JVXBIW.js} +1 -1
- package/dist/client/assets/RepoDiffViewerLazy-XGVC3WXv.js +2 -0
- package/dist/client/assets/{ReposScreen-C7JZQmyh.js → ReposScreen-uMCpt0e9.js} +2 -2
- package/dist/client/assets/{RiggedWorkerCharacter-DNe731GE.js → RiggedWorkerCharacter-q6QRc7_o.js} +1 -1
- package/dist/client/assets/{SageModelStudio-BR1J2D4R.js → SageModelStudio-CNDhZhgD.js} +1 -1
- package/dist/client/assets/{ScoutDeckSurface-flRamdvE.js → ScoutDeckSurface-CUaU4R6T.js} +1 -1
- package/dist/client/assets/{ScoutSurface-BpklGmDL.js → ScoutSurface-3_25USO_.js} +1 -1
- package/dist/client/assets/{ScoutbotFxLab-DeK7ySWZ.js → ScoutbotFxLab-CRqhYe0a.js} +1 -1
- package/dist/client/assets/{SecondaryNav-BkTn5tkq.js → SecondaryNav-D7dbV2qo.js} +1 -1
- package/dist/client/assets/SessionContextStrip-CXfs9hUD.js +1 -0
- package/dist/client/assets/SessionContextStrip-DAIXwtHd.css +1 -0
- package/dist/client/assets/{SessionEmbedScreen-CcQN6xlo.js → SessionEmbedScreen-D0zFmou-.js} +1 -1
- package/dist/client/assets/SessionHopMenu-E6VJZrE0.js +1 -0
- package/dist/client/assets/{SessionObserve-BOBJSfs0.css → SessionObserve-CDdJ7fAE.css} +1 -1
- package/dist/client/assets/SessionObserve-DXxBvejJ.js +12 -0
- package/dist/client/assets/SessionObserveEvidence-Cuj_KHxR.js +1 -0
- package/dist/client/assets/SessionRefScreen-DqLSUlCE.js +1 -0
- package/dist/client/assets/SessionsScreen-BLIRkohT.js +1 -0
- package/dist/client/assets/SettingsDrawer-juCpnbH6.js +3 -0
- package/dist/client/assets/SettingsScreen-BtGzE2-O.js +1 -0
- package/dist/client/assets/{SharedFloorCharacter-CSYG_t9t.js → SharedFloorCharacter-DNEiaOUh.js} +1 -1
- package/dist/client/assets/SharedWorkFloor-0rqtdF-n.css +1 -0
- package/dist/client/assets/SharedWorkFloor-D9mf9KSg.js +2 -0
- package/dist/client/assets/{ShikiPane-BudrOxNK.js → ShikiPane-CRtTYkMj.js} +1 -1
- package/dist/client/assets/{SlidePanel-Datu7XG4.js → SlidePanel-_CHAQdOa.js} +1 -1
- package/dist/client/assets/SpaceSwitcher-BLgSCf_T.js +1 -0
- package/dist/client/assets/{SpriteAvatar-BW1JzkDt.js → SpriteAvatar-CpZWf54-.js} +1 -1
- package/dist/client/assets/{SproutActionSprite-DveCzg6l.js → SproutActionSprite-BSiTS4en.js} +1 -1
- package/dist/client/assets/{StatusPill-MxYClPG5.js → StatusPill-2gCP6H7A.js} +1 -1
- package/dist/client/assets/{TailView-Dn7uWmPz.js → TailView-CYSijNTy.js} +2 -2
- package/dist/client/assets/Terminal-Bi97yb5s.js +4 -0
- package/dist/client/assets/TerminalEmbedScreen-Bqop67Bq.js +1 -0
- package/dist/client/assets/{TerminalHeaderMount-DCGstkZ4.js → TerminalHeaderMount-Cq4OD_xN.js} +1 -1
- package/dist/client/assets/TerminalRelay-DrikpUSJ.js +46 -0
- package/dist/client/assets/{TextDocumentSurface-BhYvAB0o.js → TextDocumentSurface-D52m7Vd8.js} +1 -1
- package/dist/client/assets/{TmuxPeek-BhK0V9Qt.js → TmuxPeek-CXFeweMg.js} +1 -1
- package/dist/client/assets/VoiceControlWell-DF3bjcYA.js +1 -0
- package/dist/client/assets/VoicePathDiagram-CmpHWfO-.js +1 -0
- package/dist/client/assets/{VoicePermissionsPanel-CecFWzva.js → VoicePermissionsPanel-Ok2nfxHw.js} +1 -1
- package/dist/client/assets/VoiceTurnDetails-wAByRaNB.js +8 -0
- package/dist/client/assets/VoiceTurnStage-edoJalLV.js +1 -0
- package/dist/client/assets/VoiceTurnView-D-8g5E4r.js +1 -0
- package/dist/client/assets/WorkDetailScreen-zQkNVy2F.js +5 -0
- package/dist/client/assets/{WorkFilesViewer-DJHftsH9.js → WorkFilesViewer-vNt01sDd.js} +1 -1
- package/dist/client/assets/{WorkRunView-x5PH1byG.js → WorkRunView-BDkR7Edq.js} +1 -1
- package/dist/client/assets/WorldActorTalk-BvSg_b1y.js +1 -0
- package/dist/client/assets/{WorldCharacter-Dn4sIXNP.js → WorldCharacter-CIIlutQq.js} +1 -1
- package/dist/client/assets/WorldMinimap-B6HNgcDe.js +1 -0
- package/dist/client/assets/{WorldSky-DV9bpvXj.js → WorldSky-Jm2Z6dfW.js} +1 -1
- package/dist/client/assets/{activity-CSUhvjD0.js → activity-CIlFrfPJ.js} +1 -1
- package/dist/client/assets/{addon-fit-MR98IWES.js → addon-fit-dFpj9Kfq.js} +1 -1
- package/dist/client/assets/{addon-webgl-CIIKXrvK.js → addon-webgl-BFCGRtGh.js} +1 -1
- package/dist/client/assets/{agent-essentials-8t2il7PV.js → agent-essentials-BGGvT5G6.js} +1 -1
- package/dist/client/assets/{agent-floor-actor-3v9drnxh.js → agent-floor-actor-DW8zLht0.js} +1 -1
- package/dist/client/assets/{agent-lane-card-model-l0stnU9N.js → agent-lane-card-model-CeqQGp-8.js} +1 -1
- package/dist/client/assets/{agent-lane-detail-Db7KyAlf.js → agent-lane-detail-Ti3trpfH.js} +1 -1
- package/dist/client/assets/{agent-lane-preview-B8lsQJOQ.js → agent-lane-preview-Dpa3DuOn.js} +1 -1
- package/dist/client/assets/{agent-lanes-model-CX0wTcnF.js → agent-lanes-model-DMAdqCmK.js} +1 -1
- package/dist/client/assets/{agent-master-model-C-KdOFDK.js → agent-master-model-Bk_yuUXJ.js} +1 -1
- package/dist/client/assets/{agent-specialization-CiVxQsFT.js → agent-specialization-DDc7mLCW.js} +1 -1
- package/dist/client/assets/agents-screen-BYakbO50.css +1 -0
- package/dist/client/assets/{api-B9_IqFKY.js → api-BQYTwoz6.js} +1 -1
- package/dist/client/assets/{api-CaROe5_H.js → api-DSqpVKC7.js} +1 -1
- package/dist/client/assets/{arc.es-BzhWalCl.js → arc.es-C1SQHJ3k.js} +1 -1
- package/dist/client/assets/{arrow-left-PuKdO3NM.js → arrow-left-MVUKauwQ.js} +1 -1
- package/dist/client/assets/{arrow-right-ldbfp4SZ.js → arrow-right-Bp-FpE5V.js} +1 -1
- package/dist/client/assets/{arrow-up-right-Hn754ybA.js → arrow-up-right-BPedAgxO.js} +1 -1
- package/dist/client/assets/{book-open-BlJnpf2U.js → book-open-CV98WMSp.js} +1 -1
- package/dist/client/assets/{bot-CfN9PSBF.js → bot-B4zLQ4IN.js} +1 -1
- package/dist/client/assets/{cache-DEy9E34b.js → cache-DGBo3vIf.js} +1 -1
- package/dist/client/assets/chat-api-DSJMBYoT.js +2 -0
- package/dist/client/assets/chat-message-markup-91DIry6R.js +1 -0
- package/dist/client/assets/chat-space-model-aW3Fd8_U.js +4 -0
- package/dist/client/assets/chat-transport-DNS5CB2I.js +1 -0
- package/dist/client/assets/{check-B8dMv3Is.js → check-lrJ3a73a.js} +1 -1
- package/dist/client/assets/{chevron-down-B5eMsn5c.js → chevron-down-l1mrh5S9.js} +1 -1
- package/dist/client/assets/{chevron-right-C7UGFpkl.js → chevron-right-DrfqcerI.js} +1 -1
- package/dist/client/assets/{chevron-up-BHOEgHcn.js → chevron-up-CETZJzjV.js} +1 -1
- package/dist/client/assets/{chunk-HRAB3GC3-C5X-kFhb.js → chunk-HRAB3GC3-DbVLgbWX.js} +1 -1
- package/dist/client/assets/{clock-DFcRbtrl.js → clock-BV1aqPkK.js} +1 -1
- package/dist/client/assets/{code-xml-BmyLM0I2.js → code-xml-BhcNbLWU.js} +1 -1
- package/dist/client/assets/{coffee-C_D9zooM.js → coffee-D7EAOdCk.js} +1 -1
- package/dist/client/assets/{compass-DTZdCpv9.js → compass-63TUaz5_.js} +1 -1
- package/dist/client/assets/content-B1lgE8qr.js +1 -0
- package/dist/client/assets/content-B5l11YyQ.js +1 -0
- package/dist/client/assets/content-BNZOZEpX.js +1 -0
- package/dist/client/assets/content-BRIxP155.js +1 -0
- package/dist/client/assets/content-BWd8gt8L.js +1 -0
- package/dist/client/assets/content-BfwS2jAK.js +1 -0
- package/dist/client/assets/content-C4p43_eT.js +1 -0
- package/dist/client/assets/content-CdYfaoDV.js +1 -0
- package/dist/client/assets/content-CzldLxw0.js +1 -0
- package/dist/client/assets/content-D-olnc4U.js +1 -0
- package/dist/client/assets/content-DTioimq4.js +1 -0
- package/dist/client/assets/content-LOebm3_d.js +1 -0
- package/dist/client/assets/content-nGlEZhUI.js +1 -0
- package/dist/client/assets/content-oyzDM-LK.js +1 -0
- package/dist/client/assets/content-x1PHxED7.js +1 -0
- package/dist/client/assets/content-zX3ZY3T9.js +1 -0
- package/dist/client/assets/{context-budget-DemtXu7E.js → context-budget-8qFKqM-j.js} +1 -1
- package/dist/client/assets/{conversation-icons-BQ4OeOmr.js → conversation-icons-Tqba2d56.js} +1 -1
- package/dist/client/assets/conversation-model-FxDeWlle.js +1 -0
- package/dist/client/assets/conversation-motion-features-C5zjuNwE.js +1 -0
- package/dist/client/assets/conversations-DoAAO6kA.js +1 -0
- package/dist/client/assets/{copy-D9WUpQRf.js → copy-xKeM5ZtU.js} +1 -1
- package/dist/client/assets/{cpu-Ck_4tB_-.js → cpu-BOTa_WLr.js} +1 -1
- package/dist/client/assets/{createLucideIcon-DkjnzvcJ.js → createLucideIcon-zZ8Hx7er.js} +1 -1
- package/dist/client/assets/{credentials-C4VXz2hr.js → credentials-OeoF-VKJ.js} +1 -1
- package/dist/client/assets/ctx-panel-BC8fpcWJ.css +1 -0
- package/dist/client/assets/direct-voice-BbLPuJ04.js +2 -0
- package/dist/client/assets/direct-voice-DbO7CSv_.css +1 -0
- package/dist/client/assets/discover-DJFxyV1k.js +2 -0
- package/dist/client/assets/embed-entry-Lyvu0Kfc.js +2 -0
- package/dist/client/assets/{external-link-RT4Ph-6-.js → external-link-CUObqmgX.js} +1 -1
- package/dist/client/assets/{eye-CtqSV8BS.js → eye-LrO-cXQt.js} +1 -1
- package/dist/client/assets/{file-code-corner-D_Aptal2.js → file-code-corner-CsU7jJpu.js} +1 -1
- package/dist/client/assets/{file-text-ChtICwub.js → file-text-CnISiiw6.js} +1 -1
- package/dist/client/assets/{flag-CqdOxVkI.js → flag-C4wl8z2-.js} +1 -1
- package/dist/client/assets/fleet-roll-call-BUgf7w-V.css +1 -0
- package/dist/client/assets/{floor-context-model-DZBpo_oD.js → floor-context-model-rWKqaKmV.js} +1 -1
- package/dist/client/assets/{floor-message-passes-CJh9f8Jp.js → floor-message-passes-CO3Ix_wR.js} +1 -1
- package/dist/client/assets/{folder-0fWevPvQ.js → folder-D5prSkzz.js} +1 -1
- package/dist/client/assets/{gauge-Dgtfxf_o.js → gauge-D9_5iJEm.js} +1 -1
- package/dist/client/assets/{gestures-BDCZ1FRG.js → gestures-QZub3Ot9.js} +1 -1
- package/dist/client/assets/{git-branch-CA3cHKCI.js → git-branch-B0_fPLO7.js} +1 -1
- package/dist/client/assets/{go-shortcuts-DKtw4qYx.js → go-shortcuts-DicR7sUf.js} +1 -1
- package/dist/client/assets/home-moving-signal-rpMhsOJB.js +1 -0
- package/dist/client/assets/home-now-card-ByE6Umcx.js +1 -0
- package/dist/client/assets/{home-now-card-nano-D1ScGrgv.js → home-now-card-nano-B5Dv3-pb.js} +1 -1
- package/dist/client/assets/hooks-_eCZZPsR.js +2 -0
- package/dist/client/assets/index-724SdE6r.js +1 -0
- package/dist/client/assets/{index-CvsM3jm8.js → index-CHD0qcfL.js} +1 -1
- package/dist/client/assets/index-CN4rBB_s.css +1 -0
- package/dist/client/assets/index-D1d98iYf.js +1 -0
- package/dist/client/assets/index-EsrkGBcv.js +10 -0
- package/dist/client/assets/index-gGHPA-By.js +1 -0
- package/dist/client/assets/{inspector-panel-BLhDODb3.js → inspector-panel-BkgUDn6G.js} +2 -2
- package/dist/client/assets/{keyboard-nav-CXfav14z.js → keyboard-nav-DDHegDbx.js} +1 -1
- package/dist/client/assets/lane-ask-display-BTVSakyo.js +18 -0
- package/dist/client/assets/{lane-observe-BD21P8BB.js → lane-observe-CteDwdD-.js} +3 -3
- package/dist/client/assets/{lane-roster-store-DzNHP392.js → lane-roster-store-D-RSWjb-.js} +1 -1
- package/dist/client/assets/{layers-Bolb8ejU.js → layers-C8PDiMul.js} +1 -1
- package/dist/client/assets/{layout-grid-DI9tVJ2E.js → layout-grid-Cor2frzj.js} +1 -1
- package/dist/client/assets/left-Bn5X7x2o.js +2 -0
- package/dist/client/assets/left-BqS0fYX1.js +1 -0
- package/dist/client/assets/left-CTCeeeD3.js +1 -0
- package/dist/client/assets/left-DhtVPVux.js +1 -0
- package/dist/client/assets/left-K39b-Wvx.js +2 -0
- package/dist/client/assets/left-KGmueNPt.js +1 -0
- package/dist/client/assets/left-P_GOYB-s.js +1 -0
- package/dist/client/assets/left-advisor-B0N47De2.js +1 -0
- package/dist/client/assets/left-agents-CsSNc51Y.js +1 -0
- package/dist/client/assets/left-default-BlO5LP2T.js +1 -0
- package/dist/client/assets/left-lanes-C4PhaJE6.js +1 -0
- package/dist/client/assets/left-mission-BjTE5vPa.js +1 -0
- package/dist/client/assets/library-CkWNPHRp.js +1 -0
- package/dist/client/assets/{loader-circle-DurUYl7E.js → loader-circle-OvccU82H.js} +1 -1
- package/dist/client/assets/{local-agents-D9fYYRyj.js → local-agents-BqnoxJrq.js} +1 -1
- package/dist/client/assets/log-in-7SnYqW5w.js +1 -0
- package/dist/client/assets/{machine-children-RGS4Q0r6.js → machine-children-DxcqCLmd.js} +1 -1
- package/dist/client/assets/media-blobs-Bi8pxr1u.js +1 -0
- package/dist/client/assets/{mentions-Ctw1ECUC.js → mentions-ByUvhS-v.js} +1 -1
- package/dist/client/assets/{mesh-ops-CGpRk4ik.js → mesh-ops-CiZ8xSAx.js} +1 -1
- package/dist/client/assets/{mesh-view-store-CliSYsmt.js → mesh-view-store-DZvJC4KU.js} +1 -1
- package/dist/client/assets/{message-circle-CSiJj6yo.js → message-circle-CxRVKNE-.js} +1 -1
- package/dist/client/assets/message-markup-BQW5jdJw.js +15 -0
- package/dist/client/assets/message-markup-Zwo3t4cI.js +1 -0
- package/dist/client/assets/{message-square-NmXWtWLR.js → message-square-BxesYglW.js} +1 -1
- package/dist/client/assets/mission-control-model-BpJHDV5D.js +1 -0
- package/dist/client/assets/{mission-control-store-DZ29Mlj1.js → mission-control-store-elEEsIvb.js} +1 -1
- package/dist/client/assets/{mission-wall-DOuGOxQy.js → mission-wall-CAo4BKfa.js} +1 -1
- package/dist/client/assets/monitor-DTTYEb73.js +1 -0
- package/dist/client/assets/{nav-destinations-CyXnw9kh.js → nav-destinations-uorRqFxf.js} +1 -1
- package/dist/client/assets/{observe-CkfOxYx_.js → observe-BJqERJVj.js} +1 -1
- package/dist/client/assets/{operator-attention-DGR4kOog.js → operator-attention-DBaRg5ep.js} +1 -1
- package/dist/client/assets/{page-status-CkS3SZu-.js → page-status-BswZLqvA.js} +1 -1
- package/dist/client/assets/{panel-right-BNTJhy8M.js → panel-right-Bv7sP_fc.js} +1 -1
- package/dist/client/assets/paperclip-BjcuP_Hx.js +1 -0
- package/dist/client/assets/{pause-DWS7YGQ3.js → pause-C2XTlkjs.js} +1 -1
- package/dist/client/assets/{persistent-state-xsuk6Kc-.js → persistent-state-KRk_yb0q.js} +1 -1
- package/dist/client/assets/{pin-DWlD1BOF.js → pin-C2mFOV1l.js} +1 -1
- package/dist/client/assets/{play-D_Pggug4.js → play-FT6K3It1.js} +1 -1
- package/dist/client/assets/{plus-D_wLGJGT.js → plus-DFDDeGKu.js} +1 -1
- package/dist/client/assets/profile-DTmzN16I.js +1 -0
- package/dist/client/assets/{projects-inbox-DvbqJO3q.js → projects-inbox-C0FUCv_p.js} +1 -1
- package/dist/client/assets/projects-inbox-ColX6lpx.css +1 -0
- package/dist/client/assets/provider-Dojd8quC.js +1 -0
- package/dist/client/assets/{proxy-DOG46ja4.js → proxy-AJsmwA6h.js} +1 -1
- package/dist/client/assets/{radio-C_jtwbFP.js → radio-DRoOZsws.js} +1 -1
- package/dist/client/assets/{refresh-cw-Da9DDLk2.js → refresh-cw-BmVr7sCD.js} +1 -1
- package/dist/client/assets/resolve-panes-pbY1fCWi.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-YWkZTq1t.js +1 -0
- package/dist/client/assets/right-49kO-6nD.js +1 -0
- package/dist/client/assets/right-APtItA8A.js +1 -0
- package/dist/client/assets/right-BJwhPqtn.js +1 -0
- package/dist/client/assets/right-BPqrf4ek.js +1 -0
- package/dist/client/assets/right-D7djOy6K.js +1 -0
- package/dist/client/assets/right-DKOUCRob.js +1 -0
- package/dist/client/assets/right-DMNrVzg7.js +1 -0
- package/dist/client/assets/{right-BLJsc2-p.js → right-DWPVB-nK.js} +1 -1
- package/dist/client/assets/right-DppeMCy4.js +1 -0
- package/dist/client/assets/right-GAL5Mw1v.js +1 -0
- package/dist/client/assets/{rocket-DyrYDo8V.js → rocket-CGl4RTV7.js} +1 -1
- package/dist/client/assets/router-DCtl8wqb.js +1 -0
- package/dist/client/assets/runtime-picker-DXu2bOTh.js +1 -0
- package/dist/client/assets/{scope-views-B7PZGlhY.js → scope-views-RUWwCVAr.js} +1 -1
- package/dist/client/assets/scout-voice-CZx60X6E.js +1 -0
- package/dist/client/assets/{scoutbot-markdown-Bz0Vbto2.js → scoutbot-markdown-BKEBSbG0.js} +1 -1
- package/dist/client/assets/{scroll-text-DwC8r2g6.js → scroll-text-DNjxhyO2.js} +1 -1
- package/dist/client/assets/{search-C4VlW_0l.js → search-DT42oyRW.js} +1 -1
- package/dist/client/assets/secondaryNavConfig-CS1svh6n.js +1 -0
- package/dist/client/assets/secondaryNavConfig-D15P1Y9k.css +1 -0
- package/dist/client/assets/{selection-bridge-B5jqyMR9.js → selection-bridge-x3wFUjxj.js} +1 -1
- package/dist/client/assets/{send-horizontal-pOtGI7FM.js → send-horizontal-CH0-fbZE.js} +1 -1
- package/dist/client/assets/{send-to-agent-session-BZGq_ycy.js → send-to-agent-session-DoKCDBJ4.js} +1 -1
- package/dist/client/assets/{server-ms1yxUYJ.js → server-QfsgMLk1.js} +1 -1
- package/dist/client/assets/{session-catalog-s-T_w41t.js → session-catalog-CvSdPHPe.js} +1 -1
- package/dist/client/assets/session-recap-lanes-D-eVJnpY.js +1 -0
- package/dist/client/assets/session-recap-queue-41l2XVkI.js +1 -0
- package/dist/client/assets/{session-table-CDx_16xf.js → session-table-L-pns6Zl.js} +1 -1
- package/dist/client/assets/{sessions-view-DzYGsKWS.js → sessions-view-Dc-QAa7O.js} +1 -1
- package/dist/client/assets/{settings-TJIkkZ0P.js → settings-BVh7kldq.js} +1 -1
- package/dist/client/assets/{shared-work-artifacts-4IIQXQfc.js → shared-work-artifacts-DfNl9KTo.js} +1 -1
- package/dist/client/assets/{sliders-horizontal-CHf3ntw0.js → sliders-horizontal-782VC_yy.js} +1 -1
- package/dist/client/assets/{sparkles-BbOFw3d0.js → sparkles-BjHq_DNK.js} +1 -1
- package/dist/client/assets/{sse-v5QLsOHV.js → sse-BCPRocpq.js} +1 -1
- package/dist/client/assets/system-surfaces-redesign-q2BmCB7e.css +1 -0
- package/dist/client/assets/{tail-events-DQ46QBW1.js → tail-events-d0yAYxR0.js} +1 -1
- package/dist/client/assets/{terminal-96JWDYDL.js → terminal-hQKQygcf.js} +1 -1
- package/dist/client/assets/{terminal-relay-Bfx8pg80.js → terminal-relay-Bxs1hp-j.js} +1 -1
- package/dist/client/assets/{terminal-sessions-Ch9aYlgi.js → terminal-sessions-3RfJpen8.js} +1 -1
- package/dist/client/assets/{terminal-takeover-BlpxpvSp.js → terminal-takeover-Ay5C2c-M.js} +1 -1
- package/dist/client/assets/theme-vars-DNK0nn3k.js +1 -0
- package/dist/client/assets/triangle-alert-CHoRGdVO.js +1 -0
- package/dist/client/assets/use-beside-DoRC1nt0.js +1 -0
- package/dist/client/assets/{use-conversation-list-A_YUf8lo.js → use-conversation-list-CY4JciOV.js} +1 -1
- package/dist/client/assets/{use-fleet-active-asks-DFs_u-vM.js → use-fleet-active-asks-CymmXWH4.js} +1 -1
- package/dist/client/assets/{use-mesh-node-state-Ck9CYplv.js → use-mesh-node-state-BvaqtODo.js} +1 -1
- package/dist/client/assets/{use-mesh-ops-items-Be1WmwCg.js → use-mesh-ops-items-BSYaqH_0.js} +1 -1
- package/dist/client/assets/{use-reduced-motion-D7n3vK8t.js → use-reduced-motion-3gMYZNIp.js} +1 -1
- package/dist/client/assets/use-scout-dev-flags-DS_pYYQd.js +1 -0
- package/dist/client/assets/{useAgentHoverCard-Dr-OjNFF.js → useAgentHoverCard-BANmpjMh.js} +1 -1
- package/dist/client/assets/useContentSecondaryNav-C6OBu-3_.js +1 -0
- package/dist/client/assets/{useEmbedHeadline-BL8wQawZ.js → useEmbedHeadline-D6pJRxUg.js} +1 -1
- package/dist/client/assets/usePersistentState-B8lP7TRb.js +1 -0
- package/dist/client/assets/{usePierreRuntime-DJkRHMoe.js → usePierreRuntime-BAQdiN0L.js} +1 -1
- package/dist/client/assets/useSidebarCollapse-OL_8J5cL.js +1 -0
- package/dist/client/assets/users-BUjx36gx.js +1 -0
- package/dist/client/assets/voice-paths-CJUuBPh3.css +1 -0
- package/dist/client/assets/voice-turn-DftA0iIb.css +1 -0
- package/dist/client/assets/voice-turn-ledger-BMZxlSjg.js +1 -0
- package/dist/client/assets/{wrench-BsMTSeji.js → wrench-DR0i5BU7.js} +1 -1
- package/dist/client/assets/{x-DI1ktCYb.js → x-DAehov0E.js} +1 -1
- package/dist/client/assets/{xterm-B1YBE4Gq.js → xterm-BXQiLVnI.js} +1 -1
- package/dist/client/assets/{zap-sKPkh4sQ.js → zap-CEjZNZbI.js} +1 -1
- package/dist/client/crew/sheets/eye-plate-v1/look-down-left.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/look-down-right.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/look-down.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/look-up-left.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/look-up-right.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/look-up.webp +0 -0
- package/dist/client/crew/sheets/sprout/blink-half.webp +0 -0
- package/dist/client/crew/sheets/sprout/blink-shut.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-down-left.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-down-right.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-down.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-left.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-right.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-up-left.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-up-right.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-up.webp +0 -0
- package/dist/client/index.html +15 -3
- package/dist/drizzle/0019_session_actor_targets.sql +227 -0
- package/dist/drizzle/0020_message_reactions.sql +11 -0
- package/dist/drizzle/README.md +19 -0
- package/dist/drizzle/meta/_journal.json +14 -0
- package/dist/highlights-eq9cgrbb.scm +604 -0
- package/dist/highlights-ghv9g403.scm +205 -0
- package/dist/highlights-hk7bwhj4.scm +284 -0
- package/dist/highlights-r812a2qc.scm +150 -0
- package/dist/highlights-x6tmsnaa.scm +115 -0
- package/dist/injections-73j83es3.scm +27 -0
- package/dist/main.mjs +1721 -837
- package/dist/node/main.mjs +264 -39
- package/dist/pairing-runtime-controller.mjs +1090 -570
- package/dist/runtime/base-daemon.mjs +14272 -61
- package/dist/runtime/broker-daemon.mjs +16999 -1243
- package/dist/runtime/broker-process-manager.mjs +101 -6
- package/dist/runtime/mesh-discover.mjs +101 -6
- package/dist/scout-control-plane-web.mjs +27057 -6178
- package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
- package/dist/update-helper.mjs +294 -56
- package/package.json +2 -2
- package/dist/client/assets/ActivityScreen-DCALiEXY.js +0 -1
- package/dist/client/assets/AgentAdventures-NwTKeF0F.js +0 -1
- package/dist/client/assets/AgentAvatar-BIwg54Tj.js +0 -1
- package/dist/client/assets/AgentConfigurationScreen-B2Hw0ce1.js +0 -1
- package/dist/client/assets/AgentDefinitionsWorkspace-CwZJ833X.js +0 -1
- package/dist/client/assets/AgentFloorView-l2wNKFob.js +0 -1
- package/dist/client/assets/AgentInfoScreen-ClZM1wQb.js +0 -1
- package/dist/client/assets/AgentLanesEmbedScreen-DqHwqY0X.js +0 -1
- package/dist/client/assets/AgentLanesView-aAyC7lHf.js +0 -2
- package/dist/client/assets/AgentMasterScreen-By6DN0jF.js +0 -1
- package/dist/client/assets/AgentSessions-Cox2zS-e.js +0 -6
- package/dist/client/assets/AgentsConsole-Dq0S_hRA.js +0 -1
- package/dist/client/assets/AgentsScreen-Bi9Lx47B.js +0 -1
- package/dist/client/assets/AgentsSubnav-BOobgtGE.js +0 -1
- package/dist/client/assets/BriefingDetailScreen-sprFl4Nk.js +0 -1
- package/dist/client/assets/BrokerScreen-CejzhRsB.js +0 -8
- package/dist/client/assets/ConversationComposer-B7RU6LKd.js +0 -1
- package/dist/client/assets/ConversationFeedRows-DVqnZQH0.js +0 -1
- package/dist/client/assets/ConversationHeader-CCSU8uo_.js +0 -1
- package/dist/client/assets/ConversationScreen-Brfas2y0.css +0 -1
- package/dist/client/assets/ConversationScreen-tTP6B_F-.js +0 -2
- package/dist/client/assets/ConversationStatus-CK-YfLpi.js +0 -1
- package/dist/client/assets/CrewAvatar-CJhuqTsJ.js +0 -1
- package/dist/client/assets/CrewWorkspaces-4O8dgRUD.js +0 -1
- package/dist/client/assets/CrewWorkspaces-Diq11KDq.css +0 -1
- package/dist/client/assets/FlightObserveScreen-DDXfNbsw.js +0 -1
- package/dist/client/assets/FloorResourcesSheet-Djrgd_ZU.js +0 -1
- package/dist/client/assets/FloorTacticalHUD-Bngao6sn.js +0 -1
- package/dist/client/assets/HarnessMark-Bt47OeHy.js +0 -1
- package/dist/client/assets/HarnessesScreen-M84sFjWY.js +0 -1
- package/dist/client/assets/KnowledgeSearchScreen-WC0WhFio.js +0 -1
- package/dist/client/assets/LaneTraceDetailSheet-mAhj7MJi.js +0 -1
- package/dist/client/assets/MeshScreen-DlfiMlaR.js +0 -1
- package/dist/client/assets/MessagesScreen-BZ7yaGJx.js +0 -1
- package/dist/client/assets/MissionControlView-DpGhxG4a.js +0 -1
- package/dist/client/assets/MissionLeftAgentRow-DhhRRim0.js +0 -1
- package/dist/client/assets/NativeAreaScreen-BQyHHRAM.js +0 -1
- package/dist/client/assets/NativeAreaScreen-Ditv-TYW.js +0 -1
- package/dist/client/assets/NativeAreaScreen-Dq3uPSEI.js +0 -1
- package/dist/client/assets/NewChatComposer-JjLbm3W2.js +0 -19
- package/dist/client/assets/ObserveEmbedScreen-BPiSXXvm.js +0 -2
- package/dist/client/assets/OpenScoutAppShell-CzKbjwCA.js +0 -22
- package/dist/client/assets/OpsAgentsView-CZbtkcQH.js +0 -1
- package/dist/client/assets/OpsScreen-DJq-aBmX.js +0 -1
- package/dist/client/assets/OpsSubnav-9sURjajO.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-q_1tMJIL.js +0 -1
- package/dist/client/assets/ProjectAgentProfileHero-DyEFyTFs.js +0 -1
- package/dist/client/assets/ProjectsInbox-Bs8I__my.js +0 -2
- package/dist/client/assets/ProjectsRail-Deb38OJ1.js +0 -1
- package/dist/client/assets/ProjectsScreen-CgLiYiss.js +0 -1
- package/dist/client/assets/ProjectsThreadAside-C0Yw3yIL.js +0 -1
- package/dist/client/assets/Provider-5Hotn7NQ.js +0 -5
- package/dist/client/assets/RawSessionsTable-DIhmlvk-.js +0 -1
- package/dist/client/assets/RealtimeVoiceScreen-3oU7b7V5.js +0 -1
- package/dist/client/assets/RepoDiffViewerLazy-BQ6ZCrsq.js +0 -2
- package/dist/client/assets/SessionObserve-DaqDhqDI.js +0 -12
- package/dist/client/assets/SessionObserveEvidence-Drv-D8Oh.js +0 -1
- package/dist/client/assets/SessionRefScreen-BOQ1_ydg.js +0 -1
- package/dist/client/assets/SessionsScreen-R8QKvoey.js +0 -1
- package/dist/client/assets/SettingsDrawer-BDapR4E9.js +0 -3
- package/dist/client/assets/SettingsScreen-DirtO7Z0.js +0 -1
- package/dist/client/assets/SharedWorkFloor-BCmdeb3Q.css +0 -1
- package/dist/client/assets/SharedWorkFloor-yPWFLZwX.js +0 -2
- package/dist/client/assets/Terminal-D-DsQlmV.js +0 -4
- package/dist/client/assets/TerminalEmbedScreen-9Gmln759.js +0 -1
- package/dist/client/assets/WorkDetailScreen-CwtRCm_-.js +0 -5
- package/dist/client/assets/WorldActorTalk-uIH2jGqA.js +0 -1
- package/dist/client/assets/WorldMinimap-Blqg0d5r.js +0 -1
- package/dist/client/assets/agent-autocomplete-C7xwIcwd.css +0 -1
- package/dist/client/assets/agent-autocomplete-CeHQpuG9.js +0 -10
- package/dist/client/assets/agents-screen-BMu6PpRY.css +0 -1
- package/dist/client/assets/arrow-down-WoVlkUmg.js +0 -1
- package/dist/client/assets/chunk-JTPDIGGW-ZC-98AHT.js +0 -46
- package/dist/client/assets/chunk-T65CQEWV-CSVUz2rY.js +0 -1
- package/dist/client/assets/chunk-YOZR3KYS-B59jqwO0.js +0 -2
- package/dist/client/assets/content-B5Q4pb9R.js +0 -1
- package/dist/client/assets/content-BK1IfOZs.js +0 -1
- package/dist/client/assets/content-BeEsWLEm.js +0 -1
- package/dist/client/assets/content-BkOwEknW.js +0 -1
- package/dist/client/assets/content-C32W5kAG.js +0 -1
- package/dist/client/assets/content-CoqyLs9v.js +0 -1
- package/dist/client/assets/content-CwpdIS5b.js +0 -1
- package/dist/client/assets/content-DS2OkJ3Q.js +0 -1
- package/dist/client/assets/content-DXKaPDfn.js +0 -1
- package/dist/client/assets/content-DZt5-dkI.js +0 -1
- package/dist/client/assets/content-DbQJH8L1.js +0 -1
- package/dist/client/assets/content-DetoiaHq.js +0 -1
- package/dist/client/assets/content-Dhu3wL7J.js +0 -1
- package/dist/client/assets/content-Dpv34iZu.js +0 -1
- package/dist/client/assets/content-TtQJb61D.js +0 -1
- package/dist/client/assets/content-ymNb2R7g.js +0 -1
- package/dist/client/assets/conversation-model-BGFHoxQ0.js +0 -1
- package/dist/client/assets/conversation-motion-features-9x8uZpwh.js +0 -1
- package/dist/client/assets/conversations-Cbg9h_Af.js +0 -1
- package/dist/client/assets/ctx-panel-F05jXK4Q.css +0 -1
- package/dist/client/assets/discover-C8IOY7_K.js +0 -2
- package/dist/client/assets/embed-entry-CG3CfCbm.js +0 -2
- package/dist/client/assets/home-moving-signal-B7m-ngb2.js +0 -1
- package/dist/client/assets/home-now-card-DduXkHRR.js +0 -1
- package/dist/client/assets/hooks-C6VyQTQe.js +0 -2
- package/dist/client/assets/index-C5cX8dkl.js +0 -1
- package/dist/client/assets/index-C8uS5szO.js +0 -10
- package/dist/client/assets/index-Ck1__1yL.css +0 -1
- package/dist/client/assets/index-ClOOrVG1.js +0 -1
- package/dist/client/assets/index-Crtgfc9I.js +0 -1
- package/dist/client/assets/lane-ask-display-B6iCAVcd.js +0 -18
- package/dist/client/assets/left-B-_z_nqj.js +0 -2
- package/dist/client/assets/left-B1LY7rJc.js +0 -1
- package/dist/client/assets/left-C6bdjWcG.js +0 -2
- package/dist/client/assets/left-CF4iuqlz.js +0 -1
- package/dist/client/assets/left-DLtNyZl1.js +0 -1
- package/dist/client/assets/left-Fpxoq-VY.js +0 -1
- package/dist/client/assets/left-N2wXfTlp.js +0 -1
- package/dist/client/assets/left-advisor-CeIjCKbd.js +0 -1
- package/dist/client/assets/left-agents-upjHVlOj.js +0 -1
- package/dist/client/assets/left-default-08gmdCtb.js +0 -1
- package/dist/client/assets/left-lanes-Cvsp73Hw.js +0 -1
- package/dist/client/assets/left-mission-W1LLaz74.js +0 -1
- package/dist/client/assets/library-DLKBVUJ6.js +0 -1
- package/dist/client/assets/message-markup-DgFSyb3f.js +0 -15
- package/dist/client/assets/mission-control-model-C30vU1Fe.js +0 -1
- package/dist/client/assets/profile-C3KgiZvc.js +0 -1
- package/dist/client/assets/projects-inbox-BIW7nv-H.css +0 -1
- package/dist/client/assets/resolve-panes-DuowGRTk.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-BkTbqteq.js +0 -1
- package/dist/client/assets/right-B9OUA6Ho.js +0 -1
- package/dist/client/assets/right-BDQnjetX.js +0 -1
- package/dist/client/assets/right-BUbKHmRH.js +0 -1
- package/dist/client/assets/right-Ci2IcD4s.js +0 -1
- package/dist/client/assets/right-CmCce3e5.js +0 -1
- package/dist/client/assets/right-D7w0zM5a.js +0 -1
- package/dist/client/assets/right-DIoON_bv.js +0 -1
- package/dist/client/assets/right-E0Jr3VN5.js +0 -1
- package/dist/client/assets/right-lCdAk9dW.js +0 -1
- package/dist/client/assets/router-BKiMcYa7.js +0 -1
- package/dist/client/assets/runtime-picker-DdsttHHc.js +0 -1
- package/dist/client/assets/scout-voice-DOQ_B77g.js +0 -1
- package/dist/client/assets/secondaryNavConfig-DAXIFtVd.js +0 -1
- package/dist/client/assets/secondaryNavConfig-xssF_ubT.css +0 -1
- package/dist/client/assets/system-surfaces-redesign-DKFg4GB5.css +0 -1
- package/dist/client/assets/use-beside-Df-F2Uvg.js +0 -1
- package/dist/client/assets/use-scout-dev-flags-0TXfQcG0.js +0 -1
- package/dist/client/assets/useContentSecondaryNav-CGvMOVGY.js +0 -1
- package/dist/drizzle/meta/0000_snapshot.json +0 -4575
- package/dist/drizzle/meta/0001_snapshot.json +0 -4624
- package/dist/drizzle/meta/0002_snapshot.json +0 -4631
- package/dist/drizzle/meta/0003_snapshot.json +0 -4952
- package/dist/drizzle/meta/0004_snapshot.json +0 -5235
- package/dist/drizzle/meta/0005_snapshot.json +0 -5599
- package/dist/drizzle/meta/0006_snapshot.json +0 -5606
- package/dist/drizzle/meta/0007_snapshot.json +0 -5767
- package/dist/drizzle/meta/0008_snapshot.json +0 -5774
- package/dist/drizzle/meta/0009_snapshot.json +0 -6262
- package/dist/drizzle/meta/0010_snapshot.json +0 -6286
- package/dist/drizzle/meta/0011_snapshot.json +0 -6337
- package/dist/drizzle/meta/0012_snapshot.json +0 -6458
- package/dist/drizzle/meta/0013_snapshot.json +0 -6465
- package/dist/drizzle/meta/0014_snapshot.json +0 -6503
- package/dist/drizzle/meta/0015_snapshot.json +0 -6596
- package/dist/drizzle/meta/0016_snapshot.json +0 -6611
- package/dist/drizzle/meta/0017_snapshot.json +0 -6785
- package/dist/drizzle/meta/0018_snapshot.json +0 -6804
package/dist/update-helper.mjs
CHANGED
|
@@ -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 =
|
|
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(() =>
|
|
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(() =>
|
|
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(() =>
|
|
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(() =>
|
|
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(() =>
|
|
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(() =>
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 = "
|
|
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
|
|
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
|
|
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.
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
31725
|
-
|
|
31726
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
32248
|
+
message = "An interrupted Scout install needs repair \u2014 run `scout install --force`.";
|
|
32014
32249
|
} else {
|
|
32015
32250
|
status = "not-installed";
|
|
32016
|
-
message = "
|
|
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 = `
|
|
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 = `
|
|
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
|
|
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: `
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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}
|
|
32362
|
+
message: `${verb} Scout ${installedAfter} \u2192 ${deps.appPath}${relaunchNote}`
|
|
32125
32363
|
}, renderInstallResult);
|
|
32126
32364
|
} finally {
|
|
32127
32365
|
releaseInstallLock();
|