@openscout/scout 0.2.79 → 0.2.80
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/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/client/assets/ActivityScreen-BXm6nJ6L.js +1 -0
- package/dist/client/assets/{AddProjectForm-BoVtelSP.js → AddProjectForm-CtEiLQnm.js} +1 -1
- package/dist/client/assets/{AgentAvatar-CufDA4A-.js → AgentAvatar-CszU5eaU.js} +1 -1
- package/dist/client/assets/AgentConfigurationScreen-CfBXxrsD.js +1 -0
- package/dist/client/assets/AgentDefinitionsWorkspace-4Z0aN8AR.js +1 -0
- package/dist/client/assets/{AgentDetailCard-DxxVkgT1.js → AgentDetailCard-sZuHl1de.js} +1 -1
- package/dist/client/assets/AgentFloorView-DMivAYHU.js +1 -0
- package/dist/client/assets/AgentInfoScreen-CPkLg1pK.js +1 -0
- package/dist/client/assets/{AgentLaneCard-DTUvE96I.js → AgentLaneCard-nB68f2CI.js} +1 -1
- package/dist/client/assets/{AgentLaneChrome-BfVygkgL.js → AgentLaneChrome-O9Yf0uR-.js} +1 -1
- package/dist/client/assets/AgentLaneDetailSheet-BfhpaEQ3.js +4 -0
- package/dist/client/assets/{AgentLaneSummaryResize-CMgzYvAA.js → AgentLaneSummaryResize-Ct3b0TQR.js} +1 -1
- package/dist/client/assets/AgentLanesEmbedScreen-CjHMvy3v.js +1 -0
- package/dist/client/assets/{AgentLanesPreflight-KWfLcaNB.js → AgentLanesPreflight-DNGvZvjd.js} +1 -1
- package/dist/client/assets/{AgentLanesView-CxfbV8Kd.js → AgentLanesView-DqRK5-d2.js} +1 -1
- package/dist/client/assets/{AgentLiveActions-CZdAInEu.js → AgentLiveActions-DI4ooSHW.js} +1 -1
- package/dist/client/assets/{AgentSessions-Bkr0lyry.js → AgentSessions-BxWIPkWh.js} +1 -1
- package/dist/client/assets/{AgentsConsole-WtFVqaPJ.js → AgentsConsole-D6VHSCfZ.js} +1 -1
- package/dist/client/assets/AgentsScreen-zR6b2bUL.js +1 -0
- package/dist/client/assets/AgentsSubnav-q0xcZi6C.js +1 -0
- package/dist/client/assets/{AtopView-_OKDlZ1h.js → AtopView-VZkk40v0.js} +1 -1
- package/dist/client/assets/{BackToPicker-CkUmHuuo.js → BackToPicker-DZg_4nHL.js} +1 -1
- package/dist/client/assets/{BriefingDetailScreen-i54EtZKW.js → BriefingDetailScreen-BZU4qMwE.js} +1 -1
- package/dist/client/assets/{BriefingsScreen-CBrHojlQ.js → BriefingsScreen-Bfc3tqPp.js} +1 -1
- package/dist/client/assets/{BrokerMetadataPanel-opTLuZU6.js → BrokerMetadataPanel-CaFe6kdh.js} +1 -1
- package/dist/client/assets/BrokerScreen-Chh8sGen.js +5 -0
- package/dist/client/assets/{ChatCollapsedStrip-Dr2vmKXQ.js → ChatCollapsedStrip-Cov54p9V.js} +1 -1
- package/dist/client/assets/{CodeDiffPane-CLOGjwul.js → CodeDiffPane-C1ebFt-Y.js} +1 -1
- package/dist/client/assets/{CodeProjectPicker-DTV8hR6A.js → CodeProjectPicker-tsCly-f3.js} +1 -1
- package/dist/client/assets/CodeScreen-D0hpZNLP.js +1 -0
- package/dist/client/assets/{ContextMenu-BlBQhpax.js → ContextMenu-N-Z6X0Z1.js} +1 -1
- package/dist/client/assets/ConversationComposer-CiEF7dhd.js +1 -0
- package/dist/client/assets/ConversationFeedRows-5it6QNBV.js +1 -0
- package/dist/client/assets/ConversationHeader-BGgbITvr.js +1 -0
- package/dist/client/assets/ConversationPanels-vI9YuQJh.js +2 -0
- package/dist/client/assets/ConversationScreen-C-PrCRz1.js +1 -0
- package/dist/client/assets/ConversationScreen-yIKEsm-8.css +1 -0
- package/dist/client/assets/{ConversationStatus-DSgdVofa.js → ConversationStatus-COEj5loj.js} +1 -1
- package/dist/client/assets/{DataTable-0DwuXyvW.js → DataTable-BoofV-_4.js} +1 -1
- package/dist/client/assets/{DispatchAftermath-BrreQifA.js → DispatchAftermath-OXYlMbT1.js} +1 -1
- package/dist/client/assets/{DocumentFocusViewer-DU_9BHsD.js → DocumentFocusViewer-BCG2kOmd.js} +1 -1
- package/dist/client/assets/{EmbeddableSurfacesLab-DdaswbfI.js → EmbeddableSurfacesLab-C2SZvrHJ.js} +1 -1
- package/dist/client/assets/{EmptyState-CoL-QuUO.js → EmptyState-DypEjx0V.js} +1 -1
- package/dist/client/assets/{FileViewerPane-C9Ly01Ef.js → FileViewerPane-CXCq-oKj.js} +1 -1
- package/dist/client/assets/{FleetSearch-DlWTLl-v.js → FleetSearch-Dj7-CfNi.js} +1 -1
- package/dist/client/assets/FlightObserveScreen-Yq5NtQQJ.js +1 -0
- package/dist/client/assets/FollowScreen-DRgYuAvp.js +1 -0
- package/dist/client/assets/HarnessMark-BE-YSyci.js +1 -0
- package/dist/client/assets/HarnessesScreen-L-emPcXd.js +1 -0
- package/dist/client/assets/HerdrSession-DKFCJMst.js +4 -0
- package/dist/client/assets/{HomeHero-Cfsow7qL.js → HomeHero-CAEg8Yg5.js} +1 -1
- package/dist/client/assets/{KnowledgeSearchInspector-DKashKoH.js → KnowledgeSearchInspector-C2EZsQ5i.js} +1 -1
- package/dist/client/assets/KnowledgeSearchScreen-DvdOFh-b.js +1 -0
- package/dist/client/assets/{LaneToolHoverCard-BzehBmdi.js → LaneToolHoverCard-DrPXYZvQ.js} +1 -1
- package/dist/client/assets/LaneTraceDetailSheet-Dl7foF88.js +1 -0
- package/dist/client/assets/{LaneTraceEventFocus-DYvHfs_3.js → LaneTraceEventFocus-X4-DDFEo.js} +1 -1
- package/dist/client/assets/{MeshCanvas-DIjlrMPU.js → MeshCanvas-rtCBD7s6.js} +1 -1
- package/dist/client/assets/{MeshCanvasMinimap-DEq-PkF0.js → MeshCanvasMinimap-CuvXOkc7.js} +1 -1
- package/dist/client/assets/MeshScreen-D5zzTn0o.js +1 -0
- package/dist/client/assets/{MeshTopologyView-BMHpH5BU.js → MeshTopologyView-CeTShs-U.js} +2 -2
- package/dist/client/assets/{MessageComposerSuggestions-zAUUcLOv.js → MessageComposerSuggestions-Cs9u-F_3.js} +1 -1
- package/dist/client/assets/MessagesScreen-BhOJ7_tj.js +1 -0
- package/dist/client/assets/MissionContextRail-0O-Zu1Tn.js +1 -0
- package/dist/client/assets/MissionControlView-D2JO9u-y.js +1 -0
- package/dist/client/assets/{MissionFocusOverlay-C7cPt6eU.js → MissionFocusOverlay-LnjmqBiW.js} +1 -1
- package/dist/client/assets/{MissionLeftAgentRow-CxlH3dON.js → MissionLeftAgentRow-nc1Jyq3D.js} +1 -1
- package/dist/client/assets/MissionLogPane-lZ9vUftY.js +1 -0
- package/dist/client/assets/{NewAgentModal-DprvD4EK.js → NewAgentModal-K1cvdmZr.js} +1 -1
- package/dist/client/assets/NewChatComposer-C5LT7MF7.css +1 -0
- package/dist/client/assets/NewChatComposer-DXDxV2Mh.js +19 -0
- package/dist/client/assets/{NewChatOrigin--pHWUb4V.js → NewChatOrigin-CnjoswTG.js} +1 -1
- package/dist/client/assets/{ObserveEmbedScreen-CfvrnOiZ.js → ObserveEmbedScreen-CRpzYf0Y.js} +1 -1
- package/dist/client/assets/{ObserveTextFlow-CBitljxi.js → ObserveTextFlow-DJxQc2H6.js} +2 -2
- package/dist/client/assets/{ObservedTopologyPanel-Dv6fbHzW.js → ObservedTopologyPanel-C1AQM0Mq.js} +1 -1
- package/dist/client/assets/OpenScoutAppShell-DrHYD_pd.js +87 -0
- package/dist/client/assets/OpsAgentsView-BnMX0vEY.js +1 -0
- package/dist/client/assets/OpsScreen-BeC0lieE.js +1 -0
- package/dist/client/assets/OpsSubnav-D5Bpowtk.js +1 -0
- package/dist/client/assets/{PlanView-DYtt8H37.js → PlanView-DDXdC19M.js} +1 -1
- package/dist/client/assets/ProjectAgentProfile-zE1cApxw.js +1 -0
- package/dist/client/assets/{ProjectAgentProfileBar-B3IvVbqS.js → ProjectAgentProfileBar-MODhG0P6.js} +1 -1
- package/dist/client/assets/{ProjectAgentProfileHero-D5E8yvDj.js → ProjectAgentProfileHero-C1ImgGDu.js} +1 -1
- package/dist/client/assets/ProjectsInbox-C3Jd6JTk.js +2 -0
- package/dist/client/assets/{ProjectsRail-DEDS-M1c.js → ProjectsRail-B1zrQLZe.js} +1 -1
- package/dist/client/assets/ProjectsScreen-PW_NH5VK.js +1 -0
- package/dist/client/assets/ProjectsThreadAside-DaCEUWN1.js +1 -0
- package/dist/client/assets/Provider-DSsb2gLR.js +1 -0
- package/dist/client/assets/{RailRow-BTlVAnHS.js → RailRow-DerXOXQS.js} +1 -1
- package/dist/client/assets/RawSessionsTable-LWEvXJzj.js +1 -0
- package/dist/client/assets/RealtimeVoiceScreen-XtxbCjOs.js +1 -0
- package/dist/client/assets/{RepoDiffEmbedScreen-CtTdlQ2A.js → RepoDiffEmbedScreen-C9oLCcZX.js} +1 -1
- package/dist/client/assets/{RepoDiffPageScreen-BRvaVYoC.js → RepoDiffPageScreen-CGEMAv2Z.js} +1 -1
- package/dist/client/assets/{RepoDiffViewer-Bo0gREMj.js → RepoDiffViewer-CB8PSVey.js} +1 -1
- package/dist/client/assets/RepoDiffViewerLazy-DIxkiMto.js +2 -0
- package/dist/client/assets/{ReposScreen-BBkJf8xT.js → ReposScreen-BN1lVjOj.js} +1 -1
- package/dist/client/assets/{ScoutDeckSurface-Bi9ov9Bm.js → ScoutDeckSurface-BCpl0QCx.js} +1 -1
- package/dist/client/assets/{ScoutSurface-DEQg_7Io.js → ScoutSurface-BEnDlynn.js} +1 -1
- package/dist/client/assets/{ScoutbotBroadcastChip-DJXuyn73.js → ScoutbotBroadcastChip-z9R_pC_U.js} +1 -1
- package/dist/client/assets/{ScoutbotFxLab-BgsuLDjo.js → ScoutbotFxLab-fAROyIfz.js} +1 -1
- package/dist/client/assets/{ScoutbotRealtimeVoiceCall-Bzyl0BCS.js → ScoutbotRealtimeVoiceCall-CDyFJX8m.js} +1 -1
- package/dist/client/assets/{SecondaryNav-Bks0CO2h.js → SecondaryNav-Hv5AJ3Fv.js} +1 -1
- package/dist/client/assets/{SessionEmbedScreen-b0Zgmfx5.js → SessionEmbedScreen-CDRpQc3g.js} +1 -1
- package/dist/client/assets/{SessionObserve-Dlx5vDaV.js → SessionObserve-BmmJ8dEh.js} +1 -1
- package/dist/client/assets/{SessionObserveEvidence-ChBD1d4c.js → SessionObserveEvidence-CEedIk2a.js} +1 -1
- package/dist/client/assets/SessionRefScreen-Dk-O4OVt.js +1 -0
- package/dist/client/assets/SessionsScreen-BJEjuo2X.js +1 -0
- package/dist/client/assets/{SettingsDrawer-C587L1i1.js → SettingsDrawer-DL-SVLdd.js} +1 -1
- package/dist/client/assets/SettingsScreen-DJ-BhBwR.js +1 -0
- package/dist/client/assets/{ShikiPane-I_OTW5NO.js → ShikiPane-B7O4if20.js} +1 -1
- package/dist/client/assets/{SlidePanel-FCqT1zO3.js → SlidePanel-B3gc5HnM.js} +1 -1
- package/dist/client/assets/{SpriteAvatar-CQs-jC-v.js → SpriteAvatar-BpQDpOkq.js} +1 -1
- package/dist/client/assets/{StatusPill-CbABggnQ.js → StatusPill-B33sQinT.js} +1 -1
- package/dist/client/assets/{TailView-C_MXVSum.js → TailView-DL3YZkzE.js} +2 -2
- package/dist/client/assets/Terminal-Dp1FSGIS.js +1 -0
- package/dist/client/assets/TerminalEmbedScreen-DP9IM4xf.js +1 -0
- package/dist/client/assets/{TextDocumentSurface-C-9EtYqt.js → TextDocumentSurface-DRjctOIt.js} +1 -1
- package/dist/client/assets/{TmuxPeek-Dz1gJ2pU.js → TmuxPeek-DNC4uWky.js} +1 -1
- package/dist/client/assets/{VoicePermissionsPanel-MfICy9kk.js → VoicePermissionsPanel-WLN0V-Xv.js} +1 -1
- package/dist/client/assets/{WorkDetailScreen-Cs7kdllj.js → WorkDetailScreen-D2Yl0mYZ.js} +1 -1
- package/dist/client/assets/{WorkFilesViewer-CF-nhtZ4.js → WorkFilesViewer-BbVfcUN-.js} +1 -1
- package/dist/client/assets/{activity-WhBf3FXP.js → activity-BxwKkT8z.js} +1 -1
- package/dist/client/assets/{addon-fit-q-x_HytU.js → addon-fit-B9O2vJoh.js} +1 -1
- package/dist/client/assets/{addon-webgl-fhhvEA9h.js → addon-webgl-BhRZFDcn.js} +1 -1
- package/dist/client/assets/{agent-essentials-DyJiUGpZ.js → agent-essentials-SrzMYEXV.js} +1 -1
- package/dist/client/assets/agent-identity-BxCsXnDp.js +1 -0
- package/dist/client/assets/{agent-lane-card-model-BCIwPjEh.js → agent-lane-card-model-DSWdGu-v.js} +1 -1
- package/dist/client/assets/agent-lane-detail-BNNm6FNu.js +2 -0
- package/dist/client/assets/{agent-lane-preview-BtnfNyFR.js → agent-lane-preview-C33Dwpn7.js} +1 -1
- package/dist/client/assets/{agent-lanes-model-Bl6xfviL.js → agent-lanes-model-CPgQRenB.js} +2 -2
- package/dist/client/assets/{arc.es-DPJ0xRV6.js → arc.es-NlJw-19N.js} +1 -1
- package/dist/client/assets/{arrow-down-DsD-dYj-.js → arrow-down-D3-IbArq.js} +1 -1
- package/dist/client/assets/{arrow-left-WjQIN9J6.js → arrow-left-_vS7itsV.js} +1 -1
- package/dist/client/assets/{arrow-up-right-CtTDrZJr.js → arrow-up-right-CcrWONpD.js} +1 -1
- package/dist/client/assets/{bot-B_Uzf4_O.js → bot-BRINYlC6.js} +1 -1
- package/dist/client/assets/{check-BbgHJX8u.js → check-COxArFXG.js} +1 -1
- package/dist/client/assets/{chevron-down-BFai6ZfE.js → chevron-down-DRCbnzyY.js} +1 -1
- package/dist/client/assets/{chevron-right-CyUa1zXx.js → chevron-right-CNE6QAVr.js} +1 -1
- package/dist/client/assets/{chunk-HRAB3GC3-CvwpNg-G.js → chunk-HRAB3GC3-CAeEKaf5.js} +1 -1
- package/dist/client/assets/chunk-JTPDIGGW-s6WbxdjC.js +46 -0
- package/dist/client/assets/{chunk-T65CQEWV-DI4NKdNq.js → chunk-T65CQEWV-CiZ_ICHW.js} +1 -1
- package/dist/client/assets/chunk-YOZR3KYS-DLOc92uD.js +2 -0
- package/dist/client/assets/{clock-DviOalxA.js → clock-CyfvRmj6.js} +1 -1
- package/dist/client/assets/{code-xml-05TD3uOC.js → code-xml--LjSM4Mv.js} +1 -1
- package/dist/client/assets/content-7ZeCPAEt.js +1 -0
- package/dist/client/assets/content-BHUcUCH5.js +1 -0
- package/dist/client/assets/content-BUhvLPkv.js +1 -0
- package/dist/client/assets/content-BomQ5YWo.js +1 -0
- package/dist/client/assets/content-C39ELNgC.js +1 -0
- package/dist/client/assets/content-C4RYKHut.js +1 -0
- package/dist/client/assets/content-CCiZfG4H.js +1 -0
- package/dist/client/assets/content-CDpDtVI-.js +1 -0
- package/dist/client/assets/content-CO-9CeFd.js +1 -0
- package/dist/client/assets/content-CuOLxp1x.js +1 -0
- package/dist/client/assets/content-CvtLIjXS.js +1 -0
- package/dist/client/assets/content-CzwTUb9n.js +1 -0
- package/dist/client/assets/content-DQXbo2RO.js +1 -0
- package/dist/client/assets/content-DRTQ9QQb.js +1 -0
- package/dist/client/assets/content-LCELs6zg.js +1 -0
- package/dist/client/assets/content-Uqt8AG-s.css +1 -0
- package/dist/client/assets/content-qsDjA4Au.js +1 -0
- package/dist/client/assets/{conversation-icons-DohQL6GI.js → conversation-icons-c-hXv7hY.js} +1 -1
- package/dist/client/assets/conversation-model-CHwHZNw-.js +1 -0
- package/dist/client/assets/conversation-motion-features-T8vF9zED.js +1 -0
- package/dist/client/assets/{copy-CwCAivnc.js → copy-4LfKIdQJ.js} +1 -1
- package/dist/client/assets/{createLucideIcon-DlxlBfLC.js → createLucideIcon-ClCdc3F9.js} +1 -1
- package/dist/client/assets/discover-7Ks00w-M.js +2 -0
- package/dist/client/assets/embed-entry-n2ThmSSX.js +2 -0
- package/dist/client/assets/{external-link-CnjcXf32.js → external-link-CnaI1QFS.js} +1 -1
- package/dist/client/assets/{eye-So8tNNK6.js → eye-BFlhMzQL.js} +1 -1
- package/dist/client/assets/{file-text-i3xTDUjJ.js → file-text-DG-pufl1.js} +1 -1
- package/dist/client/assets/{gestures-CgvAMd6F.js → gestures-CxG3Dphs.js} +1 -1
- package/dist/client/assets/home-live-action-BkqGLVRY.js +1 -0
- package/dist/client/assets/home-moving-signal-aNJusIzL.js +1 -0
- package/dist/client/assets/home-now-card-BQK4EFHx.js +1 -0
- package/dist/client/assets/{home-now-card-nano-CkLHUQ4J.js → home-now-card-nano-CdtzqSIF.js} +1 -1
- package/dist/client/assets/hooks-Dst1TH7n.js +2 -0
- package/dist/client/assets/index-9as_JTUs.css +1 -0
- package/dist/client/assets/index-CU9dtwJk.js +1 -0
- package/dist/client/assets/{index-sUomXsrf.js → index-CzVeWScw.js} +2 -2
- package/dist/client/assets/index-Dewd56RX.js +1 -0
- package/dist/client/assets/index-_YQXKEhb.js +1 -0
- package/dist/client/assets/{inspector-panel-DhXd-YbT.js → inspector-panel-DgOM8nCo.js} +1 -1
- package/dist/client/assets/keyboard-nav-BJnFoFDP.js +1 -0
- package/dist/client/assets/{lane-observe-DrhKkQ3A.js → lane-observe-BA3g9aVd.js} +1 -1
- package/dist/client/assets/{lane-roster-store-NE15Oe6M.js → lane-roster-store-pR4ZaYQm.js} +1 -1
- package/dist/client/assets/left-BhzPp-_E.js +1 -0
- package/dist/client/assets/left-CN1MABD0.js +2 -0
- package/dist/client/assets/left-DDgbsio7.js +1 -0
- package/dist/client/assets/left-Dpf2R9uD.js +1 -0
- package/dist/client/assets/left-HwwbMVtl.js +2 -0
- package/dist/client/assets/left-YfH0daht.js +1 -0
- package/dist/client/assets/left-agents-CYUwAy2Z.js +1 -0
- package/dist/client/assets/left-default-vEGZALPv.js +1 -0
- package/dist/client/assets/left-lanes-bphF-vlX.js +1 -0
- package/dist/client/assets/left-mission-B54-c3hq.js +1 -0
- package/dist/client/assets/left-np5USKqG.js +1 -0
- package/dist/client/assets/left-plan-BNBuDoPQ.js +2 -0
- package/dist/client/assets/library-DbCVJG_O.js +1 -0
- package/dist/client/assets/{loader-circle-lWOOKezu.js → loader-circle-Byb9kSFx.js} +1 -1
- package/dist/client/assets/{local-agents-C7fDHLVC.js → local-agents-DBaUbP-_.js} +1 -1
- package/dist/client/assets/{mentions-CY_wPZc5.js → mentions-fbQJ2mBI.js} +1 -1
- package/dist/client/assets/{mesh-ops-Kn8pCtyJ.js → mesh-ops-Cnw3vwAu.js} +1 -1
- package/dist/client/assets/{mesh-view-store-D14ihwkF.js → mesh-view-store-Btlyc7rW.js} +1 -1
- package/dist/client/assets/{message-circle-C5UZ6fO7.js → message-circle-aGOfQWm2.js} +1 -1
- package/dist/client/assets/{message-markup-C8Nx04sP.js → message-markup-mGF07emJ.js} +1 -1
- package/dist/client/assets/{message-square-BD-4UUdc.js → message-square-CIXda-Y7.js} +1 -1
- package/dist/client/assets/mission-control-m3BTDQ9l.css +1 -0
- package/dist/client/assets/{mission-control-store-xQHVQdm8.js → mission-control-store-CcoNeQHG.js} +1 -1
- package/dist/client/assets/mission-wall-CocIM1cF.js +1 -0
- package/dist/client/assets/{observe-uJfIlIUV.js → observe-BNFzh-7B.js} +1 -1
- package/dist/client/assets/openAgent-Dbv5wfuL.js +1 -0
- package/dist/client/assets/{page-status-BymFEFai.js → page-status-DDvNdA8s.js} +1 -1
- package/dist/client/assets/{paperclip-DL9BXPp2.js → paperclip-DfpJkR4s.js} +1 -1
- package/dist/client/assets/{plus-C9lTjsgd.js → plus-CmFQp9Uj.js} +1 -1
- package/dist/client/assets/profile-s3KRbip1.js +1 -0
- package/dist/client/assets/{projects-inbox-DfVmGFFk.js → projects-inbox-Diddml6e.js} +1 -1
- package/dist/client/assets/{radio-DedMyP8J.js → radio-PauJIekM.js} +1 -1
- package/dist/client/assets/{refresh-cw-D8PFyhUa.js → refresh-cw-4oeFn1Jn.js} +1 -1
- package/dist/client/assets/resolve-panes-cp6eNewO.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-Dbo-5PWx.js +1 -0
- package/dist/client/assets/right-09W2JJFg.js +1 -0
- package/dist/client/assets/right-B-MKhiJ6.js +1 -0
- package/dist/client/assets/right-B91Zl8lQ.js +1 -0
- package/dist/client/assets/{right-C1sIsSHR.js → right-BcFnuse9.js} +1 -1
- package/dist/client/assets/right-BdtMzn35.js +1 -0
- package/dist/client/assets/right-BqmKXLtf.js +1 -0
- package/dist/client/assets/right-BzeB-Dpt.js +1 -0
- package/dist/client/assets/right-CkGOs-sq.js +1 -0
- package/dist/client/assets/right-CzGiNBzB.js +1 -0
- package/dist/client/assets/right-Dc7uqv7l.js +1 -0
- package/dist/client/assets/{rocket-CriBwkHM.js → rocket-C-AskjZH.js} +1 -1
- package/dist/client/assets/router-B-K15T7B.js +1 -0
- package/dist/client/assets/{runtime-picker-DOZpZOlt.js → runtime-picker-BCQD7d4K.js} +1 -1
- package/dist/client/assets/{scope-views-BF_RvGKU.js → scope-views-BhkbIFPY.js} +1 -1
- package/dist/client/assets/{scout-voice-BZ4KqADJ.js → scout-voice-S5_YZ2v8.js} +1 -1
- package/dist/client/assets/{scroll-text-BIYf6g6N.js → scroll-text-BV-BB7v-.js} +1 -1
- package/dist/client/assets/{search-DCT_EvPr.js → search-C3bSJluv.js} +1 -1
- package/dist/client/assets/{secondaryNavConfig-Drb7wPG4.js → secondaryNavConfig-Bg4Tc0gT.js} +1 -1
- package/dist/client/assets/{selection-bridge-CJOTyYQs.js → selection-bridge-B1dmkX3P.js} +1 -1
- package/dist/client/assets/{send-horizontal-DDwOgEs3.js → send-horizontal-CqogPmbY.js} +1 -1
- package/dist/client/assets/{server-CHZCp3cF.js → server-Brw5Y1Gh.js} +1 -1
- package/dist/client/assets/{session-catalog-XhGxCtP-.js → session-catalog-9FqXmjBw.js} +1 -1
- package/dist/client/assets/session-table-1xdSxSXq.js +1 -0
- package/dist/client/assets/{sliders-horizontal-B9Nj-Y4J.js → sliders-horizontal-CUiOH26y.js} +1 -1
- package/dist/client/assets/{sparkles-up7pVlX-.js → sparkles-BjCA3Evu.js} +1 -1
- package/dist/client/assets/{sse-CVoGDiKW.js → sse-QcU9bikk.js} +1 -1
- package/dist/client/assets/synthetic-agent-routing-aduMYO7P.js +1 -0
- package/dist/client/assets/system-surfaces-redesign-B7GQhfpw.css +1 -0
- package/dist/client/assets/{tail-display-BdyoLvzY.js → tail-display-BRcJltQa.js} +2 -2
- package/dist/client/assets/{tail-events-CTipUIli.js → tail-events-C6K7bCWB.js} +1 -1
- package/dist/client/assets/{terminal-DXQISjZn.js → terminal-DrTkVXIj.js} +1 -1
- package/dist/client/assets/{terminal-relay-B5Sma7fK.js → terminal-relay-BkXjjSkq.js} +1 -1
- package/dist/client/assets/{terminal-screen-19jAI0Cw.css → terminal-screen-BqVnCwl0.css} +1 -1
- package/dist/client/assets/terminal-sessions-C3qU8tnY.js +1 -0
- package/dist/client/assets/{terminal-takeover-X97KCSJk.js → terminal-takeover-KvmTwABa.js} +1 -1
- package/dist/client/assets/{use-conversation-list-B1T6J_qE.js → use-conversation-list-C5sF6WBR.js} +1 -1
- package/dist/client/assets/{use-fleet-active-asks-DLofGhhK.js → use-fleet-active-asks-BOMPW0nl.js} +1 -1
- package/dist/client/assets/{use-mesh-ops-items-ByGZk8rU.js → use-mesh-ops-items-Co05vcTV.js} +1 -1
- package/dist/client/assets/{use-reduced-motion-Cvk-HRKg.js → use-reduced-motion-Dla-G_Jz.js} +1 -1
- package/dist/client/assets/{use-scout-dev-flags-BHvg3G2c.js → use-scout-dev-flags-BOQF3fW2.js} +1 -1
- package/dist/client/assets/{useAgentHoverCard-D5e8Qg1z.js → useAgentHoverCard-FtCmY-b9.js} +1 -1
- package/dist/client/assets/useContentSecondaryNav-BX7Sq7vy.js +1 -0
- package/dist/client/assets/{usePierreRuntime-DIVunfX0.js → usePierreRuntime-Bo4lD7Ui.js} +1 -1
- package/dist/client/assets/{wrench-pEVd8JnN.js → wrench-CeCdjiPF.js} +1 -1
- package/dist/client/assets/{x-0XjXwGqq.js → x-D4X_y1j_.js} +1 -1
- package/dist/client/assets/{xterm-CRLlV1Xp.js → xterm-D2a5wrkJ.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/main.mjs +1404 -356
- package/dist/node/main.mjs +63 -15
- package/dist/openscout-terminal-relay.mjs +16 -4
- package/dist/pairing-runtime-controller.mjs +3028 -2946
- package/dist/runtime/broker-daemon.mjs +356 -134
- package/dist/scout-control-plane-web.mjs +5631 -5183
- package/dist/scout-web-server.mjs +5631 -5183
- package/package.json +1 -1
- package/dist/client/assets/ActivityScreen-DnqqRSlS.js +0 -1
- package/dist/client/assets/AgentConfigurationScreen-CJqoMA0J.js +0 -1
- package/dist/client/assets/AgentDefinitionsWorkspace-FpEkb-tu.js +0 -1
- package/dist/client/assets/AgentFloorView-CycUn0Lv.js +0 -1
- package/dist/client/assets/AgentInfoScreen-CAQAxpAK.js +0 -1
- package/dist/client/assets/AgentLaneDetailSheet-CWs9wKWk.js +0 -5
- package/dist/client/assets/AgentLanesEmbedScreen-BUCW4nUj.js +0 -1
- package/dist/client/assets/AgentsScreen-BMXvuiA2.js +0 -1
- package/dist/client/assets/AgentsSubnav-BTNjPYoA.js +0 -1
- package/dist/client/assets/BrokerScreen-CObCQvoy.js +0 -5
- package/dist/client/assets/CodeScreen-BXqi72NK.js +0 -1
- package/dist/client/assets/ConversationComposer-BBNPa5S9.js +0 -1
- package/dist/client/assets/ConversationFeedRows-BuejHMCY.js +0 -1
- package/dist/client/assets/ConversationHeader-DXMT-YXv.js +0 -1
- package/dist/client/assets/ConversationPanels-DHCtilQF.js +0 -2
- package/dist/client/assets/ConversationScreen-DSxIt9pq.css +0 -1
- package/dist/client/assets/ConversationScreen-Dz2d_Z_F.js +0 -1
- package/dist/client/assets/FlightObserveScreen-C-9S0nA5.js +0 -1
- package/dist/client/assets/FollowScreen--Q04xSSE.js +0 -1
- package/dist/client/assets/HarnessMark-Dm_qm1Ku.js +0 -1
- package/dist/client/assets/HarnessesScreen-Y54viPX8.js +0 -1
- package/dist/client/assets/KnowledgeSearchScreen-DsdDz8wY.js +0 -1
- package/dist/client/assets/LaneTraceDetailSheet-CBf_aNZx.js +0 -1
- package/dist/client/assets/MeshScreen-TgDtz-1l.js +0 -1
- package/dist/client/assets/MessagesScreen-BTQL0UcE.js +0 -1
- package/dist/client/assets/MissionControlView-D59SPnAm.js +0 -1
- package/dist/client/assets/MissionLogPane-Ye3YlF9s.js +0 -1
- package/dist/client/assets/NewChatComposer-B5FnPyzS.js +0 -19
- package/dist/client/assets/NewChatComposer-W-t-L4oV.css +0 -1
- package/dist/client/assets/OpenScoutAppShell-BIp0WitK.js +0 -87
- package/dist/client/assets/OpsAgentsView-CoBfAigH.js +0 -1
- package/dist/client/assets/OpsScreen-Bbo0W64T.js +0 -1
- package/dist/client/assets/OpsSubnav-CoN8utF8.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-FiiIcB5R.js +0 -1
- package/dist/client/assets/ProjectsInbox-BWiXjGi7.js +0 -2
- package/dist/client/assets/ProjectsScreen-Cxk4CuYn.js +0 -1
- package/dist/client/assets/ProjectsThreadAside-BF66ugT5.js +0 -1
- package/dist/client/assets/Provider-tFc3jqZ4.js +0 -1
- package/dist/client/assets/RawSessionsTable-BsGVgZB3.js +0 -1
- package/dist/client/assets/RealtimeVoiceScreen-B0Bem5Rc.js +0 -1
- package/dist/client/assets/RepoDiffViewerLazy-C8UPk4oo.js +0 -2
- package/dist/client/assets/SessionRefScreen-D7TfPYPN.js +0 -1
- package/dist/client/assets/SessionsScreen-BlknOWAd.js +0 -1
- package/dist/client/assets/SettingsScreen-BIlYxv_a.js +0 -1
- package/dist/client/assets/Terminal-DwZyo8kA.js +0 -1
- package/dist/client/assets/TerminalEmbedScreen-Czp3tQyd.js +0 -1
- package/dist/client/assets/agent-chat-Bfjd9y6c.js +0 -1
- package/dist/client/assets/agent-identity-xQHedtLl.js +0 -1
- package/dist/client/assets/agent-lane-detail-Cw4QVAgH.js +0 -1
- package/dist/client/assets/chunk-YOZR3KYS-BW85tiCr.js +0 -47
- package/dist/client/assets/content-2u_eV3fX.js +0 -1
- package/dist/client/assets/content-5irOghrY.js +0 -1
- package/dist/client/assets/content-8Z_0CwtD.js +0 -1
- package/dist/client/assets/content-B38YRDBu.js +0 -1
- package/dist/client/assets/content-BE3uK0LB.js +0 -1
- package/dist/client/assets/content-BtIxSqVY.js +0 -1
- package/dist/client/assets/content-CFsPAihU.js +0 -1
- package/dist/client/assets/content-CHU0wwA3.css +0 -1
- package/dist/client/assets/content-CKj5g5tu.js +0 -1
- package/dist/client/assets/content-CLDWXf9Z.js +0 -1
- package/dist/client/assets/content-CRr73E0r.js +0 -1
- package/dist/client/assets/content-CVR75_Uj.js +0 -1
- package/dist/client/assets/content-Czdp7_JQ.js +0 -1
- package/dist/client/assets/content-D0_EJ6nP.js +0 -1
- package/dist/client/assets/content-DNmxpNhD.js +0 -1
- package/dist/client/assets/content-XpbI9uxd.js +0 -1
- package/dist/client/assets/content-cyxWdgKQ.js +0 -1
- package/dist/client/assets/conversation-model-C4yb6_FA.js +0 -1
- package/dist/client/assets/conversation-motion-features-CifSdJtm.js +0 -1
- package/dist/client/assets/discover-DoiAJo4Z.js +0 -2
- package/dist/client/assets/embed-entry-D1Or9S4d.js +0 -2
- package/dist/client/assets/home-live-action-B22u89j7.js +0 -1
- package/dist/client/assets/home-moving-signal-BdkERL6B.js +0 -1
- package/dist/client/assets/home-now-card-lLkv6nQs.js +0 -1
- package/dist/client/assets/hooks-BPLDD9yu.js +0 -2
- package/dist/client/assets/index-DGoLx89y.js +0 -1
- package/dist/client/assets/index-DITWsjFb.css +0 -1
- package/dist/client/assets/index-m6dFtY5f.js +0 -1
- package/dist/client/assets/index-pY8-Mz7y.js +0 -1
- package/dist/client/assets/keyboard-nav-BhZZ5HEq.js +0 -1
- package/dist/client/assets/left-B6eawimv.js +0 -1
- package/dist/client/assets/left-BL2uBHe0.js +0 -2
- package/dist/client/assets/left-BNJguPDG.js +0 -1
- package/dist/client/assets/left-BvCtvN0f.js +0 -1
- package/dist/client/assets/left-CfBb6bxM.js +0 -1
- package/dist/client/assets/left-DTrlBF0h.js +0 -2
- package/dist/client/assets/left-agents-DsOHgDCY.js +0 -1
- package/dist/client/assets/left-d4hlBBxY.js +0 -1
- package/dist/client/assets/left-default-BRCwoCJr.js +0 -1
- package/dist/client/assets/left-lanes-DNtoRzoV.js +0 -1
- package/dist/client/assets/left-mission-DsTu2X5Y.js +0 -1
- package/dist/client/assets/left-plan-CtySjsXC.js +0 -2
- package/dist/client/assets/library-CLpgWNJO.js +0 -1
- package/dist/client/assets/mission-control-D3ikEPND.css +0 -1
- package/dist/client/assets/openAgent-Bjt57GdM.js +0 -1
- package/dist/client/assets/profile-BqY5tesX.js +0 -1
- package/dist/client/assets/resolve-panes-1xeZMuaw.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-PLr32WHN.js +0 -1
- package/dist/client/assets/right-1x7HzabC.js +0 -1
- package/dist/client/assets/right-CFzPUzlF.js +0 -1
- package/dist/client/assets/right-CRKyeJDk.js +0 -1
- package/dist/client/assets/right-CagzkLWg.js +0 -1
- package/dist/client/assets/right-CsV149pN.js +0 -1
- package/dist/client/assets/right-DITNyG2s.js +0 -1
- package/dist/client/assets/right-E3nNcLE3.js +0 -1
- package/dist/client/assets/right-eUQvSjd7.js +0 -1
- package/dist/client/assets/right-ozp4nM44.js +0 -1
- package/dist/client/assets/router-Dja9_ygK.js +0 -1
- package/dist/client/assets/session-table-sAVe44a4.js +0 -1
- package/dist/client/assets/system-surfaces-redesign-CD26LFc0.css +0 -1
- package/dist/client/assets/terminal-sessions-D5CIR2OL.js +0 -1
- package/dist/client/assets/useContentSecondaryNav-ZfBNi3d4.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as x}from"./index-sUomXsrf.js";import{b as k,p as D,V as A,D as q}from"./fx-z37u1o2z.js";function le(t){return t?t.hint?`${t.message} ${t.hint}`:t.message:"Scout voice is unavailable."}async function pe(t={}){const e=await fetch("/api/voice/engage",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(e.status===404)return j(t);if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}return await e.json()}async function j(t={}){const e=await ce(),n=e.settings,i=e.devices,r=i.length>0||(n.permissions?.length??0)>0,o=n.permissions?.find(f=>f.kind==="microphone")??null,a=n.permissions?.find(f=>f.kind==="speechRecognition")??null,u=U(n,i);if(t.requestPermissions&&(o&&!o.granted&&o.status!=="restricted"?await C("microphone").catch(()=>{}):(o?.granted??!1)&&a&&!a.granted&&a.status!=="restricted"&&await C("speechRecognition").catch(()=>{})),!r)return{ready:!1,issue:{code:"host_offline",title:"Scout Menu is not running",message:"Launch Scout Menu on this Mac to dictate in web chat.",hint:"Restart the web server if you just updated Scout — `scout server restart` or restart `bun run server/index.ts`.",action:"launch_host"},warnings:[],settings:n,devices:i,inputDevice:null,hostOnline:!1};const h=$(o);if(h)return{ready:!1,issue:h,warnings:[],settings:n,devices:i,inputDevice:u,hostOnline:r};if(!u)return{ready:!1,issue:{code:"no_input_device",title:"No microphone detected",message:"Scout Menu did not report any audio input devices.",hint:"Plug in a microphone, check Sound settings, then refresh Settings → Voice.",action:"open_voice_settings"},warnings:[],settings:n,devices:i,inputDevice:null,hostOnline:r};const d=F(a);return{ready:!0,issue:null,warnings:d?[d]:[],settings:n,devices:i,inputDevice:u,hostOnline:r}}function U(t,e){if(e.length===0)return null;const n=t.inputDeviceId?e.find(o=>o.id===t.inputDeviceId):null,i=e.find(o=>o.isDefault)??e[0]??null,r=n??i;return r?{id:r.id,name:r.name}:null}function $(t){return!t||t.granted?null:t.canRequest?{code:"microphone_not_requested",title:"Microphone access needed",message:"Scout Menu needs microphone access before dictation can start.",hint:"Request access or tap the mic again to show the macOS prompt.",action:"request_microphone"}:{code:"microphone_denied",title:"Microphone blocked",message:"Scout Menu cannot record because microphone access is off.",hint:"Scout is opening macOS Microphone settings and will detect the change automatically.",action:"open_microphone_settings"}}function F(t){return!t||t.granted?null:t.canRequest?{code:"speech_not_requested",title:"Speech recognition needed",message:"Scout Menu needs speech recognition for live partials.",hint:"Request access to show the macOS prompt.",action:"request_speech"}:{code:"speech_denied",title:"Speech recognition blocked",message:"Speech recognition is off for Scout Menu.",hint:"Choose Retry access to reopen macOS Speech Recognition settings.",action:"open_speech_settings"}}function N(t,e){switch(e){case"microphone_permission":return"Microphone access is off for Scout Menu. Tap the mic to retry; Scout will open macOS Microphone settings.";case"empty_transcript":return"No speech was detected. Check your microphone input in Settings → Voice.";default:return t}}const H=6e4,G=3e3,J=2e4,z=8e3,B=45e3;let M=null,E=null,l=null,_=!1;const R=new Set;function W(){return typeof window>"u"?!1:typeof fetch=="function"}function X(){return M||(M=new K),M}function he(t){return R.add(t),l&&t(l),()=>{R.delete(t)}}function fe(){if(_||!W())return;_=!0;const t=X();t.probe();const e=()=>{t.probeIfStale()};window.addEventListener("focus",e),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&e()})}function I(t){for(const e of R)e(t)}function O(t,e=Date.now()){const n=t.ok?J:z;return e-t.probedAt<n}class K{state="unknown";unavailableReason=null;captureMode=null;hostReachable=!1;microphoneGranted=null;microphoneCanRequest=null;get connectionState(){return this.state}get lastUnavailableReason(){return this.unavailableReason}get preferredCaptureMode(){return this.captureMode}get isVoiceHostReachable(){return this.hostReachable}get isMicrophoneGranted(){return this.microphoneGranted}get canRequestMicrophone(){return this.hostReachable&&this.microphoneGranted===!1&&this.microphoneCanRequest===!0}get isMicrophoneHardDenied(){return this.hostReachable&&this.microphoneGranted===!1&&this.microphoneCanRequest===!1}get isMicrophoneDenied(){return this.isMicrophoneHardDenied}async probeIfStale(){const e=Date.now();return l&&O(l,e)?(this.applyProbeSnapshot(l),l.ok):l&&l.ok&&e-l.probedAt<B?(this.applyProbeSnapshot(l),!0):l&&!l.ok?this.probe({force:!0}):this.probe()}async probe(e={}){const n=typeof e=="number"?{timeoutMs:e}:e,i=n.force??!1,r=n.timeoutMs??G,o=Date.now();return!i&&l&&O(l,o)?(this.applyProbeSnapshot(l),l.ok):E||(this.state="probing",E=this.fetchProbe(r).finally(()=>{E=null}),E)}async fetchProbe(e){const n=new AbortController,i=window.setTimeout(()=>n.abort(),e);try{const r=await fetch("/api/voice/health?quiet=1",{signal:n.signal}),o=await r.json().catch(()=>({})),a=!!o.host?.hostId,u=typeof o.microphoneGranted=="boolean"?o.microphoneGranted:null,h=typeof o.microphoneCanRequest=="boolean"?o.microphoneCanRequest:null,d=o.capture==="browser"?"browser":"native",f=r.ok&&o.ok===!0,v=f?null:o.detail??o.error??(a?"Scout voice is not ready.":"Scout voice service is unavailable."),w={ok:f,reason:v,captureMode:f?d:null,hostReachable:a,microphoneGranted:u,microphoneCanRequest:h,probedAt:Date.now()};return l=w,this.applyProbeSnapshot(w),I(w),f}catch(r){const a={ok:!1,reason:r instanceof Error&&r.name==="AbortError"?"Scout voice service did not respond.":"Scout voice service is unavailable.",captureMode:null,hostReachable:!1,microphoneGranted:null,microphoneCanRequest:null,probedAt:Date.now()};return l=a,this.applyProbeSnapshot(a),I(a),!1}finally{window.clearTimeout(i)}}applyProbeSnapshot(e){if(this.hostReachable=e.hostReachable,this.microphoneGranted=e.microphoneGranted,this.microphoneCanRequest=e.microphoneCanRequest,e.ok){this.unavailableReason=null,this.captureMode=e.captureMode,this.state="connected";return}this.unavailableReason=e.reason,this.captureMode=null,this.state="unavailable"}async launch(e={}){try{const i=await(await fetch("/api/scout-services/restart-link",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({target:"all"})})).json().catch(()=>({}));if(i.url?.startsWith("scout://services/restart/")){window.location.href=i.url;return}}catch{}window.location.href="scout://hud/show"}async startLive(e={},n={}){return this.captureMode!=="browser"?await Q(e,n):await Y(e)}}async function Q(t={},e={}){t.onState?.("starting");const n=await fetch("/api/voice/session",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({clientId:"openscout-web",surface:e.surface?.trim()||"chat-composer"})});if(!n.ok){const s=await n.text().catch(()=>"");throw new Error(g(s,n.status))}const r=(await n.json()).sessionId?.trim();if(!r)throw new Error("Scout voice did not return a session id.");let o=!1,a,u;const h=new Promise((s,p)=>{a=s,u=p});let d=null;const f=()=>{d&&window.clearTimeout(d),d=window.setTimeout(()=>{w(new Error("Scout voice transcription timed out. Try again or check voice settings."))},H)},v=()=>{d&&(window.clearTimeout(d),d=null)},w=(s,p="error")=>{o||(o=!0,v(),m.close(),t.onState?.(p),u(s))},y=s=>{o||(o=!0,v(),m.close(),t.onFinal?.(s),t.onState?.("done"),a(s))},m=new EventSource(`/api/voice/session/${encodeURIComponent(r)}/events`),c=s=>p=>{if(o)return;let S={};try{S=JSON.parse(p.data)}catch{return}if(s==="session.partial"){const b=typeof S.text=="string"?S.text:"";t.onPartial?.(b);return}if(s==="session.state"){const b=Z(S.state);b&&(t.onState?.(b),b==="processing"&&f());return}if(s==="session.final"){y({sessionId:r,text:typeof S.text=="string"?S.text.trim():"",durationMs:Number(S.durationMs??0)});return}if(s==="session.cancelled"){w(T(),"cancelled");return}if(s==="session.error"){const b=typeof S.message=="string"?S.message:"Scout voice session failed.",L=typeof S.code=="string"?S.code:null;w(new Error(N(b,L)))}};return m.addEventListener("session.started",()=>{t.onState?.("starting")}),m.addEventListener("session.state",c("session.state")),m.addEventListener("session.partial",c("session.partial")),m.addEventListener("session.final",c("session.final")),m.addEventListener("session.cancelled",c("session.cancelled")),m.addEventListener("session.error",c("session.error")),m.onerror=()=>{o||w(new Error("Scout voice event stream disconnected."))},{get sessionId(){return r},result:h,stop:async()=>{t.onState?.("processing"),f();const s=await fetch(`/api/voice/session/${encodeURIComponent(r)}/stop`,{method:"POST"});if(!s.ok){const p=await s.text().catch(()=>"");throw new Error(g(p,s.status))}},cancel:async()=>{o=!0,v(),m.close();const s=await fetch(`/api/voice/session/${encodeURIComponent(r)}/cancel`,{method:"POST"});if(!s.ok){const p=await s.text().catch(()=>"");throw new Error(g(p,s.status))}t.onState?.("cancelled"),u(T())}}}async function Y(t={}){if(typeof MediaRecorder>"u"||!navigator.mediaDevices?.getUserMedia)throw new Error("Scout voice capture is unavailable in this browser.");const{startStreamLevelMeter:e}=await x(async()=>{const{startStreamLevelMeter:c}=await import("./voice-levels-Dcr3jglk.js");return{startStreamLevelMeter:c}},[]),n=ae(),i=[];let r=null,o=null,a=null,u=!1,h=!1,d,f;const v=new Promise((c,s)=>{d=c,f=s}),w=()=>{a?.stop(),a=null;for(const c of r?.getTracks()??[])c.stop();r=null},y=(c,s="error")=>{h||(h=!0,w(),t.onState?.(s),f(c))},m=async()=>{if(h)return;if(w(),u){y(T(),"cancelled");return}t.onState?.("processing");const c=o?.mimeType||V()||"application/octet-stream",s=new Blob(i,{type:c});if(s.size===0){y(new Error("No voice audio was captured."));return}try{const p=await ne(s,{sessionId:n});if(h)return;h=!0,t.onFinal?.(p),t.onState?.("done"),d(p)}catch(p){y(p instanceof Error?p:new Error(String(p)))}};try{t.onState?.("starting"),r=await navigator.mediaDevices.getUserMedia({audio:!0}),t.onLevel&&(a=e(r,t.onLevel));const c=V();o=new MediaRecorder(r,c?{mimeType:c}:void 0),o.addEventListener("dataavailable",s=>{s.data.size>0&&i.push(s.data)}),o.addEventListener("error",()=>{y(new Error("Scout voice recorder failed."))}),o.addEventListener("stop",()=>{m()},{once:!0}),o.start(),t.onPartial?.(""),t.onState?.("recording")}catch(c){const s=c instanceof Error?c:new Error(String(c));throw y(s),v.catch(()=>{}),s}return{get sessionId(){return n},result:v,stop:async()=>{!o||o.state==="inactive"||o.stop()},cancel:async()=>{if(u=!0,o&&o.state!=="inactive"){o.stop();return}y(T(),"cancelled")}}}function Z(t){return t==="starting"||t==="recording"||t==="processing"||t==="done"||t==="cancelled"||t==="error"?t:null}function g(t,e){try{return JSON.parse(t).error??`Scout voice returned HTTP ${e}`}catch{return t||`Scout voice returned HTTP ${e}`}}function me(t){return t instanceof Error&&t.name==="AbortError"}async function ee(t,e={}){const n={text:t,speed:se(e.speed)};e.modelId&&(n.modelId=e.modelId),e.voiceId&&(n.voiceId=e.voiceId),e.originAppId&&(n.originAppId=e.originAppId),e.utteranceId&&(n.utteranceId=e.utteranceId),e.instructions&&(n.instructions=e.instructions),e.speechTiming?.enabled&&(n.speechTiming=e.speechTiming);const i=await fetch("/api/voice/speak",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n),signal:e.signal});if(!i.ok){const r=await i.text().catch(()=>"");try{const o=JSON.parse(r);throw new Error(o.error??`Scout voice returned HTTP ${i.status}`)}catch(o){throw o instanceof SyntaxError?new Error(r||`Scout voice returned HTTP ${i.status}`):o}}return await i.json()}async function we(t){const e=t?`?modelId=${encodeURIComponent(t)}`:"",n=await fetch(`/api/voice/catalog${e}`,{headers:{accept:"application/json"}});if(!n.ok)throw new Error(`Scout voice catalog returned HTTP ${n.status}`);return await n.json()}async function Se(t,e={}){if(e.signal?.aborted)throw P();const n=new Audio(`data:${t.contentType};base64,${t.audioBase64}`),i=()=>{n.pause(),n.currentTime=0};e.signal?.addEventListener("abort",i,{once:!0}),await n.play(),e.onPlaybackStart?.();try{return await new Promise((r,o)=>{const a=()=>{n.removeEventListener("ended",u),n.removeEventListener("error",h),e.signal?.removeEventListener("abort",d)},u=()=>{a(),r()},h=()=>{a(),o(new Error("Scout voice playback failed."))},d=()=>{a(),o(P())};if(e.signal?.aborted){d();return}n.addEventListener("ended",u,{once:!0}),n.addEventListener("error",h,{once:!0}),e.signal?.addEventListener("abort",d,{once:!0})}),t}finally{e.signal?.removeEventListener("abort",i)}}async function te(t,e={}){const n=await ee(t,e);if(e.signal?.aborted)throw P();const i=await k(n.audioBase64,n.contentType),r=ie(e.presetId,e.params);return await D(i,{params:r,signal:e.signal}).promise,n}function ge(t,e={}){const n=new AbortController;return{promise:te(t,{...e,signal:n.signal}),stop:()=>n.abort()}}async function ne(t,e){const n=new FormData,i=oe(t.type);n.append("audio",t,`audio.${re(t.type)}`),n.append("sessionId",e.sessionId),i&&n.append("format",i);const r=await fetch("/api/voice/transcribe",{method:"POST",body:n});if(!r.ok){const a=await r.text().catch(()=>"");try{const u=JSON.parse(a);throw new Error(u.error??`Scout voice returned HTTP ${r.status}`)}catch(u){throw u instanceof SyntaxError?new Error(a||`Scout voice returned HTTP ${r.status}`):u}}const o=await r.json();return{sessionId:e.sessionId,text:o.text?.trim()??"",durationMs:Number(o.durationMs??0)}}function P(){const t=new Error("Speech stopped.");return t.name="AbortError",t}function T(){const t=new Error("Voice recording was cancelled.");return t.name="AbortError",t}function V(){return typeof MediaRecorder>"u"||typeof MediaRecorder.isTypeSupported!="function"?void 0:["audio/webm;codecs=opus","audio/ogg;codecs=opus","audio/mp4","audio/webm","audio/wav"].find(e=>{try{return MediaRecorder.isTypeSupported(e)}catch{return!1}})}function oe(t){const e=t.toLowerCase();if(e.includes("mp3")||e.includes("mpeg"))return"mp3";if(e.includes("wav"))return"wav";if(e.includes("aac")||e.includes("mp4"))return"aac";if(e.includes("opus")||e.includes("ogg")||e.includes("webm"))return"opus"}function re(t){const e=t.toLowerCase();return e.includes("webm")?"webm":e.includes("ogg")||e.includes("opus")?"opus":e.includes("mp4")||e.includes("aac")?"m4a":e.includes("wav")?"wav":e.includes("mp3")||e.includes("mpeg")?"mp3":"audio"}function ie(t,e){const n=t?A.find(i=>i.id===t)?.params:void 0;return{...q,...n??{},...e??{}}}function se(t){if(!(t===void 0||!Number.isFinite(t)))return Math.min(2,Math.max(.5,Number(t.toFixed(2))))}function ae(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`scout-voice:${crypto.randomUUID()}`:`scout-voice:${Date.now().toString(36)}:${Math.random().toString(36).slice(2)}`}async function ce(){const t=await fetch("/api/voice/settings");if(!t.ok){const e=await t.text().catch(()=>"");throw new Error(g(e,t.status))}return await t.json()}async function ve(t="microphone"){const e=await fetch("/api/voice/permissions/open",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:t})});if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}}async function C(t="microphone"){const e=await fetch("/api/voice/permissions/request",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:t})});if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}}async function ye(t=12){const e=await fetch(`/api/voice/history?limit=${t}`);if(!e.ok){const i=await e.text().catch(()=>"");throw new Error(g(i,e.status))}return(await e.json()).sessions??[]}async function be(t){const e=await fetch("/api/voice/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}return await e.json()}export{pe as a,we as b,Se as c,ge as d,fe as e,le as f,X as g,ce as h,me as i,ye as j,be as k,ve as o,ee as p,C as r,he as s};
|
|
1
|
+
import{_ as x}from"./index-CzVeWScw.js";import{b as k,p as D,V as A,D as q}from"./fx-z37u1o2z.js";function le(t){return t?t.hint?`${t.message} ${t.hint}`:t.message:"Scout voice is unavailable."}async function pe(t={}){const e=await fetch("/api/voice/engage",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(e.status===404)return j(t);if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}return await e.json()}async function j(t={}){const e=await ce(),n=e.settings,i=e.devices,r=i.length>0||(n.permissions?.length??0)>0,o=n.permissions?.find(f=>f.kind==="microphone")??null,a=n.permissions?.find(f=>f.kind==="speechRecognition")??null,u=U(n,i);if(t.requestPermissions&&(o&&!o.granted&&o.status!=="restricted"?await C("microphone").catch(()=>{}):(o?.granted??!1)&&a&&!a.granted&&a.status!=="restricted"&&await C("speechRecognition").catch(()=>{})),!r)return{ready:!1,issue:{code:"host_offline",title:"Scout Menu is not running",message:"Launch Scout Menu on this Mac to dictate in web chat.",hint:"Restart the web server if you just updated Scout — `scout server restart` or restart `bun run server/index.ts`.",action:"launch_host"},warnings:[],settings:n,devices:i,inputDevice:null,hostOnline:!1};const h=$(o);if(h)return{ready:!1,issue:h,warnings:[],settings:n,devices:i,inputDevice:u,hostOnline:r};if(!u)return{ready:!1,issue:{code:"no_input_device",title:"No microphone detected",message:"Scout Menu did not report any audio input devices.",hint:"Plug in a microphone, check Sound settings, then refresh Settings → Voice.",action:"open_voice_settings"},warnings:[],settings:n,devices:i,inputDevice:null,hostOnline:r};const d=F(a);return{ready:!0,issue:null,warnings:d?[d]:[],settings:n,devices:i,inputDevice:u,hostOnline:r}}function U(t,e){if(e.length===0)return null;const n=t.inputDeviceId?e.find(o=>o.id===t.inputDeviceId):null,i=e.find(o=>o.isDefault)??e[0]??null,r=n??i;return r?{id:r.id,name:r.name}:null}function $(t){return!t||t.granted?null:t.canRequest?{code:"microphone_not_requested",title:"Microphone access needed",message:"Scout Menu needs microphone access before dictation can start.",hint:"Request access or tap the mic again to show the macOS prompt.",action:"request_microphone"}:{code:"microphone_denied",title:"Microphone blocked",message:"Scout Menu cannot record because microphone access is off.",hint:"Scout is opening macOS Microphone settings and will detect the change automatically.",action:"open_microphone_settings"}}function F(t){return!t||t.granted?null:t.canRequest?{code:"speech_not_requested",title:"Speech recognition needed",message:"Scout Menu needs speech recognition for live partials.",hint:"Request access to show the macOS prompt.",action:"request_speech"}:{code:"speech_denied",title:"Speech recognition blocked",message:"Speech recognition is off for Scout Menu.",hint:"Choose Retry access to reopen macOS Speech Recognition settings.",action:"open_speech_settings"}}function N(t,e){switch(e){case"microphone_permission":return"Microphone access is off for Scout Menu. Tap the mic to retry; Scout will open macOS Microphone settings.";case"empty_transcript":return"No speech was detected. Check your microphone input in Settings → Voice.";default:return t}}const H=6e4,G=3e3,J=2e4,z=8e3,B=45e3;let M=null,E=null,l=null,_=!1;const R=new Set;function W(){return typeof window>"u"?!1:typeof fetch=="function"}function X(){return M||(M=new K),M}function he(t){return R.add(t),l&&t(l),()=>{R.delete(t)}}function fe(){if(_||!W())return;_=!0;const t=X();t.probe();const e=()=>{t.probeIfStale()};window.addEventListener("focus",e),document.addEventListener("visibilitychange",()=>{document.visibilityState==="visible"&&e()})}function I(t){for(const e of R)e(t)}function O(t,e=Date.now()){const n=t.ok?J:z;return e-t.probedAt<n}class K{state="unknown";unavailableReason=null;captureMode=null;hostReachable=!1;microphoneGranted=null;microphoneCanRequest=null;get connectionState(){return this.state}get lastUnavailableReason(){return this.unavailableReason}get preferredCaptureMode(){return this.captureMode}get isVoiceHostReachable(){return this.hostReachable}get isMicrophoneGranted(){return this.microphoneGranted}get canRequestMicrophone(){return this.hostReachable&&this.microphoneGranted===!1&&this.microphoneCanRequest===!0}get isMicrophoneHardDenied(){return this.hostReachable&&this.microphoneGranted===!1&&this.microphoneCanRequest===!1}get isMicrophoneDenied(){return this.isMicrophoneHardDenied}async probeIfStale(){const e=Date.now();return l&&O(l,e)?(this.applyProbeSnapshot(l),l.ok):l&&l.ok&&e-l.probedAt<B?(this.applyProbeSnapshot(l),!0):l&&!l.ok?this.probe({force:!0}):this.probe()}async probe(e={}){const n=typeof e=="number"?{timeoutMs:e}:e,i=n.force??!1,r=n.timeoutMs??G,o=Date.now();return!i&&l&&O(l,o)?(this.applyProbeSnapshot(l),l.ok):E||(this.state="probing",E=this.fetchProbe(r).finally(()=>{E=null}),E)}async fetchProbe(e){const n=new AbortController,i=window.setTimeout(()=>n.abort(),e);try{const r=await fetch("/api/voice/health?quiet=1",{signal:n.signal}),o=await r.json().catch(()=>({})),a=!!o.host?.hostId,u=typeof o.microphoneGranted=="boolean"?o.microphoneGranted:null,h=typeof o.microphoneCanRequest=="boolean"?o.microphoneCanRequest:null,d=o.capture==="browser"?"browser":"native",f=r.ok&&o.ok===!0,v=f?null:o.detail??o.error??(a?"Scout voice is not ready.":"Scout voice service is unavailable."),w={ok:f,reason:v,captureMode:f?d:null,hostReachable:a,microphoneGranted:u,microphoneCanRequest:h,probedAt:Date.now()};return l=w,this.applyProbeSnapshot(w),I(w),f}catch(r){const a={ok:!1,reason:r instanceof Error&&r.name==="AbortError"?"Scout voice service did not respond.":"Scout voice service is unavailable.",captureMode:null,hostReachable:!1,microphoneGranted:null,microphoneCanRequest:null,probedAt:Date.now()};return l=a,this.applyProbeSnapshot(a),I(a),!1}finally{window.clearTimeout(i)}}applyProbeSnapshot(e){if(this.hostReachable=e.hostReachable,this.microphoneGranted=e.microphoneGranted,this.microphoneCanRequest=e.microphoneCanRequest,e.ok){this.unavailableReason=null,this.captureMode=e.captureMode,this.state="connected";return}this.unavailableReason=e.reason,this.captureMode=null,this.state="unavailable"}async launch(e={}){try{const i=await(await fetch("/api/scout-services/restart-link",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({target:"all"})})).json().catch(()=>({}));if(i.url?.startsWith("scout://services/restart/")){window.location.href=i.url;return}}catch{}window.location.href="scout://hud/show"}async startLive(e={},n={}){return this.captureMode!=="browser"?await Q(e,n):await Y(e)}}async function Q(t={},e={}){t.onState?.("starting");const n=await fetch("/api/voice/session",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({clientId:"openscout-web",surface:e.surface?.trim()||"chat-composer"})});if(!n.ok){const s=await n.text().catch(()=>"");throw new Error(g(s,n.status))}const r=(await n.json()).sessionId?.trim();if(!r)throw new Error("Scout voice did not return a session id.");let o=!1,a,u;const h=new Promise((s,p)=>{a=s,u=p});let d=null;const f=()=>{d&&window.clearTimeout(d),d=window.setTimeout(()=>{w(new Error("Scout voice transcription timed out. Try again or check voice settings."))},H)},v=()=>{d&&(window.clearTimeout(d),d=null)},w=(s,p="error")=>{o||(o=!0,v(),m.close(),t.onState?.(p),u(s))},y=s=>{o||(o=!0,v(),m.close(),t.onFinal?.(s),t.onState?.("done"),a(s))},m=new EventSource(`/api/voice/session/${encodeURIComponent(r)}/events`),c=s=>p=>{if(o)return;let S={};try{S=JSON.parse(p.data)}catch{return}if(s==="session.partial"){const b=typeof S.text=="string"?S.text:"";t.onPartial?.(b);return}if(s==="session.state"){const b=Z(S.state);b&&(t.onState?.(b),b==="processing"&&f());return}if(s==="session.final"){y({sessionId:r,text:typeof S.text=="string"?S.text.trim():"",durationMs:Number(S.durationMs??0)});return}if(s==="session.cancelled"){w(T(),"cancelled");return}if(s==="session.error"){const b=typeof S.message=="string"?S.message:"Scout voice session failed.",L=typeof S.code=="string"?S.code:null;w(new Error(N(b,L)))}};return m.addEventListener("session.started",()=>{t.onState?.("starting")}),m.addEventListener("session.state",c("session.state")),m.addEventListener("session.partial",c("session.partial")),m.addEventListener("session.final",c("session.final")),m.addEventListener("session.cancelled",c("session.cancelled")),m.addEventListener("session.error",c("session.error")),m.onerror=()=>{o||w(new Error("Scout voice event stream disconnected."))},{get sessionId(){return r},result:h,stop:async()=>{t.onState?.("processing"),f();const s=await fetch(`/api/voice/session/${encodeURIComponent(r)}/stop`,{method:"POST"});if(!s.ok){const p=await s.text().catch(()=>"");throw new Error(g(p,s.status))}},cancel:async()=>{o=!0,v(),m.close();const s=await fetch(`/api/voice/session/${encodeURIComponent(r)}/cancel`,{method:"POST"});if(!s.ok){const p=await s.text().catch(()=>"");throw new Error(g(p,s.status))}t.onState?.("cancelled"),u(T())}}}async function Y(t={}){if(typeof MediaRecorder>"u"||!navigator.mediaDevices?.getUserMedia)throw new Error("Scout voice capture is unavailable in this browser.");const{startStreamLevelMeter:e}=await x(async()=>{const{startStreamLevelMeter:c}=await import("./voice-levels-Dcr3jglk.js");return{startStreamLevelMeter:c}},[]),n=ae(),i=[];let r=null,o=null,a=null,u=!1,h=!1,d,f;const v=new Promise((c,s)=>{d=c,f=s}),w=()=>{a?.stop(),a=null;for(const c of r?.getTracks()??[])c.stop();r=null},y=(c,s="error")=>{h||(h=!0,w(),t.onState?.(s),f(c))},m=async()=>{if(h)return;if(w(),u){y(T(),"cancelled");return}t.onState?.("processing");const c=o?.mimeType||V()||"application/octet-stream",s=new Blob(i,{type:c});if(s.size===0){y(new Error("No voice audio was captured."));return}try{const p=await ne(s,{sessionId:n});if(h)return;h=!0,t.onFinal?.(p),t.onState?.("done"),d(p)}catch(p){y(p instanceof Error?p:new Error(String(p)))}};try{t.onState?.("starting"),r=await navigator.mediaDevices.getUserMedia({audio:!0}),t.onLevel&&(a=e(r,t.onLevel));const c=V();o=new MediaRecorder(r,c?{mimeType:c}:void 0),o.addEventListener("dataavailable",s=>{s.data.size>0&&i.push(s.data)}),o.addEventListener("error",()=>{y(new Error("Scout voice recorder failed."))}),o.addEventListener("stop",()=>{m()},{once:!0}),o.start(),t.onPartial?.(""),t.onState?.("recording")}catch(c){const s=c instanceof Error?c:new Error(String(c));throw y(s),v.catch(()=>{}),s}return{get sessionId(){return n},result:v,stop:async()=>{!o||o.state==="inactive"||o.stop()},cancel:async()=>{if(u=!0,o&&o.state!=="inactive"){o.stop();return}y(T(),"cancelled")}}}function Z(t){return t==="starting"||t==="recording"||t==="processing"||t==="done"||t==="cancelled"||t==="error"?t:null}function g(t,e){try{return JSON.parse(t).error??`Scout voice returned HTTP ${e}`}catch{return t||`Scout voice returned HTTP ${e}`}}function me(t){return t instanceof Error&&t.name==="AbortError"}async function ee(t,e={}){const n={text:t,speed:se(e.speed)};e.modelId&&(n.modelId=e.modelId),e.voiceId&&(n.voiceId=e.voiceId),e.originAppId&&(n.originAppId=e.originAppId),e.utteranceId&&(n.utteranceId=e.utteranceId),e.instructions&&(n.instructions=e.instructions),e.speechTiming?.enabled&&(n.speechTiming=e.speechTiming);const i=await fetch("/api/voice/speak",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n),signal:e.signal});if(!i.ok){const r=await i.text().catch(()=>"");try{const o=JSON.parse(r);throw new Error(o.error??`Scout voice returned HTTP ${i.status}`)}catch(o){throw o instanceof SyntaxError?new Error(r||`Scout voice returned HTTP ${i.status}`):o}}return await i.json()}async function we(t){const e=t?`?modelId=${encodeURIComponent(t)}`:"",n=await fetch(`/api/voice/catalog${e}`,{headers:{accept:"application/json"}});if(!n.ok)throw new Error(`Scout voice catalog returned HTTP ${n.status}`);return await n.json()}async function Se(t,e={}){if(e.signal?.aborted)throw P();const n=new Audio(`data:${t.contentType};base64,${t.audioBase64}`),i=()=>{n.pause(),n.currentTime=0};e.signal?.addEventListener("abort",i,{once:!0}),await n.play(),e.onPlaybackStart?.();try{return await new Promise((r,o)=>{const a=()=>{n.removeEventListener("ended",u),n.removeEventListener("error",h),e.signal?.removeEventListener("abort",d)},u=()=>{a(),r()},h=()=>{a(),o(new Error("Scout voice playback failed."))},d=()=>{a(),o(P())};if(e.signal?.aborted){d();return}n.addEventListener("ended",u,{once:!0}),n.addEventListener("error",h,{once:!0}),e.signal?.addEventListener("abort",d,{once:!0})}),t}finally{e.signal?.removeEventListener("abort",i)}}async function te(t,e={}){const n=await ee(t,e);if(e.signal?.aborted)throw P();const i=await k(n.audioBase64,n.contentType),r=ie(e.presetId,e.params);return await D(i,{params:r,signal:e.signal}).promise,n}function ge(t,e={}){const n=new AbortController;return{promise:te(t,{...e,signal:n.signal}),stop:()=>n.abort()}}async function ne(t,e){const n=new FormData,i=oe(t.type);n.append("audio",t,`audio.${re(t.type)}`),n.append("sessionId",e.sessionId),i&&n.append("format",i);const r=await fetch("/api/voice/transcribe",{method:"POST",body:n});if(!r.ok){const a=await r.text().catch(()=>"");try{const u=JSON.parse(a);throw new Error(u.error??`Scout voice returned HTTP ${r.status}`)}catch(u){throw u instanceof SyntaxError?new Error(a||`Scout voice returned HTTP ${r.status}`):u}}const o=await r.json();return{sessionId:e.sessionId,text:o.text?.trim()??"",durationMs:Number(o.durationMs??0)}}function P(){const t=new Error("Speech stopped.");return t.name="AbortError",t}function T(){const t=new Error("Voice recording was cancelled.");return t.name="AbortError",t}function V(){return typeof MediaRecorder>"u"||typeof MediaRecorder.isTypeSupported!="function"?void 0:["audio/webm;codecs=opus","audio/ogg;codecs=opus","audio/mp4","audio/webm","audio/wav"].find(e=>{try{return MediaRecorder.isTypeSupported(e)}catch{return!1}})}function oe(t){const e=t.toLowerCase();if(e.includes("mp3")||e.includes("mpeg"))return"mp3";if(e.includes("wav"))return"wav";if(e.includes("aac")||e.includes("mp4"))return"aac";if(e.includes("opus")||e.includes("ogg")||e.includes("webm"))return"opus"}function re(t){const e=t.toLowerCase();return e.includes("webm")?"webm":e.includes("ogg")||e.includes("opus")?"opus":e.includes("mp4")||e.includes("aac")?"m4a":e.includes("wav")?"wav":e.includes("mp3")||e.includes("mpeg")?"mp3":"audio"}function ie(t,e){const n=t?A.find(i=>i.id===t)?.params:void 0;return{...q,...n??{},...e??{}}}function se(t){if(!(t===void 0||!Number.isFinite(t)))return Math.min(2,Math.max(.5,Number(t.toFixed(2))))}function ae(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?`scout-voice:${crypto.randomUUID()}`:`scout-voice:${Date.now().toString(36)}:${Math.random().toString(36).slice(2)}`}async function ce(){const t=await fetch("/api/voice/settings");if(!t.ok){const e=await t.text().catch(()=>"");throw new Error(g(e,t.status))}return await t.json()}async function ve(t="microphone"){const e=await fetch("/api/voice/permissions/open",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:t})});if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}}async function C(t="microphone"){const e=await fetch("/api/voice/permissions/request",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({kind:t})});if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}}async function ye(t=12){const e=await fetch(`/api/voice/history?limit=${t}`);if(!e.ok){const i=await e.text().catch(()=>"");throw new Error(g(i,e.status))}return(await e.json()).sessions??[]}async function be(t){const e=await fetch("/api/voice/settings",{method:"PUT",headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(!e.ok){const n=await e.text().catch(()=>"");throw new Error(g(n,e.status))}return await e.json()}export{pe as a,we as b,Se as c,ge as d,fe as e,le as f,X as g,ce as h,me as i,ye as j,be as k,ve as o,ee as p,C as r,he as s};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./createLucideIcon-
|
|
1
|
+
import{c as a}from"./createLucideIcon-ClCdc3F9.js";const t=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],c=a("scroll-text",t);export{c as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c}from"./createLucideIcon-
|
|
1
|
+
import{c}from"./createLucideIcon-ClCdc3F9.js";const e=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],o=c("search",e);export{o as S};
|
package/dist/client/assets/{secondaryNavConfig-Drb7wPG4.js → secondaryNavConfig-Bg4Tc0gT.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./createLucideIcon-DlxlBfLC.js";import{M as w}from"./message-square-BD-4UUdc.js";import{F as l}from"./file-text-i3xTDUjJ.js";import{S as c}from"./search-DCT_EvPr.js";import{T as y}from"./terminal-DXQISjZn.js";import{C as k}from"./code-xml-05TD3uOC.js";import{S as g}from"./scroll-text-BIYf6g6N.js";const O=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}]],p=a("compass",O);const S=[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]],_=a("folder-kanban",S);const A=[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]],N=a("git-branch",A);const j=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],v=a("house",j);const E=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],u=a("send",E);const R=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],C=a("settings",R),M=[{id:"home",label:"Home",icon:v,defaultRoute:{view:"inbox"},section:"navigate"},{id:"chat",label:"Messages",icon:w,defaultRoute:{view:"messages"},section:"navigate"},{id:"projects",label:"Projects",icon:_,defaultRoute:{view:"agents-v2"},section:"navigate"},{id:"sessions",label:"Sessions",icon:l,defaultRoute:{view:"sessions"},section:"navigate"},{id:"dispatch",label:"Dispatch",icon:u,defaultRoute:{view:"broker"},section:"navigate"},{id:"search",label:"Search",icon:c,defaultRoute:{view:"search"},section:"navigate"},{id:"ops",label:"Operations",icon:p,defaultRoute:{view:"ops",mode:"mission"},section:"system"},{id:"settings",label:"Settings",icon:C,defaultRoute:{view:"settings",section:"appearance"},section:"system"}],d={inbox:"home",activity:"home",briefings:"home","agents-v2":"projects","agent-info":"projects",repos:"projects","repo-diff":"projects",code:"projects",sessions:"sessions",terminal:"sessions",messages:"chat",conversation:"chat",broker:"dispatch",work:"dispatch",follow:"dispatch",search:"search",ops:"ops",mesh:"ops","mesh-ops":"ops",harnesses:"ops",settings:"settings",voice:"settings"},T=new Map(M.map(e=>[e.id,e]));function G(e){const i=T.get(e);if(!i)throw new Error(`Unknown primary area: ${e}`);return i}function se(e){if(e.view==="follow"&&e.preferredView)switch(e.preferredView){case"tail":return"ops";case"session":return"sessions";case"chat":return"chat";case"work":return"dispatch"}return d[e.view]}function ae(e,i){const t=G(e);return e==="ops"?i?.opsControlEnabled??!0?{view:"ops",mode:"mission"}:{view:"ops",mode:"tail"}:t.defaultRoute}function P(e){return e.view==="ops"&&(e.mode===void 0||e.mode==="mission"||e.mode==="issues")}const D=[{id:"home",label:"Home",route:{view:"inbox"},active:e=>e.view==="inbox"},{id:"projects",label:"Projects",route:{view:"agents-v2"},active:e=>e.view==="agents-v2"||e.view==="agent-info"},{id:"sessions",label:"Sessions",route:{view:"sessions"},active:e=>e.view==="sessions"},{id:"chat",label:"Messages",route:{view:"messages"},active:e=>e.view==="messages"||e.view==="conversation"},{id:"search",label:"Search",route:{view:"search"},active:e=>e.view==="search"},{id:"terminals",label:"Terminals",route:{view:"terminal"},active:e=>e.view==="terminal"},{id:"tail",label:"Live Activity",route:{view:"ops",mode:"tail"},active:e=>e.view==="ops"&&e.mode==="tail"},{id:"dispatch",label:"Dispatch",route:{view:"broker"},active:e=>e.view==="broker"},{id:"activity",label:"Activity Log",route:{view:"activity"},active:e=>e.view==="activity"},{id:"mesh",label:"Network",route:{view:"mesh"},active:e=>e.view==="mesh"},{id:"mesh-ops",label:"Mesh Ops",route:{view:"mesh-ops"},active:e=>e.view==="mesh-ops",capability:"surface.mesh-ops"},{id:"mission-control",label:"Mission Control",route:{view:"ops",mode:"mission"},active:P,capability:"ops.control"},{id:"lanes",label:"Agent Lanes",route:{view:"ops",mode:"lanes"},active:e=>e.view==="ops"&&e.mode==="lanes"},{id:"repos",label:"Repositories",route:{view:"repos"},active:e=>e.view==="repos"||e.view==="repo-diff"},{id:"code",label:"Code Browser",route:{view:"code"},active:e=>e.view==="code"},{id:"providers",label:"Agent Providers",route:{view:"harnesses"},active:e=>e.view==="harnesses"},{id:"runtime",label:"Runtime Monitor",route:{view:"ops",mode:"atop"},active:e=>e.view==="ops"&&e.mode==="atop",capability:"ops.control"},{id:"plans",label:"Plans",route:{view:"ops",mode:"plan"},active:e=>e.view==="ops"&&e.mode==="plan"},{id:"agent-config",label:"Agent Configuration",route:{view:"settings",section:"agents"},active:e=>e.view==="settings"&&e.section==="agents"}],x=new Map(D.map(e=>[e.id,e]));function s(e){const i=x.get(e);if(!i)throw new Error(`Unknown nav destination: ${e}`);return i}function n(e,i){const t=s(e);return{id:t.id,label:i?.label??t.label,route:i?.route??t.route,active:i?.active??t.active,capability:t.capability}}const V=[{destinationId:"home",key:"home"},{destinationId:"projects",key:"agents",label:"Projects"},{destinationId:"sessions",key:"sessions"},{destinationId:"chat",key:"chat",label:"Messages"}];function ne(){return V.map(e=>{const i=s(e.destinationId);return{key:e.key,label:e.label??i.label,route:i.route}})}const B=[{destinationId:"search",key:"search"},{destinationId:"terminals",key:"terminals"},{destinationId:"tail",key:"tail"},{destinationId:"dispatch",key:"dispatch"}],J=[{destinationId:"mission-control",key:"control"},{destinationId:"lanes",key:"lanes"},{destinationId:"repos",key:"repos"},{destinationId:"code",key:"code"},{destinationId:"providers",key:"providers"},{destinationId:"mesh",key:"mesh"},{destinationId:"mesh-ops",key:"mesh-ops"},{destinationId:"runtime",key:"runtime"},{destinationId:"plans",key:"plans"}];function b(e){const i=n(e.destinationId,{label:e.label});return{key:e.key,label:i.label,route:i.route,active:i.active,destinationId:i.id,capability:i.capability}}function de(){return B.map(b)}function re(){return J.map(b)}function m(e){return{items:e.map(i=>{const t=n(i.destinationId,{label:i.label,route:i.route,active:i.active});return{id:i.id,label:t.label,route:t.route,active:t.active}})}}function U(){return[m([{destinationId:"agent-config",id:"config",label:"Agent Configuration"}])]}function F(){return[m([{destinationId:"lanes",id:"lanes"},{destinationId:"mission-control",id:"control"},{destinationId:"providers",id:"harnesses",label:"Agent Providers"},{destinationId:"mesh",id:"mesh"},{destinationId:"tail",id:"tail"},{destinationId:"runtime",id:"runtime"},{destinationId:"plans",id:"plans"}])]}const L=[{key:"h",label:"Go home",destinationId:"home"},{key:"i",label:"Go to messages",destinationId:"chat"},{key:"c",label:"Go to messages",destinationId:"chat"},{key:"p",label:"Go to projects",destinationId:"projects"},{key:"s",label:"Go to sessions",destinationId:"sessions"},{key:"t",label:"Go to terminals",destinationId:"terminals"},{key:"r",label:"Go to repositories",destinationId:"repos"},{key:"b",label:"Go to code browser",destinationId:"code"},{key:"f",label:"Go to search",destinationId:"search"},{key:"l",label:"Go to live activity",destinationId:"tail"},{key:"o",label:"Go to operations",destinationId:"mission-control",route:{view:"ops"}},{key:"d",label:"Go to dispatch",destinationId:"dispatch"},{key:"m",label:"Go to network",destinationId:"mesh"},{key:"a",label:"Go to activity log",destinationId:"activity"}];function le(){return L.map(e=>{const i=s(e.destinationId);return{key:e.key,label:e.label,route:e.route??i.route,destinationId:e.destinationId}})}const Y=[{destinationId:"sessions",id:"sessions",icon:l},{destinationId:"terminals",id:"terminals",icon:y},{destinationId:"repos",id:"repos",icon:N},{destinationId:"code",id:"code",icon:k},{destinationId:"search",id:"search",icon:c},{destinationId:"tail",id:"tail",icon:g},{destinationId:"mission-control",id:"ops",label:"Operations",icon:p,route:{view:"ops",mode:"mission"},opsGated:!0},{destinationId:"home",id:"home",icon:v},{destinationId:"dispatch",id:"dispatch",icon:u}];function ce(){return Y.map(e=>{const i=s(e.destinationId);return{id:e.id,label:e.label??i.label,icon:e.icon,route:e.route??i.route,destinationId:e.destinationId,opsGated:e.opsGated??i.capability==="ops.control"}})}const H=[{id:"nav:home",label:"Go to Home",destinationId:"home",shortcut:"Cmd+1"},{id:"nav:agents",label:"Go to Projects",destinationId:"projects",shortcut:"Cmd+2"},{id:"nav:messages",label:"Go to Chat",destinationId:"chat",shortcut:"Cmd+3"},{id:"nav:sessions",label:"Open Sessions",destinationId:"sessions"},{id:"nav:terminals",label:"Open Terminals",destinationId:"terminals"},{id:"nav:search",label:"Go to Search",destinationId:"search",shortcut:"Cmd+4"},{id:"nav:activity",label:"Open Activity",destinationId:"activity"},{id:"nav:mesh",label:"Open Mesh",destinationId:"mesh"},{id:"nav:dispatch",label:"Open Dispatch",destinationId:"dispatch"},{id:"nav:repos",label:"Open Repos",destinationId:"repos"},{id:"nav:code",label:"Open Code Browser",destinationId:"code"},{id:"nav:harnesses",label:"Open Providers",destinationId:"providers"},{id:"nav:ops-lanes",label:"Open Agent Lanes",destinationId:"lanes"},{id:"nav:ops",label:"Go to Ops",destinationId:"mission-control",route:{view:"ops"},shortcut:"Cmd+5",capability:"ops.control"},{id:"nav:ops-atop",label:"Open Runtime",destinationId:"runtime",capability:"ops.control"},{id:"nav:agent-config",label:"Open Agent Configuration",destinationId:"agent-config"}];function $(e){const i=e?.opsEnabled??!0;return H.filter(t=>!((t.capability??s(t.destinationId).capability)==="ops.control"&&!i)).map(t=>{const o=s(t.destinationId);return{id:t.id,label:t.label,destinationId:t.destinationId,route:t.route??o.route,shortcut:t.shortcut,capability:t.capability??o.capability}})}function pe(e,i){return $(i).map(t=>({id:t.id,label:t.label,action:()=>e(t.route),shortcut:t.shortcut}))}const h={projects:[{destinationId:"projects",id:"projects",label:"Projects"},{destinationId:"repos",id:"repos"},{destinationId:"code",id:"code"}],sessions:[{destinationId:"sessions",id:"sessions"},{destinationId:"terminals",id:"terminals"}]};function z(e){const i=n(e.destinationId,{label:e.label});return{id:e.id,label:i.label,route:i.route,active:i.active,destinationId:i.id}}function q(e){return h[e].map(z)}function ve(e){const i=d[e.view];if(i!=="projects"&&i!=="sessions")return null;const t=i;return{areaId:t,items:q(t)}}const r={...h,dispatch:[{destinationId:"dispatch",id:"dispatch-all",label:"All Dispatches",route:{view:"broker"},active:e=>e.view==="broker"&&(e.filter===void 0||e.filter==="all")},{destinationId:"dispatch",id:"dispatch-delivered",label:"Delivered",route:{view:"broker",filter:"delivered"},active:e=>e.view==="broker"&&e.filter==="delivered"},{destinationId:"dispatch",id:"dispatch-failed",label:"Failed",route:{view:"broker",filter:"failed"},active:e=>e.view==="broker"&&e.filter==="failed"}],ops:[{destinationId:"lanes",id:"lanes",label:"Lanes"},{destinationId:"mission-control",id:"control"},{destinationId:"providers",id:"harnesses",label:"Providers"},{destinationId:"runtime",id:"runtime",label:"Runtime"},{destinationId:"mesh",id:"mesh"},{destinationId:"tail",id:"tail"},{destinationId:"plans",id:"plans"}]};function K(e){const i=n(e.destinationId,{label:e.label,route:e.route,active:e.active});return{id:e.id,label:i.label,route:i.route,active:i.active,destinationId:i.id}}function ue(e,i){const t=d[e.view];if(!(t in r))return null;const o=t,I=r[o].map(K).filter(f=>s(f.destinationId).capability!=="ops.control"||i?.opsControlEnabled!==!1);return{areaId:o,items:I}}const be=U(),me=F();export{be as A,me as O,M as P,C as S,de as a,re as b,pe as c,ce as d,le as e,se as f,ae as g,G as h,ve as i,ne as p,ue as s};
|
|
1
|
+
import{c as a}from"./createLucideIcon-ClCdc3F9.js";import{M as w}from"./message-square-CIXda-Y7.js";import{F as l}from"./file-text-DG-pufl1.js";import{S as c}from"./search-C3bSJluv.js";import{T as y}from"./terminal-DrTkVXIj.js";import{C as k}from"./code-xml--LjSM4Mv.js";import{S as g}from"./scroll-text-BV-BB7v-.js";const O=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16.24 7.76-1.804 5.411a2 2 0 0 1-1.265 1.265L7.76 16.24l1.804-5.411a2 2 0 0 1 1.265-1.265z",key:"9ktpf1"}]],p=a("compass",O);const S=[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]],_=a("folder-kanban",S);const A=[["path",{d:"M15 6a9 9 0 0 0-9 9V3",key:"1cii5b"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}]],N=a("git-branch",A);const j=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],v=a("house",j);const E=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],u=a("send",E);const R=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],C=a("settings",R),M=[{id:"home",label:"Home",icon:v,defaultRoute:{view:"inbox"},section:"navigate"},{id:"chat",label:"Messages",icon:w,defaultRoute:{view:"messages"},section:"navigate"},{id:"projects",label:"Projects",icon:_,defaultRoute:{view:"agents-v2"},section:"navigate"},{id:"sessions",label:"Sessions",icon:l,defaultRoute:{view:"sessions"},section:"navigate"},{id:"dispatch",label:"Dispatch",icon:u,defaultRoute:{view:"broker"},section:"navigate"},{id:"search",label:"Search",icon:c,defaultRoute:{view:"search"},section:"navigate"},{id:"ops",label:"Operations",icon:p,defaultRoute:{view:"ops",mode:"mission"},section:"system"},{id:"settings",label:"Settings",icon:C,defaultRoute:{view:"settings",section:"appearance"},section:"system"}],d={inbox:"home",activity:"home",briefings:"home","agents-v2":"projects","agent-info":"projects",repos:"projects","repo-diff":"projects",code:"projects",sessions:"sessions",terminal:"sessions",messages:"chat",conversation:"chat",broker:"dispatch",work:"dispatch",follow:"dispatch",search:"search",ops:"ops",mesh:"ops","mesh-ops":"ops",harnesses:"ops",settings:"settings",voice:"settings"},T=new Map(M.map(e=>[e.id,e]));function G(e){const i=T.get(e);if(!i)throw new Error(`Unknown primary area: ${e}`);return i}function se(e){if(e.view==="follow"&&e.preferredView)switch(e.preferredView){case"tail":return"ops";case"session":return"sessions";case"chat":return"chat";case"work":return"dispatch"}return d[e.view]}function ae(e,i){const t=G(e);return e==="ops"?i?.opsControlEnabled??!0?{view:"ops",mode:"mission"}:{view:"ops",mode:"tail"}:t.defaultRoute}function P(e){return e.view==="ops"&&(e.mode===void 0||e.mode==="mission"||e.mode==="issues")}const D=[{id:"home",label:"Home",route:{view:"inbox"},active:e=>e.view==="inbox"},{id:"projects",label:"Projects",route:{view:"agents-v2"},active:e=>e.view==="agents-v2"||e.view==="agent-info"},{id:"sessions",label:"Sessions",route:{view:"sessions"},active:e=>e.view==="sessions"},{id:"chat",label:"Messages",route:{view:"messages"},active:e=>e.view==="messages"||e.view==="conversation"},{id:"search",label:"Search",route:{view:"search"},active:e=>e.view==="search"},{id:"terminals",label:"Terminals",route:{view:"terminal"},active:e=>e.view==="terminal"},{id:"tail",label:"Live Activity",route:{view:"ops",mode:"tail"},active:e=>e.view==="ops"&&e.mode==="tail"},{id:"dispatch",label:"Dispatch",route:{view:"broker"},active:e=>e.view==="broker"},{id:"activity",label:"Activity Log",route:{view:"activity"},active:e=>e.view==="activity"},{id:"mesh",label:"Network",route:{view:"mesh"},active:e=>e.view==="mesh"},{id:"mesh-ops",label:"Mesh Ops",route:{view:"mesh-ops"},active:e=>e.view==="mesh-ops",capability:"surface.mesh-ops"},{id:"mission-control",label:"Mission Control",route:{view:"ops",mode:"mission"},active:P,capability:"ops.control"},{id:"lanes",label:"Agent Lanes",route:{view:"ops",mode:"lanes"},active:e=>e.view==="ops"&&e.mode==="lanes"},{id:"repos",label:"Repositories",route:{view:"repos"},active:e=>e.view==="repos"||e.view==="repo-diff"},{id:"code",label:"Code Browser",route:{view:"code"},active:e=>e.view==="code"},{id:"providers",label:"Agent Providers",route:{view:"harnesses"},active:e=>e.view==="harnesses"},{id:"runtime",label:"Runtime Monitor",route:{view:"ops",mode:"atop"},active:e=>e.view==="ops"&&e.mode==="atop",capability:"ops.control"},{id:"plans",label:"Plans",route:{view:"ops",mode:"plan"},active:e=>e.view==="ops"&&e.mode==="plan"},{id:"agent-config",label:"Agent Configuration",route:{view:"settings",section:"agents"},active:e=>e.view==="settings"&&e.section==="agents"}],x=new Map(D.map(e=>[e.id,e]));function s(e){const i=x.get(e);if(!i)throw new Error(`Unknown nav destination: ${e}`);return i}function n(e,i){const t=s(e);return{id:t.id,label:i?.label??t.label,route:i?.route??t.route,active:i?.active??t.active,capability:t.capability}}const V=[{destinationId:"home",key:"home"},{destinationId:"projects",key:"agents",label:"Projects"},{destinationId:"sessions",key:"sessions"},{destinationId:"chat",key:"chat",label:"Messages"}];function ne(){return V.map(e=>{const i=s(e.destinationId);return{key:e.key,label:e.label??i.label,route:i.route}})}const B=[{destinationId:"search",key:"search"},{destinationId:"terminals",key:"terminals"},{destinationId:"tail",key:"tail"},{destinationId:"dispatch",key:"dispatch"}],J=[{destinationId:"mission-control",key:"control"},{destinationId:"lanes",key:"lanes"},{destinationId:"repos",key:"repos"},{destinationId:"code",key:"code"},{destinationId:"providers",key:"providers"},{destinationId:"mesh",key:"mesh"},{destinationId:"mesh-ops",key:"mesh-ops"},{destinationId:"runtime",key:"runtime"},{destinationId:"plans",key:"plans"}];function b(e){const i=n(e.destinationId,{label:e.label});return{key:e.key,label:i.label,route:i.route,active:i.active,destinationId:i.id,capability:i.capability}}function de(){return B.map(b)}function re(){return J.map(b)}function m(e){return{items:e.map(i=>{const t=n(i.destinationId,{label:i.label,route:i.route,active:i.active});return{id:i.id,label:t.label,route:t.route,active:t.active}})}}function U(){return[m([{destinationId:"agent-config",id:"config",label:"Agent Configuration"}])]}function F(){return[m([{destinationId:"lanes",id:"lanes"},{destinationId:"mission-control",id:"control"},{destinationId:"providers",id:"harnesses",label:"Agent Providers"},{destinationId:"mesh",id:"mesh"},{destinationId:"tail",id:"tail"},{destinationId:"runtime",id:"runtime"},{destinationId:"plans",id:"plans"}])]}const L=[{key:"h",label:"Go home",destinationId:"home"},{key:"i",label:"Go to messages",destinationId:"chat"},{key:"c",label:"Go to messages",destinationId:"chat"},{key:"p",label:"Go to projects",destinationId:"projects"},{key:"s",label:"Go to sessions",destinationId:"sessions"},{key:"t",label:"Go to terminals",destinationId:"terminals"},{key:"r",label:"Go to repositories",destinationId:"repos"},{key:"b",label:"Go to code browser",destinationId:"code"},{key:"f",label:"Go to search",destinationId:"search"},{key:"l",label:"Go to live activity",destinationId:"tail"},{key:"o",label:"Go to operations",destinationId:"mission-control",route:{view:"ops"}},{key:"d",label:"Go to dispatch",destinationId:"dispatch"},{key:"m",label:"Go to network",destinationId:"mesh"},{key:"a",label:"Go to activity log",destinationId:"activity"}];function le(){return L.map(e=>{const i=s(e.destinationId);return{key:e.key,label:e.label,route:e.route??i.route,destinationId:e.destinationId}})}const Y=[{destinationId:"sessions",id:"sessions",icon:l},{destinationId:"terminals",id:"terminals",icon:y},{destinationId:"repos",id:"repos",icon:N},{destinationId:"code",id:"code",icon:k},{destinationId:"search",id:"search",icon:c},{destinationId:"tail",id:"tail",icon:g},{destinationId:"mission-control",id:"ops",label:"Operations",icon:p,route:{view:"ops",mode:"mission"},opsGated:!0},{destinationId:"home",id:"home",icon:v},{destinationId:"dispatch",id:"dispatch",icon:u}];function ce(){return Y.map(e=>{const i=s(e.destinationId);return{id:e.id,label:e.label??i.label,icon:e.icon,route:e.route??i.route,destinationId:e.destinationId,opsGated:e.opsGated??i.capability==="ops.control"}})}const H=[{id:"nav:home",label:"Go to Home",destinationId:"home",shortcut:"Cmd+1"},{id:"nav:agents",label:"Go to Projects",destinationId:"projects",shortcut:"Cmd+2"},{id:"nav:messages",label:"Go to Chat",destinationId:"chat",shortcut:"Cmd+3"},{id:"nav:sessions",label:"Open Sessions",destinationId:"sessions"},{id:"nav:terminals",label:"Open Terminals",destinationId:"terminals"},{id:"nav:search",label:"Go to Search",destinationId:"search",shortcut:"Cmd+4"},{id:"nav:activity",label:"Open Activity",destinationId:"activity"},{id:"nav:mesh",label:"Open Mesh",destinationId:"mesh"},{id:"nav:dispatch",label:"Open Dispatch",destinationId:"dispatch"},{id:"nav:repos",label:"Open Repos",destinationId:"repos"},{id:"nav:code",label:"Open Code Browser",destinationId:"code"},{id:"nav:harnesses",label:"Open Providers",destinationId:"providers"},{id:"nav:ops-lanes",label:"Open Agent Lanes",destinationId:"lanes"},{id:"nav:ops",label:"Go to Ops",destinationId:"mission-control",route:{view:"ops"},shortcut:"Cmd+5",capability:"ops.control"},{id:"nav:ops-atop",label:"Open Runtime",destinationId:"runtime",capability:"ops.control"},{id:"nav:agent-config",label:"Open Agent Configuration",destinationId:"agent-config"}];function $(e){const i=e?.opsEnabled??!0;return H.filter(t=>!((t.capability??s(t.destinationId).capability)==="ops.control"&&!i)).map(t=>{const o=s(t.destinationId);return{id:t.id,label:t.label,destinationId:t.destinationId,route:t.route??o.route,shortcut:t.shortcut,capability:t.capability??o.capability}})}function pe(e,i){return $(i).map(t=>({id:t.id,label:t.label,action:()=>e(t.route),shortcut:t.shortcut}))}const h={projects:[{destinationId:"projects",id:"projects",label:"Projects"},{destinationId:"repos",id:"repos"},{destinationId:"code",id:"code"}],sessions:[{destinationId:"sessions",id:"sessions"},{destinationId:"terminals",id:"terminals"}]};function z(e){const i=n(e.destinationId,{label:e.label});return{id:e.id,label:i.label,route:i.route,active:i.active,destinationId:i.id}}function q(e){return h[e].map(z)}function ve(e){const i=d[e.view];if(i!=="projects"&&i!=="sessions")return null;const t=i;return{areaId:t,items:q(t)}}const r={...h,dispatch:[{destinationId:"dispatch",id:"dispatch-all",label:"All Dispatches",route:{view:"broker"},active:e=>e.view==="broker"&&(e.filter===void 0||e.filter==="all")},{destinationId:"dispatch",id:"dispatch-delivered",label:"Delivered",route:{view:"broker",filter:"delivered"},active:e=>e.view==="broker"&&e.filter==="delivered"},{destinationId:"dispatch",id:"dispatch-failed",label:"Failed",route:{view:"broker",filter:"failed"},active:e=>e.view==="broker"&&e.filter==="failed"}],ops:[{destinationId:"lanes",id:"lanes",label:"Lanes"},{destinationId:"mission-control",id:"control"},{destinationId:"providers",id:"harnesses",label:"Providers"},{destinationId:"runtime",id:"runtime",label:"Runtime"},{destinationId:"mesh",id:"mesh"},{destinationId:"tail",id:"tail"},{destinationId:"plans",id:"plans"}]};function K(e){const i=n(e.destinationId,{label:e.label,route:e.route,active:e.active});return{id:e.id,label:i.label,route:i.route,active:i.active,destinationId:i.id}}function ue(e,i){const t=d[e.view];if(!(t in r))return null;const o=t,I=r[o].map(K).filter(f=>s(f.destinationId).capability!=="ops.control"||i?.opsControlEnabled!==!1);return{areaId:o,items:I}}const be=U(),me=F();export{be as A,me as O,M as P,C as S,de as a,re as b,pe as c,ce as d,le as e,se as f,ae as g,G as h,ve as i,ne as p,ue as s};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as r,r as o}from"./index-
|
|
1
|
+
import{j as r,r as o}from"./index-CzVeWScw.js";import{j as l}from"./ui-LM8pS8qE.js";function p({branch:t,fallback:s}){const e=l(t,s);return e.detached?r.jsx("span",{className:"pre",children:e.sha??"detached"}):e.prefix?r.jsxs(r.Fragment,{children:[r.jsx("span",{className:"pre",children:e.prefix}),e.leaf]}):r.jsx(r.Fragment,{children:e.leaf})}const a={worktree:null,project:null,generatedAt:0,tone:"warm"};let n=a;const c=new Set;function i(){for(const t of c)t()}function h(t){n=t,i()}function d(){n!==a&&(n=a,i())}function m(){const[t,s]=o.useState(()=>n);return o.useEffect(()=>{s(n);const e=()=>s(n);return c.add(e),()=>{c.delete(e)}},[]),t}export{p as B,d as c,h as p,m as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./createLucideIcon-
|
|
1
|
+
import{c as a}from"./createLucideIcon-ClCdc3F9.js";const o=[["path",{d:"M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z",key:"117uat"}],["path",{d:"M6 12h16",key:"s4cdu5"}]],e=a("send-horizontal",o);export{e as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./createLucideIcon-
|
|
1
|
+
import{c as e}from"./createLucideIcon-ClCdc3F9.js";const r=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],i=e("server",r);export{i as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as d}from"./terminal-relay-
|
|
1
|
+
import{r as d}from"./terminal-relay-BkXjjSkq.js";function S(r,e){const s=d(r),n=s?r.harnessSessionId??s.sessionName:null;return e?.activeSessionId??n}function I(r,e){return[...r].sort((s,n)=>{const t=s.id===e?1:0,o=n.id===e?1:0;return t!==o?o-t:(n.endedAt??n.startedAt)-(s.endedAt??s.startedAt)})}function c(r){const e=r;return[e.id,e.surfaceSessionId,e.harnessSessionId,e.externalSessionId,e.threadId,e.runtimeSessionId,e.runtimeSessionRef,e.runtimeRef,e.sourceSessionId,e.sessionId,e.refId].flatMap(s=>{const n=s?.trim();return n?[n]:[]})}function u(r){const e=/^relay-(.+)-(claude|codex)$/iu.exec(r);return e?{scope:e[1].toLowerCase(),harness:e[2].toLowerCase()}:null}function l(r,e){const s=u(r),n=u(e);return!s||!n?!1:s.harness===n.harness&&(s.scope===n.scope||s.scope.startsWith(`${n.scope}-`))}function f(r,e){const s=r?.trim();if(!s)return null;const n=e.find(a=>c(a).some(i=>i===s));if(n)return n.id;const t=e.filter(a=>c(a).some(i=>l(i,s)));return new Set(t.map(a=>a.id)).size===1?t[0]?.id??null:null}function h(r,e,s,n,t){const o=f(t,n);return o||(s??n[0]?.id??null)}function A(r,e,s,n){const t=!!d(r),o=n&&(!!s.canObserve||t),a=n&&(!!s.canTakeover||t||!!e?.resumeCommand);return{canObserve:o,canTakeover:a}}export{h as a,f as b,A as c,S as r,I as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as u}from"./createLucideIcon-ClCdc3F9.js";const l=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],b=u("power",l),d=10080*60*1e3,f=720*60*60*1e3,p={column:"state",direction:"desc"},S=[{id:"name",label:"Session",initialDirection:"asc"},{id:"host",label:"Host",initialDirection:"asc"},{id:"state",label:"State",initialDirection:"desc"},{id:"project",label:"Project",initialDirection:"asc"},{id:"activity",label:"Activity",initialDirection:"desc"}];function c(t){const e=typeof t.session.metadata?.attachedClients=="number"?t.session.metadata.attachedClients:0;return t.surface.state==="exited"?0:e>0?3:t.surface.state==="detached"?1:2}function y(t){const e=typeof t.session.metadata?.attachedClients=="number"?t.session.metadata.attachedClients:null;return t.surface.state==="exited"?"exited":e&&e>0?`${e} attached`:t.surface.state??"live"}function o(t){const e=t.session.metadata?.activityAt;if(typeof e=="number"&&Number.isFinite(e)&&e>0)return e;const n=t.session.metadata?.startedAt;return typeof n=="number"&&Number.isFinite(n)&&n>0?n:t.origin==="backend"?null:t.session.updatedAt||null}function v(t,e=Date.now()){const n=t.session.metadata?.activityAt,i=typeof n=="number"&&Number.isFinite(n)&&n>0?n:t.origin==="backend"?null:t.session.updatedAt||null;if(i===null)return"current";const a=Math.max(0,e-i);return a>=f?"review":a>=d?"inactive":"current"}function s(t,e){return t.localeCompare(e,void 0,{numeric:!0,sensitivity:"base"})}function _(t,e){const n=e.direction==="asc"?1:-1;return[...t].sort((i,a)=>{const r=m(i,a,e.column)*n;return r!==0?r:s(i.title,a.title)})}function m(t,e,n){switch(n){case"name":return s(t.title,e.title);case"host":return s(t.surface.backend,e.surface.backend);case"state":return c(t)-c(e);case"project":return s(t.project,e.project);case"activity":{const i=o(t),a=o(e);return i===null&&a===null?0:i===null?-1:a===null?1:i-a}}}function E(t,e){if(t.column===e)return{column:e,direction:t.direction==="asc"?"desc":"asc"};const n=S.find(i=>i.id===e)?.initialDirection??"asc";return{column:e,direction:n}}export{p as D,b as P,S as T,o as a,v as b,E as c,y as d,_ as s,c as t};
|
package/dist/client/assets/{sliders-horizontal-B9Nj-Y4J.js → sliders-horizontal-CUiOH26y.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as t}from"./createLucideIcon-
|
|
1
|
+
import{c as t}from"./createLucideIcon-ClCdc3F9.js";const a=[["path",{d:"M10 5H3",key:"1qgfaw"}],["path",{d:"M12 19H3",key:"yhmn1j"}],["path",{d:"M14 3v4",key:"1sua03"}],["path",{d:"M16 17v4",key:"1q0r14"}],["path",{d:"M21 12h-9",key:"1o4lsq"}],["path",{d:"M21 19h-5",key:"1rlt1p"}],["path",{d:"M21 5h-7",key:"1oszz2"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M8 12H3",key:"a7s4jb"}]],h=t("sliders-horizontal",a);export{h as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./createLucideIcon-
|
|
1
|
+
import{c as a}from"./createLucideIcon-ClCdc3F9.js";const e=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],l=a("sparkles",e);export{l as S};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as o,c as f}from"./index-
|
|
1
|
+
import{r as o,c as f}from"./index-CzVeWScw.js";import{c as b,a as d,w as m}from"./index-BWHgHrtv.js";const n=new Set;let u=null,i=null,s=null,r=null;function c(e){for(const t of[...n])t(e)}function p(){r||n.size===0||(r=setTimeout(()=>{r=null,l()},2e3))}function l(){s||n.size===0||(u||(u=b({url:f()}),i=d({links:[m({client:u})]})),s=i.control.events.subscribe(void 0,{onData:e=>{const t=e.data;t&&c(t)},onError:()=>{s=null,p()}}),c({kind:"unknown",payload:{reason:"control_subscription_started"}}))}function v(){r&&(clearTimeout(r),r=null),s?.unsubscribe(),s=null}function k(e){return n.add(e),l(),()=>{n.delete(e),!(n.size>0)&&v()}}function S(e){const t=o.useRef(e);t.current=e,o.useEffect(()=>k(a=>{t.current(a)}),[])}export{S as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function s(n){return!!n?.startsWith("native:")}function r(n){if(!s(n))return null;const e=n.slice(7).split(":");if(e.length<2)return null;const i=e[1];return i==="path"?null:i==="terminal"?e.slice(2).join(":")||null:i||null}function a(n){return n.harnessSessionId?.trim()||r(n.id)}function c(n){if(n.view!=="agents-v2"||!n.agentId||!s(n.agentId))return n;const t=r(n.agentId);return t?{view:"sessions",sessionId:t,...n.machineId?{machineId:n.machineId}:{}}:n}function l(n){return c(n)}export{s as i,l as n,a as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[data-scout-theme-mode]{--sys-hairline: color-mix(in srgb, var(--ink) 7%, transparent);--sys-hairline-soft: color-mix(in srgb, var(--ink) 5%, transparent);--sys-head-tint: color-mix(in srgb, var(--ink) 3%, transparent);--sys-well: color-mix(in srgb, var(--bg) 84%, transparent);--sys-row-hover: color-mix(in srgb, var(--accent) 5%, transparent);--sys-row-selected: color-mix(in srgb, var(--accent) 9%, transparent)}[data-scout-theme-mode=light]{--sys-hairline: var(--border);--sys-hairline-soft: color-mix(in srgb, var(--border) 62%, transparent);--sys-head-tint: color-mix(in srgb, var(--ink) 3.5%, transparent);--sys-well: color-mix(in srgb, var(--ink) 4%, transparent);--sys-row-hover: color-mix(in srgb, var(--accent) 7%, transparent);--sys-row-selected: color-mix(in srgb, var(--accent) 12%, transparent)}.sys-surface-page{display:flex;flex-direction:column;gap:var(--space-5xl);padding:var(--space-4xl) var(--space-5xl) var(--space-5xl);max-width:820px!important}.sys-surface-page-wide{max-width:1080px!important}.sys-surface-page-fluid{width:100%;max-width:none!important}.sys-page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2xl)}.sys-page-title-group{display:flex;flex-direction:column;gap:var(--space-3xs);min-width:0}.sys-page-kicker{display:none}.sys-page-title{font-family:var(--font-accent-title);font-size:var(--text-6xl);font-weight:500;line-height:var(--leading-none);letter-spacing:-.025em;color:var(--ink)}.sys-page-subtitle{max-width:520px;font-size:var(--text-md);color:var(--dim);line-height:var(--leading-snug)}.sys-page-actions{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap;justify-content:flex-end;flex-shrink:0}.sys-sync-note{font-size:var(--text-sm);color:var(--muted)}.sys-panel{border:1px solid var(--sys-hairline);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 96%,transparent);box-shadow:none;padding:var(--space-2xl)}.sys-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-2xl);margin-bottom:var(--space-lg)}.sys-section-title{font-family:var(--font-accent-title);font-size:var(--text-2xl);font-weight:500;color:var(--ink);letter-spacing:-.01em}.sys-section-subtitle{margin-top:var(--space-3xs);font-size:var(--text-sm);color:var(--dim)}.sys-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-sm)}.sys-stat-card{display:flex;flex-direction:column;gap:var(--space-2xs);min-width:0;border:1px solid var(--sys-hairline-soft);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 92%,transparent);padding:var(--space-lg) var(--space-xl)}.sys-stat-label{font-size:var(--text-sm);font-weight:500;letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--dim);opacity:.6}.sys-stat-value{font-size:var(--text-2xl);font-weight:600;line-height:var(--leading-tight);letter-spacing:-.02em;color:var(--ink);overflow-wrap:anywhere}.sys-stat-detail{font-size:var(--text-sm);color:var(--muted)}.sys-chip-row{display:flex;gap:var(--space-xs);flex-wrap:wrap;justify-content:center}.sys-chip{display:inline-flex;align-items:center;gap:var(--space-2xs);border-radius:var(--radius-md);padding:var(--space-2xs) var(--space-sm);border:1px solid transparent;font-size:var(--text-xs);font-weight:600;line-height:var(--leading-none)}.sys-chip-neutral{color:var(--muted);background:color-mix(in srgb,var(--muted) 12%,transparent);border-color:color-mix(in srgb,var(--muted) 18%,transparent)}.sys-chip-notice,.sys-chip-warning{color:var(--amber);background:color-mix(in srgb,var(--amber) 12%,transparent);border-color:color-mix(in srgb,var(--amber) 22%,transparent)}.sys-chip-working{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);border-color:color-mix(in srgb,var(--accent) 18%,transparent)}.sys-chip-success,.sys-chip-completed{color:var(--green);background:color-mix(in srgb,var(--green) 12%,transparent);border-color:color-mix(in srgb,var(--green) 20%,transparent)}.sys-chip-danger,.sys-chip-failed{color:var(--red);background:color-mix(in srgb,var(--red) 11%,transparent);border-color:color-mix(in srgb,var(--red) 18%,transparent)}.sys-banner{display:flex;align-items:flex-start;gap:var(--space-sm);border:1px solid color-mix(in srgb,var(--ink) 6%,transparent);border-radius:var(--radius-lg);padding:var(--space-lg) var(--space-2xl);font-size:var(--text-lg)}.sys-banner strong{white-space:nowrap}.sys-banner-warning{background:color-mix(in srgb,var(--amber) 10%,transparent);border-color:color-mix(in srgb,var(--amber) 22%,transparent);color:var(--amber)}.sys-banner-info{background:color-mix(in srgb,var(--accent) 7%,transparent);border-color:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}.sys-banner-success{background:color-mix(in srgb,var(--green) 8%,transparent);border-color:color-mix(in srgb,var(--green) 20%,transparent);color:var(--green)}.sys-banner-error{background:color-mix(in srgb,var(--red) 8%,transparent);border-color:color-mix(in srgb,var(--red) 20%,transparent);color:var(--red)}.sys-banner-muted{background:color-mix(in srgb,var(--accent) 5%,transparent);border-color:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent)}.sys-tab-row{display:flex;gap:var(--space-xs);flex-wrap:wrap;border-bottom:1px solid var(--sys-hairline)}.sys-tab{appearance:none;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:var(--text-sm);font-weight:600;line-height:var(--leading-none);padding:0 var(--space-md) var(--space-lg);cursor:pointer}.sys-tab:hover{color:var(--ink)}.sys-tab-active{color:var(--ink);border-bottom-color:var(--accent)}.sys-kicker{color:var(--accent);font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-lg);text-transform:uppercase}.sys-broker-page{gap:var(--space-lg);height:100%;min-height:0;padding:var(--space-lg) var(--space-3xl) var(--space-3xl);overflow:auto}.sys-broker-page .sys-ledger-toolbar{align-items:center;flex:0 0 auto;min-height:0;border-bottom:0}.sys-ledger-toolbar{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:var(--space-lg);min-height:38px;border-bottom:1px solid var(--sys-hairline)}.sys-ledger-toolbar .sys-tab-row{min-width:0;flex:1 1 420px;flex-wrap:nowrap;overflow-x:auto;border-bottom:0}.sys-broker-page .sys-tab-row--toolbar{flex:0 1 auto;width:fit-content;padding:3px;overflow:visible;border:1px solid var(--sys-hairline);border-radius:var(--radius-lg);background:var(--sys-well)}.sys-tab-row--toolbar .sys-tab{padding-bottom:var(--space-md)}.sys-broker-page .sys-tab-row--toolbar .sys-tab{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border:0;border-radius:calc(var(--radius-lg) - 2px);color:var(--dim);font-weight:550;transition:color .12s ease,background .12s ease,box-shadow .12s ease}.sys-broker-page .sys-tab-row--toolbar .sys-tab:hover{color:var(--ink)}.sys-broker-page .sys-tab-row--toolbar .sys-tab-active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px color-mix(in srgb,var(--bg) 32%,transparent)}.sys-tab-count{min-width:17px;padding:1px 5px;border-radius:999px;background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums;line-height:1.35;text-align:center}.sys-tab-active .sys-tab-count{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.sys-ledger-actions{margin-left:auto;padding-bottom:0}.sys-ledger-kicker{padding-bottom:var(--space-md);color:var(--dim);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-lg);text-transform:uppercase}.sys-ledger-footer{display:flex;justify-content:center;padding:var(--space-lg) 0 var(--space-sm)}.sys-broker-source-note{display:flex;align-items:center;gap:var(--space-sm);min-width:0;color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-snug)}.sys-broker-source-note strong{color:var(--muted);font-weight:600}.sys-broker-source-note--warning strong{color:color-mix(in srgb,var(--amber) 84%,var(--ink))}.sys-broker-source-spinner{flex:0 0 auto;color:var(--muted);animation:sys-broker-source-spin .8s linear infinite}@keyframes sys-broker-source-spin{to{transform:rotate(360deg)}}.sys-broker-source-dot{flex:0 0 auto;width:6px;height:6px;border-radius:999px;background:var(--amber);box-shadow:0 0 0 3px color-mix(in srgb,var(--amber) 10%,transparent)}.sys-broker-wire{display:flex;flex-direction:column;gap:var(--space-md);background:transparent}.sys-broker-wire-head,.sys-broker-wire-row{display:grid;grid-template-columns:108px minmax(128px,176px) minmax(140px,232px) minmax(0,1fr) 72px;column-gap:var(--space-lg);align-items:center}.sys-broker-wire-head{padding:0 var(--space-md) var(--space-xs);border-left:2px solid transparent;border-bottom:1px solid var(--sys-hairline)}.sys-broker-wire-head .sys-broker-col{overflow:hidden;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-lg);text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap}.sys-broker-wire-head .sys-broker-col--time{text-align:right}.sys-broker-wire-body{display:flex;flex-direction:column}.sys-broker-day{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.sys-broker-day-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-lg);padding:0 var(--space-xs)}.sys-broker-day-head h2{margin:0;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:650;letter-spacing:var(--tracking-lg);text-transform:uppercase}.sys-broker-day-head span{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.sys-broker-wire-row{position:relative;box-sizing:border-box;width:100%;padding:var(--space-sm) var(--space-md);border-left:2px solid transparent;cursor:pointer;outline:none;transition:background .12s ease,border-color .12s ease}.sys-broker-wire-row:hover,.sys-broker-wire-row:focus-visible{z-index:3;background:var(--sys-row-hover)}.sys-broker-wire-row--selected{background:var(--sys-row-selected)}.sys-broker-wire-row--selected:before{position:absolute;inset:0 auto 0 0;width:2px;border-radius:0;background:var(--accent);content:""}.sys-broker-wire-row--failure:not(.sys-broker-wire-row--selected){background:color-mix(in srgb,var(--red) 3.2%,transparent)}.sys-broker-wire-row--failure:hover{background:color-mix(in srgb,var(--red) 6%,transparent)}.sys-broker-cell{display:flex;align-items:center;gap:var(--space-xs);min-width:0}.sys-broker-dot{flex:0 0 auto;width:7px;height:7px;border-radius:999px;background:var(--dim)}.sys-broker-dot--success{background:var(--green)}.sys-broker-dot--danger{background:var(--red)}.sys-broker-dot--working,.sys-broker-dot--warning{background:var(--amber)}.sys-broker-state{overflow:hidden;color:var(--muted);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap}.sys-broker-state--success{color:var(--dim)}.sys-broker-state--danger{color:var(--red);font-weight:560}.sys-broker-state--working,.sys-broker-state--warning{color:color-mix(in srgb,var(--amber) 86%,var(--ink))}.sys-broker-avatar{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:22px;height:22px;border:1px solid var(--sys-hairline);border-radius:var(--radius-md);background:var(--sys-well);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.02em}.sys-broker-from-name,.sys-broker-endpoint-name{overflow:hidden;color:var(--ink);font-size:var(--text-sm);font-weight:560;text-overflow:ellipsis;white-space:nowrap}.sys-broker-endpoint{position:relative;display:inline-flex;min-width:0;max-width:100%;align-items:center;gap:var(--space-xs);border-radius:var(--radius-sm);outline:none}.sys-broker-endpoint:focus-visible{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 28%,transparent)}.sys-broker-endpoint-avatar{width:22px;height:22px}.sys-broker-endpoint-avatar svg{width:12px;height:12px}.sys-broker-endpoint-card{position:absolute;z-index:40;top:calc(100% + 8px);left:-8px;display:none;width:min(320px,70vw);overflow:hidden;flex-direction:column;border:1px solid color-mix(in srgb,var(--ink) 12%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 96%,black 4%);box-shadow:0 22px 56px -18px #000000e0;color:var(--ink);pointer-events:none}.sys-broker-endpoint--to .sys-broker-endpoint-card{left:-34px}.sys-broker-endpoint:hover .sys-broker-endpoint-card,.sys-broker-endpoint:focus .sys-broker-endpoint-card,.sys-broker-endpoint:focus-within .sys-broker-endpoint-card{display:flex}.sys-broker-endpoint-card-head{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md);border-bottom:1px solid var(--sys-hairline);background:color-mix(in srgb,var(--ink) 2.5%,transparent)}.sys-broker-endpoint-card-head>span:last-child{display:flex;min-width:0;flex-direction:column;gap:2px}.sys-broker-endpoint-card-head strong{overflow:hidden;font-size:var(--text-sm);font-weight:620;text-overflow:ellipsis;white-space:nowrap}.sys-broker-endpoint-card-head small{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase}.sys-broker-endpoint-card-body{display:grid;grid-template-columns:78px minmax(0,1fr);gap:var(--space-xs) var(--space-md);padding:var(--space-md)}.sys-broker-endpoint-card-field{display:contents}.sys-broker-endpoint-card-field small{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase}.sys-broker-endpoint-card-field code{overflow:hidden;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}.sys-broker-route-arrow{flex:0 0 auto;color:var(--dim);opacity:.6}.sys-broker-to-glyph{display:inline-flex;flex:0 0 auto;color:var(--dim)}.sys-broker-to-id{overflow:hidden;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}.sys-broker-col--msg{gap:var(--space-sm)}.sys-broker-msg{overflow:hidden;color:var(--ink);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap}.sys-broker-msg-error{flex:0 0 auto;max-width:45%;overflow:hidden;color:color-mix(in srgb,var(--red) 78%,var(--muted));font-family:var(--font-mono);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}.sys-broker-col--time{flex-direction:column;align-items:flex-end;justify-content:center;gap:1px}.sys-broker-time-rel{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums}.sys-broker-time-abs{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-variant-numeric:tabular-nums}@media(max-width:760px){.sys-broker-wire-head{display:none}.sys-broker-wire-row{grid-template-columns:16px minmax(0,1fr) auto;grid-template-areas:"status from time" "status message message" "status to to";align-items:start;column-gap:var(--space-sm);row-gap:var(--space-3xs)}.sys-broker-col--status{grid-area:status;align-self:center}.sys-broker-col--status .sys-broker-state{display:none}.sys-broker-col--from{grid-area:from}.sys-broker-col--to{grid-area:to}.sys-broker-col--msg{grid-area:message}.sys-broker-col--time{grid-area:time;flex-direction:row;align-items:baseline;gap:var(--space-xs)}.sys-broker-time-abs,.sys-broker-route-arrow{display:none}.sys-broker-source-note>span:last-child{display:none}}@media(max-width:520px){.sys-broker-page .sys-ledger-actions .sys-sync-note{display:none}}.sys-broker-inspector{display:flex;width:100%;height:100%;min-height:0;flex-direction:column;overflow:hidden;border:0;border-radius:0;background:transparent;box-shadow:none;padding:0}.sys-broker-inspector-head{flex:0 0 auto;min-width:0;border-bottom:1px solid var(--sys-hairline)}.sys-broker-inspector-status{display:flex;align-items:center;gap:var(--space-sm);min-width:0;min-height:48px;padding:var(--space-sm) var(--space-lg)}.sys-broker-inspector-status .sys-broker-state{flex:0 0 auto;font-weight:560}.sys-broker-inspector-status>code{min-width:0;overflow:hidden;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}.sys-broker-inspector-copy{margin-left:auto}.sys-broker-inspector-close{flex:0 0 auto}.sys-broker-inspector-body{display:flex;min-height:0;flex:1;flex-direction:column;gap:var(--space-xl);overflow:auto;padding:var(--space-xl) var(--space-lg)}.sys-broker-inspector-body>*{flex:0 0 auto}.sys-broker-route-stack{display:flex;flex-direction:column;gap:var(--space-2xs)}.sys-broker-route-party{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:var(--space-sm);min-width:0}.sys-broker-route-avatar,.sys-broker-route-target-icon{width:30px;height:30px;border-radius:var(--radius-md)}.sys-broker-route-target-icon{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--sys-hairline);background:var(--sys-well);color:var(--muted)}.sys-broker-route-target-icon svg{width:14px;height:14px}.sys-broker-route-party-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.sys-broker-route-party-copy strong,.sys-broker-route-party-copy code{overflow:hidden;color:var(--ink);font-size:var(--text-sm);font-weight:540;line-height:var(--leading-snug);text-overflow:ellipsis;white-space:nowrap}.sys-broker-route-party-copy code{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400}.sys-broker-route-down{margin-left:7px;color:var(--dim)}.sys-broker-route-button{display:inline-flex;align-items:center;gap:var(--space-2xs);padding:3px 7px;border:1px solid var(--sys-hairline);border-radius:var(--radius-md);background:transparent;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase;cursor:pointer}.sys-broker-route-button:hover,.sys-broker-route-button:focus-visible{border-color:color-mix(in srgb,var(--accent) 32%,var(--sys-hairline));color:var(--ink);outline:none}.sys-broker-delivery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:hidden;margin:0;border:1px solid var(--sys-hairline);border-radius:var(--radius-lg)}.sys-broker-delivery-grid>div{min-width:0;padding:var(--space-sm) var(--space-md)}.sys-broker-delivery-grid>div:nth-child(odd){border-right:1px solid var(--sys-hairline)}.sys-broker-delivery-grid>div:nth-child(-n+2){border-bottom:1px solid var(--sys-hairline)}.sys-broker-delivery-grid dt{margin-bottom:3px;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:650;letter-spacing:var(--tracking-md);text-transform:uppercase}.sys-broker-delivery-grid dd{margin:0;overflow:hidden;color:var(--ink);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.sys-broker-delivery-grid .sys-broker-delivery-accent{color:var(--green)}.sys-broker-payload{display:flex;flex-direction:column;gap:var(--space-sm)}.sys-broker-route-failure{display:grid;grid-template-columns:28px minmax(0,1fr) 28px;align-items:start;gap:var(--space-md);padding:var(--space-lg);border:1px solid color-mix(in srgb,var(--red) 28%,var(--sys-hairline));border-radius:var(--radius-lg);background:color-mix(in srgb,var(--red) 6%,var(--sys-well))}.sys-broker-route-failure-mark{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:color-mix(in srgb,var(--red) 12%,transparent);color:var(--red)}.sys-broker-route-failure>div{display:flex;min-width:0;flex-direction:column;gap:3px}.sys-broker-route-failure strong{color:var(--ink);font-size:var(--text-sm);font-weight:620}.sys-broker-route-failure p{margin:2px 0 0;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-snug);overflow-wrap:anywhere}.sys-broker-payload-head,.sys-broker-payload-dialog-head,.sys-broker-payload-dialog-head>div{display:flex;align-items:center;gap:var(--space-sm);min-width:0}.sys-broker-payload-head>.sys-detail-label,.sys-broker-payload-dialog-head>div{flex:1}.sys-broker-payload-meta{overflow:hidden;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.sys-broker-payload-resizer{box-sizing:border-box;width:100%;height:clamp(220px,34vh,420px);min-height:160px;max-height:min(72vh,760px);resize:vertical;overflow:hidden;border:1px solid var(--sys-hairline);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg) 92%,black)}.sys-broker-payload-code,.sys-broker-payload-code .s-code-shiki{width:100%;height:100%;min-width:0;min-height:0}.sys-broker-payload-code{overflow:hidden;color:var(--ink);outline:none}.sys-broker-payload-code:focus-visible{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 52%,transparent)}.sys-broker-payload-code .s-code-shiki{overflow:auto}.sys-broker-payload-code .s-code-shiki pre{min-width:max-content;margin:0;padding:var(--space-lg) var(--space-xl) var(--space-3xl);background:transparent!important;color:var(--ink);font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.65;tab-size:2}.sys-broker-payload-code .s-code-shiki code{display:block}.sys-broker-payload-code .s-code-shiki .line{display:inline-block;min-width:100%}.sys-broker-payload-code[data-language=markdown] .s-code-shiki pre{min-width:0;white-space:pre-wrap;overflow-wrap:anywhere}.sys-broker-payload-code[data-language=markdown] .s-code-shiki .line{display:inline;min-width:0}.sys-broker-payload-code .s-code-shiki .shiki span{color:var(--shiki-dark);font-style:var(--shiki-dark-font-style, normal);font-weight:var(--shiki-dark-font-weight, inherit)}[data-scout-theme-mode=light] .sys-broker-payload-code .s-code-shiki .shiki span{color:var(--shiki-light);font-style:var(--shiki-light-font-style, normal);font-weight:var(--shiki-light-font-weight, inherit)}.sys-broker-payload-code .s-code-shiki .shiki ::selection{background:color-mix(in srgb,var(--accent) 20%,transparent)}.sys-broker-payload-expand{flex:0 0 auto}.sys-broker-payload-dialog{box-sizing:border-box;inset:0;width:min(1360px,calc(100vw - 48px));height:calc(100vh - 48px);max-width:none;max-height:none;margin:auto;padding:0;overflow:hidden;border:1px solid color-mix(in srgb,var(--accent) 24%,var(--sys-hairline));border-radius:var(--radius-xl);background:var(--bg);color:var(--ink);box-shadow:0 28px 90px #00000094}.sys-broker-payload-dialog::backdrop{background:color-mix(in srgb,black 70%,transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.sys-broker-payload-dialog-head{min-height:48px;padding:0 var(--space-lg);border-bottom:1px solid var(--sys-hairline);background:color-mix(in srgb,var(--surface) 92%,transparent)}.sys-broker-payload-dialog-body{height:calc(100% - 49px);min-height:0;background:color-mix(in srgb,var(--bg) 94%,black)}.sys-broker-payload-dialog-body .sys-broker-payload-code .s-code-shiki pre{padding:var(--space-3xl) var(--space-4xl);font-size:var(--text-sm);line-height:1.7}.sys-broker-inspector-error{display:flex;align-items:baseline;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-md);background:color-mix(in srgb,var(--red) 10%,transparent)}.sys-broker-inspector-error-label{color:var(--red);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;text-transform:uppercase}.sys-broker-inspector-error p{margin:0;color:var(--ink);font-size:var(--text-sm);line-height:var(--leading-snug);overflow-wrap:anywhere}.sys-broker-actions{display:flex;flex-direction:column}.sys-broker-action-row{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) var(--space-2xs)}.sys-broker-action-row+.sys-broker-action-row{border-top:1px solid var(--sys-hairline)}.sys-broker-action-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.sys-broker-action-label{margin-right:auto;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:650;letter-spacing:var(--tracking-md);text-transform:uppercase}.sys-broker-redispatch-controls{display:grid;flex:1 1 240px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-sm);min-width:0}.sys-broker-redispatch-controls select{box-sizing:border-box;width:100%;min-width:0;height:34px;padding:0 30px 0 var(--space-sm);border:1px solid var(--sys-hairline);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 90%,transparent);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-xs);outline:none}.sys-broker-redispatch-controls select:focus-visible{border-color:color-mix(in srgb,var(--accent) 42%,var(--sys-hairline));box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 8%,transparent)}.sys-broker-redispatch-send{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-width:104px;height:34px;padding:0 var(--space-md);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--sys-hairline));border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--ink);font-size:var(--text-xs);font-weight:600;cursor:pointer}.sys-broker-redispatch-send:hover:not(:disabled),.sys-broker-redispatch-send:focus-visible{border-color:color-mix(in srgb,var(--accent) 55%,var(--sys-hairline));background:color-mix(in srgb,var(--accent) 16%,transparent);outline:none}.sys-broker-redispatch-send:disabled{cursor:default;opacity:.45}.sys-broker-report-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-height:34px;padding:0 var(--space-md);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--sys-hairline));border-radius:var(--radius-md);background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--ink);font-size:var(--text-xs);font-weight:600;cursor:pointer}.sys-broker-report-button:hover:not(:disabled),.sys-broker-report-button:focus-visible{border-color:color-mix(in srgb,var(--accent) 55%,var(--sys-hairline));background:color-mix(in srgb,var(--accent) 16%,transparent);outline:none}.sys-broker-report-button:disabled{cursor:default;opacity:.45}.sys-broker-action-target-meta{display:flex;min-width:0;flex-wrap:wrap;align-items:center;gap:var(--space-xs)}.sys-broker-action-target-meta span,.sys-broker-action-target-meta code{overflow:hidden;padding:3px 6px;border-radius:var(--radius-sm);background:var(--sys-well);color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);text-overflow:ellipsis;white-space:nowrap}.sys-broker-action-target-meta code{max-width:100%}.sys-broker-action-status{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);line-height:var(--leading-snug)}.sys-broker-action-status--sent{color:var(--green)}.sys-broker-action-status--failed{color:var(--red)}.sys-broker-action-spinner{animation:sys-broker-source-spin .8s linear infinite}.sys-broker-forward-intro{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) var(--space-lg) var(--space-sm)}.sys-broker-forward{display:flex;flex:0 0 auto;flex-direction:column;padding:0;border-top:1px solid var(--sys-hairline);background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 1.5%,transparent),transparent 50%),color-mix(in srgb,var(--surface) 95%,transparent);box-shadow:0 -20px 48px -42px #000000e6;-webkit-backdrop-filter:blur(18px) saturate(130%);backdrop-filter:blur(18px) saturate(130%)}.sys-broker-forward-head{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-lg) 0}.sys-broker-forward #dispatch-forward-content{min-width:0}.sys-broker-forward .sys-broker-message-composer{border:0;border-top:1px solid var(--sys-hairline);border-radius:0;background:transparent;box-shadow:none}.sys-broker-forward .sys-broker-message-composer:focus-within{border-color:transparent;box-shadow:0 -1px color-mix(in srgb,var(--accent) 26%,transparent)}.sys-broker-forward .sys-broker-message-composer textarea{min-height:76px;max-height:180px;padding:var(--space-xs) var(--space-lg) var(--space-sm)}.sys-broker-forward>.sys-broker-action-status{padding:0 var(--space-lg) var(--space-sm)}.sys-broker-ask-prompts{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.sys-broker-ask-prompts button{display:inline-flex;align-items:center;gap:var(--space-2xs);padding:5px 9px;border:1px solid var(--sys-hairline);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 45%,transparent);color:var(--muted);font-size:var(--text-xs);cursor:pointer}.sys-broker-ask-prompts button:hover,.sys-broker-ask-prompts button:focus-visible{border-color:color-mix(in srgb,var(--accent) 34%,var(--sys-hairline));background:var(--sys-row-hover);color:var(--ink);outline:none}.sys-broker-ask-prompts button:disabled{cursor:wait;opacity:.55}.sys-broker-message-composer{display:flex;flex-direction:column;overflow:hidden;border:1px solid color-mix(in srgb,var(--ink) 11%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 92%,transparent);box-shadow:0 1px color-mix(in srgb,white 4%,transparent) inset,0 12px 32px -26px #000000e6;transition:border-color .14s ease,box-shadow .14s ease}.sys-broker-message-composer:focus-within{border-color:color-mix(in srgb,var(--accent) 42%,var(--sys-hairline));box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 8%,transparent),0 16px 34px -26px #000000f2}.sys-broker-message-composer>label{padding:var(--space-sm) var(--space-lg) 0;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:650;letter-spacing:var(--tracking-md);text-transform:uppercase}.sys-broker-message-composer textarea{box-sizing:border-box;width:100%;min-height:76px;max-height:180px;resize:vertical;padding:var(--space-md) var(--space-md) var(--space-sm);border:0;background:transparent;color:var(--ink);font-family:var(--font-sans);font-size:var(--text-sm);line-height:1.5;outline:none}.sys-broker-message-composer textarea::placeholder{color:var(--dim)}.sys-broker-message-composer footer{display:flex;align-items:center;gap:var(--space-xs);min-height:40px;padding:0 var(--space-md) var(--space-md)}.sys-broker-composer-left,.sys-broker-composer-targets{display:flex;min-width:0;align-items:center;gap:var(--space-xs)}.sys-broker-composer-left{flex:0 1 auto}.sys-broker-composer-targets{margin-left:auto;overflow:hidden;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs)}.sys-broker-composer-route-label{flex:0 0 auto;color:var(--dim);font-weight:650;letter-spacing:var(--tracking-md);text-transform:uppercase}.sys-broker-composer-targets>label{display:inline-flex;min-width:0}.sys-broker-composer-targets>label>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.sys-broker-composer-targets select{max-width:74px;height:28px;padding:0 14px 0 2px;overflow:hidden;border:0;background:transparent;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);text-overflow:ellipsis;outline:none}.sys-broker-composer-targets label:nth-of-type(1) select{max-width:70px}.sys-broker-composer-targets label:nth-of-type(2) select{max-width:68px;color:var(--ink)}.sys-broker-composer-targets label:nth-of-type(3) select{max-width:82px}.sys-broker-composer-targets label:nth-of-type(4) select{max-width:66px}.sys-broker-composer-targets select:hover,.sys-broker-composer-targets select:focus-visible{color:var(--ink)}.sys-broker-composer-attach{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid var(--sys-hairline);border-radius:var(--radius-md);background:transparent;color:var(--muted);cursor:pointer}.sys-broker-composer-attach:hover:not(:disabled),.sys-broker-composer-attach:focus-visible{border-color:color-mix(in srgb,var(--accent) 32%,var(--sys-hairline));color:var(--ink);outline:none}.sys-broker-message-attachment{display:inline-flex;min-width:0;align-items:center;gap:var(--space-2xs);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase}.sys-broker-message-hint{margin-left:auto;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs)}.sys-broker-composer-mic.s-dictation-mic{align-self:center;width:32px;height:32px;border-radius:var(--radius-md)}.sys-broker-composer-send{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:10px;background:var(--accent);color:var(--bg);cursor:pointer;transition:filter .12s ease,opacity .12s ease,transform .12s ease}.sys-broker-composer-send:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}.sys-broker-composer-send:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 65%,white);outline-offset:2px}.sys-broker-composer-send:disabled,.sys-broker-composer-attach:disabled{cursor:default;opacity:.28}.sys-broker-composer-attachments{display:flex;min-width:0;flex-wrap:wrap;gap:var(--space-xs);padding:0 var(--space-lg) var(--space-sm)}.sys-broker-composer-attachments>span{display:inline-flex;min-width:0;max-width:180px;align-items:center;gap:4px;padding:4px 5px 4px 7px;border:1px solid var(--sys-hairline);border-radius:var(--radius-md);background:var(--sys-well);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs)}.sys-broker-composer-attachments>span>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sys-broker-composer-attachments button{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--dim);cursor:pointer}.sys-broker-composer-attachments button:hover{background:var(--sys-row-hover);color:var(--ink)}@media(max-width:620px){.sys-broker-message-attachment{display:none}.sys-broker-composer-targets{gap:2px}.sys-broker-composer-targets>span{display:none}}.sys-broker-technical{border-top:1px solid var(--sys-hairline)}.sys-broker-technical>summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-md) 0;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-md);text-transform:uppercase;cursor:pointer;list-style:none}.sys-broker-technical>summary::-webkit-details-marker{display:none}.sys-broker-technical>summary svg{transition:transform .14s ease}.sys-broker-technical[open]>summary svg{transform:rotate(180deg)}.sys-broker-inspector-rows{display:flex;min-width:0;flex-direction:column;padding:var(--space-xs) 0;border-radius:var(--radius-lg);background:var(--sys-well)}.sys-broker-inspector-row{display:grid;grid-template-columns:minmax(88px,110px) minmax(0,1fr) 20px;gap:var(--space-sm);align-items:start;padding:var(--space-2xs) var(--space-sm) var(--space-2xs) var(--space-md)}.sys-broker-inspector-row .sys-detail-value{font-family:var(--font-mono);font-size:var(--text-xs)}.sys-broker-inspector-row .sys-copy-btn{width:20px;height:20px;opacity:0}.sys-broker-inspector-row:hover .sys-copy-btn,.sys-broker-inspector-row .sys-copy-btn:focus-visible,.sys-broker-inspector-row .sys-copy-btn--copied,.sys-broker-inspector-row .sys-copy-btn--failed{opacity:1}.sys-broker-technical .sys-broker-metadata{margin-top:var(--space-lg)}.sys-broker-review-status{border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-sm) var(--space-md);color:var(--muted);background:color-mix(in srgb,var(--surface) 88%,transparent);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-snug);overflow-wrap:anywhere}.sys-broker-review-status--sent{border-color:color-mix(in srgb,var(--green) 36%,var(--border));color:color-mix(in srgb,var(--green) 78%,var(--ink));background:color-mix(in srgb,var(--green) 9%,transparent)}.sys-broker-review-status--failed{border-color:color-mix(in srgb,var(--red) 36%,var(--border));color:color-mix(in srgb,var(--red) 78%,var(--ink));background:color-mix(in srgb,var(--red) 9%,transparent)}.sys-broker-metadata{display:flex;min-width:0;flex-direction:column;gap:var(--space-sm)}.sys-broker-metadata-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.sys-broker-metadata-copy{border:1px solid var(--sys-hairline);background:color-mix(in srgb,var(--surface) 92%,transparent)}.sys-broker-metadata-panel{display:flex;flex-direction:column;gap:var(--space-lg);min-width:0}.sys-broker-metadata-section{display:flex;flex-direction:column;gap:var(--space-sm);min-width:0}.sys-broker-metadata-section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm)}.sys-broker-metadata-tree,.sys-broker-metadata-children{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.sys-broker-metadata-group-toggle,.sys-broker-metadata-raw-toggle{display:inline-flex;align-items:center;gap:var(--space-xs);border:0;background:transparent;color:var(--muted);padding:0;font-family:var(--font-mono);font-size:var(--text-xs);cursor:pointer}.sys-broker-metadata-group-label,.sys-broker-metadata-raw-toggle{color:var(--ink)}.sys-broker-metadata-count{color:var(--dim)}.sys-broker-metadata-row{display:grid;grid-template-columns:minmax(88px,.35fr) minmax(0,1fr);gap:var(--space-sm);align-items:start;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-md);background:var(--sys-well)}.sys-broker-metadata-key{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);overflow-wrap:anywhere}.sys-broker-metadata-value{color:var(--ink);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-snug);overflow-wrap:anywhere;white-space:pre-wrap}.sys-broker-metadata-empty{color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-snug)}.sys-broker-metadata-raw,.sys-broker-metadata pre{margin:0;max-height:360px;overflow:auto;border-radius:var(--radius-lg);border:1px solid var(--sys-hairline);background:var(--sys-well);color:var(--ink);padding:var(--space-lg);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading-snug);white-space:pre}.sys-broker-right-empty{display:flex;height:100%;min-height:180px;flex-direction:column;justify-content:center;gap:var(--space-sm);padding:var(--space-3xl);color:var(--muted);font-size:var(--text-md);line-height:var(--leading-snug)}.sys-state-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-sm)}.sys-state-card-error{background:color-mix(in srgb,var(--red) 4%,var(--surface));border-color:color-mix(in srgb,var(--red) 16%,transparent)}.sys-state-title{font-size:var(--text-2xl);font-weight:600;color:var(--ink)}.sys-state-body{max-width:520px;font-size:var(--text-md);color:var(--muted)}.sys-inline-actions{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.sys-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2xl)}.sys-detail-card{display:flex;flex-direction:column;gap:var(--space-2xs);min-width:0;border-radius:var(--radius-lg);border:none;background:var(--sys-well);padding:var(--space-md) var(--space-lg)}.sys-detail-label{font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--dim)}.sys-detail-value{min-width:0;font-size:var(--text-md);line-height:var(--leading-snug);color:var(--ink);overflow-wrap:anywhere}.sys-code-inline{display:inline-flex;align-items:center;padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-md);background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink);font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:-.01em}.sys-list-empty{border:1px dashed color-mix(in srgb,var(--ink) 8%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg) 70%,transparent);padding:var(--space-3xl);font-family:var(--font-accent-title);font-style:italic;opacity:.5;font-size:var(--text-xl)}.sys-list-empty h3{font-size:var(--text-xl);font-weight:600;color:var(--ink)}.sys-list-empty p{margin-top:var(--space-xs);font-size:var(--text-lg);color:var(--muted)}.sys-list-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.sys-list-card{display:flex;flex-direction:column;gap:var(--space-sm);min-width:0;border-radius:var(--radius-lg);border:none;background:color-mix(in srgb,var(--bg) 80%,transparent);padding:var(--space-xl)}.sys-list-card-head{display:flex;justify-content:space-between;gap:var(--space-lg);align-items:flex-start}.sys-list-card-title{min-width:0;font-size:var(--text-lg);font-weight:700;color:var(--ink);overflow-wrap:anywhere}.sys-list-card-detail{display:flex;flex-direction:column;gap:var(--space-2xs);min-width:0}.agent-config-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-lg)}.agent-config-list{display:flex;flex-direction:column;gap:var(--space-xs)}.agent-config-list-scroll{max-height:520px;overflow-y:auto;padding-right:var(--space-3xs)}.agent-config-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-lg);width:100%;min-width:0;border:1px solid color-mix(in srgb,var(--ink) 5%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg) 78%,transparent);padding:var(--space-lg) var(--space-lg);color:var(--ink);text-align:left}.agent-config-row-button{cursor:pointer}.agent-config-row-button:hover,.agent-config-row-selected{border-color:color-mix(in srgb,var(--accent) 20%,transparent);background:color-mix(in srgb,var(--accent) 5%,var(--bg))}.agent-config-row-main{display:flex;align-items:flex-start;gap:var(--space-md);min-width:0}.agent-config-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:0 0 auto;border-radius:var(--radius-lg);background:color-mix(in srgb,var(--ink) 5%,transparent);color:var(--muted)}.agent-config-row-copy{min-width:0}.agent-config-row-title{color:var(--ink);font-size:var(--text-lg);font-weight:700;overflow-wrap:anywhere}.agent-config-row-detail,.agent-config-row-meta,.agent-config-copy{color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-snug);overflow-wrap:anywhere}.agent-config-code{display:inline-flex;max-width:100%;margin:var(--space-2xs) 0;border-radius:var(--radius-md);background:color-mix(in srgb,var(--ink) 5%,transparent);color:var(--ink);padding:var(--space-2xs) var(--space-xs);font-size:var(--text-sm);line-height:var(--leading-tight);overflow-wrap:anywhere;white-space:normal}.agent-config-link{color:var(--accent);font-size:var(--text-sm);font-weight:700;text-decoration:none}.agent-config-link:hover{text-decoration:underline}.agent-config-row-side{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-xs);max-width:42%;min-width:0}.agent-config-detail-panel{display:flex;flex-direction:column;gap:var(--space-xl)}.agent-config-detail-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-md)}.agent-config-detail-grid>div{display:flex;flex-direction:column;gap:var(--space-2xs);min-width:0;border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg) 78%,transparent);padding:var(--space-md);font-size:var(--text-md);color:var(--ink);overflow-wrap:anywhere}.agent-config-detail-grid strong,.agent-config-detail-grid code,.agent-config-selectable,.agent-config-inline-code{user-select:text;-webkit-user-select:text;cursor:text}.agent-config-detail-wide{grid-column:span 2}.agent-config-label{color:var(--dim);font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-md);text-transform:uppercase}.agent-config-chip-row,.agent-config-gap-list{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-lg)}.agent-config-edit{display:flex;flex-direction:column;gap:var(--space-lg);border:1px solid color-mix(in srgb,var(--ink) 6%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg) 78%,transparent);padding:var(--space-lg)}.agent-config-edit-empty{color:var(--muted);font-size:var(--text-sm)}.agent-config-edit-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(120px,.6fr);gap:var(--space-md)}.agent-config-field{display:flex;flex-direction:column;gap:var(--space-2xs);min-width:0}.agent-config-field-wide{grid-column:1 / -1}.agent-config-field span,.agent-config-check span{color:var(--dim);font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-md);text-transform:uppercase}.agent-config-field input,.agent-config-field select{width:100%;min-width:0;border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 94%,transparent);color:var(--ink);padding:var(--space-sm) var(--space-md);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading-snug)}.agent-config-field input:focus,.agent-config-field select:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:2px;border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.agent-config-field input:disabled,.agent-config-field select:disabled{opacity:.58;cursor:not-allowed}.agent-config-check{display:inline-flex;align-items:center;gap:var(--space-xs);min-width:0}.agent-config-check input{width:14px;height:14px;accent-color:var(--accent)}.agent-config-save-row{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.agent-config-save-note,.agent-config-save-error{font-size:var(--text-sm);line-height:var(--leading-snug)}.agent-config-save-note{color:var(--muted)}.agent-config-save-error{color:var(--red)}.agent-config-gap-list span{border-radius:var(--radius-lg);background:color-mix(in srgb,var(--amber) 10%,transparent);color:var(--ink);padding:var(--space-sm) var(--space-md);font-size:var(--text-sm)}.sys-audit-list{display:flex;flex-direction:column;gap:var(--space-3xs)}.sys-audit-entry{position:relative;border:1px solid color-mix(in srgb,var(--ink) 5%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 97%,transparent);box-shadow:none}.sys-audit-entry-expanded{border-color:color-mix(in srgb,var(--accent) 14%,transparent);background:color-mix(in srgb,var(--accent) 1.5%,var(--surface));box-shadow:none}.sys-audit-toggle{display:grid;grid-template-columns:76px 16px minmax(0,1fr) auto;align-items:flex-start;gap:var(--space-md);width:100%;padding:var(--space-md) var(--space-xl);border:0;background:transparent;color:inherit;cursor:pointer;text-align:left}.sys-audit-toggle:hover{background:color-mix(in srgb,var(--accent) 2%,transparent)}.sys-audit-stamp{display:flex;flex-direction:column;gap:var(--space-3xs);padding-top:var(--space-3xs)}.sys-audit-time{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600;color:var(--ink)}.sys-audit-date{font-size:var(--text-2xs);color:color-mix(in srgb,var(--dim) 70%,transparent);letter-spacing:.01em}.sys-audit-marker{position:relative;display:flex;justify-content:center;min-height:100%}.sys-audit-marker:before{content:"";position:absolute;top:12px;bottom:-14px;width:1px;background:color-mix(in srgb,var(--ink) 6%,transparent)}.sys-audit-entry:last-child .sys-audit-marker:before{display:none}.sys-audit-marker span{position:relative;z-index:1;width:7px;height:7px;border-radius:var(--radius-pill);margin-top:var(--space-xs);border:2px solid var(--surface);box-shadow:none}.sys-audit-marker-notice span{background:var(--amber)}.sys-audit-marker-working span{background:var(--accent)}.sys-audit-marker-completed span{background:var(--green)}.sys-audit-marker-failed span{background:var(--red)}.sys-audit-body{display:flex;flex-direction:column;gap:var(--space-2xs);min-width:0}.sys-audit-topline{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center}.sys-audit-category{display:inline-flex;align-items:center;padding:var(--space-3xs) var(--space-sm);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--ink) 5%,transparent);font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--dim);line-height:var(--leading-none)}.sys-audit-kind{font-size:var(--text-sm);color:var(--muted)}.sys-audit-title{font-size:var(--text-lg);font-weight:500;line-height:var(--leading-snug);color:var(--ink)}.sys-audit-summary{font-size:var(--text-md);line-height:var(--leading-normal);color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.sys-audit-meta{display:flex;flex-wrap:wrap;gap:var(--space-2xs) var(--space-lg);margin-top:var(--space-3xs)}.sys-audit-meta-item{display:inline-flex;align-items:center;gap:var(--space-2xs);min-width:0;font-size:var(--text-sm);color:var(--muted)}.sys-audit-meta-item+.sys-audit-meta-item:before{content:"";display:inline-block;width:3px;height:3px;border-radius:50%;background:color-mix(in srgb,var(--dim) 50%,transparent);margin-right:var(--space-2xs);flex-shrink:0}.sys-audit-avatar{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:var(--radius-pill);color:var(--bg);font-size:var(--text-2xs);font-weight:700}.sys-audit-expand{font-size:var(--text-xs);font-weight:600;color:var(--muted);padding-top:var(--space-2xs);white-space:nowrap;opacity:1;transition:color .12s ease}.sys-audit-toggle:hover .sys-audit-expand{opacity:1;color:var(--accent)}.sys-audit-jumps{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);margin-top:var(--space-2xs)}.sys-audit-jumps-label{font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--tracking-md);text-transform:uppercase;color:color-mix(in srgb,var(--dim) 80%,transparent);margin-right:var(--space-3xs)}.sys-audit-jump{display:inline-flex;align-items:center;padding:var(--space-3xs) var(--space-sm);border-radius:var(--radius-md);border:1px solid color-mix(in srgb,var(--ink) 9%,transparent);background:color-mix(in srgb,var(--surface) 94%,transparent);font-family:inherit;font-size:var(--text-sm);font-weight:600;color:var(--muted);cursor:pointer;line-height:var(--leading-normal);transition:color .12s ease,border-color .12s ease,background .12s ease}.sys-audit-jump:hover,.sys-audit-jump:focus-visible{border-color:color-mix(in srgb,var(--accent) 32%,transparent);background:color-mix(in srgb,var(--accent) 5%,transparent);color:var(--accent);outline:none}.sys-audit-details{display:flex;flex-direction:column;gap:var(--space-lg);padding:0 var(--space-xl) var(--space-xl) 116px}.sys-issue-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--space-sm)}.sys-issue-card{display:flex;flex-direction:column;gap:var(--space-sm);border-radius:var(--radius-lg);border:1px solid color-mix(in srgb,var(--ink) 5%,transparent);background:color-mix(in srgb,var(--surface) 92%,transparent);padding:var(--space-xl)}.sys-issue-card-notice{border-color:color-mix(in srgb,var(--amber) 16%,transparent);background:color-mix(in srgb,var(--amber) 4%,var(--surface))}.sys-issue-card-warning{border-color:color-mix(in srgb,var(--amber) 16%,transparent);background:color-mix(in srgb,var(--amber) 5%,var(--surface))}.sys-issue-card-error{border-color:color-mix(in srgb,var(--red) 12%,transparent);background:color-mix(in srgb,var(--red) 3%,var(--surface))}.sys-issue-head{display:flex;justify-content:space-between;gap:var(--space-md);align-items:flex-start}.sys-issue-title{font-size:var(--text-lg);font-weight:600;color:var(--ink)}.sys-issue-body{font-size:var(--text-md);color:var(--muted)}.sys-issue-action{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm);font-size:var(--text-sm);color:var(--ink)}.sys-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-xl);align-items:start}.sys-settings-page{max-width:960px!important}.sys-settings-hero{display:flex;gap:var(--space-3xl);align-items:flex-start}.sys-settings-qr-col{flex-shrink:0}.sys-settings-qr-frame{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);border:1px solid color-mix(in srgb,var(--ink) 6%,transparent);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 96%,transparent);padding:var(--space-2xl)}.sys-settings-qr-frame .s-qr{width:180px;height:180px;border:none;padding:0;background:transparent;border-radius:var(--radius-lg);overflow:hidden}.sys-settings-qr-frame .s-qr svg{width:100%;height:100%}.sys-settings-qr-expires{font-size:var(--text-sm);font-weight:600;color:var(--muted)}.sys-settings-qr-empty{display:flex;align-items:center;justify-content:center;width:212px;height:212px;border:1px dashed color-mix(in srgb,var(--ink) 8%,transparent);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--bg) 70%,transparent)}.sys-settings-qr-empty-label{font-size:var(--text-md);color:var(--dim);text-align:center;padding:var(--space-2xl)}.sys-settings-info-col{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--space-xl)}.sys-settings-kv-list{display:flex;flex-direction:column;gap:var(--space-xs)}.sys-settings-kv{display:flex;align-items:center;gap:var(--space-md);min-height:28px;border-bottom:1px solid color-mix(in srgb,var(--ink) 4%,transparent)}.sys-settings-kv:last-child{border-bottom:none}.sys-settings-kv-label{flex-shrink:0;width:96px;font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--dim)}.sys-settings-kv-value{display:flex;align-items:center;gap:var(--space-xs);min-width:0;font-size:var(--text-md);color:var(--ink)}.sys-settings-kv-value code{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sys-settings-link{min-width:0;color:inherit;text-decoration:none}.sys-settings-link:hover code{color:var(--accent)}.sys-settings-link-list{flex-wrap:wrap;gap:var(--space-sm)}.sys-settings-route-link{display:inline-flex;align-items:center;gap:2px;min-width:0}.sys-settings-kv-nowrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sys-settings-kv .sys-chip{margin:0}.sys-copy-btn{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;color:var(--dim);border-radius:var(--radius-sm);cursor:pointer;flex-shrink:0;transition:color .12s ease,background .12s ease}.sys-copy-btn:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 5%,transparent)}.sys-copy-btn--copied{color:var(--green);background:color-mix(in srgb,var(--green) 10%,transparent)}.sys-copy-btn--failed{color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent)}.sys-settings-controls{margin-top:var(--space-3xs)}.sys-settings-controls .s-btn:last-child{color:var(--red);border-color:color-mix(in srgb,var(--red) 25%,transparent)}.sys-settings-peers{border:1px solid color-mix(in srgb,var(--ink) 6%,transparent);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 96%,transparent);padding:var(--space-2xl)}.sys-peers-table{width:100%;border-collapse:collapse;font-size:var(--text-md)}.sys-peers-table th{text-align:left;font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--dim);padding:var(--space-xs) var(--space-md);border-bottom:1px solid color-mix(in srgb,var(--ink) 6%,transparent)}.sys-peers-table th:last-child{text-align:right;width:72px}.sys-peers-table td{padding:var(--space-md);color:var(--ink);border-bottom:1px solid color-mix(in srgb,var(--ink) 3%,transparent);vertical-align:middle}.sys-peers-table tr:last-child td{border-bottom:none}.sys-peers-row-connected td{background:color-mix(in srgb,var(--green) 3%,transparent)}.sys-peers-name{display:flex;align-items:center;gap:var(--space-sm);font-weight:600}.sys-peers-badge{font-size:var(--text-2xs);padding:var(--space-3xs) var(--space-xs)}.sys-peers-fp{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--muted);max-width:200px;overflow:hidden;text-overflow:ellipsis;display:inline-block;vertical-align:middle}.sys-peers-remove{border:none;background:transparent;font-size:var(--text-sm);font-weight:500;color:var(--dim);cursor:pointer;padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-sm);transition:color .12s ease,background .12s ease;float:right}.sys-peers-remove:hover{color:var(--red, #dc2626);background:color-mix(in srgb,var(--red, #dc2626) 6%,transparent)}.sys-peers-remove:disabled{opacity:.5;cursor:default}.sys-input-row{display:flex;align-items:center;gap:var(--space-md)}.sys-input{width:100%;min-width:0;height:38px;border-radius:var(--radius-lg);border:1px solid color-mix(in srgb,var(--ink) 10%,transparent);background:var(--surface);padding:0 var(--space-lg);font-family:var(--font-sans);font-size:var(--text-lg);color:var(--ink)}.sys-input:focus{outline:none;border-color:color-mix(in srgb,var(--accent) 50%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}.sys-input-row .s-btn{border-radius:var(--radius-lg)}.sys-qr-stage{margin-bottom:var(--space-lg)}.sys-qr-block{display:flex;flex-direction:column;gap:var(--space-xl);align-items:center;min-width:0;border-radius:var(--radius-xl);border:1px solid color-mix(in srgb,var(--ink) 8%,transparent);background:var(--bg);padding:var(--space-2xl);text-align:center}.sys-qr-meta{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);min-width:0}.sys-qr-meta h4{font-size:var(--text-xl);font-weight:600;color:var(--ink)}.sys-qr-meta p{font-size:var(--text-md);color:var(--muted)}.sys-trust-list{display:flex;flex-direction:column;gap:var(--space-sm)}.sys-trust-row{display:flex;flex-direction:column;gap:var(--space-sm);border-radius:var(--radius-lg);border:none;background:color-mix(in srgb,var(--bg) 80%,transparent);padding:var(--space-xl)}.sys-trust-main{display:flex;flex-direction:column;gap:var(--space-sm)}.sys-trust-meta{display:flex;justify-content:space-between;gap:var(--space-lg);flex-wrap:wrap;font-size:var(--text-sm);color:var(--muted)}@media(max-width:1024px){.sys-settings-grid,.sys-list-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:780px){.sys-settings-hero{flex-direction:column;align-items:stretch}.sys-settings-qr-col{align-self:center}.sys-settings-qr-empty{width:100%;height:120px}.sys-peers-table th:nth-child(3),.sys-peers-table td:nth-child(3){display:none}.sys-surface-page{padding:var(--space-3xl) var(--space-2xl) var(--space-5xl)}.sys-page-head,.sys-page-actions{flex-direction:column;align-items:flex-start}.sys-page-actions{justify-content:flex-start}.sys-settings-grid,.sys-list-grid,.agent-config-layout,.agent-config-detail-grid,.agent-config-edit-grid{grid-template-columns:minmax(0,1fr)}.agent-config-detail-wide{grid-column:auto}.sys-audit-toggle{grid-template-columns:60px 16px minmax(0,1fr) auto}.sys-audit-details{padding:0 var(--space-xl) var(--space-xl) 96px}.sys-qr-block{grid-template-columns:minmax(0,1fr);justify-items:center;text-align:center}.sys-trust-meta{flex-direction:column}}@media(max-width:560px){.sys-stat-grid,.sys-detail-grid,.sys-issue-grid{grid-template-columns:minmax(0,1fr)}.sys-section-head{flex-direction:column;align-items:flex-start}.agent-config-row{flex-direction:column}.agent-config-row-side{align-items:flex-start;max-width:none}.sys-audit-toggle{grid-template-columns:minmax(0,1fr);gap:var(--space-xs)}.sys-audit-stamp{flex-direction:row;align-items:center;gap:var(--space-sm);padding-top:0}.sys-audit-expand{padding-top:0}.sys-audit-marker{display:none}.sys-audit-details{padding:0 var(--space-xl) var(--space-xl)}.sys-peers-table th:nth-child(4),.sys-peers-table td:nth-child(4){display:none}.sys-settings-kv-label{width:64px;font-size:var(--text-2xs)}}.s-ops--embedded{display:flex;height:100vh;min-height:0;flex-direction:column}.s-ops--embedded>.s-ops-body{position:relative;display:flex;flex:1;min-height:0;flex-direction:column;overflow:hidden}.s-ops--embedded.s-ops--split>.s-ops-body{flex-direction:row}.s-ops--embedded.s-ops--split>.s-ops-body>.sys-broker-page{flex:1 1 auto;min-width:0}.s-broker-embed-detail{display:flex;flex:0 0 clamp(340px,34vw,520px);min-width:0;min-height:0;border-left:1px solid var(--sys-hairline);background:color-mix(in srgb,var(--surface) 42%,transparent)}@media(max-width:900px){.s-broker-embed-detail{position:absolute;inset:0;flex:1 1 auto;border-left:0;background:var(--bg)}}.sys-broker-aftermath{display:flex;flex-direction:column;gap:var(--space-sm)}.sys-broker-aftermath-head{display:flex;align-items:center;gap:var(--space-sm)}.sys-broker-aftermath-outcome{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border:1px solid var(--sys-hairline);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--surface) 55%,transparent)}.sys-broker-aftermath-outcome strong{font-size:var(--text-sm);font-weight:560}.sys-broker-aftermath-outcome--danger strong{color:var(--red)}.sys-broker-aftermath-outcome--success strong{color:var(--green)}.sys-broker-aftermath-duration{justify-self:start;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs)}.sys-broker-aftermath-outcome p{grid-column:1 / -1;margin:0;color:var(--muted);font-size:var(--text-xs);line-height:1.5}.sys-broker-aftermath-replies{display:flex;flex-direction:column;gap:var(--space-2xs);margin:0;padding:0;list-style:none}.sys-broker-aftermath-reply{display:flex;width:100%;flex-direction:column;gap:2px;padding:var(--space-sm) var(--space-md);border:1px solid var(--sys-hairline);border-radius:var(--radius-sm);background:transparent;text-align:left;transition:border-color .12s,background .12s}.sys-broker-aftermath-reply:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 45%,var(--sys-hairline));background:color-mix(in srgb,var(--surface) 55%,transparent)}.sys-broker-aftermath-reply:disabled{cursor:default}.sys-broker-aftermath-reply-head{display:flex;align-items:baseline;gap:var(--space-sm);min-width:0}.sys-broker-aftermath-reply-head strong{overflow:hidden;color:var(--ink);font-size:var(--text-xs);font-weight:560;text-overflow:ellipsis;white-space:nowrap}.sys-broker-aftermath-answer{flex:0 0 auto;padding:0 4px;border-radius:var(--radius-2xs, 3px);background:color-mix(in srgb,var(--accent) 20%,transparent);color:var(--accent);font-family:var(--font-mono);font-size:var(--text-3xs);letter-spacing:var(--tracking-lg);text-transform:uppercase}.sys-broker-aftermath-gap{margin-left:auto;flex:0 0 auto;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs)}.sys-broker-aftermath-reply-body{overflow:hidden;color:var(--muted);font-size:var(--text-xs);line-height:1.5}.sys-broker-aftermath-more{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs)}.sys-broker-aftermath-empty{margin:0;color:var(--dim);font-size:var(--text-xs);line-height:1.5}.sys-broker-aftermath-links{display:flex;flex-wrap:wrap;gap:var(--space-2xs)}.sys-broker-aftermath-link{display:inline-flex;align-items:center;gap:4px;padding:3px var(--space-sm);border:1px solid var(--sys-hairline);border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-size:var(--text-xs);transition:border-color .12s,color .12s}.sys-broker-aftermath-link:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--sys-hairline));color:var(--ink)}.sys-broker-aftermath-foot{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs)}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{i as A,b as w}from"./lane-edit-display-C_Aujldz.js";const E=/^permission ([a-z_]+) · ([A-Za-z][\w-]*)$/i,S=/^phase · ([a-z0-9_]+)$/i,b=/^turn (\d+)(?: · (.+))?$/i,O=new Set(["waiting_for_model","streaming_reasoning","streaming_text","tool_execution","permission_prompt"]);function C(t){const r=t.trim();if(!r)return null;const e=r.match(E);if(e?.[1]&&e[2])return{kind:"permission",decision:e[1].toLowerCase(),tool:e[2]};const s=r.match(S);if(s?.[1])return{kind:"phase",phase:s[1]};const c=r.match(b);return c?.[1]?{kind:"turn",turn:Number(c[1]),model:c[2]?.trim()||void 0}:null}function J(t){return t.trim().replace(/_/g," ")}function R(t){const r=t.trim().replace(/\/+$/u,""),e=r.lastIndexOf("/");return e>=0?r.slice(e+1):r}function V(t){if(t.kind==="tool"){if(t.tool==="res")return"result";if(A(t.tool)){const e=t.arg?.trim();return e?R(e):"edit"}return t.tool?.trim()||"tool"}const r=C(t.text??"");return r?r.kind==="permission"&&r.tool?r.tool:r.kind==="phase"?"phase":r.kind==="turn"?"turn":null:null}const $=O;function I(t){const r=t.raw;if(!r||typeof r!="object"||Array.isArray(r))return null;const e=r.payload;if(!e||typeof e!="object"||Array.isArray(e))return null;const s=e.type;return typeof s=="string"?s:null}function N(t){const r=t.trim();return r.startsWith("-> Chunk ID:")||/^->\s+Wall time:/u.test(r)}function x(t){if(t.source!=="cursor"||t.kind!=="system")return!1;const r=t.summary.trim().toLowerCase();return r==="process sample"||r.startsWith("process sample ·")}function z(t){if(x(t))return!0;if(t.source==="grok"){const e=t.summary.trim().toLowerCase();if(e==="first token"||e.startsWith("loop "))return!0;if(!e.startsWith("phase ·"))return!1;const s=e.slice(7).trim();return $.has(s)}if(t.source!=="codex")return!1;if(t.kind==="tool-result"){const e=t.summary.trim();if(N(e)||/_end ·/u.test(e)||e.startsWith("->"))return!0}if(t.kind!=="system")return!1;const r=t.summary.trim().toLowerCase();return!!(r==="user_message"||r==="agent_message"||r==="[reasoning]"||r.startsWith("turn context")||r.startsWith("tokens ·")||r.startsWith("session "))}function
|
|
2
|
-
`).replace(/\\t/gu," ").replace(/\\"/gu,'"').replace(/\\\\/gu,"\\").trim()}function _(t){return P[t]??t}const M=new Set(["read","write","edit","multiedit","notebookedit","glob","grep","ls","task","agent","webfetch","websearch","todowrite","todoread","bashoutput","killshell","killbash","slashcommand","exitplanmode","bash"]);function h(t){const r=t.toLowerCase();return M.has(r)||t.startsWith("mcp__")?!0:/^[A-Z][A-Za-z0-9]*$/.test(t)}const B=/^res:\s*([\s\S]*)$/,k=/^([A-Za-z][\w-]*)(?:\s+([\s\S]+))?$/,T=/^([\s\S]+?)\s+->\s+res:\s*([\s\S]+)$/,H=/\b(?:failed|failure|exception|fatal|denied|traceback)\b|error:/i;function X(t){const r=t.trim().match(T);return!r?.[1]||!r[2]?null:{command:r[1].trim(),preview:r[2].trim()}}function y(t){return H.test(t)?"error":"success"}function d(t,r){const e={tool:"bash",arg:t};return r&&(e.result={outcome:y(r)},e.stream=[r]),e}function L(t){const r=t.trim();if(!r||!/\s/u.test(r)||T.test(r)||/^res:\s/i.test(r)||p.test(r)||/^[A-Za-z_][\w.-]*\(/u.test(r))return!1;const e=r.split(/\s+/)[0]??"";return!(/^[A-Z][A-Za-z0-9]*$/.test(e)&&h(e))}function
|
|
1
|
+
import{i as A,b as w}from"./lane-edit-display-C_Aujldz.js";const E=/^permission ([a-z_]+) · ([A-Za-z][\w-]*)$/i,S=/^phase · ([a-z0-9_]+)$/i,b=/^turn (\d+)(?: · (.+))?$/i,O=new Set(["waiting_for_model","streaming_reasoning","streaming_text","tool_execution","permission_prompt"]);function C(t){const r=t.trim();if(!r)return null;const e=r.match(E);if(e?.[1]&&e[2])return{kind:"permission",decision:e[1].toLowerCase(),tool:e[2]};const s=r.match(S);if(s?.[1])return{kind:"phase",phase:s[1]};const c=r.match(b);return c?.[1]?{kind:"turn",turn:Number(c[1]),model:c[2]?.trim()||void 0}:null}function J(t){return t.trim().replace(/_/g," ")}function R(t){const r=t.trim().replace(/\/+$/u,""),e=r.lastIndexOf("/");return e>=0?r.slice(e+1):r}function V(t){if(t.kind==="tool"){if(t.tool==="res")return"result";if(A(t.tool)){const e=t.arg?.trim();return e?R(e):"edit"}return t.tool?.trim()||"tool"}const r=C(t.text??"");return r?r.kind==="permission"&&r.tool?r.tool:r.kind==="phase"?"phase":r.kind==="turn"?"turn":null:null}const $=O;function q(t){if(!t)return"—";const r=t.split(":")[0]??t;return(r.replace(/^session_/u,"")||r).slice(0,8)}function I(t){const r=t.raw;if(!r||typeof r!="object"||Array.isArray(r))return null;const e=r.payload;if(!e||typeof e!="object"||Array.isArray(e))return null;const s=e.type;return typeof s=="string"?s:null}function N(t){const r=t.trim();return r.startsWith("-> Chunk ID:")||/^->\s+Wall time:/u.test(r)}function x(t){if(t.source!=="cursor"||t.kind!=="system")return!1;const r=t.summary.trim().toLowerCase();return r==="process sample"||r.startsWith("process sample ·")}function z(t){if(x(t))return!0;if(t.source==="grok"){const e=t.summary.trim().toLowerCase();if(e==="first token"||e.startsWith("loop "))return!0;if(!e.startsWith("phase ·"))return!1;const s=e.slice(7).trim();return $.has(s)}if(t.source!=="codex")return!1;if(t.kind==="tool-result"){const e=t.summary.trim();if(N(e)||/_end ·/u.test(e)||e.startsWith("->"))return!0}if(t.kind!=="system")return!1;const r=t.summary.trim().toLowerCase();return!!(r==="user_message"||r==="agent_message"||r==="[reasoning]"||r.startsWith("turn context")||r.startsWith("tokens ·")||r.startsWith("session "))}function Q(t,r){return t.filter(e=>!z(e))}const D={"scout-managed":"scout","hudson-managed":"hudson",unattributed:"native"};function Z(t){return D[t]??t}function v(t,r){if(t.kind==="tool"||t.kind==="tool-result")return;const e=r?.project?.trim()||r?.cwd?.trim()||t.project?.trim()||t.cwd?.trim(),s=Z(t.harness);return e?`${e} · ${s}`:`${t.source} · ${s}`}const W=/^([A-Za-z][\w-]*) started$/,G=/^([A-Za-z][\w-]*) completed(?: · (.+))?$/,U=/^([A-Za-z][\w-]*) · (.+?)(?: · (success|error|failed))?$/,p=/^([A-Za-z_][\w.-]*)\((.*)\)$/s;function g(t){return(t??"").trim().toLowerCase()}function tt(t){const r=g(t);return r==="read"||r==="read_file"}function rt(t){const r=g(t);return r==="edit"||r==="write"||r==="patch"||r==="apply_patch"}const P={exec_command:"Shell",apply_patch:"Edit",patch_apply:"Edit",read_file:"Read",write_stdin:"Shell",web_search:"Search"};function K(t){if(!t?.trim())return null;try{const r=JSON.parse(t);return r&&typeof r=="object"&&!Array.isArray(r)?r:null}catch{return null}}function j(t){if(t){if(typeof t.cmd=="string"&&t.cmd.trim())return t.cmd.trim();if(typeof t.command=="string"&&t.command.trim())return t.command.trim();if(Array.isArray(t.command))return t.command.filter(r=>typeof r=="string").join(" ").trim()||void 0}}function F(t){const r=j(K(t));if(r)return r;if(!t?.trim())return;const e=t.match(/"cmd"\s*:\s*"((?:\\.|[^"\\])*)"/u);if(e?.[1])return e[1].replace(/\\n/gu,`
|
|
2
|
+
`).replace(/\\t/gu," ").replace(/\\"/gu,'"').replace(/\\\\/gu,"\\").trim()}function _(t){return P[t]??t}const M=new Set(["read","write","edit","multiedit","notebookedit","glob","grep","ls","task","agent","webfetch","websearch","todowrite","todoread","bashoutput","killshell","killbash","slashcommand","exitplanmode","bash"]);function h(t){const r=t.toLowerCase();return M.has(r)||t.startsWith("mcp__")?!0:/^[A-Z][A-Za-z0-9]*$/.test(t)}const B=/^res:\s*([\s\S]*)$/,k=/^([A-Za-z][\w-]*)(?:\s+([\s\S]+))?$/,T=/^([\s\S]+?)\s+->\s+res:\s*([\s\S]+)$/,H=/\b(?:failed|failure|exception|fatal|denied|traceback)\b|error:/i;function X(t){const r=t.trim().match(T);return!r?.[1]||!r[2]?null:{command:r[1].trim(),preview:r[2].trim()}}function y(t){return H.test(t)?"error":"success"}function d(t,r){const e={tool:"bash",arg:t};return r&&(e.result={outcome:y(r)},e.stream=[r]),e}function L(t){const r=t.trim();if(!r||!/\s/u.test(r)||T.test(r)||/^res:\s/i.test(r)||p.test(r)||/^[A-Za-z_][\w.-]*\(/u.test(r))return!1;const e=r.split(/\s+/)[0]??"";return!(/^[A-Z][A-Za-z0-9]*$/.test(e)&&h(e))}function et(t){if(t.source==="codex"&&t.kind==="system"){const r=t.summary.trim().toLowerCase();if(r==="task started"||r==="task complete"||r.startsWith("turn aborted"))return"note";if(I(t)==="reasoning"&&r!=="[reasoning]")return"think"}if(t.source==="grok"&&t.kind==="system"&&/^turn \d+/u.test(t.summary.trim()))return"note";if(t.source==="kimi"&&t.kind==="system"&&t.summary.trim().startsWith("[thinking] "))return"think";switch(t.kind){case"assistant":return"message";case"tool":case"tool-result":return"tool";case"user":return"ask";case"system":return"system";default:return"note"}}function st(t,r){if(t.kind==="tool"||t.kind==="tool-result"){if(r.tool&&r.arg)return`${r.tool} · ${r.arg}`;if(r.tool)return r.tool}if(t.source==="codex"&&t.kind==="system"){const e=t.summary.trim().toLowerCase();if(e==="task started")return"Turn started";if(e==="task complete")return"Turn complete";if(e.startsWith("turn aborted"))return t.summary.trim()}if(t.source==="grok"&&t.kind==="system"){const e=t.summary.trim().match(/^turn (\d+)(?: · (.+))?$/i);if(e?.[1])return e[2]?.trim()?`turn ${e[1]} · ${e[2].trim()}`:`turn ${e[1]}`}if(t.source==="kimi"&&t.kind==="system"){const e=t.summary.trim().match(/^\[thinking\]\s+([\s\S]+)$/u);if(e?.[1])return e[1]}return t.summary}function ot(t){if(t.kind!=="tool"&&t.kind!=="tool-result")return{};const r=t.summary.trim();if(!r)return{};const e=t.source==="claude"||t.source==="kimi",s=X(r);if(s){if(e){const i=s.command.match(k);if(i&&h(i[1])){const o={tool:i[1],result:{outcome:y(s.preview)},stream:[s.preview]},n=i[2]?.trim();return n&&(o.arg=n),o}}return d(s.command,s.preview)}if(t.source==="grok"){const i=w(r);if(i){const u={tool:"StrReplace",arg:i.path};return i.outcome&&(u.result={outcome:i.outcome}),u}const o=r.match(U);if(o?.[1]&&o[2]){const u={tool:o[1],arg:o[2]};return o[3]&&(u.result={outcome:o[3]}),u}const n=r.match(W);if(n?.[1])return{tool:n[1],arg:"started"};const a=r.match(G);if(a?.[1]){const u={tool:a[1],arg:"completed"};return a[2]&&(u.result={outcome:a[2]}),u}}if(e){const i=r.match(B);if(i){const n=i[1].trim(),a={tool:"res",result:{outcome:y(n)}};return n&&(a.arg=n,a.stream=[n]),a}const o=r.match(k);if(o&&h(o[1])){const n=o[2]?.trim();return n?{tool:o[1],arg:n}:{tool:o[1]}}return{tool:"bash",arg:r}}if(t.source==="codex"){const i=r.match(/^([A-Za-z_][\w.-]*)_(?:start|end) · (.+)$/);if(i?.[1]&&i[2]){const n=_(i[1]),a=i[2].trim(),u={tool:n,arg:t.kind==="tool-result"?"completed":a};return t.kind==="tool-result"&&(u.result={outcome:/error|failed/u.test(a)?"error":"success"}),u}const o=r.match(p)??r.match(/^([A-Za-z_][\w.-]*)\((.*)$/s);if(o?.[1]){const n=o[1],a=o[2]?.trim(),u=F(a),f=_(n);return u?{tool:f,arg:u}:n==="apply_patch"||n==="patch_apply"?{tool:f,arg:"patch"}:{tool:f,arg:a||void 0}}if(L(r))return d(r)}const c=r.match(p)??r.match(/^([A-Za-z_][\w.-]*)\((.*)$/s);if(c?.[1])return{tool:c[1],arg:c[2]?.trim()||void 0};const m=r.match(/^([A-Za-z_][\w.-]*) · (.+)$/);if(m?.[1])return{tool:m[1],arg:m[2]};if(L(r))return d(r);const l=r.split(/\s+/)[0];return l&&l.toLowerCase()!==t.source.toLowerCase()?{tool:l}:{}}function nt(t){const r=[];for(const e of t){const s=r[r.length-1];if(s&&s.event.sessionId===e.event.sessionId&&s.event.source===e.event.source&&s.event.kind===e.event.kind&&s.event.summary===e.event.summary){s.repeatCount+=1,s.event=e.event,s.meta=e.meta;continue}r.push({event:e.event,repeatCount:1,meta:e.meta})}return r}const it={user:">",assistant:"<",tool:"*","tool-result":"=",system:"~",other:"·"},at={user:"USR",assistant:"AST",tool:"TOL","tool-result":"OUT",system:"SYS",other:"EVT"};export{it as T,rt as a,at as b,nt as c,ot as d,st as e,et as f,Q as g,Z as h,z as i,V as j,J as k,tt as o,C as p,q as s,v as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as c,f as o}from"./index-
|
|
1
|
+
import{r as c,f as o}from"./index-CzVeWScw.js";import{c as f,a as b,w as d}from"./index-BWHgHrtv.js";const r=new Set;let n=null,l=null,s=null;function p(t){for(const e of[...r])e(t)}function S(){s||(n||(n=f({url:o()}),l=b({links:[d({client:n})]})),s=l.tail.events.subscribe(void 0,{onData:t=>{const e=t.data;e&&p(e)}}))}function m(){s?.unsubscribe(),s=null}function C(t,e=!0){const i=c.useRef(t);i.current=t,c.useEffect(()=>{if(!e)return;const u=a=>i.current(a);return r.add(u),S(),()=>{r.delete(u),r.size===0&&m()}},[e])}export{C as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e}from"./createLucideIcon-
|
|
1
|
+
import{c as e}from"./createLucideIcon-ClCdc3F9.js";const o=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],a=e("terminal",o);export{a as T};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as i}from"./api-h5zurxmi.js";import{a as c}from"./router-
|
|
1
|
+
import{a as i}from"./api-h5zurxmi.js";import{a as c}from"./router-B-K15T7B.js";import{s as l}from"./terminal-sessions-C3qU8tnY.js";const v=132,b=44;function u(e){return e==="codex"?"codex":e==="pi"?"pi":void 0}function a(e){return e==="observe"?"observe":"takeover"}function f(e,n,t="takeover"){return`scout-tmux-${e}-${n}-${t}`}function m(e){return e?e.terminalSurface?e.terminalSurface:e.transport==="tmux"&&e.harnessSessionId?{backend:"tmux",sessionName:e.harnessSessionId,paneId:null,socketDir:null}:null:null}function g(e,n){if(!n)return e;try{const t=new URL(e);return t.searchParams.set("agentId",n),t.toString()}catch{const t=e.includes("?")?"&":"?";return`${e}${t}agentId=${encodeURIComponent(n)}`}}function $(e,n){return n==="takeover"&&!!e&&!m(e)}function y(e){return e?{backend:e.backend,terminalSession:e.sessionName,...e.backend==="tmux"?{tmuxSession:e.sessionName}:{},...e.backend==="zellij"?{zellijSession:e.sessionName,...e.socketDir?{zellijSocketDir:e.socketDir}:{}}:{},...e.backend==="herdr"?{herdrSession:e.sessionName,tmuxSession:e.sessionName}:{}}:null}function T(e){const{agentId:n,agent:t,terminalSurface:o,registeredTarget:s}=e,r=a(e.mode),d=o&&t?`scout-terminal-${o.backend}-${t.id}-${o.sessionName}-${r}`:s&&o?`scout-terminal-registry-${s.session.id}-${o.backend}-${o.sessionName}-${r}`:n?`scout-takeover-${n}-${r}`:`scout-takeover-${r}`;return o?.backend==="tmux"&&t?f(t.id,o.sessionName,r):d}function N(e){const n=T({agentId:e.agentId,agent:e.agent,terminalSurface:e.terminalSurface,registeredTarget:e.registeredTarget,mode:e.mode}),t=a(e.mode);return{relayStorageSessionKey:n,scopedRelayUrl:g(e.relayUrl,e.agentId),cwd:e.cwd??void 0,relayAgent:u(e.harness),surfaceOptions:y(e.terminalSurface),orphanTTL:e.terminalSurface?1e3:void 0,controlMode:t}}function h(e){return e.registeredTarget?{view:"terminal",terminalSessionId:e.registeredTarget.session.id,terminalSurfaceKey:l(e.registeredTarget.surface)}:e.agentId?{view:"terminal",agentId:e.agentId}:{view:"terminal"}}function R(e,n){return n?{...e,mode:n}:e}function w(e){const n=c(e);return typeof window>"u"?n:new URL(n,window.location.href).toString()}function x(e,n){return i("/api/terminal-sessions/control",{method:"POST",body:JSON.stringify({backend:e.backend,sessionName:e.sessionName,action:n})})}function O(e){return i("/api/terminal-relay/session/destroy",{method:"POST",body:JSON.stringify({sessionId:e})})}function U(e){try{window.localStorage.removeItem(`hudson.relay.${e}`)}catch{}}export{v as S,b as a,N as b,x as c,h as d,w as e,U as f,O as g,m as r,$ as s,R as w};
|