@openscout/scout 0.2.95 → 0.2.97
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/bin/scout +26 -10
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/client/assets/{ActivityScreen--eANwuxa.js → ActivityScreen-y-5DLleY.js} +1 -1
- package/dist/client/assets/{AddProjectForm-CcD6qvV8.js → AddProjectForm-r_1tVuWk.js} +1 -1
- package/dist/client/assets/{AgentAvatar-CYhf6twS.js → AgentAvatar-B7c0egdP.js} +1 -1
- package/dist/client/assets/{AgentConfigurationScreen-BTI24HQX.js → AgentConfigurationScreen-BD7Unt2P.js} +1 -1
- package/dist/client/assets/{AgentDefinitionsWorkspace-srmN6-vj.js → AgentDefinitionsWorkspace-BbcZc9Xk.js} +1 -1
- package/dist/client/assets/{AgentDetailCard-UqPNpcvB.js → AgentDetailCard-B_KLcgsP.js} +1 -1
- package/dist/client/assets/{AgentFloorView-XXNgI5Cj.js → AgentFloorView-DMFiHs21.js} +1 -1
- package/dist/client/assets/{AgentInfoScreen-CimdOnZ9.js → AgentInfoScreen-DHGLRddI.js} +1 -1
- package/dist/client/assets/{AgentLaneCard-Z-aOBR3W.js → AgentLaneCard-ajZvcfdW.js} +1 -1
- package/dist/client/assets/{AgentLaneChrome-CyhA1reW.js → AgentLaneChrome-CTp39syR.js} +1 -1
- package/dist/client/assets/{AgentLaneDetailSheet-BNzjMjIH.js → AgentLaneDetailSheet-DRc-TpMB.js} +1 -1
- package/dist/client/assets/{AgentLaneSummaryResize-Box8-_rS.js → AgentLaneSummaryResize-VMNDo7kD.js} +1 -1
- package/dist/client/assets/AgentLanesEmbedScreen-C5k_dDS8.js +1 -0
- package/dist/client/assets/AgentLanesPreflight-CFadSaia.js +1 -0
- package/dist/client/assets/AgentLanesView-u5vpLwQf.js +2 -0
- package/dist/client/assets/{AgentLiveActions-BwuzOE8h.js → AgentLiveActions-CsQA3pu_.js} +1 -1
- package/dist/client/assets/AgentMasterScreen-C5WlWNmk.js +1 -0
- package/dist/client/assets/{AgentSessions-CsZwoukw.js → AgentSessions-BePq5Lgc.js} +1 -1
- package/dist/client/assets/{AgentsConsole-KCao4XmX.js → AgentsConsole-BuiZ_bDo.js} +1 -1
- package/dist/client/assets/{AgentsScreen-CtPAmwRX.js → AgentsScreen-CRi-hG2k.js} +1 -1
- package/dist/client/assets/AgentsSubnav-DUsya4WK.js +1 -0
- package/dist/client/assets/{AstronautSuit-Ckx7lu7G.js → AstronautSuit-Cjjcv6yQ.js} +1 -1
- package/dist/client/assets/{AtopView-DYlpgEHf.js → AtopView-PxWQd-sX.js} +1 -1
- package/dist/client/assets/{BackToPicker-4JaeRvDm.js → BackToPicker-Cto0Ioz9.js} +1 -1
- package/dist/client/assets/{BriefingDetailScreen-D6-xqrpo.js → BriefingDetailScreen-C29smC5d.js} +1 -1
- package/dist/client/assets/{BriefingsScreen-DKxSDEmk.js → BriefingsScreen-DNyFBrPn.js} +1 -1
- package/dist/client/assets/{BrokerMetadataPanel-BbREmsbK.js → BrokerMetadataPanel-DbaCQlhw.js} +1 -1
- package/dist/client/assets/{BrokerScreen-fbPIouMw.js → BrokerScreen-CS0s4Gm4.js} +1 -1
- package/dist/client/assets/{CastPicker-BcA2vDDV.js → CastPicker-CTBHjjGw.js} +1 -1
- package/dist/client/assets/ChatCollapsedStrip-D4rc7wBQ.js +1 -0
- package/dist/client/assets/{CodeDiffPane-Cn8Y9hAt.js → CodeDiffPane-QvxCUzTi.js} +1 -1
- package/dist/client/assets/{CodeProjectPicker-nPFktrco.js → CodeProjectPicker-DplkpM7f.js} +1 -1
- package/dist/client/assets/{CodeScreen-BlAxtxE5.js → CodeScreen-CrR2JaVj.js} +1 -1
- package/dist/client/assets/{ConversationComposer-2HjbGPL9.js → ConversationComposer-H8_hsYSc.js} +1 -1
- package/dist/client/assets/{ConversationFeedRows-C6wUqJrx.js → ConversationFeedRows-hlEFlURs.js} +1 -1
- package/dist/client/assets/{ConversationHeader-C8vfXaTF.js → ConversationHeader-B0ZBhE_E.js} +1 -1
- package/dist/client/assets/{ConversationPanels-CNCIbpqU.js → ConversationPanels-fMo6Uy1v.js} +2 -2
- package/dist/client/assets/ConversationScreen-CXAHQwQ3.js +2 -0
- package/dist/client/assets/{ConversationStatus-DZuyKsWN.js → ConversationStatus-DI5GCiyW.js} +1 -1
- package/dist/client/assets/{CrewAvatar-CTIuxp4G.js → CrewAvatar-CXJHLNVM.js} +1 -1
- package/dist/client/assets/CrewWorkspaces-Bz2Dcnt4.js +1 -0
- package/dist/client/assets/CrewWorkspaces-Diq11KDq.css +1 -0
- package/dist/client/assets/{DataTable-6IDhanr5.js → DataTable-DXIlOlVu.js} +1 -1
- package/dist/client/assets/{DispatchAftermath-DC1u9itO.js → DispatchAftermath-CrELgl2e.js} +1 -1
- package/dist/client/assets/{DocumentFocusViewer-DZVhS7as.js → DocumentFocusViewer-DFFE85Tq.js} +1 -1
- package/dist/client/assets/{EmbeddableSurfacesLab-BKUFJMCV.js → EmbeddableSurfacesLab-DgpewB3y.js} +1 -1
- package/dist/client/assets/{EmptyState-CeBl0iGd.js → EmptyState-D9X16fKq.js} +1 -1
- package/dist/client/assets/{FileViewerPane-DQlpNt2S.js → FileViewerPane-CY0RN78e.js} +1 -1
- package/dist/client/assets/FlightObserveScreen-qyzHzxLa.js +1 -0
- package/dist/client/assets/{FollowScreen-BXHOp3gb.js → FollowScreen-wZ-z67mX.js} +1 -1
- package/dist/client/assets/{HarnessMark-D5CA5uSp.js → HarnessMark-DAaWPiT_.js} +1 -1
- package/dist/client/assets/{HarnessesScreen-DhFXq1qz.js → HarnessesScreen-DbKkQM4o.js} +1 -1
- package/dist/client/assets/{HerdrSession-BRhs5LIR.js → HerdrSession-CYKRfBad.js} +1 -1
- package/dist/client/assets/{HomeHero-DMABJuze.js → HomeHero-DYyd3cpz.js} +1 -1
- package/dist/client/assets/{HostAdvisorView-RAociATV.js → HostAdvisorView-NtM0bsg8.js} +1 -1
- package/dist/client/assets/{KnowledgeSearchInspector-CZPyVNSw.js → KnowledgeSearchInspector-CU6BCFcS.js} +1 -1
- package/dist/client/assets/{KnowledgeSearchScreen-mGTKIg00.js → KnowledgeSearchScreen-DvbRRPQB.js} +1 -1
- package/dist/client/assets/{LaneToolHoverCard-D_DMlBeT.js → LaneToolHoverCard-Bo2Zl-1a.js} +1 -1
- package/dist/client/assets/{LaneTraceDetailSheet-BEHg3LmH.js → LaneTraceDetailSheet-C3C8UjXv.js} +1 -1
- package/dist/client/assets/{LaneTraceEventFocus-DVimcizS.js → LaneTraceEventFocus-Cek_64zR.js} +1 -1
- package/dist/client/assets/{MeshCanvas-BOuZx4AM.js → MeshCanvas-TvsID4fe.js} +1 -1
- package/dist/client/assets/{MeshCanvasMinimap-wL-1N94e.js → MeshCanvasMinimap-CxqeVVco.js} +1 -1
- package/dist/client/assets/{MeshScreen-DMY9Bmh5.js → MeshScreen-BJ-j9YXv.js} +1 -1
- package/dist/client/assets/{MeshTopologyView-DiDcX5f4.js → MeshTopologyView-BjprutE8.js} +2 -2
- package/dist/client/assets/MessagesScreen-CyNIZ3-X.js +1 -0
- package/dist/client/assets/{MissionContextRail-DrNKXG5u.js → MissionContextRail-Be0uXljQ.js} +1 -1
- package/dist/client/assets/{MissionControlView-ByBlHVN8.js → MissionControlView-Bj7cAbZd.js} +1 -1
- package/dist/client/assets/{MissionFocusOverlay-D1i6R6Zt.js → MissionFocusOverlay-DvTw6ts5.js} +1 -1
- package/dist/client/assets/{MissionLeftAgentRow-DN9NcCML.js → MissionLeftAgentRow-B0QG7Gys.js} +1 -1
- package/dist/client/assets/{MissionLogPane-DSeIv3Xo.js → MissionLogPane-EsM_S3ro.js} +1 -1
- package/dist/client/assets/{NewAgentModal-V7yK6J6j.js → NewAgentModal-Cqiq1CE1.js} +1 -1
- package/dist/client/assets/NewChatComposer-C_1op4dH.js +19 -0
- package/dist/client/assets/{NewChatOrigin-DdpzE4kz.js → NewChatOrigin-D7hwp6dm.js} +1 -1
- package/dist/client/assets/{ObserveEmbedScreen-l_Q3ts2q.js → ObserveEmbedScreen-CGHI_hb5.js} +1 -1
- package/dist/client/assets/{ObserveTextFlow-BSEtYTxU.js → ObserveTextFlow-BcrGQet8.js} +2 -2
- package/dist/client/assets/{ObservedTopologyPanel-CdGUXxGR.js → ObservedTopologyPanel-BhVsvwkh.js} +1 -1
- package/dist/client/assets/{OpenScoutAppShell-DN8dOSK4.js → OpenScoutAppShell-BtfvMkAp.js} +25 -25
- package/dist/client/assets/{OpsAgentsView-ntGr4pz4.js → OpsAgentsView-DBYtmLnh.js} +1 -1
- package/dist/client/assets/OpsScreen-CuYVgkC_.js +1 -0
- package/dist/client/assets/OpsSubnav-BEU4kKXm.js +1 -0
- package/dist/client/assets/ProjectAgentProfile-BhXAZEkW.js +1 -0
- package/dist/client/assets/{ProjectAgentProfileBar-BQET-qrY.js → ProjectAgentProfileBar-uJw9Wdfk.js} +1 -1
- package/dist/client/assets/{ProjectAgentProfileHero-Ck8mThtx.js → ProjectAgentProfileHero-CIMS4Dy_.js} +1 -1
- package/dist/client/assets/ProjectsInbox-JgU0lrY8.js +2 -0
- package/dist/client/assets/ProjectsRail-p99BRBOa.js +1 -0
- package/dist/client/assets/ProjectsScreen-BB45DU53.js +1 -0
- package/dist/client/assets/ProjectsThreadAside-BHDTJWOz.js +1 -0
- package/dist/client/assets/{Provider-B2xuo3rf.js → Provider-Bu-C8Hxc.js} +1 -1
- package/dist/client/assets/{RailRow-B-GycCBx.js → RailRow-ClMmtaIE.js} +1 -1
- package/dist/client/assets/{RawSessionsTable-AQThi6sm.js → RawSessionsTable-BtKdQPiv.js} +1 -1
- package/dist/client/assets/RealtimeVoiceScreen-KPHJgO1l.js +1 -0
- package/dist/client/assets/{RepoDiffEmbedScreen-DXWoRF_c.js → RepoDiffEmbedScreen-CjZ5ew3y.js} +1 -1
- package/dist/client/assets/{RepoDiffPageScreen-D_274ExO.js → RepoDiffPageScreen-CdTFfmbk.js} +1 -1
- package/dist/client/assets/{RepoDiffViewer-DbedmHDX.js → RepoDiffViewer-BFperHQg.js} +1 -1
- package/dist/client/assets/{RepoDiffViewerLazy-C0--fPtk.js → RepoDiffViewerLazy-BkBmbi1Z.js} +2 -2
- package/dist/client/assets/{ReposScreen-D39_YG4H.js → ReposScreen-C8dT4bK0.js} +1 -1
- package/dist/client/assets/ScoutDeckSurface-BcJsm2Kq.js +1 -0
- package/dist/client/assets/{ScoutSurface-UsRy0t-I.js → ScoutSurface-DmzEtrx8.js} +1 -1
- package/dist/client/assets/{ScoutbotFxLab-Fmdfboxs.js → ScoutbotFxLab-DU15Plja.js} +1 -1
- package/dist/client/assets/{SecondaryNav-o2RL9H8H.js → SecondaryNav-BrXMtvKE.js} +1 -1
- package/dist/client/assets/SessionEmbedScreen-Bt4flmAx.js +1 -0
- package/dist/client/assets/{SessionObserve-Dsd0j05N.js → SessionObserve-BCehTlO8.js} +1 -1
- package/dist/client/assets/{SessionObserveEvidence-DopQYDkD.js → SessionObserveEvidence-Bb6U-dem.js} +1 -1
- package/dist/client/assets/SessionRefScreen-C8BiRVPx.js +1 -0
- package/dist/client/assets/SessionsScreen-BNvjUflN.js +1 -0
- package/dist/client/assets/{SettingsDrawer-_AwuopMS.js → SettingsDrawer-BieUmb8g.js} +1 -1
- package/dist/client/assets/{SettingsScreen-Cw4DDfJP.js → SettingsScreen-3JvX1WFL.js} +1 -1
- package/dist/client/assets/{ShikiPane-BfHc_3pM.js → ShikiPane-DPWsVNtn.js} +1 -1
- package/dist/client/assets/{SlidePanel-C-q7XwTa.js → SlidePanel-BMRIR6bH.js} +1 -1
- package/dist/client/assets/{SpriteAvatar-Bs68ZENy.js → SpriteAvatar-56DTXxSV.js} +1 -1
- package/dist/client/assets/{StatusPill-ZZQwxB1a.js → StatusPill-BcuYUgsD.js} +1 -1
- package/dist/client/assets/{TailView-Q4FVMsUH.js → TailView-BDy8c2VB.js} +1 -1
- package/dist/client/assets/{Terminal-D7zqHwHV.js → Terminal-BlUQY9_Z.js} +1 -1
- package/dist/client/assets/{TerminalEmbedScreen-CXIJ7qv6.js → TerminalEmbedScreen-DTjxktyr.js} +1 -1
- package/dist/client/assets/{TerminalHeaderMount-BnBLOPbb.js → TerminalHeaderMount-Cy-uxkey.js} +1 -1
- package/dist/client/assets/{TextDocumentSurface-CKQP-cBT.js → TextDocumentSurface-BeSwe3Yl.js} +1 -1
- package/dist/client/assets/{TmuxPeek-V9dGESfO.js → TmuxPeek-B4no_aGI.js} +1 -1
- package/dist/client/assets/{VoicePermissionsPanel-k7sbLXx2.js → VoicePermissionsPanel-Bd16scwz.js} +1 -1
- package/dist/client/assets/{WorkDetailScreen-60p9litn.js → WorkDetailScreen-DIFQufak.js} +1 -1
- package/dist/client/assets/{WorkFilesViewer-BjJS7GyM.js → WorkFilesViewer-CT5XEFGf.js} +1 -1
- package/dist/client/assets/{activity-Bj3Hnbj3.js → activity-CqZafWfx.js} +1 -1
- package/dist/client/assets/{addon-fit-BL-NTWRU.js → addon-fit-CM6F_JRD.js} +1 -1
- package/dist/client/assets/{addon-webgl-CIMgmNjg.js → addon-webgl-DRTiePFC.js} +1 -1
- package/dist/client/assets/{agent-autocomplete-DXlvdc4b.js → agent-autocomplete-DXUBnlkN.js} +1 -1
- package/dist/client/assets/{agent-essentials-BOMHR0_U.js → agent-essentials-vytdybaX.js} +1 -1
- package/dist/client/assets/{agent-lane-card-model-CTLxf3R4.js → agent-lane-card-model-CNZMPkhc.js} +1 -1
- package/dist/client/assets/{agent-lanes-model-AfrjRNK5.js → agent-lanes-model-DXqjs0OK.js} +2 -2
- package/dist/client/assets/agent-master-I1W-5d-x.css +1 -0
- package/dist/client/assets/agent-master-model-DAZL92oe.js +1 -0
- package/dist/client/assets/{agent-specialization-BIPIBW8u.js → agent-specialization-BtxLN4UR.js} +1 -1
- package/dist/client/assets/agents-project-DgbqDc65.css +1 -0
- package/dist/client/assets/{arc.es-IR5r6sj_.js → arc.es-Bh84oHJ7.js} +1 -1
- package/dist/client/assets/{arrow-down-BydciYFZ.js → arrow-down-DvTsLokL.js} +1 -1
- package/dist/client/assets/{arrow-left-CghA0kTw.js → arrow-left-DHfdXJVZ.js} +1 -1
- package/dist/client/assets/{arrow-right-iJFv3jNh.js → arrow-right-BBsrogWf.js} +1 -1
- package/dist/client/assets/{arrow-up-right-CCfZXPqD.js → arrow-up-right-CY0Vw_67.js} +1 -1
- package/dist/client/assets/{bot-B5sub1-i.js → bot-DzkOUFBb.js} +1 -1
- package/dist/client/assets/{check-C18YQC90.js → check-DbIkldnK.js} +1 -1
- package/dist/client/assets/{chevron-down-Mp9mu_yd.js → chevron-down-C475vltS.js} +1 -1
- package/dist/client/assets/{chevron-right-CzH-TaSF.js → chevron-right-CnZRSd-V.js} +1 -1
- package/dist/client/assets/{chunk-HRAB3GC3-swV8PA2k.js → chunk-HRAB3GC3-DLNT8aOo.js} +1 -1
- package/dist/client/assets/{chunk-JTPDIGGW-BKXqcLKw.js → chunk-JTPDIGGW-Ci5j4vzV.js} +3 -3
- package/dist/client/assets/{chunk-T65CQEWV-vYbNJ8E6.js → chunk-T65CQEWV-BtNvicWs.js} +1 -1
- package/dist/client/assets/{chunk-YOZR3KYS-U65yUmqt.js → chunk-YOZR3KYS-DN5EJulq.js} +1 -1
- package/dist/client/assets/{clock-B4PTFi5m.js → clock-DVvENUU5.js} +1 -1
- package/dist/client/assets/{code-xml-Jtxsp5d1.js → code-xml-CvKBY3KA.js} +1 -1
- package/dist/client/assets/{compass-0_54-vz3.js → compass-BcRI_YXo.js} +1 -1
- package/dist/client/assets/content--T3p6akp.js +1 -0
- package/dist/client/assets/content-4nFMLuzF.js +1 -0
- package/dist/client/assets/content-BJ4nHvcu.js +1 -0
- package/dist/client/assets/{content-DMbawvqU.js → content-BNyAjpUl.js} +1 -1
- package/dist/client/assets/content-BmGp9wNl.js +1 -0
- package/dist/client/assets/content-CBWhwaRo.js +1 -0
- package/dist/client/assets/content-CQlykFbe.js +1 -0
- package/dist/client/assets/content-CevL0DgF.js +1 -0
- package/dist/client/assets/content-Ch8pf2bj.js +1 -0
- package/dist/client/assets/content-Cpvdcm_l.js +1 -0
- package/dist/client/assets/content-DfS3vgAu.js +1 -0
- package/dist/client/assets/content-DpQdNePJ.js +1 -0
- package/dist/client/assets/content-Dqpibejl.js +1 -0
- package/dist/client/assets/content-TV0nd6-r.js +1 -0
- package/dist/client/assets/{content-CHghn-rT.js → content-odbb5H4U.js} +1 -1
- package/dist/client/assets/content-uXHLPHe0.js +1 -0
- package/dist/client/assets/{conversation-icons-BV10B2Me.js → conversation-icons-CBMKBGHd.js} +1 -1
- package/dist/client/assets/{conversation-model-CwF6Y9gx.js → conversation-model-QsJVfSeG.js} +1 -1
- package/dist/client/assets/conversation-motion-features-BFLHX2eg.js +1 -0
- package/dist/client/assets/{copy-Dtpx4FOE.js → copy-Cj-owMb-.js} +1 -1
- package/dist/client/assets/{cpu-BjVis9mc.js → cpu-DuD3RFX5.js} +1 -1
- package/dist/client/assets/{createLucideIcon-DXpqZP7I.js → createLucideIcon-DthwWQIg.js} +1 -1
- package/dist/client/assets/{ctx-panel-D_HJ3nhb.css → ctx-panel-F05jXK4Q.css} +1 -1
- package/dist/client/assets/discover-B3uQlh5L.js +2 -0
- package/dist/client/assets/embed-entry-DkRcHKTh.js +2 -0
- package/dist/client/assets/{external-link-Ckiyzjwo.js → external-link-C_nxk0MJ.js} +1 -1
- package/dist/client/assets/{eye-CpfyvdLq.js → eye-FnaaPfja.js} +1 -1
- package/dist/client/assets/{file-code-corner-7mo7EviR.js → file-code-corner-DDPq4Cur.js} +1 -1
- package/dist/client/assets/{file-text-KijGBnME.js → file-text--hfhwZH1.js} +1 -1
- package/dist/client/assets/{gauge-y-Xg8Mrv.js → gauge-BVEknshP.js} +1 -1
- package/dist/client/assets/{gestures-Bq9XnSqY.js → gestures-3gw5VgUS.js} +1 -1
- package/dist/client/assets/{git-branch-BQ_x8KZL.js → git-branch-DJyvr0k-.js} +1 -1
- package/dist/client/assets/{home-moving-signal-DtRpiNa0.js → home-moving-signal-BPqBoNSm.js} +1 -1
- package/dist/client/assets/{home-now-card-DFb4GOgM.js → home-now-card-UspVW2-2.js} +1 -1
- package/dist/client/assets/{home-now-card-nano-D--m9jpq.js → home-now-card-nano-G8kMB32m.js} +1 -1
- package/dist/client/assets/{hooks-9d1SoaQA.js → hooks-BMsQzo9j.js} +1 -1
- package/dist/client/assets/{index-CZ-05hKz.js → index-BI9AljSD.js} +5 -5
- package/dist/client/assets/index-C-v0Z6ZS.js +1 -0
- package/dist/client/assets/index-D9DzUORB.js +1 -0
- package/dist/client/assets/index-DfsTyYDx.js +1 -0
- package/dist/client/assets/{inspector-panel-C-EhEDYy.js → inspector-panel-CFSArQ8Y.js} +1 -1
- package/dist/client/assets/{keyboard-nav-DFhAJkW3.js → keyboard-nav-e6yGeorb.js} +1 -1
- package/dist/client/assets/{lane-roster-store-gUBsydNf.js → lane-roster-store-Q7pcblY5.js} +1 -1
- package/dist/client/assets/{layers-CGou-LwV.js → layers-Dz2dKOnU.js} +1 -1
- package/dist/client/assets/{layout-grid-BrZt31QH.js → layout-grid-Bvs5fdB4.js} +1 -1
- package/dist/client/assets/{left-CwHZCGO3.js → left-B4Ak-Ibt.js} +1 -1
- package/dist/client/assets/{left-DA0amyfu.js → left-BMb493FZ.js} +1 -1
- package/dist/client/assets/{left-CwLs0okF.js → left-BjFLvVOC.js} +1 -1
- package/dist/client/assets/{left-B_o51JV6.js → left-CsXQ8Q3G.js} +1 -1
- package/dist/client/assets/left-FNH7faCI.js +1 -0
- package/dist/client/assets/left-POkqE8gI.js +2 -0
- package/dist/client/assets/left-UulOTcWh.js +1 -0
- package/dist/client/assets/{left-advisor-DU3s01gk.js → left-advisor-CJkQS2d6.js} +1 -1
- package/dist/client/assets/left-agents-CFMxyEjT.js +1 -0
- package/dist/client/assets/{left-default-uvuvDmt0.js → left-default-rnX5HANc.js} +1 -1
- package/dist/client/assets/{left-lanes-DnNLgec8.js → left-lanes-BpLXT_qH.js} +1 -1
- package/dist/client/assets/{left-mission-DN3-NLPC.js → left-mission-B0bhseWw.js} +1 -1
- package/dist/client/assets/library-D1iXfda2.js +1 -0
- package/dist/client/assets/{loader-circle-BiohlpM3.js → loader-circle-B2W9DPG5.js} +1 -1
- package/dist/client/assets/{local-agents-wUIaBcEr.js → local-agents-DKr-gIDC.js} +1 -1
- package/dist/client/assets/{mentions-CcPFMbmZ.js → mentions-DuLQnEcn.js} +1 -1
- package/dist/client/assets/{mesh-buckets-ByyFXdKT.js → mesh-buckets-6y3ZIibI.js} +1 -1
- package/dist/client/assets/{mesh-ops-CvGyjK84.js → mesh-ops-CRR-KnCG.js} +1 -1
- package/dist/client/assets/{mesh-roster-n2nDpEmA.js → mesh-roster-Bc7T4b7z.js} +1 -1
- package/dist/client/assets/{mesh-view-store-BpxGm71b.js → mesh-view-store-CiET-yN8.js} +1 -1
- package/dist/client/assets/{message-circle-B2ddzBrX.js → message-circle-B2DoYKDO.js} +1 -1
- package/dist/client/assets/{message-markup-RkfmDfME.js → message-markup-Cc_O-WdA.js} +1 -1
- package/dist/client/assets/{message-square-D9YYWE0x.js → message-square-O-Hu9Mk2.js} +1 -1
- package/dist/client/assets/{message-visibility-DwxgcgYK.js → message-visibility-CGOmSSKs.js} +1 -1
- package/dist/client/assets/{mission-control-store-Bf4b54MV.js → mission-control-store-DDAgWKUl.js} +1 -1
- package/dist/client/assets/{observe-CJRIvOCn.js → observe-Da2mRAsc.js} +1 -1
- package/dist/client/assets/{page-status-BptpTdQ-.js → page-status-Crtgjbq3.js} +1 -1
- package/dist/client/assets/{paperclip-B1UNGl5d.js → paperclip-BudMKSyr.js} +1 -1
- package/dist/client/assets/{persistent-state-YI-WHSCF.js → persistent-state-xJz-qAFc.js} +1 -1
- package/dist/client/assets/{plus-CuU_X0-8.js → plus-BJ1If8vj.js} +1 -1
- package/dist/client/assets/{profile-rY8jO38P.js → profile-B3qDSbrH.js} +1 -1
- package/dist/client/assets/projects-inbox-CLek3QaG.js +1 -0
- package/dist/client/assets/projects-inbox-DRBl2N85.css +1 -0
- package/dist/client/assets/{proxy-DnLpZIi9.js → proxy-1BABCaDb.js} +1 -1
- package/dist/client/assets/{radio-Dm1ItnA4.js → radio-B5OpHrrK.js} +1 -1
- package/dist/client/assets/{refresh-cw-BRn9Oxxl.js → refresh-cw-DmNAhaH0.js} +1 -1
- package/dist/client/assets/resolve-panes-DXw-cHaj.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-CDdbRDEa.js +1 -0
- package/dist/client/assets/{right-BJltPRnd.js → right-BgJ4mQLf.js} +1 -1
- package/dist/client/assets/{right-DtsRNX5b.js → right-Bk6h7o-Z.js} +1 -1
- package/dist/client/assets/{right-C1yumXNx.js → right-BrICCmEt.js} +1 -1
- package/dist/client/assets/{right-BbyYdzHn.js → right-C1QIbqFZ.js} +1 -1
- package/dist/client/assets/{right-Shpw_xDy.js → right-CfliKiHY.js} +1 -1
- package/dist/client/assets/{right-D3aTKf1F.js → right-CtOLXB9s.js} +1 -1
- package/dist/client/assets/{right-CJnB_Bg7.js → right-D8id_DWQ.js} +1 -1
- package/dist/client/assets/{right-CPP7GyOm.js → right-DJ34yMAi.js} +1 -1
- package/dist/client/assets/{right-DI1B79nR.js → right-DiFmtw6d.js} +1 -1
- package/dist/client/assets/{right-Beh3nCUB.js → right-Lx79pxpG.js} +1 -1
- package/dist/client/assets/{rocket-DOwXHKWA.js → rocket-D3-TUJ2m.js} +1 -1
- package/dist/client/assets/router-DTtux5sP.js +1 -0
- package/dist/client/assets/{scope-views-A4_vP97W.js → scope-views-CPM0sBw_.js} +1 -1
- package/dist/client/assets/{scout-voice-BhPzrc6P.js → scout-voice-BZKsdquE.js} +1 -1
- package/dist/client/assets/{scoutbot-markdown-jh7tzFB1.js → scoutbot-markdown-CQ7Y1McC.js} +1 -1
- package/dist/client/assets/{scroll-text-DO0GQzvN.js → scroll-text-kPhYbh-M.js} +1 -1
- package/dist/client/assets/{search-D1tJSAWe.js → search-DmFM_9jm.js} +1 -1
- package/dist/client/assets/{secondaryNavConfig-B9IF8wXl.js → secondaryNavConfig-C9bQ9_IA.js} +1 -1
- package/dist/client/assets/{selection-bridge-i2S9zpf8.js → selection-bridge-Dy2mtMyi.js} +1 -1
- package/dist/client/assets/{send-horizontal-CgLppsIC.js → send-horizontal-qyjNgEaV.js} +1 -1
- package/dist/client/assets/{server-Dymv5Emh.js → server-nWqndnxu.js} +1 -1
- package/dist/client/assets/{session-catalog-DNaOEzoQ.js → session-catalog-BkmktBHI.js} +1 -1
- package/dist/client/assets/session-ref-lookup-state-SATH_jAP.js +1 -0
- package/dist/client/assets/{session-table-PTQVoTyc.js → session-table-DKSF0mrS.js} +1 -1
- package/dist/client/assets/{settings-2fC_G9nX.js → settings-C6h9y5XX.js} +1 -1
- package/dist/client/assets/{sliders-horizontal-BPSMHhbm.js → sliders-horizontal-BhHKxsCO.js} +1 -1
- package/dist/client/assets/{sparkles-Dy8p5xN8.js → sparkles-Cf8gin88.js} +1 -1
- package/dist/client/assets/{sse-CiOSzE5n.js → sse-DDHEHUgz.js} +1 -1
- package/dist/client/assets/{tail-events-BMQmSx1n.js → tail-events-BdUrO0kb.js} +1 -1
- package/dist/client/assets/{terminal-yN9xN-h9.js → terminal-C3YRPfyz.js} +1 -1
- package/dist/client/assets/{terminal-relay-9lhzEp2V.js → terminal-relay-BFhdIstF.js} +1 -1
- package/dist/client/assets/{terminal-takeover-DANQfTcy.js → terminal-takeover-B6H4llRR.js} +1 -1
- package/dist/client/assets/{text-rLpBg4_z.css → text-BYAFNLNq.css} +1 -1
- package/dist/client/assets/{text-CnZ0e1-V.js → text-Faa3ZStB.js} +1 -1
- package/dist/client/assets/{use-conversation-list-D9BNLfnW.js → use-conversation-list-DO5J8T1H.js} +1 -1
- package/dist/client/assets/use-fleet-active-asks-BtgNnRgK.js +1 -0
- package/dist/client/assets/{use-mesh-ops-items-BIvIHlqe.js → use-mesh-ops-items-N1HHhChY.js} +1 -1
- package/dist/client/assets/{use-reduced-motion-CKkhq9c5.js → use-reduced-motion-8WuxLa5l.js} +1 -1
- package/dist/client/assets/{use-scout-dev-flags-B2KCzPxn.js → use-scout-dev-flags-B31qTy6m.js} +1 -1
- package/dist/client/assets/{useAgentHoverCard-CHBsxcbp.js → useAgentHoverCard-Bkv-Uz_V.js} +1 -1
- package/dist/client/assets/useContentSecondaryNav-Bpkc8ayb.js +1 -0
- package/dist/client/assets/{usePierreRuntime-DUuXH5yp.js → usePierreRuntime-BfZHKAkI.js} +1 -1
- package/dist/client/assets/{wrench-YcXMlsh2.js → wrench-DkxnZRlR.js} +1 -1
- package/dist/client/assets/{x-e3h2hDsp.js → x-DfRJbqrh.js} +1 -1
- package/dist/client/assets/{xterm-Byp1Hep_.js → xterm-CJw8Epxv.js} +1 -1
- package/dist/client/assets/{zap-nMcjPoWB.js → zap-CIo8msJB.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/drizzle/0009_old_korg.sql +72 -0
- package/dist/drizzle/0010_sparkling_colonel_america.sql +2 -0
- package/dist/drizzle/0011_funny_onslaught.sql +4 -0
- package/dist/drizzle/0012_high_blazing_skull.sql +16 -0
- package/dist/drizzle/0013_perfect_juggernaut.sql +1 -0
- package/dist/drizzle/0014_legal_meggan.sql +6 -0
- package/dist/drizzle/0015_lame_marvel_boy.sql +12 -0
- package/dist/drizzle/0016_early_goliath.sql +6 -0
- package/dist/drizzle/meta/0009_snapshot.json +6262 -0
- package/dist/drizzle/meta/0010_snapshot.json +6286 -0
- package/dist/drizzle/meta/0011_snapshot.json +6337 -0
- package/dist/drizzle/meta/0012_snapshot.json +6458 -0
- package/dist/drizzle/meta/0013_snapshot.json +6465 -0
- package/dist/drizzle/meta/0014_snapshot.json +6503 -0
- package/dist/drizzle/meta/0015_snapshot.json +6596 -0
- package/dist/drizzle/meta/0016_snapshot.json +6611 -0
- package/dist/drizzle/meta/_journal.json +56 -0
- package/dist/main.mjs +1355 -365
- package/dist/node/main.mjs +314 -12
- package/dist/pairing-runtime-controller.mjs +616 -108
- package/dist/runtime/base-daemon.mjs +30 -3
- package/dist/runtime/broker-daemon.mjs +4822 -532
- package/dist/runtime/broker-process-manager.mjs +23 -2
- package/dist/runtime/mesh-discover.mjs +23 -2
- package/dist/scout-control-plane-web.mjs +1922 -478
- package/package.json +2 -2
- package/dist/client/assets/AgentLanesEmbedScreen-BmLnN4on.js +0 -1
- package/dist/client/assets/AgentLanesPreflight-5B6sXvRB.js +0 -1
- package/dist/client/assets/AgentLanesView-DHyzVBk6.js +0 -2
- package/dist/client/assets/AgentsSubnav-CDMjKeYC.js +0 -1
- package/dist/client/assets/ChatCollapsedStrip-Ycm0ecaX.js +0 -1
- package/dist/client/assets/ConversationScreen-BNULZAp2.js +0 -2
- package/dist/client/assets/CrewWorkspaces-CJhBKVoZ.css +0 -1
- package/dist/client/assets/CrewWorkspaces-CkPYIA46.js +0 -1
- package/dist/client/assets/FlightObserveScreen-CDWGSKZg.js +0 -1
- package/dist/client/assets/MessagesScreen-Eulveud3.js +0 -1
- package/dist/client/assets/NewChatComposer-hlWT-nbR.js +0 -19
- package/dist/client/assets/OpsScreen-Ppen_Lmj.js +0 -1
- package/dist/client/assets/OpsSubnav-GAKsoSor.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-BLlp2e6t.js +0 -1
- package/dist/client/assets/ProjectsInbox-Dlt8OQ8O.js +0 -2
- package/dist/client/assets/ProjectsRail-DCfNMmnW.js +0 -1
- package/dist/client/assets/ProjectsScreen-BP-hmI1m.js +0 -1
- package/dist/client/assets/ProjectsThreadAside-CWpMjGIH.js +0 -1
- package/dist/client/assets/RealtimeVoiceScreen-D7zZHK_t.js +0 -1
- package/dist/client/assets/ScoutDeckSurface-CKT3qdqY.js +0 -1
- package/dist/client/assets/SessionEmbedScreen-RD5XOx7R.js +0 -1
- package/dist/client/assets/SessionRefScreen-B_cTv47v.js +0 -1
- package/dist/client/assets/SessionsScreen-Bq0Z77On.js +0 -1
- package/dist/client/assets/agents-project-COzHxZAF.css +0 -1
- package/dist/client/assets/archive-BjcGiAy8.js +0 -1
- package/dist/client/assets/content-6RvWTrtk.js +0 -1
- package/dist/client/assets/content-BCgwMUqz.js +0 -1
- package/dist/client/assets/content-Bf2VLhx0.js +0 -1
- package/dist/client/assets/content-BrU_38-m.js +0 -1
- package/dist/client/assets/content-BvvJN8rN.js +0 -1
- package/dist/client/assets/content-CAeEqYPw.js +0 -1
- package/dist/client/assets/content-CI_Z9DXk.js +0 -1
- package/dist/client/assets/content-CbyKONhW.js +0 -1
- package/dist/client/assets/content-Czogvp43.js +0 -1
- package/dist/client/assets/content-DFk0zNzX.js +0 -1
- package/dist/client/assets/content-DHe4DgkA.js +0 -1
- package/dist/client/assets/content-DTz7cKjo.js +0 -1
- package/dist/client/assets/content-E3kudY-W.js +0 -1
- package/dist/client/assets/content-LpO0aO_U.js +0 -1
- package/dist/client/assets/conversation-motion-features-BKkCRaWR.js +0 -1
- package/dist/client/assets/discover-CHbrEItO.js +0 -2
- package/dist/client/assets/embed-entry-vil28MyU.js +0 -2
- package/dist/client/assets/index-BVlMw8x_.js +0 -1
- package/dist/client/assets/index-Cn0GR-q1.js +0 -1
- package/dist/client/assets/index-DosI4AG9.js +0 -1
- package/dist/client/assets/left-BpgWnaah.js +0 -1
- package/dist/client/assets/left-Cx0kv6pe.js +0 -1
- package/dist/client/assets/left-agents-qL5PpUY-.js +0 -1
- package/dist/client/assets/left-z-6CkuBe.js +0 -2
- package/dist/client/assets/library-DIo5NiGP.js +0 -1
- package/dist/client/assets/projects-inbox-BBs1hG13.css +0 -1
- package/dist/client/assets/projects-inbox-D-zAb9Gp.js +0 -1
- package/dist/client/assets/resolve-panes-DO6LkwhQ.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-CIF288wY.js +0 -1
- package/dist/client/assets/router-DJj2WbDg.js +0 -1
- package/dist/client/assets/use-fleet-active-asks-BeAdcl09.js +0 -1
- package/dist/client/assets/useContentSecondaryNav-D0mUhxTF.js +0 -1
|
@@ -2677,12 +2677,15 @@ var init_host_integrations = () => {};
|
|
|
2677
2677
|
// ../protocol/src/native-interactions.ts
|
|
2678
2678
|
var init_native_interactions = () => {};
|
|
2679
2679
|
|
|
2680
|
+
// ../protocol/src/session-handle.ts
|
|
2681
|
+
var init_session_handle = () => {};
|
|
2682
|
+
|
|
2680
2683
|
// ../protocol/src/runtime-catalog.generated.ts
|
|
2681
2684
|
var SCOUT_RUNTIME_CATALOG_DATA;
|
|
2682
2685
|
var init_runtime_catalog_generated = __esm(() => {
|
|
2683
2686
|
SCOUT_RUNTIME_CATALOG_DATA = {
|
|
2684
2687
|
schemaVersion: "openscout.runtime-catalog.v1",
|
|
2685
|
-
revision: "2026-
|
|
2688
|
+
revision: "2026-09-01.1",
|
|
2686
2689
|
harnesses: [
|
|
2687
2690
|
{
|
|
2688
2691
|
id: "claude",
|
|
@@ -2706,6 +2709,13 @@ var init_runtime_catalog_generated = __esm(() => {
|
|
|
2706
2709
|
family: "Opus",
|
|
2707
2710
|
version: "5"
|
|
2708
2711
|
},
|
|
2712
|
+
{
|
|
2713
|
+
id: "claude-fable-5",
|
|
2714
|
+
label: "Fable 5",
|
|
2715
|
+
enabled: true,
|
|
2716
|
+
family: "Fable",
|
|
2717
|
+
version: "5"
|
|
2718
|
+
},
|
|
2709
2719
|
{
|
|
2710
2720
|
id: "claude-sonnet-4-6",
|
|
2711
2721
|
label: "Sonnet 4.6",
|
|
@@ -3151,6 +3161,12 @@ var init_runtime_catalog = __esm(() => {
|
|
|
3151
3161
|
reasoningEfforts = new Set(SCOUT_REASONING_EFFORTS);
|
|
3152
3162
|
});
|
|
3153
3163
|
|
|
3164
|
+
// ../protocol/src/scout-baseline-runtime.ts
|
|
3165
|
+
var init_scout_baseline_runtime = () => {};
|
|
3166
|
+
|
|
3167
|
+
// ../protocol/src/session-title.ts
|
|
3168
|
+
var init_session_title = () => {};
|
|
3169
|
+
|
|
3154
3170
|
// ../protocol/src/reserved-vocabulary.ts
|
|
3155
3171
|
function scoutReservedVocabularyKind(value) {
|
|
3156
3172
|
const normalized = normalizeAgentSelectorSegment(value ?? "");
|
|
@@ -3379,6 +3395,7 @@ var init_broker_routes = __esm(() => {
|
|
|
3379
3395
|
home: "/v1/home",
|
|
3380
3396
|
node: "/v1/node",
|
|
3381
3397
|
snapshot: "/v1/snapshot",
|
|
3398
|
+
conversationProjection: "/v1/conversation-projection",
|
|
3382
3399
|
capabilities: "/v1/capabilities",
|
|
3383
3400
|
runtimeCatalog: "/v1/runtime-catalog",
|
|
3384
3401
|
topologySnapshot: "/v1/topology/snapshot",
|
|
@@ -3447,9 +3464,12 @@ var init_src = __esm(() => {
|
|
|
3447
3464
|
init_budget();
|
|
3448
3465
|
init_host_integrations();
|
|
3449
3466
|
init_native_interactions();
|
|
3467
|
+
init_session_handle();
|
|
3450
3468
|
init_runtime_profiles();
|
|
3451
3469
|
init_runtime_execution();
|
|
3452
3470
|
init_runtime_catalog();
|
|
3471
|
+
init_scout_baseline_runtime();
|
|
3472
|
+
init_session_title();
|
|
3453
3473
|
init_reserved_vocabulary();
|
|
3454
3474
|
init_scout_composer();
|
|
3455
3475
|
init_inbox();
|
|
@@ -22839,11 +22859,32 @@ function resolveBundledRuntimeDirFromModuleDir(moduleDir) {
|
|
|
22839
22859
|
resolve5(moduleDir, "..", "..")
|
|
22840
22860
|
];
|
|
22841
22861
|
for (const candidate of candidates) {
|
|
22842
|
-
if (isInstalledRuntimePackageDir(candidate))
|
|
22843
|
-
|
|
22862
|
+
if (!isInstalledRuntimePackageDir(candidate))
|
|
22863
|
+
continue;
|
|
22864
|
+
const sourceWorkspaceRuntime = resolveSourceWorkspaceRuntimeDir(candidate);
|
|
22865
|
+
if (sourceWorkspaceRuntime)
|
|
22866
|
+
return sourceWorkspaceRuntime;
|
|
22867
|
+
return candidate;
|
|
22844
22868
|
}
|
|
22845
22869
|
return null;
|
|
22846
22870
|
}
|
|
22871
|
+
function resolveSourceWorkspaceRuntimeDir(bundledPackageDir) {
|
|
22872
|
+
const packagesDir = dirname9(bundledPackageDir);
|
|
22873
|
+
if (resolve5(packagesDir, "cli") !== resolve5(bundledPackageDir))
|
|
22874
|
+
return null;
|
|
22875
|
+
const runtimeDir = join19(packagesDir, "runtime");
|
|
22876
|
+
if (!existsSync18(join19(runtimeDir, "src")))
|
|
22877
|
+
return null;
|
|
22878
|
+
if (!isInstalledRuntimePackageDir(runtimeDir))
|
|
22879
|
+
return null;
|
|
22880
|
+
try {
|
|
22881
|
+
const cliPackage = JSON.parse(readFileSync8(join19(bundledPackageDir, "package.json"), "utf8"));
|
|
22882
|
+
const runtimePackage = JSON.parse(readFileSync8(join19(runtimeDir, "package.json"), "utf8"));
|
|
22883
|
+
return cliPackage.name === "@openscout/scout" && runtimePackage.name === "@openscout/runtime" ? runtimeDir : null;
|
|
22884
|
+
} catch {
|
|
22885
|
+
return null;
|
|
22886
|
+
}
|
|
22887
|
+
}
|
|
22847
22888
|
function findWorkspaceRuntimeDir(startDir) {
|
|
22848
22889
|
let current = resolve5(startDir);
|
|
22849
22890
|
while (true) {
|
|
@@ -35518,7 +35559,10 @@ var agentsTable = sqliteTable("agents", {
|
|
|
35518
35559
|
advertiseScope: text("advertise_scope").notNull(),
|
|
35519
35560
|
ownerId: text("owner_id"),
|
|
35520
35561
|
metadataJson: text("metadata_json")
|
|
35521
|
-
})
|
|
35562
|
+
}, (table) => [
|
|
35563
|
+
index("idx_agents_home_node_id").on(table.homeNodeId),
|
|
35564
|
+
index("idx_agents_authority_node_id").on(table.authorityNodeId)
|
|
35565
|
+
]);
|
|
35522
35566
|
var agentEndpointsTable = sqliteTable("agent_endpoints", {
|
|
35523
35567
|
id: text("id").primaryKey(),
|
|
35524
35568
|
agentId: text("agent_id").notNull().references(() => agentsTable.id, { onDelete: "cascade" }),
|
|
@@ -35534,7 +35578,14 @@ var agentEndpointsTable = sqliteTable("agent_endpoints", {
|
|
|
35534
35578
|
metadataJson: text("metadata_json"),
|
|
35535
35579
|
updatedAt: integer("updated_at").notNull().default(epochMsNow)
|
|
35536
35580
|
}, (table) => [
|
|
35537
|
-
index("idx_agent_endpoints_agent_updated_at").on(table.agentId, desc(table.updatedAt))
|
|
35581
|
+
index("idx_agent_endpoints_agent_updated_at").on(table.agentId, desc(table.updatedAt)),
|
|
35582
|
+
index("idx_agent_endpoints_roster_recency").on(desc(sql`CASE
|
|
35583
|
+
WHEN ${table.updatedAt} IS NULL THEN NULL
|
|
35584
|
+
WHEN CAST(${table.updatedAt} AS REAL) < 1000000000000
|
|
35585
|
+
THEN CAST(CAST(${table.updatedAt} AS REAL) * 1000 AS INTEGER)
|
|
35586
|
+
ELSE CAST(${table.updatedAt} AS INTEGER)
|
|
35587
|
+
END`), table.agentId),
|
|
35588
|
+
index("idx_agent_endpoints_node_id").on(table.nodeId)
|
|
35538
35589
|
]);
|
|
35539
35590
|
var runtimeSessionsTable = sqliteTable("runtime_sessions", {
|
|
35540
35591
|
id: text("id").primaryKey(),
|
|
@@ -35558,6 +35609,7 @@ var runtimeSessionsTable = sqliteTable("runtime_sessions", {
|
|
|
35558
35609
|
}, (table) => [
|
|
35559
35610
|
index("idx_runtime_sessions_agent_last_seen").on(table.agentId, desc(table.lastSeenAt)),
|
|
35560
35611
|
index("idx_runtime_sessions_endpoint_last_seen").on(table.endpointId, desc(table.lastSeenAt)),
|
|
35612
|
+
index("idx_runtime_sessions_node_id").on(table.nodeId),
|
|
35561
35613
|
index("idx_runtime_sessions_external").on(table.externalSessionId),
|
|
35562
35614
|
index("idx_runtime_sessions_expires").on(table.expiresAt).where(sql`expires_at IS NOT NULL`)
|
|
35563
35615
|
]);
|
|
@@ -35577,6 +35629,8 @@ var runtimeSessionAliasesTable = sqliteTable("runtime_session_aliases", {
|
|
|
35577
35629
|
primaryKey({ columns: [table.alias, table.sessionId] }),
|
|
35578
35630
|
index("idx_runtime_session_aliases_alias").on(table.alias, desc(table.lastSeenAt)),
|
|
35579
35631
|
index("idx_runtime_session_aliases_session").on(table.sessionId),
|
|
35632
|
+
index("idx_runtime_session_aliases_endpoint").on(table.endpointId),
|
|
35633
|
+
index("idx_runtime_session_aliases_node_id").on(table.nodeId),
|
|
35580
35634
|
index("idx_runtime_session_aliases_expires").on(table.expiresAt).where(sql`expires_at IS NOT NULL`)
|
|
35581
35635
|
]);
|
|
35582
35636
|
var routeAliasBindingsTable = sqliteTable("route_alias_bindings", {
|
|
@@ -35656,7 +35710,8 @@ var conversationMembersTable = sqliteTable("conversation_members", {
|
|
|
35656
35710
|
actorId: text("actor_id").notNull().references(() => actorsTable.id, { onDelete: "cascade" }),
|
|
35657
35711
|
role: text("role")
|
|
35658
35712
|
}, (table) => [
|
|
35659
|
-
primaryKey({ columns: [table.conversationId, table.actorId] })
|
|
35713
|
+
primaryKey({ columns: [table.conversationId, table.actorId] }),
|
|
35714
|
+
index("idx_conversation_members_actor").on(table.actorId, table.conversationId)
|
|
35660
35715
|
]);
|
|
35661
35716
|
var messagesTable = sqliteTable("messages", {
|
|
35662
35717
|
id: text("id").primaryKey(),
|
|
@@ -35676,7 +35731,8 @@ var messagesTable = sqliteTable("messages", {
|
|
|
35676
35731
|
}, (table) => [
|
|
35677
35732
|
index("idx_messages_conversation_created_at").on(table.conversationId, table.createdAt),
|
|
35678
35733
|
index("idx_messages_created_at").on(desc(table.createdAt)),
|
|
35679
|
-
index("idx_messages_actor_created_at").on(table.actorId, desc(table.createdAt))
|
|
35734
|
+
index("idx_messages_actor_created_at").on(table.actorId, desc(table.createdAt)),
|
|
35735
|
+
index("idx_messages_origin_node_id").on(table.originNodeId)
|
|
35680
35736
|
]);
|
|
35681
35737
|
var messageMentionsTable = sqliteTable("message_mentions", {
|
|
35682
35738
|
messageId: text("message_id").notNull().references(() => messagesTable.id, { onDelete: "cascade" }),
|
|
@@ -35705,7 +35761,102 @@ var conversationReadCursorsTable = sqliteTable("conversation_read_cursors", {
|
|
|
35705
35761
|
metadataJson: text("metadata_json")
|
|
35706
35762
|
}, (table) => [
|
|
35707
35763
|
primaryKey({ columns: [table.conversationId, table.actorId] }),
|
|
35708
|
-
index("idx_read_cursors_conversation_updated_at").on(table.conversationId, desc(table.updatedAt))
|
|
35764
|
+
index("idx_read_cursors_conversation_updated_at").on(table.conversationId, desc(table.updatedAt)),
|
|
35765
|
+
index("idx_read_cursors_reader_node_id").on(table.readerNodeId)
|
|
35766
|
+
]);
|
|
35767
|
+
var brokerJournalProjectionCheckpointsTable = sqliteTable("broker_journal_projection_checkpoints", {
|
|
35768
|
+
projectionId: text("projection_id").primaryKey(),
|
|
35769
|
+
projectionVersion: integer("projection_version").notNull(),
|
|
35770
|
+
barrierId: text("barrier_id").notNull(),
|
|
35771
|
+
updatedAt: integer("updated_at").notNull()
|
|
35772
|
+
});
|
|
35773
|
+
var conversationProjectionMetaTable = sqliteTable("conversation_projection_meta", {
|
|
35774
|
+
singleton: integer("singleton").primaryKey(),
|
|
35775
|
+
projectionId: text("projection_id").notNull(),
|
|
35776
|
+
projectionVersion: integer("projection_version").notNull(),
|
|
35777
|
+
headSeq: integer("head_seq").notNull(),
|
|
35778
|
+
minReplayableSeq: integer("min_replayable_seq").notNull(),
|
|
35779
|
+
updatedAt: integer("updated_at").notNull()
|
|
35780
|
+
}, (table) => [
|
|
35781
|
+
check("conversation_projection_meta_singleton_check", sql`${table.singleton} = 1`)
|
|
35782
|
+
]);
|
|
35783
|
+
var conversationProjectionItemsTable = sqliteTable("conversation_projection_items", {
|
|
35784
|
+
feedId: text("feed_id").primaryKey(),
|
|
35785
|
+
entityKind: text("entity_kind").notNull(),
|
|
35786
|
+
kind: text("kind").notNull(),
|
|
35787
|
+
conversationId: text("conversation_id"),
|
|
35788
|
+
runtimeSessionId: text("runtime_session_id"),
|
|
35789
|
+
source: text("source"),
|
|
35790
|
+
sourceSessionId: text("source_session_id"),
|
|
35791
|
+
title: text("title"),
|
|
35792
|
+
alias: text("alias"),
|
|
35793
|
+
naturalKey: text("natural_key"),
|
|
35794
|
+
projectRoot: text("project_root"),
|
|
35795
|
+
harness: text("harness"),
|
|
35796
|
+
model: text("model"),
|
|
35797
|
+
effort: text("effort"),
|
|
35798
|
+
agentId: text("agent_id"),
|
|
35799
|
+
agentName: text("agent_name"),
|
|
35800
|
+
currentBranch: text("current_branch"),
|
|
35801
|
+
authorityNodeId: text("authority_node_id"),
|
|
35802
|
+
authorityNodeName: text("authority_node_name"),
|
|
35803
|
+
parentConversationId: text("parent_conversation_id"),
|
|
35804
|
+
anchorMessageId: text("anchor_message_id"),
|
|
35805
|
+
activityState: text("activity_state").notNull(),
|
|
35806
|
+
lastMessageId: text("last_message_id"),
|
|
35807
|
+
lastMessageAt: integer("last_message_at"),
|
|
35808
|
+
lastActivityAt: integer("last_activity_at").notNull(),
|
|
35809
|
+
messageCount: integer("message_count").notNull().default(0),
|
|
35810
|
+
unreadCount: integer("unread_count").notNull().default(0),
|
|
35811
|
+
participantCount: integer("participant_count").notNull().default(0),
|
|
35812
|
+
preview: text("preview"),
|
|
35813
|
+
lastEngagedAt: integer("last_engaged_at"),
|
|
35814
|
+
sourceFreshAt: integer("source_fresh_at"),
|
|
35815
|
+
visibilityState: text("visibility_state").notNull().default("visible"),
|
|
35816
|
+
updatedSeq: integer("updated_seq").notNull(),
|
|
35817
|
+
updatedAt: integer("updated_at").notNull()
|
|
35818
|
+
}, (table) => [
|
|
35819
|
+
check("conversation_projection_items_entity_kind_check", sql`${table.entityKind} IN ('scout_conversation', 'observed_session')`),
|
|
35820
|
+
check("conversation_projection_items_visibility_check", sql`${table.visibilityState} IN ('visible', 'hidden')`),
|
|
35821
|
+
index("idx_conversation_projection_recent").on(table.visibilityState, desc(table.lastActivityAt), table.feedId),
|
|
35822
|
+
index("idx_conversation_projection_project_recent").on(table.projectRoot, table.visibilityState, desc(table.lastActivityAt)),
|
|
35823
|
+
index("idx_conversation_projection_engaged").on(table.visibilityState, desc(table.lastEngagedAt), desc(table.lastActivityAt), table.feedId),
|
|
35824
|
+
index("idx_conversation_projection_source_fresh").on(table.visibilityState, desc(table.sourceFreshAt)),
|
|
35825
|
+
index("idx_conversation_projection_runtime_session").on(table.entityKind, table.runtimeSessionId),
|
|
35826
|
+
index("idx_conversation_projection_source_session").on(table.entityKind, table.sourceSessionId),
|
|
35827
|
+
uniqueIndex("idx_conversation_projection_conversation").on(table.conversationId).where(sql`conversation_id IS NOT NULL`)
|
|
35828
|
+
]);
|
|
35829
|
+
var conversationProjectionMessageFactsTable = sqliteTable("conversation_projection_message_facts", {
|
|
35830
|
+
messageId: text("message_id").primaryKey().references(() => messagesTable.id, { onDelete: "cascade" }),
|
|
35831
|
+
conversationId: text("conversation_id").notNull().references(() => conversationsTable.id, { onDelete: "cascade" }),
|
|
35832
|
+
createdAt: integer("created_at").notNull()
|
|
35833
|
+
}, (table) => [
|
|
35834
|
+
index("idx_conversation_projection_message_facts_conversation").on(table.conversationId, table.createdAt, table.messageId)
|
|
35835
|
+
]);
|
|
35836
|
+
var conversationProjectionMessageStatsTable = sqliteTable("conversation_projection_message_stats", {
|
|
35837
|
+
conversationId: text("conversation_id").primaryKey().references(() => conversationsTable.id, { onDelete: "cascade" }),
|
|
35838
|
+
messageCount: integer("message_count").notNull().default(0),
|
|
35839
|
+
latestMessageId: text("latest_message_id"),
|
|
35840
|
+
latestMessageAt: integer("latest_message_at")
|
|
35841
|
+
});
|
|
35842
|
+
var conversationProjectionSourcesTable = sqliteTable("conversation_projection_sources", {
|
|
35843
|
+
source: text("source").notNull(),
|
|
35844
|
+
sourceSessionId: text("source_session_id").notNull(),
|
|
35845
|
+
feedId: text("feed_id").notNull().references(() => conversationProjectionItemsTable.feedId, { onDelete: "cascade" }),
|
|
35846
|
+
firstSeenAt: integer("first_seen_at").notNull(),
|
|
35847
|
+
lastSeenAt: integer("last_seen_at").notNull()
|
|
35848
|
+
}, (table) => [
|
|
35849
|
+
primaryKey({ columns: [table.source, table.sourceSessionId] }),
|
|
35850
|
+
index("idx_conversation_projection_sources_feed").on(table.feedId)
|
|
35851
|
+
]);
|
|
35852
|
+
var conversationProjectionEventsTable = sqliteTable("conversation_projection_events", {
|
|
35853
|
+
seq: integer("seq").primaryKey({ autoIncrement: true }),
|
|
35854
|
+
projectionId: text("projection_id").notNull(),
|
|
35855
|
+
ts: integer("ts").notNull(),
|
|
35856
|
+
payloadJson: text("payload_json").notNull()
|
|
35857
|
+
}, (table) => [
|
|
35858
|
+
index("idx_conversation_projection_events_projection_seq").on(table.projectionId, table.seq),
|
|
35859
|
+
index("idx_conversation_projection_events_ts").on(table.ts)
|
|
35709
35860
|
]);
|
|
35710
35861
|
var invocationsTable = sqliteTable("invocations", {
|
|
35711
35862
|
id: text("id").primaryKey(),
|
|
@@ -35737,7 +35888,10 @@ var invocationsTable = sqliteTable("invocations", {
|
|
|
35737
35888
|
executionResolutionJson: text("execution_resolution_json")
|
|
35738
35889
|
}, (table) => [
|
|
35739
35890
|
index("idx_invocations_target_created_at").on(table.targetAgentId, table.createdAt),
|
|
35740
|
-
index("idx_invocations_requester_created_at").on(table.requesterId, desc(table.createdAt))
|
|
35891
|
+
index("idx_invocations_requester_created_at").on(table.requesterId, desc(table.createdAt)),
|
|
35892
|
+
index("idx_invocations_conversation_created_at").on(table.conversationId, desc(table.createdAt)),
|
|
35893
|
+
index("idx_invocations_requester_node_id").on(table.requesterNodeId),
|
|
35894
|
+
index("idx_invocations_target_node_id").on(table.targetNodeId)
|
|
35741
35895
|
]);
|
|
35742
35896
|
var flightsTable = sqliteTable("flights", {
|
|
35743
35897
|
id: text("id").primaryKey(),
|
|
@@ -35783,7 +35937,8 @@ var deliveriesTable = sqliteTable("deliveries", {
|
|
|
35783
35937
|
createdAt: integer("created_at").notNull().default(epochMsNow)
|
|
35784
35938
|
}, (table) => [
|
|
35785
35939
|
index("idx_deliveries_status_transport").on(table.status, table.transport),
|
|
35786
|
-
index("idx_deliveries_created_at").on(desc(table.createdAt))
|
|
35940
|
+
index("idx_deliveries_created_at").on(desc(table.createdAt)),
|
|
35941
|
+
index("idx_deliveries_target_node_id").on(table.targetNodeId)
|
|
35787
35942
|
]);
|
|
35788
35943
|
var deliveryAttemptsTable = sqliteTable("delivery_attempts", {
|
|
35789
35944
|
id: text("id").primaryKey(),
|
|
@@ -35953,7 +36108,8 @@ var threadEventsTable = sqliteTable("thread_events", {
|
|
|
35953
36108
|
}, (table) => [
|
|
35954
36109
|
unique2().on(table.conversationId, table.seq),
|
|
35955
36110
|
index("idx_thread_events_conversation_seq").on(table.conversationId, desc(table.seq)),
|
|
35956
|
-
index("idx_thread_events_conversation_ts").on(table.conversationId, desc(table.ts))
|
|
36111
|
+
index("idx_thread_events_conversation_ts").on(table.conversationId, desc(table.ts)),
|
|
36112
|
+
index("idx_thread_events_authority_node_id").on(table.authorityNodeId)
|
|
35957
36113
|
]);
|
|
35958
36114
|
var threadCursorsTable = sqliteTable("thread_cursors", {
|
|
35959
36115
|
conversationId: text("conversation_id").notNull().references(() => conversationsTable.id, { onDelete: "cascade" }),
|
|
@@ -35961,7 +36117,8 @@ var threadCursorsTable = sqliteTable("thread_cursors", {
|
|
|
35961
36117
|
lastAppliedSeq: integer("last_applied_seq").notNull(),
|
|
35962
36118
|
updatedAt: integer("updated_at").notNull()
|
|
35963
36119
|
}, (table) => [
|
|
35964
|
-
primaryKey({ columns: [table.conversationId, table.authorityNodeId] })
|
|
36120
|
+
primaryKey({ columns: [table.conversationId, table.authorityNodeId] }),
|
|
36121
|
+
index("idx_thread_cursors_authority_node_id").on(table.authorityNodeId)
|
|
35965
36122
|
]);
|
|
35966
36123
|
var scoutDispatchesTable = sqliteTable("scout_dispatches", {
|
|
35967
36124
|
id: text("id").primaryKey(),
|
|
@@ -36189,6 +36346,8 @@ CREATE INDEX IF NOT EXISTS idx_runtime_sessions_agent_last_seen
|
|
|
36189
36346
|
ON runtime_sessions (agent_id, last_seen_at DESC);
|
|
36190
36347
|
CREATE INDEX IF NOT EXISTS idx_runtime_sessions_endpoint_last_seen
|
|
36191
36348
|
ON runtime_sessions (endpoint_id, last_seen_at DESC);
|
|
36349
|
+
CREATE INDEX IF NOT EXISTS idx_runtime_sessions_node_id
|
|
36350
|
+
ON runtime_sessions (node_id);
|
|
36192
36351
|
CREATE INDEX IF NOT EXISTS idx_runtime_sessions_external
|
|
36193
36352
|
ON runtime_sessions (external_session_id);
|
|
36194
36353
|
CREATE INDEX IF NOT EXISTS idx_runtime_sessions_expires
|
|
@@ -36198,6 +36357,10 @@ CREATE INDEX IF NOT EXISTS idx_runtime_session_aliases_alias
|
|
|
36198
36357
|
ON runtime_session_aliases (alias, last_seen_at DESC);
|
|
36199
36358
|
CREATE INDEX IF NOT EXISTS idx_runtime_session_aliases_session
|
|
36200
36359
|
ON runtime_session_aliases (session_id);
|
|
36360
|
+
CREATE INDEX IF NOT EXISTS idx_runtime_session_aliases_endpoint
|
|
36361
|
+
ON runtime_session_aliases (endpoint_id);
|
|
36362
|
+
CREATE INDEX IF NOT EXISTS idx_runtime_session_aliases_node_id
|
|
36363
|
+
ON runtime_session_aliases (node_id);
|
|
36201
36364
|
CREATE INDEX IF NOT EXISTS idx_runtime_session_aliases_expires
|
|
36202
36365
|
ON runtime_session_aliases (expires_at)
|
|
36203
36366
|
WHERE expires_at IS NOT NULL;
|
|
@@ -36420,6 +36583,93 @@ CREATE TABLE IF NOT EXISTS conversation_read_cursors (
|
|
|
36420
36583
|
PRIMARY KEY (conversation_id, actor_id)
|
|
36421
36584
|
);
|
|
36422
36585
|
|
|
36586
|
+
CREATE TABLE IF NOT EXISTS broker_journal_projection_checkpoints (
|
|
36587
|
+
projection_id TEXT PRIMARY KEY,
|
|
36588
|
+
projection_version INTEGER NOT NULL,
|
|
36589
|
+
barrier_id TEXT NOT NULL,
|
|
36590
|
+
updated_at INTEGER NOT NULL
|
|
36591
|
+
);
|
|
36592
|
+
|
|
36593
|
+
CREATE TABLE IF NOT EXISTS conversation_projection_meta (
|
|
36594
|
+
singleton INTEGER PRIMARY KEY,
|
|
36595
|
+
projection_id TEXT NOT NULL,
|
|
36596
|
+
projection_version INTEGER NOT NULL,
|
|
36597
|
+
head_seq INTEGER NOT NULL,
|
|
36598
|
+
min_replayable_seq INTEGER NOT NULL,
|
|
36599
|
+
updated_at INTEGER NOT NULL,
|
|
36600
|
+
CONSTRAINT conversation_projection_meta_singleton_check CHECK (singleton = 1)
|
|
36601
|
+
);
|
|
36602
|
+
|
|
36603
|
+
CREATE TABLE IF NOT EXISTS conversation_projection_items (
|
|
36604
|
+
feed_id TEXT PRIMARY KEY,
|
|
36605
|
+
entity_kind TEXT NOT NULL,
|
|
36606
|
+
kind TEXT NOT NULL,
|
|
36607
|
+
conversation_id TEXT,
|
|
36608
|
+
runtime_session_id TEXT,
|
|
36609
|
+
source TEXT,
|
|
36610
|
+
source_session_id TEXT,
|
|
36611
|
+
title TEXT,
|
|
36612
|
+
alias TEXT,
|
|
36613
|
+
natural_key TEXT,
|
|
36614
|
+
project_root TEXT,
|
|
36615
|
+
harness TEXT,
|
|
36616
|
+
model TEXT,
|
|
36617
|
+
effort TEXT,
|
|
36618
|
+
agent_id TEXT,
|
|
36619
|
+
agent_name TEXT,
|
|
36620
|
+
current_branch TEXT,
|
|
36621
|
+
authority_node_id TEXT,
|
|
36622
|
+
authority_node_name TEXT,
|
|
36623
|
+
parent_conversation_id TEXT,
|
|
36624
|
+
anchor_message_id TEXT,
|
|
36625
|
+
activity_state TEXT NOT NULL,
|
|
36626
|
+
last_message_id TEXT,
|
|
36627
|
+
last_message_at INTEGER,
|
|
36628
|
+
last_activity_at INTEGER NOT NULL,
|
|
36629
|
+
message_count INTEGER NOT NULL DEFAULT 0,
|
|
36630
|
+
unread_count INTEGER NOT NULL DEFAULT 0,
|
|
36631
|
+
participant_count INTEGER NOT NULL DEFAULT 0,
|
|
36632
|
+
preview TEXT,
|
|
36633
|
+
last_engaged_at INTEGER,
|
|
36634
|
+
source_fresh_at INTEGER,
|
|
36635
|
+
visibility_state TEXT NOT NULL DEFAULT 'visible',
|
|
36636
|
+
updated_seq INTEGER NOT NULL,
|
|
36637
|
+
updated_at INTEGER NOT NULL,
|
|
36638
|
+
CONSTRAINT conversation_projection_items_entity_kind_check
|
|
36639
|
+
CHECK (entity_kind IN ('scout_conversation', 'observed_session')),
|
|
36640
|
+
CONSTRAINT conversation_projection_items_visibility_check
|
|
36641
|
+
CHECK (visibility_state IN ('visible', 'hidden'))
|
|
36642
|
+
);
|
|
36643
|
+
|
|
36644
|
+
CREATE TABLE IF NOT EXISTS conversation_projection_message_facts (
|
|
36645
|
+
message_id TEXT PRIMARY KEY REFERENCES messages(id) ON DELETE CASCADE,
|
|
36646
|
+
conversation_id TEXT NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
|
|
36647
|
+
created_at INTEGER NOT NULL
|
|
36648
|
+
);
|
|
36649
|
+
|
|
36650
|
+
CREATE TABLE IF NOT EXISTS conversation_projection_message_stats (
|
|
36651
|
+
conversation_id TEXT PRIMARY KEY REFERENCES conversations(id) ON DELETE CASCADE,
|
|
36652
|
+
message_count INTEGER NOT NULL DEFAULT 0,
|
|
36653
|
+
latest_message_id TEXT,
|
|
36654
|
+
latest_message_at INTEGER
|
|
36655
|
+
);
|
|
36656
|
+
|
|
36657
|
+
CREATE TABLE IF NOT EXISTS conversation_projection_sources (
|
|
36658
|
+
source TEXT NOT NULL,
|
|
36659
|
+
source_session_id TEXT NOT NULL,
|
|
36660
|
+
feed_id TEXT NOT NULL REFERENCES conversation_projection_items(feed_id) ON DELETE CASCADE,
|
|
36661
|
+
first_seen_at INTEGER NOT NULL,
|
|
36662
|
+
last_seen_at INTEGER NOT NULL,
|
|
36663
|
+
PRIMARY KEY (source, source_session_id)
|
|
36664
|
+
);
|
|
36665
|
+
|
|
36666
|
+
CREATE TABLE IF NOT EXISTS conversation_projection_events (
|
|
36667
|
+
seq INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
36668
|
+
projection_id TEXT NOT NULL,
|
|
36669
|
+
ts INTEGER NOT NULL,
|
|
36670
|
+
payload_json TEXT NOT NULL
|
|
36671
|
+
);
|
|
36672
|
+
|
|
36423
36673
|
CREATE TABLE IF NOT EXISTS invocations (
|
|
36424
36674
|
id TEXT PRIMARY KEY,
|
|
36425
36675
|
requester_id TEXT NOT NULL REFERENCES actors(id) ON DELETE RESTRICT,
|
|
@@ -36827,18 +37077,74 @@ CREATE INDEX IF NOT EXISTS idx_peer_nonces_seen_at
|
|
|
36827
37077
|
ON peer_nonces (seen_at);
|
|
36828
37078
|
CREATE INDEX IF NOT EXISTS idx_agent_endpoints_agent_updated_at
|
|
36829
37079
|
ON agent_endpoints (agent_id, updated_at DESC);
|
|
37080
|
+
CREATE INDEX IF NOT EXISTS idx_agent_endpoints_roster_recency
|
|
37081
|
+
ON agent_endpoints (
|
|
37082
|
+
CASE
|
|
37083
|
+
WHEN updated_at IS NULL THEN NULL
|
|
37084
|
+
WHEN CAST(updated_at AS REAL) < 1000000000000
|
|
37085
|
+
THEN CAST(CAST(updated_at AS REAL) * 1000 AS INTEGER)
|
|
37086
|
+
ELSE CAST(updated_at AS INTEGER)
|
|
37087
|
+
END DESC,
|
|
37088
|
+
agent_id
|
|
37089
|
+
);
|
|
37090
|
+
CREATE INDEX IF NOT EXISTS idx_agents_home_node_id
|
|
37091
|
+
ON agents (home_node_id);
|
|
37092
|
+
CREATE INDEX IF NOT EXISTS idx_agents_authority_node_id
|
|
37093
|
+
ON agents (authority_node_id);
|
|
37094
|
+
CREATE INDEX IF NOT EXISTS idx_agent_endpoints_node_id
|
|
37095
|
+
ON agent_endpoints (node_id);
|
|
37096
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_members_actor
|
|
37097
|
+
ON conversation_members (actor_id, conversation_id);
|
|
36830
37098
|
CREATE INDEX IF NOT EXISTS idx_messages_conversation_created_at
|
|
36831
37099
|
ON messages (conversation_id, created_at);
|
|
36832
37100
|
CREATE INDEX IF NOT EXISTS idx_messages_created_at
|
|
36833
37101
|
ON messages (created_at DESC);
|
|
36834
37102
|
CREATE INDEX IF NOT EXISTS idx_messages_actor_created_at
|
|
36835
37103
|
ON messages (actor_id, created_at DESC);
|
|
37104
|
+
CREATE INDEX IF NOT EXISTS idx_messages_origin_node_id
|
|
37105
|
+
ON messages (origin_node_id);
|
|
36836
37106
|
CREATE INDEX IF NOT EXISTS idx_read_cursors_conversation_updated_at
|
|
36837
37107
|
ON conversation_read_cursors (conversation_id, updated_at DESC);
|
|
37108
|
+
CREATE INDEX IF NOT EXISTS idx_read_cursors_reader_node_id
|
|
37109
|
+
ON conversation_read_cursors (reader_node_id);
|
|
37110
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_recent
|
|
37111
|
+
ON conversation_projection_items (visibility_state, last_activity_at DESC, feed_id);
|
|
37112
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_project_recent
|
|
37113
|
+
ON conversation_projection_items (project_root, visibility_state, last_activity_at DESC);
|
|
37114
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_message_facts_conversation
|
|
37115
|
+
ON conversation_projection_message_facts (conversation_id, created_at, message_id);
|
|
37116
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_engaged
|
|
37117
|
+
ON conversation_projection_items (
|
|
37118
|
+
visibility_state,
|
|
37119
|
+
last_engaged_at DESC,
|
|
37120
|
+
last_activity_at DESC,
|
|
37121
|
+
feed_id
|
|
37122
|
+
);
|
|
37123
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_source_fresh
|
|
37124
|
+
ON conversation_projection_items (visibility_state, source_fresh_at DESC);
|
|
37125
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_runtime_session
|
|
37126
|
+
ON conversation_projection_items (entity_kind, runtime_session_id);
|
|
37127
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_source_session
|
|
37128
|
+
ON conversation_projection_items (entity_kind, source_session_id);
|
|
37129
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_conversation_projection_conversation
|
|
37130
|
+
ON conversation_projection_items (conversation_id)
|
|
37131
|
+
WHERE conversation_id IS NOT NULL;
|
|
37132
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_sources_feed
|
|
37133
|
+
ON conversation_projection_sources (feed_id);
|
|
37134
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_events_projection_seq
|
|
37135
|
+
ON conversation_projection_events (projection_id, seq);
|
|
37136
|
+
CREATE INDEX IF NOT EXISTS idx_conversation_projection_events_ts
|
|
37137
|
+
ON conversation_projection_events (ts);
|
|
36838
37138
|
CREATE INDEX IF NOT EXISTS idx_invocations_target_created_at
|
|
36839
37139
|
ON invocations (target_agent_id, created_at);
|
|
36840
37140
|
CREATE INDEX IF NOT EXISTS idx_invocations_requester_created_at
|
|
36841
37141
|
ON invocations (requester_id, created_at DESC);
|
|
37142
|
+
CREATE INDEX IF NOT EXISTS idx_invocations_conversation_created_at
|
|
37143
|
+
ON invocations (conversation_id, created_at DESC);
|
|
37144
|
+
CREATE INDEX IF NOT EXISTS idx_invocations_requester_node_id
|
|
37145
|
+
ON invocations (requester_node_id);
|
|
37146
|
+
CREATE INDEX IF NOT EXISTS idx_invocations_target_node_id
|
|
37147
|
+
ON invocations (target_node_id);
|
|
36842
37148
|
CREATE INDEX IF NOT EXISTS idx_flights_target_state
|
|
36843
37149
|
ON flights (target_agent_id, state);
|
|
36844
37150
|
CREATE INDEX IF NOT EXISTS idx_flights_invocation_id
|
|
@@ -36847,6 +37153,8 @@ CREATE INDEX IF NOT EXISTS idx_deliveries_status_transport
|
|
|
36847
37153
|
ON deliveries (status, transport);
|
|
36848
37154
|
CREATE INDEX IF NOT EXISTS idx_deliveries_created_at
|
|
36849
37155
|
ON deliveries (created_at DESC);
|
|
37156
|
+
CREATE INDEX IF NOT EXISTS idx_deliveries_target_node_id
|
|
37157
|
+
ON deliveries (target_node_id);
|
|
36850
37158
|
CREATE INDEX IF NOT EXISTS idx_delivery_attempts_created_at
|
|
36851
37159
|
ON delivery_attempts (created_at DESC);
|
|
36852
37160
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_durable_actions_idempotency_key
|
|
@@ -36893,6 +37201,10 @@ CREATE INDEX IF NOT EXISTS idx_thread_events_conversation_seq
|
|
|
36893
37201
|
ON thread_events (conversation_id, seq DESC);
|
|
36894
37202
|
CREATE INDEX IF NOT EXISTS idx_thread_events_conversation_ts
|
|
36895
37203
|
ON thread_events (conversation_id, ts DESC);
|
|
37204
|
+
CREATE INDEX IF NOT EXISTS idx_thread_events_authority_node_id
|
|
37205
|
+
ON thread_events (authority_node_id);
|
|
37206
|
+
CREATE INDEX IF NOT EXISTS idx_thread_cursors_authority_node_id
|
|
37207
|
+
ON thread_cursors (authority_node_id);
|
|
36896
37208
|
CREATE INDEX IF NOT EXISTS idx_activity_items_agent_ts
|
|
36897
37209
|
ON activity_items (agent_id, ts DESC);
|
|
36898
37210
|
CREATE INDEX IF NOT EXISTS idx_activity_items_actor_ts
|
|
@@ -50353,12 +50665,24 @@ var meshPeerFetch = createMeshPeerFetch();
|
|
|
50353
50665
|
init_tailscale();
|
|
50354
50666
|
// ../runtime/src/iroh-bridge.ts
|
|
50355
50667
|
init_support_paths();
|
|
50668
|
+
|
|
50669
|
+
// ../runtime/src/mesh-forwarding.ts
|
|
50670
|
+
var MAX_PEER_AGENT_SNAPSHOT_BYTES = 2 * 1024 * 1024;
|
|
50356
50671
|
// ../runtime/src/mesh-rendezvous.ts
|
|
50357
50672
|
init_src();
|
|
50358
50673
|
init_broker_process_manager();
|
|
50359
50674
|
init_open_scout_network();
|
|
50360
50675
|
var DEFAULT_RENDEZVOUS_TTL_MS = 60000;
|
|
50361
50676
|
var DEFAULT_RENDEZVOUS_INTERVAL_MS = 30000;
|
|
50677
|
+
|
|
50678
|
+
class MeshRendezvousPublishError extends Error {
|
|
50679
|
+
status;
|
|
50680
|
+
constructor(status, message) {
|
|
50681
|
+
super(message);
|
|
50682
|
+
this.status = status;
|
|
50683
|
+
this.name = "MeshRendezvousPublishError";
|
|
50684
|
+
}
|
|
50685
|
+
}
|
|
50362
50686
|
function resolveMeshRendezvousPublishConfig(env = process.env, options = {}) {
|
|
50363
50687
|
const explicitUrl = env.OPENSCOUT_MESH_RENDEZVOUS_URL?.trim();
|
|
50364
50688
|
if (explicitUrl?.toLowerCase() === "false" || explicitUrl === "0") {
|
|
@@ -50372,6 +50696,10 @@ function resolveMeshRendezvousPublishConfig(env = process.env, options = {}) {
|
|
|
50372
50696
|
}
|
|
50373
50697
|
const token = env.OPENSCOUT_MESH_RENDEZVOUS_TOKEN?.trim() || undefined;
|
|
50374
50698
|
const sessionToken = env.OPENSCOUT_MESH_RENDEZVOUS_SESSION?.trim() || undefined;
|
|
50699
|
+
const allowAnonymous = readBooleanFlag(env.OPENSCOUT_MESH_RENDEZVOUS_ALLOW_ANONYMOUS);
|
|
50700
|
+
if (!token && !sessionToken && !allowAnonymous) {
|
|
50701
|
+
return;
|
|
50702
|
+
}
|
|
50375
50703
|
return {
|
|
50376
50704
|
url: rawUrl.replace(/\/$/, ""),
|
|
50377
50705
|
token,
|
|
@@ -50413,15 +50741,16 @@ async function publishMeshRendezvousPresence(node, options) {
|
|
|
50413
50741
|
});
|
|
50414
50742
|
if (!response.ok) {
|
|
50415
50743
|
const detail = await response.text().catch(() => "");
|
|
50416
|
-
throw new
|
|
50744
|
+
throw new MeshRendezvousPublishError(response.status, `rendezvous publish failed: ${response.status} ${response.statusText}${detail ? ` ${detail}` : ""}`);
|
|
50417
50745
|
}
|
|
50418
50746
|
return true;
|
|
50419
50747
|
}
|
|
50420
50748
|
function startMeshRendezvousPublisher(node, options) {
|
|
50421
50749
|
let stopped2 = false;
|
|
50750
|
+
let suspendedForAuth = false;
|
|
50422
50751
|
let inFlight = null;
|
|
50423
50752
|
const publishNow = async () => {
|
|
50424
|
-
if (stopped2)
|
|
50753
|
+
if (stopped2 || suspendedForAuth)
|
|
50425
50754
|
return;
|
|
50426
50755
|
if (inFlight) {
|
|
50427
50756
|
await inFlight;
|
|
@@ -50432,6 +50761,11 @@ function startMeshRendezvousPublisher(node, options) {
|
|
|
50432
50761
|
options.logger?.log(`[openscout-runtime] published mesh rendezvous presence to ${options.config.url}`);
|
|
50433
50762
|
}
|
|
50434
50763
|
}).catch((error) => {
|
|
50764
|
+
if (error instanceof MeshRendezvousPublishError && (error.status === 401 || error.status === 403)) {
|
|
50765
|
+
suspendedForAuth = true;
|
|
50766
|
+
options.logger?.warn(`[openscout-runtime] mesh rendezvous authentication rejected; publishing is suspended until restart: ${error.message}`);
|
|
50767
|
+
return;
|
|
50768
|
+
}
|
|
50435
50769
|
options.logger?.warn(`[openscout-runtime] mesh rendezvous publish failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
50436
50770
|
}).finally(() => {
|
|
50437
50771
|
inFlight = null;
|
|
@@ -50493,6 +50827,9 @@ function readPositiveInteger(value, fallback2) {
|
|
|
50493
50827
|
const parsed = Number.parseInt(value ?? "", 10);
|
|
50494
50828
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback2;
|
|
50495
50829
|
}
|
|
50830
|
+
function readBooleanFlag(value) {
|
|
50831
|
+
return ["1", "true", "yes", "on"].includes(value?.trim().toLowerCase() ?? "");
|
|
50832
|
+
}
|
|
50496
50833
|
|
|
50497
50834
|
// ../runtime/src/index.ts
|
|
50498
50835
|
init_node_identity();
|
|
@@ -54697,6 +55034,7 @@ var pairingLog = {
|
|
|
54697
55034
|
};
|
|
54698
55035
|
|
|
54699
55036
|
// ../web/server/core/pairing/runtime/relay/relay.ts
|
|
55037
|
+
init_local_config();
|
|
54700
55038
|
var BRIDGE_ABSENCE_GRACE_MS = 30000;
|
|
54701
55039
|
var ROOM_IDLE_TIMEOUT_MS = 60000;
|
|
54702
55040
|
function startRelay(port, options = {}) {
|
|
@@ -54713,6 +55051,9 @@ function startRelay(port, options = {}) {
|
|
|
54713
55051
|
} : {},
|
|
54714
55052
|
fetch(req, server2) {
|
|
54715
55053
|
const url = new URL(req.url);
|
|
55054
|
+
if (url.pathname === "/pair" && req.method === "GET") {
|
|
55055
|
+
return proxyPairHttp(req, url, options.pairHttpOrigin, server2.requestIP(req)?.address);
|
|
55056
|
+
}
|
|
54716
55057
|
if (url.pathname === "/resolve" && req.method === "POST") {
|
|
54717
55058
|
return handleResolve(req, roomByBridgeKey, rooms);
|
|
54718
55059
|
}
|
|
@@ -54856,6 +55197,46 @@ function startRelay(port, options = {}) {
|
|
|
54856
55197
|
}
|
|
54857
55198
|
};
|
|
54858
55199
|
}
|
|
55200
|
+
async function proxyPairHttp(req, url, pairHttpOrigin, clientIp) {
|
|
55201
|
+
const origin = pairHttpOrigin === undefined ? `http://127.0.0.1:${resolveWebPort()}` : pairHttpOrigin?.trim() || null;
|
|
55202
|
+
if (!origin) {
|
|
55203
|
+
return new Response("Pairing HTTP is not configured", { status: 503 });
|
|
55204
|
+
}
|
|
55205
|
+
const target2 = new URL("/pair", origin);
|
|
55206
|
+
target2.search = url.search;
|
|
55207
|
+
const headers2 = new Headers;
|
|
55208
|
+
for (const name2 of ["accept", "user-agent", "x-scout-client", "x-scout-device-name"]) {
|
|
55209
|
+
const value = req.headers.get(name2);
|
|
55210
|
+
if (value)
|
|
55211
|
+
headers2.set(name2, value);
|
|
55212
|
+
}
|
|
55213
|
+
headers2.set("x-scout-pair-relay", "1");
|
|
55214
|
+
if (clientIp) {
|
|
55215
|
+
headers2.set("x-forwarded-for", clientIp);
|
|
55216
|
+
headers2.set("x-real-ip", clientIp);
|
|
55217
|
+
}
|
|
55218
|
+
try {
|
|
55219
|
+
const response = await fetch(target2, {
|
|
55220
|
+
method: "GET",
|
|
55221
|
+
headers: headers2,
|
|
55222
|
+
redirect: "manual",
|
|
55223
|
+
signal: AbortSignal.timeout(3000)
|
|
55224
|
+
});
|
|
55225
|
+
const out = new Headers;
|
|
55226
|
+
const location = response.headers.get("location");
|
|
55227
|
+
if (location)
|
|
55228
|
+
out.set("location", location);
|
|
55229
|
+
const cacheControl = response.headers.get("cache-control");
|
|
55230
|
+
if (cacheControl)
|
|
55231
|
+
out.set("cache-control", cacheControl);
|
|
55232
|
+
const contentType = response.headers.get("content-type");
|
|
55233
|
+
if (contentType)
|
|
55234
|
+
out.set("content-type", contentType);
|
|
55235
|
+
return new Response(response.body, { status: response.status, headers: out });
|
|
55236
|
+
} catch {
|
|
55237
|
+
return new Response("Pairing service unreachable", { status: 502 });
|
|
55238
|
+
}
|
|
55239
|
+
}
|
|
54859
55240
|
async function handleResolve(req, roomByBridgeKey, rooms) {
|
|
54860
55241
|
try {
|
|
54861
55242
|
const body = await req.json();
|
|
@@ -59215,7 +59596,8 @@ var SCOUT_API_LOG_ALL = process.env.SCOUT_PERF_LOG_API === "1";
|
|
|
59215
59596
|
// ../web/server/core/broker/service.ts
|
|
59216
59597
|
var DEFAULT_SCOUT_BROKER_SNAPSHOT_WINDOW_MS = 24 * 60 * 60 * 1000;
|
|
59217
59598
|
var DEFAULT_SCOUT_BROKER_SNAPSHOT_BUCKET_MS = 60 * 1000;
|
|
59218
|
-
var SCOUT_BROKER_CONTEXT_CACHE_TTL_MS =
|
|
59599
|
+
var SCOUT_BROKER_CONTEXT_CACHE_TTL_MS = 30000;
|
|
59600
|
+
var SCOUT_BROKER_CONTEXT_STALE_RETENTION_MS = 60000;
|
|
59219
59601
|
var scoutBrokerContextCache = new Map;
|
|
59220
59602
|
function invalidateScoutBrokerContextCache(baseUrl) {
|
|
59221
59603
|
const prefix = [baseUrl, resolveBrokerSocketPathForBaseUrl(baseUrl) ?? "http"].join("\x00") + "\x00";
|
|
@@ -59532,26 +59914,24 @@ async function recordScoutBrokerReadCursor(input, baseUrl = resolveScoutBrokerUr
|
|
|
59532
59914
|
});
|
|
59533
59915
|
}
|
|
59534
59916
|
async function loadScoutBrokerContext(baseUrl = resolveScoutBrokerUrl(), options = {}) {
|
|
59535
|
-
const
|
|
59917
|
+
const usesRollingWindow = options.since === undefined;
|
|
59918
|
+
const since = usesRollingWindow ? Math.floor((Date.now() - DEFAULT_SCOUT_BROKER_SNAPSHOT_WINDOW_MS) / DEFAULT_SCOUT_BROKER_SNAPSHOT_BUCKET_MS) * DEFAULT_SCOUT_BROKER_SNAPSHOT_BUCKET_MS : options.since;
|
|
59536
59919
|
if (options.force) {
|
|
59537
59920
|
invalidateScoutBrokerContextCache(baseUrl);
|
|
59538
59921
|
}
|
|
59539
59922
|
const cacheKey = options.signal ? null : [
|
|
59540
59923
|
baseUrl,
|
|
59541
59924
|
resolveBrokerSocketPathForBaseUrl(baseUrl) ?? "http",
|
|
59542
|
-
since ?? "full",
|
|
59925
|
+
usesRollingWindow ? "rolling-24h" : since ?? "full",
|
|
59543
59926
|
options.scope ?? "default"
|
|
59544
59927
|
].join("\x00");
|
|
59545
59928
|
const now = Date.now();
|
|
59546
|
-
for (const [key,
|
|
59547
|
-
if (
|
|
59929
|
+
for (const [key, entry2] of scoutBrokerContextCache) {
|
|
59930
|
+
if (key !== cacheKey && !entry2.inFlight && entry2.expiresAt + SCOUT_BROKER_CONTEXT_STALE_RETENTION_MS <= now) {
|
|
59548
59931
|
scoutBrokerContextCache.delete(key);
|
|
59932
|
+
}
|
|
59549
59933
|
}
|
|
59550
|
-
const
|
|
59551
|
-
if (cached && cached.expiresAt > now) {
|
|
59552
|
-
return cached.promise;
|
|
59553
|
-
}
|
|
59554
|
-
const promise = (async () => {
|
|
59934
|
+
const readContext = async () => {
|
|
59555
59935
|
const health = await readScoutBrokerHealth(baseUrl, { signal: options.signal });
|
|
59556
59936
|
if (!health.reachable || !health.ok) {
|
|
59557
59937
|
return null;
|
|
@@ -59575,19 +59955,60 @@ async function loadScoutBrokerContext(baseUrl = resolveScoutBrokerUrl(), options
|
|
|
59575
59955
|
} catch {
|
|
59576
59956
|
return null;
|
|
59577
59957
|
}
|
|
59578
|
-
}
|
|
59579
|
-
if (cacheKey) {
|
|
59580
|
-
|
|
59581
|
-
|
|
59582
|
-
|
|
59583
|
-
|
|
59584
|
-
|
|
59585
|
-
|
|
59958
|
+
};
|
|
59959
|
+
if (!cacheKey) {
|
|
59960
|
+
return readContext();
|
|
59961
|
+
}
|
|
59962
|
+
const refresh = (entry2, delayMs = 0) => {
|
|
59963
|
+
if (entry2.inFlight)
|
|
59964
|
+
return entry2.inFlight;
|
|
59965
|
+
const attempt = (delayMs > 0 ? new Promise((resolve15) => setTimeout(resolve15, delayMs)) : Promise.resolve()).then(readContext).then((context) => {
|
|
59966
|
+
if (scoutBrokerContextCache.get(cacheKey) !== entry2)
|
|
59967
|
+
return context;
|
|
59968
|
+
if (context) {
|
|
59969
|
+
entry2.value = context;
|
|
59970
|
+
entry2.hasValue = true;
|
|
59971
|
+
entry2.expiresAt = Date.now() + SCOUT_BROKER_CONTEXT_CACHE_TTL_MS;
|
|
59972
|
+
} else if (!entry2.hasValue) {
|
|
59586
59973
|
scoutBrokerContextCache.delete(cacheKey);
|
|
59974
|
+
} else {
|
|
59975
|
+
entry2.expiresAt = Date.now() + SCOUT_BROKER_CONTEXT_CACHE_TTL_MS;
|
|
59976
|
+
}
|
|
59977
|
+
return context;
|
|
59978
|
+
}).finally(() => {
|
|
59979
|
+
if (scoutBrokerContextCache.get(cacheKey) === entry2) {
|
|
59980
|
+
entry2.inFlight = null;
|
|
59587
59981
|
}
|
|
59588
59982
|
});
|
|
59983
|
+
entry2.inFlight = attempt;
|
|
59984
|
+
return attempt;
|
|
59985
|
+
};
|
|
59986
|
+
const cached = scoutBrokerContextCache.get(cacheKey);
|
|
59987
|
+
if (cached) {
|
|
59988
|
+
if (cached.hasValue) {
|
|
59989
|
+
if (cached.expiresAt <= now && !cached.inFlight) {
|
|
59990
|
+
refresh(cached);
|
|
59991
|
+
}
|
|
59992
|
+
return cached.value;
|
|
59993
|
+
}
|
|
59994
|
+
if (options.waitForInitial === false) {
|
|
59995
|
+
refresh(cached, options.initialRefreshDelayMs);
|
|
59996
|
+
return null;
|
|
59997
|
+
}
|
|
59998
|
+
return refresh(cached);
|
|
59999
|
+
}
|
|
60000
|
+
const entry = {
|
|
60001
|
+
expiresAt: now + SCOUT_BROKER_CONTEXT_CACHE_TTL_MS,
|
|
60002
|
+
value: null,
|
|
60003
|
+
hasValue: false,
|
|
60004
|
+
inFlight: null
|
|
60005
|
+
};
|
|
60006
|
+
scoutBrokerContextCache.set(cacheKey, entry);
|
|
60007
|
+
if (options.waitForInitial === false) {
|
|
60008
|
+
refresh(entry, options.initialRefreshDelayMs);
|
|
60009
|
+
return null;
|
|
59589
60010
|
}
|
|
59590
|
-
return
|
|
60011
|
+
return refresh(entry);
|
|
59591
60012
|
}
|
|
59592
60013
|
async function requireScoutBrokerContext(baseUrl = resolveScoutBrokerUrl()) {
|
|
59593
60014
|
const context = await loadScoutBrokerContext(baseUrl);
|
|
@@ -60674,14 +61095,71 @@ function staleFlightActivityPredicate(alias) {
|
|
|
60674
61095
|
}
|
|
60675
61096
|
|
|
60676
61097
|
// ../web/server/db/agents.ts
|
|
61098
|
+
var actorCreatedAtExpression = sqlTimestampMsExpression("ac.created_at");
|
|
61099
|
+
var endpointUpdatedAtExpression = sqlTimestampMsExpression("ep.updated_at");
|
|
61100
|
+
var AGENT_ROW_SELECT = `SELECT
|
|
61101
|
+
a.id,
|
|
61102
|
+
a.definition_id,
|
|
61103
|
+
a.node_qualifier,
|
|
61104
|
+
a.workspace_qualifier,
|
|
61105
|
+
a.selector,
|
|
61106
|
+
ac.display_name AS name,
|
|
61107
|
+
ac.handle,
|
|
61108
|
+
${actorCreatedAtExpression} AS actor_created_at,
|
|
61109
|
+
a.agent_class,
|
|
61110
|
+
a.default_selector,
|
|
61111
|
+
a.wake_policy,
|
|
61112
|
+
a.capabilities_json,
|
|
61113
|
+
a.metadata_json,
|
|
61114
|
+
a.authority_node_id,
|
|
61115
|
+
an.name AS authority_node_name,
|
|
61116
|
+
a.home_node_id,
|
|
61117
|
+
hn.name AS home_node_name,
|
|
61118
|
+
a.owner_id,
|
|
61119
|
+
oa.display_name AS owner_name,
|
|
61120
|
+
oa.handle AS owner_handle,
|
|
61121
|
+
ep.harness,
|
|
61122
|
+
ep.transport,
|
|
61123
|
+
ep.state,
|
|
61124
|
+
ep.project_root,
|
|
61125
|
+
ep.cwd,
|
|
61126
|
+
ep.session_id,
|
|
61127
|
+
ep.metadata_json AS endpoint_metadata_json,
|
|
61128
|
+
${endpointUpdatedAtExpression} AS updated_at
|
|
61129
|
+
FROM agents a
|
|
61130
|
+
JOIN actors ac ON ac.id = a.id
|
|
61131
|
+
LEFT JOIN nodes an ON an.id = a.authority_node_id
|
|
61132
|
+
LEFT JOIN nodes hn ON hn.id = a.home_node_id
|
|
61133
|
+
LEFT JOIN actors oa ON oa.id = a.owner_id
|
|
61134
|
+
${LATEST_AGENT_ENDPOINT_JOIN}`;
|
|
61135
|
+
var RECENT_ENDPOINT_AGENT_IDS_WITHOUT_INDEX_SQL = (() => {
|
|
61136
|
+
const endpointUpdatedAtExpression2 = sqlTimestampMsExpression("ep.updated_at");
|
|
61137
|
+
const latestEndpointUpdatedAtExpression = sqlTimestampMsCoalesceExpression("ep2.updated_at");
|
|
61138
|
+
return `SELECT a.id
|
|
61139
|
+
FROM agent_endpoints ep
|
|
61140
|
+
JOIN agents a ON a.id = ep.agent_id
|
|
61141
|
+
JOIN actors ac ON ac.id = a.id
|
|
61142
|
+
WHERE ep.id = (
|
|
61143
|
+
SELECT ep2.id
|
|
61144
|
+
FROM agent_endpoints ep2
|
|
61145
|
+
WHERE ep2.agent_id = a.id
|
|
61146
|
+
ORDER BY ${latestEndpointUpdatedAtExpression} DESC
|
|
61147
|
+
LIMIT 1
|
|
61148
|
+
)
|
|
61149
|
+
AND ${endpointUpdatedAtExpression2} > 0
|
|
61150
|
+
AND ${activeAgentMetadataPredicate("a")}
|
|
61151
|
+
ORDER BY ${endpointUpdatedAtExpression2} DESC, ac.display_name ASC
|
|
61152
|
+
LIMIT ?`;
|
|
61153
|
+
})();
|
|
61154
|
+
var RECENT_ENDPOINT_AGENT_IDS_SQL = RECENT_ENDPOINT_AGENT_IDS_WITHOUT_INDEX_SQL.replace("FROM agent_endpoints ep", "FROM agent_endpoints ep INDEXED BY idx_agent_endpoints_roster_recency");
|
|
60677
61155
|
function queryAgentIdsByEndpointSessionId() {
|
|
60678
|
-
const
|
|
61156
|
+
const endpointUpdatedAtExpression2 = sqlTimestampMsExpression("ep.updated_at");
|
|
60679
61157
|
const rows = db().prepare(`SELECT a.id, ep.session_id
|
|
60680
61158
|
FROM agents a
|
|
60681
61159
|
${LATEST_AGENT_ENDPOINT_JOIN}
|
|
60682
61160
|
WHERE ep.session_id IS NOT NULL
|
|
60683
61161
|
AND ${activeAgentMetadataPredicate("a")}
|
|
60684
|
-
ORDER BY COALESCE(${
|
|
61162
|
+
ORDER BY COALESCE(${endpointUpdatedAtExpression2}, 0) ASC`).all();
|
|
60685
61163
|
const map = new Map;
|
|
60686
61164
|
for (const row of rows) {
|
|
60687
61165
|
const sessionId = row.session_id.trim();
|
|
@@ -60865,8 +61343,8 @@ function queryFleetAskRows(requesterIds, limit) {
|
|
|
60865
61343
|
ep.state AS endpoint_state,
|
|
60866
61344
|
cr.title AS work_title,
|
|
60867
61345
|
cr.summary AS work_summary,
|
|
61346
|
+
cr.kind AS record_kind,
|
|
60868
61347
|
cr.state AS work_state,
|
|
60869
|
-
cr.acceptance_state,
|
|
60870
61348
|
cr.next_move_owner_id,
|
|
60871
61349
|
cr.updated_at AS work_updated_at
|
|
60872
61350
|
FROM invocations inv
|
|
@@ -60928,7 +61406,8 @@ function projectFleetAsk(row, requesterIdSet) {
|
|
|
60928
61406
|
const queuedUntilOnline = queuedFlight && row.dispatch_outcome_status === "queued_until_online";
|
|
60929
61407
|
const staleActiveFlight = hasFlight && row.flight_state !== null && !TERMINAL_FLIGHT_STATES.has(row.flight_state) && isStaleActiveFlight(row.started_at, row.created_at);
|
|
60930
61408
|
const isActiveFlight = hasFlight && row.flight_state !== null && !TERMINAL_FLIGHT_STATES.has(row.flight_state) && !failed && !staleActiveFlight;
|
|
60931
|
-
const
|
|
61409
|
+
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);
|
|
61410
|
+
const awaitingOperator = attentionEligibleState && Boolean(row.next_move_owner_id && requesterIdSet.has(row.next_move_owner_id));
|
|
60932
61411
|
const updatedAt = normalizeTimestampMs(row.status_ts ?? row.completed_at ?? row.started_at ?? row.work_updated_at ?? row.created_at) ?? Date.now();
|
|
60933
61412
|
const dismissedAt = normalizeTimestampMs(row.flight_dismissed_at);
|
|
60934
61413
|
const recoveredAfterFailureAt = normalizeTimestampMs(row.recovered_after_failure_at);
|
|
@@ -60941,10 +61420,10 @@ function projectFleetAsk(row, requesterIdSet) {
|
|
|
60941
61420
|
status = queuedUntilOnline ? "failed" : "queued";
|
|
60942
61421
|
} else if (isActiveFlight) {
|
|
60943
61422
|
status = "working";
|
|
60944
|
-
} else if (awaitingOperator) {
|
|
60945
|
-
status = "needs_attention";
|
|
60946
61423
|
} else if (failed || staleActiveFlight) {
|
|
60947
61424
|
status = "failed";
|
|
61425
|
+
} else if (awaitingOperator) {
|
|
61426
|
+
status = "needs_attention";
|
|
60948
61427
|
} else {
|
|
60949
61428
|
status = "completed";
|
|
60950
61429
|
}
|
|
@@ -60988,34 +61467,7 @@ function queryFleetAttentionRows(requesterIds, limit) {
|
|
|
60988
61467
|
(cr.kind = 'work_item' AND cr.state IN ('open', 'working', 'waiting', 'review'))
|
|
60989
61468
|
OR (cr.kind = 'question' AND cr.state IN ('open', 'answered'))
|
|
60990
61469
|
)
|
|
60991
|
-
AND (
|
|
60992
|
-
cr.next_move_owner_id IN (${requesterClause})
|
|
60993
|
-
OR (
|
|
60994
|
-
cr.kind = 'work_item'
|
|
60995
|
-
AND cr.state = 'review'
|
|
60996
|
-
AND cr.acceptance_state = 'pending'
|
|
60997
|
-
AND NOT EXISTS (
|
|
60998
|
-
SELECT 1
|
|
60999
|
-
FROM collaboration_events e
|
|
61000
|
-
WHERE e.record_id = cr.id
|
|
61001
|
-
AND e.created_at > cr.updated_at
|
|
61002
|
-
)
|
|
61003
|
-
AND NOT EXISTS (
|
|
61004
|
-
SELECT 1
|
|
61005
|
-
FROM invocations inv
|
|
61006
|
-
WHERE inv.collaboration_record_id = cr.id
|
|
61007
|
-
AND inv.flight_id IS NOT NULL
|
|
61008
|
-
AND COALESCE(inv.completed_at, inv.started_at, 0) > cr.updated_at
|
|
61009
|
-
)
|
|
61010
|
-
AND NOT EXISTS (
|
|
61011
|
-
SELECT 1
|
|
61012
|
-
FROM messages m
|
|
61013
|
-
WHERE m.conversation_id = cr.conversation_id
|
|
61014
|
-
AND m.actor_id = cr.owner_id
|
|
61015
|
-
AND m.created_at > cr.updated_at
|
|
61016
|
-
)
|
|
61017
|
-
)
|
|
61018
|
-
)
|
|
61470
|
+
AND cr.next_move_owner_id IN (${requesterClause})
|
|
61019
61471
|
AND NOT EXISTS (
|
|
61020
61472
|
SELECT 1
|
|
61021
61473
|
FROM collaboration_events dismissed
|
|
@@ -61088,7 +61540,7 @@ function resolveAgentConversationId(agentId) {
|
|
|
61088
61540
|
return recent?.conversation_id ?? null;
|
|
61089
61541
|
}
|
|
61090
61542
|
function queryMobileAgentDetail(agentId) {
|
|
61091
|
-
const
|
|
61543
|
+
const endpointUpdatedAtExpression2 = sqlTimestampMsExpression("ep.updated_at");
|
|
61092
61544
|
const row = db().prepare(`SELECT
|
|
61093
61545
|
a.id,
|
|
61094
61546
|
ac.display_name,
|
|
@@ -61102,7 +61554,7 @@ function queryMobileAgentDetail(agentId) {
|
|
|
61102
61554
|
ep.project_root,
|
|
61103
61555
|
ep.cwd,
|
|
61104
61556
|
ep.session_id,
|
|
61105
|
-
${
|
|
61557
|
+
${endpointUpdatedAtExpression2} AS updated_at
|
|
61106
61558
|
FROM agents a
|
|
61107
61559
|
JOIN actors ac ON ac.id = a.id
|
|
61108
61560
|
${LATEST_AGENT_ENDPOINT_JOIN}
|
|
@@ -61246,7 +61698,7 @@ init_pi_rpc();
|
|
|
61246
61698
|
init_system_probes();
|
|
61247
61699
|
import { createHash as createHash6 } from "crypto";
|
|
61248
61700
|
import { existsSync as existsSync35, mkdirSync as mkdirSync16, readdirSync as readdirSync5, readFileSync as readFileSync21, renameSync as renameSync5, statSync as statSync10, writeFileSync as writeFileSync12 } from "fs";
|
|
61249
|
-
import { open } from "fs/promises";
|
|
61701
|
+
import { open, readdir as readdir4, stat as stat6 } from "fs/promises";
|
|
61250
61702
|
import { homedir as homedir33 } from "os";
|
|
61251
61703
|
import { dirname as dirname21, join as join41 } from "path";
|
|
61252
61704
|
import { createInterface as createInterface2 } from "readline";
|
|
@@ -61254,6 +61706,10 @@ import { Database as Database3 } from "bun:sqlite";
|
|
|
61254
61706
|
var CACHE_TTL_MS = 60 * 1000;
|
|
61255
61707
|
var WEEK_MS = 7 * 24 * 3600 * 1000;
|
|
61256
61708
|
var CODEX_LOOKBACK_DAYS = 3;
|
|
61709
|
+
var CODEX_JSONL_TAIL_MAX_BYTES = 2 * 1024 * 1024;
|
|
61710
|
+
var CODEX_INITIAL_FILE_LIMIT = 32;
|
|
61711
|
+
var CODEX_RECENT_CANDIDATE_LIMIT = 64;
|
|
61712
|
+
var CODEX_JSONL_READ_CONCURRENCY = 8;
|
|
61257
61713
|
var LOCAL_QUOTA_FRESH_MS = 2 * 60 * 1000;
|
|
61258
61714
|
var REMOTE_QUOTA_FRESH_MS = 5 * 60 * 1000;
|
|
61259
61715
|
var GH_CLI_TIMEOUT_MS = 4000;
|
|
@@ -61352,12 +61808,14 @@ async function loadCodexGauge(forceRefresh = false) {
|
|
|
61352
61808
|
const root = join41(homeDir(), ".codex", "sessions");
|
|
61353
61809
|
if (!existsSync35(root))
|
|
61354
61810
|
return fallback2;
|
|
61355
|
-
const
|
|
61356
|
-
if (
|
|
61811
|
+
const candidates = await findRecentCodexJsonl(root, CODEX_LOOKBACK_DAYS);
|
|
61812
|
+
if (candidates.length === 0)
|
|
61357
61813
|
return fallback2;
|
|
61358
|
-
const observations = (await
|
|
61814
|
+
const observations = (await harvestRecentCodexRateLimits(candidates)).sort((left, right) => left.capturedAt - right.capturedAt);
|
|
61359
61815
|
if (observations.length === 0)
|
|
61360
61816
|
return fallback2;
|
|
61817
|
+
if (!observations.some(isCodexAccountPoolObservation))
|
|
61818
|
+
return fallback2;
|
|
61361
61819
|
const snapshots = bindingCodexPoolSnapshots(observations.flatMap((observation) => codexQuotaSnapshotsFromObservation(observation.usage, observation.capturedAt)));
|
|
61362
61820
|
persistQuotaSnapshots(snapshots);
|
|
61363
61821
|
const persisted = loadPersistedProviderQuotaGauge({
|
|
@@ -61414,9 +61872,11 @@ function bindingCodexPoolSnapshots(snapshots) {
|
|
|
61414
61872
|
const usedPercent = quotaSnapshotUsage(row)?.fill;
|
|
61415
61873
|
if (usedPercent === undefined)
|
|
61416
61874
|
continue;
|
|
61875
|
+
const poolId = poolIdOf(row);
|
|
61876
|
+
const accountPool = isCodexAccountPoolId(poolId);
|
|
61417
61877
|
const best = bindingPoolByLabel.get(row.label);
|
|
61418
|
-
if (!best || usedPercent > best.usedPercent || usedPercent === best.usedPercent && row.capturedAt > best.capturedAt) {
|
|
61419
|
-
bindingPoolByLabel.set(row.label, { poolId
|
|
61878
|
+
if (!best || usedPercent > best.usedPercent || usedPercent === best.usedPercent && accountPool && !best.accountPool || usedPercent === best.usedPercent && accountPool === best.accountPool && row.capturedAt > best.capturedAt) {
|
|
61879
|
+
bindingPoolByLabel.set(row.label, { poolId, usedPercent, capturedAt: row.capturedAt, accountPool });
|
|
61420
61880
|
}
|
|
61421
61881
|
}
|
|
61422
61882
|
return snapshots.filter((row) => bindingPoolByLabel.get(row.label)?.poolId === poolIdOf(row));
|
|
@@ -61433,37 +61893,83 @@ function formatQuotaWindowLabel(windowMinutes, fallback2) {
|
|
|
61433
61893
|
}
|
|
61434
61894
|
return `${windowMinutes}m`;
|
|
61435
61895
|
}
|
|
61436
|
-
function findRecentCodexJsonl(root, lookbackDays) {
|
|
61896
|
+
async function findRecentCodexJsonl(root, lookbackDays) {
|
|
61437
61897
|
const cutoffMs = Date.now() - lookbackDays * 86400 * 1000;
|
|
61438
61898
|
const paths2 = [];
|
|
61439
|
-
const
|
|
61899
|
+
const pending = [root];
|
|
61900
|
+
while (pending.length > 0) {
|
|
61901
|
+
const dir = pending.pop();
|
|
61902
|
+
if (!dir)
|
|
61903
|
+
continue;
|
|
61440
61904
|
let entries;
|
|
61441
61905
|
try {
|
|
61442
|
-
entries =
|
|
61906
|
+
entries = await readdir4(dir, { withFileTypes: true });
|
|
61443
61907
|
} catch {
|
|
61444
|
-
|
|
61908
|
+
continue;
|
|
61445
61909
|
}
|
|
61446
61910
|
for (const entry of entries) {
|
|
61447
61911
|
const full = join41(dir, entry.name);
|
|
61448
61912
|
if (entry.isDirectory()) {
|
|
61449
|
-
|
|
61913
|
+
pending.push(full);
|
|
61450
61914
|
} else if (entry.isFile() && entry.name.endsWith(".jsonl")) {
|
|
61451
|
-
|
|
61452
|
-
|
|
61453
|
-
|
|
61454
|
-
|
|
61915
|
+
try {
|
|
61916
|
+
const fileStat = await stat6(full);
|
|
61917
|
+
if (fileStat.mtimeMs < cutoffMs)
|
|
61918
|
+
continue;
|
|
61919
|
+
paths2.push({ path: full, mtimeMs: fileStat.mtimeMs });
|
|
61920
|
+
} catch {}
|
|
61455
61921
|
}
|
|
61456
61922
|
}
|
|
61457
|
-
}
|
|
61458
|
-
|
|
61459
|
-
|
|
61923
|
+
}
|
|
61924
|
+
return paths2.sort((left, right) => right.mtimeMs - left.mtimeMs).slice(0, CODEX_RECENT_CANDIDATE_LIMIT);
|
|
61925
|
+
}
|
|
61926
|
+
async function harvestRecentCodexRateLimits(candidates) {
|
|
61927
|
+
const observations = await readCodexCandidateBatch(candidates.slice(0, CODEX_INITIAL_FILE_LIMIT));
|
|
61928
|
+
if (observations.some(isCodexAccountPoolObservation))
|
|
61929
|
+
return observations;
|
|
61930
|
+
const overflow = candidates.slice(CODEX_INITIAL_FILE_LIMIT, CODEX_RECENT_CANDIDATE_LIMIT);
|
|
61931
|
+
for (let index2 = 0;index2 < overflow.length; index2 += CODEX_JSONL_READ_CONCURRENCY) {
|
|
61932
|
+
observations.push(...await readCodexCandidateBatch(overflow.slice(index2, index2 + CODEX_JSONL_READ_CONCURRENCY)));
|
|
61933
|
+
if (observations.some(isCodexAccountPoolObservation))
|
|
61934
|
+
break;
|
|
61935
|
+
}
|
|
61936
|
+
return observations;
|
|
61937
|
+
}
|
|
61938
|
+
async function readCodexCandidateBatch(candidates) {
|
|
61939
|
+
return (await Promise.all(candidates.map(async (candidate) => {
|
|
61940
|
+
try {
|
|
61941
|
+
return await readLatestCodexRateLimits(candidate.path);
|
|
61942
|
+
} catch {
|
|
61943
|
+
return [];
|
|
61944
|
+
}
|
|
61945
|
+
}))).flat();
|
|
61946
|
+
}
|
|
61947
|
+
function isCodexAccountPoolObservation(observation) {
|
|
61948
|
+
return isCodexAccountPoolId(observation.usage.limitId);
|
|
61949
|
+
}
|
|
61950
|
+
function isCodexAccountPoolId(limitId) {
|
|
61951
|
+
const normalized = limitId?.trim().toLowerCase();
|
|
61952
|
+
return !normalized || normalized === "codex";
|
|
61460
61953
|
}
|
|
61461
61954
|
async function readLatestCodexRateLimits(path2) {
|
|
61462
61955
|
const handle = await open(path2, "r");
|
|
61463
61956
|
try {
|
|
61464
|
-
const
|
|
61957
|
+
const fileStat = await handle.stat();
|
|
61958
|
+
const start = Math.max(0, fileStat.size - CODEX_JSONL_TAIL_MAX_BYTES);
|
|
61959
|
+
const rl = createInterface2({
|
|
61960
|
+
input: handle.createReadStream({
|
|
61961
|
+
encoding: "utf8",
|
|
61962
|
+
start,
|
|
61963
|
+
autoClose: false
|
|
61964
|
+
})
|
|
61965
|
+
});
|
|
61465
61966
|
const latestByPool = new Map;
|
|
61967
|
+
let firstLine = start > 0;
|
|
61466
61968
|
for await (const line of rl) {
|
|
61969
|
+
if (firstLine) {
|
|
61970
|
+
firstLine = false;
|
|
61971
|
+
continue;
|
|
61972
|
+
}
|
|
61467
61973
|
if (!line.includes('"rate_limits"'))
|
|
61468
61974
|
continue;
|
|
61469
61975
|
try {
|
|
@@ -61540,8 +62046,8 @@ function loadClaudeStatuslineQuotaSnapshots() {
|
|
|
61540
62046
|
}
|
|
61541
62047
|
function readClaudeStatuslineHistory(minCapturedAt) {
|
|
61542
62048
|
const path2 = join41(claudeStatuslineDir(), "claude-history.jsonl");
|
|
61543
|
-
const
|
|
61544
|
-
if (!
|
|
62049
|
+
const stat7 = safeStat(path2);
|
|
62050
|
+
if (!stat7)
|
|
61545
62051
|
return [];
|
|
61546
62052
|
let content;
|
|
61547
62053
|
try {
|
|
@@ -61549,7 +62055,7 @@ function readClaudeStatuslineHistory(minCapturedAt) {
|
|
|
61549
62055
|
} catch {
|
|
61550
62056
|
return [];
|
|
61551
62057
|
}
|
|
61552
|
-
if (
|
|
62058
|
+
if (stat7.size > CLAUDE_STATUSLINE_HISTORY_MAX_BYTES) {
|
|
61553
62059
|
content = content.slice(-CLAUDE_STATUSLINE_HISTORY_MAX_BYTES);
|
|
61554
62060
|
const firstNewline = content.indexOf(`
|
|
61555
62061
|
`);
|
|
@@ -62128,11 +62634,11 @@ async function loadGrokGauge() {
|
|
|
62128
62634
|
}
|
|
62129
62635
|
async function loadGrokBillingQuotaSnapshots() {
|
|
62130
62636
|
const path2 = join41(homeDir(), ".grok", "logs", "unified.jsonl");
|
|
62131
|
-
const
|
|
62132
|
-
if (!
|
|
62637
|
+
const stat7 = safeStat(path2);
|
|
62638
|
+
if (!stat7 || stat7.size <= 0)
|
|
62133
62639
|
return [];
|
|
62134
|
-
const length = Math.min(
|
|
62135
|
-
const start = Math.max(0,
|
|
62640
|
+
const length = Math.min(stat7.size, GROK_BILLING_LOG_MAX_BYTES);
|
|
62641
|
+
const start = Math.max(0, stat7.size - length);
|
|
62136
62642
|
let content = "";
|
|
62137
62643
|
let handle;
|
|
62138
62644
|
try {
|
|
@@ -62659,11 +63165,13 @@ function persistQuotaSnapshots(snapshots) {
|
|
|
62659
63165
|
return;
|
|
62660
63166
|
statement.run(id, snapshot.source ?? "provider_reported", snapshot.provider ?? null, snapshot.harness ?? null, snapshot.transport ?? null, snapshot.planType ?? null, snapshot.label, snapshot.windowKind ?? null, finiteNumber(snapshot.usedPercent) ?? null, finiteNumber(snapshot.percentRemaining) ?? null, finiteNumber(snapshot.used) ?? null, finiteNumber(snapshot.limitValue) ?? null, finiteNumber(snapshot.resetAt) ?? null, finiteNumber(snapshot.windowMs) ?? null, snapshot.capturedAt, JSON.stringify(metadata ?? {}), createdAt);
|
|
62661
63167
|
};
|
|
62662
|
-
|
|
62663
|
-
|
|
62664
|
-
|
|
62665
|
-
|
|
62666
|
-
|
|
63168
|
+
writer.transaction(() => {
|
|
63169
|
+
for (const snapshot of snapshots) {
|
|
63170
|
+
writeSnapshot(quotaSnapshotId(snapshot), snapshot, snapshot.metadata);
|
|
63171
|
+
writeSnapshot(quotaHistorySnapshotId(snapshot), snapshot, quotaHistoryMetadata(snapshot));
|
|
63172
|
+
}
|
|
63173
|
+
pruneHistory.run(createdAt - QUOTA_HISTORY_LOOKBACK_MS - QUOTA_HISTORY_BUCKET_MS2);
|
|
63174
|
+
})();
|
|
62667
63175
|
} catch {}
|
|
62668
63176
|
}
|
|
62669
63177
|
function quotaSnapshotMayReplace(existing, incoming) {
|
|
@@ -65834,8 +66342,8 @@ async function handleRPCInner(bridge, req, rpcContext = {}) {
|
|
|
65834
66342
|
}
|
|
65835
66343
|
const root = resolveWorkspaceRoot(configuredRoot);
|
|
65836
66344
|
const projectPath = resolveWorkspacePath(root, p.path);
|
|
65837
|
-
const
|
|
65838
|
-
if (!
|
|
66345
|
+
const stat7 = statSync13(projectPath);
|
|
66346
|
+
if (!stat7.isDirectory()) {
|
|
65839
66347
|
return { id: req.id, error: { code: -32000, message: "Workspace target is not a directory" } };
|
|
65840
66348
|
}
|
|
65841
66349
|
const adapterType = p.adapter ?? "claude-code";
|
|
@@ -66305,8 +66813,8 @@ function listDirectories(dirPath) {
|
|
|
66305
66813
|
continue;
|
|
66306
66814
|
const fullPath = join46(dirPath, name2);
|
|
66307
66815
|
try {
|
|
66308
|
-
const
|
|
66309
|
-
if (!
|
|
66816
|
+
const stat7 = statSync13(fullPath);
|
|
66817
|
+
if (!stat7.isDirectory())
|
|
66310
66818
|
continue;
|
|
66311
66819
|
const children = new Set(readdirSync6(fullPath));
|
|
66312
66820
|
const markers = [];
|
|
@@ -80941,8 +81449,8 @@ function listDirectories2(dirPath) {
|
|
|
80941
81449
|
continue;
|
|
80942
81450
|
const fullPath = join47(dirPath, name2);
|
|
80943
81451
|
try {
|
|
80944
|
-
const
|
|
80945
|
-
if (!
|
|
81452
|
+
const stat7 = statSync14(fullPath);
|
|
81453
|
+
if (!stat7.isDirectory())
|
|
80946
81454
|
continue;
|
|
80947
81455
|
const children = new Set(readdirSync7(fullPath));
|
|
80948
81456
|
const markers = [];
|
|
@@ -81619,8 +82127,8 @@ var workspaceRouter = t.router({
|
|
|
81619
82127
|
}
|
|
81620
82128
|
const root = resolveWorkspaceRoot2(configuredRoot);
|
|
81621
82129
|
const projectPath = resolveWorkspacePath2(root, input.path);
|
|
81622
|
-
const
|
|
81623
|
-
if (!
|
|
82130
|
+
const stat7 = statSync14(projectPath);
|
|
82131
|
+
if (!stat7.isDirectory()) {
|
|
81624
82132
|
throw new TRPCError({
|
|
81625
82133
|
code: "BAD_REQUEST",
|
|
81626
82134
|
message: "Workspace target is not a directory"
|