@openscout/scout 0.2.98 → 0.2.105
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/NOTICE +7 -0
- package/README.md +37 -0
- package/bin/scout.mjs +6 -0
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +4 -4
- package/dist/chat.mjs +285 -0
- package/dist/client/assets/ActivityScreen-CcDdQTBK.js +1 -0
- package/dist/client/assets/{AddProjectForm-fXndbzXT.js → AddProjectForm-CHNJ4NnS.js} +1 -1
- package/dist/client/assets/AdventureEvidence-B4mEvXeD.js +5 -0
- package/dist/client/assets/AdventureReader-ZsBDQITY.js +4 -0
- package/dist/client/assets/AdventureScenery-DSxDlqG1.js +1 -0
- package/dist/client/assets/AgentAdventures-BxrYq_2v.js +1 -0
- package/dist/client/assets/AgentAvatar-NZOqcsB2.js +1 -0
- package/dist/client/assets/AgentConfigurationScreen-BhD1PEAM.js +1 -0
- package/dist/client/assets/AgentDefinitionsWorkspace-BqS6MXqF.js +1 -0
- package/dist/client/assets/AgentDetailCard-MIEBKw_S.js +1 -0
- package/dist/client/assets/AgentFloorView-A0dDRlRV.js +1 -0
- package/dist/client/assets/AgentFloorWorld-BTqwmK5G.js +1 -0
- package/dist/client/assets/AgentInfoScreen-DuaN0sgE.js +1 -0
- package/dist/client/assets/{AgentLaneCard-Cc9uyfBr.js → AgentLaneCard-C4rKLLdT.js} +1 -1
- package/dist/client/assets/{AgentLaneChrome-Dv2lBFoH.js → AgentLaneChrome-fGC-ZrJS.js} +1 -1
- package/dist/client/assets/{AgentLaneDetailSheet-CGqtqSHQ.js → AgentLaneDetailSheet-BTF4_th9.js} +2 -2
- package/dist/client/assets/{AgentLaneSummaryResize-Di4u6df2.js → AgentLaneSummaryResize-DgSeA_vS.js} +1 -1
- package/dist/client/assets/AgentLanesEmbedScreen-CeNiaZ9_.js +1 -0
- package/dist/client/assets/{AgentLanesPreflight-CCGBArIb.js → AgentLanesPreflight-CcS23wij.js} +1 -1
- package/dist/client/assets/AgentLanesView-WZhEDBFE.js +2 -0
- package/dist/client/assets/AgentLiveActions-6Kfr1uOT.js +1 -0
- package/dist/client/assets/AgentMasterScreen-DUDUTAnU.js +1 -0
- package/dist/client/assets/AgentSessions-CO1WGa8Z.js +6 -0
- package/dist/client/assets/AgentsConsole-BQOWkj35.js +1 -0
- package/dist/client/assets/AgentsScreen-BMNAj1PH.js +1 -0
- package/dist/client/assets/AgentsSubnav-CeHhuzyM.js +1 -0
- package/dist/client/assets/{AstronautSuit-CwB4Dw07.js → AstronautSuit-D67fIBdR.js} +1 -1
- package/dist/client/assets/AtopView-Ck30FbzG.js +1 -0
- package/dist/client/assets/BackToPicker-CkBhGRlD.js +1 -0
- package/dist/client/assets/BriefingDetailScreen-yZG8_m4h.js +1 -0
- package/dist/client/assets/BriefingsScreen-DTxYMr3a.js +1 -0
- package/dist/client/assets/{BrokerMetadataPanel-BJSwU9XZ.js → BrokerMetadataPanel-crirZCdo.js} +1 -1
- package/dist/client/assets/BrokerScreen-CT37VQiL.js +8 -0
- package/dist/client/assets/Canvas-CRP0KjKb.js +1 -0
- package/dist/client/assets/{CastPicker-CkgTalIt.js → CastPicker-ZPomvOf-.js} +1 -1
- package/dist/client/assets/ChannelComposer-BVItWlEz.js +1 -0
- package/dist/client/assets/ChannelSidebar-B-2spawY.js +1 -0
- package/dist/client/assets/CharacterFamilyPreview-BniL8sEL.css +1 -0
- package/dist/client/assets/CharacterFamilyPreview-ckVkecDO.js +1 -0
- package/dist/client/assets/ChatAvatar-DKBsbOqk.js +1 -0
- package/dist/client/assets/ChatBits-CLJ71hTY.js +1 -0
- package/dist/client/assets/ChatCollapsedStrip-Co0NmqOO.js +1 -0
- package/dist/client/assets/ChatRightPanel-pKQtkAgl.js +1 -0
- package/dist/client/assets/ChatSpaceSurface-NrLwdPkE.js +1 -0
- package/dist/client/assets/ChatSpaceTheme-BPMgPdVK.css +1 -0
- package/dist/client/assets/ChatSpaceTheme-D37Jk7bl.js +1 -0
- package/dist/client/assets/{CodeDiffPane-DfluIWmO.js → CodeDiffPane-D-iv28LJ.js} +1 -1
- package/dist/client/assets/{CodeProjectPicker-By_Wz9ex.js → CodeProjectPicker-CZ3gDdiT.js} +1 -1
- package/dist/client/assets/CodeScreen-CSC-zbP9.js +1 -0
- package/dist/client/assets/CommsCanvas-BR2YS76H.css +1 -0
- package/dist/client/assets/CommsCanvas-DdNAwjGW.js +1 -0
- package/dist/client/assets/CommsDeck-mGWY7Ivi.js +1 -0
- package/dist/client/assets/CommsFlowGraph-vQucylxF.css +1 -0
- package/dist/client/assets/CommsFlowGraph-voDD9M5R.js +1 -0
- package/dist/client/assets/CommsFlowMap-C33sgD48.js +1 -0
- package/dist/client/assets/CommsSelection-BL8aYD7z.js +1 -0
- package/dist/client/assets/{ConversationComposer-BUIjWMBi.js → ConversationComposer-DNcn5U6D.js} +1 -1
- package/dist/client/assets/ConversationFeedRows-RnYSa7Io.js +1 -0
- package/dist/client/assets/ConversationHeader-Y9TEJxP_.js +1 -0
- package/dist/client/assets/ConversationPanels-6pprBpmq.js +6 -0
- package/dist/client/assets/ConversationScreen-Brfas2y0.css +1 -0
- package/dist/client/assets/ConversationScreen-tpj4cqWs.js +2 -0
- package/dist/client/assets/ConversationStatus-Cv-7hErW.js +1 -0
- package/dist/client/assets/{CrewAvatar-CZ_faQ_s.js → CrewAvatar-zgzC3cbU.js} +1 -1
- package/dist/client/assets/CrewSprite-Dp9KBBGY.js +1 -0
- package/dist/client/assets/CrewSprite-DsQJdu3Z.css +1 -0
- package/dist/client/assets/CrewWorkspaces-DDuYMByu.css +1 -0
- package/dist/client/assets/CrewWorkspaces-K2jcyLec.js +1 -0
- package/dist/client/assets/{DataTable-C6aMSilS.js → DataTable-av71ehJV.js} +1 -1
- package/dist/client/assets/DispatchAftermath-CcYGUB10.js +1 -0
- package/dist/client/assets/DocumentFocusViewer-DlMiEALb.js +1 -0
- package/dist/client/assets/{EmbeddableSurfacesLab-D3iZiS8o.js → EmbeddableSurfacesLab-CTkO_tQR.js} +1 -1
- package/dist/client/assets/{EmptyState-CKPWFSjq.js → EmptyState-CYUwYyAW.js} +1 -1
- package/dist/client/assets/{FileViewerPane-CxNbcTYf.js → FileViewerPane-Cxhixtks.js} +2 -2
- package/dist/client/assets/FlightObserveScreen-CvzhzuWc.js +1 -0
- package/dist/client/assets/FloorContextSheet-Vj_wVZq1.js +1 -0
- package/dist/client/assets/FloorExchangePanel-B3TFhjLk.css +1 -0
- package/dist/client/assets/FloorExchangePanel-CjHSDXad.js +1 -0
- package/dist/client/assets/FloorMessagePasses-BG4ebnX5.js +1 -0
- package/dist/client/assets/FloorMessagePasses-nxwwiUom.css +1 -0
- package/dist/client/assets/FloorReplay-BoYaGY9t.js +1 -0
- package/dist/client/assets/FloorResourcesSheet-_Iy5UqgY.js +1 -0
- package/dist/client/assets/FloorSavedWork-jbtRs-YE.js +1 -0
- package/dist/client/assets/FloorTacticalHUD-BhyOqlL5.js +1 -0
- package/dist/client/assets/FollowScreen-CupyOgt4.js +1 -0
- package/dist/client/assets/HarnessMark-DSvM_H7H.js +1 -0
- package/dist/client/assets/HarnessesScreen-DyjqbZ4k.js +1 -0
- package/dist/client/assets/{HerdrSession-DsuxCtfX.js → HerdrSession-Dcm3vf9U.js} +3 -3
- package/dist/client/assets/{HomeHero-DXJo2QSO.js → HomeHero-pIZtE1cC.js} +1 -1
- package/dist/client/assets/HostAdvisorView-Dv5meXo2.js +1 -0
- package/dist/client/assets/InviteLandingScreen-xZQ2na1z.js +1 -0
- package/dist/client/assets/InviteSheet--5Zjct25.js +1 -0
- package/dist/client/assets/JumpPalette-BmiSOEmp.js +1 -0
- package/dist/client/assets/KnowledgeSearchInspector-B8yiM524.js +1 -0
- package/dist/client/assets/KnowledgeSearchScreen-BPqAjHnH.js +1 -0
- package/dist/client/assets/{LaneToolHoverCard-t7-XJP-h.js → LaneToolHoverCard-D2cnTeUd.js} +1 -1
- package/dist/client/assets/LaneTraceDetailSheet-jl4XQmEx.js +1 -0
- package/dist/client/assets/{LaneTraceEventFocus-BB5DhFQm.js → LaneTraceEventFocus-BLhVHwff.js} +1 -1
- package/dist/client/assets/MeshCanvas-BR25OBTJ.js +3 -0
- package/dist/client/assets/MeshCanvasMinimap-ClVolr4-.js +1 -0
- package/dist/client/assets/MeshScreen-BW1dMFWF.js +1 -0
- package/dist/client/assets/{MeshTopologyView-Dc0GSrKa.js → MeshTopologyView-BT3ke2D1.js} +2 -2
- package/dist/client/assets/MessagesScreen-CtNMfIvC.js +1 -0
- package/dist/client/assets/MissionContextRail-CafjuseK.js +1 -0
- package/dist/client/assets/MissionControlView-BjPOViGY.js +1 -0
- package/dist/client/assets/MissionFocusOverlay-nhy3hkxQ.js +1 -0
- package/dist/client/assets/MissionLeftAgentRow-Dms0DBjO.js +1 -0
- package/dist/client/assets/MissionLogPane-DiUf3vWW.js +1 -0
- package/dist/client/assets/NativeAreaScreen-BQSTo8As.js +1 -0
- package/dist/client/assets/NativeAreaScreen-Brix6xDB.js +1 -0
- package/dist/client/assets/NativeAreaScreen-D7HyQNlM.js +1 -0
- package/dist/client/assets/NewAgentModal-BQ2wQ5gp.js +1 -0
- package/dist/client/assets/NewChatComposer-BEXS8vV6.js +19 -0
- package/dist/client/assets/{NewChatOrigin-DCn5cWPZ.js → NewChatOrigin-C8ROO4ps.js} +1 -1
- package/dist/client/assets/NodeDetailPanel-BNTqYC7m.js +1 -0
- package/dist/client/assets/NodeMenu-CcOeFRCB.js +1 -0
- package/dist/client/assets/ObserveEmbedScreen-Dh30EjAQ.js +2 -0
- package/dist/client/assets/{ObserveTextFlow-DCJ5EmD8.js → ObserveTextFlow-CC5mnngm.js} +2 -2
- package/dist/client/assets/{ObservedTopologyPanel-CJVqIqQ2.js → ObservedTopologyPanel-DF6tRZL_.js} +1 -1
- package/dist/client/assets/OpenScoutAppShell-D9pgw36i.js +31 -0
- package/dist/client/assets/OpsAgentsView-D3rM0udq.js +1 -0
- package/dist/client/assets/OpsScreen-DySeNQ1V.js +1 -0
- package/dist/client/assets/OpsSubnav-C9E0r3GZ.js +1 -0
- package/dist/client/assets/ProjectAgentProfile-FUav75j2.js +1 -0
- package/dist/client/assets/{ProjectAgentProfileBar-CUzZ4Rpx.js → ProjectAgentProfileBar-C8z22pJ2.js} +1 -1
- package/dist/client/assets/ProjectAgentProfileHero-BLK0EwMg.js +1 -0
- package/dist/client/assets/ProjectsInbox-DfCXReZK.js +2 -0
- package/dist/client/assets/ProjectsRail-CELVubfJ.js +1 -0
- package/dist/client/assets/ProjectsScreen-DMw4TLKy.js +1 -0
- package/dist/client/assets/ProjectsThreadAside-D1Sh4fnX.js +1 -0
- package/dist/client/assets/Provider-CNZluAZb.js +5 -0
- package/dist/client/assets/{RailRow-B0sRaJc6.css → RailRow-B25zKEub.css} +1 -1
- package/dist/client/assets/RailRow-DUPqXMZh.js +1 -0
- package/dist/client/assets/RailToggle-BwmY70B8.js +1 -0
- package/dist/client/assets/RawSessionsTable-6OVJq0JZ.js +1 -0
- package/dist/client/assets/RealtimeVoiceScreen-D41TYY0x.js +9 -0
- package/dist/client/assets/RenderedWorkerSprite-C8fxndAh.js +1 -0
- package/dist/client/assets/RenderedWorkerSprite-qnTfkd_4.css +1 -0
- package/dist/client/assets/ReplayClock-DUVJjrIu.js +1 -0
- package/dist/client/assets/ReplayLog-Bek1Vc4W.js +1 -0
- package/dist/client/assets/ReplayOutpost-DlRg3172.js +1 -0
- package/dist/client/assets/ReplayOutpost-Y1DvZgeu.css +1 -0
- package/dist/client/assets/{RepoDiffEmbedScreen-mexrJPhW.js → RepoDiffEmbedScreen-CVUMnt6A.js} +1 -1
- package/dist/client/assets/{RepoDiffPageScreen-DbqX4L3q.js → RepoDiffPageScreen-D9-s5PyB.js} +1 -1
- package/dist/client/assets/RepoDiffViewer-D7FN-oyY.js +7 -0
- package/dist/client/assets/RepoDiffViewerLazy-BpMR7tlx.js +2 -0
- package/dist/client/assets/{ReposScreen-CzbO1Fuy.js → ReposScreen-BQ7HO1om.js} +2 -2
- package/dist/client/assets/RiggedWorkerCharacter-BpYECnyK.css +1 -0
- package/dist/client/assets/RiggedWorkerCharacter-CJMWlvV-.js +1 -0
- package/dist/client/assets/SageModelStudio-768dRQr4.css +1 -0
- package/dist/client/assets/SageModelStudio-B526NSnw.js +4108 -0
- package/dist/client/assets/ScoutDeckSurface-ChkvGyEW.js +1 -0
- package/dist/client/assets/{ScoutSurface-NlhDsPzg.js → ScoutSurface-6g1f5chk.js} +1 -1
- package/dist/client/assets/{ScoutbotFxLab-l2WAahCg.js → ScoutbotFxLab-BuwBdnPf.js} +1 -1
- package/dist/client/assets/{SecondaryNav-Cs0_FQdj.js → SecondaryNav-Bs-_VwTC.js} +1 -1
- package/dist/client/assets/SessionEmbedScreen-C2wf35-P.js +1 -0
- package/dist/client/assets/SessionObserve-B64YsYhy.js +12 -0
- package/dist/client/assets/{SessionObserve-CLrHfAKZ.css → SessionObserve-CDdJ7fAE.css} +1 -1
- package/dist/client/assets/SessionObserveEvidence-CS1aQBpQ.js +1 -0
- package/dist/client/assets/SessionRefScreen-DURV0MpF.js +1 -0
- package/dist/client/assets/SessionsScreen-D71ZR-8t.js +1 -0
- package/dist/client/assets/SettingsDrawer-Nz98oBVl.js +3 -0
- package/dist/client/assets/SettingsScreen-CYBHal6y.js +1 -0
- package/dist/client/assets/SharedFloorCharacter-Bi5_md4R.css +1 -0
- package/dist/client/assets/SharedFloorCharacter-V04kD5T9.js +1 -0
- package/dist/client/assets/SharedWorkFloor-BCmdeb3Q.css +1 -0
- package/dist/client/assets/SharedWorkFloor-C0xxW4SN.js +2 -0
- package/dist/client/assets/{ShikiPane-C0TuCATU.js → ShikiPane-XwFI-pCp.js} +1 -1
- package/dist/client/assets/{SlidePanel-CETQ5NTx.js → SlidePanel-BMpkXai_.js} +1 -1
- package/dist/client/assets/SpaceSwitcher-BfeIf-ad.js +1 -0
- package/dist/client/assets/SpriteAvatar-aHeF4ZQZ.js +1 -0
- package/dist/client/assets/SproutActionSprite-DI5N3gOj.js +1 -0
- package/dist/client/assets/{StatusPill-BllrY-eg.js → StatusPill-Dw4LP7wu.js} +1 -1
- package/dist/client/assets/{TailView-_gKWfaQM.js → TailView-BofjmUMJ.js} +2 -2
- package/dist/client/assets/Terminal-jIqnIZZ6.js +4 -0
- package/dist/client/assets/TerminalEmbedScreen-3XsjuySR.js +1 -0
- package/dist/client/assets/TerminalHeaderMount-CwbQhXcI.js +1 -0
- package/dist/client/assets/TerminalRelay--qOBwnbR.js +46 -0
- package/dist/client/assets/{TextDocumentSurface-2X1Gw4eA.js → TextDocumentSurface-BK6Qy41F.js} +1 -1
- package/dist/client/assets/{TmuxPeek-CqTJRhkI.js → TmuxPeek-DpUT9Tpc.js} +1 -1
- package/dist/client/assets/{VoicePermissionsPanel-C4vkU-sU.js → VoicePermissionsPanel-D35fOnQj.js} +1 -1
- package/dist/client/assets/{WorkDetailScreen-DqGnuK0e.js → WorkDetailScreen-Bcf_yHhU.js} +4 -4
- package/dist/client/assets/WorkFilesViewer-t8AEyx3Q.js +1 -0
- package/dist/client/assets/WorkRunView-CxwAZ2QQ.css +1 -0
- package/dist/client/assets/WorkRunView-_mhG_FR2.js +1 -0
- package/dist/client/assets/WorldActorTalk-CKerDikx.js +1 -0
- package/dist/client/assets/WorldCharacter-BRrj3MQN.js +1 -0
- package/dist/client/assets/WorldMinimap-DOptgrc4.js +1 -0
- package/dist/client/assets/WorldSky-D-RJzSa6.js +1 -0
- package/dist/client/assets/{activity-CzTJ-YMX.js → activity-BJqFrZyB.js} +1 -1
- package/dist/client/assets/{addon-fit-Zx3A7pGS.js → addon-fit-CHohcvS3.js} +1 -1
- package/dist/client/assets/{addon-webgl-DitJj-N0.js → addon-webgl-CaRy2x2b.js} +1 -1
- package/dist/client/assets/adventure-evidence-DgQbBmfa.css +1 -0
- package/dist/client/assets/adventure-habitats-v1-CVMbdB_Z.png +0 -0
- package/dist/client/assets/adventure-habitats-v1-M1lcpTJh.js +1 -0
- package/dist/client/assets/adventure-playback-DTfkhIc0.js +3 -0
- package/dist/client/assets/adventure-reader-DM5UDDm9.css +1 -0
- package/dist/client/assets/agent-adventures-DZtWpj6k.css +1 -0
- package/dist/client/assets/agent-autocomplete-_u9o5EZu.js +2 -0
- package/dist/client/assets/{agent-essentials-K9B6kbTS.js → agent-essentials-bKWYOZaH.js} +1 -1
- package/dist/client/assets/{agent-floor-CuJr1iK1.css → agent-floor-Dmr9hZHL.css} +1 -1
- package/dist/client/assets/agent-floor-actor-DW8zLht0.js +1 -0
- package/dist/client/assets/agent-floor-world-Bnd1AtwK.css +1 -0
- package/dist/client/assets/agent-floor-world-layout-hfMjuoui.js +1 -0
- package/dist/client/assets/agent-lane-card-model-CeqQGp-8.js +1 -0
- package/dist/client/assets/{agent-lane-detail-ppJId6Jc.js → agent-lane-detail-Ti3trpfH.js} +1 -1
- package/dist/client/assets/{agent-lane-preview-BhplDYGf.js → agent-lane-preview-Dpa3DuOn.js} +1 -1
- package/dist/client/assets/{agent-lanes-DlqcEf0l.css → agent-lanes-DmgipV9D.css} +1 -1
- package/dist/client/assets/agent-lanes-model-DMAdqCmK.js +4 -0
- package/dist/client/assets/agent-master-THmq-1k8.css +1 -0
- package/dist/client/assets/agent-master-model-C-KdOFDK.js +1 -0
- package/dist/client/assets/{agent-specialization-CtF_jI34.js → agent-specialization-BplZUa_0.js} +1 -1
- package/dist/client/assets/agent-state-DDhnFEEP.js +1 -0
- package/dist/client/assets/{api-HFH8wFyb.js → api-BQYTwoz6.js} +1 -1
- package/dist/client/assets/api-DSqpVKC7.js +1 -0
- package/dist/client/assets/{arc.es-BNXJqSw7.js → arc.es-CubLvQ4W.js} +1 -1
- package/dist/client/assets/{arrow-left-eToA6GxC.js → arrow-left-DFfKAq0d.js} +1 -1
- package/dist/client/assets/{arrow-right-DTX42clh.js → arrow-right-DmAWnyAH.js} +1 -1
- package/dist/client/assets/{arrow-up-right-B09GPwFl.js → arrow-up-right-B0aLKiyF.js} +1 -1
- package/dist/client/assets/at-sign-DM7xeppo.js +1 -0
- package/dist/client/assets/book-open-BL9qvhEI.js +1 -0
- package/dist/client/assets/{bot-WxKXYtEX.js → bot-BhAVbcCA.js} +1 -1
- package/dist/client/assets/broker-display-BkBzyvbR.js +2 -0
- package/dist/client/assets/{cache-CeWH_KzJ.js → cache-DGBo3vIf.js} +1 -1
- package/dist/client/assets/chat-api-BPVC0asu.js +1 -0
- package/dist/client/assets/chat-space-model-B6Jg2CY4.js +4 -0
- package/dist/client/assets/{check-Dz2SRHft.js → check-g7D7-c1J.js} +1 -1
- package/dist/client/assets/{chevron-down-D120PY4g.js → chevron-down-CDzRQQGl.js} +1 -1
- package/dist/client/assets/{chevron-right-CowuvuE6.js → chevron-right-DKGTLiqc.js} +1 -1
- package/dist/client/assets/chevron-up-DX7R6KY2.js +1 -0
- package/dist/client/assets/{chunk-HRAB3GC3-KjjrTLCU.js → chunk-HRAB3GC3-Dvk_QpRq.js} +1 -1
- package/dist/client/assets/{clock-_9FDplIT.js → clock-CQb4FeMf.js} +1 -1
- package/dist/client/assets/{code-xml-CkkNdRmu.js → code-xml-Cmadr3pQ.js} +1 -1
- package/dist/client/assets/coffee-ljG1_krY.js +1 -0
- package/dist/client/assets/colors-CFlbwC25.js +1 -0
- package/dist/client/assets/comms-deck-C8nVeMBh.css +1 -0
- package/dist/client/assets/comms-deck-CBhsXnY-.js +2 -0
- package/dist/client/assets/comms-gesture-_aGFo6g3.js +2 -0
- package/dist/client/assets/{compass-BdpImt_W.js → compass-CvzkzkIh.js} +1 -1
- package/dist/client/assets/content-0AXa0klu.js +1 -0
- package/dist/client/assets/content-BEyJ19Lx.js +1 -0
- package/dist/client/assets/content-BN5weWKW.js +1 -0
- package/dist/client/assets/content-BNokkm7C.js +1 -0
- package/dist/client/assets/content-BV4PUM9q.js +1 -0
- package/dist/client/assets/content-BxUPlcx5.js +1 -0
- package/dist/client/assets/content-CIC5sku8.js +1 -0
- package/dist/client/assets/content-CKJ9zb7Z.js +1 -0
- package/dist/client/assets/content-CdkTyxqk.js +1 -0
- package/dist/client/assets/content-CnhhSCZq.js +1 -0
- package/dist/client/assets/content-D1Ze_FG9.js +1 -0
- package/dist/client/assets/content-DY3F9Vfr.js +1 -0
- package/dist/client/assets/content-DrKBYpcb.js +1 -0
- package/dist/client/assets/content-LSStQYj5.js +1 -0
- package/dist/client/assets/content-YvU-D0hF.js +1 -0
- package/dist/client/assets/content-oKQMyVnH.js +1 -0
- package/dist/client/assets/{context-budget-DqxWzalx.js → context-budget-8qFKqM-j.js} +1 -1
- package/dist/client/assets/{conversation-icons-DHGc9wbT.js → conversation-icons-CIRaxmid.js} +1 -1
- package/dist/client/assets/conversation-model-m8HhzroS.js +1 -0
- package/dist/client/assets/conversation-motion-features-D9PxLoDt.js +1 -0
- package/dist/client/assets/conversations-Cbg9h_Af.js +1 -0
- package/dist/client/assets/{copy-BzdzWsQd.js → copy-BGOC1tJB.js} +1 -1
- package/dist/client/assets/{cpu-CHFIGw87.js → cpu-Q6nrHFTN.js} +1 -1
- package/dist/client/assets/{createLucideIcon-Dv8H8m7J.js → createLucideIcon-ChvMq-zl.js} +1 -1
- package/dist/client/assets/{credentials-BTce3VP1.js → credentials-OeoF-VKJ.js} +1 -1
- package/dist/client/assets/discover-DlwbftpC.js +2 -0
- package/dist/client/assets/embed-entry-c0lwtjBG.js +2 -0
- package/dist/client/assets/embed-navigation-DayfkQau.js +1 -0
- package/dist/client/assets/{external-link-BvX5PfLh.js → external-link-BVccgH0n.js} +1 -1
- package/dist/client/assets/{eye-C9cGk5z6.js → eye-CsGfEVR6.js} +1 -1
- package/dist/client/assets/{file-code-corner-jlGFdr8d.js → file-code-corner-Be6da5l3.js} +1 -1
- package/dist/client/assets/{file-text-BHro8MkG.js → file-text-DP6txVW-.js} +1 -1
- package/dist/client/assets/flag-DAFE2wZ5.js +1 -0
- package/dist/client/assets/floor-character-name-CqJPOlXb.js +1 -0
- package/dist/client/assets/floor-context-model-rWKqaKmV.js +1 -0
- package/dist/client/assets/floor-context-sheet-BFnkFiY3.css +1 -0
- package/dist/client/assets/floor-memory-YMM8AlLY.js +1 -0
- package/dist/client/assets/floor-message-passes-CO3Ix_wR.js +1 -0
- package/dist/client/assets/floor-preview-text-HrORUJ7D.js +1 -0
- package/dist/client/assets/floor-replay-CccYqE-f.css +1 -0
- package/dist/client/assets/floor-tactical-hud-HL5Vja5Y.css +1 -0
- package/dist/client/assets/folder-B_S7gBVr.js +1 -0
- package/dist/client/assets/{gauge-DSflSery.js → gauge-DQCGlE3o.js} +1 -1
- package/dist/client/assets/{gestures-YA5IIwp-.js → gestures-CofqY4Km.js} +1 -1
- package/dist/client/assets/{git-branch-Bc_eDIpG.js → git-branch-DcUCsWdJ.js} +1 -1
- package/dist/client/assets/go-shortcuts-KQy-ZOpV.js +1 -0
- package/dist/client/assets/home-moving-signal-BIHUGNfI.js +1 -0
- package/dist/client/assets/home-now-card-CaLgZze2.js +1 -0
- package/dist/client/assets/{home-now-card-nano-Jmy7eJ6H.js → home-now-card-nano-CvU8B61b.js} +1 -1
- package/dist/client/assets/{hooks-D6NI15f6.css → hooks-D787lBmm.css} +1 -1
- package/dist/client/assets/hooks-DaUOREpP.js +2 -0
- package/dist/client/assets/index-CGbs0SBm.css +1 -0
- package/dist/client/assets/index-CbqBwfIW.js +1 -0
- package/dist/client/assets/index-CyPMl7Up.js +1 -0
- package/dist/client/assets/index-DReVb7jZ.js +10 -0
- package/dist/client/assets/index-PQpJveGO.js +1 -0
- package/dist/client/assets/index-kkXUq-zf.js +1 -0
- package/dist/client/assets/{inspector-panel-CwrHjRaQ.js → inspector-panel-CLU7wjnT.js} +2 -2
- package/dist/client/assets/{keyboard-nav-B8sQ_8IF.js → keyboard-nav-CJXPaHXj.js} +1 -1
- package/dist/client/assets/knowledge-search-BNdQweGz.css +1 -0
- package/dist/client/assets/lane-ask-display-BTVSakyo.js +18 -0
- package/dist/client/assets/{lane-edit-display-C_Aujldz.js → lane-edit-display-BjdT9oZl.js} +1 -1
- package/dist/client/assets/{lane-observe-vfyACHi0.js → lane-observe-CteDwdD-.js} +3 -3
- package/dist/client/assets/lane-roster-store-Ch9t6lb0.js +1 -0
- package/dist/client/assets/{lane-tool-detail-0WhMf4Vj.js → lane-tool-detail-Czggx8oM.js} +1 -1
- package/dist/client/assets/{layers-CW2-qHsG.js → layers-BOwyWodP.js} +1 -1
- package/dist/client/assets/{layout-grid-BoVnPOk-.js → layout-grid-B36Qsh0y.js} +1 -1
- package/dist/client/assets/left-0vBrvrBG.js +2 -0
- package/dist/client/assets/{left-DH44V4I_.css → left-BV9yMiTL.css} +1 -1
- package/dist/client/assets/left-C6SyaqlJ.js +1 -0
- package/dist/client/assets/left-CTuXysZR.js +2 -0
- package/dist/client/assets/left-Cc6s4DT2.js +1 -0
- package/dist/client/assets/left-DF5caiyh.js +1 -0
- package/dist/client/assets/left-DgT4tWCx.js +1 -0
- package/dist/client/assets/left-R0wppTTr.js +1 -0
- package/dist/client/assets/left-advisor-C-kt8V28.js +1 -0
- package/dist/client/assets/left-agents-thnBO156.js +1 -0
- package/dist/client/assets/left-default-CT42fnpF.js +1 -0
- package/dist/client/assets/left-lanes-CSmZgciK.js +1 -0
- package/dist/client/assets/left-mission-C86x6i9h.js +1 -0
- package/dist/client/assets/left-mission-DENnfshd.css +1 -0
- package/dist/client/assets/library-DdhYL_9v.js +1 -0
- package/dist/client/assets/{loader-circle-DmUG_YC7.js → loader-circle-DNUsuPWz.js} +1 -1
- package/dist/client/assets/{local-agents-VP1-ZlPw.js → local-agents-I40PawYA.js} +1 -1
- package/dist/client/assets/machine-children-CdhNzDF0.js +1 -0
- package/dist/client/assets/machine-scope-DJt9RZ2w.js +1 -0
- package/dist/client/assets/mentions-Ck_Vjnyp.js +1 -0
- package/dist/client/assets/{mesh-ops-CKSWgax2.js → mesh-ops-DSlvHp-D.js} +1 -1
- package/dist/client/assets/{mesh-screen-D1Yvo8fU.css → mesh-screen-DjA4mOaN.css} +1 -1
- package/dist/client/assets/mesh-view-store-C1-mdP3P.js +1 -0
- package/dist/client/assets/{message-circle-joGFxfj1.js → message-circle-cI5_A5mj.js} +1 -1
- package/dist/client/assets/{message-markup-DC0QFEZn.js → message-markup-6Tgo4qFJ.js} +1 -1
- package/dist/client/assets/{message-square-BLiFqpe_.js → message-square-CJW4WRlo.js} +1 -1
- package/dist/client/assets/{message-visibility-CGOmSSKs.js → message-visibility-DwxgcgYK.js} +1 -1
- package/dist/client/assets/mission-control-CsX3Yc58.css +1 -0
- package/dist/client/assets/mission-control-model-C30vU1Fe.js +1 -0
- package/dist/client/assets/mission-control-store-p_cboAm4.js +1 -0
- package/dist/client/assets/{mission-wall-CocIM1cF.js → mission-wall-DOuGOxQy.js} +1 -1
- package/dist/client/assets/monitor-C7_cHlkC.js +1 -0
- package/dist/client/assets/nav-destinations-CU_euC-Q.js +1 -0
- package/dist/client/assets/observe-CtS0l3zu.js +1 -0
- package/dist/client/assets/{operator-attention-RqieiSY8.js → operator-attention-DBaRg5ep.js} +1 -1
- package/dist/client/assets/ops-screen-CxYM0VOW.css +1 -0
- package/dist/client/assets/page-status-DwFR4wSw.js +1 -0
- package/dist/client/assets/panel-right-qP17MwMl.js +1 -0
- package/dist/client/assets/pause-B_hliKuR.js +1 -0
- package/dist/client/assets/{persistent-state-BubPQ7tT.js → persistent-state-BUsTTZFE.js} +1 -1
- package/dist/client/assets/pin-Oi4qHR6M.js +1 -0
- package/dist/client/assets/pip-idle-v1-Tt-CZsRG.png +0 -0
- package/dist/client/assets/pip-thinking-v1-BoHWSEye.png +0 -0
- package/dist/client/assets/pip-waiting-v1-DkuvJ-dN.png +0 -0
- package/dist/client/assets/pip-working-v1-wWQLRS1z.png +0 -0
- package/dist/client/assets/play-CVeRmqLH.js +1 -0
- package/dist/client/assets/{plus-BWKhylds.js → plus-D5NLH_fM.js} +1 -1
- package/dist/client/assets/profile-BegEUmB7.js +1 -0
- package/dist/client/assets/projects-inbox-CKPLZN8s.css +1 -0
- package/dist/client/assets/{projects-inbox-DFbgVlXL.js → projects-inbox-CfwxCTdN.js} +1 -1
- package/dist/client/assets/provider-DwmCoSlc.js +1 -0
- package/dist/client/assets/{proxy-DVDRhSRR.js → proxy-DgzP27W8.js} +1 -1
- package/dist/client/assets/{radio-CxIXS1nU.js → radio-Cas2qg1D.js} +1 -1
- package/dist/client/assets/{refresh-cw-Bkh7Cvnd.js → refresh-cw-IcD2lPoT.js} +1 -1
- package/dist/client/assets/resolve-panes-pfZTezKo.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-D5ksvrb_.js +1 -0
- package/dist/client/assets/right-BDaCJ0CF.js +1 -0
- package/dist/client/assets/right-BP6lXRFS.js +1 -0
- package/dist/client/assets/right-Cb1VCrdj.js +1 -0
- package/dist/client/assets/right-CeFaxfBo.js +1 -0
- package/dist/client/assets/right-Ck2SrYCj.js +1 -0
- package/dist/client/assets/right-D-uv5YfF.js +1 -0
- package/dist/client/assets/right-DJMSICky.js +1 -0
- package/dist/client/assets/right-Dnljs8ah.js +1 -0
- package/dist/client/assets/right-SdCSF8PP.js +1 -0
- package/dist/client/assets/{right-DVUq5374.js → right-cjPTwPXS.js} +2 -2
- package/dist/client/assets/{rocket-CnxqjX_K.js → rocket-DAqYvu8I.js} +1 -1
- package/dist/client/assets/router-C-MF5-mb.js +1 -0
- package/dist/client/assets/{runtime-picker-BYAFNLNq.css → runtime-picker-C3JwrDKP.css} +1 -1
- package/dist/client/assets/runtime-picker-C_AVYF63.js +1 -0
- package/dist/client/assets/{scope-views-KPY85UUx.js → scope-views-Dl3ml9OZ.js} +1 -1
- package/dist/client/assets/scout-voice-CqAyfblr.js +1 -0
- package/dist/client/assets/{scoutbot-D7kGGyK_.js → scoutbot-Bk3nyrkj.js} +2 -2
- package/dist/client/assets/{scoutbot-markdown-yb87JlSE.js → scoutbot-markdown-DwvGQOWo.js} +1 -1
- package/dist/client/assets/{scroll-text-DFcBYy5J.js → scroll-text-B0tKI9Sg.js} +1 -1
- package/dist/client/assets/{search-FB2vVxCp.js → search-UsM-9-_W.js} +1 -1
- package/dist/client/assets/secondaryNavConfig-D15P1Y9k.css +1 -0
- package/dist/client/assets/secondaryNavConfig-DzNHk6IH.js +1 -0
- package/dist/client/assets/{selection-bridge-qBGFCJv8.js → selection-bridge-OTS2iFkt.js} +1 -1
- package/dist/client/assets/{send-horizontal-CS7mxVhX.js → send-horizontal-BlQsRK6C.js} +1 -1
- package/dist/client/assets/send-to-agent-session-C1mgqdow.js +1 -0
- package/dist/client/assets/{server-WY6gsbZz.js → server-DBlPW0Mp.js} +1 -1
- package/dist/client/assets/{session-catalog-CG4oL_yN.js → session-catalog-CnpZMB7C.js} +1 -1
- package/dist/client/assets/{session-table-uJh3v-ly.js → session-table-CGkfG5Yd.js} +1 -1
- package/dist/client/assets/sessions-view-Bge4XZ4I.js +1 -0
- package/dist/client/assets/{settings-DQEtqkM9.js → settings-C69Zjrpq.js} +1 -1
- package/dist/client/assets/shared-work-artifacts-DfNl9KTo.js +1 -0
- package/dist/client/assets/{sliders-horizontal-57e99_qO.js → sliders-horizontal-6bzeod7c.js} +1 -1
- package/dist/client/assets/solar-system-scope-2k-stars-points-1FwHnkj0.png +0 -0
- package/dist/client/assets/{sparkles-D0vWLTyC.js → sparkles-Cc5lPZRv.js} +1 -1
- package/dist/client/assets/sprout-action-sprite-DZ8C0fTl.css +1 -0
- package/dist/client/assets/sprout-actions-proof-v1-BzUdc812.png +0 -0
- package/dist/client/assets/{sse-B29iGBnw.js → sse-A8AyLH0g.js} +1 -1
- package/dist/client/assets/system-surfaces-redesign-DKFg4GB5.css +1 -0
- package/dist/client/assets/{tail-display-DcliDVkW.js → tail-display-DHSNmvor.js} +2 -2
- package/dist/client/assets/{tail-events-LK29oCKm.js → tail-events-C4WdhVeK.js} +1 -1
- package/dist/client/assets/{terminal-UDy4lzV1.js → terminal-DMZjX1es.js} +1 -1
- package/dist/client/assets/{terminal-relay-CXHMdain.js → terminal-relay-mO89dX-Y.js} +1 -1
- package/dist/client/assets/terminal-screen-Bpb2SZrn.css +1 -0
- package/dist/client/assets/{terminal-sessions-Bdt2W3Y4.js → terminal-sessions-3RfJpen8.js} +1 -1
- package/dist/client/assets/{terminal-takeover-BMeBjBB2.js → terminal-takeover-CZZsnPzj.js} +1 -1
- package/dist/client/assets/use-beside-D3cJpA5p.js +1 -0
- package/dist/client/assets/use-conversation-list-D5EnpVba.js +1 -0
- package/dist/client/assets/{use-fleet-active-asks-CCGrll5q.js → use-fleet-active-asks-D_QOmjg5.js} +1 -1
- package/dist/client/assets/use-mesh-node-state-3V3ADQ-G.js +1 -0
- package/dist/client/assets/{use-mesh-ops-items-BjyeFJTz.js → use-mesh-ops-items-DI9GKWlF.js} +1 -1
- package/dist/client/assets/{use-reduced-motion-CPoX8iV2.js → use-reduced-motion-CiaZHMnk.js} +1 -1
- package/dist/client/assets/use-scout-dev-flags-CkdAHlDR.js +1 -0
- package/dist/client/assets/{useAgentHoverCard-BgTLNcF-.js → useAgentHoverCard-A3QGXqIy.js} +1 -1
- package/dist/client/assets/useContentSecondaryNav-DrL_nkCZ.js +1 -0
- package/dist/client/assets/{useEmbedHeadline-DuUnwTB7.js → useEmbedHeadline-atkQVfGw.js} +1 -1
- package/dist/client/assets/usePersistentState-Y8XwSTg-.js +1 -0
- package/dist/client/assets/{usePierreRuntime-35AHf9RQ.js → usePierreRuntime-DTvcwISe.js} +1 -1
- package/dist/client/assets/users-RLK3P5U4.js +1 -0
- package/dist/client/assets/worker-rendered-v1-DmGVMlVi.png +0 -0
- package/dist/client/assets/worker-thinking-v1-ujakpzrK.png +0 -0
- package/dist/client/assets/worker-waiting-v1-DbTSsfJJ.png +0 -0
- package/dist/client/assets/worker-working-v1-BROAvJ_z.png +0 -0
- package/dist/client/assets/world-outposts-v1-DOt0i98W.png +0 -0
- package/dist/client/assets/{wrench-BfVeded5.js → wrench-B4maQJai.js} +1 -1
- package/dist/client/assets/{x-DgmmnPKt.js → x-rlMdRqJF.js} +1 -1
- package/dist/client/assets/{xterm-DnJJmrCA.js → xterm-B1zHHOLQ.js} +1 -1
- package/dist/client/assets/{zap-Bcja1lHG.js → zap-B4X0OrEw.js} +1 -1
- package/dist/client/characters/sage/sage.glb +0 -0
- package/dist/client/crew/brik-bust.webp +0 -0
- package/dist/client/crew/brik-chip-id.webp +0 -0
- package/dist/client/crew/fenn-bust.webp +0 -0
- package/dist/client/crew/fenn-chip-id.webp +0 -0
- package/dist/client/crew/lulu-bust.webp +0 -0
- package/dist/client/crew/milo-bust.webp +0 -0
- package/dist/client/crew/milo-chip-id.webp +0 -0
- package/dist/client/crew/nori-bust.webp +0 -0
- package/dist/client/crew/pip-bust.webp +0 -0
- package/dist/client/crew/pip-chip-id.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/blink-half.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/blink-shut.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/look-left.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/look-right.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/look-up.webp +0 -0
- package/dist/client/crew/sheets/eye-plate-v1/rest.webp +0 -0
- package/dist/client/crew/sheets/sprout/blink-half.webp +0 -0
- package/dist/client/crew/sheets/sprout/blink-shut.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-left.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-right.webp +0 -0
- package/dist/client/crew/sheets/sprout/look-up.webp +0 -0
- package/dist/client/crew/sprout-bust.webp +0 -0
- package/dist/client/crew/sprout-chip-id.webp +0 -0
- package/dist/client/crew/tuck-bust.webp +0 -0
- package/dist/client/crew/tuck-chip-id.webp +0 -0
- package/dist/client/crew/vex-bust.webp +0 -0
- package/dist/client/crew/vex-chip-id.webp +0 -0
- package/dist/client/crew/wrench-bust.webp +0 -0
- package/dist/client/crew/wrench-chip-id.webp +0 -0
- package/dist/client/index.html +15 -3
- package/dist/drizzle/0017_wise_silver_sable.sql +26 -0
- package/dist/drizzle/0018_message_epoch_order.sql +1 -0
- package/dist/drizzle/0019_session_actor_targets.sql +227 -0
- package/dist/drizzle/README.md +19 -0
- package/dist/drizzle/meta/0017_snapshot.json +6785 -0
- package/dist/drizzle/meta/0018_snapshot.json +6804 -0
- package/dist/drizzle/meta/0019_snapshot.json +6804 -0
- package/dist/drizzle/meta/_journal.json +21 -0
- package/dist/highlights-eq9cgrbb.scm +604 -0
- package/dist/highlights-ghv9g403.scm +205 -0
- package/dist/highlights-hk7bwhj4.scm +284 -0
- package/dist/highlights-r812a2qc.scm +150 -0
- package/dist/highlights-x6tmsnaa.scm +115 -0
- package/dist/injections-73j83es3.scm +27 -0
- package/dist/main.mjs +32163 -29049
- package/dist/node/main.mjs +7189 -6285
- package/dist/openscout-terminal-relay.mjs +391 -9
- package/dist/pairing-runtime-controller.mjs +36724 -35406
- package/dist/runtime/base-daemon.mjs +14204 -63
- package/dist/runtime/broker-daemon.mjs +23498 -3137
- package/dist/runtime/broker-process-manager.mjs +19 -5
- package/dist/runtime/mesh-discover.mjs +18 -5
- package/dist/scout-control-plane-web.mjs +58517 -36972
- package/dist/statusline.mjs +1021 -35
- package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
- package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
- package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
- package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
- package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
- package/dist/update-helper.mjs +32235 -0
- package/package.json +2 -2
- package/dist/client/assets/ActivityScreen-sfonf5SR.js +0 -1
- package/dist/client/assets/AgentAvatar-Dz79iTxB.js +0 -1
- package/dist/client/assets/AgentConfigurationScreen-DDc3udYM.js +0 -1
- package/dist/client/assets/AgentDefinitionsWorkspace-DHDS9Pgd.js +0 -1
- package/dist/client/assets/AgentDetailCard-8viaEY8b.js +0 -1
- package/dist/client/assets/AgentFloorView-DuyvyMMj.js +0 -1
- package/dist/client/assets/AgentInfoScreen-qntgg2q2.js +0 -1
- package/dist/client/assets/AgentLanesEmbedScreen-BA6fRwkD.js +0 -1
- package/dist/client/assets/AgentLanesView-96lHsoX7.js +0 -2
- package/dist/client/assets/AgentLiveActions-DlSKL60c.js +0 -1
- package/dist/client/assets/AgentMasterScreen-DHrMuQ6_.js +0 -1
- package/dist/client/assets/AgentSessions-DV9v34aq.js +0 -6
- package/dist/client/assets/AgentsConsole-DTpVhS67.js +0 -1
- package/dist/client/assets/AgentsScreen-hZ4o2I-e.js +0 -1
- package/dist/client/assets/AgentsSubnav-Ci7uWM7P.js +0 -1
- package/dist/client/assets/AtopView-D7vyQDtE.js +0 -1
- package/dist/client/assets/BackToPicker-BHicJyfc.js +0 -1
- package/dist/client/assets/BriefingDetailScreen-B-wD_Bot.js +0 -1
- package/dist/client/assets/BriefingsScreen-Cn4Mbam9.js +0 -1
- package/dist/client/assets/BrokerScreen-C8FQ5rlg.js +0 -5
- package/dist/client/assets/ChatCollapsedStrip-7Wrg8Ge0.js +0 -1
- package/dist/client/assets/CodeScreen-cLC0tJ4S.js +0 -1
- package/dist/client/assets/ConversationFeedRows-Bx0gFyG_.js +0 -1
- package/dist/client/assets/ConversationHeader-Bt2RBj93.js +0 -1
- package/dist/client/assets/ConversationPanels-o6W-cOoU.js +0 -6
- package/dist/client/assets/ConversationScreen-CkWnKXt6.css +0 -1
- package/dist/client/assets/ConversationScreen-DIU7m_aC.js +0 -2
- package/dist/client/assets/ConversationStatus-CTYOywFh.js +0 -1
- package/dist/client/assets/CrewWorkspaces-DNX-QQ1h.js +0 -1
- package/dist/client/assets/CrewWorkspaces-Diq11KDq.css +0 -1
- package/dist/client/assets/DispatchAftermath-ZCEB75hh.js +0 -1
- package/dist/client/assets/DocumentFocusViewer-D8iB6SMt.js +0 -1
- package/dist/client/assets/FlightObserveScreen-BTe1YRPr.js +0 -1
- package/dist/client/assets/FollowScreen-CkR-okdL.js +0 -1
- package/dist/client/assets/HarnessMark-DttReffF.js +0 -1
- package/dist/client/assets/HarnessesScreen-COO_Q8VY.js +0 -1
- package/dist/client/assets/HostAdvisorView-DeJ-8RZV.js +0 -1
- package/dist/client/assets/KnowledgeSearchInspector-W_zNIBRV.js +0 -1
- package/dist/client/assets/KnowledgeSearchScreen-_rxJNUUh.js +0 -1
- package/dist/client/assets/LaneTraceDetailSheet-DNIECgEl.js +0 -1
- package/dist/client/assets/MeshCanvas-DZv2ipsy.js +0 -3
- package/dist/client/assets/MeshCanvasMinimap-BXHRNb7l.js +0 -1
- package/dist/client/assets/MeshScreen-DuNvpDC5.js +0 -1
- package/dist/client/assets/MessagesScreen-dNNPFwAc.js +0 -1
- package/dist/client/assets/MissionContextRail-DnCWPzAM.js +0 -1
- package/dist/client/assets/MissionControlView-DmaThhNR.js +0 -1
- package/dist/client/assets/MissionFocusOverlay-K21ssTxv.js +0 -1
- package/dist/client/assets/MissionLeftAgentRow-CbQm4BLv.js +0 -1
- package/dist/client/assets/MissionLogPane-BLvSSIdT.js +0 -1
- package/dist/client/assets/NewAgentModal-B7qxjZlW.js +0 -1
- package/dist/client/assets/NewChatComposer-D2Ah4T-W.js +0 -19
- package/dist/client/assets/ObserveEmbedScreen-DvKGsaLv.js +0 -2
- package/dist/client/assets/OpenScoutAppShell-C9TOLB7u.js +0 -79
- package/dist/client/assets/OpsAgentsView-vIoY-AW1.js +0 -1
- package/dist/client/assets/OpsScreen-CJBwshEp.js +0 -1
- package/dist/client/assets/OpsSubnav-CjDTnp64.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-Br1eTD7G.js +0 -1
- package/dist/client/assets/ProjectAgentProfileHero-mjxNcRvw.js +0 -1
- package/dist/client/assets/ProjectsInbox-Bq29DE_o.js +0 -2
- package/dist/client/assets/ProjectsRail-kMDA0yn4.js +0 -1
- package/dist/client/assets/ProjectsScreen-BDaJYhc0.js +0 -1
- package/dist/client/assets/ProjectsThreadAside-B940p3vW.js +0 -1
- package/dist/client/assets/Provider-D0bB7q6y.js +0 -1
- package/dist/client/assets/RailRow-B88JVr62.js +0 -1
- package/dist/client/assets/RawSessionsTable-CzGhEdiZ.js +0 -1
- package/dist/client/assets/RealtimeVoiceScreen-CyP1CWsX.js +0 -1
- package/dist/client/assets/RepoDiffViewer-Bw5yMC4A.js +0 -7
- package/dist/client/assets/RepoDiffViewerLazy-DzfoFhbl.js +0 -2
- package/dist/client/assets/ScoutDeckSurface-DQoZofzH.js +0 -1
- package/dist/client/assets/SessionEmbedScreen-CpduQ0O9.js +0 -1
- package/dist/client/assets/SessionObserve-BVeTkcIl.js +0 -12
- package/dist/client/assets/SessionObserveEvidence-BkOezTGV.js +0 -1
- package/dist/client/assets/SessionRefScreen-DetLMkTT.js +0 -1
- package/dist/client/assets/SessionsScreen-B-McKw6d.js +0 -1
- package/dist/client/assets/SettingsDrawer-CPB32w0n.js +0 -3
- package/dist/client/assets/SettingsScreen-BEzYFdjz.js +0 -1
- package/dist/client/assets/SpriteAvatar-DFO4Kb4Z.js +0 -1
- package/dist/client/assets/Terminal-DWyZTZdY.js +0 -1
- package/dist/client/assets/TerminalEmbedScreen-_SSzwhWa.js +0 -1
- package/dist/client/assets/TerminalHeaderMount-CY7uIWBg.js +0 -1
- package/dist/client/assets/WorkFilesViewer-D8-4vF5l.js +0 -1
- package/dist/client/assets/agent-autocomplete-BlK8wY06.js +0 -10
- package/dist/client/assets/agent-lane-card-model-CY3OE1Xu.js +0 -1
- package/dist/client/assets/agent-lanes-model-tc-1hE6q.js +0 -2
- package/dist/client/assets/agent-master-I1W-5d-x.css +0 -1
- package/dist/client/assets/agent-master-model-DMcHeNq3.js +0 -1
- package/dist/client/assets/api-Co9aQ2Jw.js +0 -1
- package/dist/client/assets/arrow-down-BAGkhHA6.js +0 -1
- package/dist/client/assets/broker-display-Q75fupqG.js +0 -2
- package/dist/client/assets/chunk-JTPDIGGW-COJ00z94.js +0 -46
- package/dist/client/assets/chunk-T65CQEWV-H2QEKfr1.js +0 -1
- package/dist/client/assets/chunk-YOZR3KYS-CrCgXw9l.js +0 -2
- package/dist/client/assets/colors-BtO5_zlx.js +0 -1
- package/dist/client/assets/content-0RBfbCIJ.js +0 -1
- package/dist/client/assets/content-BTmnk2bl.js +0 -1
- package/dist/client/assets/content-Bk5DKhyP.js +0 -1
- package/dist/client/assets/content-Bw_8GE_S.js +0 -1
- package/dist/client/assets/content-CI4gLEWi.js +0 -1
- package/dist/client/assets/content-CLCtp9Rb.js +0 -1
- package/dist/client/assets/content-C_FAGTNk.js +0 -1
- package/dist/client/assets/content-CnnzWOE3.js +0 -1
- package/dist/client/assets/content-DKlY98pO.js +0 -1
- package/dist/client/assets/content-Df7ndXTG.js +0 -1
- package/dist/client/assets/content-DkZDzzx3.js +0 -1
- package/dist/client/assets/content-DnGmb2L0.js +0 -1
- package/dist/client/assets/content-Ds-zs-Ss.js +0 -1
- package/dist/client/assets/content-JIWSyC0f.js +0 -1
- package/dist/client/assets/content-Q3TIYC8q.js +0 -1
- package/dist/client/assets/content-evaBfvxD.js +0 -1
- package/dist/client/assets/conversation-model-C2KuZUXc.js +0 -1
- package/dist/client/assets/conversation-motion-features-BJnHs3Ul.js +0 -1
- package/dist/client/assets/discover-DutlV0ZU.js +0 -2
- package/dist/client/assets/embed-entry-CJG7WEVw.js +0 -2
- package/dist/client/assets/home-moving-signal-PHSqSBu_.js +0 -1
- package/dist/client/assets/home-now-card-C_qsI6C6.js +0 -1
- package/dist/client/assets/hooks-ME7rmhpE.js +0 -2
- package/dist/client/assets/index-C1VaWNuD.js +0 -10
- package/dist/client/assets/index-C8UCRm2W.js +0 -1
- package/dist/client/assets/index-Cn0I2Hgi.js +0 -1
- package/dist/client/assets/index-Cx6Gbr6n.js +0 -1
- package/dist/client/assets/index-i7TMxlwW.css +0 -1
- package/dist/client/assets/knowledge-search-D_bLoYtC.css +0 -1
- package/dist/client/assets/lane-ask-display-B6iCAVcd.js +0 -18
- package/dist/client/assets/lane-roster-store-DN2jxXF-.js +0 -1
- package/dist/client/assets/left-BRu9pnqx.js +0 -2
- package/dist/client/assets/left-BjS1dKNV.js +0 -2
- package/dist/client/assets/left-CL-TVLJ7.js +0 -1
- package/dist/client/assets/left-DLpsDi55.js +0 -1
- package/dist/client/assets/left-DPcM9o8Y.js +0 -1
- package/dist/client/assets/left-MmTJf1tK.js +0 -1
- package/dist/client/assets/left-P80i5V8L.js +0 -1
- package/dist/client/assets/left-advisor-CbXVzAqS.js +0 -1
- package/dist/client/assets/left-agents-7mJsiNyr.js +0 -1
- package/dist/client/assets/left-default-COK26l3H.js +0 -1
- package/dist/client/assets/left-lanes-Dbdm9Veu.js +0 -1
- package/dist/client/assets/left-mission-DSenPIyb.css +0 -1
- package/dist/client/assets/left-mission-DqGR5jby.js +0 -1
- package/dist/client/assets/library-COnWzUWv.js +0 -1
- package/dist/client/assets/mentions-BZ5SBMtc.js +0 -1
- package/dist/client/assets/mesh-buckets-CLYS8Jx8.js +0 -1
- package/dist/client/assets/mesh-view-store-CBM1za_N.js +0 -1
- package/dist/client/assets/mission-control-CnU7dNt1.css +0 -1
- package/dist/client/assets/mission-control-model-C0fByIjm.js +0 -1
- package/dist/client/assets/mission-control-store-CM8mQGg8.js +0 -1
- package/dist/client/assets/observe-BLmy4quB.js +0 -1
- package/dist/client/assets/ops-screen-giu3If_N.css +0 -1
- package/dist/client/assets/page-status-BE0-J1xY.js +0 -1
- package/dist/client/assets/paperclip-Br7wUDFl.js +0 -1
- package/dist/client/assets/perf-PX8Rx0EP.js +0 -1
- package/dist/client/assets/profile-BCvk8jOQ.js +0 -1
- package/dist/client/assets/projects-inbox-BIW7nv-H.css +0 -1
- package/dist/client/assets/resolve-panes-DhD5qmQO.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-GqhZNRPY.js +0 -1
- package/dist/client/assets/right-B_08ilv6.js +0 -1
- package/dist/client/assets/right-Brm67HOL.js +0 -1
- package/dist/client/assets/right-BveAPKBW.js +0 -1
- package/dist/client/assets/right-CpTB_-Ya.js +0 -1
- package/dist/client/assets/right-CqC4Qdot.js +0 -1
- package/dist/client/assets/right-D91j9d5Y.js +0 -1
- package/dist/client/assets/right-DaLRhYl3.js +0 -1
- package/dist/client/assets/right-Dt1wOwA5.js +0 -1
- package/dist/client/assets/right-DtzqIZQF.js +0 -1
- package/dist/client/assets/router-kfcaYqZr.js +0 -1
- package/dist/client/assets/runtime-picker-C20lTGhV.js +0 -1
- package/dist/client/assets/scout-voice-Cg1qfepC.js +0 -1
- package/dist/client/assets/secondaryNavConfig-C0Srrmy8.js +0 -1
- package/dist/client/assets/secondaryNavConfig-xssF_ubT.css +0 -1
- package/dist/client/assets/system-surfaces-redesign-kuf3wuE_.css +0 -1
- package/dist/client/assets/terminal-screen-vMICbBJh.css +0 -1
- package/dist/client/assets/use-conversation-list-UG-tMN67.js +0 -1
- package/dist/client/assets/use-scout-dev-flags-DTseRrFi.js +0 -1
- package/dist/client/assets/useContentSecondaryNav-CoIoz7JU.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as n,j as t}from"./index-DReVb7jZ.js";import{MemberAvatar as M}from"./ChatAvatar-DKBsbOqk.js";import{y as O,d as B,b as f,a as $,A as _}from"./chat-space-model-B6Jg2CY4.js";import{A as V}from"./at-sign-DM7xeppo.js";import{C as G}from"./chevron-down-CDzRQQGl.js";import{L as J}from"./loader-circle-DNUsuPWz.js";import{c as X}from"./createLucideIcon-ChvMq-zl.js";import"./SpriteAvatar-aHeF4ZQZ.js";import"./agent-state-DDhnFEEP.js";import"./colors-CFlbwC25.js";const Y=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],Z=X("arrow-up",Y);function F(a,s){const l=a.slice(0,s),o=l.lastIndexOf("@");if(o<0||o>0&&!/\s/u.test(l[o-1]??""))return null;const r=l.slice(o+1);return/\n/u.test(r)||r.split(" ").length>3?null:{start:o,text:r}}function T(a,s){const l=Math.max(0,Math.min(s,a.length)),o=a.slice(0,l),r=o.length>0&&!/\s$/u.test(o)?" ":"",k=`${o}${r}@`;return{next:`${k}${a.slice(l)}`,caret:k.length}}function ue({members:a,draft:s,onDraftChange:l,askTargetId:o,onAskTargetChange:r,onSend:k,sending:u,error:v,placeholder:E,variant:j="channel",autoFocus:P=!1}){const d=n.useRef(null),z=n.useRef(null),[p,y]=n.useState(null),[b,w]=n.useState(0),[N,C]=n.useState(!1),A=n.useMemo(()=>a.filter(O),[a]),D=n.useMemo(()=>a.filter(B),[a]),m=n.useMemo(()=>a.find(e=>e.actorId===o)??null,[a,o]),x=n.useMemo(()=>{if(!p)return[];const e=p.text.trim().toLowerCase();return[...a.filter(c=>f(c).toLowerCase().includes(e)||c.displayName.toLowerCase().includes(e))].sort((c,h)=>Number($(h))-Number($(c))).slice(0,8)},[a,p]);n.useEffect(()=>{w(0)},[p?.text]),n.useEffect(()=>{P&&d.current?.focus()},[P]);const L=n.useCallback(()=>{const e=d.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,180)}px`)},[]);n.useEffect(()=>{L()},[s,L]);const R=n.useCallback(e=>{C(!1),e==="toggle"?z.current?.focus():d.current?.focus()},[]),I=n.useCallback(e=>{const c=d.current?.selectionStart??s.length,h=p??F(s,c),S=f(e);if(!h)l(`${s}${s.endsWith(" ")||s===""?"":" "}@${S} `);else{const g=`${s.slice(0,h.start)}@${S} ${s.slice(c)}`;l(g)}O(e)&&r(e.actorId),y(null),requestAnimationFrame(()=>{const g=d.current;if(!g)return;g.focus();const K=(h?.start??s.length)+S.length+2;g.setSelectionRange(K,K)})},[s,r,l,p]),H=n.useCallback(()=>{const e=d.current,{next:i,caret:c}=T(s,e?.selectionStart??s.length);l(i),C(!1),y({start:c-1,text:""}),requestAnimationFrame(()=>{const h=d.current;h&&(h.focus(),h.setSelectionRange(c,c))})},[s,l]),Q=n.useCallback(e=>{if(!(e.nativeEvent.isComposing||e.nativeEvent.keyCode===229)){if(p&&x.length>0){if(e.key==="ArrowDown"){e.preventDefault(),w(i=>(i+1)%x.length);return}if(e.key==="ArrowUp"){e.preventDefault(),w(i=>(i-1+x.length)%x.length);return}if(e.key==="Enter"||e.key==="Tab"){e.preventDefault();const i=x[b];i&&I(i);return}if(e.key==="Escape"){e.preventDefault(),e.stopPropagation(),y(null);return}}if(e.key==="Escape"&&N){e.preventDefault(),e.stopPropagation(),C(!1);return}e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),!u&&s.trim()&&k())}},[b,I,s,x,k,N,p,u]),W=_(m?f(m):null),U=!u&&s.trim().length>0,q=m?`Send — asks ${f(m)}`:j==="thread"?"Send reply":"Send to the channel";return t.jsxs("div",{className:"chat-composer","data-variant":j,children:[j==="channel"&&m?t.jsxs("div",{className:"chat-ask-target",children:[t.jsx("span",{className:"label-sm",style:{color:"var(--dim)"},children:"Asking"}),t.jsxs("span",{className:"chip chip--sm chip--mono chip--neutral",children:[t.jsx(M,{member:m,size:14}),f(m)]}),t.jsx("button",{type:"button",className:"chat-ask-target-clear",onClick:()=>r(null),"aria-label":"Clear ask target — send as a channel update instead",children:"×"}),W?t.jsx("span",{className:"chat-composer-hint",children:W}):null]}):null,t.jsx("textarea",{ref:d,className:"chat-composer-input",rows:1,value:s,placeholder:E,"aria-label":E,disabled:u,onChange:e=>{l(e.target.value),y(F(e.target.value,e.target.selectionStart??0))},onKeyDown:Q,onBlur:()=>y(null)}),p&&x.length>0?t.jsx("div",{className:"chat-mention-popup",role:"listbox","aria-label":"Mention a member",children:x.map((e,i)=>t.jsxs("button",{type:"button",role:"option","aria-selected":i===b,"data-active":i===b,className:"chat-mention-option",onMouseDown:c=>{c.preventDefault(),I(e)},children:[t.jsx(M,{member:e,size:18}),f(e),t.jsx("span",{className:"chat-mention-kind",children:B(e)?"via API":$(e)?"agent":"person"})]},e.actorId))}):null,N&&j==="channel"?t.jsx("div",{className:"chat-mention-popup",role:"listbox","aria-label":"Choose an agent to ask",onKeyDown:e=>{e.key==="Escape"&&(e.preventDefault(),e.stopPropagation(),R("toggle"))},children:A.length===0&&D.length===0?t.jsx("div",{className:"chat-side-empty",children:"No agent has joined this channel yet. Invite one from the Invite sheet."}):t.jsxs(t.Fragment,{children:[A.map(e=>t.jsxs("button",{type:"button",role:"option","aria-selected":e.actorId===o,"data-active":e.actorId===o,className:"chat-mention-option",onClick:()=>{r(e.actorId),R("input")},children:[t.jsx(M,{member:e,size:18}),f(e),t.jsx("span",{className:"chat-mention-kind",children:e.reception.summary.toLowerCase()})]},e.actorId)),D.map(e=>t.jsxs("button",{type:"button",role:"option","aria-selected":!1,"aria-disabled":"true",disabled:!0,className:"chat-mention-option",children:[t.jsx(M,{member:e,size:18}),f(e),t.jsx("span",{className:"chat-mention-kind",children:"via API — post to reach it"})]},e.actorId)),A.length===0?t.jsx("div",{className:"chat-side-empty",children:"API participants read posts when they poll. Send a channel message instead."}):null]})}):null,v?t.jsx("p",{className:"chat-send-error",role:"alert",children:v}):null,t.jsxs("div",{className:"chat-composer-foot",children:[t.jsxs("span",{className:"chat-composer-tools",children:[t.jsx("button",{type:"button",className:"chat-composer-tool chat-composer-tool--icon",onClick:H,disabled:u,"aria-label":"Mention a member",title:"Mention a member",children:t.jsx(V,{size:14,strokeWidth:2,"aria-hidden":!0})}),j==="channel"?t.jsxs("button",{ref:z,type:"button",className:"chat-composer-tool","data-active":N,"aria-expanded":N,"aria-haspopup":"listbox",disabled:u,onClick:()=>C(e=>!e),children:[m?"Change agent":"Ask an agent",t.jsx(G,{size:12,strokeWidth:2,"aria-hidden":!0})]}):null]}),t.jsxs("span",{className:"chat-composer-right",children:[t.jsx("span",{className:"chat-enter",children:j==="thread"?"↵ send":"↵ send · ⇧↵ newline"}),t.jsx("button",{type:"button",className:"chat-composer-send",onClick:k,disabled:!U,"aria-label":u?"Sending…":q,title:u?"Sending…":q,children:u?t.jsx(J,{size:15,strokeWidth:2.2,className:"chat-composer-spin","aria-hidden":!0}):t.jsx(Z,{size:16,strokeWidth:2.4,"aria-hidden":!0})})]})]})]})}export{ue as ChannelComposer,T as mentionInsertion};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as c,j as e}from"./index-DReVb7jZ.js";import{MemberCoin as D}from"./ChatAvatar-DKBsbOqk.js";import{SpaceSwitcher as B}from"./SpaceSwitcher-BfeIf-ad.js";import{c as z}from"./chat-space-model-B6Jg2CY4.js";import"./SpriteAvatar-aHeF4ZQZ.js";import"./agent-state-DDhnFEEP.js";import"./colors-CFlbwC25.js";const G=[{value:"dark",label:"Dark"},{value:"light",label:"Light"},{value:"system",label:"System"}];function H(s,r,i){if(!s)return;const l=Array.from(s.querySelectorAll("[data-side-row]")),u=l.indexOf(r);if(u<0)return;l[(u+i+l.length)%l.length]?.focus()}function U(s){return s.replace(/^#/u,"").trim().slice(0,1).toLowerCase()||"?"}function _({viewerName:s,viewerIsHost:r,railed:i,themePreference:l,onOpenProfile:u,onThemePreference:y,onSignOut:m}){const[o,d]=c.useState(!1),n=c.useRef(null);c.useEffect(()=>{if(!o)return;n.current?.querySelector(".chat-you-menu button")?.focus();const t=v=>{const p=v.target;p instanceof Node&&n.current?.contains(p)||d(!1)};return document.addEventListener("pointerdown",t),()=>document.removeEventListener("pointerdown",t)},[o]);const f=c.useCallback(t=>{d(!1),t()},[]);return e.jsxs("div",{className:"chat-sidebar-identity",ref:n,onKeyDown:t=>{t.key==="Escape"&&o&&(t.preventDefault(),t.stopPropagation(),d(!1),n.current?.querySelector(".chat-you")?.focus())},children:[o?e.jsxs("div",{className:"chat-you-menu",role:"group","aria-label":`${s} menu`,children:[e.jsxs("div",{className:"chat-you-menu-head",children:[e.jsx(D,{name:s,size:28,title:s}),e.jsx("span",{className:"chat-you-menu-name",children:s})]}),e.jsx("div",{className:"chat-you-menu-rule"}),u?e.jsx("button",{type:"button",className:"chat-you-menu-item",onClick:()=>f(u),children:"Your member card"}):null,e.jsxs("div",{className:"chat-you-menu-group",role:"group","aria-label":"Appearance",children:[e.jsx("span",{className:"label-sm",children:"Appearance"}),e.jsx("div",{className:"chat-you-themes",children:G.map(t=>e.jsx("button",{type:"button",className:"btn btn--sm","aria-pressed":l===t.value,"data-active":l===t.value,onClick:()=>y(t.value),children:t.label},t.value))})]}),e.jsx("div",{className:"chat-you-menu-rule"}),e.jsx("button",{type:"button",className:"chat-you-menu-item",onClick:()=>f(m),children:"Sign out"})]}):null,e.jsxs("button",{type:"button",className:"chat-you","aria-expanded":o,"aria-label":i?`${s} — account menu`:void 0,onClick:()=>d(t=>!t),children:[e.jsx(D,{name:s,size:24,title:s}),i?null:e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"chat-you-who",children:[e.jsx("span",{className:"chat-you-name",children:s}),r?e.jsx("span",{className:"label-sm chat-you-role",children:"Host"}):null]}),e.jsx("span",{className:"chat-you-caret","aria-hidden":"true",children:o?"⌄":"⌃"})]})]})]})}function ee({channels:s,directs:r,spaces:i,activeSpace:l,selectedId:u,addressedChannelIds:y,canCreate:m,viewerName:o,viewerIsHost:d,railed:n,themePreference:f,onSelect:t,onSelectSpace:v,onCreate:p,onCreateSpace:I,onInvite:E,onExpandRail:A,onOpenProfile:M,onThemePreference:$,onSignOut:Y}){const j=c.useRef(null),[T,N]=c.useState(!1),[g,F]=c.useState(""),[w,L]=c.useState(""),[C,K]=c.useState(!1),S=c.useCallback(async()=>{const a=g.trim();if(!(!a||C)){K(!0);try{await p({title:a,topic:w.trim()}),F(""),L(""),N(!1)}finally{K(!1)}}},[C,p,g,w]),k=(a,b)=>{const q=y.has(a.id),x=b?a.title.replace(/^#/u,""):a.title;return e.jsxs("button",{type:"button","data-side-row":!0,className:n?"chat-rail-row":"chat-side-row","aria-label":b?z(a.title):x,"aria-current":a.id===u,"data-addressed":q,title:n?b?z(a.title):x:void 0,onClick:()=>t(a.id),onKeyDown:h=>{h.key==="ArrowDown"?(h.preventDefault(),H(j.current,h.currentTarget,1)):h.key==="ArrowUp"&&(h.preventDefault(),H(j.current,h.currentTarget,-1))},children:[n?b?e.jsxs("span",{className:"chat-rail-glyph",children:[e.jsx("span",{className:"chat-hash",children:"#"}),U(a.title)]}):e.jsx(D,{name:x,size:22,title:x}):e.jsxs(e.Fragment,{children:[b?e.jsx("span",{className:"chat-hash",children:"#"}):null,e.jsx("span",{className:"chat-row-name",children:x})]}),q?e.jsx("span",{className:"dot dot--accent dot--sm","aria-label":"Addressed to you, unanswered"}):null]},a.id)},O=i.length>0?e.jsx(B,{spaces:i,activeSlug:l,canCreate:m,railed:n,onSelect:v,onCreate:I,onExpandRail:A}):null,R=e.jsx(_,{viewerName:o,viewerIsHost:d,railed:n,themePreference:f,onOpenProfile:M,onThemePreference:$,onSignOut:Y});return n?e.jsxs("nav",{className:"chat-sidebar","data-railed":"true",ref:j,"aria-label":"Channels and direct messages",onDoubleClick:a=>{a.target.closest("button, a, [role='button']")||A()},children:[O,e.jsxs("div",{className:"chat-side-list",children:[s.map(a=>k(a,!0)),r.length>0?e.jsx("div",{className:"chat-rail-rule"}):null,r.map(a=>k(a,!1))]}),e.jsx("div",{className:"chat-sidebar-foot",children:e.jsx("button",{type:"button",className:"chat-rail-row","aria-label":"Invite someone",onClick:E,children:e.jsx("span",{className:"chat-rail-glyph",children:"+"})})}),R]}):e.jsxs("nav",{className:"chat-sidebar",ref:j,"aria-label":"Channels and direct messages",children:[O,e.jsxs("div",{className:"chat-side-list",children:[e.jsxs("div",{className:"chat-side-section",children:[e.jsx("span",{className:"label-md",children:"Channels"}),m?e.jsx("button",{type:"button",className:"chat-side-add","aria-label":"Create a channel","aria-expanded":T,onClick:()=>N(a=>!a),children:"+"}):null]}),T?e.jsxs("div",{className:"chat-create-form",children:[e.jsx("input",{className:"chat-input",value:g,autoFocus:!0,placeholder:"channel-name","aria-label":"Channel name",onChange:a=>F(a.target.value),onKeyDown:a=>{a.key==="Enter"?(a.preventDefault(),S()):a.key==="Escape"&&(a.preventDefault(),N(!1))}}),e.jsx("input",{className:"chat-input",value:w,placeholder:"Topic (optional)","aria-label":"Channel topic",onChange:a=>L(a.target.value),onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),S())}}),e.jsxs("div",{className:"chat-create-actions",children:[e.jsx("button",{type:"button",className:"btn btn--sm",disabled:C||!g.trim(),onClick:()=>{S()},children:C?"Creating…":"Create"}),e.jsx("button",{type:"button",className:"btn btn--ghost btn--sm",onClick:()=>N(!1),children:"Cancel"})]})]}):null,s.length===0?e.jsx("p",{className:"chat-side-empty",children:m?`No channels in ${i.find(a=>a.slug===l)?.title??"this space"} yet. Create one to get started.`:"You are not in any channel yet. Open the invitation you were sent."}):s.map(a=>k(a,!0)),r.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"chat-side-section",children:e.jsx("span",{className:"label-md",children:"Direct messages"})}),r.map(a=>k(a,!1))]}):null]}),e.jsx("div",{className:"chat-sidebar-foot",children:e.jsx("button",{type:"button",className:"btn btn--ghost btn--sm",onClick:E,children:"+ Invite"})}),R]})}export{ee as ChannelSidebar};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.character-family-preview{position:absolute;z-index:30;top:60px;right:20px;width:min(500px,calc(100% - 40px));max-height:calc(100% - 90px);overflow:auto;background:#141b19f7;border:1px solid #ffffff20;border-radius:18px;padding:20px;color:#e8edf4;box-shadow:0 20px 60px #0007}.character-family-preview header{display:flex;justify-content:space-between;gap:12px}.character-family-preview strong{font-size:15px}.character-family-preview p{font-size:12px;line-height:1.5;color:#9daaa4}.character-family-preview button{border:0;border-radius:6px;background:transparent;color:inherit;cursor:pointer;padding:7px 9px}.character-family-preview button:hover{background:#ffffff0c}.character-family-preview__poses{display:flex;gap:4px;flex-wrap:wrap;margin:10px 0}.character-family-preview__poses button{font-size:12px;text-transform:capitalize}.character-family-preview__poses button[aria-pressed=true]{background:#bedf9230;color:#d9edbe}.character-family-preview__cast{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.character-family-preview figure{margin:0;text-align:center}.character-family-preview figcaption{font-size:12px;margin-top:8px}.character-family-preview{width:min(760px,calc(100% - 40px))}.character-family-preview__cast{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:20px 12px}.character-family-preview__stage{height:165px;display:grid;place-items:center;cursor:grab;touch-action:none}.character-family-preview__stage:active{cursor:grabbing}.character-family-preview__missing,.character-family-preview small{font-size:10px;color:#93a298}.character-family-preview small{display:block;margin-top:4px}.character-family-preview button:focus-visible{outline:2px solid #bedf92;outline-offset:2px}.character-family-preview{background:#141b19;top:20px;max-height:calc(100% - 40px)}.character-family-preview__stage:focus-visible{outline:2px solid #bedf92;outline-offset:2px;border-radius:12px}.character-family-preview__moving{display:inline-block;transform-origin:50% 85%;pointer-events:none}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as u,j as e,E as w,h as E,t as N}from"./index-DReVb7jZ.js";import{C as _}from"./CrewSprite-Dp9KBBGY.js";const y=16,M=.05,P=.01,g=.01;function v(t,i,s,a){const x=t-s,l=i+y*x,c=Math.exp(-y*a),r=s+(x+l*a)*c,o=(i-y*l*a)*c;return Math.abs(r-s)<P&&Math.abs(o)<g?[s,0]:[r,o]}function k(t,i,s){if(!Number.isFinite(s)||s<=0)return{...t};if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return{...t};if(![t.x,t.y,t.vx,t.vy].every(Number.isFinite))return{...i,vx:0,vy:0};const a=Math.min(s,M),[x,l]=v(t.x,t.vx,i.x,a),[c,r]=v(t.y,t.vy,i.y,a);return{x,y:c,vx:l,vy:r}}function S({slug:t,name:i,pixel:s,paused:a,expression:x}){const l=u.useRef(null),c=u.useRef(null),r=u.useRef({x:0,y:0,vx:0,vy:0}),o=u.useRef(null),m=u.useRef(a);m.current=a,u.useEffect(()=>{const n=window.matchMedia("(prefers-reduced-motion: reduce)");let p=0,d=performance.now();const b=j=>{const C=Math.min(.05,(j-d)/1e3);if(d=j,!document.hidden&&!o.current&&!m.current){r.current=n.matches?{x:0,y:0,vx:0,vy:0}:k(r.current,{x:0,y:0},C);const f=r.current;c.current&&(c.current.style.transform=`translate(${f.x}px, ${f.y}px) rotate(${Math.max(-6,Math.min(6,f.vx*.018))}deg)`)}p=requestAnimationFrame(b)};return p=requestAnimationFrame(b),()=>cancelAnimationFrame(p)},[]);const h=!s||E(t);return e.jsxs("figure",{children:[e.jsx("div",{className:"character-family-preview__stage",ref:l,role:"button",tabIndex:h?0:-1,"aria-label":`Nudge ${i}`,"aria-disabled":!h||a,onKeyDown:n=>{h&&!a&&(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),r.current={x:12,y:-22,vx:0,vy:0})},onPointerDown:n=>{!h||m.current||n.button!==0||(o.current={id:n.pointerId,x:n.clientX-r.current.x,y:n.clientY-r.current.y},n.currentTarget.setPointerCapture(n.pointerId))},onPointerMove:n=>{if(o.current?.id!==n.pointerId)return;const p=Math.max(-35,Math.min(35,n.clientX-o.current.x)),d=Math.max(-45,Math.min(12,n.clientY-o.current.y));r.current={x:p,y:d,vx:0,vy:0},c.current&&(c.current.style.transform=`translate(${p}px, ${d}px)`)},onPointerUp:n=>{o.current?.id===n.pointerId&&(o.current=null,n.currentTarget.releasePointerCapture(n.pointerId))},onPointerCancel:()=>{o.current=null},children:h?e.jsx("span",{ref:c,className:"character-family-preview__moving",children:e.jsx(_,{slug:t,pixel:s,size:s?88:155,paused:a,expression:x})}):e.jsx("span",{className:"character-family-preview__missing",children:"No chip artwork yet"})}),e.jsx("figcaption",{children:i}),!s&&N[t]?e.jsx("small",{children:"Eye expressions available"}):null]})}function R({onClose:t}){const[i,s]=u.useState(!1),[a,x]=u.useState(!1),[l,c]=u.useState("rest");return e.jsxs("section",{className:"character-family-preview","aria-label":"Character family preview",children:[e.jsxs("header",{children:[e.jsxs("div",{children:[e.jsx("strong",{children:"The crew"}),e.jsx("p",{children:"Original identities · expressions · shared movement"})]}),e.jsx("button",{type:"button",onClick:t,"aria-label":"Close character preview",children:"×"})]}),e.jsxs("div",{className:"character-family-preview__poses",role:"group","aria-label":"Character artwork",children:[e.jsx("button",{type:"button","aria-pressed":!i,onClick:()=>s(!1),children:"Crew"}),e.jsx("button",{type:"button","aria-pressed":i,onClick:()=>s(!0),children:"Pixel Chip"}),e.jsx("button",{type:"button",onClick:()=>x(!a),children:a?"Resume motion":"Pause motion"})]}),i?null:e.jsx("div",{className:"character-family-preview__poses",role:"group","aria-label":"Eye expression",children:["rest","look-left","look-up","look-right"].map(r=>e.jsx("button",{type:"button","aria-pressed":r===l,onClick:()=>c(r),children:r.replace("look-","Look ")},r))}),e.jsx("div",{className:"character-family-preview__cast",children:w.map(r=>e.jsx(S,{slug:r.slug,name:r.name,pixel:i,paused:a,expression:l},r.slug))}),e.jsx("p",{children:"Drag a character gently and release. This tests shared spring motion; full-body action sprites and accessories come next."})]})}export{R as CharacterFamilyPreview};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as i}from"./index-DReVb7jZ.js";import{a as o,S as c}from"./SpriteAvatar-aHeF4ZQZ.js";import{a as l}from"./colors-CFlbwC25.js";import{a as h,n as p,b as u}from"./chat-space-model-B6Jg2CY4.js";import"./agent-state-DDhnFEEP.js";function s(t){return`color-mix(in srgb, var(--muted) 82%, ${l(t)})`}function d({name:t,size:a=24,className:n,title:e}){const r={width:a,height:a,background:s(t),fontSize:Math.max(7,Math.round(a*.38))};return i.jsx("span",{className:`chat-coin${n?` ${n}`:""}`,style:r,title:e,children:p(t)})}function x({member:t,size:a=24,className:n}){const e=o({harness:t.harness??null,state:t.activity?.status??null}),r=t.owner?.displayName?.trim()||null;return i.jsxs("span",{className:`chat-sprite${n?` ${n}`:""}`,style:{width:a,height:a},title:u(t),children:[i.jsx(c,{name:t.displayName||t.actorId,size:a,...e.hue===void 0?{}:{hue:e.hue},tone:e.tone,tile:!0}),r?i.jsx("span",{className:"chat-sprite-owner",style:{background:s(r),width:Math.max(10,Math.round(a*.46)),height:Math.max(10,Math.round(a*.46)),fontSize:Math.max(5,Math.round(a*.24))},"aria-hidden":"true",children:r.slice(0,1).toUpperCase()}):null]})}function f({member:t,size:a=24,className:n}){return h(t)?i.jsx(x,{member:t,size:a,...n?{className:n}:{}}):i.jsx(d,{name:t.displayName||t.actorId,size:a,...n?{className:n}:{},title:t.displayName})}function N({members:t,countLabel:a,onOpen:n}){const e=t.slice(0,4);return i.jsxs("button",{type:"button",className:"chat-facepile",onClick:n,"aria-label":`Members: ${a}`,children:[i.jsx("span",{className:"chat-facepile-faces",children:e.map(r=>i.jsx(f,{member:r,size:20,className:"chat-facepile-face"},r.actorId))}),i.jsx("span",{className:"chat-pile-count",children:a})]})}export{x as AgentSprite,N as Facepile,f as MemberAvatar,d as MemberCoin,s as coinFill};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e,r as d}from"./index-DReVb7jZ.js";import{c as f}from"./clipboard-e3fSpeo7.js";import{MemberAvatar as x}from"./ChatAvatar-DKBsbOqk.js";import{m as N,b as j,o as v,t as b,p as T,q as k,s as w,e as S}from"./chat-space-model-B6Jg2CY4.js";import"./SpriteAvatar-aHeF4ZQZ.js";import"./agent-state-DDhnFEEP.js";import"./colors-CFlbwC25.js";function O({value:t,label:s,className:a="btn btn--sm",copiedLabel:n="Copied",onCopyFailed:c}){const[m,l]=d.useState(!1),[h,u]=d.useState(!1),i=d.useRef(null);d.useEffect(()=>()=>{i.current&&clearTimeout(i.current)},[]);const p=d.useCallback(()=>{const r=o=>{l(o),u(!o),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{l(!1),u(!1)},1500)};f(t).then(o=>{r(o),o||c?.()}).catch(()=>{r(!1),c?.()})},[t,c]);return e.jsx("button",{type:"button",className:a,onClick:p,"aria-live":"polite",children:h?"Copy failed — select the text":m?n:s})}function g({request:t,target:s,withTarget:a}){const n=k(t,s?{label:j(s),reception:s.reception}:null);return e.jsxs("div",{className:"chat-ask-card","data-tone":n.tone,children:[e.jsx("span",{className:"label-sm",children:"Tracked request"}),e.jsx("span",{className:"chip chip--sm chip--mono chip--ghost chat-ask-chip","data-tone":n.tone,"aria-label":n.ariaLabel,children:a?n.textWithTarget:n.text})]})}function A({message:t,fallbackLabels:s}){const a=T(t,s??[]);return e.jsx("div",{className:"chat-turn-body",children:a.map((n,c)=>n.kind==="mention"?e.jsx("span",{className:"chat-mention",children:n.text},c):e.jsx("span",{children:n.text},c))})}function z({message:t,members:s,nowMs:a,request:n,replyCount:c,lastReplyAt:m,onOpenThread:l,onOpenMember:h,withTargetOnChip:u=!0}){const i=N(s,t.actorId),p=n?s.get(n.targetActorId)??null:null,r=j(i);return e.jsxs("article",{className:"chat-turn",children:[h?e.jsx("button",{type:"button",onClick:()=>h(i.actorId),"aria-label":`Open ${r}'s member card`,children:e.jsx(x,{member:i,size:32})}):e.jsx(x,{member:i,size:32}),e.jsxs("div",{children:[e.jsxs("div",{className:"chat-turn-meta",children:[e.jsx("span",{className:"chat-who",children:r}),e.jsx("time",{className:"chat-when",dateTime:new Date(t.createdAt).toISOString(),children:v(t.createdAt)})]}),e.jsx(A,{message:t}),n?e.jsx(g,{request:n,target:p,withTarget:u}):null,l?e.jsx("button",{type:"button",className:"chat-thread-stub","data-empty":c&&c>0?void 0:"true",onClick:l,"aria-label":c&&c>0?`Open thread, ${b(c,m??null,a)}`:`Reply in thread to ${r}`,children:c&&c>0?`⌵ ${b(c,m??null,a)}`:"⌵ Reply in thread"}):null]})]})}function B({member:t,nowMs:s}){const a=w(t,s);return a?e.jsxs("div",{className:"chat-conn","aria-label":a.ariaLabel,children:[e.jsxs("span",{className:"chat-conn-state",children:[a.showDot?e.jsx("span",{className:"dot dot--neutral","aria-hidden":"true"}):null,a.summary]}),e.jsx("span",{className:"chat-conn-detail",children:a.detail}),a.routeNote?e.jsx("span",{className:"chat-conn-detail",children:a.routeNote}):null,a.evidence?e.jsx("span",{className:"chat-conn-evidence",children:a.evidence}):null]}):null}function C({label:t,children:s}){return e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"chat-k",children:t}),e.jsx("span",{className:"chat-v",children:s})]})}function F({at:t,nowMs:s}){return e.jsx("time",{className:"chat-when",dateTime:new Date(t).toISOString(),children:S(t,s)})}export{O as CopyAction,C as Field,A as MessageBody,B as ReceptionBlock,F as TimeAgo,g as TrackedAskCard,z as Turn};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e,r as j}from"./index-DReVb7jZ.js";import{a as $,i as O,d as w,c as W}from"./conversations-Cbg9h_Af.js";import{l as B,i as q,a as E,p as T}from"./conversation-prefs-DNre-Lcx.js";import{m as G,c as J}from"./machine-scope-DJt9RZ2w.js";import{u as K,f as Q}from"./use-fleet-active-asks-D_QOmjg5.js";import{d as X}from"./router-C-MF5-mb.js";import{l as D,i as C,s as Y}from"./sessionRead-CvFz2RHv.js";import{u as Z}from"./use-conversation-list-D5EnpVba.js";import{u as ee}from"./Provider-CNZluAZb.js";import{i as se}from"./agent-state-DDhnFEEP.js";import{A as te}from"./AgentAvatar-NZOqcsB2.js";/* empty css */function ae({children:n,count:t,tone:a="default",title:l,onClick:i}){const d=["collapsed-strip-label",a!=="default"&&`collapsed-strip-label--${a}`,t!=null&&"collapsed-strip-label--has-count",i&&"collapsed-strip-label--button"].filter(Boolean).join(" "),o=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"collapsed-strip-label-mark","aria-hidden":!0}),i?e.jsx("span",{className:"collapsed-strip-label-expand","aria-hidden":!0,children:"›"}):null,e.jsx("span",{className:"collapsed-strip-label-text",children:n}),t!=null?e.jsx("span",{className:"collapsed-strip-label-count",children:t}):null]});return i?e.jsx("button",{type:"button",className:d,title:l??n,"aria-label":l??n,onClick:i,children:o}):e.jsx("div",{className:d,title:l??n,children:o})}function ne({label:n,emptyMark:t="·",showLabel:a=!0,labelTone:l="default",labelCount:i,onLabelClick:d,children:o}){const v=!o||Array.isArray(o)&&o.length===0,p=a?e.jsx(ae,{tone:l,count:i,onClick:d,title:d?`Expand ${n}`:void 0,children:n}):null;return v?e.jsxs("div",{className:"collapsed-strip collapsed-strip--empty","aria-hidden":!0,children:[p,e.jsx("span",{className:"collapsed-strip-empty-mark",children:t})]}):e.jsxs("div",{className:"collapsed-strip",role:"list","aria-label":n,children:[p,o]})}function Ie(){return e.jsx("div",{className:"collapsed-strip-rule","aria-hidden":!0})}function le({title:n,active:t,tone:a="default",ava:l,avaColor:i,glyph:d,avatarNode:o,dot:v,pinned:p,onClick:b}){const m=["collapsed-chip",a==="channel"&&"collapsed-chip--channel",a==="neutral"&&"collapsed-chip--neutral",a==="attention"&&"collapsed-chip--attention",a==="unread"&&"collapsed-chip--unread",t&&"collapsed-chip--active",p&&"collapsed-chip--pinned"].filter(Boolean).join(" ");return e.jsxs("button",{type:"button",role:"listitem",className:m,title:n,"aria-label":n,"aria-current":t?"page":void 0,onClick:b,children:[o?e.jsx("span",{className:"collapsed-chip-avatar-wrap",children:o}):l?e.jsx("span",{className:"collapsed-chip-ava",style:i?{"--ava-color":i}:void 0,children:l}):e.jsx("span",{className:`collapsed-chip-glyph${typeof d=="string"&&d.length>1?" collapsed-chip-glyph--long":""}`,children:d}),v?e.jsx("span",{className:["collapsed-chip-dot",v==="attention"&&"collapsed-chip-dot--attention",v==="live"&&"collapsed-chip-dot--live"].filter(Boolean).join(" "),"aria-hidden":!0}):null,p?e.jsx("span",{className:"collapsed-chip-pin","aria-hidden":!0}):null]})}function we(n){const t=n.trim(),a=t.split(/[\s/_-]+/).filter(Boolean);if(a.length>=2){const l=a[a.length-1];return/^\d+$/.test(l)&&a.length>=3?(a[a.length-2][0]??"?").toUpperCase():(l[0]??"?").toUpperCase()}return(t[0]??"?").toUpperCase()}const ie=3,oe=3,re=4,ce=3;function S(n,t){return[...n].sort((a,l)=>{const i=C(a.lastMessageAt,a.id,t)?0:1,d=C(l.lastMessageAt,l.id,t)?0:1;return i!==d?i-d:(l.lastMessageAt??0)-(a.lastMessageAt??0)})}function de({onExpand:n}){const{route:t,navigate:a,agents:l}=ee(),{sessions:i}=Z(),d=K(),[o,v]=j.useState(()=>B()),[p,b]=j.useState(()=>D()),m=X(t),y=j.useMemo(()=>G(l,m),[l,m]),P=j.useMemo(()=>{const s=new Map;for(const f of l)s.set(f.id,f);return s},[l]),R=t.view==="messages"||t.view==="conversation"?t.conversationId:void 0;j.useEffect(()=>{v(B()),b(D())},[]);const r=j.useMemo(()=>{const s=J(i,y,m).filter(c=>!q(c.id,o)),f=s.filter(c=>E(c.id,o)).sort((c,x)=>T(x.id,o)-T(c.id,o)||(x.lastMessageAt??0)-(c.lastMessageAt??0)).slice(0,ie),g=new Set(f.map(c=>c.id)),h=s.filter(c=>!g.has(c.id));return{pinned:f,channels:S(h.filter(w),p).slice(0,oe),dms:S(h.filter(O),p).slice(0,re),observed:S(h.filter($),p).slice(0,ce),totals:{channels:h.filter(w).length,dms:h.filter(O).length,observed:h.filter($).length,pinned:s.filter(c=>E(c.id,o)).length}}},[i,y,m,o,p]),U=s=>{b(Y(s.id)),a({view:"messages",conversationId:s.id,...m?{machineId:m}:{}})},k=[...r.pinned,...r.channels,...r.dms,...r.observed],A=k.filter(s=>C(s.lastMessageAt,s.id,p)).length,M=(s,f=!1)=>{const g=W(s),h=w(s),c=C(s.lastMessageAt,s.id,p),x=h?void 0:he(s,g),V=x??g,I=s.agentId?P.get(s.agentId):void 0,L=Q(d,s),_=L?.status==="needs_attention",z=L?.status==="working",F=I?se(I.state):!1,H=_?"attention":c?"unread":z||F?"live":null;return e.jsx(le,{title:f?`${g} · pinned`:x?`${g} · ${x}`:g,active:s.id===R,tone:h?"channel":_?"attention":c?"unread":"default",avatarNode:h?void 0:e.jsx(te,{agent:I,name:V,size:28,tile:!0,presence:!1}),glyph:h?pe(g):void 0,dot:H,pinned:f,onClick:()=>U(s)},s.id)},u=[];return r.pinned.length&&u.push(e.jsx(N,{mark:"Pin",count:r.totals.pinned,showMark:u.length>0,children:r.pinned.map(s=>M(s,!0))},"pin")),r.channels.length&&u.push(e.jsx(N,{mark:"#",count:r.totals.channels,showMark:u.length>0,children:r.channels.map(s=>M(s))},"ch")),r.dms.length&&u.push(e.jsx(N,{mark:"DM",count:r.totals.dms,showMark:u.length>0,children:r.dms.map(s=>M(s))},"dm")),r.observed.length&&u.push(e.jsx(N,{mark:"Obs",count:r.totals.observed,showMark:u.length>0,children:r.observed.map(s=>M(s))},"obs")),e.jsx(ne,{label:"Chat",emptyMark:"#",labelTone:A>0?"accent":"default",labelCount:A>0?A:k.length||void 0,onLabelClick:n,children:u})}function pe(n){const a=n.replace(/^#+/,"").match(/[a-z0-9]/i)?.[0]?.toLowerCase()??"?";return e.jsxs("span",{className:"collapsed-chip-channel-badge",children:[e.jsx("span",{className:"collapsed-chip-channel-hash","aria-hidden":!0,children:"#"}),e.jsx("span",{className:"collapsed-chip-channel-text",children:a})]})}function he(n,t){const a=t.toLowerCase();for(const l of n.participants??[]){const i=l.displayName||l.label;if(i&&i.toLowerCase()!==a)return i}}function N({mark:n,count:t,showMark:a=!0,children:l}){return e.jsxs("div",{className:"collapsed-strip-section",role:"group","aria-label":n,children:[a?e.jsxs("div",{className:"collapsed-strip-section-mark",title:t!=null?`${n} · ${t}`:n,children:[e.jsx("span",{className:"collapsed-strip-section-mark-text",children:n}),t!=null&&t>0?e.jsx("span",{className:"collapsed-strip-section-mark-count",children:t>99?"99+":t}):null]}):null,l]})}const Se=Object.freeze(Object.defineProperty({__proto__:null,ChatCollapsedStrip:de},Symbol.toStringTag,{value:"Module"}));export{ne as C,de as a,le as b,we as c,Ie as d,Se as e};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as e}from"./index-DReVb7jZ.js";import{MemberAvatar as T}from"./ChatAvatar-DKBsbOqk.js";import{ChannelComposer as D}from"./ChannelComposer-BVItWlEz.js";import{Turn as I,Field as j,CopyAction as K,ReceptionBlock as q}from"./ChatBits-CLJ71hTY.js";import{c as w,m as W,a as f,b as x,d as G,e as J,f as Q,g as U,h as V,j as X,k as Y,l as Z}from"./chat-space-model-B6Jg2CY4.js";import"./SpriteAvatar-aHeF4ZQZ.js";import"./agent-state-DDhnFEEP.js";import"./colors-CFlbwC25.js";import"./at-sign-DM7xeppo.js";import"./createLucideIcon-ChvMq-zl.js";import"./chevron-down-CDzRQQGl.js";import"./loader-circle-DNUsuPWz.js";import"./clipboard-e3fSpeo7.js";function _(s){return s.length>12?`…${s.slice(-8)}`:s}function E({member:s,viewerActorId:i,onOpen:c}){const n=U(s,i),o=s.reception.state==="disconnected"||s.reception.state==="unavailable";return e.jsxs("button",{type:"button",className:"chat-member-row",onClick:()=>c(s.actorId),children:[e.jsx(T,{member:s,size:24}),e.jsx("span",{className:"chat-member-name",children:x(s)}),n?e.jsx("span",{className:"chat-member-fact","data-stranded":o&&n!=="you",children:n}):null]})}function ee({invite:s,nowMs:i,onRevoke:c,busy:n,canRevoke:o}){const d=V(s),p=s.invitee?.displayName?.trim(),l=X(s.expiresAt,i);return e.jsxs("div",{className:"chat-invite-row",children:[e.jsx("span",{className:"chat-token-hint",children:Y(s.tokenHint)}),e.jsx("span",{children:[Z(d),p?`for ${p}`:null,l].filter(Boolean).join(" · ")}),o?e.jsx("button",{type:"button",className:"chat-invite-revoke",disabled:n,onClick:()=>c(s.id),children:"Revoke"}):s.state==="active"?e.jsx("span",{}):e.jsx("span",{className:"chat-invite-revoke","aria-hidden":"false",children:s.state})]})}function je({view:s,channel:i,members:c,membersById:n,invites:o,inviteError:d,revokingInviteId:p,viewerActorId:l,viewerIsOperator:R,nowMs:h,threadRoot:b,threadReplies:k,threadRequest:A,threadDraft:O,onThreadDraftChange:F,onSendThreadReply:L,threadSending:M,threadError:P,onClose:u,onBack:$,onOpenMember:B,onMention:H,onRevokeInvite:S,onInvite:g,overlay:N}){if(s.kind==="none")return null;const y=w(i.title);if(s.kind==="thread")return e.jsxs("aside",{className:"chat-rpanel","data-overlay":N,"aria-label":"Thread",children:[e.jsxs("header",{className:"chat-rpanel-head",children:[e.jsx("span",{className:"chat-rpanel-title",children:"Thread"}),e.jsx("span",{className:"chat-rpanel-scope",children:y}),e.jsx("button",{type:"button",className:"chat-rpanel-close",onClick:u,"aria-label":"Close panel",children:"×"})]}),e.jsxs("div",{className:"chat-rpanel-body",children:[b?e.jsx("div",{className:"chat-anchor-msg",children:e.jsx(I,{message:b,members:n,nowMs:h,request:A,withTargetOnChip:!1})}):e.jsx("p",{className:"chat-feed-notice",children:"This thread's anchor message is no longer in the channel feed."}),k.map(a=>e.jsx(I,{message:a,members:n,nowMs:h},a.id)),k.length===0&&b?e.jsx("p",{className:"chat-feed-notice",children:"No replies yet."}):null,e.jsx("div",{className:"chat-thread-composer",children:e.jsx(D,{members:c,draft:O,onDraftChange:F,askTargetId:null,onAskTargetChange:()=>{},onSend:L,sending:M,error:P,placeholder:"Reply in thread…",variant:"thread"})})]})]});if(s.kind==="member"){const a=W(n,s.actorId),r=f(a),m=a.owner?.displayName?.trim()??null,t=a.reception.attachedSessionId,z=r&&a.owner?.actorId===l;return e.jsxs("aside",{className:"chat-rpanel","data-overlay":N,"aria-label":"Member",children:[e.jsxs("header",{className:"chat-rpanel-head",children:[e.jsx("button",{type:"button",className:"chat-rpanel-back",onClick:$,"aria-label":"Back to members",children:"‹"}),e.jsx("span",{className:"chat-rpanel-title",children:"Member"}),e.jsx("button",{type:"button",className:"chat-rpanel-close",onClick:u,"aria-label":"Close panel",children:"×"})]}),e.jsxs("div",{className:"chat-rpanel-body",children:[e.jsxs("div",{className:"chat-mcard-head",children:[e.jsx(T,{member:a,size:32}),e.jsxs("div",{children:[e.jsx("div",{className:"chat-mcard-name",children:x(a)}),e.jsx("div",{className:"chat-mcard-sub",children:[r?"agent":a.kind==="unknown"?"former member":"person",G(a)?"via API":null,m?`owned by ${m}`:null,a.actorId===l?"you":null].filter(Boolean).join(" · ")})]})]}),a.harness||a.projectRoot||t||a.nodeId?e.jsxs("div",{className:"chat-psec chat-kv",children:[a.harness?e.jsx(j,{label:"Harness",children:[a.harness,a.model].filter(Boolean).join(" · ")}):null,a.projectRoot?e.jsx(j,{label:"Project",children:a.projectRoot}):null,t?e.jsxs(j,{label:"Session",children:[_(t),e.jsx(K,{value:t,label:"copy",className:"chat-copy-inline",copiedLabel:"ok"})]}):null,a.nodeId?e.jsx(j,{label:"Node",children:a.nodeId}):null]}):null,r?e.jsxs("div",{className:"chat-psec",children:[e.jsx(q,{member:a,nowMs:h}),a.reception.redeemedAt?e.jsx("span",{className:"chat-conn-evidence",children:`joined ${J(a.reception.redeemedAt,h)}`}):null]}):null,e.jsxs("div",{className:"chat-psec",style:{display:"flex",gap:"var(--space-sm)",flexWrap:"wrap"},children:[e.jsx("button",{type:"button",className:"btn btn--sm",onClick:()=>H(a.actorId),children:"Mention"}),z||a.actorId===l?e.jsx("button",{type:"button",className:"btn btn--sm",onClick:g,children:"Copy agent invitation"}):null]})]})]})}const v=[...c].sort((a,r)=>{const m=Number(f(a)),t=Number(f(r));return m!==t?m-t:x(a).localeCompare(x(r))}),C=o.filter(a=>a.state==="active");return e.jsxs("aside",{className:"chat-rpanel","data-overlay":N,"aria-label":"Members",children:[e.jsxs("header",{className:"chat-rpanel-head",children:[e.jsx("span",{className:"chat-rpanel-title",children:"Members"}),e.jsx("span",{className:"chat-rpanel-scope",children:y}),e.jsx("button",{type:"button",className:"chat-rpanel-close",onClick:u,"aria-label":"Close panel",children:"×"})]}),e.jsxs("div",{className:"chat-rpanel-body",children:[e.jsxs("div",{className:"chat-psec",children:[e.jsx("span",{className:"label-sm",children:"In this channel"}),v.length===0?e.jsx("p",{className:"chat-feed-notice",children:"The roster is empty."}):v.map(a=>e.jsx(E,{member:a,viewerActorId:l,onOpen:B},a.actorId))]}),e.jsxs("div",{className:"chat-psec",children:[e.jsx("span",{className:"label-sm",children:"Invited"}),d?e.jsx("p",{className:"chat-sheet-error",children:d}):null,C.length===0&&!d?e.jsx("p",{className:"chat-feed-notice",children:"No outstanding invitations."}):C.map(a=>e.jsx(ee,{invite:a,nowMs:h,onRevoke:S,busy:p===a.id,canRevoke:Q(a,{actorId:l,isOperator:R})},a.id)),e.jsx("div",{style:{marginTop:"var(--space-sm)"},children:e.jsx("button",{type:"button",className:"btn btn--sm",onClick:g,children:"Invite"})})]})]})]})}export{je as ChatRightPanel,E as MemberRow};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as t,j as s}from"./index-DReVb7jZ.js";import{c as E,C as W,D as X}from"./chat-api-BPVC0asu.js";import{R as mt}from"./RailToggle-BwmY70B8.js";import{useScoutStandaloneAppearance as ft,ChatSpaceTheme as Ce}from"./ChatSpaceTheme-D37Jk7bl.js";import{ChannelSidebar as pt}from"./ChannelSidebar-B-2spawY.js";import{ChannelComposer as gt}from"./ChannelComposer-BVItWlEz.js";import{ChatRightPanel as wt}from"./ChatRightPanel-pKQtkAgl.js";import{Facepile as bt}from"./ChatAvatar-DKBsbOqk.js";import{Turn as vt}from"./ChatBits-CLJ71hTY.js";import{InviteSheet as yt}from"./InviteSheet--5Zjct25.js";import{JumpPalette as St}from"./JumpPalette-BmiSOEmp.js";import{u as Ct,v as It,w as Et,x as kt,b as xt,y as Tt,z as Nt,c as De,B as jt,F as Rt,R as Mt}from"./chat-space-model-B6Jg2CY4.js";import"./api-DSqpVKC7.js";import"./Provider-CNZluAZb.js";import"./provider-DwmCoSlc.js";import"./router-C-MF5-mb.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-3RfJpen8.js";import"./machine-scope-DJt9RZ2w.js";import"./sse-A8AyLH0g.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./agent-state-DDhnFEEP.js";import"./scoutbot-Bk3nyrkj.js";import"./NewChatComposer-BEXS8vV6.js";import"./runtime-picker-C_AVYF63.js";import"./scout-voice-CqAyfblr.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-DNUsuPWz.js";import"./createLucideIcon-ChvMq-zl.js";import"./conversation-model-m8HhzroS.js";import"./colors-CFlbwC25.js";import"./time-Dhsh_2EG.js";import"./conversations-Cbg9h_Af.js";import"./index-CbqBwfIW.js";import"./HarnessMark-DSvM_H7H.js";import"./NewChatOrigin-C8ROO4ps.js";import"./keyboard-nav-CJXPaHXj.js";import"./x-rlMdRqJF.js";import"./chevron-down-CDzRQQGl.js";import"./search-UsM-9-_W.js";import"./file-text-DP6txVW-.js";import"./model-CBkMvT1w.js";import"./DocumentFocusViewer-DlMiEALb.js";import"./TextDocumentSurface-BK6Qy41F.js";import"./index-kkXUq-zf.js";import"./chevron-right-DKGTLiqc.js";import"./folder-B_S7gBVr.js";import"./chevron-up-DX7R6KY2.js";import"./code-xml-Cmadr3pQ.js";import"./arrow-left-DFfKAq0d.js";import"./arrow-right-DmAWnyAH.js";import"./chunk-HRAB3GC3-Dvk_QpRq.js";import"./SpaceSwitcher-BfeIf-ad.js";import"./SpriteAvatar-aHeF4ZQZ.js";import"./at-sign-DM7xeppo.js";import"./clipboard-e3fSpeo7.js";import"./users-RLK3P5U4.js";import"./bot-BhAVbcCA.js";import"./monitor-C7_cHlkC.js";function Fe(){let r=0;return{begin(){const i=r;return()=>i===r},reset(){r+=1}}}const Lt=["ready","channel.changed"],At=350,Pt=2e3,Ot=3e4,_t=3;function Dt(r,i){const d=`/api/channels/${encodeURIComponent(r)}/events`;return i&&i!=="home"?`${d}?space=${encodeURIComponent(i)}`:d}const Ft={now:()=>Date.now(),setTimer:(r,i)=>setTimeout(r,i),clearTimer:r=>clearTimeout(r)};function Ut(r){const i=globalThis.EventSource;return typeof i!="function"?null:new i(r,{withCredentials:!0})}function $t(r){const{channelId:i,space:d,onInvalidate:l,createEventSource:u=Ut,onStatus:k,minRefreshMs:T=At,clock:m=Ft}=r;let f=!1,a=null,v=null,o=null,N=!1,S=!1,M=Number.NEGATIVE_INFINITY,b=!1,x=0,V=0;const C=p=>{f||k?.(p)},ie=()=>{v!==null&&(m.clearTimer(v),v=null)},F=()=>{o!==null&&(m.clearTimer(o),o=null)},z=()=>{v=null,!f&&(N=!0,S=!1,M=m.now(),Promise.resolve().then(()=>f?void 0:l()).catch(()=>{}).then(()=>{N=!1,S&&!f&&Y()}))},Y=()=>{if(f)return;if(N){S=!0;return}if(v!==null)return;const p=Math.max(0,T-(m.now()-M));if(p===0){z();return}v=m.setTimer(z,p)},U=()=>{const y=Math.min(Pt*2**Math.max(0,(b?V:x)-1),Ot);C("retrying"),F(),o=m.setTimer(()=>{o=null,L()},y)};function L(){if(f||a!==null)return;C("connecting");let p=null;try{p=u(Dt(i,d))}catch{p=null}if(!p){C("unsupported");return}a=p;const y=p,q=()=>!f&&a===y;y.addEventListener("open",()=>{q()&&(b=!0,x=0,V=0,C("live"))});for(const G of Lt)y.addEventListener(G,()=>{q()&&Y()});y.addEventListener("error",()=>{if(q()){if(a=null,y.close(),b){V+=1,U();return}if(x+=1,x>=_t){C("unavailable");return}U()}})}return L(),()=>{if(f)return;f=!0,ie(),F(),S=!1;const p=a;a=null,p?.close()}}const ke="channel",xe="space",Be="openscout.chat.rail";function Bt(){if(typeof window>"u")return!1;try{return window.localStorage.getItem(Be)==="1"}catch{return!1}}function Ht(r){if(!(typeof window>"u"))try{window.localStorage.setItem(Be,r?"1":"0")}catch{}}function Ie(){return typeof window>"u"?null:new URLSearchParams(window.location.search).get(ke)?.trim()||null}function Ue(){return typeof window>"u"?X:new URLSearchParams(window.location.search).get(xe)?.trim()||X}function ce(r,i){if(typeof window>"u")return;const d=new URL(window.location.href);r.channelId?d.searchParams.set(ke,r.channelId):d.searchParams.delete(ke),r.space&&r.space!==X?d.searchParams.set(xe,r.space):d.searchParams.delete(xe);const l=`${d.pathname}${d.search}`;i?window.history.replaceState(null,"",l):window.history.pushState(null,"",l)}function $e(r){const[i,d]=t.useState(()=>typeof window<"u"&&window.matchMedia?window.matchMedia(r).matches:!1);return t.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const l=window.matchMedia(r),u=()=>d(l.matches);return u(),l.addEventListener("change",u),()=>l.removeEventListener("change",u)},[r]),i}function Ee(r,i,d){const l=t.useRef(r);l.current=r,t.useEffect(()=>{if(!d)return;let u=!1,k=!1;const T=()=>{u||k||typeof document<"u"&&document.hidden||(k=!0,l.current().finally(()=>{k=!1}))},m=setInterval(T,i),f=()=>{typeof document<"u"&&!document.hidden&&T()};return document.addEventListener("visibilitychange",f),()=>{u=!0,clearInterval(m),document.removeEventListener("visibilitychange",f)}},[d,i])}function Kt(r,i,d,l){const u=t.useRef(d);u.current=d,t.useEffect(()=>{if(!(!i||!r))return $t({channelId:r,space:l,onInvalidate:()=>u.current()})},[r,i,l])}function Zn(){const{theme:r,preference:i,setPreference:d}=ft(),[l,u]=t.useState("loading"),[k,T]=t.useState(null),[m,f]=t.useState(null),[a,v]=t.useState(()=>Ie()),[o,N]=t.useState(Ue),[S,M]=t.useState(null),[b,x]=t.useState([]),[V,C]=t.useState([]),[ie,F]=t.useState(null),[z,Y]=t.useState(null),[U,L]=t.useState(null),[p,y]=t.useState(!1),[q,G]=t.useState({}),[He,Te]=t.useState({}),[Ke,Ne]=t.useState({}),[$,A]=t.useState({kind:"none"}),[le,Z]=t.useState(!1),[de,ee]=t.useState(!1),[ue,je]=t.useState(!1),[Ve,Re]=t.useState(null),[he,Me]=t.useState(!1),[Ye,Le]=t.useState(null),[te,qe]=t.useState(()=>Date.now()),[Ge,P]=t.useState(()=>Ie()?"channel":"list"),[Qe,Je]=t.useState(Bt),me=t.useRef(null),Ae=t.useRef(null),[j]=t.useState(Fe),[fe]=t.useState(Fe),Pe=t.useRef(o);Pe.current!==o&&(Pe.current=o,fe.reset());const pe=$e("(max-width: 899px)"),ge=$e("(max-width: 1199px)"),B=t.useCallback(async e=>{const n=fe.begin();try{const c=await E.bootstrap({recoverSession:!new URLSearchParams(window.location.search).has("signedOut"),space:o});if(!n())return;f(c),c.space&&c.space!==o&&N(c.space),u("ready"),T(null)}catch(c){if(!n())return;if(c instanceof W&&c.isUnauthenticated){u("gate"),T(c.message);return}e?(u("error"),T(c instanceof Error?c.message:"Scout Chat could not be reached.")):y(!0)}},[o,fe]);t.useEffect(()=>{B(!0)},[B]),Ee(()=>B(!1),jt,l==="ready");const I=t.useMemo(()=>Ct((m?.channels??[]).filter(e=>e.kind==="channel")),[m]),R=t.useMemo(()=>(m?.channels??[]).filter(e=>e.kind==="direct"||e.kind==="group_direct"),[m]),Oe=t.useMemo(()=>new Set([...I,...R].map(e=>e.id)),[I,R]),We=t.useMemo(()=>m?.spaces?.length?m.spaces:[{slug:o,title:o===X?"Home":o,conversationId:null,isDefault:o===X,channelCount:I.length}],[m,I.length,o]);t.useEffect(()=>{if(l!=="ready"||a&&Oe.has(a))return;const e=I[0]?.id??R[0]?.id??null;e!==a&&(v(e),ce({channelId:e,space:o},!0))},[a,I,R,l,Oe,o]),t.useEffect(()=>{const e=()=>{const n=Ie();v(n),N(Ue()),A({kind:"none"}),P(n?"channel":"list")};return window.addEventListener("popstate",e),()=>window.removeEventListener("popstate",e)},[]);const g=t.useMemo(()=>[...I,...R].find(e=>e.id===a)??null,[I,a,R]),H=t.useCallback(async()=>{if(!a)return;const e=j.begin();try{const n=await E.feed(a,o);if(!e())return;M(n),L(null),y(!1)}catch(n){if(!e())return;if(n instanceof W&&n.isUnauthenticated){L(n.message);return}y(!0)}},[a,j,o]),Q=t.useCallback(async()=>{if(!a)return;const e=j.begin();try{const n=await E.members(a,o);if(!e())return;x(n.members??[])}catch{if(!e())return;y(!0)}},[a,j,o]),J=t.useCallback(async()=>{if(!a)return;const e=j.begin();try{const n=await E.invites(a,o);if(!e())return;C(n.invites??[]),F(null)}catch(n){if(!e())return;C([]),F(n instanceof W&&n.isUnauthenticated?"Only members of this channel can manage its invitations.":n instanceof Error?n.message:"Invitations could not be read.")}},[a,j,o]);t.useEffect(()=>{j.reset(),M(null),x([]),C([]),L(null),A({kind:"none"}),a&&(H(),Q(),J())},[a,H,J,Q,j]),Ee(H,Rt,l==="ready"&&!!a),Ee(Q,Mt,l==="ready"&&!!a),Kt(a,l==="ready",H,o),t.useEffect(()=>{const e=setInterval(()=>qe(Date.now()),3e4);return()=>clearInterval(e)},[]);const ne=t.useMemo(()=>{const e=new Map;for(const n of b)e.set(n.actorId,n);return e},[b]),O=t.useMemo(()=>It({messages:S?.messages??[],requests:S?.requests??[],nowMs:te}),[S,te]),h=m?.viewer??null,Xe=t.useMemo(()=>{const e=new Set;return!a||!h||Et({projection:O,viewerActorId:h.actorId,members:b})&&e.add(a),e},[a,b,O,h]);t.useEffect(()=>{const e=Ae.current;if(!e)return;e.scrollHeight-e.scrollTop-e.clientHeight<160&&(e.scrollTop=e.scrollHeight)},[O.lastMessageAt]);const we=a?q[a]??"":"",be=a?Ke[a]??null:null,ze=t.useCallback(e=>{a&&G(n=>({...n,[a]:e}))},[a]),ve=t.useCallback(e=>{a&&Ne(n=>({...n,[a]:e}))},[a]),ae=t.useCallback(async e=>{if(!a)return!1;const n=e.body.trim();if(!n)return!1;const c=me.current,D=c&&c.channelId===a&&c.body===n&&c.replyToMessageId===e.replyToMessageId&&c.targetActorId===e.targetActorId?c.requestId:kt();return me.current={channelId:a,body:n,replyToMessageId:e.replyToMessageId,targetActorId:e.targetActorId,requestId:D},e.targetActorId?await E.postAsk(a,{requestId:D,body:n,targetActorId:e.targetActorId,space:o,...e.replyToMessageId?{replyToMessageId:e.replyToMessageId}:{}}):await E.postMessage(a,{requestId:D,body:n,space:o,...e.replyToMessageId?{replyToMessageId:e.replyToMessageId}:{}}),me.current=null,await H(),Q(),!0},[a,H,Q,o]),Ze=t.useCallback(()=>{!a||ue||(Re(null),je(!0),ae({body:we,replyToMessageId:null,targetActorId:be}).then(e=>{e&&(G(n=>({...n,[a]:""})),Ne(n=>({...n,[a]:null})))}).catch(e=>{Re(e instanceof W?e.message:"That did not send. The text is still here — try again.")}).finally(()=>je(!1)))},[be,a,we,ae,ue]),w=$.kind==="thread"?$.rootMessageId:null,ye=w?He[w]??"":"",et=t.useCallback(()=>{!w||he||(Le(null),Me(!0),ae({body:ye,replyToMessageId:w,targetActorId:null}).then(e=>{e&&Te(n=>({...n,[w]:""}))}).catch(e=>{Le(e instanceof W?e.message:"That reply did not send.")}).finally(()=>Me(!1)))},[ae,ye,w,he]),se=t.useCallback(e=>{v(e),ce({channelId:e,space:o},!1),A({kind:"none"}),P("channel")},[o]),tt=t.useCallback(e=>{e!==o&&(N(e),v(null),f(null),M(null),x([]),C([]),A({kind:"none"}),P("list"),ce({channelId:null,space:e},!1))},[o]),_=t.useCallback(e=>{A(e),P(e.kind==="none"?"channel":"panel")},[]),K=t.useCallback(()=>{A({kind:"none"}),P("channel")},[]),re=t.useCallback(()=>{Je(e=>(Ht(!e),!e))},[]),nt=t.useCallback(()=>{(async()=>{try{await E.signOut();const e=new URL(window.location.href);e.searchParams.set("signedOut","1"),window.location.assign(e.pathname+e.search)}catch(e){L(e instanceof Error?e.message:"Could not sign out. Try again.")}})()},[]),at=t.useCallback(async e=>{const n=await E.createChannel({title:e.title,...e.topic?{topic:e.topic}:{},space:o});await B(!1),se(n.conversation.id)},[B,se,o]),st=t.useCallback(async e=>{const n=await E.createSpace({title:e.title,...e.channel?{channel:e.channel}:{}});N(n.space.slug),f(null),M(null),x([]),C([]),v(n.channel?.id??null),A({kind:"none"}),P(n.channel?"channel":"list"),ce({channelId:n.channel?.id??null,space:n.space.slug},!1)},[]),rt=t.useCallback(async e=>{if(!(!a||!h)){Y(e);try{await E.revokeInvite(a,e,h.actorId,o),await J()}catch(n){F(n instanceof Error?n.message:"That invitation could not be revoked.")}finally{Y(null)}}},[a,J,o,h]),ot=t.useCallback(e=>{const n=ne.get(e);if(!n||!a)return;const c=xt(n);G(oe=>{const D=oe[a]??"",ht=D.length===0||D.endsWith(" ")?"":" ";return{...oe,[a]:`${D}${ht}@${c} `}}),Tt(n)&&ve(e),K()},[a,K,ne,ve]);if(t.useEffect(()=>{const e=n=>{if((n.metaKey||n.ctrlKey)&&n.key.toLowerCase()==="k"){n.preventDefault(),ee(c=>!c);return}if((n.metaKey||n.ctrlKey)&&n.key.toLowerCase()==="b"){const c=document.activeElement;if(c instanceof HTMLElement&&(c.tagName==="TEXTAREA"||c.tagName==="INPUT"||c.isContentEditable))return;n.preventDefault(),re();return}if(n.key==="Escape"){if(de||le)return;if($.kind!=="none"){n.preventDefault(),K();return}const c=document.activeElement;c instanceof HTMLElement&&c.tagName==="TEXTAREA"&&c.blur()}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[K,$.kind,de,le,re]),l==="loading")return s.jsx(Ce,{theme:r,className:"chat-centered",children:s.jsx("p",{className:"chat-card-meta",children:"Loading Scout Chat…"})});if(l==="gate"||l==="error"){const e=l==="gate";return s.jsx(Ce,{theme:r,className:"chat-centered",children:s.jsxs("div",{className:"chat-card",children:[s.jsx("span",{className:"chat-card-eyebrow",children:"Scout Chat"}),s.jsx("h1",{children:e?"You are not signed in":"Scout Chat is unavailable"}),s.jsx("p",{children:e?"Open the invitation you were sent to join a channel, or sign in as the host of this Scout.":k??"The chat service did not answer."}),e?s.jsxs(s.Fragment,{children:[s.jsx("a",{className:"btn btn--accent",href:`/login?next=${encodeURIComponent(window.location.pathname+window.location.search)}`,children:"Sign in as the host"}),s.jsx("p",{className:"chat-card-note",children:"Your invitation link signs you into the channel shared with you."})]}):s.jsx("button",{type:"button",className:"btn",onClick:()=>{B(!0)},children:"Try again"}),e&&k?s.jsx("p",{className:"chat-card-note",children:k}):null]})})}const ct=h?.displayName??"you",it=Nt(b),Se=Qe&&!pe,_e=$.kind!=="none",lt=w?(S?.messages??[]).find(e=>e.id===w)??null:null,dt=w?O.repliesByRoot.get(w)??[]:[],ut=w?O.requestsByMessage.get(w)??null:null;return s.jsxs(Ce,{theme:r,className:"chat-space",compactView:Ge,railed:Se,children:[s.jsxs("header",{className:"chat-topbar",children:[s.jsxs("div",{className:"chat-topbar-band",children:[s.jsxs("div",{className:"chat-space-name",children:[s.jsx("b",{children:"Scout Chat"}),g?s.jsx("span",{children:g.authorityNodeId}):null]}),pe?null:s.jsx(mt,{side:"left",collapsed:Se,label:"Sidebar",onToggle:re,className:"chat-band-toggle"})]}),s.jsxs("button",{type:"button",className:"chat-jump",onClick:()=>ee(!0),children:["⌕ Jump to a channel or person",s.jsx("span",{className:"chat-kbd",children:"⌘K"})]})]}),s.jsxs("div",{className:"chat-body","data-panel":_e&&!ge?"open":"closed",children:[s.jsx(pt,{channels:I,directs:R,spaces:We,activeSpace:o,selectedId:a,addressedChannelIds:Xe,canCreate:h?.isOperator===!0,viewerName:ct,viewerIsHost:h?.isOperator===!0,railed:Se,themePreference:i,onSelect:se,onSelectSpace:tt,onCreate:at,onCreateSpace:st,onInvite:()=>Z(!0),onExpandRail:re,onOpenProfile:g&&h?()=>_({kind:"member",actorId:h.actorId}):null,onThemePreference:d,onSignOut:nt}),g?s.jsxs("main",{className:"chat-channel","aria-label":De(g.title),children:[s.jsxs("header",{className:"chat-chan-head",children:[s.jsx("button",{type:"button",className:"chat-compact-back",onClick:()=>P("list"),"aria-label":"Back to channels",children:"‹"}),s.jsxs("span",{className:"chat-chan-name",children:[s.jsx("span",{className:"chat-hash",children:"#"}),g.title.replace(/^#/u,"")]}),s.jsx("span",{className:`chat-topic${g.topic?"":" chat-topic--empty"}`,children:g.topic??"No topic set"}),s.jsx(bt,{members:b,countLabel:it,onOpen:()=>_({kind:"members"})}),s.jsx("button",{type:"button",className:"btn btn--sm",onClick:()=>Z(!0),children:"Invite"})]}),s.jsxs("div",{className:"chat-feed",ref:Ae,role:"log","aria-label":"Channel messages",children:[p?s.jsx("p",{className:"chat-feed-notice",children:"Reconnecting — this is the last reading that came back."}):null,U?s.jsx("p",{className:"chat-feed-notice","data-tone":"error",children:U}):null,!S&&!U?s.jsx("p",{className:"chat-feed-notice",children:"Loading messages…"}):null,S&&O.entries.length===0?s.jsx("p",{className:"chat-feed-empty",children:"Nothing has been posted here yet. Say something, or invite the people and agents who belong in this room."}):null,O.entries.map(e=>e.kind==="day"?s.jsx("div",{className:"chat-day",children:s.jsx("span",{className:"label-sm",children:e.label})},e.id):e.kind==="status"?s.jsx("div",{className:"chat-status-line",children:e.message.body},e.id):e.kind==="status-fold"?s.jsx(Vt,{label:e.label,messages:e.messages},e.id):s.jsx(vt,{message:e.message,members:ne,nowMs:te,request:e.request,replyCount:e.replyCount,lastReplyAt:e.lastReplyAt,onOpenThread:()=>_({kind:"thread",rootMessageId:e.message.id}),onOpenMember:n=>_({kind:"member",actorId:n})},e.id))]}),s.jsx("div",{className:"chat-composer-wrap",children:s.jsx(gt,{members:b,draft:we,onDraftChange:ze,askTargetId:be,onAskTargetChange:ve,onSend:Ze,sending:ue,error:Ve,placeholder:`Message ${De(g.title)}`})})]}):s.jsx("main",{className:"chat-channel",children:s.jsx("div",{className:"chat-feed",children:s.jsx("p",{className:"chat-feed-empty",children:h?.isOperator?"Create a channel to start.":"You are not in a channel yet. Open the invitation you were sent."})})}),g&&_e&&ge&&!pe?s.jsx("div",{className:"chat-panel-scrim",role:"presentation",onClick:K}):null,g&&h?s.jsx(wt,{view:$,channel:g,members:b,membersById:ne,invites:V,inviteError:ie,revokingInviteId:z,viewerActorId:h.actorId,viewerIsOperator:h.isOperator,nowMs:te,threadRoot:lt,threadReplies:dt,threadRequest:ut,threadDraft:ye,onThreadDraftChange:e=>{w&&Te(n=>({...n,[w]:e}))},onSendThreadReply:et,threadSending:he,threadError:Ye,onClose:K,onBack:()=>_({kind:"members"}),onOpenMember:e=>_({kind:"member",actorId:e}),onMention:ot,onRevokeInvite:e=>{rt(e)},onInvite:()=>Z(!0),overlay:ge}):null]}),le&&g&&h?s.jsx(yt,{space:o,channel:g,viewerActorId:h.actorId,viewerName:h.displayName,onClose:()=>Z(!1),onInvitesChanged:()=>{J()}},`${o}:${g.id}`):null,de?s.jsx(St,{channels:[...I,...R],members:b,onClose:()=>ee(!1),onPick:e=>{ee(!1),e.kind==="channel"?se(e.id):_({kind:"member",actorId:e.id})}}):null]})}function Vt({label:r,messages:i}){const[d,l]=t.useState(!1);return s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"chat-status-line",children:[s.jsx("button",{type:"button",className:"chat-fold",onClick:()=>l(u=>!u),children:`${d?"⌃":"⌵"} ${r}`}),s.jsx("span",{className:"chip chip--sm chip--mono chip--ghost chip--neutral",children:i.length})]}),d?i.map(u=>s.jsx("div",{className:"chat-status-line",children:u.body},u.id)):null]})}export{Zn as ChatSpaceSurface};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.chat-space{position:fixed;inset:0;display:grid;grid-template-rows:40px 1fr;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-lg);line-height:var(--leading-normal);overflow:hidden}.chat-space *,.chat-space *:before,.chat-space *:after{box-sizing:border-box}:where(.chat-space,.chat-centered) button{font:inherit;color:inherit;background:none;border:none;padding:0;border-radius:var(--radius-sm);cursor:pointer}.chat-space :focus-visible,.chat-centered :focus-visible{outline:none;box-shadow:var(--focus-ring)}.chat-topbar{display:flex;align-items:center;gap:var(--space-3xl);padding:0 var(--space-2xl) 0 0;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--surface) 55%,var(--bg));min-width:0}.chat-topbar-band{flex:0 0 var(--sidebar-w);width:var(--sidebar-w);box-sizing:border-box;display:flex;align-items:center;gap:var(--space-sm);min-width:0;padding:0 8px 0 var(--space-2xl)}.chat-space[data-rail=true] .chat-topbar-band{padding:0;justify-content:center}.chat-space[data-rail=true] .chat-space-name{display:none}.chat-space-name{flex:1;display:flex;align-items:baseline;gap:var(--space-sm);min-width:0}.chat-space-name b{font-size:var(--text-lg);font-weight:600}.chat-space-name span{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-jump{flex:1;max-width:420px;margin:0 auto;display:flex;align-items:center;gap:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-2xs) var(--space-md);color:var(--dim);font-size:var(--text-sm)}.chat-jump:hover{border-color:var(--dim);color:var(--muted)}.chat-kbd{margin-left:auto;font-family:var(--font-mono);font-size:var(--text-2xs);border:1px solid var(--border);border-radius:var(--radius-xs);padding:1px 4px}.chat-body{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:0}.chat-body[data-panel=open]{grid-template-columns:var(--sidebar-w) minmax(0,1fr) 360px}.chat-space[data-rail=true]{--sidebar-w: 56px}.chat-sidebar{border-right:1px solid var(--border);background:color-mix(in srgb,var(--surface) 35%,var(--bg));display:flex;flex-direction:column;min-height:0;padding:var(--space-lg) 0;overflow:hidden}.chat-sidebar[data-railed=true]{align-items:center}.chat-side-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.chat-sidebar[data-railed=true] .chat-side-list{align-items:center}.chat-space-switch{position:relative;flex-shrink:0;padding:0 var(--space-sm) var(--space-xs)}.chat-space-switch[data-railed=true]{padding:0 0 var(--space-2xs)}.chat-space-current{display:flex;align-items:center;gap:var(--space-2xs);width:100%;padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-md);color:var(--ink);font-size:var(--text-md);font-weight:600;text-align:left;min-height:26px}.chat-space-current:hover:not(:disabled){background:var(--scout-chrome-hover)}.chat-space-current:disabled{cursor:default;opacity:1}.chat-space-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-space-caret{color:var(--dim);font-size:var(--text-sm);line-height:1}.chat-space-menu{position:absolute;z-index:20;top:calc(100% - var(--space-2xs));left:var(--space-sm);right:var(--space-sm);display:flex;flex-direction:column;padding:var(--space-2xs) 0;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-md, 0 8px 24px rgb(0 0 0 / 18%))}.chat-space-menu-item{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-2xs) var(--space-md);color:var(--muted);font-size:var(--text-md);text-align:left;min-height:26px}.chat-space-menu-item:hover{background:var(--scout-chrome-hover)}.chat-space-menu-item[data-active=true]{color:var(--ink);font-weight:600}.chat-space-menu-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-space-menu-count{color:var(--dim);font-variant-numeric:tabular-nums}.chat-space-menu-rule{height:1px;background:var(--border);margin:var(--space-2xs) 0}.chat-space-menu-new{color:var(--dim)}.chat-space-menu-new:hover{color:var(--ink)}.chat-space-menu .chat-create-form{padding:var(--space-xs) var(--space-md) var(--space-sm)}.chat-space-error{margin:0;color:var(--ink);font-size:var(--text-sm);line-height:var(--leading-snug)}.chat-space-rail{margin-bottom:var(--space-xs)}.chat-space-rail .chat-rail-glyph{font-weight:600}.chat-side-section{padding:var(--space-md) var(--space-lg) var(--space-2xs);display:flex;align-items:center;justify-content:space-between;color:var(--dim)}.chat-side-add{color:var(--dim);font-family:var(--font-mono);padding:0 var(--space-2xs)}.chat-side-add:hover{color:var(--ink)}.chat-side-row{display:flex;align-items:center;gap:var(--space-sm);width:calc(100% - var(--space-2xl));margin:0 var(--space-sm);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-md);font-size:var(--text-md);color:var(--muted);min-height:26px;text-align:left}.chat-side-row:hover{background:var(--scout-chrome-hover)}.chat-side-row[aria-current=true]{background:var(--scout-chrome-active);color:var(--ink)}.chat-side-row .chat-hash{font-family:var(--font-mono);color:var(--dim);width:12px;text-align:center}.chat-side-row .chat-row-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-side-row[data-addressed=true]{color:var(--ink);font-weight:600}.chat-side-empty{padding:var(--space-sm) var(--space-lg);color:var(--dim);font-size:var(--text-md);line-height:var(--leading-snug)}.chat-sidebar-foot{margin-top:auto;padding:var(--space-lg) var(--space-lg) 0}.chat-sidebar-foot .btn{width:100%;justify-content:flex-start;color:var(--muted);font-weight:500}.chat-rail-row{position:relative;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);color:var(--muted);flex-shrink:0;margin-bottom:var(--space-2xs)}.chat-rail-row:hover{background:var(--scout-chrome-hover)}.chat-rail-row[aria-current=true]{background:var(--scout-chrome-active);color:var(--ink)}.chat-rail-row[data-addressed=true]{color:var(--ink)}.chat-rail-row .dot{position:absolute;top:3px;right:3px}.chat-rail-glyph{font-family:var(--font-mono);font-size:var(--text-md);line-height:1}.chat-rail-glyph .chat-hash{color:var(--dim)}.chat-rail-rule{width:24px;height:1px;background:var(--border);margin:var(--space-xs) 0;flex-shrink:0}.chat-sidebar-identity{position:relative;margin:var(--space-sm) var(--space-sm) 0;padding-top:var(--space-xs);border-top:1px solid var(--border);display:flex;align-items:center;gap:var(--space-2xs)}.chat-sidebar[data-railed=true] .chat-sidebar-identity{flex-direction:column;width:100%;margin:var(--space-sm) 0 0;padding:var(--space-xs) 0 0}.chat-you{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-2xs) var(--space-xs);border-radius:var(--radius-md);color:var(--muted);font-size:var(--text-md);text-align:left}.chat-you:hover{background:var(--scout-chrome-hover)}.chat-you[aria-expanded=true]{background:var(--scout-chrome-active)}.chat-sidebar[data-railed=true] .chat-you{flex:none;padding:var(--space-2xs)}.chat-you-who{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.chat-you-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-weight:500}.chat-you-role{color:var(--dim)}.chat-you-caret{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim)}.chat-you-menu{position:absolute;left:0;right:0;bottom:calc(100% + var(--space-xs));z-index:20;border:1px solid var(--border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 96%,var(--bg));box-shadow:0 12px 34px var(--shadow-soft);padding:var(--space-2xs);display:flex;flex-direction:column}.chat-sidebar[data-railed=true] .chat-you-menu{position:fixed;left:calc(var(--sidebar-w) + var(--space-xs));right:auto;bottom:var(--space-lg);width:232px}.chat-you-menu-head{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm)}.chat-you-menu-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-md);font-weight:500;color:var(--ink)}.chat-you-menu-rule{height:1px;background:var(--border);margin:var(--space-2xs) 0}.chat-you-menu-item{display:flex;align-items:center;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-size:var(--text-md);color:var(--muted);text-align:left}.chat-you-menu-item:hover{background:var(--scout-chrome-hover);color:var(--ink)}.chat-you-menu-group{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-xs) var(--space-sm) var(--space-sm)}.chat-you-menu-group>.label-sm{color:var(--dim)}.chat-you-themes{display:flex;gap:var(--space-2xs)}.chat-you-themes .btn{flex:1;justify-content:center}.chat-you-themes .btn[data-active=true]{background:var(--scout-chrome-active);border-color:var(--dim);color:var(--ink)}.chat-create-form{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-sm) var(--space-lg) var(--space-md)}.chat-input{width:100%;border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 65%,var(--bg));color:var(--ink);font-family:var(--font-sans);font-size:var(--text-md);padding:var(--space-xs) var(--space-sm)}.chat-input::placeholder{color:var(--dim)}.chat-create-actions{display:flex;align-items:center;gap:var(--space-sm)}.chat-channel{display:flex;flex-direction:column;min-width:0;min-height:0}.chat-chan-head{min-height:44px;flex-shrink:0;display:flex;align-items:center;gap:var(--space-lg);padding:0 var(--space-2xl);border-bottom:1px solid var(--border)}.chat-chan-name{font-size:var(--text-lg);font-weight:600;white-space:nowrap}.chat-chan-name .chat-hash{color:var(--dim);font-family:var(--font-mono);margin-right:2px}.chat-topic{color:var(--muted);font-size:var(--text-md);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;text-align:left}.chat-topic--empty{color:var(--dim)}.chat-facepile{display:flex;align-items:center;gap:var(--space-sm)}.chat-facepile-faces{display:flex;align-items:center}.chat-facepile-face{margin-left:-6px;border:2px solid var(--bg)}.chat-facepile-faces>*:first-child{margin-left:0}.chat-pile-count{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase;font-weight:600;color:var(--dim);white-space:nowrap}.chat-feed{flex:1;overflow-y:auto;overflow-x:hidden;min-width:0;padding:var(--space-3xl) var(--space-4xl);display:flex;flex-direction:column;gap:var(--space-2xl);min-height:0}.chat-day{display:flex;align-items:center;gap:var(--space-lg);color:var(--dim)}.chat-day:before,.chat-day:after{content:"";flex:1;height:1px;background:var(--border)}.chat-turn{display:grid;grid-template-columns:32px minmax(0,1fr);gap:var(--space-lg)}.chat-turn>:first-child{align-self:start;justify-self:start}.chat-turn>:last-child{min-width:0}.chat-turn-meta{display:flex;align-items:baseline;gap:var(--space-sm)}.chat-turn-meta .chat-who{font-size:var(--text-md);font-weight:600}.chat-turn-meta .chat-when{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim)}.chat-turn-body{font-size:var(--text-lg);line-height:var(--leading-snug);color:color-mix(in srgb,var(--ink) 92%,transparent);margin-top:var(--space-3xs);white-space:pre-wrap;overflow-wrap:anywhere}.chat-mention{font-weight:600;background:var(--scout-chrome-hover);border-radius:var(--radius-xs);padding:0 3px}.chat-status-line{display:flex;align-items:center;gap:var(--space-sm);padding-left:44px;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim)}.chat-fold{color:var(--dim);display:inline-flex;align-items:center;gap:var(--space-xs)}.chat-fold:hover{color:var(--muted)}.chat-ask-card{margin-top:var(--space-sm);border:1px solid var(--border);border-radius:var(--radius-lg);background:transparent;padding:var(--space-sm) var(--space-lg);display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-md);max-width:min(460px,100%)}.chat-ask-card[data-tone=owed]{border-color:color-mix(in srgb,var(--accent) 32%,var(--border));background:color-mix(in srgb,var(--accent) 3%,transparent)}.chat-ask-card .label-sm{color:var(--dim)}.chat-ask-chip{min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:var(--leading-snug)}.chat-ask-chip[data-tone=owed]{color:var(--accent)}.chat-ask-chip[data-tone=failed]{color:var(--red)}.chat-ask-chip[data-tone=settled]{color:var(--muted)}.chat-thread-stub{margin-top:var(--space-sm);display:inline-flex;align-items:center;gap:var(--space-xs);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim)}.chat-thread-stub:hover{color:var(--muted)}.chat-thread-stub[data-empty=true]{opacity:0;transition:opacity .12s ease}.chat-turn:hover .chat-thread-stub[data-empty=true],.chat-turn:focus-within .chat-thread-stub[data-empty=true]{opacity:1}@media(hover:none){.chat-thread-stub[data-empty=true]{opacity:1}}.chat-feed-empty,.chat-feed-notice{color:var(--dim);font-size:var(--text-md);line-height:var(--leading-snug);max-width:52ch}.chat-feed-notice[data-tone=error]{color:var(--red)}.chat-composer-wrap{flex-shrink:0;padding:var(--space-lg) var(--space-4xl) var(--space-2xl)}.chat-composer{border:1px solid var(--border);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 65%,var(--bg));transition:border-color var(--motion-duration-hover) var(--motion-ease-standard)}.chat-composer:hover{border-color:color-mix(in srgb,var(--ink) 14%,var(--border))}.chat-composer:focus-within{border-color:color-mix(in srgb,var(--ink) 22%,var(--border))}.chat-ask-target{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);padding:var(--space-md) var(--space-xl) 0}.chat-ask-target-clear{color:var(--dim);font-family:var(--font-mono)}.chat-ask-target-clear:hover{color:var(--ink)}.chat-composer textarea{display:block;width:100%;resize:none;border:none;background:transparent;color:color-mix(in srgb,var(--ink) 92%,transparent);font-family:var(--font-sans);font-size:var(--text-lg);line-height:var(--leading-snug);padding:var(--space-lg) var(--space-xl);min-height:50px;max-height:180px}.chat-composer[data-variant=thread] textarea{min-height:42px}.chat-composer textarea:focus{outline:none}.chat-composer textarea::placeholder{color:var(--dim)}.chat-composer textarea:disabled{cursor:progress}.chat-composer-foot{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-2xs) var(--space-sm) var(--space-sm)}.chat-composer-tools{display:flex;align-items:center;gap:var(--space-3xs);min-width:0}.chat-composer-tool{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2xs);min-height:26px;padding:0 var(--space-xs);border-radius:var(--radius-md);color:var(--muted);font-size:var(--text-md);white-space:nowrap}.chat-composer-tool--icon{width:26px;padding:0;color:var(--dim)}.chat-composer-tool:hover:not(:disabled){background:var(--scout-chrome-hover);color:var(--ink)}.chat-composer-tool[data-active=true]{background:var(--scout-chrome-active);color:var(--ink)}.chat-composer-tool:disabled{opacity:.4;cursor:not-allowed}.chat-composer-hint{flex:1 1 24ch;min-width:0;color:var(--muted);font-size:var(--text-md);line-height:var(--leading-snug)}.chat-composer-foot .chat-composer-right{margin-left:auto;display:flex;align-items:center;gap:var(--space-md)}.chat-enter{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--dim)}.chat-composer-send{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:30px;height:30px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--ink) 92%,var(--bg));color:var(--bg);transition:background-color var(--motion-duration-hover) var(--motion-ease-standard),color var(--motion-duration-hover) var(--motion-ease-standard)}.chat-composer-send:hover:not(:disabled){background:var(--ink)}.chat-composer-send:disabled{background:transparent;border:1px solid var(--border);color:var(--dim);cursor:not-allowed}.chat-composer-spin{animation:chat-composer-spin .7s linear infinite}@keyframes chat-composer-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.chat-composer,.chat-composer-send{transition:none}.chat-composer-spin{animation:none}}.chat-send-error{margin:0;padding:0 var(--space-xl) var(--space-2xs);color:var(--red);font-size:var(--text-md);line-height:var(--leading-snug)}.chat-mention-popup{position:relative;border-top:1px solid var(--border);max-height:200px;overflow-y:auto;padding:var(--space-2xs) 0}.chat-mention-option{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-2xs) var(--space-xl);font-size:var(--text-md);color:var(--muted);text-align:left}.chat-mention-option:hover{background:var(--scout-chrome-hover);color:var(--ink)}.chat-mention-option[data-active=true]{background:var(--scout-chrome-active);color:var(--ink)}.chat-mention-option:disabled{color:var(--dim);cursor:default}.chat-mention-option:disabled:hover{background:none;color:var(--dim)}.chat-mention-option .chat-mention-kind{margin-left:auto;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--dim)}.chat-rpanel{border-left:1px solid var(--border);background:color-mix(in srgb,var(--surface) 35%,var(--bg));display:flex;flex-direction:column;min-height:0}.chat-rpanel-head{min-height:44px;flex-shrink:0;display:flex;align-items:center;gap:var(--space-sm);padding:0 var(--space-2xl);border-bottom:1px solid var(--border)}.chat-rpanel-head .chat-rpanel-title{font-size:var(--text-md);font-weight:600}.chat-rpanel-head .chat-rpanel-scope{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim)}.chat-rpanel-close{margin-left:auto;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-xl);padding:0 var(--space-2xs)}.chat-rpanel-close:hover{color:var(--ink)}.chat-rpanel-back{color:var(--dim);font-family:var(--font-mono);padding:0 var(--space-2xs)}.chat-rpanel-back:hover{color:var(--ink)}.chat-rpanel-body{flex:1;overflow-y:auto;padding:var(--space-2xl);display:flex;flex-direction:column;gap:var(--space-2xl);min-height:0}.chat-anchor-msg{border-bottom:1px solid var(--border);padding-bottom:var(--space-2xl)}.chat-thread-composer{margin-top:auto}.chat-psec{border-top:1px solid var(--border);padding-top:var(--space-lg);margin-top:var(--space-lg)}.chat-psec:first-child{border-top:none;padding-top:0;margin-top:0}.chat-psec>.label-sm{display:block;color:var(--dim);margin-bottom:var(--space-sm)}.chat-member-row{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-xs) 0;width:100%;text-align:left}.chat-member-row:hover .chat-member-name{color:var(--ink)}.chat-member-name{font-size:var(--text-md);color:var(--ink);flex:1;min-width:0}.chat-member-fact{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim);white-space:nowrap}.chat-member-fact[data-stranded=true]{color:var(--red)}.chat-invite-row{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-xs) 0;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted)}.chat-invite-row .chat-token-hint{color:var(--ink)}.chat-invite-revoke{margin-left:auto;color:var(--dim);font-size:var(--text-xs);font-family:var(--font-sans);font-weight:500}.chat-invite-revoke:hover{color:var(--red)}.chat-mcard-head{display:flex;align-items:center;gap:var(--space-lg)}.chat-mcard-name{font-size:var(--text-lg);font-weight:600}.chat-mcard-sub{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--muted);margin-top:2px}.chat-kv{display:grid;grid-template-columns:74px minmax(0,1fr);gap:var(--space-xs) var(--space-lg);align-items:baseline}.chat-kv .chat-k{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase;font-weight:600;color:var(--dim)}.chat-kv .chat-v{font-size:var(--text-md);color:var(--ink);font-family:var(--font-mono);display:flex;align-items:center;gap:var(--space-sm);min-width:0;overflow-wrap:anywhere}.chat-copy-inline{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--dim);border:1px solid var(--border);border-radius:var(--radius-xs);padding:0 4px;flex-shrink:0}.chat-copy-inline:hover{color:var(--ink)}.chat-conn{display:flex;flex-direction:column;gap:var(--space-2xs)}.chat-conn-state{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--text-md);font-weight:600}.chat-conn-detail,.chat-conn-evidence{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim);line-height:var(--leading-snug)}.chat-conn-detail{font-family:var(--font-sans)}.chat-scrim{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;padding:var(--space-4xl);z-index:40}.chat-sheet{width:480px;max-width:100%;max-height:100%;overflow-y:auto;border-radius:var(--radius-xl);border:1px solid color-mix(in srgb,var(--ink) 8%,transparent);background:var(--surface);padding:var(--space-3xl);box-shadow:0 12px 34px var(--shadow-soft);display:flex;flex-direction:column;gap:var(--space-2xl)}.chat-sheet-title{display:flex;align-items:center}.chat-sheet-title h2{margin:0;font-size:var(--text-2xl);font-weight:600}.chat-sheet-explain{color:var(--muted);font-size:var(--text-md);margin:0 0 var(--space-md);line-height:var(--leading-snug)}.chat-copy-block{font-family:var(--font-mono);font-size:var(--text-sm);line-height:1.6;color:color-mix(in srgb,var(--ink) 88%,transparent);overflow-wrap:anywhere;white-space:pre-wrap}.chat-sheet-foot{color:var(--dim);font-size:var(--text-sm);border-top:1px solid var(--border);padding-top:var(--space-lg);margin:0}.chat-sheet-error{color:var(--red);font-size:var(--text-md)}.chat-invite-switch{display:flex;gap:var(--space-xs);padding:var(--space-xs);border-radius:var(--radius-lg);background:var(--bg)}.chat-invite-switch button{flex:1;display:flex;justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-md);color:var(--muted);font-size:var(--text-md)}.chat-invite-switch button[aria-pressed=true]{background:var(--surface);color:var(--ink)}.chat-invite-switch button:hover{color:var(--ink)}.chat-invite-heading{margin:0 0 var(--space-sm);font-size:var(--text-xl);font-weight:500;line-height:var(--leading-snug)}.chat-invite-primary{margin-top:var(--space-2xl)}.chat-invite-copy{width:100%;min-height:40px;justify-content:center;gap:var(--space-sm)}.chat-invite-next{margin:var(--space-sm) 0 0;text-align:center;color:var(--muted);font-size:var(--text-sm)}.chat-invite-meta{margin:var(--space-lg) 0 0;color:var(--dim);font-size:var(--text-sm);line-height:var(--leading-snug)}.chat-invite-connection{display:flex;align-items:flex-start;gap:var(--space-md);margin-top:var(--space-xl);padding:var(--space-lg);border-radius:var(--radius-md);background:var(--bg);color:var(--muted)}.chat-invite-connection>svg{flex-shrink:0;margin-top:2px}.chat-invite-connection p{margin:0;font-size:var(--text-sm);line-height:var(--leading-snug);overflow-wrap:anywhere}.chat-invite-connection .chat-invite-connection-title{color:var(--ink);margin-bottom:var(--space-xs);font-weight:500}.chat-invite-details,.chat-invite-preview{margin-top:var(--space-md);font-size:var(--text-sm);color:var(--muted)}.chat-invite-details summary,.chat-invite-preview summary{cursor:pointer;width:fit-content;padding:var(--space-xs) 0}.chat-invite-details p{margin-top:var(--space-sm)}.chat-invite-preview .chat-copy-block{margin-top:var(--space-md);-webkit-user-select:text;user-select:text}.chat-invite-preview .chat-invite-meta{margin-top:var(--space-sm)}.chat-palette{width:480px;max-width:100%;border-radius:var(--radius-xl);border:1px solid color-mix(in srgb,var(--ink) 8%,transparent);background:var(--surface);box-shadow:0 12px 34px var(--shadow-soft);overflow:hidden;align-self:flex-start;margin-top:12vh}.chat-palette input{width:100%;border:none;border-bottom:1px solid var(--border);background:transparent;color:var(--ink);font-family:var(--font-sans);font-size:var(--text-xl);padding:var(--space-lg) var(--space-2xl)}.chat-palette input:focus{outline:none}.chat-palette-list{max-height:320px;overflow-y:auto;padding:var(--space-sm) 0}.chat-palette-option{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-xs) var(--space-2xl);font-size:var(--text-md);color:var(--muted);text-align:left}.chat-palette-option[data-active=true]{background:var(--scout-chrome-active);color:var(--ink)}.chat-palette-empty{padding:var(--space-lg) var(--space-2xl);color:var(--dim);font-size:var(--text-md)}.chat-coin{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0;font-family:var(--font-mono);font-weight:600;letter-spacing:var(--tracking-xs);color:var(--scout-chrome-avatar-ink)}.chat-sprite{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.chat-sprite-owner{position:absolute;right:-3px;bottom:-3px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:2px solid var(--bg);font-family:var(--font-mono);font-weight:600;color:var(--scout-chrome-avatar-ink)}.chat-centered{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--space-4xl);background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-lg);overflow-y:auto}.chat-card{width:420px;max-width:100%;border:1px solid color-mix(in srgb,var(--ink) 8%,transparent);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 96%,transparent);padding:var(--space-4xl);display:flex;flex-direction:column;gap:var(--space-lg);box-shadow:0 12px 34px var(--shadow-soft)}.chat-card-eyebrow{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--dim)}.chat-card h1{margin:0;font-size:var(--text-4xl);font-weight:600;letter-spacing:-.01em}.chat-card p{margin:0;color:var(--muted);font-size:var(--text-md);line-height:var(--leading-snug)}.chat-card-meta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim)}.chat-card-field{display:flex;flex-direction:column;gap:var(--space-xs)}.chat-card-field>.label-md{color:var(--dim)}.chat-card .chat-input{font-size:var(--text-lg);padding:var(--space-sm) var(--space-md)}.chat-card-note{color:var(--dim);font-size:var(--text-sm);line-height:var(--leading-snug)}.chat-card-error{color:var(--red);font-size:var(--text-md)}.chat-card .btn--accent{justify-content:center}@media(max-width:1199px){.chat-body[data-panel=open]{grid-template-columns:var(--sidebar-w) minmax(0,1fr)}.chat-rpanel[data-overlay=true]{position:fixed;top:40px;right:0;bottom:0;width:360px;max-width:100%;z-index:30;box-shadow:0 12px 34px var(--shadow-soft);background:color-mix(in srgb,var(--surface) 92%,var(--bg))}.chat-panel-scrim{position:fixed;top:40px;inset-inline:0;bottom:0;background:var(--scrim-soft);z-index:29}}@media(max-width:899px){.chat-body,.chat-body[data-panel=open]{grid-template-columns:minmax(0,1fr)}.chat-space[data-compact-view=list] .chat-channel,.chat-space[data-compact-view=channel] .chat-sidebar,.chat-space[data-compact-view=panel] .chat-sidebar,.chat-space[data-compact-view=panel] .chat-channel{display:none}.chat-sidebar{border-right:none}.chat-side-row{min-height:34px;font-size:var(--text-lg)}.chat-topbar-band{flex:1;width:auto;padding-right:0}.chat-feed{padding:var(--space-2xl)}.chat-composer-wrap{padding:var(--space-md) var(--space-2xl) var(--space-2xl)}.chat-enter{display:none}.chat-composer-send{width:36px;height:36px}.chat-composer-tool{min-height:32px}.chat-composer-tool--icon{width:32px}.chat-rpanel[data-overlay=true]{position:static;width:auto;box-shadow:none;border-left:none}.chat-panel-scrim,.chat-jump{display:none}.chat-sheet{padding:var(--space-2xl)}.chat-scrim{padding:0;align-items:stretch}.chat-sheet{width:100%;border-radius:0;border:none;max-height:none}.chat-centered{padding:var(--space-2xl);align-items:flex-start}.chat-card{width:100%;padding:var(--space-3xl) var(--space-2xl)}}.chat-compact-back{display:none;color:var(--dim);font-family:var(--font-mono);padding:0 var(--space-2xs)}@media(max-width:899px){.chat-compact-back{display:inline-flex}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r,l as n,a as c,n as u,o as S,p as f,w as h,q as s,b as l,j as d}from"./index-DReVb7jZ.js";import{L as T,D as v}from"./Provider-CNZluAZb.js";import"./provider-DwmCoSlc.js";import"./router-C-MF5-mb.js";import"./api-DSqpVKC7.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-3RfJpen8.js";import"./machine-scope-DJt9RZ2w.js";import"./sse-A8AyLH0g.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./agent-state-DDhnFEEP.js";import"./scoutbot-Bk3nyrkj.js";import"./NewChatComposer-BEXS8vV6.js";import"./runtime-picker-C_AVYF63.js";import"./scout-voice-CqAyfblr.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-DNUsuPWz.js";import"./createLucideIcon-ChvMq-zl.js";import"./conversation-model-m8HhzroS.js";import"./colors-CFlbwC25.js";import"./time-Dhsh_2EG.js";import"./conversations-Cbg9h_Af.js";import"./index-CbqBwfIW.js";import"./HarnessMark-DSvM_H7H.js";import"./NewChatOrigin-C8ROO4ps.js";import"./keyboard-nav-CJXPaHXj.js";import"./x-rlMdRqJF.js";import"./chevron-down-CDzRQQGl.js";import"./search-UsM-9-_W.js";import"./file-text-DP6txVW-.js";import"./model-CBkMvT1w.js";import"./DocumentFocusViewer-DlMiEALb.js";import"./TextDocumentSurface-BK6Qy41F.js";import"./index-kkXUq-zf.js";import"./chevron-right-DKGTLiqc.js";import"./folder-B_S7gBVr.js";import"./chevron-up-DX7R6KY2.js";import"./code-xml-Cmadr3pQ.js";import"./arrow-left-DFfKAq0d.js";import"./arrow-right-DmAWnyAH.js";import"./chunk-HRAB3GC3-Dvk_QpRq.js";function E(){const[t,p]=r.useState(()=>n()),[o,m]=r.useState(()=>c());r.useEffect(()=>{u(o,f(),S())},[o]),r.useEffect(()=>{if(typeof window>"u"||!window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: light)"),i=()=>m(s(t));return e.addEventListener("change",i),()=>e.removeEventListener("change",i)},[t]);const a=r.useCallback(e=>{h(e),p(e),m(s(e))},[]);return{theme:o,preference:t,setPreference:a}}function ne(){return E().theme}function ce({theme:t,className:p,compactView:o,railed:m,children:a}){const e=r.useMemo(()=>l(),[]),i=r.useMemo(()=>({...t==="light"?T:v,...e??{}}),[t,e]);return d.jsx("div",{className:p,"data-scout-theme":t,"data-scout-theme-mode":t,...o?{"data-compact-view":o}:{},...m?{"data-rail":"true"}:{},style:i,children:a})}export{ce as ChatSpaceTheme,E as useScoutStandaloneAppearance,ne as useScoutStandaloneTheme};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as o,j as a}from"./index-
|
|
1
|
+
import{r as o,j as a}from"./index-DReVb7jZ.js";import{f as k}from"./cache-DGBo3vIf.js";import{u as F,f as I,l as N,L as _,D}from"./usePierreRuntime-DTvcwISe.js";/* empty css */const R=["unstaged","staged","branch"];function L(n){if(!n.startsWith("/"))return null;const t=[];for(const e of n.split("/"))if(!(!e||e==="."))if(e===".."){if(t.length===0)return null;t.pop()}else t.push(e);return t}function A(n,t){const e=L(n),s=L(t);return!e||!s||s.length<=e.length||e.some((c,u)=>s[u]!==c)?null:s.slice(e.length).join("/")}function y(n,t){return n.files.findIndex(e=>e.newPath===t||e.oldPath===t)}function K(n,t){return n.find(e=>y(e,t)>=0)?.kind??null}const M=()=>{},T=()=>{};function O({root:n,file:t}){const e=o.useMemo(()=>A(n,t),[t,n]),[s,c]=o.useState(null),[u,d]=o.useState("loading"),[P,m]=o.useState(null),[S,h]=o.useState(null),{pierre:j,pierrePhase:v,pierreError:C,pierreTheme:b,retryPierre:E}=F(s);o.useEffect(()=>{let r=!1;if(c(null),d("loading"),m(null),h(null),!e){d("ready");return}return k(n,R,{files:[e],tier:"patch"}).then(i=>{r||(c(i.snapshot),h(K(i.snapshot.layers,e)),d("ready"))},i=>{r||(m(i instanceof Error?i.message:String(i)),d("error"))}),()=>{r=!0}},[e,n]);const f=o.useMemo(()=>e?s?.layers.filter(r=>y(r,e)>=0)??[]:[],[e,s]),l=f.find(r=>r.kind===S)??f[0]??null,p=l&&e?y(l,e):-1,g=l&&p>=0?I(l.files[p],p):null;return u==="loading"?a.jsx("div",{className:"s-code-empty",children:"Loading file changes…"}):u==="error"?a.jsx("div",{className:"s-code-empty",children:P??"Couldn’t load this file’s changes."}):!s||!l||!g?a.jsx("div",{className:"s-code-empty",children:"No tracked patch is available. The file is clean, or it is untracked and has no Git baseline yet."}):a.jsxs("div",{className:"s-code-diff",children:[f.length>1?a.jsx("div",{className:"s-code-diffLayers",role:"tablist","aria-label":"Change layer",children:f.map(r=>{const i=N(r),x=r.kind===l.kind;return a.jsxs("button",{type:"button",role:"tab","aria-selected":x,className:"s-code-diffLayer","data-selected":x||void 0,onClick:()=>h(r.kind),children:[_[r.kind],a.jsxs("span",{children:["+",i.add," −",i.del]})]},r.kind)})}):null,a.jsx(D,{layer:l,patchLayer:l,patchPhase:"ready",patchError:null,selectedFileKey:g,renderKey:s.render.renderKey,theme:b,layout:"split",pierre:j,pierrePhase:v,pierreError:C,onRetryPierre:E,onIncludeLineContext:M,onIncludeSelectionContext:T,contextActions:!1})]})}const G=Object.freeze(Object.defineProperty({__proto__:null,CodeDiffPane:O},Symbol.toStringTag,{value:"Module"}));export{O as C,G as a,A as r};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{r as h,j as i}from"./index-
|
|
1
|
+
import{r as h,j as i}from"./index-DReVb7jZ.js";import{C as ne}from"./chevron-down-CDzRQQGl.js";import{S as oe}from"./search-UsM-9-_W.js";const se=new Set(["hud","tail","terminal","services","pair","osn-auth","notification","code","file"]);function L(e){const t=e?.trim();return t||void 0}function q(e){if(!e)return;const t=Number.parseInt(e,10);return Number.isSafeInteger(t)&&t>0?t:void 0}function ce(e){return e.split("/").filter(t=>t.length>0).map(encodeURIComponent).join("/")}function R(e){return e.map(t=>{try{return decodeURIComponent(t)}catch{return t}}).join("/")}function ie(e){const t=q(e.get("line")),n=q(e.get("endLine")),r=t&&n&&n>=t?n:void 0;return{...L(e.get("wt"))?{wt:L(e.get("wt"))}:{},...t?{line:t}:{},...r?{endLine:r}:{}}}function G(e){const t=e.trim();if(!t)return null;if(t.startsWith("/")||t.startsWith("~/")){const u=t.replace(/^~/,""),d=t.startsWith("~")?t:u;return{root:d,file:d}}if(!/^scout:/i.test(t))return null;let n;try{n=new URL(t)}catch{return null}if(n.protocol.toLowerCase()!=="scout:")return null;const r=(n.hostname||n.host||"").toLowerCase(),c=n.pathname.split("/").filter(u=>u.length>0),s=ie(n.searchParams);if(!r||r==="file"){const u=c;if(u.length===0)return null;const d=`/${R(u)}`,m=L(n.searchParams.get("root")),j=L(n.searchParams.get("file"));return{root:m??d,file:j??d,...s}}if(r==="code"){if(c.length===0){const m=L(n.searchParams.get("root")),j=L(n.searchParams.get("file")),b=L(n.searchParams.get("project")),y=L(n.searchParams.get("path"));return!m&&!j&&!b?{...s}:{...m?{root:m}:{},...j?{file:j}:{},...b?{project:b}:{},...y?{path:y}:{},...s}}const u=R([c[0]]),d=c.length>1?R(c.slice(1)):void 0;return{project:u,...d?{path:d}:{},...s}}if(se.has(r))return null;const a=decodeURIComponent(r),l=c.length>0?R(c):void 0;return{project:a,...l?{path:l}:{},...s}}function ae(e){const t=new URLSearchParams;e.wt&&t.set("wt",e.wt),e.line&&e.line>0&&t.set("line",String(e.line)),e.line&&e.endLine&&e.endLine>=e.line&&t.set("endLine",String(e.endLine));const n=t.toString(),r=n?`?${n}`:"";if(e.project)return`scout://${e.path?`${encodeURIComponent(e.project)}/${ce(e.path)}`:encodeURIComponent(e.project)}${r}`;const c=e.file??e.root;return c?`scout://${c.startsWith("/")?c:`/${c}`}${r}`:`scout://code${r}`}function le(e,t){const n=e.trim();if(!n)return null;let r=null;for(const c of t)(n===c||n.startsWith(`${c}/`))&&(!r||c.length>r.length)&&(r=c);return r?{root:r,file:n===r?null:n}:null}function ue(e){const t=e.trim();return t?!!(t.startsWith("/")||t.startsWith("~/")||/^scout:/i.test(t)):!1}function B(e){return e.toLowerCase().replace(/[^a-z0-9]+/gu,"-").replace(/^-+|-+$/gu,"")}function de(e){const t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function fe(e){return e.branch.detached?"detached":e.branch.name??"no branch"}function pe(e){return e.status.clean?"":`${e.status.changedFiles} changed`}function he(e){const t=[];for(const n of e)for(const[r,c]of n.worktrees.entries())t.push({root:c.path,projectId:n.id,projectName:n.name,projectSlug:B(n.name)||B(de(n.name)),worktreeName:c.name,branchLabel:fe(c),dirtyLabel:pe(c),isPrimary:r===0,changedFiles:c.status.changedFiles});return t}function v(e){return e.toLocaleLowerCase().replace(/[\s/_-]+/g," ").trim()}function me(e,t,n=0){const r=v(t);if(!r)return n;const c=r.split(" ").filter(Boolean),s=v(e.projectName),a=v(e.root),l=v(e.branchLabel),u=v(e.worktreeName),d=`${s} ${a} ${l} ${u} ${e.projectSlug}`;if(!c.every(j=>d.includes(j)))return-1;let m=n/100;return s===r||e.projectSlug===r.replace(/\s+/g,"-")?m+=120:s.startsWith(r)||e.projectSlug.startsWith(r.replace(/\s+/g,"-"))?m+=80:s.includes(r)&&(m+=48),(l.startsWith(r)||l.includes(r))&&(m+=34),u.includes(r)&&(m+=24),a.includes(r)&&(m+=20),m+=c.reduce((j,b)=>j+(s.startsWith(b)?12:0),0),m}function ge(e,t,n,r=12){const c=new Map(n.map((a,l)=>[a,n.length-l])),s=e.map(a=>({option:a,score:me(a,t,c.get(a.root)??0)})).filter(a=>a.score>=0);return t.trim()?s.sort((a,l)=>l.score-a.score||a.option.projectName.localeCompare(l.option.projectName)):s.sort((a,l)=>{const u=c.get(a.option.root)??-1,d=c.get(l.option.root)??-1;return u!==d?d-u:a.option.projectName.localeCompare(l.option.projectName)||a.option.branchLabel.localeCompare(l.option.branchLabel)}),s.slice(0,r).map(a=>a.option)}function Y(e){return e.isPrimary?e.projectName:`${e.projectName} · ${e.branchLabel}`}function D(e){return e.dirtyLabel?`${e.branchLabel} · ${e.dirtyLabel}`:e.branchLabel}function O(e){const t=typeof window<"u"?window.__OPEN_SCOUT_HOME:void 0;if(t&&e.startsWith(`${t}/`))return`~/${e.slice(t.length+1)}`;if(e.startsWith("/Users/")){const n=e.slice(7),r=n.indexOf("/");if(r>0)return`~${n.slice(r)}`}if(e.startsWith("/home/")){const n=e.slice(6),r=n.indexOf("/");if(r>0)return`~${n.slice(r)}`}return e}const Q="openscout.code.tree:",_="openscout.code.lastRoot",V="openscout.code.recentRoots",je=8;function Ce(e){if(typeof window>"u")return null;try{const t=window.localStorage.getItem(Q+e);if(!t)return null;const n=JSON.parse(t);return!n||typeof n.entries!="object"||!Array.isArray(n.expanded)?null:n}catch{return null}}function Re(e,t){if(typeof window>"u")return;const n={};for(const r of[e,...t.expanded]){const c=t.entries.get(r);c&&(n[r]=c)}try{window.localStorage.setItem(Q+e,JSON.stringify({entries:n,expanded:[...t.expanded],selectedFile:t.selectedFile,savedAt:Date.now()}))}catch{}}function Oe(){if(typeof window>"u")return null;try{return window.localStorage.getItem(_)}catch{return null}}function M(){if(typeof window>"u")return[];try{const e=window.localStorage.getItem(V);if(!e){const n=window.localStorage.getItem(_);return n?[n]:[]}const t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>typeof n=="string"&&n.length>0):[]}catch{return[]}}function Pe(e){if(!(typeof window>"u"))try{window.localStorage.setItem(_,e);const t=M().filter(r=>r!==e),n=[e,...t].slice(0,je);window.localStorage.setItem(V,JSON.stringify(n))}catch{}}const we=6,be=12;function k(e){return e.toLowerCase().replace(/[^a-z0-9]+/gu,"-").replace(/^-+|-+$/gu,"")}function W(e){const t=e.lastIndexOf("/");return t>=0?e.slice(t+1):e}function X(e,t,n){const r=G(e);if(!r)return null;if(r.root||r.file){const c=t.map(u=>u.root),s=xe(r.file??r.root,c),a=le(s,c);if(a)return{root:a.root,file:a.file,line:r.line,endLine:r.endLine};const l=W(s).includes(".");return{root:l?Le(s):s,file:l?s:null,line:r.line,endLine:r.endLine}}if(r.project){const c=ke(n,r.project,r.wt??null,t);if(!c)return null;const s=r.path?`${c.root}/${r.path}`:null;return{root:c.root,file:s,project:r.project,path:r.path,wt:r.wt,line:r.line,endLine:r.endLine}}return null}function xe(e,t){if(!e.startsWith("~/")&&e!=="~")return e;for(const n of t){const r=n.match(/^(\/Users\/[^/]+)/)??n.match(/^(\/home\/[^/]+)/);if(r)return`${r[1]}${e.slice(1)}`}return e}function Le(e){const t=e.lastIndexOf("/");return t>0?e.slice(0,t):e}function ke(e,t,n,r){if(e){const a=k(t),l=e.projects.find(u=>k(u.name)===a||k(W(u.root))===a);if(l)return{root:(n?l.worktrees.find(d=>d.name===n||d.branch.name===n||k(d.name)===k(n)):l.worktrees[0])?.path??l.root}}const c=k(t),s=r.find(a=>a.projectSlug===c);return s?{root:s.root}:null}function ye(e){if(e.project)return ae({project:e.project,path:e.path,wt:e.wt,line:e.line,endLine:e.endLine});const t=e.file??e.root;return t?O(t):"Deep link"}function Ne({snapshot:e,root:t,onSelect:n}){const[r,c]=h.useState(!1),[s,a]=h.useState(""),[l,u]=h.useState(0),[d,m]=h.useState(()=>M()),j=h.useRef(null),b=h.useRef(null),y=h.useRef(null),N=h.useId().replaceAll(":",""),P=`code-project-results-${N}`,x=h.useMemo(()=>he(e?.projects??[]),[e]),I=h.useMemo(()=>{const o=new Map;for(const f of x)o.set(f.root,f);return o},[x]),C=t?I.get(t)??null:null;h.useEffect(()=>{m(M())},[t,r]);const U=h.useMemo(()=>{const o=[];for(const f of d){const $=I.get(f);if($&&o.push($),o.length>=we)break}return o},[d,I]),w=ue(s),A=w?G(s):null,p=w?X(s,x,e):null,g=h.useMemo(()=>w?[]:ge(x,s,d,be),[x,s,d,w]),Z=(p?1:0)+g.length,S=h.useMemo(()=>{if(!s.trim()||w)return"";const o=g.find(f=>f.projectName.toLocaleLowerCase().startsWith(s.toLocaleLowerCase()));return o&&o.projectName.length>s.length?o.projectName:""},[s,g,w]);h.useEffect(()=>u(0),[s,r]),h.useEffect(()=>{if(!r)return;const o=window.setTimeout(()=>b.current?.focus(),20);return()=>window.clearTimeout(o)},[r]),h.useEffect(()=>{if(!r)return;function o(f){j.current?.contains(f.target)||(c(!1),a(""))}return document.addEventListener("pointerdown",o),()=>document.removeEventListener("pointerdown",o)},[r]);const E=()=>{a(""),c(!1),window.setTimeout(()=>y.current?.focus(),0)},T=o=>{n({root:o}),E()},F=()=>{p&&(n(p),E())},ee=o=>{if(o.key==="ArrowDown")o.preventDefault(),u(f=>Math.min(f+1,Math.max(Z-1,0)));else if(o.key==="ArrowUp")o.preventDefault(),u(f=>Math.max(f-1,0));else if(o.key==="Enter"){if(o.preventDefault(),p&&(l===0||g.length===0)){F();return}const f=p?l-1:l;g[f]&&T(g[f].root)}else o.key==="ArrowRight"&&S&&o.currentTarget.selectionStart===s.length?(o.preventDefault(),a(S)):o.key==="Escape"&&(o.preventDefault(),E())},te=C?Y(C):t?O(t):"Pick a project…",z=C?D(C):null,H=!!p&&l===0,re=p&&l===0?`${N}-deeplink`:g[p?l-1:l]?`${N}-opt-${g[p?l-1:l].root}`:void 0;return i.jsxs("div",{className:"s-code-picker",ref:j,children:[i.jsxs("button",{ref:y,type:"button",className:"s-code-pickerTrigger","aria-haspopup":"listbox","aria-expanded":r,"aria-controls":r?P:void 0,"aria-label":"Project or worktree",onClick:()=>c(o=>!o),children:[i.jsx("span",{className:"s-code-pickerTriggerName",children:te}),z?i.jsx("span",{className:"s-code-pickerTriggerDetail",children:z}):null,i.jsx(ne,{size:13,"aria-hidden":!0,className:"s-code-pickerChevron","data-open":r||void 0})]}),r?i.jsxs("div",{className:"s-code-pickerPanel",role:"dialog","aria-label":"Choose a project",children:[U.length>0&&!w?i.jsx("div",{className:"s-code-pickerRecents","aria-label":"Recent projects",children:U.map(o=>i.jsx("button",{type:"button",className:"s-code-pickerChip","data-active":o.root===t||void 0,title:`${o.projectName} · ${D(o)}
|
|
2
2
|
${o.root}`,onClick:()=>T(o.root),children:Y(o)},o.root))}):null,i.jsxs("div",{className:"s-code-pickerSearch",children:[i.jsx(oe,{size:13,"aria-hidden":!0,className:"s-code-pickerSearchIcon"}),i.jsxs("div",{className:"s-code-pickerInputStack",children:[S?i.jsxs("div",{className:"s-code-pickerGhost","aria-hidden":!0,children:[i.jsx("span",{children:s}),S.slice(s.length)]}):null,i.jsx("input",{ref:b,className:"s-code-pickerInput",type:"search",role:"combobox",value:s,onChange:o=>a(o.currentTarget.value),onKeyDown:ee,placeholder:"Project, scout:// path, or branch…","aria-label":"Find a project","aria-autocomplete":"both","aria-expanded":"true","aria-controls":P,"aria-activedescendant":re,autoComplete:"off",spellCheck:!1})]}),S?i.jsx("kbd",{className:"s-code-pickerHint",children:"→"}):null]}),i.jsxs("div",{className:"s-code-pickerHeading",children:[i.jsx("span",{children:w?p?"Deep link":"Unrecognized link":s.trim()?g.length?"Matches":"No matches":"All projects"}),i.jsx("span",{children:w?p?"open with ↵":"no match":s.trim()?`${g.length} shown`:x.length?`${Math.min(g.length,x.length)} of ${x.length}`:e?"No repos yet":"Loading…"})]}),i.jsxs("div",{id:P,className:"s-code-pickerResults",role:"listbox","aria-label":"Projects",children:[p?i.jsxs("button",{id:`${N}-deeplink`,type:"button",role:"option","aria-selected":H,tabIndex:-1,className:"s-code-pickerOption s-code-pickerOption--deep","data-active":H||void 0,onMouseEnter:()=>u(0),onClick:F,children:[i.jsx("span",{className:"s-code-pickerOptionMain",children:i.jsx("strong",{children:"Open deep link"})}),i.jsx("span",{className:"s-code-pickerOptionPath",title:s.trim(),children:A?ye(A):s.trim()}),i.jsxs("span",{className:"s-code-pickerOptionMeta",children:[O(p.root),p.file?` · ${W(p.file)}`:""]})]}):null,g.map((o,f)=>{const $=p?f+1:f,J=$===l,K=o.root===t;return i.jsxs("button",{id:`${N}-opt-${o.root}`,type:"button",role:"option","aria-selected":J,"aria-current":K||void 0,tabIndex:-1,className:"s-code-pickerOption","data-active":J||void 0,"data-selected":K||void 0,onMouseEnter:()=>u($),onClick:()=>T(o.root),children:[i.jsxs("span",{className:"s-code-pickerOptionMain",children:[i.jsx("strong",{children:o.projectName}),o.isPrimary?null:i.jsx("span",{className:"s-code-pickerWorktree",children:"worktree"})]}),i.jsx("span",{className:"s-code-pickerOptionPath",title:o.root,children:O(o.root)}),i.jsx("span",{className:"s-code-pickerOptionMeta",children:D(o)})]},o.root)})]}),g.length===0&&s.trim()&&!p?i.jsx("div",{className:"s-code-pickerEmpty",role:"status",children:w?"Could not resolve that scout:// link. Try a project slug or absolute path.":`No project matches “${s}”. Try a folder name, branch, path, or scout:// link.`}):null,i.jsxs("div",{className:"s-code-pickerGuide",children:[i.jsxs("span",{children:[i.jsx("kbd",{children:"↑"}),i.jsx("kbd",{children:"↓"})," move"]}),i.jsxs("span",{children:[i.jsx("kbd",{children:"↵"})," open"]}),i.jsxs("span",{children:[i.jsx("kbd",{children:"esc"})," close"]})]})]}):null]})}const Ie=Object.freeze(Object.defineProperty({__proto__:null,CodeProjectPicker:Ne,resolvePickerDeepLink:X},Symbol.toStringTag,{value:"Module"}));export{Ne as C,Ce as a,Pe as b,Ie as c,ae as f,Oe as r,O as s,Re as w};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as s,j as r}from"./index-DReVb7jZ.js";import{a as V}from"./api-DSqpVKC7.js";import{c as je}from"./clipboard-e3fSpeo7.js";import{f as ze}from"./scoutbot-Bk3nyrkj.js";import{g as Ae,f as Ce}from"./api-BQYTwoz6.js";import{d as Ke}from"./types-B0PlfpKc.js";import{u as Oe}from"./useEmbedHeadline-atkQVfGw.js";import{r as He,C as qe}from"./CodeDiffPane-D-iv28LJ.js";import{r as Ge,a as Ve,w as Xe,b as Je,f as xe,C as Qe,s as Ye}from"./CodeProjectPicker-CZ3gDdiT.js";import{ShikiPane as Ze}from"./ShikiPane-XwFI-pCp.js";/* empty css */import{A as et}from"./arrow-left-DFfKAq0d.js";import{C as tt}from"./chevron-right-DKGTLiqc.js";import{C as nt}from"./check-g7D7-c1J.js";import{C as st}from"./copy-BGOC1tJB.js";import"./cache-DGBo3vIf.js";import"./usePierreRuntime-DTvcwISe.js";import"./chunk-HRAB3GC3-Dvk_QpRq.js";/* empty css */import"./chevron-down-CDzRQQGl.js";import"./createLucideIcon-ChvMq-zl.js";import"./search-UsM-9-_W.js";const rt=new Set(["node_modules",".git","dist",".next",".build","DerivedData","__pycache__",".venv","target"]);function we(i){const l=i.lastIndexOf("/");return l>0?i.slice(0,l):"/"}function ce(i){const l=i.lastIndexOf("/");return l>=0?i.slice(l+1):i}function X(i){return i<1024?`${i} B`:i<1024*1024?`${(i/1024).toFixed(1)} KB`:`${(i/(1024*1024)).toFixed(1)} MB`}function S(i){return i.toLowerCase().replace(/[^a-z0-9]+/gu,"-").replace(/^-+|-+$/gu,"")}function it(i,l,k){const g=S(l),f=i.projects.find(u=>S(u.name)===g||S(ce(u.root))===g);if(!f)return null;const x=k?f.worktrees.find(u=>u.name===k||u.branch.name===k||S(u.name)===S(k)):f.worktrees[0];return{projectName:f.name,root:x?.path??f.root}}function ye(i,l){if(!l.startsWith(`${i}/`))return[];const k=l.slice(i.length+1).split("/"),g=[];let f=i;for(const x of k.slice(0,-1))f=`${f}/${x}`,g.push(f);return g}function ot(i){switch(i){case"untracked":return"U";case"conflicted":return"C";case"staged":return"S";case"unstaged":return"M";case"staged+unstaged":return"SM";default:return i.charAt(0).toUpperCase()}}function be(i,l,k,g,f){const x=k.get(i);if(!x){f.push({path:`${i}#loading`,name:"Loading…",kind:"file",depth:l,loading:!0});return}for(const u of x)u.kind==="directory"&&rt.has(u.name)||(f.push({path:u.path,name:u.name,kind:u.kind,depth:l}),u.kind==="directory"&&g.has(u.path)&&be(u.path,l+1,k,g,f))}function Et({route:i,navigate:l,root:k,file:g,project:f,path:x,wt:u,line:Le,endLine:Ne,returnConversationId:Re,embedded:I=!1}){Oe("Code",I);const B=k??i?.root??null,P=g??i?.file??null,p=f??i?.project??null,b=x??i?.path??null,U=u??i?.wt??null,j=Le??i?.line,w=Ne??i?.endLine,C=Re??i?.returnConversationId??null,[h,le]=s.useState(()=>Ae()),[o,J]=s.useState(()=>B??(p?null:Ge())),[y,Q]=s.useState(()=>new Map),[L,W]=s.useState(()=>new Set),[de,ue]=s.useState(null),[a,_]=s.useState(P),[c,z]=s.useState(null),[Ee,Y]=s.useState(!1),[fe,A]=s.useState(null),[pe,Z]=s.useState("idle"),[M,ee]=s.useState("source"),[m,te]=s.useState(()=>j&&j>0?{line:j,...w&&w>=j?{endLine:w}:{}}:null),[N,K]=s.useState(()=>p?{phase:"resolving"}:{phase:"idle"}),ne=p?`${p}\0${b??""}\0${U??""}`:null,R=s.useRef(null),se=s.useRef(null),T=s.useRef(ne);T.current!==ne&&(T.current=ne,R.current=null,se.current=null),s.useEffect(()=>{te(j&&j>0?{line:j,...w&&w>=j?{endLine:w}:{}}:null)},[w,j]),s.useEffect(()=>{if(h)return;let e=!1;return Ce("quick",!1,2e4).then(t=>{e||le(t)}).catch(()=>{}),()=>{e=!0}},[h]);const E=s.useCallback(async e=>{try{const t=await V(`/api/file/preview?path=${encodeURIComponent(e)}`);if(t.kind!=="directory")return;const n=t.entries.map(d=>({name:d.name,path:d.path,kind:d.kind}));Q(d=>new Map(d).set(e,n))}catch(t){ue(t instanceof Error?t.message:String(t))}},[]),$=s.useCallback((e,t)=>{if(!t)return;const n=ye(e,t);if(n.length!==0){W(d=>new Set([...d,...n]));for(const d of n)E(d)}},[E]);s.useEffect(()=>{if(!p)return;const e=`${p}\0${b??""}\0${U??""}`;if(R.current===e)return;const t=n=>{R.current=e;const d=b?`${n}/${b}`:null;K({phase:"idle"}),J(n),_(d),$(n,d)};if(h){const n=it(h,p,U);if(n){t(n.root);return}}se.current!==e&&(K({phase:"resolving"}),V(`/api/code/resolve-project?slug=${encodeURIComponent(p)}`).then(n=>{R.current===e||T.current!==e||t(n.root)}).catch(n=>{if(R.current===e||T.current!==e)return;se.current=e;const d=n instanceof Error?n.message:String(n);K({phase:"failed",message:d.includes(p)?d:`Can't resolve project "${p}": ${d}`})}))},[p,b,U,h,$]),s.useEffect(()=>{if(o||p||!h)return;const e=h.projects[0];e&&J(e.worktrees[0]?.path??e.root)},[o,p,h]);const he=s.useRef(a);he.current=a,s.useEffect(()=>{if(!o)return;ue(null);const e=Ve(o),t=he.current,n=t?ye(o,t):[];e?(Q(new Map(Object.entries(e.entries))),W(new Set([...e.expanded,...n])),!t&&e.selectedFile&&_(e.selectedFile)):(Q(new Map),W(new Set(n)));const d=new Set([o,...e?.expanded??[],...n]);for(const ae of d)E(ae);Ce("quick",!1,2e4).then(le).catch(()=>{})},[o,E]),s.useEffect(()=>{!o||y.size===0||(Xe(o,{entries:y,expanded:L,selectedFile:a}),Je(o))},[o,y,L,a]),s.useEffect(()=>{!B||!P||$(B,P)},[B,P,$]);const re=s.useRef(new Map),ie=s.useRef(new Set),$e=3e4,O=s.useCallback(e=>{const t=re.current.get(e);return t?Date.now()-t.at>$e?(re.current.delete(e),null):t.preview:null},[]),H=s.useCallback((e,t)=>{const n=re.current;if(n.set(e,{at:Date.now(),preview:t}),n.size>80){const d=n.keys().next().value;d&&n.delete(d)}},[]),Fe=s.useCallback(e=>{O(e)||ie.current.has(e)||(ie.current.add(e),V(`/api/file/preview?path=${encodeURIComponent(e)}`).then(t=>H(e,t)).catch(()=>{}).finally(()=>ie.current.delete(e)))},[O,H]);s.useEffect(()=>{if(Z("idle"),!a){z(null),A(null);return}const e=O(a);if(e){z(e.kind==="file"?e:null),A(null),Y(!1);return}let t=!1;return Y(!0),A(null),V(`/api/file/preview?path=${encodeURIComponent(a)}`).then(n=>{t||(H(a,n),z(n.kind==="file"?n:null))}).catch(n=>{t||(z(null),A(n instanceof Error?n.message:String(n)))}).finally(()=>{t||Y(!1)}),()=>{t=!0}},[a,O,H]);const Me=s.useMemo(()=>{if(!o)return[];const e=[];return be(o,0,y,L,e),e},[o,y,L]),me=s.useCallback((e,t)=>{const n=C?{returnConversationId:C}:{};if(h){for(const d of h.projects)for(const[ae,ge]of d.worktrees.entries())if(ge.path===e){const ve=t&&t.startsWith(`${e}/`)?t.slice(e.length+1):void 0;return{view:"code",project:S(d.name),...ve?{path:ve}:{},...ae>0?{wt:ge.name}:{},...n}}}return{view:"code",root:e,...t?{file:t}:{},...n}},[C,h]),oe=s.useCallback(()=>{if(!C)return;const e={view:"conversation",conversationId:C};ze({type:"navigate",route:e})||l?.(e)},[l,C]);s.useEffect(()=>{if(!C)return;const e=t=>{if(!t.defaultPrevented&&!(!t.metaKey||t.key!=="[")){if(t.target instanceof HTMLElement){const n=t.target.tagName;if(n==="INPUT"||n==="TEXTAREA"||t.target.isContentEditable)return}t.preventDefault(),oe()}};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[C,oe]);const q=s.useCallback((e,t)=>{I||!l||l(me(e,t))},[I,l,me]),Te=s.useCallback(e=>{W(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),y.has(e)||E(e)},[y,E]),De=s.useCallback(e=>{te(null),_(e),o&&q(o,e)},[o,q]),v=s.useMemo(()=>{if(!h||!o)return null;for(const e of h.projects)for(const t of e.worktrees)if(t.path===o)return{project:e,worktree:t};return null},[h,o]),F=s.useMemo(()=>{const e=new Map;if(!o||!v)return e;for(const t of v.worktree.status.files)e.set(`${o}/${t.path}`,t.status);return e},[o,v]),Ie=s.useMemo(()=>{const e=new Set;if(!o)return e;for(const t of F.keys()){let n=we(t);for(;n.startsWith(o)&&(e.add(n),n!==o);)n=we(n)}return e},[o,F]),G=!!(o&&a&&He(o,a));s.useEffect(()=>{G||ee("source")},[G]);const Be=a&&o&&a.startsWith(`${o}/`)?a.slice(o.length+1):c?.kind==="file"?c.title:a?ce(a):null,Pe=s.useCallback(async()=>{if(!c||c.kind!=="file"||!c.previewable)return;await je(c.content)&&(Z("copied"),window.setTimeout(()=>Z("idle"),1500))},[c]),[Ue,ke]=s.useState("idle"),D=s.useMemo(()=>{if(!o)return null;if(v){const e=a&&a.startsWith(`${o}/`)?a.slice(o.length+1):void 0,t=v.project.worktrees[0]?.path;return xe({project:S(v.project.name),...e?{path:e}:{},...t&&t!==o?{wt:v.worktree.name}:{},...m?.line?{line:m.line}:{},...m?.endLine?{endLine:m.endLine}:{}})}return xe({...a?{file:a}:{root:o},...m?.line?{line:m.line}:{},...m?.endLine?{endLine:m.endLine}:{}})},[o,a,v,m]),We=s.useCallback(async()=>{if(!D)return;await je(D)&&(ke("copied"),window.setTimeout(()=>ke("idle"),1500))},[D]),_e=s.useCallback(e=>{R.current=T.current,K({phase:"idle"}),te(e.line&&e.line>0?{line:e.line,...e.endLine&&e.endLine>=e.line?{endLine:e.endLine}:{}}:null),_(e.file??null),J(e.root),e.file&&$(e.root,e.file),q(e.root,e.file??null)},[$,q]);return r.jsxs("div",{className:"s-code-screen","data-embedded":I||void 0,children:[r.jsxs("div",{className:"s-code-head",children:[C?r.jsxs("button",{type:"button",className:"s-code-returnThread",onClick:oe,title:"Back to thread (⌘[)",children:[r.jsx(et,{size:13,strokeWidth:1.9,"aria-hidden":!0}),r.jsx("span",{children:"Back to thread"})]}):null,r.jsx(Qe,{snapshot:h,root:o,onSelect:_e}),v?.worktree.diff.branchShortstat?r.jsx("span",{className:"s-code-headStat",children:v.worktree.diff.branchShortstat}):null,o?r.jsx("span",{className:"s-code-headPath",title:o,children:Ye(o)}):null,D?r.jsx("button",{type:"button",className:"s-code-copyLink",title:D,onClick:()=>{We()},children:Ue==="copied"?"Copied scout://":"Copy scout://"}):null]}),r.jsxs("div",{className:"s-code-body",children:[r.jsx("div",{className:"s-code-tree",role:"tree","aria-label":"Files",children:de?r.jsx("div",{className:"s-code-treeNote",children:de}):o?Me.map(e=>e.loading?r.jsx("div",{className:"s-code-node s-code-node--loading",style:{paddingLeft:10+e.depth*14},children:e.name},e.path):r.jsxs("button",{type:"button",role:"treeitem",className:"s-code-node","data-selected":e.path===a||void 0,"data-diff":e.kind==="file"?F.get(e.path):void 0,"aria-expanded":e.kind==="directory"?L.has(e.path):void 0,style:{paddingLeft:10+e.depth*14},onClick:()=>e.kind==="directory"?Te(e.path):De(e.path),onMouseEnter:e.kind==="file"?()=>Fe(e.path):void 0,children:[e.kind==="directory"?r.jsx(tt,{size:11,strokeWidth:2,className:"s-code-nodeChevron","data-open":L.has(e.path)||void 0,"aria-hidden":!0}):r.jsx("span",{className:"s-code-nodeSpacer","aria-hidden":!0}),r.jsx("span",{className:"s-code-nodeName",children:e.name}),e.kind==="file"&&F.has(e.path)?r.jsx("span",{className:"s-code-nodeBadge","data-diff":F.get(e.path),children:ot(F.get(e.path)??"")}):null,e.kind==="directory"&&Ie.has(e.path)?r.jsx("span",{className:"s-code-nodeDot","aria-label":"Contains changes"}):null]},e.path)):N.phase==="resolving"?r.jsxs("div",{className:"s-code-treeNote",children:["Resolving “",p,"”…"]}):N.phase==="failed"?r.jsx("div",{className:"s-code-treeNote",children:N.message}):r.jsx("div",{className:"s-code-treeNote",children:"No repo selected."})}),r.jsxs("div",{className:"s-code-main",children:[a?r.jsxs("div",{className:"s-code-fileHead",children:[r.jsx("span",{className:"s-code-filePath",children:Be}),G?r.jsxs("div",{className:"s-code-fileMode",role:"tablist","aria-label":"File view",children:[r.jsx("button",{type:"button",role:"tab","aria-selected":M==="source","data-selected":M==="source"||void 0,onClick:()=>ee("source"),children:"Source"}),r.jsx("button",{type:"button",role:"tab","aria-selected":M==="changes","data-selected":M==="changes"||void 0,onClick:()=>ee("changes"),children:"Changes"})]}):null,c?.kind==="file"?r.jsxs("span",{className:"s-code-fileMeta",children:[X(c.sizeBytes),c.previewable&&c.truncated?" · truncated":"",m?` · L${m.line}${m.endLine?`–${m.endLine}`:""}`:""]}):null,c?.kind==="file"&&c.previewable?r.jsxs(r.Fragment,{children:[r.jsxs("button",{type:"button",className:"s-code-fileAction",onClick:()=>{Pe()},title:"Copy file contents",children:[pe==="copied"?r.jsx(nt,{size:12,"aria-hidden":!0}):r.jsx(st,{size:12,"aria-hidden":!0}),pe==="copied"?"Copied":"Copy"]}),r.jsx("a",{className:"s-code-fileAction",href:c.rawUrl,target:"_blank",rel:"noreferrer",children:"Raw"})]}):null]}):null,M==="changes"&&G&&o&&a?r.jsx(qe,{root:o,file:a},`${o}\0${a}`):Ee?r.jsxs("div",{className:"s-code-empty",children:["Loading ",a?ce(a):"file","…"]}):fe?r.jsx("div",{className:"s-code-empty",children:fe}):c&&c.kind==="file"&&c.previewable?r.jsxs(r.Fragment,{children:[c.truncated?r.jsxs("div",{className:"s-code-fileNote",children:["Showing the first ",X(256*1024)," of ",X(c.sizeBytes)," ·"," ",r.jsx("a",{href:c.rawUrl,target:"_blank",rel:"noreferrer",children:"open raw"})]}):null,r.jsx(Ze,{code:c.content,path:c.path,focusLine:m?.line,endLine:m?.endLine})]}):c&&c.kind==="file"?r.jsxs("div",{className:"s-code-empty",children:[c.previewReason," · ",X(c.sizeBytes)," ·"," ",r.jsx("a",{href:c.rawUrl,target:"_blank",rel:"noreferrer",children:"open raw"})]}):N.phase==="resolving"?r.jsxs("div",{className:"s-code-empty",children:["Opening ",b??`“${p}”`,"…"]}):N.phase==="failed"?r.jsx("div",{className:"s-code-empty",children:N.message}):r.jsx("div",{className:"s-code-empty",children:"Pick a file to read."})]})]})]})}const $t=Ke({id:"code",label:"Code Browser",route:{view:"code"},webPath:"/code",screen:"CodeContent",embed:{path:"/embed/code",profile:"macos.code",rootClassName:"s-code-embed",chrome:{showSecondaryNav:!1,showPageStatusBar:!1},hosts:{macos:!0},resolveEmbedProps:i=>({root:i.get("root")?.trim()||void 0,file:i.get("file")?.trim()||void 0,project:i.get("project")?.trim()||void 0,path:i.get("path")?.trim()||void 0,wt:i.get("wt")?.trim()||void 0,line:Se(i.get("line")),endLine:Se(i.get("endLine")),returnConversationId:i.get("fromConversation")?.trim()||void 0})}});function Se(i){if(!i)return;const l=Number.parseInt(i,10);return Number.isSafeInteger(l)&&l>0?l:void 0}export{Et as CodeContent,$t as scoutSurface};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cvs{display:flex;flex-direction:column;gap:var(--space-lg)}.cvs-controls{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm) var(--space-md)}.cvs-ctl-label{font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}.cvs-seg{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius-xs, 4px);overflow:hidden}.cvs-seg-btn{appearance:none;border:0;background:none;padding:3px 9px;font:inherit;font-size:11.5px;color:var(--dim);cursor:pointer}.cvs-seg-btn+.cvs-seg-btn{border-left:1px solid var(--border)}.cvs-seg-btn:hover{color:var(--ink)}.cvs-seg-btn.is-active{color:var(--ink);background:color-mix(in oklab,var(--ink) 8%,transparent);font-weight:550}.cvs-stage{overflow:auto;height:clamp(320px,52vh,620px);margin:0 calc(-1 * var(--space-sm));padding:0 var(--space-sm) var(--space-sm)}.cvs-svg{display:block}.cvs-lane-label{font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);font-size:9px;font-weight:600;letter-spacing:.08em;fill:var(--dim)}.cvs-lane-count{font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);font-size:10px;fill:var(--muted)}.cvs-edge,.cvs-trunk,.cvs-node{transition:opacity .12s ease}.cvs-edge--dim{opacity:.18}.cvs-edge-line{fill:none;stroke:color-mix(in oklab,var(--ink) 34%,transparent);stroke-linecap:round}.cvs-edge-tip{fill:color-mix(in oklab,var(--ink) 34%,transparent);stroke:none}.cvs-edge-late{fill:none;stroke:var(--red);stroke-dasharray:2 5;stroke-linecap:round;opacity:.85}.cvs-edge-hit{fill:none;stroke:transparent;stroke-width:14;cursor:pointer}.cvs-edge-hit:focus-visible{outline:none;stroke:color-mix(in oklab,var(--accent) 30%,transparent)}.cvs-bracket{fill:none;stroke:color-mix(in oklab,var(--ink) 34%,transparent);stroke-width:1.5}.cvs-trunk-label{font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);font-size:11px;font-weight:600;fill:var(--ink)}.cvs-trunk-sub{font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);font-size:9.5px;fill:var(--dim)}.cvs-node{cursor:pointer}.cvs-node--dim{opacity:.28}.cvs-box{fill:var(--bg);stroke:var(--border);stroke-width:1}.cvs-node--hub .cvs-box{stroke:color-mix(in oklab,var(--ink) 45%,transparent)}.cvs-node--on .cvs-box{stroke:var(--ink);stroke-width:1.5}.cvs-node:hover .cvs-box{stroke:color-mix(in oklab,var(--ink) 45%,transparent)}.cvs-node:focus-visible{outline:none}.cvs-node:focus-visible .cvs-box{stroke:var(--accent);stroke-width:2}.cvs-node--disputed .cvs-box{stroke-dasharray:3 3}.cvs-late-mark{fill:var(--red)}.cvs-name{fill:var(--ink);font-size:12.5px;font-weight:500}.cvs-meta{fill:var(--dim);font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);font-size:9.5px}.cvs-ran{fill:color-mix(in oklab,var(--dim) 72%,transparent)}.cvs-inferred{fill:var(--dim);opacity:.5}.cvs-tasks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}.cvs-task{display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:baseline;width:100%;padding:5px 8px;border:0;border-radius:4px;background:none;font:inherit;font-size:12px;color:var(--dim);text-align:left;cursor:pointer}.cvs-task:hover{background:color-mix(in oklab,var(--ink) 5%,transparent)}.cvs-task--on{background:color-mix(in oklab,var(--ink) 8%,transparent)}.cvs-task--on .cvs-task-title{color:var(--ink)}.cvs-task-title{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cvs-task-who{color:var(--dim);white-space:nowrap}.cvs-task-ran{font-style:normal;font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);font-size:11px;color:color-mix(in oklab,var(--dim) 72%,transparent);padding-left:6px}.cvs-task-ms{color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap}.cvs-task-ms--late{color:var(--red)}.cvs-arrow{font-style:normal;color:var(--dim);padding:0 6px}.cvs .cf-legend{margin-top:0}.cvs-hint{margin:0 0 0 auto;font-size:11px;color:var(--muted)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as I,j as a}from"./index-DReVb7jZ.js";import{a as Z,h as _,d as q,p as J}from"./comms-gesture-_aGFo6g3.js";import{f as Q}from"./comms-deck-CBhsXnY-.js";const U={nodeW:178,nodeH:42,rowGap:9,laneGap:124,padX:26,padY:46,shelfRows:9,colGap:20};function ee(t,x,p=new Map){const w=new Map,r=new Map;let f=0;const g=new Map,i=n=>{w.has(n.id)||w.set(n.id,n)};for(const n of t){if(i(n.from),n.from.kind==="operator"){const v=g.get(n.from.id)??{own:0,agent:0};n.message.class==="agent"?v.agent+=n.count:v.own+=n.count,g.set(n.from.id,v)}if(n.kind==="channel"){f+=n.count;for(const v of n.audience)i(v);continue}for(const v of n.audience){if(i(v),v.id===n.from.id)continue;const M=`${n.from.id}->${v.id}`,$=r.get(M);$?$.count+=n.count:r.set(M,{from:n.from.id,to:v.id,count:n.count})}}const d=new Set([...g].filter(([,n])=>n.own===0&&n.agent>0).map(([n])=>n)),b=[...g].filter(([n])=>d.has(n)).reduce((n,[,v])=>n+v.agent,0),o=[...w.values()].map(n=>({id:n.id,short:n.short,kind:n.kind,model:p.get(n.id)?.model??null,harness:p.get(n.id)?.harness??null,disputed:d.has(n.id)})),m=Z(t,x).map(n=>({id:n.id,title:n.title,ms:n.ms,abandoned:n.abandoned,waiterId:n.waiter.id,workerId:n.worker.id}));return{actors:o,tasks:m,pairs:[...r.values()],broadcasts:f,misattributed:b}}function se(t,x,p,w){const r=new Set([w]),f=new Map,g=new Map;for(const i of x)(f.get(i.waiterId)??f.set(i.waiterId,[]).get(i.waiterId)).push(i.workerId),(g.get(i.workerId)??g.set(i.workerId,[]).get(i.workerId)).push(i.waiterId);for(const i of[f,g]){const d=[w];for(let b=0;b<d.length;b+=1)for(const o of i.get(d[b])??[])r.has(o)||(r.add(o),d.push(o))}return r.size<2?{actors:[...t],tasks:[...x],pairs:[...p],setAside:0}:{actors:t.filter(i=>r.has(i.id)),tasks:x.filter(i=>r.has(i.waiterId)&&r.has(i.workerId)),pairs:p.filter(i=>r.has(i.from)&&r.has(i.to)),setAside:t.length-r.size}}function te(t,x){const p=new Map,w=new Map,r=new Map(t.map(d=>[d,0]));for(const d of x)d.from!==d.to&&((p.get(d.from)??p.set(d.from,[]).get(d.from)).push(d.to),(w.get(d.to)??w.set(d.to,[]).get(d.to)).push(d.from),r.set(d.to,(r.get(d.to)??0)+1));const f=new Map,g=t.filter(d=>(r.get(d)??0)===0);for(const d of g)f.set(d,0);const i=new Map(r);for(let d=0;d<g.length;d+=1){const b=g[d];for(const o of p.get(b)??[]){f.set(o,Math.max(f.get(o)??0,(f.get(b)??0)+1));const m=(i.get(o)??0)-1;i.set(o,m),m===0&&g.push(o)}}for(const d of t){if(f.has(d))continue;const b=(w.get(d)??[]).map(o=>f.get(o)).filter(o=>o!==void 0);f.set(d,b.length>0?Math.max(...b)+1:0)}return f}function ne(t,x){return x===0?"In this window":t===0?"Opened the work":t===x?"Did the work":"Passed it on"}function ae(t,x,p,w){const r=U,f=new Map(t.map(s=>[s.id,s])),g=new Map,i=s=>{let c=g.get(s);return c||(c={asked:0,did:0,ms:0,abandoned:0,sent:0,received:0},g.set(s,c)),c};for(const s of t)i(s.id);for(const s of x){i(s.waiterId).asked+=1;const c=i(s.workerId);c.did+=1,c.ms=Math.max(c.ms,s.ms),s.abandoned&&(c.abandoned+=1)}for(const s of p)i(s.from).sent+=s.count,i(s.to).received+=s.count;const d=x.map(s=>({from:s.waiterId,to:s.workerId})),b=t.map(s=>s.id),o=te(b,d),m=new Set;for(const s of d)m.add(s.from),m.add(s.to);const n=new Map;for(const s of p)for(const[c,l]of[[s.from,s.to],[s.to,s.from]]){const u=n.get(c);(!u||s.count>u.count)&&n.set(c,{id:l,count:s.count})}for(const s of b){if(m.has(s))continue;const c=n.get(s);o.set(s,c&&m.has(c.id)?(o.get(c.id)??0)+1:o.get(s)??0)}const v=Math.max(0,...b.map(s=>o.get(s)??0)),M=s=>{const c=i(s);switch(w.order){case"duration":return-c.ms;case"outcome":return-(c.abandoned*1e12+c.ms);case"volume":return-(c.sent+c.received);case"name":return 0}},$=new Map;for(const s of b){const c=o.get(s)??0;($.get(c)??$.set(c,[]).get(c)).push(s)}for(const[,s]of $)s.sort((c,l)=>{const u=M(c)-M(l);return u!==0?u:(f.get(c)?.short??c).localeCompare(f.get(l)?.short??l)});const E=w.mode==="shelf"?Math.max(2,w.shelfRows??r.shelfRows):Number.POSITIVE_INFINITY,A=new Map,H=new Map;let W=r.padX;for(let s=0;s<=v;s+=1){const c=$.get(s)??[],l=Math.max(1,Math.ceil(c.length/E));A.set(s,l),H.set(s,W),W+=l*r.nodeW+(l-1)*r.colGap+r.laneGap}const K=Math.max(W-r.laneGap+r.padX,640),j=[];for(let s=0;s<=v;s+=1){const c=$.get(s)??[],l=A.get(s)??1,u=Math.ceil(c.length/l);c.forEach((e,h)=>{const y=l===1?0:Math.floor(h/u),S=l===1?h:h%u,R=i(e),L=f.get(e);j.push({id:e,short:L?.short??e,kind:L?.kind??"agent",lane:s,col:y,x:(H.get(s)??r.padX)+y*(r.nodeW+r.colGap),y:r.padY+S*(r.nodeH+r.rowGap),w:r.nodeW,h:r.nodeH,asked:R.asked,did:R.did,ms:R.ms,abandoned:R.abandoned,sent:R.sent,received:R.received,model:L?.model??null,harness:L?.harness??null,disputed:L?.disputed??!1,inferred:!m.has(e)})})}const C=new Map(j.map(s=>[s.id,s])),D=Math.max(1,...[...$.entries()].map(([s,c])=>Math.ceil(c.length/(A.get(s)??1)))),N=r.padY*2+D*r.nodeH+(D-1)*r.rowGap,k=new Map;for(const s of x){const c=`${s.waiterId}>${s.workerId}`,l=k.get(c)??{tasks:0,abandoned:0};l.tasks+=1,s.abandoned&&(l.abandoned+=1),k.set(c,l)}const P=Math.max(1,...p.map(s=>s.count)),O=[],T=[],X=(s,c)=>{const l=s.x+s.w,u=s.y+s.h/2,e=c.x,h=c.y+c.h/2,y=Math.max(28,(e-l)/2);return{d:`M ${l} ${u} C ${l+y} ${u}, ${e-y} ${h}, ${e} ${h}`,tip:{x:e,y:h,angle:0}}};if(w.mode==="ladder")for(const s of p){const c=C.get(s.from),l=C.get(s.to);if(!c||!l||c.lane>=l.lane)continue;const u=k.get(`${s.from}>${s.to}`),{d:e,tip:h}=X(c,l);O.push({key:`${s.from}>${s.to}`,from:s.from,to:s.to,count:s.count,tasks:u?.tasks??0,abandoned:u?.abandoned??0,weight:1+Math.round(s.count/P*3),d:e,tip:h})}else{const s=new Map,c=(l,u)=>{const e=`${l}>L${u}`,h=s.get(e)??{from:l,lane:u,count:0,tasks:0,abandoned:0};return s.set(e,h),h};for(const l of x){const u=C.get(l.waiterId),e=C.get(l.workerId);if(!u||!e||u.lane>=e.lane)continue;const h=c(l.waiterId,e.lane);h.tasks+=1,l.abandoned&&(h.abandoned+=1)}for(const l of p){const u=C.get(l.from),e=C.get(l.to);!u||!e||u.lane>=e.lane||(c(l.from,e.lane).count+=l.count)}for(const[l,u]of s){const e=C.get(u.from);if(!e)continue;const h=j.filter(G=>G.lane===u.lane);if(h.length===0)continue;const y=Math.min(...h.map(G=>G.x))-14,S=Math.min(...h.map(G=>G.y))+r.nodeH/2,R=Math.max(...h.map(G=>G.y))+r.nodeH/2,L=e.x+e.w,Y=e.y+e.h/2,B=(S+R)/2,V=Math.max(28,(y-L)/2);T.push({key:l,from:u.from,lane:u.lane,count:u.count,tasks:u.tasks,abandoned:u.abandoned,d:`M ${L} ${Y} C ${L+V} ${Y}, ${y-V} ${B}, ${y} ${B}`,label:{x:L+9,y:Y-7+(u.lane-e.lane-1)*12},bar:{x:y,y1:S,y2:R}})}}return{nodes:j,modelsKnown:j.filter(s=>s.model).length,disputedCount:j.filter(s=>s.disputed).length,edges:O,trunks:T,lanes:[...Array(v+1).keys()].map(s=>({index:s,label:ne(s,v),x:H.get(s)??r.padX,count:($.get(s)??[]).length})),width:K,height:N}}function oe(t,x,p){if(t.length===0)return null;const w=t.find(o=>o.id===x);if(!w)return t.reduce((o,m)=>m.x<o.x||m.x===o.x&&m.y<o.y?m:o).id;const r=o=>`${o.lane}:${o.col}`,f=t.filter(o=>r(o)===r(w)).sort((o,m)=>o.y-m.y);if(p==="first")return f[0]?.id??null;if(p==="last")return f[f.length-1]?.id??null;if(p==="up"||p==="down"){const o=f.findIndex(m=>m.id===w.id);return f[o+(p==="down"?1:-1)]?.id??null}const g=new Map;for(const o of t){const m=r(o),n=g.get(m);n?(n.nodes.push(o),n.x=Math.min(n.x,o.x)):g.set(m,{x:o.x,nodes:[o]})}const i=[...g.values()].sort((o,m)=>o.x-m.x),d=i.findIndex(o=>o.nodes.some(m=>m.id===w.id)),b=i[d+(p==="right"?1:-1)];return b?b.nodes.reduce((o,m)=>Math.abs(m.y-w.y)<Math.abs(o.y-w.y)?m:o).id:null}const re=[{id:"shelf",label:"Shelf",hint:"Wrap the last lane into as many columns as fit, and bundle its edges"},{id:"ladder",label:"Ladder",hint:"One card per row, every edge drawn on its own"}],ce=[{id:"duration",label:"Longest first"},{id:"outcome",label:"Never came back"},{id:"volume",label:"Most said"},{id:"name",label:"By name"}];function ie(t){return(t.includes("/")?t.slice(t.lastIndexOf("/")+1):t).replace(/^(claude|openai|anthropic)-/i,"")}function F(t){return t.model?.trim()?ie(t.model.trim()):t.harness?.trim()||null}function z(t,x){return t.length<=x?t:`${t.slice(0,x-1).trimEnd()}…`}const de={ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",Home:"first",End:"last"};function le({node:t,dim:x,on:p,cursor:w,bind:r,onHover:f,onOpen:g,onNav:i,onFocus:d}){const b=_(g),o=F(t),m=`${t.sent+t.received} msgs`,n=t.asked>0?`${t.asked} handed out`:t.ms>0?q(t.ms):null,v=n?`${n} · ${m}`:m,M=o?n??m:v,$=t.disputed?`${t.short} — ${v} — attribution disputed`:`${t.short} — ${v}`;return a.jsxs("g",{className:["cvs-node",t.asked>0?"cvs-node--hub":"",x?"cvs-node--dim":"",p?"cvs-node--on":"",t.disputed?"cvs-node--disputed":""].filter(Boolean).join(" "),transform:`translate(${t.x} ${t.y})`,onMouseEnter:()=>f(t.id),onMouseLeave:()=>f(null),"aria-label":$,"aria-current":p?"true":void 0,ref:r,...b,tabIndex:w?0:-1,onFocus:d,onKeyDown:E=>{const A=de[E.key];if(!A){b.onKeyDown(E);return}E.preventDefault(),i(A)},children:[a.jsx("title",{children:t.disputed?`${t.short} — ${v} — every message under this name is classed as an agent's, so the name is the record's, not a person's`:$}),a.jsx("rect",{className:"cvs-box",x:0,y:0,width:t.w,height:t.h,rx:5}),t.abandoned>0?a.jsx("rect",{className:"cvs-late-mark",x:0,y:0,width:2,height:t.h}):null,a.jsx("text",{className:"cvs-name",x:11,y:17,children:z(t.short,24)}),a.jsx("text",{className:"cvs-meta",x:11,y:31,children:z(M,o?17:30)}),o?a.jsx("text",{className:"cvs-meta cvs-ran",x:t.w-11,y:31,textAnchor:"end",children:z(o,11)}):null,t.inferred?a.jsx("circle",{className:"cvs-inferred",cx:t.w-10,cy:11,r:2.5}):null]})}function fe({passes:t,flights:x,identities:p,rootId:w,focus:r,selectedId:f,onOpen:g}){const[i,d]=I.useState(null),[b,o]=I.useState(null),m=I.useRef(new Map),[n,v]=I.useState("shelf"),[M,$]=I.useState(!1),[E,A]=I.useState("duration"),H=I.useRef(null),[W,K]=I.useState(0);I.useEffect(()=>{const e=H.current;if(!e||typeof ResizeObserver>"u")return;const h=new ResizeObserver(([y])=>K(y?.contentRect.height??0));return h.observe(e),()=>h.disconnect()},[]);const j=I.useMemo(()=>ee(t,x,p),[t,x,p]),C=I.useMemo(()=>w?se(j.actors,j.tasks,j.pairs,w):null,[j,w]),D=C?.setAside??0,N=I.useMemo(()=>C&&!M?{...j,...C}:j,[j,C,M]),k=I.useMemo(()=>{const e=U,h=W>0?Math.max(2,Math.floor((W-e.padY*2+e.rowGap)/(e.nodeH+e.rowGap))):void 0;return ae(N.actors,N.tasks,N.pairs,{mode:n,order:E,shelfRows:h})},[N,n,E,W]);if(k.nodes.length===0)return a.jsx("p",{className:"cf-graph-empty",children:"Nothing has been exchanged in this window yet."});const P=e=>r?r.has(e):!1,O=e=>i!==null?i===e:r?r.has(e):!0,T=(e,h)=>i!==null?i===e||i===h:r?r.has(e)&&r.has(h):!0,X=e=>f===Q(e),s=(e,h)=>{const y=oe(k.nodes,e,h);if(!y||y===e)return;o(y);const S=m.current.get(y);S?.focus(),S?.scrollIntoView({block:"nearest",inline:"nearest"})},c=k.nodes.some(e=>e.id===b)?b:k.nodes[0]?.id??null,l=k.nodes.length-k.modelsKnown,u=N.tasks.filter(e=>e.abandoned).length;return a.jsxs("div",{className:"cvs",children:[a.jsxs("div",{className:"cvs-controls",children:[a.jsx("span",{className:"cvs-ctl-label",children:"Layout"}),a.jsx("div",{className:"cvs-seg",role:"group","aria-label":"Layout",children:re.map(e=>a.jsx("button",{type:"button",className:`cvs-seg-btn${n===e.id?" is-active":""}`,onClick:()=>v(e.id),"aria-pressed":n===e.id,title:e.hint,children:e.label},e.id))}),D>0?a.jsxs(a.Fragment,{children:[a.jsx("span",{className:"cvs-ctl-label",children:"Show"}),a.jsxs("div",{className:"cvs-seg",role:"group","aria-label":"Scope",children:[a.jsx("button",{type:"button",className:`cvs-seg-btn${M?"":" is-active"}`,onClick:()=>$(!1),"aria-pressed":!M,title:"Who asked this agent, and everyone it asked, all the way down",children:"This branch"}),a.jsx("button",{type:"button",className:`cvs-seg-btn${M?" is-active":""}`,onClick:()=>$(!0),"aria-pressed":M,title:"Every participant in this agent's window, whoever they were working for",children:"Everything"})]})]}):null,a.jsx("span",{className:"cvs-ctl-label",children:"Down the lane"}),a.jsx("div",{className:"cvs-seg",role:"group","aria-label":"Order",children:ce.map(e=>a.jsx("button",{type:"button",className:`cvs-seg-btn${E===e.id?" is-active":""}`,onClick:()=>A(e.id),"aria-pressed":E===e.id,children:e.label},e.id))}),g?a.jsx("p",{className:"cvs-hint",children:"Click to select · arrows to move · Esc to clear"}):null]}),a.jsx("div",{className:"cvs-stage",ref:H,children:a.jsxs("svg",{className:"cvs-svg",width:k.width,height:k.height,viewBox:`0 0 ${k.width} ${k.height}`,role:"img","aria-label":"Who asked whom, laid out from who opened the work to who did it",children:[k.lanes.map(e=>a.jsxs("g",{children:[a.jsx("text",{className:"cvs-lane-label",x:e.x,y:20,children:e.label.toUpperCase()}),a.jsx("text",{className:"cvs-lane-count",x:e.x,y:34,children:e.count})]},e.index)),k.edges.map(e=>a.jsxs("g",{className:`cvs-edge${T(e.from,e.to)?"":" cvs-edge--dim"}`,children:[a.jsx("path",{className:"cvs-edge-line",d:e.d,strokeWidth:e.weight}),a.jsx("path",{className:"cvs-edge-tip",d:"M 0 0 L -7 -3.2 L -7 3.2 Z",transform:`translate(${e.tip.x} ${e.tip.y}) rotate(${e.tip.angle})`}),e.abandoned>0?a.jsx("path",{className:"cvs-edge-late",d:e.d,strokeWidth:e.weight}):null,g?a.jsx("path",{className:"cvs-edge-hit",d:e.d,"aria-label":`${e.count} message${e.count===1?"":"s"} — open`,..._(()=>g({kind:"pair",from:e.from,to:e.to})),children:a.jsx("title",{children:`${e.count} message${e.count===1?"":"s"} — open`})}):null]},e.key)),k.trunks.map(e=>a.jsxs("g",{className:`cvs-trunk${O(e.from)?"":" cvs-edge--dim"}`,children:[a.jsxs("title",{children:[`${e.tasks} ask${e.tasks===1?"":"s"} · ${e.count} message${e.count===1?"":"s"}`,e.abandoned>0?` · ${e.abandoned} never came back`:""]}),a.jsx("path",{className:"cvs-edge-line",d:e.d,strokeWidth:2}),e.abandoned>0?a.jsx("path",{className:"cvs-edge-late",d:e.d,strokeWidth:2}):null,a.jsx("path",{className:"cvs-bracket",d:`M ${e.bar.x} ${e.bar.y1} L ${e.bar.x} ${e.bar.y2}`}),a.jsxs("text",{className:"cvs-trunk-label",x:e.label.x,y:e.label.y,children:[e.tasks," ask",e.tasks===1?"":"s"]})]},e.key)),k.nodes.map(e=>a.jsx(le,{node:e,dim:!O(e.id),on:P(e.id),cursor:e.id===c,bind:h=>{h?m.current.set(e.id,h):m.current.delete(e.id)},onHover:d,onOpen:()=>g?.({kind:"actor",actorId:e.id}),onNav:h=>s(e.id,h),onFocus:()=>o(e.id)},e.id))]})}),a.jsxs("div",{className:"cf-legend",children:[a.jsxs("span",{children:[a.jsx("i",{className:"cf-swatch"})," exchange, thicker with volume"]}),u>0&&a.jsxs("span",{children:[a.jsx("i",{className:"cf-swatch cf-swatch--late"})," ",u," ask",u===1?"":"s"," never came back"]}),N.broadcasts>0&&a.jsxs("span",{className:"cf-dim",children:[N.broadcasts," to the whole conversation, which is not a pair"]}),!M&&D>0&&a.jsxs("span",{className:"cf-dim",children:[D," more in this window, on work this agent is not part of"]}),k.disputedCount>0&&a.jsxs("span",{className:"cf-dim",children:[N.misattributed," message",N.misattributed===1?"":"s"," name an operator but are recorded as an agent’s — drawn with a dashed edge, because the name is the record’s and not a person’s"]}),a.jsx("span",{className:"cf-dim",children:l===0?`all ${k.nodes.length} name a model`:`${k.modelsKnown} of ${k.nodes.length} name a model; the rest show the harness that ran them`})]}),N.tasks.length>0&&a.jsx("ol",{className:"cvs-tasks",children:N.tasks.map(e=>{const h={kind:"task",askId:e.id},y=k.nodes.find(S=>S.id===e.workerId);return a.jsx("li",{children:a.jsxs("button",{type:"button",className:`cvs-task${X(h)?" cvs-task--on":""}`,...J(()=>g?.(h)),"aria-current":X(h)?"true":void 0,title:e.title,onMouseEnter:()=>d(e.workerId),onMouseLeave:()=>d(null),children:[a.jsx("span",{className:"cvs-task-title",children:e.title}),a.jsxs("span",{className:"cvs-task-who",children:[k.nodes.find(S=>S.id===e.waiterId)?.short??e.waiterId,a.jsx("i",{className:"cvs-arrow",children:"→"}),y?.short??e.workerId,y&&F(y)?a.jsx("i",{className:"cvs-task-ran",children:F(y)}):null]}),a.jsx("span",{className:`cvs-task-ms${e.abandoned?" cvs-task-ms--late":""}`,children:q(e.ms)})]})},e.id)})})]})}export{fe as CommsCanvas};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as o,j as t}from"./index-DReVb7jZ.js";/* empty css */import{c as D}from"./conversations-Cbg9h_Af.js";import{u as S}from"./use-conversation-list-D5EnpVba.js";import{s as W}from"./agent-master-model-C-KdOFDK.js";import{A as L}from"./arrow-up-right-B0aLKiyF.js";import{C as R}from"./chevron-right-DKGTLiqc.js";import{X as A}from"./x-rlMdRqJF.js";import"./time-Dhsh_2EG.js";import"./machine-scope-DJt9RZ2w.js";import"./api-DSqpVKC7.js";import"./sse-A8AyLH0g.js";import"./index-BWHgHrtv.js";import"./createLucideIcon-ChvMq-zl.js";const d=260,p=720,h=380,v="openscout.comms.deck.width";function I(){try{const a=Number(window.localStorage.getItem(v));return Number.isFinite(a)&&a>=d&&a<=p?a:h}catch{return h}}function J({ids:a,onClose:g,onStage:j,renderConversation:N}){const[C,k]=o.useState({}),[y,M]=o.useState(()=>new Set),[c,f]=o.useState(null),[x,u]=o.useState(h),m=o.useRef(new Map),{sessions:E}=S();o.useEffect(()=>u(I()),[]);const w=o.useCallback(e=>{M(r=>{const s=new Set(r);return s.has(e)?s.delete(e):s.add(e),s})},[]);return o.useEffect(()=>{if(!c)return;const e=s=>{const i=m.current.get(c);if(!i)return;const n=Math.max(d,Math.min(p,i.getBoundingClientRect().right-s.clientX));k(l=>({...l,[c]:n})),u(n)},r=()=>{f(null),u(s=>{try{window.localStorage.setItem(v,String(s))}catch{}return s})};return window.addEventListener("pointermove",e),window.addEventListener("pointerup",r),()=>{window.removeEventListener("pointermove",e),window.removeEventListener("pointerup",r)}},[c]),a.length===0?null:t.jsx("div",{className:"cdk","aria-label":"Beside the stage",children:a.map(e=>{const r=E.find(n=>W(n,e)),s=r?D(r):e,i=r?.agentName??"Conversation";return y.has(e)?t.jsxs("button",{type:"button",className:"cdk-spine",onClick:()=>w(e),title:`Unfurl — ${s}`,"aria-label":`Unfurl ${i}: ${s}`,children:[t.jsx("span",{className:"cdk-spine-kicker",children:i}),t.jsx("span",{className:"cdk-spine-title",children:s})]},e):t.jsxs("section",{className:"cdk-col",style:{width:C[e]??x},ref:n=>{n?m.current.set(e,n):m.current.delete(e)},children:[t.jsx("div",{className:`cdk-grip${c===e?" cdk-grip--on":""}`,role:"separator","aria-orientation":"vertical","aria-label":`Resize ${s}`,onPointerDown:n=>{n.preventDefault(),f(e)},onKeyDown:n=>{const l=n.key==="ArrowLeft"?24:n.key==="ArrowRight"?-24:0;l&&(n.preventDefault(),k(b=>({...b,[e]:Math.max(d,Math.min(p,(b[e]??x)+l))})))},tabIndex:0}),t.jsxs("header",{className:"cdk-head",children:[t.jsxs("span",{className:"cdk-ident",children:[t.jsx("span",{className:"cdk-kicker",children:i}),t.jsx("span",{className:"cdk-title",title:s,children:s})]}),t.jsx("button",{type:"button",className:"cdk-btn",title:"Move to the stage — it opens there and this column closes","aria-label":"Move to the stage",onClick:()=>j(e),children:t.jsx(L,{size:13,strokeWidth:2,"aria-hidden":!0})}),t.jsx("button",{type:"button",className:"cdk-btn",title:"Furl to a spine","aria-label":"Furl to a spine",onClick:()=>w(e),children:t.jsx(R,{size:13,strokeWidth:2,"aria-hidden":!0})}),t.jsx("button",{type:"button",className:"cdk-btn",title:"Close","aria-label":"Close",onClick:()=>g(e),children:t.jsx(A,{size:13,strokeWidth:2,"aria-hidden":!0})})]}),t.jsx("div",{className:"cdk-live",children:N(e)})]},e)})})}export{J as CommsDeck};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cf-surface{position:relative;flex:1 1 auto;min-height:0;display:flex;overflow-x:auto}.cf-pane{flex:1 1 auto;min-width:560px;min-height:0;overflow:auto;padding:var(--space-3xl) var(--space-2xl) var(--space-5xl)}.cf-graph{position:relative;width:100%;min-width:520px}.cf-graph-svg{position:absolute;top:0;left:0;z-index:2;pointer-events:none}.cf-rail{stroke:color-mix(in oklab,var(--ink) 30%,transparent);stroke-width:1.25}.cf-rail--dim{stroke:color-mix(in oklab,var(--ink) 22%,transparent);stroke-width:1;stroke-dasharray:2 3}.cf-edge{fill:none}.cf-line{stroke:var(--ink);stroke-width:1.25;fill:none}.cf-line--in{stroke:var(--accent)}.cf-line--status{stroke:var(--dim);stroke-dasharray:1.5 3}.cf-line--channel{stroke:var(--muted);stroke-dasharray:4 3}.cf-line--on{stroke-width:2.25}.cf-dot{fill:var(--ink)}.cf-dot--in{fill:var(--accent)}.cf-dot--status{fill:var(--dim)}.cf-dot--channel{fill:var(--bg);stroke:var(--muted);stroke-width:1.25}.cf-wait{fill:color-mix(in oklab,var(--accent) 32%,transparent)}.cf-timeout{stroke:var(--red);stroke-width:1.5}.cf-row{position:absolute;z-index:1;left:0;right:0;display:flex;align-items:baseline;gap:var(--space-sm);appearance:none;border:0;border-radius:var(--radius-md);padding-right:var(--space-sm);background:transparent;text-align:left;font-size:var(--text-md);line-height:18px;color:var(--ink);cursor:pointer}.cf-row:hover{background:var(--surface)}.cf-row--on,.cf-row--on:hover{background:var(--surface);box-shadow:inset 0 0 0 1px var(--border)}.cf-time{flex:none;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim)}.cf-route{flex:none;color:var(--muted);white-space:nowrap}.cf-dim{color:var(--dim)}.cf-body{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cf-body--status{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--muted)}.cf-quiet{position:absolute;z-index:3;font-family:var(--font-mono);font-size:var(--text-xs);line-height:16px;color:var(--dim);pointer-events:none}.cf-merge-label{position:absolute;z-index:3;padding:0 var(--space-2xs);background:var(--bg);font-family:var(--font-mono);font-size:var(--text-xs);line-height:14px;color:var(--muted);white-space:nowrap;pointer-events:none}.cf-tag{flex:none;display:inline-block;padding:0 var(--space-2xs);border:1px solid var(--border);border-radius:var(--radius-xs);font-family:var(--font-mono);font-size:var(--text-xs);line-height:14px;color:var(--dim);white-space:nowrap}.cf-legend{display:flex;flex-wrap:wrap;gap:var(--space-2xs) var(--space-3xl);margin-top:var(--space-4xl);padding-top:var(--space-lg);border-top:1px solid var(--border);font-size:var(--text-sm);color:var(--muted)}.cf-legend>span{display:inline-flex;align-items:center;gap:var(--space-xs)}.cf-swatch{display:inline-block;width:18px;border-top:1.5px solid var(--ink)}.cf-swatch--in{border-top-color:var(--accent)}.cf-swatch--status{border-top-style:dotted;border-top-color:var(--dim)}.cf-swatch--late{border-top-style:dotted;border-top-color:var(--red)}.cf-swatch--wait{width:18px;height:8px;border:0;border-radius:var(--radius-xs);background:color-mix(in oklab,var(--accent) 32%,transparent)}.cf-swatch--fork{width:18px;height:10px;border:0;border-right:1.25px solid var(--ink);border-bottom:1.25px solid var(--ink);border-bottom-right-radius:8px}.cf-graph-empty{padding:var(--space-6xl) var(--space-2xl);text-align:center;color:var(--dim);font-size:var(--text-lg)}.s-thread-view-toggle{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.s-thread-view-option{appearance:none;border:0;padding:var(--space-3xs) var(--space-sm);background:transparent;color:var(--muted);font-size:var(--text-sm);line-height:18px;cursor:pointer}.s-thread-view-option+.s-thread-view-option{border-left:1px solid var(--border)}.s-thread-view-option:hover{color:var(--ink);background:var(--surface)}.s-thread-view-option--on,.s-thread-view-option--on:hover{color:var(--ink);background:var(--surface);font-weight:500}.cfm{display:flex;flex-direction:column;gap:18px}.cfm-svg{width:100%;max-width:860px;height:auto;align-self:center;overflow:visible}.cfm-edge-line{fill:none;stroke:color-mix(in oklab,var(--ink) 34%,transparent);stroke-linecap:round}.cfm-edge-tip{fill:color-mix(in oklab,var(--ink) 34%,transparent);stroke:none}.cfm-edge--in .cfm-edge-line{stroke:var(--accent)}.cfm-edge--in .cfm-edge-tip{fill:var(--accent)}.cfm-edge--dim{opacity:.18}.cfm-edge,.cfm-node{transition:opacity .12s ease}.cfm-box{fill:var(--bg);stroke:var(--border);stroke-width:1}.cfm-node--hub .cfm-box{stroke:color-mix(in oklab,var(--ink) 45%,transparent)}.cfm-node--dim{opacity:.35}.cfm-node--on .cfm-box{stroke:var(--ink);stroke-width:1.5}.cfm-node{cursor:pointer}.cfm-node:focus-visible{outline:none}.cfm-node:focus-visible .cfm-box{stroke:var(--accent);stroke-width:2}.cfm-edge-hit{fill:none;stroke:transparent;stroke-width:14;cursor:pointer}.cfm-edge-hit:focus-visible{outline:none;stroke:color-mix(in oklab,var(--accent) 30%,transparent)}.cfm-name{fill:var(--ink);font-size:12px;font-weight:500;text-anchor:middle;dominant-baseline:middle}.cfm-model{fill:var(--dim);font-size:10px;font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);text-anchor:middle;dominant-baseline:middle}.cfm-pairs{list-style:none;margin:0;padding:0;width:100%;max-width:860px;align-self:center;display:flex;flex-direction:column;gap:1px;font-size:12px}.cfm-pairs li{display:contents}.cfm-pair{appearance:none;border:0;background:none;font:inherit;text-align:left;cursor:pointer;width:100%;display:grid;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) auto;gap:12px;align-items:baseline;padding:4px 8px;border-radius:4px;transition:opacity .12s ease}.cfm-pair:hover{background:color-mix(in oklab,var(--ink) 5%,transparent)}.cfm-pair--on{background:color-mix(in oklab,var(--ink) 8%,transparent)}.cfm-pair--dim{opacity:.35}.cfm-pair-who{color:var(--ink)}.cfm-pair-models{color:var(--dim);font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);font-size:11px}.cfm-pair-count{color:var(--dim);font-variant-numeric:tabular-nums;text-align:right}.cfm-arrow{font-style:normal;color:var(--dim);padding:0 6px}.cfm-model--harness{fill:color-mix(in oklab,var(--dim) 72%,transparent)}.cfm-tasks{list-style:none;margin:0;padding:0;width:100%;max-width:860px;align-self:center;display:flex;flex-direction:column;gap:1px}.cfm-task{display:grid;grid-template-columns:1fr auto auto;gap:14px;align-items:baseline;width:100%;padding:5px 8px;border:0;border-radius:4px;background:none;font:inherit;font-size:12px;color:var(--dim);text-align:left;cursor:pointer}.cfm-task:hover{background:color-mix(in oklab,var(--ink) 5%,transparent)}.cfm-task--on{background:color-mix(in oklab,var(--ink) 8%,transparent)}.cfm-task--on .cfm-task-title{color:var(--ink)}.cfm-task-title{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cfm-task-who{color:var(--dim);white-space:nowrap}.cfm-task-ran{font-style:normal;font-family:var(--mono, ui-monospace, SFMono-Regular, monospace);font-size:11px;color:color-mix(in oklab,var(--dim) 72%,transparent);padding-left:6px}.cfm-task-ms{color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap}.cfm-task-ms--late{color:var(--red)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as j,j as n}from"./index-DReVb7jZ.js";import{e as O,a as R,d as C}from"./comms-gesture-_aGFo6g3.js";import{CommsCanvas as q}from"./CommsCanvas-DdNAwjGW.js";import{mapIdentities as A,CommsFlowMap as Y}from"./CommsFlowMap-C33sgD48.js";import{CommsSelection as D}from"./CommsSelection-BL8aYD7z.js";import{k as H,f as L}from"./comms-deck-CBhsXnY-.js";/* empty css */import"./conversations-Cbg9h_Af.js";import"./time-Dhsh_2EG.js";import"./use-conversation-list-D5EnpVba.js";import"./machine-scope-DJt9RZ2w.js";import"./api-DSqpVKC7.js";import"./sse-A8AyLH0g.js";import"./index-BWHgHrtv.js";import"./agent-master-model-C-KdOFDK.js";import"./x-rlMdRqJF.js";import"./createLucideIcon-ChvMq-zl.js";import"./panel-right-qP17MwMl.js";const $={gutter:20,column:26,head:22,row:30,gap:22,merge:24},P=9e4,g=(t,a=$)=>a.gutter+t*a.column;function T(t,a,l,u){const d=(a+u)/2;return`M ${t} ${a} C ${t} ${d} ${l} ${d} ${l} ${u}`}function _(t,a,l=$){const u=e=>g(e,l),d=[];let r=l.head;for(const e of t)e.gap>P&&d.length&&(d.push({kind:"quiet",ms:e.gap,y:r}),r+=l.gap),d.push({kind:"pass",pass:e,y:r,column:0}),r+=l.row;const s=d.filter(e=>e.kind==="pass"),h=new Map(s.map(e=>[e.pass.id,e])),w=new Map(s.map(e=>[e.pass.message.id,e])),f=new Map;for(const e of s)f.set(e.pass.from.id,e.y);for(const e of a){const c=h.get(e.answer.id),i=f.get(e.waiter.id);c&&i!==void 0&&f.set(e.waiter.id,Math.max(i,c.y+l.merge))}const p=new Map,m=new Set,M=[],y=new Map,N=[],b=(e,c,i,x)=>{let o=0;for(;m.has(o);)o+=1;m.add(o),p.set(e.id,o);const k={key:`rail-${e.id}-${c}`,actor:e,column:o,y0:i?i.y:c,y1:c};return M.push(k),y.set(e.id,[...y.get(e.id)??[],k]),i&&i.column!==o&&N.push({key:`fork-${x}`,d:T(u(i.column),i.y,u(o),c),pass:i.pass,merge:!1}),o};for(const e of s){const c=e.pass;for(const[o,k]of[...p])(f.get(o)??0)<e.y&&(m.delete(k),p.delete(o));let i=p.get(c.from.id);if(i===void 0){const o=c.replyTo?w.get(c.replyTo):void 0,k=o?{column:o.column,y:o.y,pass:o.pass}:null;i=b(c.from,e.y,k,c.id)}e.column=i;const x=y.get(c.from.id)?.at(-1);if(x&&(x.y1=Math.max(x.y1,e.y)),c.kind!=="channel")for(const o of c.audience)o.id===c.from.id||p.has(o.id)||(f.get(o.id)??-1)<e.y||b(o,e.y,{column:i,y:e.y,pass:c},`${c.id}-${o.id}`)}const S=(e,c)=>[...y.get(e)??[]].reverse().find(i=>i.y0<=c)??null,v=[];for(const e of a){const c=h.get(e.opener.id),i=h.get(e.answer.id);if(!c||!i)continue;const x=i.y+l.merge,o=S(e.waiter.id,x);if(!o||o.column===i.column)continue;N.push({key:`merge-${e.askId}`,d:T(u(i.column),i.y,u(o.column),x),pass:e.answer,merge:!0}),o.y1=Math.max(o.y1,x);const k=e.timedOutAt===null?null:s.find(I=>I.pass.kind==="status"&&I.pass.replyTo===e.opener.message.id)?.y??null;v.push({key:`span-${e.askId}`,column:i.column,y0:c.y,y1:i.y,flight:e,timeoutY:k})}const E=s.reduce((e,c)=>Math.max(e,c.column),0)+1;return{rows:d,rails:M,edges:N,spans:v,columns:E,height:r+12}}const F=4.5,B=128;function G(t){const a=new Date(t),l=u=>String(u).padStart(2,"0");return`${l(a.getHours())}:${l(a.getMinutes())}:${l(a.getSeconds())}`}function X(t,a){return["cf-line",t.kind==="status"?"cf-line--status":"",t.kind==="channel"?"cf-line--channel":"",t.inbound?"cf-line--in":"",a?"cf-line--on":""].filter(Boolean).join(" ")}function Q({pass:t}){return n.jsxs(n.Fragment,{children:[t.askId?n.jsx("span",{className:"cf-tag",children:"answer"}):null,t.count>1?n.jsxs("span",{className:"cf-tag",children:["×",t.count]}):null,t.kind==="channel"?n.jsx("span",{className:"cf-tag",children:"to the conversation"}):null]})}function U({passes:t,flights:a,selectedId:l,onSelect:u}){const d=j.useMemo(()=>_(t,a),[t,a]),r=Math.max(B,g(d.columns-1)+22);return d.rows.length===0?n.jsx("div",{className:"cf-graph-empty",children:n.jsx("p",{children:"Nothing has passed between anyone in this window yet."})}):n.jsxs("div",{className:"cf-graph",style:{height:d.height},children:[n.jsxs("svg",{className:"cf-graph-svg",width:r,height:d.height,viewBox:`0 0 ${r} ${d.height}`,"aria-hidden":"true",children:[d.spans.map(s=>n.jsxs("g",{children:[n.jsx("rect",{className:"cf-wait",x:g(s.column)-5,y:s.y0,width:10,height:Math.max(2,s.y1-s.y0),rx:5}),s.timeoutY!==null?n.jsx("line",{className:"cf-timeout",x1:g(s.column)-7,x2:g(s.column)+7,y1:s.timeoutY,y2:s.timeoutY}):null]},s.key)),d.rails.map(s=>n.jsx("line",{className:s.actor.kind==="broker"?"cf-rail cf-rail--dim":"cf-rail",x1:g(s.column),x2:g(s.column),y1:s.y0,y2:s.y1},s.key)),d.edges.map(s=>n.jsx("path",{className:`cf-edge ${X(s.pass,s.pass.id===l)}`,d:s.d},s.key)),d.rows.map(s=>s.kind==="pass"?n.jsx("circle",{className:s.pass.kind==="status"?"cf-dot cf-dot--status":s.pass.inbound?"cf-dot cf-dot--in":s.pass.kind==="channel"?"cf-dot cf-dot--channel":"cf-dot",cx:g(s.column),cy:s.y,r:s.pass.id===l?F+1.5:F},`dot-${s.pass.id}`):null)]}),d.rows.map(s=>s.kind==="quiet"?n.jsxs("div",{className:"cf-quiet",style:{top:s.y-8,left:r},children:[C(s.ms)," quiet"]},`quiet-${s.y}`):n.jsxs("button",{type:"button",className:`cf-row${s.pass.id===l?" cf-row--on":""}`,style:{top:s.y-$.row/2+3,height:$.row-6,paddingLeft:r},onClick:()=>u?.(s.pass.id),"aria-pressed":s.pass.id===l,title:s.pass.message.body,children:[n.jsx("span",{className:"cf-time",children:G(s.pass.at)}),n.jsxs("span",{className:"cf-route",children:[s.pass.from.short,n.jsx("span",{className:"cf-dim",children:" to "}),s.pass.kind==="channel"?"the conversation":s.pass.audience.map(h=>h.short).join(", ")]}),n.jsx("span",{className:`cf-body${s.pass.kind==="status"?" cf-body--status":""}`,children:s.pass.message.body}),n.jsx(Q,{pass:s.pass})]},s.pass.id)),d.spans.map(s=>n.jsx("div",{className:"cf-merge-label",style:{top:s.y1+$.merge-7,left:g(s.column)+9},children:C(s.flight.answer.at-s.flight.opener.at)},`merge-${s.key}`))]})}function V({passes:t,flights:a,identities:l,view:u,rootId:d,selected:r,onSelect:s,onStage:h,beside:w}){const f=j.useMemo(()=>R(t,a),[t,a]),p=j.useMemo(()=>H(r,f),[r,f]),m=r?L(r):null,M=j.useCallback(()=>s(null),[s]);let y;return u==="canvas"?y=n.jsx(q,{passes:t,flights:a,identities:l,rootId:d,focus:p,selectedId:m,onOpen:s}):u==="map"?y=n.jsx(Y,{passes:t,flights:a,identities:l,focus:p,selectedId:m,onOpen:s}):y=n.jsxs(n.Fragment,{children:[n.jsx(U,{passes:t,flights:a,selectedId:r?.kind==="message"?r.passId:null,onSelect:N=>s({kind:"message",passId:N})}),t.length>0&&n.jsxs("div",{className:"cf-legend",children:[n.jsxs("span",{children:[n.jsx("i",{className:"cf-swatch"})," message"]}),n.jsxs("span",{children:[n.jsx("i",{className:"cf-swatch cf-swatch--in"})," addressed to you"]}),n.jsxs("span",{children:[n.jsx("i",{className:"cf-swatch cf-swatch--status"})," broker status"]}),n.jsxs("span",{children:[n.jsx("i",{className:"cf-swatch cf-swatch--wait"})," waiting on an answer"]}),n.jsxs("span",{children:[n.jsx("i",{className:"cf-swatch cf-swatch--fork"})," work forks and merges back"]}),a.length>0&&n.jsxs("span",{className:"cf-dim",children:[a.length," ask",a.length===1?"":"s"," answered in this window"]})]})]}),n.jsxs("div",{className:"cf-surface",children:[n.jsx("div",{className:"cf-pane",children:y}),r?n.jsx(D,{card:r,passes:t,tasks:f,onClear:M,onStage:h,beside:w}):null]})}function fs({messages:t,view:a,participants:l,onStage:u,beside:d}){const[r,s]=j.useState(null);j.useEffect(()=>s(null),[a]);const h=j.useMemo(()=>A(l),[l]),{passes:w,flights:f}=j.useMemo(()=>{const p=t.filter(m=>!!m.actorId).map(m=>({id:m.id,conversationId:m.conversationId,actorId:m.actorId,actorName:m.actorName,body:m.body,createdAt:m.createdAt,class:m.class,metadata:m.metadata??null,replyToMessageId:m.replyToMessageId??null}));return O(p)},[t]);return n.jsx(V,{passes:w,flights:f,identities:h,view:a,selected:r,onSelect:s,onStage:u,beside:d})}export{U as CommsFlowGraph,fs as CommsFlowPane,V as CommsFlowView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as d,j as e}from"./index-DReVb7jZ.js";import{f as b,a as E,c as I,b as y,h as $,d as L,p as w}from"./comms-gesture-_aGFo6g3.js";import{f as B}from"./comms-deck-CBhsXnY-.js";function F(a){return(a.includes("/")?a.slice(a.lastIndexOf("/")+1):a).replace(/^(claude|openai|anthropic)-/i,"")}function f(a){return a.model?.trim()?F(a.model.trim()):a.harness?.trim()||null}function N(a,c){return a.length<=c?a:`${a.slice(0,c-1).trimEnd()}…`}function C({node:a,dim:c,on:r,onHover:n,onOpen:l}){const i=f(a);return e.jsxs("g",{className:["cfm-node",a.hub?"cfm-node--hub":"",c?"cfm-node--dim":"",r?"cfm-node--on":""].filter(Boolean).join(" "),transform:`translate(${a.x} ${a.y})`,onMouseEnter:()=>n(a.id),onMouseLeave:()=>n(null),"aria-label":`${a.actor.short} — ${a.sent} sent, ${a.received} received`,...$(l),children:[e.jsx("title",{children:`${a.actor.short} — ${a.sent} sent, ${a.received} received`}),e.jsx("rect",{className:"cfm-box",x:-62,y:-21,width:124,height:42,rx:6}),e.jsx("text",{className:"cfm-name",x:0,y:i?-3:5,children:N(a.actor.short,17)}),i?e.jsx("text",{className:`cfm-model${a.model?"":" cfm-model--harness"}`,x:0,y:12,children:N(i,20)}):null]})}function T({passes:a,flights:c,identities:r,focus:n,selectedId:l,onOpen:i}){const[m,u]=d.useState(null),x=d.useMemo(()=>E(a,c),[a,c]),t=d.useMemo(()=>I(a,r),[a,r]),k=d.useMemo(()=>y(t),[t]),p=s=>f(r.get(s)??{model:null,harness:null});if(t.nodes.length===0)return e.jsx("p",{className:"cf-graph-empty",children:"Nothing has been exchanged in this window yet."});const v=s=>n?n.has(s):!1,g=s=>m!==null?m===s:n?n.has(s):!0,j=(s,o)=>m!==null?m===s||m===o:n?n.has(s)&&n.has(o):!0,M=t.nodes.length-t.modelsKnown,h=s=>l===B(s);return e.jsxs("div",{className:"cfm",children:[e.jsxs("svg",{className:"cfm-svg",viewBox:`0 0 ${t.width} ${t.height}`,preserveAspectRatio:"xMidYMid meet",role:"img","aria-label":"Who exchanged work with whom in this window",children:[t.edges.map(s=>e.jsxs("g",{className:`cfm-edge${s.inbound?" cfm-edge--in":""}${j(s.from,s.to)?"":" cfm-edge--dim"}`,children:[e.jsx("path",{className:"cfm-edge-line",d:s.d,strokeWidth:s.weight}),e.jsx("path",{className:"cfm-edge-tip",d:"M 0 0 L -7 -3.2 L -7 3.2 Z",transform:`translate(${s.tip.x} ${s.tip.y}) rotate(${s.tip.angle})`}),i?e.jsx("path",{className:"cfm-edge-hit",d:s.d,"aria-label":`${s.count} message${s.count===1?"":"s"} — open`,...$(()=>i({kind:"pair",from:s.from,to:s.to})),children:e.jsx("title",{children:`${s.count} message${s.count===1?"":"s"} — open`})}):null]},s.key)),t.nodes.map(s=>e.jsx(C,{node:s,dim:!g(s.id),on:v(s.id),onHover:u,onOpen:()=>i?.({kind:"actor",actorId:s.id})},s.id))]}),x.length>0&&e.jsx("ol",{className:"cfm-tasks",children:x.map(s=>{const o={kind:"task",askId:s.id};return e.jsx("li",{children:e.jsxs("button",{type:"button",className:`cfm-task${h(o)?" cfm-task--on":""}`,...w(()=>i?.(o)),"aria-current":h(o)?"true":void 0,title:s.title,children:[e.jsx("span",{className:"cfm-task-title",children:s.title}),e.jsxs("span",{className:"cfm-task-who",children:[s.waiter.short,e.jsx("i",{className:"cfm-arrow",children:"→"}),s.worker.short,p(s.worker.id)?e.jsx("i",{className:"cfm-task-ran",children:p(s.worker.id)}):null]}),e.jsx("span",{className:`cfm-task-ms${s.abandoned?" cfm-task-ms--late":""}`,children:L(s.ms)})]})},s.id)})}),e.jsx("ol",{className:"cfm-pairs",children:k.map(s=>{const o={kind:"pair",from:s.from.id,to:s.to.id};return e.jsx("li",{className:j(s.from.id,s.to.id)?"":"cfm-pair--dim",children:e.jsxs("button",{type:"button",className:`cfm-pair${h(o)?" cfm-pair--on":""}`,...w(()=>i?.(o)),"aria-current":h(o)?"true":void 0,onMouseEnter:()=>u(s.from.id),onMouseLeave:()=>u(null),children:[e.jsxs("span",{className:"cfm-pair-who",children:[s.from.actor.short,e.jsx("i",{className:"cfm-arrow",children:"→"}),s.to.actor.short]}),e.jsxs("span",{className:"cfm-pair-models",children:[f(s.from)??"not stated",e.jsx("i",{className:"cfm-arrow",children:"→"}),f(s.to)??"not stated"]}),e.jsx("span",{className:"cfm-pair-count",children:s.count})]})},s.key)})}),e.jsxs("div",{className:"cf-legend",children:[e.jsxs("span",{children:[e.jsx("i",{className:"cf-swatch"})," exchange, thicker with volume"]}),e.jsxs("span",{children:[e.jsx("i",{className:"cf-swatch cf-swatch--in"})," addressed to you"]}),t.broadcasts>0&&e.jsxs("span",{className:"cf-dim",children:[t.broadcasts," to the whole conversation, which is not a pair"]}),e.jsx("span",{className:"cf-dim",children:M===0?`all ${t.nodes.length} name a model`:`${t.modelsKnown} of ${t.nodes.length} name a model; the rest show the harness that ran them`})]})]})}function W(a){const c=new Map;for(const r of a??[]){if(!r.model&&!r.harness)continue;const n=b(r.actorId),l=c.get(n);c.set(n,{model:l?.model??r.model??null,harness:l?.harness??r.harness??null})}return c}export{T as CommsFlowMap,W as mapIdentities};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as l,j as e}from"./index-DReVb7jZ.js";/* empty css */import{c as x}from"./conversations-Cbg9h_Af.js";import{u as N}from"./use-conversation-list-D5EnpVba.js";import{s as f}from"./agent-master-model-C-KdOFDK.js";import{g as b,h as C,i as y,j as E,D as w}from"./comms-deck-CBhsXnY-.js";import{X as v}from"./x-rlMdRqJF.js";import{P as K}from"./panel-right-qP17MwMl.js";import"./time-Dhsh_2EG.js";import"./machine-scope-DJt9RZ2w.js";import"./api-DSqpVKC7.js";import"./sse-A8AyLH0g.js";import"./index-BWHgHrtv.js";import"./createLucideIcon-ChvMq-zl.js";function M(n){const s=new Date(n),i=a=>String(a).padStart(2,"0");return`${i(s.getHours())}:${i(s.getMinutes())}:${i(s.getSeconds())}`}function S({passes:n}){return n.length===0?e.jsx("p",{className:"cdk-empty",children:"Nothing passed between them in this window."}):e.jsx("div",{className:"cdk-body",children:n.map(s=>e.jsxs("article",{className:["cdk-msg",s.inbound?"cdk-msg--in":"",s.kind==="status"?"cdk-msg--status":""].filter(Boolean).join(" "),children:[e.jsxs("header",{className:"cdk-msg-head",children:[e.jsx("span",{className:"cdk-msg-from",children:s.from.short}),e.jsxs("span",{className:"cdk-msg-to",children:["to ",s.kind==="channel"?"the conversation":s.audience.map(i=>i.short).join(", ")]}),s.count>1?e.jsxs("span",{className:"cdk-msg-tag",children:["×",s.count]}):null,e.jsx("span",{className:"cdk-msg-at",children:M(s.at)})]}),e.jsx("p",{className:"cdk-msg-body",children:s.message.body})]},s.id))})}function _({card:n,passes:s,tasks:i,onClear:a,onStage:u,beside:d}){const m=l.useMemo(()=>b(s),[s]),k=l.useCallback(t=>m.get(t)??t,[m]),h=C(n,i,s,k),g=l.useMemo(()=>y(n,s,i),[n,s,i]),r=l.useMemo(()=>E(n,s,i),[n,s,i]),{sessions:p}=N(),j=t=>{const c=p.find(o=>f(o,t));return c?x(c):t};return l.useEffect(()=>{const t=c=>{if(c.key!=="Escape"||c.defaultPrevented)return;const o=c.target;o&&(o.tagName==="TEXTAREA"||o.tagName==="INPUT"||o.isContentEditable)||a()};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[a]),e.jsxs("aside",{className:"csl","aria-label":"Selection",children:[e.jsxs("header",{className:"cdk-head",children:[e.jsxs("span",{className:"cdk-ident",children:[e.jsxs("span",{className:"cdk-kicker",children:["Selected · ",w[n.kind]]}),e.jsx("span",{className:"cdk-title",title:h,children:h})]}),e.jsx("button",{type:"button",className:"cdk-btn",title:"Clear the selection (Esc)","aria-label":"Clear the selection",onClick:a,children:e.jsx(v,{size:13,strokeWidth:2,"aria-hidden":!0})})]}),r.length>0?e.jsxs("div",{className:"csl-in",children:[e.jsx("span",{className:"csl-in-label",children:r.length===1?"In":`In ${r.length} conversations`}),r.map(t=>{const c=d?.has(t)??!1;return e.jsxs("span",{className:"csl-conv",children:[e.jsx("button",{type:"button",className:"csl-conv-open",title:"Open this conversation on the stage",onClick:()=>u(t),children:j(t)}),d?e.jsx("button",{type:"button",className:`cdk-btn${c?" cdk-btn--on":""}`,title:c?"Close the column beside the stage":"Keep this conversation beside the stage","aria-label":c?"Close beside":"Keep beside","aria-pressed":c,onClick:()=>d.toggle(t),children:e.jsx(K,{size:12,strokeWidth:2,"aria-hidden":!0})}):null]},t)})]}):null,e.jsx(S,{passes:g})]})}export{_ as CommsSelection,S as DeckMessages};
|