@openscout/scout 0.2.105 → 0.2.107
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 +26 -0
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/chat.mjs +23 -1
- package/dist/client/assets/ActivityScreen-CZmGwQ2U.js +1 -0
- package/dist/client/assets/{AddProjectForm-CHNJ4NnS.js → AddProjectForm-CusDRiVO.js} +1 -1
- package/dist/client/assets/{AdventureEvidence-B4mEvXeD.js → AdventureEvidence-CyegKk1V.js} +1 -1
- package/dist/client/assets/{AdventureReader-ZsBDQITY.js → AdventureReader-X-hbTOi0.js} +1 -1
- package/dist/client/assets/{AdventureScenery-DSxDlqG1.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-MIEBKw_S.js → AgentDetailCard-DtHT3sCo.js} +1 -1
- package/dist/client/assets/AgentFloorView-DH4jiDgw.js +1 -0
- package/dist/client/assets/{AgentFloorWorld-BTqwmK5G.js → AgentFloorWorld-CjoIa6jA.js} +1 -1
- package/dist/client/assets/AgentInfoScreen-DYtmKkeE.js +1 -0
- package/dist/client/assets/{AgentLaneCard-C4rKLLdT.js → AgentLaneCard-BaZ2g-f8.js} +1 -1
- package/dist/client/assets/{AgentLaneChrome-fGC-ZrJS.js → AgentLaneChrome-TF1SlJSc.js} +1 -1
- package/dist/client/assets/{AgentLaneDetailSheet-BTF4_th9.js → AgentLaneDetailSheet-EzEPsn3g.js} +1 -1
- package/dist/client/assets/{AgentLaneSummaryResize-DgSeA_vS.js → AgentLaneSummaryResize-dpp7YvrX.js} +1 -1
- package/dist/client/assets/AgentLanesEmbedScreen-BlSof_6S.js +1 -0
- package/dist/client/assets/{AgentLanesPreflight-CcS23wij.js → AgentLanesPreflight-Ry-aqDTr.js} +1 -1
- package/dist/client/assets/AgentLanesView-BJi9xXz6.js +2 -0
- package/dist/client/assets/{AgentLiveActions-6Kfr1uOT.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-D67fIBdR.js → AstronautSuit-Cchnc4Ug.js} +1 -1
- package/dist/client/assets/{AtopView-Ck30FbzG.js → AtopView-gkEp4y__.js} +1 -1
- package/dist/client/assets/{BackToPicker-CkBhGRlD.js → BackToPicker-CUkjnoVk.js} +1 -1
- package/dist/client/assets/BriefingDetailScreen-DrlC3qkm.js +1 -0
- package/dist/client/assets/{BriefingsScreen-DTxYMr3a.js → BriefingsScreen-B1HlBMGZ.js} +1 -1
- package/dist/client/assets/{BrokerMetadataPanel-crirZCdo.js → BrokerMetadataPanel-Dk242Yh_.js} +1 -1
- package/dist/client/assets/BrokerScreen-DwOF6bMA.js +8 -0
- package/dist/client/assets/{Canvas-CRP0KjKb.js → Canvas-X9pVSkw3.js} +1 -1
- package/dist/client/assets/{CastPicker-ZPomvOf-.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-ckVkecDO.js → CharacterFamilyPreview-DMfw7UM_.js} +1 -1
- package/dist/client/assets/{ChatAvatar-DKBsbOqk.js → ChatAvatar-C3a_o5Hj.js} +1 -1
- package/dist/client/assets/ChatBits-CsvxbToF.js +1 -0
- package/dist/client/assets/{ChatCollapsedStrip-Co0NmqOO.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-D-iv28LJ.js → CodeDiffPane-DuQRwpgK.js} +1 -1
- package/dist/client/assets/{CodeProjectPicker-CZ3gDdiT.js → CodeProjectPicker-ZQ6gSBpg.js} +1 -1
- package/dist/client/assets/{CodeScreen-CSC-zbP9.js → CodeScreen-BXyKeL5T.js} +1 -1
- package/dist/client/assets/{CommsCanvas-DdNAwjGW.js → CommsCanvas-THp0r_U8.js} +1 -1
- package/dist/client/assets/{CommsDeck-mGWY7Ivi.js → CommsDeck-BVmSMV2V.js} +1 -1
- package/dist/client/assets/{CommsFlowGraph-voDD9M5R.js → CommsFlowGraph-DxoOaLF_.js} +1 -1
- package/dist/client/assets/{CommsFlowMap-C33sgD48.js → CommsFlowMap-Vi8ziCPg.js} +1 -1
- package/dist/client/assets/{CommsSelection-BL8aYD7z.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-6pprBpmq.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-Dp9KBBGY.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/{DataTable-av71ehJV.js → DataTable-aH-jCyDq.js} +1 -1
- package/dist/client/assets/{DispatchAftermath-CcYGUB10.js → DispatchAftermath-66uQAorV.js} +1 -1
- package/dist/client/assets/{DocumentFocusViewer-DlMiEALb.js → DocumentFocusViewer-DJr0v0D_.js} +1 -1
- package/dist/client/assets/{EmbeddableSurfacesLab-CTkO_tQR.js → EmbeddableSurfacesLab-BBa70EhJ.js} +1 -1
- package/dist/client/assets/{EmptyState-CYUwYyAW.js → EmptyState-CZlrHXy-.js} +1 -1
- package/dist/client/assets/{FileViewerPane-Cxhixtks.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-Vj_wVZq1.js → FloorContextSheet-2_NVPQor.js} +1 -1
- package/dist/client/assets/{FloorExchangePanel-CjHSDXad.js → FloorExchangePanel-BU1pPu8K.js} +1 -1
- package/dist/client/assets/{FloorMessagePasses-BG4ebnX5.js → FloorMessagePasses-cLW2UGNP.js} +1 -1
- package/dist/client/assets/{FloorReplay-BoYaGY9t.js → FloorReplay-VFzA6Kxc.js} +1 -1
- package/dist/client/assets/FloorResourcesSheet-C-kQ6Ren.js +1 -0
- package/dist/client/assets/{FloorSavedWork-jbtRs-YE.js → FloorSavedWork-BeHDejWz.js} +1 -1
- package/dist/client/assets/FloorTacticalHUD-CO-iiFpb.js +1 -0
- package/dist/client/assets/{FollowScreen-CupyOgt4.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-Dcm3vf9U.js → HerdrSession-_t7yM8vX.js} +2 -2
- package/dist/client/assets/{HomeHero-pIZtE1cC.js → HomeHero-DouPyNmz.js} +1 -1
- package/dist/client/assets/{HostAdvisorView-Dv5meXo2.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-BmiSOEmp.js → JumpPalette-O1aJE9gR.js} +1 -1
- package/dist/client/assets/{KnowledgeSearchInspector-B8yiM524.js → KnowledgeSearchInspector-32n9baT-.js} +1 -1
- package/dist/client/assets/KnowledgeSearchScreen-Dd6jrQ0A.js +1 -0
- package/dist/client/assets/{LaneToolHoverCard-D2cnTeUd.js → LaneToolHoverCard-CJa110yk.js} +1 -1
- package/dist/client/assets/LaneTraceDetailSheet-DYrd0BIf.js +1 -0
- package/dist/client/assets/{LaneTraceEventFocus-BLhVHwff.js → LaneTraceEventFocus-TbrNHRj_.js} +1 -1
- package/dist/client/assets/{MeshCanvas-BR25OBTJ.js → MeshCanvas-DWZHYh1A.js} +2 -2
- package/dist/client/assets/{MeshCanvasMinimap-ClVolr4-.js → MeshCanvasMinimap-iswYFpIb.js} +1 -1
- package/dist/client/assets/MeshScreen-8nAzQVbm.js +1 -0
- package/dist/client/assets/{MeshTopologyView-BT3ke2D1.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-CafjuseK.js → MissionContextRail-D62-Wis8.js} +1 -1
- package/dist/client/assets/MissionControlView-B9cNPXvl.js +1 -0
- package/dist/client/assets/{MissionFocusOverlay-nhy3hkxQ.js → MissionFocusOverlay-C1zys3Jv.js} +1 -1
- package/dist/client/assets/MissionLeftAgentRow-vycMV77n.js +1 -0
- package/dist/client/assets/{MissionLogPane-DiUf3vWW.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-BQ2wQ5gp.js → NewAgentModal-Bh-L-emz.js} +1 -1
- package/dist/client/assets/NewChatComposer-C97-iTMK.js +19 -0
- package/dist/client/assets/{NewChatOrigin-C8ROO4ps.js → NewChatOrigin-DFbF_XvR.js} +1 -1
- package/dist/client/assets/{NodeDetailPanel-BNTqYC7m.js → NodeDetailPanel-CElOEpCh.js} +1 -1
- package/dist/client/assets/{NodeMenu-CcOeFRCB.js → NodeMenu-B-jjHf1c.js} +1 -1
- package/dist/client/assets/ObserveEmbedScreen-B7Qt69Ms.js +2 -0
- package/dist/client/assets/{ObserveTextFlow-CC5mnngm.js → ObserveTextFlow-PFnG_10h.js} +2 -2
- package/dist/client/assets/{ObservedTopologyPanel-DF6tRZL_.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-C8z22pJ2.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-DUPqXMZh.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-C8fxndAh.js → RenderedWorkerSprite-Dhlyg89J.js} +1 -1
- package/dist/client/assets/{ReplayClock-DUVJjrIu.js → ReplayClock-348f17bW.js} +1 -1
- package/dist/client/assets/{ReplayLog-Bek1Vc4W.js → ReplayLog-CBnAM3ui.js} +1 -1
- package/dist/client/assets/{ReplayOutpost-DlRg3172.js → ReplayOutpost-DyRPfNFx.js} +1 -1
- package/dist/client/assets/{RepoDiffEmbedScreen-CVUMnt6A.js → RepoDiffEmbedScreen-BWxvRDrS.js} +1 -1
- package/dist/client/assets/{RepoDiffPageScreen-D9-s5PyB.js → RepoDiffPageScreen-DN94irmY.js} +1 -1
- package/dist/client/assets/{RepoDiffViewer-D7FN-oyY.js → RepoDiffViewer-_4JVXBIW.js} +1 -1
- package/dist/client/assets/RepoDiffViewerLazy-XGVC3WXv.js +2 -0
- package/dist/client/assets/{ReposScreen-BQ7HO1om.js → ReposScreen-uMCpt0e9.js} +2 -2
- package/dist/client/assets/{RiggedWorkerCharacter-CJMWlvV-.js → RiggedWorkerCharacter-q6QRc7_o.js} +1 -1
- package/dist/client/assets/{SageModelStudio-B526NSnw.js → SageModelStudio-CNDhZhgD.js} +1 -1
- package/dist/client/assets/{ScoutDeckSurface-ChkvGyEW.js → ScoutDeckSurface-CUaU4R6T.js} +1 -1
- package/dist/client/assets/{ScoutSurface-6g1f5chk.js → ScoutSurface-3_25USO_.js} +1 -1
- package/dist/client/assets/{ScoutbotFxLab-BuwBdnPf.js → ScoutbotFxLab-CRqhYe0a.js} +1 -1
- package/dist/client/assets/{SecondaryNav-Bs-_VwTC.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-C2wf35-P.js → SessionEmbedScreen-D0zFmou-.js} +1 -1
- package/dist/client/assets/SessionHopMenu-E6VJZrE0.js +1 -0
- package/dist/client/assets/{SessionObserve-B64YsYhy.js → SessionObserve-DXxBvejJ.js} +9 -9
- 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-V04kD5T9.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-XwFI-pCp.js → ShikiPane-CRtTYkMj.js} +1 -1
- package/dist/client/assets/{SlidePanel-BMpkXai_.js → SlidePanel-_CHAQdOa.js} +1 -1
- package/dist/client/assets/SpaceSwitcher-BLgSCf_T.js +1 -0
- package/dist/client/assets/{SpriteAvatar-aHeF4ZQZ.js → SpriteAvatar-CpZWf54-.js} +1 -1
- package/dist/client/assets/{SproutActionSprite-DI5N3gOj.js → SproutActionSprite-BSiTS4en.js} +1 -1
- package/dist/client/assets/{StatusPill-Dw4LP7wu.js → StatusPill-2gCP6H7A.js} +1 -1
- package/dist/client/assets/{TailView-BofjmUMJ.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-CwbQhXcI.js → TerminalHeaderMount-Cq4OD_xN.js} +1 -1
- package/dist/client/assets/{TerminalRelay--qOBwnbR.js → TerminalRelay-DrikpUSJ.js} +3 -3
- package/dist/client/assets/{TextDocumentSurface-BK6Qy41F.js → TextDocumentSurface-D52m7Vd8.js} +1 -1
- package/dist/client/assets/{TmuxPeek-DpUT9Tpc.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-D35fOnQj.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-t8AEyx3Q.js → WorkFilesViewer-vNt01sDd.js} +1 -1
- package/dist/client/assets/{WorkRunView-_mhG_FR2.js → WorkRunView-BDkR7Edq.js} +1 -1
- package/dist/client/assets/WorldActorTalk-BvSg_b1y.js +1 -0
- package/dist/client/assets/{WorldCharacter-BRrj3MQN.js → WorldCharacter-CIIlutQq.js} +1 -1
- package/dist/client/assets/WorldMinimap-B6HNgcDe.js +1 -0
- package/dist/client/assets/{WorldSky-D-RJzSa6.js → WorldSky-Jm2Z6dfW.js} +1 -1
- package/dist/client/assets/{activity-BJqFrZyB.js → activity-CIlFrfPJ.js} +1 -1
- package/dist/client/assets/{addon-fit-CHohcvS3.js → addon-fit-dFpj9Kfq.js} +1 -1
- package/dist/client/assets/{addon-webgl-CaRy2x2b.js → addon-webgl-BFCGRtGh.js} +1 -1
- package/dist/client/assets/{agent-essentials-bKWYOZaH.js → agent-essentials-BGGvT5G6.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-BplZUa_0.js → agent-specialization-DDc7mLCW.js} +1 -1
- package/dist/client/assets/agents-screen-BYakbO50.css +1 -0
- package/dist/client/assets/{arc.es-CubLvQ4W.js → arc.es-C1SQHJ3k.js} +1 -1
- package/dist/client/assets/{arrow-left-DFfKAq0d.js → arrow-left-MVUKauwQ.js} +1 -1
- package/dist/client/assets/{arrow-right-DmAWnyAH.js → arrow-right-Bp-FpE5V.js} +1 -1
- package/dist/client/assets/{arrow-up-right-B0aLKiyF.js → arrow-up-right-BPedAgxO.js} +1 -1
- package/dist/client/assets/{book-open-BL9qvhEI.js → book-open-CV98WMSp.js} +1 -1
- package/dist/client/assets/{bot-BhAVbcCA.js → bot-B4zLQ4IN.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-g7D7-c1J.js → check-lrJ3a73a.js} +1 -1
- package/dist/client/assets/{chevron-down-CDzRQQGl.js → chevron-down-l1mrh5S9.js} +1 -1
- package/dist/client/assets/{chevron-right-DKGTLiqc.js → chevron-right-DrfqcerI.js} +1 -1
- package/dist/client/assets/{chevron-up-DX7R6KY2.js → chevron-up-CETZJzjV.js} +1 -1
- package/dist/client/assets/{chunk-HRAB3GC3-Dvk_QpRq.js → chunk-HRAB3GC3-DbVLgbWX.js} +1 -1
- package/dist/client/assets/{clock-CQb4FeMf.js → clock-BV1aqPkK.js} +1 -1
- package/dist/client/assets/{code-xml-Cmadr3pQ.js → code-xml-BhcNbLWU.js} +1 -1
- package/dist/client/assets/{coffee-ljG1_krY.js → coffee-D7EAOdCk.js} +1 -1
- package/dist/client/assets/{compass-CvzkzkIh.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-CKJ9zb7Z.js → content-nGlEZhUI.js} +1 -1
- package/dist/client/assets/{content-D1Ze_FG9.js → content-oyzDM-LK.js} +1 -1
- package/dist/client/assets/content-x1PHxED7.js +1 -0
- package/dist/client/assets/content-zX3ZY3T9.js +1 -0
- package/dist/client/assets/{conversation-icons-CIRaxmid.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-BGOC1tJB.js → copy-xKeM5ZtU.js} +1 -1
- package/dist/client/assets/{cpu-Q6nrHFTN.js → cpu-BOTa_WLr.js} +1 -1
- package/dist/client/assets/{createLucideIcon-ChvMq-zl.js → createLucideIcon-zZ8Hx7er.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-BVccgH0n.js → external-link-CUObqmgX.js} +1 -1
- package/dist/client/assets/{eye-CsGfEVR6.js → eye-LrO-cXQt.js} +1 -1
- package/dist/client/assets/{file-code-corner-Be6da5l3.js → file-code-corner-CsU7jJpu.js} +1 -1
- package/dist/client/assets/{file-text-DP6txVW-.js → file-text-CnISiiw6.js} +1 -1
- package/dist/client/assets/{flag-DAFE2wZ5.js → flag-C4wl8z2-.js} +1 -1
- package/dist/client/assets/fleet-roll-call-BUgf7w-V.css +1 -0
- package/dist/client/assets/{folder-B_S7gBVr.js → folder-D5prSkzz.js} +1 -1
- package/dist/client/assets/{gauge-DQCGlE3o.js → gauge-D9_5iJEm.js} +1 -1
- package/dist/client/assets/{gestures-CofqY4Km.js → gestures-QZub3Ot9.js} +1 -1
- package/dist/client/assets/{git-branch-DcUCsWdJ.js → git-branch-B0_fPLO7.js} +1 -1
- package/dist/client/assets/{go-shortcuts-KQy-ZOpV.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-CvU8B61b.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-kkXUq-zf.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-DReVb7jZ.js → index-EsrkGBcv.js} +8 -8
- package/dist/client/assets/index-gGHPA-By.js +1 -0
- package/dist/client/assets/{inspector-panel-CLU7wjnT.js → inspector-panel-BkgUDn6G.js} +2 -2
- package/dist/client/assets/{keyboard-nav-CJXPaHXj.js → keyboard-nav-DDHegDbx.js} +1 -1
- package/dist/client/assets/{lane-roster-store-Ch9t6lb0.js → lane-roster-store-D-RSWjb-.js} +1 -1
- package/dist/client/assets/{layers-BOwyWodP.js → layers-C8PDiMul.js} +1 -1
- package/dist/client/assets/{layout-grid-B36Qsh0y.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-DNUsuPWz.js → loader-circle-OvccU82H.js} +1 -1
- package/dist/client/assets/{local-agents-I40PawYA.js → local-agents-BqnoxJrq.js} +1 -1
- package/dist/client/assets/log-in-7SnYqW5w.js +1 -0
- package/dist/client/assets/{machine-children-CdhNzDF0.js → machine-children-DxcqCLmd.js} +1 -1
- package/dist/client/assets/media-blobs-Bi8pxr1u.js +1 -0
- package/dist/client/assets/{mentions-Ck_Vjnyp.js → mentions-ByUvhS-v.js} +1 -1
- package/dist/client/assets/{mesh-ops-DSlvHp-D.js → mesh-ops-CiZ8xSAx.js} +1 -1
- package/dist/client/assets/{mesh-view-store-C1-mdP3P.js → mesh-view-store-DZvJC4KU.js} +1 -1
- package/dist/client/assets/{message-circle-cI5_A5mj.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-CJW4WRlo.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-p_cboAm4.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-C7_cHlkC.js → monitor-DTTYEb73.js} +1 -1
- package/dist/client/assets/{nav-destinations-CU_euC-Q.js → nav-destinations-uorRqFxf.js} +1 -1
- package/dist/client/assets/{observe-CtS0l3zu.js → observe-BJqERJVj.js} +1 -1
- package/dist/client/assets/{page-status-DwFR4wSw.js → page-status-BswZLqvA.js} +1 -1
- package/dist/client/assets/{panel-right-qP17MwMl.js → panel-right-Bv7sP_fc.js} +1 -1
- package/dist/client/assets/paperclip-BjcuP_Hx.js +1 -0
- package/dist/client/assets/{pause-B_hliKuR.js → pause-C2XTlkjs.js} +1 -1
- package/dist/client/assets/{persistent-state-BUsTTZFE.js → persistent-state-KRk_yb0q.js} +1 -1
- package/dist/client/assets/{pin-Oi4qHR6M.js → pin-C2mFOV1l.js} +1 -1
- package/dist/client/assets/{play-CVeRmqLH.js → play-FT6K3It1.js} +1 -1
- package/dist/client/assets/{plus-D5NLH_fM.js → plus-DFDDeGKu.js} +1 -1
- package/dist/client/assets/profile-DTmzN16I.js +1 -0
- package/dist/client/assets/{projects-inbox-CfwxCTdN.js → projects-inbox-C0FUCv_p.js} +1 -1
- package/dist/client/assets/projects-inbox-ColX6lpx.css +1 -0
- package/dist/client/assets/{provider-DwmCoSlc.js → provider-Dojd8quC.js} +1 -1
- package/dist/client/assets/{proxy-DgzP27W8.js → proxy-AJsmwA6h.js} +1 -1
- package/dist/client/assets/{radio-Cas2qg1D.js → radio-DRoOZsws.js} +1 -1
- package/dist/client/assets/{refresh-cw-IcD2lPoT.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-cjPTwPXS.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-DAqYvu8I.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-Dl3ml9OZ.js → scope-views-RUWwCVAr.js} +1 -1
- package/dist/client/assets/scout-voice-CZx60X6E.js +1 -0
- package/dist/client/assets/{scoutbot-markdown-DwvGQOWo.js → scoutbot-markdown-BKEBSbG0.js} +1 -1
- package/dist/client/assets/{scroll-text-B0tKI9Sg.js → scroll-text-DNjxhyO2.js} +1 -1
- package/dist/client/assets/{search-UsM-9-_W.js → search-DT42oyRW.js} +1 -1
- package/dist/client/assets/secondaryNavConfig-CS1svh6n.js +1 -0
- package/dist/client/assets/{selection-bridge-OTS2iFkt.js → selection-bridge-x3wFUjxj.js} +1 -1
- package/dist/client/assets/{send-horizontal-BlQsRK6C.js → send-horizontal-CH0-fbZE.js} +1 -1
- package/dist/client/assets/{send-to-agent-session-C1mgqdow.js → send-to-agent-session-DoKCDBJ4.js} +1 -1
- package/dist/client/assets/{server-DBlPW0Mp.js → server-QfsgMLk1.js} +1 -1
- package/dist/client/assets/{session-catalog-CnpZMB7C.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-CGkfG5Yd.js → session-table-L-pns6Zl.js} +1 -1
- package/dist/client/assets/{sessions-view-Bge4XZ4I.js → sessions-view-Dc-QAa7O.js} +1 -1
- package/dist/client/assets/{settings-C69Zjrpq.js → settings-BVh7kldq.js} +1 -1
- package/dist/client/assets/{sliders-horizontal-6bzeod7c.js → sliders-horizontal-782VC_yy.js} +1 -1
- package/dist/client/assets/{sparkles-Cc5lPZRv.js → sparkles-BjHq_DNK.js} +1 -1
- package/dist/client/assets/{sse-A8AyLH0g.js → sse-BCPRocpq.js} +1 -1
- package/dist/client/assets/system-surfaces-redesign-q2BmCB7e.css +1 -0
- package/dist/client/assets/{tail-events-C4WdhVeK.js → tail-events-d0yAYxR0.js} +1 -1
- package/dist/client/assets/{terminal-DMZjX1es.js → terminal-hQKQygcf.js} +1 -1
- package/dist/client/assets/{terminal-relay-mO89dX-Y.js → terminal-relay-Bxs1hp-j.js} +1 -1
- package/dist/client/assets/{terminal-takeover-CZZsnPzj.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-D3cJpA5p.js → use-beside-DoRC1nt0.js} +1 -1
- package/dist/client/assets/{use-conversation-list-D5EnpVba.js → use-conversation-list-CY4JciOV.js} +1 -1
- package/dist/client/assets/{use-fleet-active-asks-D_QOmjg5.js → use-fleet-active-asks-CymmXWH4.js} +1 -1
- package/dist/client/assets/{use-mesh-node-state-3V3ADQ-G.js → use-mesh-node-state-BvaqtODo.js} +1 -1
- package/dist/client/assets/{use-mesh-ops-items-DI9GKWlF.js → use-mesh-ops-items-BSYaqH_0.js} +1 -1
- package/dist/client/assets/{use-reduced-motion-CiaZHMnk.js → use-reduced-motion-3gMYZNIp.js} +1 -1
- package/dist/client/assets/{use-scout-dev-flags-CkdAHlDR.js → use-scout-dev-flags-DS_pYYQd.js} +1 -1
- package/dist/client/assets/{useAgentHoverCard-A3QGXqIy.js → useAgentHoverCard-BANmpjMh.js} +1 -1
- package/dist/client/assets/useContentSecondaryNav-C6OBu-3_.js +1 -0
- package/dist/client/assets/{useEmbedHeadline-atkQVfGw.js → useEmbedHeadline-D6pJRxUg.js} +1 -1
- package/dist/client/assets/usePersistentState-B8lP7TRb.js +1 -0
- package/dist/client/assets/{usePierreRuntime-DTvcwISe.js → usePierreRuntime-BAQdiN0L.js} +1 -1
- package/dist/client/assets/useSidebarCollapse-OL_8J5cL.js +1 -0
- package/dist/client/assets/{users-RLK3P5U4.js → users-BUjx36gx.js} +1 -1
- 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-B4maQJai.js → wrench-DR0i5BU7.js} +1 -1
- package/dist/client/assets/{x-rlMdRqJF.js → x-DAehov0E.js} +1 -1
- package/dist/client/assets/{xterm-B1zHHOLQ.js → xterm-BXQiLVnI.js} +1 -1
- package/dist/client/assets/{zap-B4X0OrEw.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 +2 -2
- package/dist/drizzle/0020_message_reactions.sql +11 -0
- package/dist/drizzle/meta/_journal.json +7 -0
- package/dist/main.mjs +542 -150
- package/dist/node/main.mjs +131 -17
- package/dist/pairing-runtime-controller.mjs +375 -78
- package/dist/runtime/base-daemon.mjs +98 -5
- package/dist/runtime/broker-daemon.mjs +1879 -1198
- package/dist/runtime/broker-process-manager.mjs +96 -3
- package/dist/runtime/mesh-discover.mjs +96 -3
- package/dist/scout-control-plane-web.mjs +4817 -1616
- package/dist/update-helper.mjs +211 -39
- package/package.json +5 -3
- package/server.json +31 -0
- package/dist/client/assets/ActivityScreen-CcDdQTBK.js +0 -1
- package/dist/client/assets/AgentAdventures-BxrYq_2v.js +0 -1
- package/dist/client/assets/AgentAvatar-NZOqcsB2.js +0 -1
- package/dist/client/assets/AgentConfigurationScreen-BhD1PEAM.js +0 -1
- package/dist/client/assets/AgentDefinitionsWorkspace-BqS6MXqF.js +0 -1
- package/dist/client/assets/AgentFloorView-A0dDRlRV.js +0 -1
- package/dist/client/assets/AgentInfoScreen-DuaN0sgE.js +0 -1
- package/dist/client/assets/AgentLanesEmbedScreen-CeNiaZ9_.js +0 -1
- package/dist/client/assets/AgentLanesView-WZhEDBFE.js +0 -2
- package/dist/client/assets/AgentMasterScreen-DUDUTAnU.js +0 -1
- package/dist/client/assets/AgentSessions-CO1WGa8Z.js +0 -6
- package/dist/client/assets/AgentsConsole-BQOWkj35.js +0 -1
- package/dist/client/assets/AgentsScreen-BMNAj1PH.js +0 -1
- package/dist/client/assets/AgentsSubnav-CeHhuzyM.js +0 -1
- package/dist/client/assets/BriefingDetailScreen-yZG8_m4h.js +0 -1
- package/dist/client/assets/BrokerScreen-CT37VQiL.js +0 -8
- package/dist/client/assets/ChannelComposer-BVItWlEz.js +0 -1
- package/dist/client/assets/ChannelSidebar-B-2spawY.js +0 -1
- package/dist/client/assets/ChatBits-CLJ71hTY.js +0 -1
- package/dist/client/assets/ChatRightPanel-pKQtkAgl.js +0 -1
- package/dist/client/assets/ChatSpaceSurface-NrLwdPkE.js +0 -1
- package/dist/client/assets/ChatSpaceTheme-BPMgPdVK.css +0 -1
- package/dist/client/assets/ChatSpaceTheme-D37Jk7bl.js +0 -1
- package/dist/client/assets/ConversationComposer-DNcn5U6D.js +0 -1
- package/dist/client/assets/ConversationFeedRows-RnYSa7Io.js +0 -1
- package/dist/client/assets/ConversationHeader-Y9TEJxP_.js +0 -1
- package/dist/client/assets/ConversationScreen-Brfas2y0.css +0 -1
- package/dist/client/assets/ConversationScreen-tpj4cqWs.js +0 -2
- package/dist/client/assets/ConversationStatus-Cv-7hErW.js +0 -1
- package/dist/client/assets/CrewAvatar-zgzC3cbU.js +0 -1
- package/dist/client/assets/CrewWorkspaces-K2jcyLec.js +0 -1
- package/dist/client/assets/FlightObserveScreen-CvzhzuWc.js +0 -1
- package/dist/client/assets/FloorResourcesSheet-_Iy5UqgY.js +0 -1
- package/dist/client/assets/FloorTacticalHUD-BhyOqlL5.js +0 -1
- package/dist/client/assets/HarnessMark-DSvM_H7H.js +0 -1
- package/dist/client/assets/HarnessesScreen-DyjqbZ4k.js +0 -1
- package/dist/client/assets/InviteLandingScreen-xZQ2na1z.js +0 -1
- package/dist/client/assets/InviteSheet--5Zjct25.js +0 -1
- package/dist/client/assets/KnowledgeSearchScreen-BPqAjHnH.js +0 -1
- package/dist/client/assets/LaneTraceDetailSheet-jl4XQmEx.js +0 -1
- package/dist/client/assets/MeshScreen-BW1dMFWF.js +0 -1
- package/dist/client/assets/MessagesScreen-CtNMfIvC.js +0 -1
- package/dist/client/assets/MissionControlView-BjPOViGY.js +0 -1
- package/dist/client/assets/MissionLeftAgentRow-Dms0DBjO.js +0 -1
- package/dist/client/assets/NativeAreaScreen-BQSTo8As.js +0 -1
- package/dist/client/assets/NativeAreaScreen-Brix6xDB.js +0 -1
- package/dist/client/assets/NativeAreaScreen-D7HyQNlM.js +0 -1
- package/dist/client/assets/NewChatComposer-BEXS8vV6.js +0 -19
- package/dist/client/assets/ObserveEmbedScreen-Dh30EjAQ.js +0 -2
- package/dist/client/assets/OpenScoutAppShell-D9pgw36i.js +0 -31
- package/dist/client/assets/OpsAgentsView-D3rM0udq.js +0 -1
- package/dist/client/assets/OpsScreen-DySeNQ1V.js +0 -1
- package/dist/client/assets/OpsSubnav-C9E0r3GZ.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-FUav75j2.js +0 -1
- package/dist/client/assets/ProjectAgentProfileHero-BLK0EwMg.js +0 -1
- package/dist/client/assets/ProjectsInbox-DfCXReZK.js +0 -2
- package/dist/client/assets/ProjectsRail-CELVubfJ.js +0 -1
- package/dist/client/assets/ProjectsScreen-DMw4TLKy.js +0 -1
- package/dist/client/assets/ProjectsThreadAside-D1Sh4fnX.js +0 -1
- package/dist/client/assets/Provider-CNZluAZb.js +0 -5
- package/dist/client/assets/RailToggle-BwmY70B8.js +0 -1
- package/dist/client/assets/RawSessionsTable-6OVJq0JZ.js +0 -1
- package/dist/client/assets/RealtimeVoiceScreen-D41TYY0x.js +0 -9
- package/dist/client/assets/RepoDiffViewerLazy-BpMR7tlx.js +0 -2
- package/dist/client/assets/SessionObserveEvidence-CS1aQBpQ.js +0 -1
- package/dist/client/assets/SessionRefScreen-DURV0MpF.js +0 -1
- package/dist/client/assets/SessionsScreen-D71ZR-8t.js +0 -1
- package/dist/client/assets/SettingsDrawer-Nz98oBVl.js +0 -3
- package/dist/client/assets/SettingsScreen-CYBHal6y.js +0 -1
- package/dist/client/assets/SharedWorkFloor-BCmdeb3Q.css +0 -1
- package/dist/client/assets/SharedWorkFloor-C0xxW4SN.js +0 -2
- package/dist/client/assets/SpaceSwitcher-BfeIf-ad.js +0 -1
- package/dist/client/assets/Terminal-jIqnIZZ6.js +0 -4
- package/dist/client/assets/TerminalEmbedScreen-3XsjuySR.js +0 -1
- package/dist/client/assets/WorkDetailScreen-Bcf_yHhU.js +0 -5
- package/dist/client/assets/WorldActorTalk-CKerDikx.js +0 -1
- package/dist/client/assets/WorldMinimap-DOptgrc4.js +0 -1
- package/dist/client/assets/agent-autocomplete-C7xwIcwd.css +0 -1
- package/dist/client/assets/agent-autocomplete-_u9o5EZu.js +0 -2
- package/dist/client/assets/agents-screen-BMu6PpRY.css +0 -1
- package/dist/client/assets/at-sign-DM7xeppo.js +0 -1
- package/dist/client/assets/chat-api-BPVC0asu.js +0 -1
- package/dist/client/assets/chat-space-model-B6Jg2CY4.js +0 -4
- package/dist/client/assets/content-0AXa0klu.js +0 -1
- package/dist/client/assets/content-BEyJ19Lx.js +0 -1
- package/dist/client/assets/content-BN5weWKW.js +0 -1
- package/dist/client/assets/content-BNokkm7C.js +0 -1
- package/dist/client/assets/content-BV4PUM9q.js +0 -1
- package/dist/client/assets/content-BxUPlcx5.js +0 -1
- package/dist/client/assets/content-CIC5sku8.js +0 -1
- package/dist/client/assets/content-CdkTyxqk.js +0 -1
- package/dist/client/assets/content-CnhhSCZq.js +0 -1
- package/dist/client/assets/content-DY3F9Vfr.js +0 -1
- package/dist/client/assets/content-DrKBYpcb.js +0 -1
- package/dist/client/assets/content-LSStQYj5.js +0 -1
- package/dist/client/assets/content-YvU-D0hF.js +0 -1
- package/dist/client/assets/content-oKQMyVnH.js +0 -1
- package/dist/client/assets/conversation-model-m8HhzroS.js +0 -1
- package/dist/client/assets/conversation-motion-features-D9PxLoDt.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-DlwbftpC.js +0 -2
- package/dist/client/assets/embed-entry-c0lwtjBG.js +0 -2
- package/dist/client/assets/home-moving-signal-BIHUGNfI.js +0 -1
- package/dist/client/assets/home-now-card-CaLgZze2.js +0 -1
- package/dist/client/assets/hooks-DaUOREpP.js +0 -2
- package/dist/client/assets/index-CGbs0SBm.css +0 -1
- package/dist/client/assets/index-CbqBwfIW.js +0 -1
- package/dist/client/assets/index-CyPMl7Up.js +0 -1
- package/dist/client/assets/index-PQpJveGO.js +0 -1
- package/dist/client/assets/left-0vBrvrBG.js +0 -2
- package/dist/client/assets/left-C6SyaqlJ.js +0 -1
- package/dist/client/assets/left-CTuXysZR.js +0 -2
- package/dist/client/assets/left-Cc6s4DT2.js +0 -1
- package/dist/client/assets/left-DF5caiyh.js +0 -1
- package/dist/client/assets/left-DgT4tWCx.js +0 -1
- package/dist/client/assets/left-R0wppTTr.js +0 -1
- package/dist/client/assets/left-advisor-C-kt8V28.js +0 -1
- package/dist/client/assets/left-agents-thnBO156.js +0 -1
- package/dist/client/assets/left-default-CT42fnpF.js +0 -1
- package/dist/client/assets/left-lanes-CSmZgciK.js +0 -1
- package/dist/client/assets/left-mission-C86x6i9h.js +0 -1
- package/dist/client/assets/library-DdhYL_9v.js +0 -1
- package/dist/client/assets/message-markup-6Tgo4qFJ.js +0 -15
- package/dist/client/assets/mission-control-model-C30vU1Fe.js +0 -1
- package/dist/client/assets/profile-BegEUmB7.js +0 -1
- package/dist/client/assets/projects-inbox-CKPLZN8s.css +0 -1
- package/dist/client/assets/resolve-panes-pfZTezKo.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-D5ksvrb_.js +0 -1
- package/dist/client/assets/right-BDaCJ0CF.js +0 -1
- package/dist/client/assets/right-BP6lXRFS.js +0 -1
- package/dist/client/assets/right-Cb1VCrdj.js +0 -1
- package/dist/client/assets/right-CeFaxfBo.js +0 -1
- package/dist/client/assets/right-Ck2SrYCj.js +0 -1
- package/dist/client/assets/right-D-uv5YfF.js +0 -1
- package/dist/client/assets/right-DJMSICky.js +0 -1
- package/dist/client/assets/right-Dnljs8ah.js +0 -1
- package/dist/client/assets/right-SdCSF8PP.js +0 -1
- package/dist/client/assets/router-C-MF5-mb.js +0 -1
- package/dist/client/assets/runtime-picker-C_AVYF63.js +0 -1
- package/dist/client/assets/scout-voice-CqAyfblr.js +0 -1
- package/dist/client/assets/secondaryNavConfig-DzNHk6IH.js +0 -1
- package/dist/client/assets/system-surfaces-redesign-DKFg4GB5.css +0 -1
- package/dist/client/assets/useContentSecondaryNav-DrL_nkCZ.js +0 -1
- package/dist/client/assets/usePersistentState-Y8XwSTg-.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/drizzle/meta/0019_snapshot.json +0 -6804
|
@@ -2734,6 +2734,31 @@ var init_orchestration_provider_map = __esm(() => {
|
|
|
2734
2734
|
};
|
|
2735
2735
|
});
|
|
2736
2736
|
|
|
2737
|
+
// ../protocol/src/message-reactions.ts
|
|
2738
|
+
var REACTION_EMOJI_QUICK, REACTION_EMOJI_MORE, REACTION_EMOJI_ALLOWLIST, REACTION_EMOJI_ALLOWLIST_SET;
|
|
2739
|
+
var init_message_reactions = __esm(() => {
|
|
2740
|
+
REACTION_EMOJI_QUICK = ["\uD83D\uDC4D", "\u2764\uFE0F", "\uD83D\uDE02", "\uD83D\uDC40", "\uD83C\uDF89"];
|
|
2741
|
+
REACTION_EMOJI_MORE = [
|
|
2742
|
+
"\uD83D\uDD25",
|
|
2743
|
+
"\uD83D\uDE4F",
|
|
2744
|
+
"\uD83D\uDC4F",
|
|
2745
|
+
"\uD83D\uDE22",
|
|
2746
|
+
"\uD83D\uDE2E",
|
|
2747
|
+
"\uD83D\uDE80",
|
|
2748
|
+
"\u2705",
|
|
2749
|
+
"\uD83D\uDCAF",
|
|
2750
|
+
"\uD83E\uDD14",
|
|
2751
|
+
"\uD83D\uDCA1",
|
|
2752
|
+
"\uD83D\uDE4C",
|
|
2753
|
+
"\u2728"
|
|
2754
|
+
];
|
|
2755
|
+
REACTION_EMOJI_ALLOWLIST = [
|
|
2756
|
+
...REACTION_EMOJI_QUICK,
|
|
2757
|
+
...REACTION_EMOJI_MORE
|
|
2758
|
+
];
|
|
2759
|
+
REACTION_EMOJI_ALLOWLIST_SET = new Set(REACTION_EMOJI_ALLOWLIST);
|
|
2760
|
+
});
|
|
2761
|
+
|
|
2737
2762
|
// ../protocol/src/permission-policy.ts
|
|
2738
2763
|
function normalizeScoutPermissionProfile(value) {
|
|
2739
2764
|
const normalized = value?.trim().replaceAll("-", "_");
|
|
@@ -3553,6 +3578,9 @@ var init_terminal_surface_id = () => {};
|
|
|
3553
3578
|
// ../protocol/src/terminal-sessions.ts
|
|
3554
3579
|
var init_terminal_sessions = () => {};
|
|
3555
3580
|
|
|
3581
|
+
// ../protocol/src/terminal-session-resolve.ts
|
|
3582
|
+
var init_terminal_session_resolve = () => {};
|
|
3583
|
+
|
|
3556
3584
|
// ../protocol/src/terminal-workspaces.ts
|
|
3557
3585
|
var init_terminal_workspaces = () => {};
|
|
3558
3586
|
|
|
@@ -3580,6 +3608,8 @@ var init_broker_routes = __esm(() => {
|
|
|
3580
3608
|
machines: "/v1/machines",
|
|
3581
3609
|
machinesScan: "/v1/machines/scan",
|
|
3582
3610
|
messages: "/v1/messages",
|
|
3611
|
+
messageReactions: "/v1/message-reactions",
|
|
3612
|
+
messageReactionsRemove: "/v1/message-reactions/remove",
|
|
3583
3613
|
brokerMessages: "/v1/broker/messages",
|
|
3584
3614
|
eventsStream: "/v1/events/stream",
|
|
3585
3615
|
commands: "/v1/commands",
|
|
@@ -3640,6 +3670,7 @@ var init_src = __esm(() => {
|
|
|
3640
3670
|
init_assigned_roles();
|
|
3641
3671
|
init_orchestrator_prompt();
|
|
3642
3672
|
init_orchestration_provider_map();
|
|
3673
|
+
init_message_reactions();
|
|
3643
3674
|
init_agent_runs();
|
|
3644
3675
|
init_budget();
|
|
3645
3676
|
init_host_integrations();
|
|
@@ -3658,12 +3689,108 @@ var init_src = __esm(() => {
|
|
|
3658
3689
|
init_cursor_transport();
|
|
3659
3690
|
init_terminal_surface_id();
|
|
3660
3691
|
init_terminal_sessions();
|
|
3692
|
+
init_terminal_session_resolve();
|
|
3661
3693
|
init_terminal_workspaces();
|
|
3662
3694
|
init_herdr_workspace_digest();
|
|
3663
3695
|
init_broker_routes();
|
|
3664
3696
|
init_rendezvous();
|
|
3665
3697
|
});
|
|
3666
3698
|
|
|
3699
|
+
// ../runtime/src/sqlite-observation.ts
|
|
3700
|
+
import { createHash as createHash3 } from "crypto";
|
|
3701
|
+
function observeSqliteDatabase(database, options) {
|
|
3702
|
+
const configured = options.thresholdMs ?? Number(process.env.OPENSCOUT_SLOW_DB_MS ?? 100);
|
|
3703
|
+
const threshold = Number.isFinite(configured) && configured >= 0 ? configured : 100;
|
|
3704
|
+
if (threshold === 0)
|
|
3705
|
+
return database;
|
|
3706
|
+
const now = options.now ?? (() => performance.now());
|
|
3707
|
+
const emit = options.emit ?? ((event) => console.warn("[scout-db]", JSON.stringify(event)));
|
|
3708
|
+
const statements = new WeakMap;
|
|
3709
|
+
let windowStart = -Infinity;
|
|
3710
|
+
let emitted = 0;
|
|
3711
|
+
let suppressed = 0;
|
|
3712
|
+
function timed(operation, sql2, call) {
|
|
3713
|
+
const start = now();
|
|
3714
|
+
let outcome = "error";
|
|
3715
|
+
try {
|
|
3716
|
+
const result = call();
|
|
3717
|
+
outcome = "ok";
|
|
3718
|
+
return result;
|
|
3719
|
+
} finally {
|
|
3720
|
+
try {
|
|
3721
|
+
const end = now();
|
|
3722
|
+
const duration = end - start;
|
|
3723
|
+
if (duration >= threshold) {
|
|
3724
|
+
if (end - windowStart >= 60000) {
|
|
3725
|
+
windowStart = end;
|
|
3726
|
+
emitted = 0;
|
|
3727
|
+
}
|
|
3728
|
+
if (emitted >= 10) {
|
|
3729
|
+
suppressed += 1;
|
|
3730
|
+
} else {
|
|
3731
|
+
emitted += 1;
|
|
3732
|
+
const caller = (new Error().stack ?? "").split(`
|
|
3733
|
+
`).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);
|
|
3734
|
+
emit({
|
|
3735
|
+
event: "slow_sqlite",
|
|
3736
|
+
database: options.database,
|
|
3737
|
+
pid: process.pid,
|
|
3738
|
+
operation,
|
|
3739
|
+
queryId: createHash3("sha256").update(sql2).digest("hex").slice(0, 16),
|
|
3740
|
+
durationMs: Math.round(duration * 100) / 100,
|
|
3741
|
+
outcome,
|
|
3742
|
+
suppressed,
|
|
3743
|
+
caller
|
|
3744
|
+
});
|
|
3745
|
+
suppressed = 0;
|
|
3746
|
+
}
|
|
3747
|
+
}
|
|
3748
|
+
} catch {}
|
|
3749
|
+
}
|
|
3750
|
+
}
|
|
3751
|
+
function statementProxy(statement, sql2) {
|
|
3752
|
+
const existing = statements.get(statement);
|
|
3753
|
+
if (existing)
|
|
3754
|
+
return existing;
|
|
3755
|
+
const proxy = bindProxy(statement, (key, method, args) => {
|
|
3756
|
+
if (["all", "get", "run", "values"].includes(key)) {
|
|
3757
|
+
return timed(key, sql2, () => Reflect.apply(method, statement, args));
|
|
3758
|
+
}
|
|
3759
|
+
return Reflect.apply(method, statement, args);
|
|
3760
|
+
});
|
|
3761
|
+
statements.set(statement, proxy);
|
|
3762
|
+
return proxy;
|
|
3763
|
+
}
|
|
3764
|
+
return bindProxy(database, (key, method, args) => {
|
|
3765
|
+
if (["query", "prepare"].includes(key) && typeof args[0] === "string") {
|
|
3766
|
+
const sql2 = args[0];
|
|
3767
|
+
const statement = timed(`${key}.prepare`, sql2, () => Reflect.apply(method, database, args));
|
|
3768
|
+
return statementProxy(statement, sql2);
|
|
3769
|
+
}
|
|
3770
|
+
if (["exec", "run"].includes(key) && typeof args[0] === "string") {
|
|
3771
|
+
return timed(key, args[0], () => Reflect.apply(method, database, args));
|
|
3772
|
+
}
|
|
3773
|
+
return Reflect.apply(method, database, args);
|
|
3774
|
+
});
|
|
3775
|
+
}
|
|
3776
|
+
function bindProxy(target, invoke) {
|
|
3777
|
+
const methods = new Map;
|
|
3778
|
+
return new Proxy(target, {
|
|
3779
|
+
get(object, key) {
|
|
3780
|
+
const value = Reflect.get(object, key, object);
|
|
3781
|
+
if (typeof value !== "function" || key === "constructor")
|
|
3782
|
+
return value;
|
|
3783
|
+
const cached = methods.get(key);
|
|
3784
|
+
if (cached?.original === value)
|
|
3785
|
+
return cached.wrapped;
|
|
3786
|
+
const wrapped = (...args) => invoke(String(key), value, args);
|
|
3787
|
+
methods.set(key, { original: value, wrapped });
|
|
3788
|
+
return wrapped;
|
|
3789
|
+
}
|
|
3790
|
+
});
|
|
3791
|
+
}
|
|
3792
|
+
var init_sqlite_observation = () => {};
|
|
3793
|
+
|
|
3667
3794
|
// ../runtime/src/runtime-adapters.ts
|
|
3668
3795
|
function detectRuntimeHost(globalScope = globalThis) {
|
|
3669
3796
|
return typeof globalScope.Bun === "undefined" ? "node" : "bun";
|
|
@@ -3729,13 +3856,13 @@ function openRuntimeSqliteDatabase(path2, options) {
|
|
|
3729
3856
|
const adapter = controlPlaneSqliteAdapterKind();
|
|
3730
3857
|
if (adapter === "bun-sqlite") {
|
|
3731
3858
|
const { Database } = require2("bun:sqlite");
|
|
3732
|
-
return new Database(path2, options);
|
|
3859
|
+
return observeSqliteDatabase(new Database(path2, options), { database: "runtime" });
|
|
3733
3860
|
}
|
|
3734
3861
|
const { DatabaseSync } = require2("node:sqlite");
|
|
3735
|
-
return new NodeSqliteDatabaseAdapter(new DatabaseSync(path2, {
|
|
3862
|
+
return observeSqliteDatabase(new NodeSqliteDatabaseAdapter(new DatabaseSync(path2, {
|
|
3736
3863
|
open: true,
|
|
3737
3864
|
readOnly: options?.readonly === true
|
|
3738
|
-
}));
|
|
3865
|
+
})), { database: "runtime" });
|
|
3739
3866
|
}
|
|
3740
3867
|
function prepareNodeSqliteSql(sql2) {
|
|
3741
3868
|
const numberedParamIndexes = [];
|
|
@@ -3828,6 +3955,8 @@ class NodeSqliteDatabaseAdapter {
|
|
|
3828
3955
|
}
|
|
3829
3956
|
var require2;
|
|
3830
3957
|
var init_sqlite_adapter = __esm(() => {
|
|
3958
|
+
init_sqlite_observation();
|
|
3959
|
+
init_sqlite_observation();
|
|
3831
3960
|
require2 = createRequire(import.meta.url);
|
|
3832
3961
|
});
|
|
3833
3962
|
|
|
@@ -15274,6 +15403,7 @@ class CodexAppServerTransport {
|
|
|
15274
15403
|
});
|
|
15275
15404
|
}
|
|
15276
15405
|
async ensureStarted() {
|
|
15406
|
+
this.options.signal?.throwIfAborted();
|
|
15277
15407
|
if (this.isAlive() && this.threadId) {
|
|
15278
15408
|
return;
|
|
15279
15409
|
}
|
|
@@ -15305,6 +15435,7 @@ class CodexAppServerTransport {
|
|
|
15305
15435
|
});
|
|
15306
15436
|
throw failure;
|
|
15307
15437
|
}
|
|
15438
|
+
this.options.signal?.throwIfAborted();
|
|
15308
15439
|
const codexExecutable = resolveCodexExecutable();
|
|
15309
15440
|
const launchArgs = normalizeCodexAppServerLaunchArgs(this.options.launchArgs);
|
|
15310
15441
|
const env = this.options.processEnv ?? mergeEnvironmentOverrides(process.env, this.options.env);
|
|
@@ -15688,13 +15819,17 @@ class CodexAppServerClient {
|
|
|
15688
15819
|
return this.transport.ensureOnline();
|
|
15689
15820
|
}
|
|
15690
15821
|
async invoke(prompt, timeoutMs) {
|
|
15822
|
+
const onDelta = this.options.onDelta;
|
|
15823
|
+
const signal = this.options.signal;
|
|
15691
15824
|
return this.enqueue(async () => {
|
|
15825
|
+
signal?.throwIfAborted();
|
|
15692
15826
|
await this.transport.ensureOnline();
|
|
15827
|
+
signal?.throwIfAborted();
|
|
15693
15828
|
if (!this.transport.currentThreadId) {
|
|
15694
15829
|
throw new Error(`Codex app-server session for ${this.options.agentName} has no active thread.`);
|
|
15695
15830
|
}
|
|
15696
15831
|
const outputPromise = new Promise(async (resolve10, reject) => {
|
|
15697
|
-
const turn = this.createActiveTurn(resolve10, reject);
|
|
15832
|
+
const turn = this.createActiveTurn(resolve10, reject, onDelta);
|
|
15698
15833
|
try {
|
|
15699
15834
|
const response = await this.transport.startTurn(prompt);
|
|
15700
15835
|
turn.turnId = response.turn.id;
|
|
@@ -15711,8 +15846,12 @@ class CodexAppServerClient {
|
|
|
15711
15846
|
});
|
|
15712
15847
|
}
|
|
15713
15848
|
async start(prompt) {
|
|
15849
|
+
const onDelta = this.options.onDelta;
|
|
15850
|
+
const signal = this.options.signal;
|
|
15714
15851
|
return this.enqueue(async () => {
|
|
15852
|
+
signal?.throwIfAborted();
|
|
15715
15853
|
await this.transport.ensureOnline();
|
|
15854
|
+
signal?.throwIfAborted();
|
|
15716
15855
|
if (!this.transport.currentThreadId) {
|
|
15717
15856
|
throw new Error(`Codex app-server session for ${this.options.agentName} has no active thread.`);
|
|
15718
15857
|
}
|
|
@@ -15721,7 +15860,7 @@ class CodexAppServerClient {
|
|
|
15721
15860
|
}
|
|
15722
15861
|
let turn;
|
|
15723
15862
|
const completion = new Promise((resolve10, reject) => {
|
|
15724
|
-
turn = this.createActiveTurn(resolve10, reject);
|
|
15863
|
+
turn = this.createActiveTurn(resolve10, reject, onDelta);
|
|
15725
15864
|
});
|
|
15726
15865
|
completion.catch(() => {
|
|
15727
15866
|
return;
|
|
@@ -15818,11 +15957,12 @@ class CodexAppServerClient {
|
|
|
15818
15957
|
});
|
|
15819
15958
|
return next;
|
|
15820
15959
|
}
|
|
15821
|
-
createActiveTurn(resolve10, reject) {
|
|
15960
|
+
createActiveTurn(resolve10, reject, onDelta) {
|
|
15822
15961
|
if (this.activeTurn) {
|
|
15823
15962
|
throw new Error(`Codex app-server session for ${this.options.agentName} already has an active turn.`);
|
|
15824
15963
|
}
|
|
15825
15964
|
const turn = {
|
|
15965
|
+
onDelta,
|
|
15826
15966
|
turnId: "",
|
|
15827
15967
|
startedAt: Date.now(),
|
|
15828
15968
|
messageOrder: [],
|
|
@@ -15899,6 +16039,8 @@ class CodexAppServerClient {
|
|
|
15899
16039
|
this.activeTurn.messageByItemId.set(itemId, "");
|
|
15900
16040
|
}
|
|
15901
16041
|
this.activeTurn.messageByItemId.set(itemId, (this.activeTurn.messageByItemId.get(itemId) ?? "") + delta);
|
|
16042
|
+
if (delta)
|
|
16043
|
+
this.activeTurn.onDelta?.(delta);
|
|
15902
16044
|
return;
|
|
15903
16045
|
}
|
|
15904
16046
|
if (method === "item/completed") {
|
|
@@ -27170,6 +27312,15 @@ var messageMentionsTable = sqliteTable("message_mentions", {
|
|
|
27170
27312
|
}, (table) => [
|
|
27171
27313
|
primaryKey({ columns: [table.messageId, table.actorId] })
|
|
27172
27314
|
]);
|
|
27315
|
+
var messageReactionsTable = sqliteTable("message_reactions", {
|
|
27316
|
+
messageId: text("message_id").notNull().references(() => messagesTable.id, { onDelete: "cascade" }),
|
|
27317
|
+
actorId: text("actor_id").notNull().references(() => actorsTable.id, { onDelete: "restrict" }),
|
|
27318
|
+
emoji: text("emoji").notNull(),
|
|
27319
|
+
createdAt: integer("created_at").notNull()
|
|
27320
|
+
}, (table) => [
|
|
27321
|
+
primaryKey({ columns: [table.messageId, table.actorId, table.emoji] }),
|
|
27322
|
+
index("idx_message_reactions_message").on(table.messageId)
|
|
27323
|
+
]);
|
|
27173
27324
|
var messageAttachmentsTable = sqliteTable("message_attachments", {
|
|
27174
27325
|
id: text("id").primaryKey(),
|
|
27175
27326
|
messageId: text("message_id").notNull().references(() => messagesTable.id, { onDelete: "cascade" }),
|
|
@@ -28017,6 +28168,16 @@ CREATE TABLE IF NOT EXISTS message_mentions (
|
|
|
28017
28168
|
PRIMARY KEY (message_id, actor_id)
|
|
28018
28169
|
);
|
|
28019
28170
|
|
|
28171
|
+
CREATE TABLE IF NOT EXISTS message_reactions (
|
|
28172
|
+
message_id TEXT NOT NULL REFERENCES messages(id) ON DELETE CASCADE,
|
|
28173
|
+
actor_id TEXT NOT NULL REFERENCES actors(id) ON DELETE RESTRICT,
|
|
28174
|
+
emoji TEXT NOT NULL,
|
|
28175
|
+
created_at INTEGER NOT NULL,
|
|
28176
|
+
PRIMARY KEY (message_id, actor_id, emoji)
|
|
28177
|
+
);
|
|
28178
|
+
CREATE INDEX IF NOT EXISTS idx_message_reactions_message
|
|
28179
|
+
ON message_reactions (message_id);
|
|
28180
|
+
|
|
28020
28181
|
CREATE TABLE IF NOT EXISTS message_attachments (
|
|
28021
28182
|
id TEXT PRIMARY KEY,
|
|
28022
28183
|
message_id TEXT NOT NULL REFERENCES messages(id) ON DELETE CASCADE,
|
|
@@ -29733,7 +29894,7 @@ init_node_identity();
|
|
|
29733
29894
|
|
|
29734
29895
|
// ../runtime/src/mesh-peer-auth.ts
|
|
29735
29896
|
init_node_identity();
|
|
29736
|
-
import { createHash as
|
|
29897
|
+
import { createHash as createHash4, randomBytes as randomBytes3 } from "crypto";
|
|
29737
29898
|
var PEER_AUTH_HEADERS = {
|
|
29738
29899
|
peer: "x-openscout-peer",
|
|
29739
29900
|
ts: "x-openscout-ts",
|
|
@@ -29768,7 +29929,7 @@ function peerRequestSigningPayload(input) {
|
|
|
29768
29929
|
`);
|
|
29769
29930
|
}
|
|
29770
29931
|
function sha256Hex(body) {
|
|
29771
|
-
return
|
|
29932
|
+
return createHash4("sha256").update(body).digest("hex");
|
|
29772
29933
|
}
|
|
29773
29934
|
function signPeerRequest(identity, input) {
|
|
29774
29935
|
const ts = input.ts ?? Date.now();
|
|
@@ -29833,7 +29994,7 @@ import { connect as tlsConnect } from "tls";
|
|
|
29833
29994
|
|
|
29834
29995
|
// ../runtime/src/node-tls-identity.ts
|
|
29835
29996
|
import {
|
|
29836
|
-
createHash as
|
|
29997
|
+
createHash as createHash5,
|
|
29837
29998
|
createPrivateKey as createPrivateKey2,
|
|
29838
29999
|
createPublicKey as createPublicKey2,
|
|
29839
30000
|
generateKeyPairSync as generateKeyPairSync2,
|
|
@@ -41907,7 +42068,7 @@ init_support_paths();
|
|
|
41907
42068
|
var TLS_CERT_VALIDITY_MS = 365 * 24 * 60 * 60 * 1000;
|
|
41908
42069
|
var TLS_CERT_RENEWAL_WINDOW_MS = 30 * 24 * 60 * 60 * 1000;
|
|
41909
42070
|
function tlsSpkiFingerprintFromDer(spkiDer) {
|
|
41910
|
-
return
|
|
42071
|
+
return createHash5("sha256").update(spkiDer).digest("hex");
|
|
41911
42072
|
}
|
|
41912
42073
|
function tlsSpkiFingerprintFromCertificateDer(certificateDer) {
|
|
41913
42074
|
const certificate2 = new X509Certificate(asBufferSource(certificateDer));
|
|
@@ -42626,7 +42787,7 @@ var require3 = createRequire2(import.meta.url);
|
|
|
42626
42787
|
// ../runtime/src/mesh-bind-controller.ts
|
|
42627
42788
|
init_broker_process_manager();
|
|
42628
42789
|
// ../runtime/src/mesh-sas.ts
|
|
42629
|
-
import { createHash as
|
|
42790
|
+
import { createHash as createHash6, createHmac } from "crypto";
|
|
42630
42791
|
|
|
42631
42792
|
// ../runtime/src/eff-short-wordlist.ts
|
|
42632
42793
|
var EFF_SHORT_WORDLIST = [
|
|
@@ -43931,7 +44092,7 @@ var EFF_SHORT_WORDLIST = [
|
|
|
43931
44092
|
// ../runtime/src/mesh-sas.ts
|
|
43932
44093
|
var SAS_WORD_COUNT = 6;
|
|
43933
44094
|
function createEnrollmentCommitment(nonce, cardSignature) {
|
|
43934
|
-
return
|
|
44095
|
+
return createHash6("sha256").update(Buffer.concat([nonce, Buffer.from(cardSignature, "utf8")])).digest("base64");
|
|
43935
44096
|
}
|
|
43936
44097
|
function verifyEnrollmentCommitment(commitment, nonce, cardSignature) {
|
|
43937
44098
|
const expected = createEnrollmentCommitment(nonce, cardSignature);
|
|
@@ -45919,6 +46080,7 @@ function resolvePushRelayConfig() {
|
|
|
45919
46080
|
meshId: process.env.OPENSCOUT_PUSH_RELAY_MESH_ID?.trim() || null
|
|
45920
46081
|
};
|
|
45921
46082
|
}
|
|
46083
|
+
var PUSH_RELAY_TRANSPORT_DEVICE_ID = "push-relay";
|
|
45922
46084
|
function relayAuthHeader(sessionToken) {
|
|
45923
46085
|
return sessionToken.startsWith("osn_session_") ? `Bearer ${sessionToken}` : `Bearer osn_session_${sessionToken}`;
|
|
45924
46086
|
}
|
|
@@ -46000,7 +46162,7 @@ async function broadcastPushRelayAlert(alert) {
|
|
|
46000
46162
|
retryAfterSeconds: retryAfter ? Number.parseInt(retryAfter, 10) || null : null,
|
|
46001
46163
|
rateLimitWindow: window2,
|
|
46002
46164
|
failures: [{
|
|
46003
|
-
deviceId:
|
|
46165
|
+
deviceId: PUSH_RELAY_TRANSPORT_DEVICE_ID,
|
|
46004
46166
|
tokenSuffix: "relay",
|
|
46005
46167
|
status: 429,
|
|
46006
46168
|
reason: detail || `HTTP 429 (window=${window2 ?? "unknown"})`
|
|
@@ -46016,7 +46178,7 @@ async function broadcastPushRelayAlert(alert) {
|
|
|
46016
46178
|
failedCount: 1,
|
|
46017
46179
|
configMissing: false,
|
|
46018
46180
|
failures: [{
|
|
46019
|
-
deviceId:
|
|
46181
|
+
deviceId: PUSH_RELAY_TRANSPORT_DEVICE_ID,
|
|
46020
46182
|
tokenSuffix: "relay",
|
|
46021
46183
|
status: response.status,
|
|
46022
46184
|
reason: detail || `HTTP ${response.status}`
|
|
@@ -46330,15 +46492,30 @@ async function sendApnsAlertToRegistration(registration, alert) {
|
|
|
46330
46492
|
request.end(payload);
|
|
46331
46493
|
});
|
|
46332
46494
|
}
|
|
46495
|
+
function relayRejectedOurCredential(result) {
|
|
46496
|
+
return result.failures.some((failure) => failure.deviceId === PUSH_RELAY_TRANSPORT_DEVICE_ID && (failure.status === 401 || failure.status === 403));
|
|
46497
|
+
}
|
|
46498
|
+
function hasDirectApnsCredentials() {
|
|
46499
|
+
try {
|
|
46500
|
+
return loadApnsCredentials() !== null;
|
|
46501
|
+
} catch {
|
|
46502
|
+
return false;
|
|
46503
|
+
}
|
|
46504
|
+
}
|
|
46333
46505
|
async function broadcastApnsAlertToActiveMobileDevices(alert) {
|
|
46506
|
+
let relayFailures = [];
|
|
46334
46507
|
if (resolvePushRelayConfig()) {
|
|
46335
|
-
|
|
46508
|
+
const relayResult = await broadcastPushRelayAlert(alert);
|
|
46509
|
+
if (!relayRejectedOurCredential(relayResult) || !hasDirectApnsCredentials()) {
|
|
46510
|
+
return relayResult;
|
|
46511
|
+
}
|
|
46512
|
+
relayFailures = relayResult.failures;
|
|
46336
46513
|
}
|
|
46337
46514
|
const registrations = listActiveMobilePushRegistrations();
|
|
46338
46515
|
let deliveredCount = 0;
|
|
46339
46516
|
let skippedCount = 0;
|
|
46340
46517
|
let configMissing = false;
|
|
46341
|
-
const failures = [];
|
|
46518
|
+
const failures = [...relayFailures];
|
|
46342
46519
|
for (const registration of registrations) {
|
|
46343
46520
|
try {
|
|
46344
46521
|
const outcome = await sendApnsAlertToRegistration(registration, alert);
|
|
@@ -60149,7 +60326,7 @@ function formatTimestamp(value) {
|
|
|
60149
60326
|
}
|
|
60150
60327
|
|
|
60151
60328
|
// ../web/server/core/broker/service.ts
|
|
60152
|
-
import { createHash as
|
|
60329
|
+
import { createHash as createHash7, randomUUID as randomUUID4 } from "crypto";
|
|
60153
60330
|
init_src();
|
|
60154
60331
|
init_setup();
|
|
60155
60332
|
init_broker_api();
|
|
@@ -60644,7 +60821,7 @@ function deliveryRequestId(clientMessageId, createdAt) {
|
|
|
60644
60821
|
if (!normalized) {
|
|
60645
60822
|
return `deliver-${createdAt.toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
60646
60823
|
}
|
|
60647
|
-
const digest =
|
|
60824
|
+
const digest = createHash7("sha256").update(normalized).digest("hex").slice(0, 32);
|
|
60648
60825
|
return `deliver-client-${digest}`;
|
|
60649
60826
|
}
|
|
60650
60827
|
function stableBrokerRecordId(prefix, clientMessageId, createdAt, discriminator = "") {
|
|
@@ -60652,7 +60829,7 @@ function stableBrokerRecordId(prefix, clientMessageId, createdAt, discriminator
|
|
|
60652
60829
|
if (!normalized) {
|
|
60653
60830
|
return `${prefix}-${createdAt.toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
60654
60831
|
}
|
|
60655
|
-
const digest =
|
|
60832
|
+
const digest = createHash7("sha256").update(`${normalized}\x00${discriminator}`).digest("hex").slice(0, 32);
|
|
60656
60833
|
return `${prefix}-client-${digest}`;
|
|
60657
60834
|
}
|
|
60658
60835
|
function metadataBoolean(metadata, key) {
|
|
@@ -62028,6 +62205,7 @@ var {
|
|
|
62028
62205
|
} = scoutAgentService;
|
|
62029
62206
|
|
|
62030
62207
|
// ../web/server/db/internal/db.ts
|
|
62208
|
+
init_sqlite_adapter();
|
|
62031
62209
|
import { Database as Database2 } from "bun:sqlite";
|
|
62032
62210
|
import { homedir as homedir33 } from "os";
|
|
62033
62211
|
import { join as join42 } from "path";
|
|
@@ -62043,13 +62221,18 @@ function configureReadonlyDb(db) {
|
|
|
62043
62221
|
}
|
|
62044
62222
|
function db() {
|
|
62045
62223
|
if (!_db) {
|
|
62046
|
-
_db = new Database2(resolveDbPath(), { readonly: true })
|
|
62224
|
+
_db = observeSqliteDatabase(new Database2(resolveDbPath(), { readonly: true }), {
|
|
62225
|
+
database: "web-control-plane"
|
|
62226
|
+
});
|
|
62047
62227
|
configureReadonlyDb(_db);
|
|
62048
62228
|
}
|
|
62049
62229
|
return _db;
|
|
62050
62230
|
}
|
|
62051
62231
|
// ../web/server/db/internal/parse.ts
|
|
62052
62232
|
init_src();
|
|
62233
|
+
function jsonBoolean(value) {
|
|
62234
|
+
return value === 1 || value === "1" || value === "true";
|
|
62235
|
+
}
|
|
62053
62236
|
function normalizeTimestampMs(value) {
|
|
62054
62237
|
return epochMs(value);
|
|
62055
62238
|
}
|
|
@@ -62113,7 +62296,9 @@ function agentFlightPhaseFromFlightState(state) {
|
|
|
62113
62296
|
function queryAgentFlightPhases(database = db()) {
|
|
62114
62297
|
const phases = new Map;
|
|
62115
62298
|
const rows = database.prepare(`SELECT target_agent_id, state FROM invocations
|
|
62116
|
-
WHERE state IN (${sqlPlaceholders(ACTIVE_FLIGHT_STATES4.length)})
|
|
62299
|
+
WHERE state IN (${sqlPlaceholders(ACTIVE_FLIGHT_STATES4.length)})
|
|
62300
|
+
AND COALESCE(json_extract(flight_metadata_json, '$.requesterTimedOut'), 0) != 1
|
|
62301
|
+
AND COALESCE(json_extract(flight_metadata_json, '$.timeoutScope'), '') != 'requester_wait'`).all(...ACTIVE_FLIGHT_STATES4);
|
|
62117
62302
|
for (const row of rows) {
|
|
62118
62303
|
const phase = agentFlightPhaseFromFlightState(row.state);
|
|
62119
62304
|
if (!phase) {
|
|
@@ -62362,6 +62547,7 @@ function queryFleetActivity(opts) {
|
|
|
62362
62547
|
}
|
|
62363
62548
|
var TERMINAL_FLIGHT_STATES = new Set(["completed", "failed", "cancelled"]);
|
|
62364
62549
|
var FLEET_RECENT_COMPLETED_MAX_AGE_MS = 3 * 24 * 60 * 60 * 1000;
|
|
62550
|
+
var ATTENTION_STALE_AFTER_MS = 7 * 24 * 60 * 60 * 1000;
|
|
62365
62551
|
function fleetRequesterIds() {
|
|
62366
62552
|
const operatorName = resolveOperatorName().trim() || "operator";
|
|
62367
62553
|
return Array.from(new Set([operatorName, "operator"]));
|
|
@@ -62402,6 +62588,8 @@ function queryFleetAskRows(requesterIds, limit) {
|
|
|
62402
62588
|
json_extract(inv.flight_metadata_json, '$.failureSeverity') AS failure_severity,
|
|
62403
62589
|
json_extract(inv.flight_metadata_json, '$.dispatchOutcome.status') AS dispatch_outcome_status,
|
|
62404
62590
|
json_extract(inv.flight_metadata_json, '$.dispatchOutcome.reason') AS dispatch_outcome_reason,
|
|
62591
|
+
json_extract(inv.flight_metadata_json, '$.requesterTimedOut') AS requester_timed_out,
|
|
62592
|
+
json_extract(inv.flight_metadata_json, '$.timeoutScope') AS timeout_scope,
|
|
62405
62593
|
(
|
|
62406
62594
|
SELECT MAX(COALESCE(recovery_inv.completed_at, recovery_inv.started_at, 0))
|
|
62407
62595
|
FROM invocations recovery_inv
|
|
@@ -62488,7 +62676,8 @@ function projectFleetAsk(row, requesterIdSet) {
|
|
|
62488
62676
|
const queuedFlight = row.flight_state === "queued";
|
|
62489
62677
|
const queuedUntilOnline = queuedFlight && row.dispatch_outcome_status === "queued_until_online";
|
|
62490
62678
|
const staleActiveFlight = hasFlight && row.flight_state !== null && !TERMINAL_FLIGHT_STATES.has(row.flight_state) && isStaleActiveFlight(row.started_at, row.created_at);
|
|
62491
|
-
const
|
|
62679
|
+
const requesterStoppedWaiting = hasFlight && row.flight_state !== null && !TERMINAL_FLIGHT_STATES.has(row.flight_state) && (jsonBoolean(row.requester_timed_out) || row.timeout_scope === "requester_wait");
|
|
62680
|
+
const isActiveFlight = hasFlight && row.flight_state !== null && !TERMINAL_FLIGHT_STATES.has(row.flight_state) && !failed && !staleActiveFlight && !requesterStoppedWaiting;
|
|
62492
62681
|
const attentionEligibleState = row.record_kind === "work_item" && row.work_state !== null && ["open", "working", "waiting", "review"].includes(row.work_state) || row.record_kind === "question" && row.work_state !== null && ["open", "answered"].includes(row.work_state);
|
|
62493
62682
|
const recordDismissedAt = normalizeTimestampMs(row.record_dismissed_at);
|
|
62494
62683
|
const recordUpdatedAt = normalizeTimestampMs(row.work_updated_at);
|
|
@@ -62522,7 +62711,7 @@ function projectFleetAsk(row, requesterIdSet) {
|
|
|
62522
62711
|
collaborationRecordId: row.collaboration_record_id,
|
|
62523
62712
|
task: row.task,
|
|
62524
62713
|
status,
|
|
62525
|
-
statusLabel: status === "working" && replied ? "Acknowledged" : status === "failed" && queuedUntilOnline ? "Not delivered" : status === "failed" && noteworthyFailure ? stoppedFailure ? "Stopped" : "Interrupted" : fleetStatusLabel(status),
|
|
62714
|
+
statusLabel: requesterStoppedWaiting && status === "completed" ? "Stopped waiting" : status === "working" && replied ? "Acknowledged" : status === "failed" && queuedUntilOnline ? "Not delivered" : status === "failed" && noteworthyFailure ? stoppedFailure ? "Stopped" : "Interrupted" : fleetStatusLabel(status),
|
|
62526
62715
|
acknowledgedAt: status === "working" && replied ? normalizeTimestampMs(row.status_ts) : null,
|
|
62527
62716
|
attention: status === "needs_attention" ? "badge" : status === "failed" && queuedUntilOnline ? "badge" : status === "failed" && !failedDismissed && !recoveredDeliveryFailure ? noteworthyFailure ? "badge" : "interrupt" : "silent",
|
|
62528
62717
|
agentState: summarizeAgentState(row.endpoint_state, agentFlightPhaseFromFlightState(row.flight_state)),
|
|
@@ -62536,34 +62725,54 @@ function projectFleetAsk(row, requesterIdSet) {
|
|
|
62536
62725
|
}
|
|
62537
62726
|
function queryFleetAttentionRows(requesterIds, limit) {
|
|
62538
62727
|
const requesterClause = sqlPlaceholders(requesterIds.length);
|
|
62539
|
-
|
|
62540
|
-
|
|
62541
|
-
|
|
62728
|
+
const staleBefore = Date.now() - ATTENTION_STALE_AFTER_MS;
|
|
62729
|
+
return db().prepare(`WITH live_attention AS (
|
|
62730
|
+
SELECT
|
|
62731
|
+
cr.kind AS record_kind,
|
|
62732
|
+
cr.id AS record_id,
|
|
62733
|
+
cr.title,
|
|
62734
|
+
cr.summary,
|
|
62735
|
+
cr.conversation_id,
|
|
62736
|
+
cr.state,
|
|
62737
|
+
cr.acceptance_state,
|
|
62738
|
+
cr.updated_at,
|
|
62739
|
+
cr.owner_id AS agent_id,
|
|
62740
|
+
ROW_NUMBER() OVER (
|
|
62741
|
+
PARTITION BY cr.title, cr.owner_id
|
|
62742
|
+
ORDER BY cr.updated_at DESC, cr.id DESC
|
|
62743
|
+
) AS duplicate_rank
|
|
62744
|
+
FROM collaboration_records cr
|
|
62745
|
+
WHERE (
|
|
62746
|
+
(cr.kind = 'work_item' AND cr.state IN ('open', 'working', 'waiting', 'review'))
|
|
62747
|
+
OR (cr.kind = 'question' AND cr.state IN ('open', 'answered'))
|
|
62748
|
+
)
|
|
62749
|
+
AND cr.next_move_owner_id IN (${requesterClause})
|
|
62750
|
+
AND cr.updated_at >= ?
|
|
62751
|
+
AND NOT EXISTS (
|
|
62752
|
+
SELECT 1
|
|
62753
|
+
FROM collaboration_events dismissed
|
|
62754
|
+
WHERE dismissed.record_id = cr.id
|
|
62755
|
+
AND dismissed.kind = 'dismissed'
|
|
62756
|
+
AND dismissed.actor_id IN (${requesterClause})
|
|
62757
|
+
AND dismissed.created_at >= cr.updated_at
|
|
62758
|
+
)
|
|
62759
|
+
)
|
|
62760
|
+
SELECT
|
|
62761
|
+
cr.record_kind,
|
|
62762
|
+
cr.record_id,
|
|
62542
62763
|
cr.title,
|
|
62543
62764
|
cr.summary,
|
|
62544
62765
|
cr.conversation_id,
|
|
62545
62766
|
cr.state,
|
|
62546
62767
|
cr.acceptance_state,
|
|
62547
62768
|
cr.updated_at,
|
|
62548
|
-
cr.
|
|
62769
|
+
cr.agent_id,
|
|
62549
62770
|
owner.display_name AS agent_name
|
|
62550
|
-
FROM
|
|
62551
|
-
LEFT JOIN actors owner ON owner.id = cr.
|
|
62552
|
-
WHERE
|
|
62553
|
-
(cr.kind = 'work_item' AND cr.state IN ('open', 'working', 'waiting', 'review'))
|
|
62554
|
-
OR (cr.kind = 'question' AND cr.state IN ('open', 'answered'))
|
|
62555
|
-
)
|
|
62556
|
-
AND cr.next_move_owner_id IN (${requesterClause})
|
|
62557
|
-
AND NOT EXISTS (
|
|
62558
|
-
SELECT 1
|
|
62559
|
-
FROM collaboration_events dismissed
|
|
62560
|
-
WHERE dismissed.record_id = cr.id
|
|
62561
|
-
AND dismissed.kind = 'dismissed'
|
|
62562
|
-
AND dismissed.actor_id IN (${requesterClause})
|
|
62563
|
-
AND dismissed.created_at >= cr.updated_at
|
|
62564
|
-
)
|
|
62771
|
+
FROM live_attention cr
|
|
62772
|
+
LEFT JOIN actors owner ON owner.id = cr.agent_id
|
|
62773
|
+
WHERE cr.duplicate_rank = 1
|
|
62565
62774
|
ORDER BY cr.updated_at DESC
|
|
62566
|
-
LIMIT ?`).all(...requesterIds, ...requesterIds, limit);
|
|
62775
|
+
LIMIT ?`).all(...requesterIds, staleBefore, ...requesterIds, limit);
|
|
62567
62776
|
}
|
|
62568
62777
|
function queryOperatorAttentionRows(limit = 48) {
|
|
62569
62778
|
return queryFleetAttentionRows(fleetRequesterIds(), limit).map((row) => ({
|
|
@@ -62777,7 +62986,7 @@ function isMissingTerminalSessionRegistryError(error) {
|
|
|
62777
62986
|
return /no such table: terminal_session_registry/i.test(message);
|
|
62778
62987
|
}
|
|
62779
62988
|
// ../web/server/service-budgets.ts
|
|
62780
|
-
import { createHash as
|
|
62989
|
+
import { createHash as createHash8 } from "crypto";
|
|
62781
62990
|
import { existsSync as existsSync37, mkdirSync as mkdirSync17, readdirSync as readdirSync6, readFileSync as readFileSync22, renameSync as renameSync6, statSync as statSync11, writeFileSync as writeFileSync13 } from "fs";
|
|
62782
62991
|
import { open, readdir as readdir4, stat as stat6 } from "fs/promises";
|
|
62783
62992
|
import { homedir as homedir35 } from "os";
|
|
@@ -62789,7 +62998,9 @@ init_pi_rpc();
|
|
|
62789
62998
|
init_system_probes();
|
|
62790
62999
|
import { Database as Database3 } from "bun:sqlite";
|
|
62791
63000
|
var CACHE_TTL_MS = 60 * 1000;
|
|
63001
|
+
var FIVE_HOUR_MS = 5 * 3600 * 1000;
|
|
62792
63002
|
var WEEK_MS = 7 * 24 * 3600 * 1000;
|
|
63003
|
+
var MONTH_MS = 30 * 24 * 3600 * 1000;
|
|
62793
63004
|
var CODEX_LOOKBACK_DAYS = 3;
|
|
62794
63005
|
var CODEX_JSONL_TAIL_MAX_BYTES = 2 * 1024 * 1024;
|
|
62795
63006
|
var CODEX_INITIAL_FILE_LIMIT = 32;
|
|
@@ -63162,25 +63373,46 @@ function readClaudeStatuslineHistory(minCapturedAt) {
|
|
|
63162
63373
|
}
|
|
63163
63374
|
return out;
|
|
63164
63375
|
}
|
|
63376
|
+
function claudeStatuslineWindowSpec(key) {
|
|
63377
|
+
const raw2 = key.trim();
|
|
63378
|
+
if (!raw2)
|
|
63379
|
+
return null;
|
|
63380
|
+
const normalized = raw2.toLowerCase().replace(/[-_\s]/gu, "");
|
|
63381
|
+
if (["fivehour", "fivehours", "primary", "5h"].includes(normalized)) {
|
|
63382
|
+
return { label: "5h", windowKind: "primary", windowMs: FIVE_HOUR_MS };
|
|
63383
|
+
}
|
|
63384
|
+
if (["sevenday", "weekly", "secondary", "7d"].includes(normalized)) {
|
|
63385
|
+
return { label: "7d", windowKind: "secondary", windowMs: WEEK_MS };
|
|
63386
|
+
}
|
|
63387
|
+
if (["monthly", "month", "thirtyday", "30d"].includes(normalized)) {
|
|
63388
|
+
return { label: "30d", windowKind: "monthly", windowMs: MONTH_MS };
|
|
63389
|
+
}
|
|
63390
|
+
if (normalized.includes("month")) {
|
|
63391
|
+
return { label: "30d", windowKind: "monthly", windowMs: MONTH_MS };
|
|
63392
|
+
}
|
|
63393
|
+
if (normalized.includes("fivehour") || normalized.endsWith("5h")) {
|
|
63394
|
+
return { label: raw2.replace(/_/gu, " "), windowKind: raw2, windowMs: FIVE_HOUR_MS };
|
|
63395
|
+
}
|
|
63396
|
+
if (normalized.startsWith("sevenday") || normalized.includes("weekly")) {
|
|
63397
|
+
return { label: raw2.replace(/_/gu, " "), windowKind: raw2, windowMs: WEEK_MS };
|
|
63398
|
+
}
|
|
63399
|
+
return { label: raw2.replace(/_/gu, " "), windowKind: raw2, windowMs: WEEK_MS };
|
|
63400
|
+
}
|
|
63165
63401
|
function claudeQuotaSnapshotsFromStatusline(record2) {
|
|
63166
63402
|
const rateLimits = recordValue(record2.rate_limits);
|
|
63167
63403
|
if (!rateLimits)
|
|
63168
63404
|
return [];
|
|
63169
63405
|
const capturedAt = claudeStatuslineCapturedAt(record2);
|
|
63170
|
-
return [
|
|
63171
|
-
|
|
63172
|
-
|
|
63173
|
-
|
|
63174
|
-
|
|
63175
|
-
|
|
63176
|
-
}),
|
|
63177
|
-
claudeQuotaSnapshotFromStatuslineWindow(record2, rateLimits.seven_day, {
|
|
63178
|
-
label: "7d",
|
|
63179
|
-
windowKind: "secondary",
|
|
63180
|
-
windowMs: WEEK_MS,
|
|
63406
|
+
return Object.entries(rateLimits).flatMap(([key, value]) => {
|
|
63407
|
+
const spec = claudeStatuslineWindowSpec(key);
|
|
63408
|
+
if (!spec)
|
|
63409
|
+
return [];
|
|
63410
|
+
const snapshot = claudeQuotaSnapshotFromStatuslineWindow(record2, value, {
|
|
63411
|
+
...spec,
|
|
63181
63412
|
capturedAt
|
|
63182
|
-
})
|
|
63183
|
-
|
|
63413
|
+
});
|
|
63414
|
+
return snapshot ? [snapshot] : [];
|
|
63415
|
+
});
|
|
63184
63416
|
}
|
|
63185
63417
|
function claudeQuotaSnapshotFromStatuslineWindow(record2, value, options) {
|
|
63186
63418
|
const window2 = recordValue(value);
|
|
@@ -63259,15 +63491,12 @@ function loadPersistedProviderQuotaSnapshots(input) {
|
|
|
63259
63491
|
metadata: parseMetadataJson(row.metadataJson)
|
|
63260
63492
|
}));
|
|
63261
63493
|
}
|
|
63262
|
-
function
|
|
63494
|
+
function selectLatestQuotaSnapshots(snapshots, input) {
|
|
63263
63495
|
const latestByWindow = new Map;
|
|
63264
|
-
const historyByWindow = quotaHistoryByWindow(snapshots);
|
|
63265
|
-
const now = Date.now();
|
|
63266
|
-
const minCurrentCapturedAt = input.maxCurrentAgeMs === undefined ? Number.NEGATIVE_INFINITY : now - input.maxCurrentAgeMs;
|
|
63267
63496
|
for (const row of snapshots) {
|
|
63268
|
-
if (row.capturedAt < minCurrentCapturedAt)
|
|
63497
|
+
if (row.capturedAt < input.minCurrentCapturedAt)
|
|
63269
63498
|
continue;
|
|
63270
|
-
if (!input.allowExpiredWindows && quotaSnapshotIsExpired(row, now))
|
|
63499
|
+
if (!input.allowExpiredWindows && quotaSnapshotIsExpired(row, input.now))
|
|
63271
63500
|
continue;
|
|
63272
63501
|
const key = quotaSnapshotWindowKey(row);
|
|
63273
63502
|
const existing = latestByWindow.get(key);
|
|
@@ -63293,7 +63522,36 @@ function quotaGaugeFromSnapshots(input, snapshots) {
|
|
|
63293
63522
|
latestByWindow.set(key, row);
|
|
63294
63523
|
}
|
|
63295
63524
|
}
|
|
63296
|
-
|
|
63525
|
+
return latestByWindow;
|
|
63526
|
+
}
|
|
63527
|
+
function quotaGaugeFromSnapshots(input, snapshots) {
|
|
63528
|
+
const historyByWindow = quotaHistoryByWindow(snapshots);
|
|
63529
|
+
const now = Date.now();
|
|
63530
|
+
const minCurrentCapturedAt = input.maxCurrentAgeMs === undefined ? Number.NEGATIVE_INFINITY : now - input.maxCurrentAgeMs;
|
|
63531
|
+
const latestByWindow = selectLatestQuotaSnapshots(snapshots, {
|
|
63532
|
+
minCurrentCapturedAt,
|
|
63533
|
+
now,
|
|
63534
|
+
allowExpiredWindows: input.allowExpiredWindows
|
|
63535
|
+
});
|
|
63536
|
+
const awaitingKeys = new Set;
|
|
63537
|
+
if (latestByWindow.size > 0 && !input.allowExpiredWindows) {
|
|
63538
|
+
const expiredSiblings = selectLatestQuotaSnapshots(snapshots, {
|
|
63539
|
+
minCurrentCapturedAt,
|
|
63540
|
+
now,
|
|
63541
|
+
allowExpiredWindows: true
|
|
63542
|
+
});
|
|
63543
|
+
for (const [key, row] of expiredSiblings) {
|
|
63544
|
+
if (latestByWindow.has(key))
|
|
63545
|
+
continue;
|
|
63546
|
+
if (!quotaSnapshotIsExpired(row, now))
|
|
63547
|
+
continue;
|
|
63548
|
+
if (!shouldRetainExpiredWindow(row, now))
|
|
63549
|
+
continue;
|
|
63550
|
+
latestByWindow.set(key, row);
|
|
63551
|
+
awaitingKeys.add(key);
|
|
63552
|
+
}
|
|
63553
|
+
}
|
|
63554
|
+
const windows = [...latestByWindow.values()].map((snapshot) => storedQuotaWindowGauge(snapshot, historyByWindow.get(quotaSnapshotWindowKey(snapshot)) ?? [], { awaitingReset: awaitingKeys.has(quotaSnapshotWindowKey(snapshot)), now })).filter((window2) => Boolean(window2)).sort((a, b) => quotaWindowSortRank(a.label) - quotaWindowSortRank(b.label) || a.label.localeCompare(b.label));
|
|
63297
63555
|
if (windows.length === 0)
|
|
63298
63556
|
return null;
|
|
63299
63557
|
const displayWindow = windows.find((window2) => window2.label === "7d") ?? windows[windows.length - 1];
|
|
@@ -63356,6 +63614,34 @@ function quotaSnapshotIsExpired(row, now) {
|
|
|
63356
63614
|
const resetAt = finiteNumber(row.resetAt);
|
|
63357
63615
|
return resetAt !== undefined && resetAt <= now;
|
|
63358
63616
|
}
|
|
63617
|
+
function inferredQuotaWindowMs(row) {
|
|
63618
|
+
const explicit = finiteNumber(row.windowMs);
|
|
63619
|
+
if (explicit !== undefined)
|
|
63620
|
+
return explicit;
|
|
63621
|
+
const label = row.label.trim().toLowerCase();
|
|
63622
|
+
if (label === "5h" || row.windowKind === "primary")
|
|
63623
|
+
return FIVE_HOUR_MS;
|
|
63624
|
+
if (label === "7d" || label === "weekly" || row.windowKind === "secondary")
|
|
63625
|
+
return WEEK_MS;
|
|
63626
|
+
if (label === "30d" || label === "monthly" || row.windowKind === "monthly")
|
|
63627
|
+
return MONTH_MS;
|
|
63628
|
+
return;
|
|
63629
|
+
}
|
|
63630
|
+
function shouldRetainExpiredWindow(row, now) {
|
|
63631
|
+
const windowMs = inferredQuotaWindowMs(row) ?? FIVE_HOUR_MS;
|
|
63632
|
+
const silenceMs = Math.min(WEEK_MS, Math.max(24 * 3600 * 1000, windowMs * 2));
|
|
63633
|
+
return row.capturedAt >= now - silenceMs;
|
|
63634
|
+
}
|
|
63635
|
+
function forwardedResetAt(resetAt, windowMs, now) {
|
|
63636
|
+
if (resetAt === undefined)
|
|
63637
|
+
return;
|
|
63638
|
+
if (resetAt > now)
|
|
63639
|
+
return resetAt;
|
|
63640
|
+
if (windowMs === undefined || windowMs <= 0)
|
|
63641
|
+
return resetAt;
|
|
63642
|
+
const cycles = Math.floor((now - resetAt) / windowMs) + 1;
|
|
63643
|
+
return resetAt + cycles * windowMs;
|
|
63644
|
+
}
|
|
63359
63645
|
function quotaSnapshotUsage(row) {
|
|
63360
63646
|
const remainingPercent = finiteNumber(row.percentRemaining);
|
|
63361
63647
|
const usedPercent = finiteNumber(row.usedPercent) ?? (remainingPercent === undefined ? undefined : 100 - remainingPercent) ?? deriveUsedPercent(row.used, row.limitValue);
|
|
@@ -63372,20 +63658,27 @@ function quotaSnapshotUsage(row) {
|
|
|
63372
63658
|
unitLabel: used === undefined || limit === undefined ? "quota" : "req"
|
|
63373
63659
|
};
|
|
63374
63660
|
}
|
|
63375
|
-
function storedQuotaWindowGauge(row, history = []) {
|
|
63661
|
+
function storedQuotaWindowGauge(row, history = [], options = {}) {
|
|
63376
63662
|
const usage = quotaSnapshotUsage(row);
|
|
63377
63663
|
if (!usage)
|
|
63378
63664
|
return null;
|
|
63379
|
-
const windowMs = finiteNumber(row.windowMs);
|
|
63380
|
-
const
|
|
63665
|
+
const windowMs = finiteNumber(row.windowMs) ?? inferredQuotaWindowMs(row);
|
|
63666
|
+
const now = options.now ?? Date.now();
|
|
63667
|
+
const rawResetAt = finiteNumber(row.resetAt) ?? (windowMs === undefined ? undefined : row.capturedAt + windowMs) ?? now;
|
|
63668
|
+
const awaitingReset = options.awaitingReset === true;
|
|
63669
|
+
const resetAt = awaitingReset ? forwardedResetAt(rawResetAt, windowMs, now) ?? rawResetAt : rawResetAt;
|
|
63381
63670
|
return {
|
|
63382
63671
|
label: formatStoredQuotaWindowLabel(row),
|
|
63383
|
-
|
|
63672
|
+
fill: awaitingReset ? 0 : usage.fill,
|
|
63673
|
+
usedLabel: awaitingReset ? "\u2014" : usage.usedLabel,
|
|
63674
|
+
capLabel: usage.capLabel,
|
|
63675
|
+
unitLabel: usage.unitLabel,
|
|
63384
63676
|
resetAt,
|
|
63385
63677
|
...windowMs === undefined ? {} : { windowMs },
|
|
63386
63678
|
capturedAt: row.capturedAt,
|
|
63387
63679
|
source: quotaSnapshotSourceLabel(row),
|
|
63388
|
-
...history.length === 0 ? {} : { history }
|
|
63680
|
+
...history.length === 0 ? {} : { history },
|
|
63681
|
+
...awaitingReset ? { awaitingReset: true } : {}
|
|
63389
63682
|
};
|
|
63390
63683
|
}
|
|
63391
63684
|
function quotaSnapshotSourceLabel(row) {
|
|
@@ -63428,6 +63721,8 @@ function formatStoredQuotaWindowLabel(row) {
|
|
|
63428
63721
|
if (fromDuration)
|
|
63429
63722
|
return fromDuration;
|
|
63430
63723
|
const label = explicitDuration.toLowerCase();
|
|
63724
|
+
if (label === "monthly" || label === "month" || row.windowKind === "monthly")
|
|
63725
|
+
return "30d";
|
|
63431
63726
|
if (label === "weekly" || label === "week" || row.windowKind === "secondary")
|
|
63432
63727
|
return "7d";
|
|
63433
63728
|
if (label === "primary" || row.windowKind === "primary")
|
|
@@ -63445,7 +63740,9 @@ function quotaWindowSortRank(label) {
|
|
|
63445
63740
|
return 0;
|
|
63446
63741
|
if (label === "7d")
|
|
63447
63742
|
return 1;
|
|
63448
|
-
|
|
63743
|
+
if (label === "30d" || label === "monthly")
|
|
63744
|
+
return 2;
|
|
63745
|
+
return 3;
|
|
63449
63746
|
}
|
|
63450
63747
|
async function loadKimiGauge(forceRefresh = false) {
|
|
63451
63748
|
const fresh = loadPersistedProviderQuotaGauge({
|
|
@@ -64299,7 +64596,7 @@ function quotaHistoryMetadata(snapshot) {
|
|
|
64299
64596
|
};
|
|
64300
64597
|
}
|
|
64301
64598
|
function stableHash(value) {
|
|
64302
|
-
return
|
|
64599
|
+
return createHash8("sha256").update(JSON.stringify(value)).digest("hex").slice(0, 24);
|
|
64303
64600
|
}
|
|
64304
64601
|
function timestampMs(value) {
|
|
64305
64602
|
const normalized = epochMs(value);
|
|
@@ -66955,7 +67252,7 @@ async function markScoutMobileConversationRead(input) {
|
|
|
66955
67252
|
|
|
66956
67253
|
// ../web/server/core/pairing/runtime/bridge/mobile-terminal-provision.ts
|
|
66957
67254
|
init_system_probes();
|
|
66958
|
-
import { createHash as
|
|
67255
|
+
import { createHash as createHash11 } from "crypto";
|
|
66959
67256
|
import {
|
|
66960
67257
|
chmodSync as chmodSync2,
|
|
66961
67258
|
closeSync as closeSync2,
|
|
@@ -66971,7 +67268,7 @@ import { homedir as homedir38, hostname as hostname3, userInfo as userInfo2 } fr
|
|
|
66971
67268
|
import { join as join47 } from "path";
|
|
66972
67269
|
|
|
66973
67270
|
// ../web/server/core/pairing/runtime/bridge/ssh-terminal-access.ts
|
|
66974
|
-
import { createHash as
|
|
67271
|
+
import { createHash as createHash9 } from "crypto";
|
|
66975
67272
|
var SCOUT_AUTHORIZED_KEY_MARKER = "scout:terminal-access:v0";
|
|
66976
67273
|
var SCOUT_AUTHORIZED_KEY_OPTIONS = "restrict,pty";
|
|
66977
67274
|
var SUPPORTED_IOS_PUBLIC_KEY_ALGORITHMS = new Set([
|
|
@@ -67143,10 +67440,10 @@ function readSshWireString(buffer, offset) {
|
|
|
67143
67440
|
};
|
|
67144
67441
|
}
|
|
67145
67442
|
function fingerprintKeyData(keyData) {
|
|
67146
|
-
return `SHA256:${
|
|
67443
|
+
return `SHA256:${createHash9("sha256").update(Buffer.from(keyData, "base64")).digest("base64").replace(/=+$/, "")}`;
|
|
67147
67444
|
}
|
|
67148
67445
|
function fingerprintUtf8(value) {
|
|
67149
|
-
return `SHA256:${
|
|
67446
|
+
return `SHA256:${createHash9("sha256").update(value, "utf8").digest("base64").replace(/=+$/, "")}`;
|
|
67150
67447
|
}
|
|
67151
67448
|
function encodeMarkerValue(value) {
|
|
67152
67449
|
return Buffer.from(value, "utf8").toString("base64url");
|
|
@@ -67157,7 +67454,7 @@ function decodeMarkerValue(value) {
|
|
|
67157
67454
|
}
|
|
67158
67455
|
|
|
67159
67456
|
// ../web/server/core/pairing/runtime/bridge/mobile-terminal-session.ts
|
|
67160
|
-
import { createHash as
|
|
67457
|
+
import { createHash as createHash10 } from "crypto";
|
|
67161
67458
|
|
|
67162
67459
|
class InvalidMobileTerminalSessionError extends Error {
|
|
67163
67460
|
constructor(message = "Invalid mobile terminal session name") {
|
|
@@ -67167,7 +67464,7 @@ class InvalidMobileTerminalSessionError extends Error {
|
|
|
67167
67464
|
}
|
|
67168
67465
|
function mobileTerminalSessionName(sshPublicKey, deviceClass) {
|
|
67169
67466
|
const normalizedClass = normalizeMobileTerminalDeviceClass(deviceClass);
|
|
67170
|
-
const signature =
|
|
67467
|
+
const signature = createHash10("sha256").update(sshPublicKey.trim()).digest("hex").slice(0, 8);
|
|
67171
67468
|
return `scout-${normalizedClass}-${signature}`;
|
|
67172
67469
|
}
|
|
67173
67470
|
function provisionedMobileTerminalSessionName(sshPublicKey, deviceClass) {
|
|
@@ -67330,7 +67627,7 @@ function readRequiredHostKeyFingerprint() {
|
|
|
67330
67627
|
const keyData = pub.trim().split(/\s+/)[1];
|
|
67331
67628
|
if (!keyData)
|
|
67332
67629
|
throw new Error("missing key data");
|
|
67333
|
-
const digest =
|
|
67630
|
+
const digest = createHash11("sha256").update(Buffer.from(keyData, "base64")).digest("base64").replace(/=+$/, "");
|
|
67334
67631
|
return `SHA256:${digest}`;
|
|
67335
67632
|
} catch (error) {
|
|
67336
67633
|
const detail = error instanceof Error ? error.message : String(error);
|