@openscout/scout 0.2.108 → 0.2.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +206 -122
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/chat.mjs +211 -30
- package/dist/client/assets/conversation-motion-features-BeAplMGv.js +1 -0
- package/dist/client/assets/index-CMbTY75G.js +91 -0
- package/dist/client/assets/index-DYfh8pn_.css +1 -0
- package/dist/client/index.html +3 -3
- package/dist/main.mjs +7628 -3047
- package/dist/node/main.mjs +671 -115
- package/dist/openscout-terminal-relay.mjs +12 -3
- package/dist/pairing-runtime-controller.mjs +17539 -6059
- package/dist/runtime/base-daemon.mjs +410 -54
- package/dist/runtime/broker-daemon.mjs +67463 -52744
- package/dist/runtime/broker-process-manager.mjs +41 -14
- package/dist/runtime/mesh-discover.mjs +39 -13
- package/dist/scout-control-plane-web.mjs +80047 -58867
- package/dist/statusline.mjs +10 -3
- package/dist/update-helper.mjs +1105 -69
- package/package.json +2 -2
- package/server.json +2 -2
- package/dist/client/assets/ActivityScreen-C1H-vL0L.js +0 -1
- package/dist/client/assets/AddProjectForm-4sVXmjfN.js +0 -1
- package/dist/client/assets/AdventureEvidence-D5wq1vu8.js +0 -5
- package/dist/client/assets/AdventureReader-BICypcDY.js +0 -4
- package/dist/client/assets/AdventureScenery-CGEcG0zV.js +0 -1
- package/dist/client/assets/AgentAdventures-5yBt-Zl3.js +0 -1
- package/dist/client/assets/AgentAvatar-Dn8TUv5W.js +0 -1
- package/dist/client/assets/AgentConfigurationScreen-C0D9WNyL.js +0 -1
- package/dist/client/assets/AgentDefinitionsWorkspace-BzcBdC_s.js +0 -1
- package/dist/client/assets/AgentDetailCard-C4WVeJvJ.css +0 -1
- package/dist/client/assets/AgentDetailCard-CI-ufaEP.js +0 -1
- package/dist/client/assets/AgentFloorView-D8tlGlgy.js +0 -1
- package/dist/client/assets/AgentFloorWorld-DqmnQexg.js +0 -1
- package/dist/client/assets/AgentInfoScreen-BnRhfcFy.js +0 -1
- package/dist/client/assets/AgentLaneCard-pppHFROz.js +0 -1
- package/dist/client/assets/AgentLaneChrome-RptImDFc.js +0 -1
- package/dist/client/assets/AgentLaneDetailSheet-BqbwGskh.js +0 -4
- package/dist/client/assets/AgentLaneSummaryResize-DaIgwyVh.js +0 -1
- package/dist/client/assets/AgentLanesEmbedScreen-De6C4ZOw.js +0 -1
- package/dist/client/assets/AgentLanesPreflight-BQfj2twF.js +0 -1
- package/dist/client/assets/AgentLanesView-CiISx7pu.js +0 -2
- package/dist/client/assets/AgentLiveActions-CGS-Bxb7.css +0 -1
- package/dist/client/assets/AgentLiveActions-CkRGkv13.js +0 -1
- package/dist/client/assets/AgentMasterScreen-CijN_4tN.js +0 -1
- package/dist/client/assets/AgentSessions-ghjQcSrh.js +0 -6
- package/dist/client/assets/AgentsConsole-BjSTs-TV.css +0 -1
- package/dist/client/assets/AgentsConsole-D8upjDpn.js +0 -1
- package/dist/client/assets/AgentsScreen-C17BFqjf.js +0 -1
- package/dist/client/assets/AgentsSubnav-_1GVC4hj.js +0 -1
- package/dist/client/assets/AstronautSuit-Dzu4GOMR.js +0 -1
- package/dist/client/assets/AtopView-DJK5b3lZ.js +0 -1
- package/dist/client/assets/BackToPicker-BPU7kbXq.js +0 -1
- package/dist/client/assets/BackToPicker-CdgVu-to.css +0 -1
- package/dist/client/assets/BriefingDetailScreen-CTvFw523.js +0 -1
- package/dist/client/assets/BriefingsScreen-DpVC3OUk.js +0 -1
- package/dist/client/assets/BrokerMetadataPanel-glRVdwkU.js +0 -1
- package/dist/client/assets/BrokerScreen-CqKsBwEx.js +0 -8
- package/dist/client/assets/CastPicker-Y29K5kKk.js +0 -1
- package/dist/client/assets/CastPicker-zXsnkTIy.css +0 -1
- package/dist/client/assets/ChannelComposer-D4EY9jVW.js +0 -1
- package/dist/client/assets/ChannelSidebar-CVmykV4d.js +0 -1
- package/dist/client/assets/CharacterFamilyPreview-Bj8oMD-5.js +0 -1
- package/dist/client/assets/CharacterFamilyPreview-BniL8sEL.css +0 -1
- package/dist/client/assets/ChatAvatar-BsAOShUr.js +0 -1
- package/dist/client/assets/ChatBits-Cq54CmyB.js +0 -1
- package/dist/client/assets/ChatCollapsedStrip-B0DdrOo2.js +0 -1
- package/dist/client/assets/ChatRichInput-DYJRhGTP.js +0 -31
- package/dist/client/assets/ChatRightPanel-D94Lw7ud.js +0 -1
- package/dist/client/assets/ChatSpaceSurface-Cp532VmZ.js +0 -1
- package/dist/client/assets/ChatSpaceTheme-3wLZGsvT.css +0 -1
- package/dist/client/assets/ChatSpaceTheme-DPzYpw-v.js +0 -1
- package/dist/client/assets/CodeDiffPane-DCgMUi39.js +0 -1
- package/dist/client/assets/CodeProjectPicker-Dq787L77.js +0 -2
- package/dist/client/assets/CodeScreen-BN4TkiR0.js +0 -1
- package/dist/client/assets/CommsCanvas-BR2YS76H.css +0 -1
- package/dist/client/assets/CommsCanvas-Dh056d91.js +0 -1
- package/dist/client/assets/CommsDeck-CRXKIerH.js +0 -1
- package/dist/client/assets/CommsFlowGraph-Cc48o9u_.js +0 -1
- package/dist/client/assets/CommsFlowGraph-vQucylxF.css +0 -1
- package/dist/client/assets/CommsFlowMap-Ckasql5e.js +0 -1
- package/dist/client/assets/CommsSelection-CuphnUny.js +0 -1
- package/dist/client/assets/ComposerAttachments-9uYp_Lh5.js +0 -1
- package/dist/client/assets/ConversationComposer-hYtLurqy.js +0 -1
- package/dist/client/assets/ConversationFeedRows-Bu0ZJcy8.js +0 -1
- package/dist/client/assets/ConversationHeader-L9738YVP.js +0 -1
- package/dist/client/assets/ConversationPanels-D6KuqvGu.js +0 -6
- package/dist/client/assets/ConversationScreen-9MlMnEo4.css +0 -1
- package/dist/client/assets/ConversationScreen-Pzxy9x4m.js +0 -2
- package/dist/client/assets/ConversationStatus-BEefIbXq.js +0 -1
- package/dist/client/assets/CrewAvatar-BnIPIn_Z.css +0 -1
- package/dist/client/assets/CrewAvatar-a_C_F9r_.js +0 -1
- package/dist/client/assets/CrewSprite-CguHb2Ny.js +0 -1
- package/dist/client/assets/CrewSprite-DsQJdu3Z.css +0 -1
- package/dist/client/assets/CrewStage-IPpS3Oja.js +0 -1
- package/dist/client/assets/CrewWorkspaces-BTPtcEcx.js +0 -1
- package/dist/client/assets/CrewWorkspaces-DDuYMByu.css +0 -1
- package/dist/client/assets/DataTable-DnL_8SAu.js +0 -1
- package/dist/client/assets/DispatchAftermath-CoAYaL3B.js +0 -1
- package/dist/client/assets/DocumentFocusViewer-BSC_JwVE.css +0 -1
- package/dist/client/assets/DocumentFocusViewer-mxzPxQQW.js +0 -1
- package/dist/client/assets/EmbeddableSurfacesLab-BAZ_eRMc.js +0 -1
- package/dist/client/assets/EmptyState-DLiLgtPK.js +0 -1
- package/dist/client/assets/FileViewerPane-Dc7AoVod.js +0 -3
- package/dist/client/assets/FleetRollCallHud-VhpxVcGO.js +0 -1
- package/dist/client/assets/FlightObserveScreen-C1kASP3J.js +0 -1
- package/dist/client/assets/FloorContextSheet-BfrXNoBn.js +0 -1
- package/dist/client/assets/FloorExchangePanel-B3TFhjLk.css +0 -1
- package/dist/client/assets/FloorExchangePanel-DsG1cRzu.js +0 -1
- package/dist/client/assets/FloorMessagePasses-Cm3LbkHd.js +0 -1
- package/dist/client/assets/FloorMessagePasses-nxwwiUom.css +0 -1
- package/dist/client/assets/FloorReplay-Bg7kA-tR.js +0 -1
- package/dist/client/assets/FloorResourcesSheet-Ba9HubO2.js +0 -1
- package/dist/client/assets/FloorSavedWork-BDOvV3mA.js +0 -1
- package/dist/client/assets/FloorTacticalHUD-4d-Hr-YL.js +0 -1
- package/dist/client/assets/FollowScreen-DFVSlsQV.js +0 -1
- package/dist/client/assets/HarnessMark-CP-PWk2W.js +0 -1
- package/dist/client/assets/HarnessesScreen-j-91IoOo.js +0 -1
- package/dist/client/assets/HerdrSession-H2mmxeTK.js +0 -4
- package/dist/client/assets/HomeHero-7JwycwFY.css +0 -1
- package/dist/client/assets/HomeHero-g4H3Ctxg.js +0 -1
- package/dist/client/assets/HostAdvisorView-Cyt3b5Fq.js +0 -1
- package/dist/client/assets/InviteLandingScreen-C3DtAGD4.js +0 -1
- package/dist/client/assets/InviteSheet-BiGMNpsE.js +0 -1
- package/dist/client/assets/JumpPalette-goXAVByA.js +0 -1
- package/dist/client/assets/KnowledgeSearchInspector-BbOQIqdF.js +0 -1
- package/dist/client/assets/KnowledgeSearchScreen-DC8yX-kA.js +0 -1
- package/dist/client/assets/LaneToolHoverCard-B8Am_1DC.js +0 -1
- package/dist/client/assets/LaneTraceDetailSheet-CngYIxdI.js +0 -1
- package/dist/client/assets/LaneTraceEventFocus-BRR_jcl9.js +0 -1
- package/dist/client/assets/MeshCanvas-DzkuY_XI.js +0 -3
- package/dist/client/assets/MeshCanvasMinimap-BrscEPAH.js +0 -1
- package/dist/client/assets/MeshCanvasMinimap-Dv7nMbl5.css +0 -1
- package/dist/client/assets/MeshScreen-CAtRB8K6.js +0 -1
- package/dist/client/assets/MeshTopologyView-B1I2dAhu.js +0 -2
- package/dist/client/assets/MessageEmbeds-B-FbWI7a.js +0 -1
- package/dist/client/assets/MessagesScreen-hq7D3Lfi.js +0 -1
- package/dist/client/assets/MissionContextRail-ClR8amG1.js +0 -1
- package/dist/client/assets/MissionControlView-D6gbMrgx.js +0 -1
- package/dist/client/assets/MissionFocusOverlay-CzeNgI9Q.js +0 -1
- package/dist/client/assets/MissionLeftAgentRow-CB3cgeYr.js +0 -1
- package/dist/client/assets/MissionLogPane-2PMEoG44.js +0 -1
- package/dist/client/assets/NativeAreaScreen-BnlrAWT8.js +0 -1
- package/dist/client/assets/NativeAreaScreen-DSR5Tf6F.js +0 -1
- package/dist/client/assets/NativeAreaScreen-fGsxyeC3.js +0 -1
- package/dist/client/assets/NewAgentModal-4b_3aoZE.js +0 -1
- package/dist/client/assets/NewAgentModal-ru8u5YdJ.css +0 -1
- package/dist/client/assets/NewChatComposer-C5LT7MF7.css +0 -1
- package/dist/client/assets/NewChatComposer-D-VB5vdt.js +0 -19
- package/dist/client/assets/NewChatOrigin-BYsEu9dZ.js +0 -1
- package/dist/client/assets/NodeDetailPanel-9NaEnZAQ.js +0 -1
- package/dist/client/assets/NodeMenu-BgJMmffZ.js +0 -1
- package/dist/client/assets/ObserveEmbedScreen-W7Q5HbXP.js +0 -2
- package/dist/client/assets/ObserveTextFlow-C0oQEerY.js +0 -2
- package/dist/client/assets/ObservedTopologyPanel-BsBsvVPL.css +0 -1
- package/dist/client/assets/ObservedTopologyPanel-Ci7emnnj.js +0 -2
- package/dist/client/assets/OpenScoutAppShell-Bh6FnEJO.css +0 -1
- package/dist/client/assets/OpenScoutAppShell-Di9qdmI0.js +0 -22
- package/dist/client/assets/OpsAgentsView-DVotOMg2.js +0 -1
- package/dist/client/assets/OpsScreen-C955zgr3.js +0 -1
- package/dist/client/assets/OpsSubnav-CjMVj7Sk.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-B1VqGSmu.js +0 -1
- package/dist/client/assets/ProjectAgentProfileBar-DhVU7zew.js +0 -1
- package/dist/client/assets/ProjectAgentProfileHero-CJk-Dx4t.js +0 -1
- package/dist/client/assets/ProjectsInbox-B7kap8nR.js +0 -2
- package/dist/client/assets/ProjectsInbox-B8zYE4vP.css +0 -1
- package/dist/client/assets/ProjectsRail-BhSaqbv0.js +0 -1
- package/dist/client/assets/ProjectsScreen-CSb7nwjb.js +0 -1
- package/dist/client/assets/ProjectsThreadAside-pEJutIO8.js +0 -1
- package/dist/client/assets/Provider-BEXAZWd9.js +0 -5
- package/dist/client/assets/Provider-CCzjtkda.css +0 -1
- package/dist/client/assets/RailRow-B25zKEub.css +0 -1
- package/dist/client/assets/RailRow-Ddz90weI.js +0 -1
- package/dist/client/assets/RawSessionsTable-TdKlJIPl.js +0 -1
- package/dist/client/assets/RealtimeVoiceScreen-BU5KmlNo.js +0 -8
- package/dist/client/assets/RenderedWorkerSprite-BNhFXMIo.js +0 -1
- package/dist/client/assets/RenderedWorkerSprite-qnTfkd_4.css +0 -1
- package/dist/client/assets/ReplayClock-wLpb4VqN.js +0 -1
- package/dist/client/assets/ReplayLog-IUyQdklN.js +0 -1
- package/dist/client/assets/ReplayOutpost-C4djhjZJ.js +0 -1
- package/dist/client/assets/ReplayOutpost-Y1DvZgeu.css +0 -1
- package/dist/client/assets/RepoDiffEmbedScreen-BmQX_8E-.js +0 -1
- package/dist/client/assets/RepoDiffPageScreen-B9oAjrC6.js +0 -1
- package/dist/client/assets/RepoDiffViewer-Ch_lIMt-.js +0 -7
- package/dist/client/assets/RepoDiffViewerLazy-DL6A2o_z.js +0 -2
- package/dist/client/assets/ReposScreen-D-E7fSAB.js +0 -6
- package/dist/client/assets/RiggedWorkerCharacter-BpYECnyK.css +0 -1
- package/dist/client/assets/RiggedWorkerCharacter-CF6fhzGd.js +0 -1
- package/dist/client/assets/SageModelStudio-768dRQr4.css +0 -1
- package/dist/client/assets/SageModelStudio-CSet_ITs.js +0 -4108
- package/dist/client/assets/ScoutDeckSurface-BJ-fl8AX.js +0 -1
- package/dist/client/assets/ScoutDeckSurface-uhmuZRzC.css +0 -1
- package/dist/client/assets/ScoutSurface-BvFRdce6.js +0 -1
- package/dist/client/assets/ScoutbotFxLab-CfPzycZ7.js +0 -4
- package/dist/client/assets/SecondaryNav-1FjBDWuY.js +0 -1
- package/dist/client/assets/SessionContextStrip-BoiIxXvS.js +0 -1
- package/dist/client/assets/SessionContextStrip-DAIXwtHd.css +0 -1
- package/dist/client/assets/SessionEmbedScreen-BizGNGOz.js +0 -1
- package/dist/client/assets/SessionHopMenu-DX6PJPNk.js +0 -1
- package/dist/client/assets/SessionObserve-CDdJ7fAE.css +0 -1
- package/dist/client/assets/SessionObserve-Dw3bVQYF.js +0 -12
- package/dist/client/assets/SessionObserveEvidence-uD1OX-R5.js +0 -1
- package/dist/client/assets/SessionRefScreen-Ch9H-qVk.js +0 -1
- package/dist/client/assets/SessionsScreen-DUeP23Xy.js +0 -1
- package/dist/client/assets/SettingsDrawer-BVrP6J52.js +0 -3
- package/dist/client/assets/SettingsDrawer-R8a0TlJD.css +0 -1
- package/dist/client/assets/SettingsScreen-BcJ05LE5.js +0 -1
- package/dist/client/assets/SharedFloorCharacter-Bi5_md4R.css +0 -1
- package/dist/client/assets/SharedFloorCharacter-dnamlt1p.js +0 -1
- package/dist/client/assets/SharedWorkFloor-0rqtdF-n.css +0 -1
- package/dist/client/assets/SharedWorkFloor-H-e2TVj9.js +0 -2
- package/dist/client/assets/ShikiPane-CDiIT_qn.js +0 -15
- package/dist/client/assets/SlidePanel-Bg5dVaIa.css +0 -1
- package/dist/client/assets/SlidePanel-D5oPQocF.js +0 -1
- package/dist/client/assets/SpaceSwitcher-WccPJ0fS.js +0 -1
- package/dist/client/assets/SpriteAvatar-D53GaaK3.js +0 -1
- package/dist/client/assets/SproutActionSprite-BrFCmgWS.js +0 -1
- package/dist/client/assets/StatusPill-jT--OXbn.js +0 -1
- package/dist/client/assets/TailView-B44cSuyl.js +0 -2
- package/dist/client/assets/TailView-Mj3AU2u0.css +0 -1
- package/dist/client/assets/Terminal-D0PanmIk.js +0 -4
- package/dist/client/assets/TerminalEmbedScreen-Eddi4sts.js +0 -1
- package/dist/client/assets/TerminalHeaderMount-CYYcKxQ-.js +0 -1
- package/dist/client/assets/TextDocumentSurface-DBslUq9k.js +0 -4
- package/dist/client/assets/TmuxPeek-Ctw5yYO5.js +0 -1
- package/dist/client/assets/VoiceControlWell-BkjuWjYu.js +0 -1
- package/dist/client/assets/VoicePathDiagram-u0i6ntbx.js +0 -1
- package/dist/client/assets/VoicePermissionsPanel-9Nuw-xCr.js +0 -1
- package/dist/client/assets/VoicePermissionsPanel-RijAZ1gP.css +0 -1
- package/dist/client/assets/VoiceTurnDetails-kS7lfbmt.js +0 -8
- package/dist/client/assets/VoiceTurnStage-DLY6aYDg.js +0 -1
- package/dist/client/assets/VoiceTurnView-CF4tIldB.js +0 -1
- package/dist/client/assets/WorkDetailScreen-BrrkENYq.js +0 -5
- package/dist/client/assets/WorkFilesViewer-B63sKRYZ.js +0 -1
- package/dist/client/assets/WorkRunView-CxwAZ2QQ.css +0 -1
- package/dist/client/assets/WorkRunView-DLIzAsc3.js +0 -1
- package/dist/client/assets/WorldActorTalk-CHhFTiQV.js +0 -1
- package/dist/client/assets/WorldCharacter-CJGx2DVy.js +0 -1
- package/dist/client/assets/WorldMinimap-DL12pBw3.js +0 -1
- package/dist/client/assets/WorldSky-BlPNvGLo.js +0 -1
- package/dist/client/assets/activity-CXkZ620t.js +0 -1
- package/dist/client/assets/addon-fit-G3qi01sy.js +0 -1
- package/dist/client/assets/addon-webgl-Bo7kSgOB.js +0 -82
- package/dist/client/assets/adventure-evidence-DgQbBmfa.css +0 -1
- package/dist/client/assets/adventure-habitats-v1-CVMbdB_Z.png +0 -0
- package/dist/client/assets/adventure-habitats-v1-M1lcpTJh.js +0 -1
- package/dist/client/assets/adventure-playback-DTfkhIc0.js +0 -3
- package/dist/client/assets/adventure-reader-DM5UDDm9.css +0 -1
- package/dist/client/assets/agent-adventures-DZtWpj6k.css +0 -1
- package/dist/client/assets/agent-definitions-CymTYqvo.css +0 -1
- package/dist/client/assets/agent-directory-studio-injection-Bc8590z5.css +0 -1
- package/dist/client/assets/agent-essentials-DnfdGmIX.js +0 -1
- package/dist/client/assets/agent-floor-Dmr9hZHL.css +0 -1
- package/dist/client/assets/agent-floor-actor-DW8zLht0.js +0 -1
- package/dist/client/assets/agent-floor-world-Bnd1AtwK.css +0 -1
- package/dist/client/assets/agent-floor-world-layout-hfMjuoui.js +0 -1
- package/dist/client/assets/agent-lane-card-BkWVDYM8.css +0 -1
- package/dist/client/assets/agent-lane-card-model-CeqQGp-8.js +0 -1
- package/dist/client/assets/agent-lane-detail-Ti3trpfH.js +0 -2
- package/dist/client/assets/agent-lane-preview-Dpa3DuOn.js +0 -4
- package/dist/client/assets/agent-lanes-DmgipV9D.css +0 -1
- package/dist/client/assets/agent-lanes-model-DMAdqCmK.js +0 -4
- package/dist/client/assets/agent-master-THmq-1k8.css +0 -1
- package/dist/client/assets/agent-master-model-Bk_yuUXJ.js +0 -1
- package/dist/client/assets/agent-specialization-DYX_DSlY.js +0 -1
- package/dist/client/assets/agent-state-DDhnFEEP.js +0 -1
- package/dist/client/assets/agents-detail-redesign-h34ROjOW.css +0 -1
- package/dist/client/assets/agents-project-DgbqDc65.css +0 -1
- package/dist/client/assets/agents-screen-BYakbO50.css +0 -1
- package/dist/client/assets/api-BQYTwoz6.js +0 -1
- package/dist/client/assets/api-DSqpVKC7.js +0 -1
- package/dist/client/assets/arc.es-CLA3XI14.js +0 -188
- package/dist/client/assets/arrow-down--OUDFWIq.js +0 -1
- package/dist/client/assets/arrow-left-DNjQHf4C.js +0 -1
- package/dist/client/assets/arrow-right-A_yyXwoH.js +0 -1
- package/dist/client/assets/arrow-up-DFy-9ghF.js +0 -1
- package/dist/client/assets/arrow-up-right-DUW1A1Hb.js +0 -1
- package/dist/client/assets/bash-format-BRV5C6Gv.js +0 -1
- package/dist/client/assets/book-open-B_idZgTF.js +0 -1
- package/dist/client/assets/bot-BNv_ZJzi.js +0 -1
- package/dist/client/assets/briefings-BwuAFQK6.css +0 -1
- package/dist/client/assets/broker-display-BkBzyvbR.js +0 -2
- package/dist/client/assets/cache-DGBo3vIf.js +0 -2
- package/dist/client/assets/chat-api-BHGHALv2.js +0 -2
- package/dist/client/assets/chat-message-markup-esR-YLtN.js +0 -1
- package/dist/client/assets/chat-space-model-aW3Fd8_U.js +0 -4
- package/dist/client/assets/chat-transport-CtxnPLMU.js +0 -1
- package/dist/client/assets/check-BM6QtbB7.js +0 -1
- package/dist/client/assets/chevron-down-DEDSNJNY.js +0 -1
- package/dist/client/assets/chevron-right-B02kAw12.js +0 -1
- package/dist/client/assets/chevron-up-CzveykKG.js +0 -1
- package/dist/client/assets/chunk-HRAB3GC3-DVhUsgOw.js +0 -1
- package/dist/client/assets/chunk-JTPDIGGW-hdpdYwXb.js +0 -46
- package/dist/client/assets/chunk-T65CQEWV-G_Z0lqtn.js +0 -1
- package/dist/client/assets/chunk-YOZR3KYS-apgUnfXh.js +0 -2
- package/dist/client/assets/clipboard-e3fSpeo7.js +0 -1
- package/dist/client/assets/clock-8tb9t2t9.js +0 -1
- package/dist/client/assets/code-screen-DrKinCyh.css +0 -1
- package/dist/client/assets/code-xml-E9gBuiVs.js +0 -1
- package/dist/client/assets/coffee-D0YEK6-l.js +0 -1
- package/dist/client/assets/collapsed-strip-raJWthAH.css +0 -1
- package/dist/client/assets/colors-CFlbwC25.js +0 -1
- package/dist/client/assets/comms-deck-C8nVeMBh.css +0 -1
- package/dist/client/assets/comms-deck-CBhsXnY-.js +0 -2
- package/dist/client/assets/comms-gesture-_aGFo6g3.js +0 -2
- package/dist/client/assets/compass-EmGkpxIe.js +0 -1
- package/dist/client/assets/console-B1IBqLI_.css +0 -1
- package/dist/client/assets/content-B-rn1rka.js +0 -1
- package/dist/client/assets/content-BHV-ZU8_.js +0 -1
- package/dist/client/assets/content-BI9yWpWC.js +0 -1
- package/dist/client/assets/content-BLVuukzF.js +0 -1
- package/dist/client/assets/content-BP3cQkAj.js +0 -1
- package/dist/client/assets/content-BRY-UTkP.js +0 -1
- package/dist/client/assets/content-BXTmYOPB.js +0 -1
- package/dist/client/assets/content-C3DZ77HZ.js +0 -1
- package/dist/client/assets/content-CINHz-rZ.css +0 -1
- package/dist/client/assets/content-CPchclaV.js +0 -1
- package/dist/client/assets/content-CVqPTQnr.js +0 -1
- package/dist/client/assets/content-CjAERU44.js +0 -1
- package/dist/client/assets/content-CoYG0nWL.js +0 -1
- package/dist/client/assets/content-DK1KeRPw.js +0 -1
- package/dist/client/assets/content-iWBSSXa6.js +0 -1
- package/dist/client/assets/content-ryJeaQk8.js +0 -1
- package/dist/client/assets/content-srNyLgDt.js +0 -1
- package/dist/client/assets/context-budget-8qFKqM-j.js +0 -1
- package/dist/client/assets/conversation-icons-Dxn9N1Kx.js +0 -1
- package/dist/client/assets/conversation-model-FxDeWlle.js +0 -1
- package/dist/client/assets/conversation-motion-features-BfmPlONx.js +0 -1
- package/dist/client/assets/conversation-prefs-DNre-Lcx.js +0 -1
- package/dist/client/assets/conversations-DoAAO6kA.js +0 -1
- package/dist/client/assets/copy-C1XrY27_.js +0 -1
- package/dist/client/assets/cpu-DVZ_LhPn.js +0 -1
- package/dist/client/assets/createLucideIcon-CKbjXlwv.js +0 -1
- package/dist/client/assets/credentials-OeoF-VKJ.js +0 -1
- package/dist/client/assets/ctx-panel-BC8fpcWJ.css +0 -1
- package/dist/client/assets/direct-voice-DAOUU-kc.js +0 -10
- package/dist/client/assets/direct-voice-DbO7CSv_.css +0 -1
- package/dist/client/assets/discover-BNa3BPr_.js +0 -2
- package/dist/client/assets/embed-entry-gK3z8Yxi.js +0 -2
- package/dist/client/assets/embed-navigation-DayfkQau.js +0 -1
- package/dist/client/assets/external-link-Df1R34rX.js +0 -1
- package/dist/client/assets/eye-CD-_aphP.js +0 -1
- package/dist/client/assets/file-code-corner-DtMWHBN3.js +0 -1
- package/dist/client/assets/file-text-BOJQiS8p.js +0 -1
- package/dist/client/assets/flag-CeKO8NoD.js +0 -1
- package/dist/client/assets/fleet-roll-call-BUgf7w-V.css +0 -1
- package/dist/client/assets/flight-observe-GFg9L8ft.css +0 -1
- package/dist/client/assets/floor-character-name-CqJPOlXb.js +0 -1
- package/dist/client/assets/floor-context-model-rWKqaKmV.js +0 -1
- package/dist/client/assets/floor-context-sheet-BFnkFiY3.css +0 -1
- package/dist/client/assets/floor-memory-YMM8AlLY.js +0 -1
- package/dist/client/assets/floor-message-passes-CO3Ix_wR.js +0 -1
- package/dist/client/assets/floor-preview-text-HrORUJ7D.js +0 -1
- package/dist/client/assets/floor-replay-CccYqE-f.css +0 -1
- package/dist/client/assets/floor-tactical-hud-HL5Vja5Y.css +0 -1
- package/dist/client/assets/folder-C2emmTHq.js +0 -1
- package/dist/client/assets/follow-route-BvcGtBIL.js +0 -1
- package/dist/client/assets/fx-z37u1o2z.js +0 -1
- package/dist/client/assets/gauge-BR5CrhRM.js +0 -1
- package/dist/client/assets/gestures-Dh8szhcU.js +0 -1
- package/dist/client/assets/git-branch-C45vy8qT.js +0 -1
- package/dist/client/assets/go-shortcuts--25Qg0lD.js +0 -1
- package/dist/client/assets/harnesses-screen-2z36fJKE.css +0 -1
- package/dist/client/assets/home-live-action-BkqGLVRY.js +0 -1
- package/dist/client/assets/home-moving-signal-BiiyEKEb.js +0 -1
- package/dist/client/assets/home-moving-signal-DMguaRWR.css +0 -1
- package/dist/client/assets/home-now-card-DaCpqUZe.js +0 -1
- package/dist/client/assets/home-now-card-nano-wbxgyY4q.js +0 -1
- package/dist/client/assets/hooks-D787lBmm.css +0 -1
- package/dist/client/assets/hooks-JNwYSH18.js +0 -2
- package/dist/client/assets/host-advisor-B2Fqs5Dd.css +0 -1
- package/dist/client/assets/inbox-thread-redesign-B_1ocqaX.css +0 -1
- package/dist/client/assets/index-BFbLvCJn.js +0 -10
- package/dist/client/assets/index-BRNHY2fp.css +0 -1
- package/dist/client/assets/index-BWHgHrtv.js +0 -1
- package/dist/client/assets/index-BrXaMEdK.js +0 -1
- package/dist/client/assets/index-CXzJ_hGx.js +0 -1
- package/dist/client/assets/index-V8FYEUpD.js +0 -1
- package/dist/client/assets/index-mYtyYeAe.js +0 -1
- package/dist/client/assets/index-wLwc74Pu.css +0 -1
- package/dist/client/assets/inspector-panel-BgU5xUln.js +0 -2
- package/dist/client/assets/keyboard-nav-CEe-ApvZ.js +0 -1
- package/dist/client/assets/knowledge-search-BNdQweGz.css +0 -1
- package/dist/client/assets/lane-ask-display-BTVSakyo.js +0 -18
- package/dist/client/assets/lane-edit-display-BjdT9oZl.js +0 -9
- package/dist/client/assets/lane-observe-CteDwdD-.js +0 -7
- package/dist/client/assets/lane-roster-store-MraynTHP.js +0 -1
- package/dist/client/assets/lane-tool-detail-Czggx8oM.js +0 -9
- package/dist/client/assets/layers-ClmyjwpB.js +0 -1
- package/dist/client/assets/layout-grid-DG2-JaPn.js +0 -1
- package/dist/client/assets/left-B66YR0c5.js +0 -1
- package/dist/client/assets/left-BP5P8lzw.js +0 -2
- package/dist/client/assets/left-BV9yMiTL.css +0 -1
- package/dist/client/assets/left-BbCKRDbW.js +0 -1
- package/dist/client/assets/left-CAaRBK9S.css +0 -1
- package/dist/client/assets/left-CaY5FK2k.js +0 -1
- package/dist/client/assets/left-CemrfeSs.js +0 -1
- package/dist/client/assets/left-DcYA26sH.js +0 -1
- package/dist/client/assets/left-DdMMaqFT.js +0 -2
- package/dist/client/assets/left-R2OOE7VG.css +0 -1
- package/dist/client/assets/left-advisor-DBml48M5.js +0 -1
- package/dist/client/assets/left-agents-DowYF2ag.js +0 -1
- package/dist/client/assets/left-default-Bifaeg_V.js +0 -1
- package/dist/client/assets/left-lanes-BGhjdqpD.js +0 -1
- package/dist/client/assets/left-mission-CvXPUovR.js +0 -1
- package/dist/client/assets/left-mission-DENnfshd.css +0 -1
- package/dist/client/assets/library-CnC8uzJt.js +0 -1
- package/dist/client/assets/loader-circle-CCG7hG7z.js +0 -1
- package/dist/client/assets/local-agents-BMcFlY_x.js +0 -1
- package/dist/client/assets/log-in-VL9mdgeE.js +0 -1
- package/dist/client/assets/machine-children-DvCiQxwA.js +0 -1
- package/dist/client/assets/machine-scope-DJt9RZ2w.js +0 -1
- package/dist/client/assets/media-blobs-Bi8pxr1u.js +0 -1
- package/dist/client/assets/mentions-s5oW4aQU.js +0 -1
- package/dist/client/assets/mesh-ops-9SzD3sPw.js +0 -1
- package/dist/client/assets/mesh-ops-B1kDjizF.css +0 -1
- package/dist/client/assets/mesh-screen-DjA4mOaN.css +0 -1
- package/dist/client/assets/mesh-view-store-CVqzYz4K.js +0 -1
- package/dist/client/assets/message-circle-BB3rFCVD.js +0 -1
- package/dist/client/assets/message-markup-BQW5jdJw.js +0 -15
- package/dist/client/assets/message-markup-D1C7GzHo.js +0 -1
- package/dist/client/assets/message-square-BwqBIfv5.js +0 -1
- package/dist/client/assets/message-visibility-DwxgcgYK.js +0 -1
- package/dist/client/assets/mission-control-CsX3Yc58.css +0 -1
- package/dist/client/assets/mission-control-model-BpJHDV5D.js +0 -1
- package/dist/client/assets/mission-control-store-e8F85JhP.js +0 -1
- package/dist/client/assets/mission-wall-CAo4BKfa.js +0 -1
- package/dist/client/assets/model-CBkMvT1w.js +0 -1
- package/dist/client/assets/monitor-M0VSmHQ-.js +0 -1
- package/dist/client/assets/nav-destinations-B3R5zxFX.js +0 -1
- package/dist/client/assets/observe-M3rLosT5.js +0 -1
- package/dist/client/assets/openAgent-Dbv5wfuL.js +0 -1
- package/dist/client/assets/openContent-C6XO6kr5.js +0 -1
- package/dist/client/assets/operator-attention-DBaRg5ep.js +0 -1
- package/dist/client/assets/ops-agents-BOYxzPTm.css +0 -1
- package/dist/client/assets/ops-atop-BB4B4JdE.css +0 -1
- package/dist/client/assets/ops-screen-CxYM0VOW.css +0 -1
- package/dist/client/assets/page-status-BIuh3C5p.js +0 -1
- package/dist/client/assets/page-status-bar-ByUD7VPM.css +0 -1
- package/dist/client/assets/panel-right-WKLdPm0F.js +0 -1
- package/dist/client/assets/paperclip-DLf_ABSv.js +0 -1
- package/dist/client/assets/pause-7mmEEvVx.js +0 -1
- package/dist/client/assets/persistent-state-3mbBFRDO.js +0 -1
- package/dist/client/assets/pin-q_0gAA6i.js +0 -1
- 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-N5-hnPCV.js +0 -1
- package/dist/client/assets/plus-B0hdY0fF.js +0 -1
- package/dist/client/assets/profile-B7ZGToTo.js +0 -1
- package/dist/client/assets/project-overview-helpers-BQTc_Ous.js +0 -1
- package/dist/client/assets/projects-inbox-CMFBjQt0.js +0 -1
- package/dist/client/assets/projects-inbox-ColX6lpx.css +0 -1
- package/dist/client/assets/proxy-k0ILOVkK.js +0 -1
- package/dist/client/assets/radio-Bjqmv997.js +0 -1
- package/dist/client/assets/refresh-cw-BcqctLqo.js +0 -1
- package/dist/client/assets/repo-diff-DyYmQMSA.css +0 -1
- package/dist/client/assets/resizable-columns-C7ygvLt8.css +0 -1
- package/dist/client/assets/resolve-panes-wzGu9d8o.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-C8SOo5oZ.js +0 -1
- package/dist/client/assets/right-9rMRZN_r.js +0 -1
- package/dist/client/assets/right-BHZq648O.js +0 -1
- package/dist/client/assets/right-BNJzCaH9.js +0 -2
- package/dist/client/assets/right-CAd7lTvY.js +0 -1
- package/dist/client/assets/right-Cc57bCTW.js +0 -1
- package/dist/client/assets/right-DY49Prjj.js +0 -1
- package/dist/client/assets/right-DfU47xKY.js +0 -1
- package/dist/client/assets/right-Dr7vxdZl.js +0 -1
- package/dist/client/assets/right-DsE4aR3A.js +0 -1
- package/dist/client/assets/right-zlkRjnkv.js +0 -1
- package/dist/client/assets/rocket-BahsdUe6.js +0 -1
- package/dist/client/assets/router-CJIx83Ia.js +0 -1
- package/dist/client/assets/runtime-picker-C3JwrDKP.css +0 -1
- package/dist/client/assets/runtime-picker-IRcTkMZ5.js +0 -1
- package/dist/client/assets/scope-views-4khCg2_z.css +0 -1
- package/dist/client/assets/scope-views-KDtZoLUC.js +0 -1
- package/dist/client/assets/scout-voice-Cdh6pCsb.js +0 -1
- package/dist/client/assets/scoutbot-Bk3nyrkj.js +0 -3
- package/dist/client/assets/scoutbot-markdown-7PRQHaAc.js +0 -6
- package/dist/client/assets/scroll-text-CA0QxBHu.js +0 -1
- package/dist/client/assets/search-Bv2IONmc.js +0 -1
- package/dist/client/assets/secondaryNavConfig-Bmb-oRvD.js +0 -1
- package/dist/client/assets/secondaryNavConfig-D15P1Y9k.css +0 -1
- package/dist/client/assets/selection-bridge-CthAuPRw.js +0 -1
- package/dist/client/assets/send-horizontal-_Tf_It04.js +0 -1
- package/dist/client/assets/send-to-agent-session-CWDHHgFB.js +0 -1
- package/dist/client/assets/server-U_l8A83n.js +0 -1
- package/dist/client/assets/session-catalog-Dx4tl3sx.js +0 -1
- package/dist/client/assets/session-recap-lanes-D-eVJnpY.js +0 -1
- package/dist/client/assets/session-recap-queue-GeicPLsQ.js +0 -1
- package/dist/client/assets/session-ref-lookup-state-SATH_jAP.js +0 -1
- package/dist/client/assets/session-table-BI62J4NP.js +0 -1
- package/dist/client/assets/sessionRead-CvFz2RHv.js +0 -1
- package/dist/client/assets/sessions-view-lGMwwZY7.js +0 -1
- package/dist/client/assets/settings-bo9X410k.js +0 -1
- package/dist/client/assets/shared-work-artifacts-DfNl9KTo.js +0 -1
- package/dist/client/assets/sliders-horizontal-CPSx6wd2.js +0 -1
- package/dist/client/assets/solar-system-scope-2k-stars-points-1FwHnkj0.png +0 -0
- package/dist/client/assets/sparkles-Br-bA2aZ.js +0 -1
- package/dist/client/assets/sprout-action-sprite-DZ8C0fTl.css +0 -1
- package/dist/client/assets/sprout-actions-proof-v1-BzUdc812.png +0 -0
- package/dist/client/assets/sse-BVxO0zNp.js +0 -1
- package/dist/client/assets/status-tone-BM_zuRy1.js +0 -1
- package/dist/client/assets/surface-activity-B1rgWB1i.js +0 -1
- package/dist/client/assets/synthetic-agent-routing-aduMYO7P.js +0 -1
- package/dist/client/assets/system-surfaces-redesign-q2BmCB7e.css +0 -1
- package/dist/client/assets/tail-display-DHSNmvor.js +0 -2
- package/dist/client/assets/tail-events-C6NWFB1N.js +0 -1
- package/dist/client/assets/terminal-DMBAZjPP.js +0 -1
- package/dist/client/assets/terminal-relay-CpGHpDa8.js +0 -1
- package/dist/client/assets/terminal-screen-Bpb2SZrn.css +0 -1
- package/dist/client/assets/terminal-sessions-3RfJpen8.js +0 -1
- package/dist/client/assets/terminal-takeover-CXwdoZ5j.js +0 -1
- package/dist/client/assets/theme-vars-DNK0nn3k.js +0 -1
- package/dist/client/assets/time-Dhsh_2EG.js +0 -1
- package/dist/client/assets/triangle-alert-BZikHKuT.js +0 -1
- package/dist/client/assets/types-B0PlfpKc.js +0 -1
- package/dist/client/assets/ui-LM8pS8qE.js +0 -1
- package/dist/client/assets/use-beside-DopIbJwf.js +0 -1
- package/dist/client/assets/use-conversation-list-CGtcpdPd.js +0 -1
- package/dist/client/assets/use-fleet-active-asks-DAHOPYPV.js +0 -1
- package/dist/client/assets/use-mesh-node-state-BlWIPTc4.js +0 -1
- package/dist/client/assets/use-mesh-ops-items-pKWBro7o.js +0 -1
- package/dist/client/assets/use-reduced-motion-DkdIQBwh.js +0 -1
- package/dist/client/assets/use-scout-dev-flags-CduUFb7l.js +0 -1
- package/dist/client/assets/useAgentHoverCard-DNlXPYQf.js +0 -1
- package/dist/client/assets/useContentSecondaryNav-LJGNYG3U.js +0 -1
- package/dist/client/assets/useEmbedHeadline-BeeBDb7E.js +0 -1
- package/dist/client/assets/usePierreRuntime-DUXZ-DTK.js +0 -50
- package/dist/client/assets/useSidebarCollapse-DoMvU_2R.js +0 -1
- package/dist/client/assets/users-BQPEIUfd.js +0 -1
- package/dist/client/assets/voice-levels-Dcr3jglk.js +0 -1
- package/dist/client/assets/voice-paths-CJUuBPh3.css +0 -1
- package/dist/client/assets/voice-turn-DftA0iIb.css +0 -1
- package/dist/client/assets/voice-turn-ledger-BMZxlSjg.js +0 -1
- 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-C-wjicn5.js +0 -1
- package/dist/client/assets/x-BcfhXYiF.js +0 -1
- package/dist/client/assets/xterm-qXD45dc0.js +0 -34
- package/dist/client/assets/zap-BqL8ttGz.js +0 -1
- package/dist/client/characters/sage/sage.glb +0 -0
- package/dist/highlights-eq9cgrbb.scm +0 -604
- package/dist/highlights-ghv9g403.scm +0 -205
- package/dist/highlights-hk7bwhj4.scm +0 -284
- package/dist/highlights-r812a2qc.scm +0 -150
- package/dist/highlights-x6tmsnaa.scm +0 -115
- package/dist/injections-73j83es3.scm +0 -27
- 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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as s,j as r}from"./index-BFbLvCJn.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-BeeBDb7E.js";import{r as He,C as qe}from"./CodeDiffPane-DCgMUi39.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-Dq787L77.js";import{ShikiPane as Ze}from"./ShikiPane-CDiIT_qn.js";/* empty css */import{A as et}from"./arrow-left-DNjQHf4C.js";import{C as tt}from"./chevron-right-B02kAw12.js";import{C as nt}from"./check-BM6QtbB7.js";import{C as st}from"./copy-C1XrY27_.js";import"./cache-DGBo3vIf.js";import"./usePierreRuntime-DUXZ-DTK.js";import"./chunk-HRAB3GC3-DVhUsgOw.js";/* empty css */import"./chevron-down-DEDSNJNY.js";import"./createLucideIcon-CKbjXlwv.js";import"./search-Bv2IONmc.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};
|
|
@@ -1 +0,0 @@
|
|
|
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)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as I,j as a}from"./index-BFbLvCJn.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as o,j as t}from"./index-BFbLvCJn.js";/* empty css */import{c as D}from"./conversations-DoAAO6kA.js";import{u as S}from"./use-conversation-list-CGtcpdPd.js";import{s as W}from"./agent-master-model-Bk_yuUXJ.js";import{A as L}from"./arrow-up-right-DUW1A1Hb.js";import{C as R}from"./chevron-right-B02kAw12.js";import{X as A}from"./x-BcfhXYiF.js";import"./time-Dhsh_2EG.js";import"./machine-scope-DJt9RZ2w.js";import"./api-DSqpVKC7.js";import"./sse-BVxO0zNp.js";import"./index-BWHgHrtv.js";import"./createLucideIcon-CKbjXlwv.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as j,j as n}from"./index-BFbLvCJn.js";import{e as O,a as R,d as C}from"./comms-gesture-_aGFo6g3.js";import{CommsCanvas as q}from"./CommsCanvas-Dh056d91.js";import{mapIdentities as A,CommsFlowMap as Y}from"./CommsFlowMap-Ckasql5e.js";import{CommsSelection as D}from"./CommsSelection-CuphnUny.js";import{k as H,f as L}from"./comms-deck-CBhsXnY-.js";/* empty css */import"./conversations-DoAAO6kA.js";import"./time-Dhsh_2EG.js";import"./use-conversation-list-CGtcpdPd.js";import"./machine-scope-DJt9RZ2w.js";import"./api-DSqpVKC7.js";import"./sse-BVxO0zNp.js";import"./index-BWHgHrtv.js";import"./agent-master-model-Bk_yuUXJ.js";import"./x-BcfhXYiF.js";import"./createLucideIcon-CKbjXlwv.js";import"./panel-right-WKLdPm0F.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};
|
|
@@ -1 +0,0 @@
|
|
|
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)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as d,j as e}from"./index-BFbLvCJn.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as l,j as e}from"./index-BFbLvCJn.js";/* empty css */import{c as x}from"./conversations-DoAAO6kA.js";import{u as N}from"./use-conversation-list-CGtcpdPd.js";import{s as f}from"./agent-master-model-Bk_yuUXJ.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-BcfhXYiF.js";import{P as K}from"./panel-right-WKLdPm0F.js";import"./time-Dhsh_2EG.js";import"./machine-scope-DJt9RZ2w.js";import"./api-DSqpVKC7.js";import"./sse-BVxO0zNp.js";import"./index-BWHgHrtv.js";import"./createLucideIcon-CKbjXlwv.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};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as n,j as a}from"./index-BFbLvCJn.js";import{isRoutableMediaFile as N,readClipboardMediaFiles as D,dataTransferMayContainFiles as b,readRoutableFiles as M}from"./media-blobs-Bi8pxr1u.js";import{F as S}from"./file-text-BOJQiS8p.js";const j="Only markdown, code, images, and video clips can be attached.";function y(){const[e,r]=n.useState([]),[c,i]=n.useState(null),[u,l]=n.useState(null),[p,h]=n.useState(0),o=n.useRef(null),g=n.useCallback((t,s="Attached")=>{const m=t.filter(N);return m.length===0?(t.length>0&&l(j),0):(l(null),r(x=>{const C=new Set(x.map(d=>`${d.name}:${d.size}:${d.lastModified}`)),f=m.filter(d=>!C.has(`${d.name}:${d.size}:${d.lastModified}`));return f.length>0?[...x,...f]:x}),i(m.length===1?`${s} ${m[0]?.name??"1 attachment"}.`:`${s} ${m.length} attachments.`),m.length)},[]),$=n.useCallback(t=>{r(s=>s.filter(m=>m!==t)),i(null)},[]),k=n.useCallback(()=>{r([]),i(null),l(null),h(0)},[]),v=n.useCallback(()=>{o.current?.click()},[]),F=n.useCallback(t=>{const s=D(t.clipboardData);s.length!==0&&(t.preventDefault(),g(s,"Pasted"))},[g]),R=n.useMemo(()=>({onDragOver:t=>{b(t.dataTransfer)&&(t.preventDefault(),h(s=>s===0?1:s))},onDragLeave:t=>{t.currentTarget.contains(t.relatedTarget)||h(0)},onDrop:t=>{if(!b(t.dataTransfer))return;t.preventDefault(),h(0);const s=M(t.dataTransfer);if(s.length===0){l(j);return}g(s,"Dropped")}}),[g]);return{files:e,hasFiles:e.length>0,feedback:c,error:u,dragActive:p>0,stage:g,remove:$,clear:k,setError:l,openPicker:v,dropHandlers:R,onPaste:F,inputRef:o}}function T(e){if(e<1024)return`${e} B`;const r=e/1024;return r<1024?`${r.toFixed(0)} KB`:`${(r/1024).toFixed(1)} MB`}function z(e){return(e.split(".").pop()?.toUpperCase()??"FILE").slice(0,4)}function E({file:e,onRemove:r}){const c=n.useMemo(()=>URL.createObjectURL(e),[e]);n.useEffect(()=>()=>URL.revokeObjectURL(c),[c]);const i=e.type.startsWith("video/"),u=e.type.startsWith("image/"),l=z(e.name),p=T(e.size);return a.jsxs("div",{className:"s-msg-compose-attachment surface-card surface-card--inset",children:[i?a.jsx("video",{src:c,muted:!0,playsInline:!0}):u?a.jsx("img",{src:c,alt:e.name}):a.jsxs("div",{className:"s-msg-compose-attachment-file",title:`${e.name} (${p})`,children:[a.jsxs("div",{className:"s-msg-compose-attachment-file-icon",children:[a.jsx(S,{size:16,"aria-hidden":"true"}),a.jsx("span",{className:"s-msg-compose-attachment-ext label-xs",children:l})]}),a.jsx("span",{className:"s-msg-compose-attachment-name",children:e.name}),a.jsx("span",{className:"s-msg-compose-attachment-size label-xs text-dim",children:p})]}),a.jsx("button",{type:"button",className:"s-msg-compose-attachment-remove btn btn--ghost btn--icon","aria-label":`Remove ${e.name}`,title:`Remove ${e.name}`,onClick:r,children:"×"})]})}function B({attachments:e,accept:r="image/*,video/*,text/markdown,.md,.markdown,text/plain,.txt"}){const{files:c,feedback:i,error:u,remove:l,stage:p,inputRef:h}=e;return a.jsxs(a.Fragment,{children:[a.jsx("input",{ref:h,type:"file",multiple:!0,accept:r,className:"s-msg-compose-file-input",onChange:o=>{p([...o.target.files??[]]),o.target.value=""}}),c.length>0?a.jsx("div",{className:"s-msg-compose-attachments","aria-label":"Staged attachments",children:c.map(o=>a.jsx(E,{file:o,onRemove:()=>l(o)},`${o.name}:${o.size}:${o.lastModified}`))}):null,u?a.jsx("div",{className:"s-msg-compose-attach-note","data-tone":"error",role:"alert",children:u}):i?a.jsx("div",{className:"s-msg-compose-attach-note","data-tone":"muted",role:"status",children:i}):null]})}export{B as C,y as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as s}from"./index-BFbLvCJn.js";import{A as J}from"./AgentAvatar-Dn8TUv5W.js";import{M as T}from"./runtime-picker-IRcTkMZ5.js";import{M as $}from"./NewChatComposer-D-VB5vdt.js";import{C as V}from"./ComposerAttachments-9uYp_Lh5.js";import"./index-CXzJ_hGx.js";import{c as z}from"./createLucideIcon-CKbjXlwv.js";import{Z as Y}from"./zap-BqL8ttGz.js";import{X as M}from"./x-BcfhXYiF.js";import"./Provider-BEXAZWd9.js";import"./theme-vars-DNK0nn3k.js";import"./router-CJIx83Ia.js";import"./api-DSqpVKC7.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-3RfJpen8.js";import"./machine-scope-DJt9RZ2w.js";import"./sse-BVxO0zNp.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./agent-state-DDhnFEEP.js";import"./scoutbot-Bk3nyrkj.js";import"./model-CBkMvT1w.js";import"./time-Dhsh_2EG.js";import"./DocumentFocusViewer-mxzPxQQW.js";import"./TextDocumentSurface-DBslUq9k.js";import"./file-text-BOJQiS8p.js";import"./index-V8FYEUpD.js";import"./chevron-right-B02kAw12.js";import"./folder-C2emmTHq.js";import"./chevron-up-CzveykKG.js";import"./code-xml-E9gBuiVs.js";import"./arrow-left-DNjQHf4C.js";import"./arrow-right-A_yyXwoH.js";import"./scout-voice-Cdh6pCsb.js";import"./fx-z37u1o2z.js";import"./voice-turn-ledger-BMZxlSjg.js";import"./keyboard-nav-CEe-ApvZ.js";import"./media-blobs-Bi8pxr1u.js";import"./chunk-HRAB3GC3-DVhUsgOw.js";import"./SpriteAvatar-D53GaaK3.js";import"./CrewAvatar-a_C_F9r_.js";import"./HarnessMark-CP-PWk2W.js";import"./colors-CFlbwC25.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CCG7hG7z.js";import"./conversation-model-FxDeWlle.js";import"./conversations-DoAAO6kA.js";import"./NewChatOrigin-BYsEu9dZ.js";import"./chevron-down-DEDSNJNY.js";import"./search-Bv2IONmc.js";const S=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],ee=z("pencil",S);const se=[["path",{d:"M20 18v-2a4 4 0 0 0-4-4H4",key:"5vmcpk"}],["path",{d:"m9 17-5-5 5-5",key:"nvlc11"}]],te=z("reply",se);function Se({composeRef:P,draft:N,setDraft:R,composePlaceholder:K,slashState:n,setSlashState:b,filteredSlashCommands:r,applySlashCommand:w,mentionState:a,setMentionState:j,filteredMentions:i,applyMention:f,updateTriggersFromDraft:v,closeSuggestions:y,replyTarget:u,onCancelReply:H,isStopMode:L,sending:p,composeAction:_,onSend:I,onInterrupt:W,attachments:c,isAgentBusy:D,busyIntent:k,onBusyIntentChange:C,queued:l,queueNote:F,onEditQueued:O,editingQueuedId:m,editingAttachmentCount:h,onCancelEdit:Q,onUnqueue:Z,onSendQueuedNow:U}){const X=s.jsxs(s.Fragment,{children:[n.open?s.jsx($,{label:"Slash commands",items:r.map(e=>({id:e.command,token:e.label,description:e.description})),activeIndex:n.index,onPick:e=>{const t=r[e];t&&w(t)},onActiveIndexChange:e=>b(t=>({...t,index:e}))}):null,a.open?s.jsx($,{label:"Mention agent",items:i.map(e=>({id:e.id,token:`@${e.handle}`,description:e.name,avatarNode:s.jsx(J,{name:e.name,size:20,tile:!0,presence:!1})})),activeIndex:a.index,onPick:e=>{const t=i[e];t&&f(t)},onActiveIndexChange:e=>j(t=>({...t,index:e}))}):null]}),B=N.trim().length>0,x=m!==null,q=B||c.hasFiles||h>0,g=D&&q,d=g&&k==="steer",A=x?l.findIndex(e=>e.id===m)+1:0,E=g?s.jsxs("div",{className:"s-msg-compose-mode",role:"group","aria-label":"What Send does while this turn is running",children:[s.jsx("button",{type:"button",className:"s-msg-compose-mode-btn","data-mode":"queue","aria-pressed":k==="queue",title:"Hold this draft until the running turn lands",disabled:p,onClick:()=>C("queue"),children:"Queue"}),s.jsx("button",{type:"button",className:"s-msg-compose-mode-btn","data-mode":"steer","aria-pressed":k==="steer",title:"Interrupt the running turn and deliver this now",disabled:p,onClick:()=>C("steer"),children:"Steer"})]}):null,G=l.length>0||E?s.jsxs("div",{className:"s-msg-compose-queue",role:"group","aria-label":"Queued messages",children:[s.jsxs("div",{className:"s-msg-compose-queue-head",children:[s.jsx("span",{className:"s-msg-compose-queue-kicker",children:l.length>0?`Queue · ${l.length}`:"Queues next"}),s.jsx("span",{className:"s-msg-compose-queue-hint",children:x?d?`Rewriting ${A} — send interrupts this turn`:`Rewriting ${A} — send returns it to its place`:l.length>0?d?"Send interrupts this turn":F??"":d?"Interrupts this turn on send":"Sends when this turn lands"}),E]}),l.map((e,t)=>s.jsxs("div",{className:"s-msg-compose-queue-row","data-editing":e.id===m?"true":void 0,children:[s.jsx("span",{className:"s-msg-compose-queue-index",children:t+1}),s.jsx("span",{className:"s-msg-compose-queue-body",children:e.body.trim()||"Attachments only"}),e.attachments.length>0?s.jsxs("span",{className:"s-msg-compose-queue-clip",children:[e.attachments.length," file",e.attachments.length===1?"":"s"]}):null,e.id===m?s.jsx("button",{type:"button",className:"s-msg-compose-queue-edit btn btn--sm btn--ghost",title:"Stop rewriting — leave this row as it was","aria-label":`Cancel rewriting queued message ${t+1}`,onClick:Q,children:"Cancel edit"}):s.jsxs("button",{type:"button",className:"s-msg-compose-queue-edit btn btn--sm btn--ghost",title:"Pull this back into the input box to rewrite it","aria-label":`Edit queued message ${t+1}`,disabled:p||x,onClick:()=>O(e.id),children:[s.jsx(ee,{size:11,"aria-hidden":"true"}),s.jsx("span",{children:"Edit"})]}),s.jsxs("button",{type:"button",className:"s-msg-compose-queue-now btn btn--sm btn--accent",title:"Interrupt this turn and send this now","aria-label":`Send queued message ${t+1} now`,disabled:p||e.id===m,onClick:()=>U(e.id),children:[s.jsx(Y,{size:11,"aria-hidden":"true"}),s.jsx("span",{children:"Send now"})]}),s.jsx("button",{type:"button",className:"s-msg-compose-queue-drop btn btn--ghost btn--icon",title:"Cancel — drop this from the queue","aria-label":`Cancel queued message ${t+1}`,onClick:()=>Z(e.id),children:"×"})]},e.id))]}):null;return s.jsx(T,{density:"thread",value:N,onChange:(e,t)=>{R(e),v(e,t?.caret??e.length)},onSend:I,placeholder:K,sending:p,stopMode:L,onStop:W,canSend:q,sendTitle:d?"Steer — interrupt this turn and send now (Cmd+Enter)":g?"Queue for the next turn (Cmd+Enter)":"Send (Cmd+Enter)",sendAriaLabel:d?"Steer — interrupt this turn and send now (Cmd+Enter)":g?"Queue message for the next turn (Cmd+Enter)":_==="steer"?"Send follow-up (Cmd+Enter)":"Send message (Cmd+Enter)",showAttach:!0,onAttach:c.openPicker,onPaste:c.onPaste,dropHandlers:c.dropHandlers,dragActive:c.dragActive,textareaRef:P,overlay:X,above:G,aboveAttached:!0,header:s.jsxs(s.Fragment,{children:[u?s.jsxs("div",{className:"s-thread-compose-reply surface-card surface-card--inset",role:"status",children:[s.jsx(te,{className:"s-thread-compose-reply-icon text-muted",size:13,strokeWidth:1.8,"aria-hidden":"true"}),s.jsx("span",{className:"s-thread-compose-reply-label label-xs text-muted",children:"Replying to"}),s.jsx("span",{className:"s-thread-compose-reply-actor chip chip--sm chip--mono chip--neutral",children:u.actorLabel}),s.jsx("span",{className:"s-thread-compose-reply-preview text-muted",title:u.preview,children:u.preview}),s.jsx("button",{type:"button",className:"s-thread-compose-reply-cancel btn btn--ghost btn--icon","aria-label":"Cancel reply",title:"Cancel reply",onClick:H,children:s.jsx(M,{size:13,strokeWidth:1.8,"aria-hidden":"true"})})]}):null,x&&h>0?s.jsxs("div",{className:"s-msg-compose-carried",role:"status",children:[h," file",h===1?"":"s"," stay attached to this draft"]}):null,s.jsx(V,{attachments:c})]}),tools:s.jsxs("span",{className:"s-thread-compose-hint s-msg-compose-tools-hint",children:[s.jsx("kbd",{className:"s-kbd",children:"/"})," commands"," · ",s.jsx("kbd",{className:"s-kbd",children:"@"})," agents"]}),onSelect:e=>{const t=e.currentTarget;v(t.value,t.selectionStart)},onBlur:()=>{setTimeout(y,120)},onKeyDown:e=>{if(!(n.open&&r.length>0||a.open&&i.length>0))return!1;if(e.key==="ArrowDown")return n.open?b(o=>({...o,index:(o.index+1)%r.length})):a.open&&j(o=>({...o,index:(o.index+1)%i.length})),!0;if(e.key==="ArrowUp")return n.open?b(o=>({...o,index:(o.index-1+r.length)%r.length})):a.open&&j(o=>({...o,index:(o.index-1+i.length)%i.length})),!0;if(e.key==="Escape")return y(),!0;if((e.key==="Enter"||e.key==="Tab")&&!e.shiftKey&&!e.metaKey&&!e.ctrlKey&&!e.altKey){if(n.open){const o=r[n.index]??r[0];o&&w(o)}else if(a.open){const o=i[a.index]??i[0];o&&f(o)}return!0}return!1}})}export{Se as ConversationComposer};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as t}from"./index-BFbLvCJn.js";import{M as p}from"./message-markup-D1C7GzHo.js";import{f as d}from"./conversation-model-FxDeWlle.js";import{t as n}from"./time-Dhsh_2EG.js";import"./message-markup-BQW5jdJw.js";import"./mentions-s5oW4aQU.js";import"./colors-CFlbwC25.js";import"./agent-state-DDhnFEEP.js";import"./index-CXzJ_hGx.js";import"./api-DSqpVKC7.js";import"./Provider-BEXAZWd9.js";import"./theme-vars-DNK0nn3k.js";import"./router-CJIx83Ia.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-3RfJpen8.js";import"./machine-scope-DJt9RZ2w.js";import"./sse-BVxO0zNp.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-Bk3nyrkj.js";import"./NewChatComposer-D-VB5vdt.js";import"./runtime-picker-IRcTkMZ5.js";import"./scout-voice-Cdh6pCsb.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CCG7hG7z.js";import"./createLucideIcon-CKbjXlwv.js";import"./media-blobs-Bi8pxr1u.js";import"./HarnessMark-CP-PWk2W.js";import"./NewChatOrigin-BYsEu9dZ.js";import"./keyboard-nav-CEe-ApvZ.js";import"./x-BcfhXYiF.js";import"./chevron-down-DEDSNJNY.js";import"./search-Bv2IONmc.js";import"./file-text-BOJQiS8p.js";import"./model-CBkMvT1w.js";import"./DocumentFocusViewer-mxzPxQQW.js";import"./TextDocumentSurface-DBslUq9k.js";import"./index-V8FYEUpD.js";import"./chevron-right-B02kAw12.js";import"./folder-C2emmTHq.js";import"./chevron-up-CzveykKG.js";import"./code-xml-E9gBuiVs.js";import"./arrow-left-DNjQHf4C.js";import"./arrow-right-A_yyXwoH.js";import"./voice-turn-ledger-BMZxlSjg.js";import"./chunk-HRAB3GC3-DVhUsgOw.js";import"./AgentDetailCard-CI-ufaEP.js";import"./AgentLiveActions-CkRGkv13.js";import"./terminal-takeover-CXwdoZ5j.js";import"./openContent-C6XO6kr5.js";import"./eye-CD-_aphP.js";import"./terminal-DMBAZjPP.js";import"./conversations-DoAAO6kA.js";function l({at:i}){const r=d(i);return t.jsxs("div",{className:"s-thread-day-divider","aria-label":r,children:[t.jsx("span",{className:"s-thread-day-line","aria-hidden":"true"}),t.jsx("span",{className:"s-thread-day-label",children:r}),t.jsx("span",{className:"s-thread-day-line","aria-hidden":"true"})]})}function ct({row:i,expanded:r,showDayDivider:e,onToggle:s}){const m=`${i.recipients.length} recipients`;return t.jsxs("div",{className:["s-thread-feed-block","s-thread-fanout",e&&"s-thread-feed-block--full-width"].filter(Boolean).join(" "),children:[e&&t.jsx(l,{at:i.createdAt}),i.messages.map(a=>t.jsx("span",{id:`msg-${a.id}`,className:"s-thread-fanout-anchor","aria-hidden":"true"},a.id)),t.jsxs("button",{type:"button",className:"s-thread-fanout-summary","aria-expanded":r,onClick:s,title:i.recipients.join(", "),children:[t.jsx("span",{className:"s-thread-fanout-caret","aria-hidden":"true",children:r?"▾":"▸"}),t.jsx("span",{className:"s-thread-fanout-label",children:m}),t.jsx("span",{className:"s-thread-fanout-time",children:n(i.createdAt)})]}),r&&t.jsxs("div",{className:"s-thread-fanout-detail",children:[t.jsx("ul",{className:"s-thread-fanout-recipients",children:i.messages.map((a,o)=>t.jsx("li",{className:"s-thread-fanout-recipient",children:i.recipients[o]},a.id))}),t.jsx("div",{className:"s-thread-fanout-body",children:t.jsx(p,{text:i.messages[0].body})})]})]})}export{ct as FanOutRow,l as ThreadDayDivider};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as S,j as e,H as Z}from"./index-BFbLvCJn.js";import{c as M}from"./clipboard-e3fSpeo7.js";import{b as ee}from"./router-CJIx83Ia.js";import{A as P}from"./AgentAvatar-Dn8TUv5W.js";import{H as te}from"./HarnessMark-CP-PWk2W.js";import{a as se}from"./Provider-BEXAZWd9.js";import{n as ne,c as ae}from"./agent-state-DDhnFEEP.js";import{B as re}from"./BackToPicker-BPU7kbXq.js";import{o as _}from"./openContent-C6XO6kr5.js";import{AstronautSuit as oe}from"./AstronautSuit-Dzu4GOMR.js";import{n as ie,o as le}from"./conversation-model-FxDeWlle.js";import{E as ce}from"./eye-CD-_aphP.js";import{P as de}from"./panel-right-WKLdPm0F.js";import{c as me}from"./createLucideIcon-CKbjXlwv.js";import"./api-DSqpVKC7.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-3RfJpen8.js";import"./SpriteAvatar-D53GaaK3.js";import"./CrewAvatar-a_C_F9r_.js";import"./runtime-picker-IRcTkMZ5.js";import"./scout-voice-Cdh6pCsb.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-CCG7hG7z.js";import"./colors-CFlbwC25.js";import"./theme-vars-DNK0nn3k.js";import"./machine-scope-DJt9RZ2w.js";import"./sse-BVxO0zNp.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-Bk3nyrkj.js";import"./NewChatComposer-D-VB5vdt.js";import"./media-blobs-Bi8pxr1u.js";import"./index-CXzJ_hGx.js";import"./NewChatOrigin-BYsEu9dZ.js";import"./keyboard-nav-CEe-ApvZ.js";import"./x-BcfhXYiF.js";import"./chevron-down-DEDSNJNY.js";import"./search-Bv2IONmc.js";import"./file-text-BOJQiS8p.js";import"./model-CBkMvT1w.js";import"./time-Dhsh_2EG.js";import"./DocumentFocusViewer-mxzPxQQW.js";import"./TextDocumentSurface-DBslUq9k.js";import"./index-V8FYEUpD.js";import"./chevron-right-B02kAw12.js";import"./folder-C2emmTHq.js";import"./chevron-up-CzveykKG.js";import"./code-xml-E9gBuiVs.js";import"./arrow-left-DNjQHf4C.js";import"./arrow-right-A_yyXwoH.js";import"./voice-turn-ledger-BMZxlSjg.js";import"./chunk-HRAB3GC3-DVhUsgOw.js";import"./conversations-DoAAO6kA.js";const he=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"19",x2:"19",y1:"8",y2:"14",key:"1bvyxn"}],["line",{x1:"22",x2:"16",y1:"11",y2:"11",key:"1shjgl"}]],pe=me("user-plus",he),Y=150,B=320,ue=1.4,xe=1.1,G=5,fe=22,J=5200,ve=1,ge=1200;function je(n){S.useEffect(()=>{const s=n.current;if(!s||window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;let i=[],r=[],d=-9999,x=-9999,m=0;const c=()=>{i=[],r=[],s.querySelectorAll(".sprite-cell--eye circle").forEach(o=>{const a=o.getBoundingClientRect();if(!a.width)return;const u=o.closest("[data-state]");i.push({el:o,cx:a.left+a.width/2,cy:a.top+a.height/2,working:u?.dataset.state==="in_flight"})}),s.querySelectorAll(".s-thread-participant-avatar svg").forEach(o=>{const a=o.getBoundingClientRect();a.width&&r.push({el:o,cx:a.left+a.width/2,cy:a.top+a.height/2})})},E=o=>o<Y?1:o>B?0:(B-o)/(B-Y),j=o=>{for(const a of i){const u=d-a.cx,y=x-a.cy,p=Math.hypot(u,y),v=E(p),b=p<1?1:p;let A=u/b*ue*v;const L=y/b*xe*v;if(a.working&&v<1){const w=o%J/J;A+=Math.sin(w*Math.PI*2)*ve*(1-v)}a.el.style.transform=`translate(${A.toFixed(2)}px, ${L.toFixed(2)}px)`}for(const a of r){const u=d-a.cx,y=Math.hypot(u,x-a.cy),p=E(y),v=Math.max(-G,Math.min(G,u/fe))*p;a.el.style.transform=v===0?"":`rotate(${v.toFixed(2)}deg)`}m=requestAnimationFrame(j)},f=o=>{d=o.clientX,x=o.clientY};c();const h=window.setInterval(c,ge);return m=requestAnimationFrame(j),window.addEventListener("resize",c),document.addEventListener("pointermove",f,{passive:!0}),()=>{cancelAnimationFrame(m),window.clearInterval(h),window.removeEventListener("resize",c),document.removeEventListener("pointermove",f);for(const o of i)o.el.style.transform="";for(const o of r)o.el.style.transform=""}},[n])}function I(n,s,i){const r=i?Z[i.trim().toLowerCase()]:void 0;return{"--fp-z":String(n-s),"--fp-i":String(s),...r==null?{}:{"--fp-suit-hue":String(r)}}}function be(n){if(n<1e3)return String(n);const s=n/1e3;return s<10?`${s.toFixed(1).replace(/\.0$/,"")}k`:`${Math.round(s)}k`}function T({name:n,runtime:s,state:i,action:r}){return e.jsxs("span",{className:"s-thread-participant-card","aria-hidden":"true",children:[e.jsx("strong",{children:n}),s?e.jsx("span",{children:s}):null,e.jsx("span",{children:i}),r?e.jsx("span",{className:"s-thread-participant-card-action",children:r}):null]})}function H({count:n,className:s,style:i,rosterId:r,expanded:d,onClick:x}){const m=`${n} more participant${n===1?"":"s"}`;return e.jsx("button",{type:"button",className:`s-thread-participant s-thread-participant--button ${s}`,style:i,"aria-label":`${m}; open participant list`,"aria-haspopup":"dialog","aria-controls":r,"aria-expanded":d,onClick:x,children:e.jsxs("span",{className:"s-thread-participant-face s-thread-participant-face--overflow",children:["+",be(n)]})})}const ye=[{id:"thread",label:"Thread",hint:"The conversation in order"},{id:"flow",label:"Flow",hint:"Who asked whom, who waited, and where the work branched"},{id:"map",label:"Map",hint:"Who exchanges work with whom, and on which model"},{id:"canvas",label:"Canvas",hint:"The same window laid out left to right, with nobody folded away"}];function wt({showBackNav:n,backLabel:s,isDm:i,navigate:r,route:d,canonicalConversationId:x,threadTitle:m,agentId:c,sessionId:E,detailRoute:j,participants:f,operator:h,canAddParticipants:o,onToggleAddParticipant:a,view:u,onChangeView:y,beside:p}){const v=se(),b=ee(d),A=S.useRef(null),L=S.useRef(null),w=S.useId(),[N,C]=S.useState(!1);je(A);const $=f.slice(0,3),z=Math.max(f.length-$.length,0),U=Math.max(f.length-2,0),W=Math.max(f.length-1,0),k=$.length+(z>0?1:0)+(h.active?1:0);S.useEffect(()=>{if(!N)return;const t=g=>{L.current?.contains(g.target)||C(!1)},l=g=>{g.key==="Escape"&&C(!1)};return document.addEventListener("mousedown",t),document.addEventListener("keydown",l),()=>{document.removeEventListener("mousedown",t),document.removeEventListener("keydown",l)}},[N]);const O=t=>t.agent?{view:"agents-v2",agentId:t.agent.id,...b?{machineId:b}:{}}:t.sessionId?{view:"sessions",sessionId:t.sessionId,...b?{machineId:b}:{}}:null,q=t=>{const l=O(t);l&&(C(!1),_(r,l,{returnTo:d}))};return e.jsxs("div",{className:"s-thread-center-header",onClick:t=>{t.target?.closest("button,a,input,select,textarea")||!i||!j||_(r,j,{returnTo:d})},style:i&&j?{cursor:"pointer"}:void 0,onContextMenu:t=>{const l=[{kind:"action",label:"Copy Title",onSelect:()=>{M(m)}}];c&&l.push({kind:"action",label:"Copy Agent ID",onSelect:()=>{M(c)}}),!c&&E&&l.push({kind:"action",label:"Copy Session ID",onSelect:()=>{M(E)}}),l.push({kind:"action",label:"Copy Conversation ID",onSelect:()=>{M(x)}}),v(t,l)},children:[n&&e.jsx(re,{slot:"conversation",fallback:{view:"inbox"},navigate:r,label:s??"Back",className:"s-thread-header-back"}),e.jsx("div",{className:"s-thread-center-header-info",children:i&&j?e.jsx("button",{type:"button",className:"s-thread-center-header-name",title:`Open ${m} details`,onClick:()=>_(r,j,{returnTo:d}),children:m}):e.jsx("span",{className:"s-thread-center-header-name",title:m,children:m})}),e.jsxs("div",{className:"s-thread-center-header-right",children:[e.jsx("div",{className:"s-thread-view-toggle",role:"group","aria-label":"Conversation view",children:ye.map(t=>e.jsx("button",{type:"button",className:`s-thread-view-option${u===t.id?" s-thread-view-option--on":""}`,"aria-pressed":u===t.id,title:t.hint,onClick:()=>y(t.id),children:t.label},t.id))}),f.length>0&&e.jsxs("div",{className:"s-thread-participants",ref:t=>{A.current=t,L.current=t},"aria-label":"Conversation participants",children:[$.map((t,l)=>{const g=[t.harness,t.model,t.reasoningEffort].filter(Boolean).join(" · ")||null,F=t.agent?ne(t.agent.state??null,t.agent):null,D=t.agent?ae(t.agent.state??null,t.agent):"Session participant",V=O(t),X=V?t.agent?"Open profile":"Open session":null,Q=[t.name,g,D,X].filter(Boolean).join(", "),K=e.jsxs(e.Fragment,{children:[e.jsxs("span",{className:"s-thread-participant-face",children:[e.jsx(oe,{}),e.jsx(P,{agent:t.agent??void 0,name:t.name,placement:"turn",size:28,className:"s-thread-participant-avatar",gaze:"pointer"})]}),t.harness?e.jsx(te,{harness:t.harness,size:9,className:"s-thread-participant-harness",title:null}):null,e.jsx(T,{name:t.name,runtime:g,state:D,action:X})]}),R={className:"s-thread-participant",style:I(k,l,t.harness),"data-state":F??void 0,"data-compact-hidden":l>=2?"true":void 0,"data-narrow-hidden":l>=1?"true":void 0,"aria-label":Q};return V?e.jsx("button",{type:"button",...R,className:`${R.className} s-thread-participant--button`,onClick:()=>q(t),children:K},t.id):e.jsx("span",{...R,role:"group",tabIndex:0,children:K},t.id)}),z>0?e.jsx(H,{count:z,className:"s-thread-participant--desktop-overflow",style:I(k,$.length),rosterId:w,expanded:N,onClick:()=>C(t=>!t)}):null,U>0?e.jsx(H,{count:U,className:"s-thread-participant--compact-overflow",style:I(k,2),rosterId:w,expanded:N,onClick:()=>C(t=>!t)}):null,W>0?e.jsx(H,{count:W,className:"s-thread-participant--narrow-overflow",style:I(k,1),rosterId:w,expanded:N,onClick:()=>C(t=>!t)}):null,h.active?e.jsxs("span",{className:"s-thread-participant s-thread-participant--operator",style:I(k,k-1),role:"group",tabIndex:0,"aria-label":`${h.name}, you, in this conversation`,children:[e.jsx("span",{className:"s-thread-participant-face",children:e.jsx(P,{name:h.name,placement:"turn",size:28,className:"s-thread-participant-avatar",gaze:"pointer"})}),e.jsx(T,{name:`${h.name} (you)`,runtime:null,state:"In this conversation",action:null})]}):e.jsxs("span",{className:"s-thread-participant-observer",role:"group",tabIndex:0,"aria-label":`${h.name}, observing, not in this conversation`,children:[e.jsx(ce,{size:15,strokeWidth:1.9,"aria-hidden":"true"}),e.jsx(T,{name:h.name,runtime:null,state:"Observing, not in this conversation",action:null})]}),N?e.jsxs("div",{id:w,className:"s-thread-participant-roster",role:"dialog","aria-label":"Conversation participants",onClick:t=>t.stopPropagation(),children:[e.jsx("strong",{className:"s-thread-participant-roster-title",children:"Participants"}),e.jsxs("div",{className:"s-thread-participant-roster-list",children:[f.map(t=>{const l=O(t),g=[t.harness,t.model].filter(Boolean).join(" · "),F=e.jsxs(e.Fragment,{children:[e.jsx(P,{agent:t.agent??void 0,name:t.name,placement:"turn",size:24,className:"s-thread-participant-roster-avatar"}),e.jsxs("span",{children:[e.jsx("strong",{children:t.name}),g?e.jsx("small",{children:g}):null]})]});return l?e.jsx("button",{type:"button",className:"s-thread-participant-roster-row",onClick:()=>q(t),children:F},t.id):e.jsx("div",{className:"s-thread-participant-roster-row",children:F},t.id)}),h.active?e.jsxs("div",{className:"s-thread-participant-roster-row",children:[e.jsx(P,{name:h.name,placement:"turn",size:24,className:"s-thread-participant-roster-avatar"}),e.jsxs("span",{children:[e.jsxs("strong",{children:[h.name," (you)"]}),e.jsx("small",{children:"Operator"})]})]}):null]})]}):null]}),p&&e.jsx("button",{type:"button",className:`s-thread-add-participant-trigger${p.on?" is-on":""}`,onClick:p.toggle,title:p.on?"Close the column beside the stage":"Keep this conversation beside the stage","aria-label":p.on?"Close beside":"Keep beside","aria-pressed":p.on,children:e.jsx(de,{size:14,strokeWidth:1.9,"aria-hidden":"true"})}),o&&e.jsx("button",{type:"button",className:"s-thread-add-participant-trigger",onClick:a,title:"Add participant","aria-label":"Add participant",children:e.jsx(pe,{size:14,strokeWidth:1.9,"aria-hidden":"true"})})]})]})}function Nt({canonicalConversationId:n,conversationAlias:s}){return e.jsxs("div",{className:"s-thread-identity-row",children:[e.jsxs("button",{type:"button",className:"s-thread-identity-chip",title:n,onClick:()=>{M(n)},children:[e.jsx("span",{children:ie()}),e.jsx("strong",{children:le(n)})]}),s&&e.jsxs("span",{className:"s-thread-identity-chip",title:s,children:[e.jsx("span",{children:"Alias"}),e.jsx("strong",{children:s})]})]})}function Ct({agents:n,addParticipantId:s,setAddParticipantId:i,addingParticipant:r,addParticipantError:d,onCancel:x,onSubmit:m}){return e.jsxs("form",{className:"s-thread-add-participant",onSubmit:c=>{c.preventDefault(),m()},children:[e.jsxs("div",{className:"s-thread-add-participant-row",children:[e.jsxs("div",{className:"s-thread-add-participant-field",children:[e.jsx("label",{className:"s-thread-add-participant-label",htmlFor:"thread-add-participant-select",children:"Agent"}),e.jsx("select",{id:"thread-add-participant-select",className:"s-thread-add-participant-select",value:s,onChange:c=>i(c.target.value),autoFocus:!0,children:n.map(c=>e.jsx("option",{value:c.id,children:c.name},c.id))})]}),e.jsxs("div",{className:"s-thread-add-participant-actions",children:[e.jsx("button",{type:"button",className:"s-btn s-btn-sm",onClick:x,disabled:r,children:"Cancel"}),e.jsx("button",{type:"submit",className:"s-btn s-btn-primary s-btn-sm",disabled:r||s.trim().length===0,children:r?"Adding...":"Add"})]})]}),d&&e.jsx("div",{className:"s-thread-add-participant-error",children:d})]})}export{Ct as AddParticipantForm,wt as ConversationHeader,Nt as ConversationIdentityRow};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/conversation-motion-features-BfmPlONx.js","assets/gestures-Dh8szhcU.js","assets/index-BFbLvCJn.js","assets/index-BRNHY2fp.css","assets/use-reduced-motion-DkdIQBwh.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{j as e,r as g,_ as z}from"./index-BFbLvCJn.js";import{h as W,t as B,i as O,r as D,j as U,m as F,c as K,k as H,p as q}from"./conversation-model-FxDeWlle.js";import{n as G,e as V}from"./agent-state-DDhnFEEP.js";import{a as L,s as J}from"./colors-CFlbwC25.js";import{i as C}from"./sessionRead-CvFz2RHv.js";import{n as Q,t as w,f as b}from"./time-Dhsh_2EG.js";import{u as X}from"./Provider-BEXAZWd9.js";import{o as E}from"./openContent-C6XO6kr5.js";import{f as Y,c as Z,b as ee,e as te,g as se}from"./tail-display-DHSNmvor.js";import{u as ae}from"./use-reduced-motion-DkdIQBwh.js";import{L as ie,m as f}from"./proxy-k0ILOVkK.js";import{C as ne}from"./chevron-down-DEDSNJNY.js";import{C as re}from"./chevron-right-B02kAw12.js";import{A as oe}from"./activity-CXkZ620t.js";import{T as ce}from"./terminal-DMBAZjPP.js";import{M as le}from"./message-circle-BB3rFCVD.js";const M=60,de={planning:"Planning",inspection:"Inspection",mutation:"Mutations",execution:"Execution",verification:"Verification",coordination:"Coordination"};function N(s){if(s.kind==="think")return"planning";const t=s.tool?.toLowerCase()??"",o=s.arg?.toLowerCase()??"",r=s.text?.toLowerCase()??"",i=s.outcome?.toLowerCase()??"";return t.includes("test")||t.includes("check")||t.includes("lint")||t.includes("typecheck")||t.includes("verify")||/\b(?:bun|npm|pnpm|yarn|cargo|pytest|go|vitest|jest|playwright|cypress)\s+(?:test|run\s+(?:check|test|lint)|check|typecheck)/i.test(o)||/\b(?:\d+\s+pass|all tests passed|test passed|lint clean|tsc clean)\b/i.test(i)?"verification":t==="write"||t==="edit"||t==="strreplace"||t==="str_replace"||t==="delete"||t==="write_file"||t==="edit_file"||t==="patch"||t==="apply_patch"||t==="todowrite"||t==="todo_write"||/\b(?:git\s+apply|git\s+commit|git\s+add|rm\s+|mkdir\s+|touch\s+|sed\s+|awk\s+)/i.test(o)||/^\+\d+\s+[−-]\d+/u.test(i)?"mutation":t==="read"||t==="glob"||t==="grep"||t==="filesearch"||t==="file_search"||t==="list_dir"||t==="list_directory"||t==="view"||t==="fetch"||t==="webfetch"||t==="websearch"||t==="scout_search"||t==="search"||/\b(?:grep|find|rg|cat|head|tail|ls|git\s+status|git\s+diff|git\s+log|git\s+branch)/i.test(o)?"inspection":s.kind==="note"||/\b(?:planning|plan|evaluating|analyzing|reasoning|strategy)\b/i.test(r)?"planning":s.kind==="tool"||t==="bash"||t==="shell"||t==="terminal"||t==="exec"||t==="run"||t==="command"||t==="task"?"execution":"coordination"}function y(s){const t=s.outcome?.toLowerCase()??"";return t.includes("error")||t.includes("fail")||t.includes("exit 1")||t.includes("rejected")||t.includes("timed out")?"error":t.includes("warn")||t.includes("skipped")?"warning":s.outcome||!s.isLatest?"success":s.isActive?"working":"success"}function he(s){if(s<1e3)return`${Math.round(s)}ms`;const t=s/1e3;if(t<60)return`${t.toFixed(1).replace(/\.0$/,"")}s`;const o=Math.floor(t/60),r=Math.round(t%60);return`${o}m ${r}s`}function me(s){if(s.length===0)return[];const t=new Map;for(const c of s)t.set(c.phase,(t.get(c.phase)??0)+(c.repeatCount||1));const r=s.at(-1)?.phase??"planning";return["planning","inspection","mutation","execution","verification","coordination"].filter(c=>(t.get(c)??0)>0).map(c=>({phase:c,label:de[c],count:t.get(c)??0,active:c===r}))}function j(s,t,o){const r=o?.trim();if(!r)return;const i=r.toLowerCase();t.has(i)||(t.add(i),s.push(r))}function Ue(s){const t=[],o=new Set;j(t,o,s.observeSessionId);for(const r of s.flight?.sessions??[])j(t,o,r.sessionId);return j(t,o,s.agent?.harnessSessionId),j(t,o,s.sessionMeta?.harnessSessionId),t}function Fe(s,t){const o=s.sessionId?.trim().toLowerCase();return o?t.some(r=>{const i=r.trim().toLowerCase();return i?o.includes(i)||i.includes(o):!1}):!1}function A(s,t){return s.ts!==t.ts?s.ts-t.ts:s.id.localeCompare(t.id)}function Ke(s,t){const o=new Map;for(const r of[...s,...t])o.set(r.id,r);return[...o.values()].sort(A).slice(-M)}function He(s){const t=Y(s).sort(A),o=Z(t.map(i=>({event:i,meta:ee(i)}))),r=[];for(const i of o){if(i.event.kind==="other")continue;if(i.event.kind==="tool-result"){const m=r.at(-1);m?.kind==="tool"&&(m.outcome=i.meta.result?.outcome??m.outcome??"done",m.ts=i.event.ts,m.status=y({outcome:m.outcome}),m.phase=N({kind:m.kind,tool:m.tool,arg:m.arg,text:m.text,outcome:m.outcome}));continue}const c=ue(i.event),l=pe(i.event,te(i.event,i.meta),c);if(!l&&c!=="think")continue;const d=i.meta.tool,n=i.meta.arg?v(i.meta.arg):void 0,h=i.meta.result?.outcome,a=N({kind:c,tool:d,arg:n,text:l,outcome:h}),p=y({outcome:h}),u={id:i.event.id,ts:i.event.ts,kind:c,text:l,repeatCount:i.repeatCount,phase:a,status:p};d&&(u.tool=d),n&&(u.arg=n),h&&(u.outcome=h),r.push(u)}for(let i=0;i<r.length-1;i++){const c=r[i],l=r[i+1];c&&l&&l.ts>=c.ts&&(c.durationMs=l.ts-c.ts)}return r}const $=160;function v(s){const t=s.replace(/\s+/gu," ").trim();return t.length>$?`${t.slice(0,$-1)}…`:t}const I=/^\[thinking\]\s*$/iu;function ue(s){return I.test(s.summary.trim())?"think":se(s)}function pe(s,t,o){return o==="think"&&I.test(s.summary.trim())?"":v(t)}const xe=15e3;function ge(s){const t=s?.outcome;return typeof t=="string"&&t.trim()?t.trim():void 0}function qe(s){const{observe:t,flight:o}=s;if(!t||!o)return[];const r=t.data.events.filter(n=>n.kind!=="boot"&&n.kind!=="system");if(r.length===0)return[];const i=Q(o.startedAt),c=i!==null?r.filter(n=>typeof n.at=="number"&&n.at>=i-xe):[],d=(c.length>0?c:t.data.live?r:[]).slice(-M).map(n=>{const h=ge(n.result),p=(n.diff?`+${n.diff.add} −${n.diff.del}`:void 0)||h,u=N({kind:n.kind,tool:n.tool,arg:n.arg,text:n.text,outcome:p}),m=y({outcome:p}),x={id:`observe:${t.sessionId??"session"}:${n.id}`,ts:n.at??n.t,kind:n.kind,text:v(n.text||n.tool||"step"),repeatCount:1,phase:u,status:m};return n.tool&&(x.tool=n.tool),n.arg&&(x.arg=v(n.arg)),p&&(x.outcome=p),x});for(let n=0;n<d.length-1;n++){const h=d[n],a=d[n+1];h&&a&&a.ts>=h.ts&&(h.durationMs=a.ts-h.ts)}return d}function Ge(s){const t=s.at(-1);return t?t.tool?t.arg?`${t.tool} · ${t.arg}`:t.tool:t.kind==="think"?t.text||"Thinking":t.text||null:null}function Ve(s){if(s.length===0)return null;const t=s.filter(i=>i.kind==="tool").length,o=s.filter(i=>i.kind==="think").length,r=[];return t>0&&r.push(`${t} tool${t===1?"":"s"}`),o>0&&r.push(`${o} thinking`),r.length===0?`${s.length} step${s.length===1?"":"s"}`:r.join(" · ")}function Je(s){const t=s.flight?.state;return t==="queued"?{label:"Queued",detail:"waiting for the session to come online"}:t==="waking"?{label:"Waking",detail:"starting the session"}:t==="running"||t==="waiting"?s.hasSessionScope?{label:"Session live",detail:"waiting for the first trace line"}:{label:"Session live",detail:"no trace stream for this session yet"}:s.awaitingResponse?{label:"Sent",detail:"waiting for the agent to pick this up"}:null}const fe=[{head:"30%",body:"88%",short:"62%"},{head:"22%",body:"76%",short:"48%"},{head:"34%",body:"82%",short:"68%"}],je=()=>z(()=>import("./conversation-motion-features-BfmPlONx.js"),__vite__mapDeps([0,1,2,3,4])).then(s=>s.default);function P({onOpenTrace:s,onOpenTerminal:t,onSteer:o,compact:r=!1}){return!s&&!t&&!o?null:e.jsxs("nav",{className:`s-thread-working-actions${r?" s-thread-working-actions--compact":""}`,"aria-label":"Working turn actions",children:[s&&e.jsxs("button",{type:"button",className:"s-thread-working-action s-thread-working-action--primary",onClick:s,title:"Watch this run's live trace",children:[e.jsx(oe,{size:13,strokeWidth:1.9,"aria-hidden":"true"}),e.jsx("span",{children:"Live trace"})]}),t&&e.jsxs("button",{type:"button",className:"s-thread-working-action",onClick:t,title:"Jump into this agent's terminal",children:[e.jsx(ce,{size:13,strokeWidth:1.9,"aria-hidden":"true"}),e.jsx("span",{children:"Terminal"})]}),o&&e.jsxs("button",{type:"button",className:"s-thread-working-action",onClick:o,title:"Write an interrupting message to steer this turn",children:[e.jsx(le,{size:13,strokeWidth:1.9,"aria-hidden":"true"}),e.jsx("span",{children:"Steer…"})]})]})}const ve={think:"Thinking",tool:"Tool",ask:"Prompt",message:"Says",note:"Note",system:"System",boot:"Boot"};function k({steps:s,phase:t,limit:o=5,compact:r=!1}){const[i,c]=g.useState(()=>new Set),l=g.useCallback(a=>{c(p=>{const u=new Set(p);return u.has(a)?u.delete(a):u.add(a),u})},[]),d=g.useMemo(()=>me(s),[s]),n=s.slice(-o),h=s.length-n.length;return n.length===0?t?e.jsxs("div",{className:"s-thread-steps-phase surface-card surface-card--inset",children:[e.jsxs("div",{className:"s-thread-steps-phase-header",children:[e.jsx("span",{className:"dot dot--sm dot--working dot--pulse dot--glow","aria-hidden":"true"}),e.jsx("span",{className:"label-xs text-muted",children:t.label})]}),e.jsx("strong",{className:"s-thread-steps-phase-detail",children:t.detail})]}):null:e.jsxs("div",{className:`s-thread-steps${r?" s-thread-steps--compact":""}`,children:[d.length>0&&e.jsx("div",{className:"s-thread-turn-phases-ribbon",role:"status","aria-label":"Execution phases",children:d.map(a=>e.jsxs("span",{className:`s-thread-turn-phase-chip chip chip--sm chip--mono ${a.active?"chip--working s-thread-turn-phase-chip--active":"chip--neutral"}`,children:[a.active&&e.jsx("span",{className:"dot dot--sm dot--working dot--pulse dot--glow","aria-hidden":"true"}),e.jsx("span",{className:"s-thread-turn-phase-name",children:a.label}),e.jsx("span",{className:"s-thread-turn-phase-count",children:a.count})]},a.phase))}),h>0&&e.jsxs("div",{className:"s-thread-steps-elided label-xs",children:[h," earlier step",h===1?"":"s"]}),e.jsx("ol",{className:"s-thread-steps-list","aria-label":"Live steps in this turn",children:n.map((a,p)=>{const u=p===n.length-1,m=i.has(a.id),x=!!(a.arg&&a.arg.length>30||a.outcome||a.text.length>50);return e.jsxs("li",{className:`s-thread-step-card s-thread-step-card--${a.status}${u?" s-thread-step-card--latest":""}${m?" s-thread-step-card--expanded":""}`,"data-kind":a.kind,"data-phase":a.phase,"data-status":a.status,children:[e.jsxs("div",{className:"s-thread-step-header",children:[e.jsx("span",{className:"s-thread-step-mark s-thread-step-indicator","aria-hidden":"true",children:a.status==="working"||u&&!a.outcome?e.jsx("span",{className:"dot dot--sm dot--working dot--pulse dot--glow"}):a.status==="error"?e.jsx("span",{className:"dot dot--sm dot--danger"}):a.status==="warning"?e.jsx("span",{className:"dot dot--sm dot--warning"}):e.jsx("span",{className:"dot dot--sm dot--success"})}),e.jsx("span",{className:"s-thread-step-kind chip chip--sm chip--mono chip--ghost",children:a.tool?a.tool:ve[a.kind]}),e.jsxs("div",{className:"s-thread-step-body",children:[a.tool?e.jsx("span",{className:"s-thread-step-tool-arg",children:a.arg?e.jsx("code",{className:"s-thread-step-arg-code",children:a.arg}):e.jsx("span",{className:"s-thread-step-tool",children:a.tool})}):e.jsx("span",{className:"s-thread-step-text",children:a.text}),a.repeatCount>1&&e.jsxs("span",{className:"s-thread-step-repeat chip chip--sm chip--mono chip--neutral",children:["×",a.repeatCount]})]}),e.jsxs("div",{className:"s-thread-step-meta",children:[a.outcome&&e.jsx("span",{className:`s-thread-step-outcome chip chip--sm chip--mono ${a.outcome.includes("+")?"chip--success":a.status==="error"?"chip--danger":"chip--neutral"}`,children:a.outcome}),a.durationMs?e.jsx("span",{className:"s-thread-step-duration label-xs",children:he(a.durationMs)}):null,e.jsx("time",{className:"label-xs",title:b(a.ts),children:w(a.ts)}),x&&e.jsx("button",{type:"button",className:"s-thread-step-toggle btn btn--ghost btn--icon","aria-expanded":m,onClick:()=>l(a.id),title:m?"Collapse output":"Expand output",children:m?e.jsx(ne,{size:12}):e.jsx(re,{size:12})})]})]}),m&&e.jsxs("div",{className:"s-thread-step-output surface-card surface-card--inset",children:[e.jsxs("div",{className:"s-thread-step-output-header",children:[e.jsx("span",{className:"label-xs text-muted",children:"Telemetry Detail"}),e.jsxs("span",{className:"label-xs text-dim",children:[a.phase.toUpperCase()," · ",a.status.toUpperCase()]})]}),e.jsx("pre",{className:"s-thread-step-output-code",children:e.jsxs("code",{children:[a.tool?`tool: ${a.tool}
|
|
3
|
-
`:"",a.arg?`args: ${a.arg}
|
|
4
|
-
`:"",a.outcome?`outcome: ${a.outcome}
|
|
5
|
-
`:"",a.text?`text: ${a.text}
|
|
6
|
-
`:"",`timestamp: ${b(a.ts)}`]})})]})]},a.id)})})]})}function R({events:s,limit:t=3,compact:o=!1}){const r=s.slice(0,t);return r.length===0?null:e.jsx("ol",{className:`s-thread-motion-events${o?" s-thread-motion-events--compact":""}`,"aria-label":"Latest run activity",children:r.map((i,c)=>e.jsxs("li",{className:"s-thread-motion-event-card",children:[e.jsx("span",{className:"s-thread-motion-event-dot",children:e.jsx("span",{className:`dot dot--sm ${c===0?"dot--working dot--pulse dot--glow":"dot--neutral"}`})}),e.jsx("span",{className:"s-thread-motion-event-kind chip chip--sm chip--mono chip--ghost",children:W(i.kind)}),e.jsx("span",{className:"s-thread-motion-event-summary",children:B(i)??"Activity recorded"}),e.jsx("time",{className:"label-xs",title:b(i.ts),children:w(i.ts)})]},i.id))})}function be(){const s=ae();return e.jsx(ie,{features:je,strict:!0,children:e.jsxs(f.section,{className:"s-thread-skeleton","aria-busy":"true","aria-live":"polite",initial:s?!1:{opacity:0,y:6},animate:{opacity:1,y:0},transition:{duration:.2,ease:[.2,.7,.3,1]},children:[e.jsxs("div",{className:"s-thread-skeleton-intro",role:"status",children:[e.jsxs("div",{className:"s-thread-loader-mark","aria-hidden":"true",children:[e.jsx(f.span,{className:"s-thread-loader-orbit",animate:s?void 0:{rotate:360},transition:{duration:3.2,ease:"linear",repeat:1/0},children:e.jsx("span",{})}),e.jsx(f.span,{className:"s-thread-loader-core",animate:s?void 0:{scale:[.88,1,.88],opacity:[.58,1,.58]},transition:{duration:1.8,ease:"easeInOut",repeat:1/0}})]}),e.jsxs("span",{className:"s-thread-skeleton-copy",children:[e.jsx("strong",{children:"Composer ready"}),e.jsx("span",{children:"Gathering the conversation…"})]})]}),e.jsx("div",{className:"s-thread-skeleton-turns","aria-hidden":"true",children:fe.map((t,o)=>e.jsxs(f.div,{className:"s-thread-skeleton-turn",initial:s?!1:{opacity:0,y:7},animate:{opacity:1,y:0},transition:{delay:s?0:.05+o*.055,duration:.24,ease:[.2,.7,.3,1]},children:[e.jsx("span",{className:"s-thread-skeleton-avatar"}),e.jsxs("div",{className:"s-thread-skeleton-lines",children:[e.jsx("span",{className:"s-thread-skeleton-line s-thread-skeleton-line--head",style:{width:t.head}}),e.jsx("span",{className:"s-thread-skeleton-line",style:{width:t.body}}),e.jsx("span",{className:"s-thread-skeleton-line s-thread-skeleton-line--short",style:{width:t.short}})]})]},`${t.head}-${t.body}`))})]})})}function Ne({sessions:s,activeConversationId:t,needsYouIds:o,lastViewed:r,navigate:i}){const c=s.filter(d=>o.has(d.id)||d.agentId&&o.has(d.agentId)),l=g.useMemo(()=>O(s),[s]);return e.jsx("aside",{className:"s-thread-rail",children:e.jsxs("div",{className:"s-thread-rail-scroll",children:[c.length>0&&e.jsxs("div",{className:"s-thread-rail-section s-thread-rail-section--needs-you",children:[e.jsx("div",{className:"s-thread-rail-section-label",children:"Needs you"}),c.map(d=>e.jsx(_,{session:d,active:d.id===t,unread:C(d.lastMessageAt,d.id,r),needsYou:!0,navigate:i},`needs-${d.id}`))]}),l.map(d=>e.jsxs("div",{className:"s-thread-rail-section",children:[e.jsx("div",{className:"s-thread-rail-section-label",children:d.workspace}),d.sessions.map(n=>e.jsx(_,{session:n,active:n.id===t,unread:C(n.lastMessageAt,n.id,r),needsYou:!1,navigate:i},n.id))]},d.workspace))]})})}function ye({sessionMeta:s,agents:t,flights:o,conversationId:r,navigate:i,route:c}){const l=g.useMemo(()=>s?s.participantIds.filter(a=>a!=="operator").map(a=>D(t,[a])).filter(a=>a!==null):[],[s,t]),d={id:"operator",name:"You",handle:"operator",activity:null,state:"ready",agent:null},n=g.useMemo(()=>l.map(a=>({id:a.id,name:a.name,handle:F(a)??K(a.id)??a.id,activity:U(a,o,r),state:G(a.state),agent:a})),[l,o,r]),h=[d,...n];return e.jsxs("aside",{className:"s-thread-sidebar",children:[e.jsxs("div",{className:"s-thread-sidebar-section",children:[e.jsx("div",{className:"s-thread-sidebar-label",children:"In this conversation"}),h.map(a=>{const p=e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"s-ops-avatar",style:{"--size":"28px",background:L(a.name)},children:a.name[0]?.toUpperCase()??"?"}),e.jsxs("div",{className:"s-thread-sidebar-participant-info",children:[e.jsx("span",{className:"s-thread-sidebar-participant-name",children:a.name}),e.jsxs("span",{className:"s-thread-sidebar-participant-handle",children:["@",a.handle]})]}),e.jsx("div",{className:"s-thread-sidebar-participant-activity",children:a.activity?e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"s-thread-sidebar-activity-dot s-thread-sidebar-activity-dot--pulse",style:{background:"var(--green)"}}),e.jsx("span",{className:"s-thread-sidebar-activity-label",children:a.activity})]}):V(a.state)||a.id==="operator"?e.jsx("span",{className:"s-thread-sidebar-activity-dot",style:{background:J(a.state)}}):e.jsx("span",{className:"s-thread-sidebar-activity-dot",style:{background:"var(--dim)"}})})]});return a.agent?e.jsx("button",{type:"button",className:"s-thread-sidebar-participant s-thread-sidebar-participant--clickable",onClick:()=>E(i,{view:"agents-v2",agentId:a.agent.id},{returnTo:c}),title:`Open ${a.name} profile`,children:p},a.id):e.jsx("div",{className:"s-thread-sidebar-participant",children:p},a.id)})]}),n.length>0&&e.jsxs("div",{className:"s-thread-sidebar-section",children:[e.jsx("div",{className:"s-thread-sidebar-label",children:"Conversation mesh"}),e.jsx(we,{participants:n})]})]})}function ke({agentName:s,title:t,detail:o,snapshot:r,events:i,steps:c,phase:l,tone:d,workspaceName:n,branch:h,startedAt:a,onOpenTrace:p,onOpenTerminal:u,onSteer:m}){const x=a?w(a):"now";return e.jsxs("section",{className:`s-thread-motion-panel s-thread-motion-panel--${d}`,"aria-live":"polite",children:[e.jsxs("div",{className:"s-thread-motion-head",children:[e.jsx("div",{className:"s-thread-motion-beacon","aria-hidden":"true",children:e.jsx("span",{})}),e.jsxs("div",{className:"s-thread-motion-title-block",children:[e.jsx("div",{className:"s-thread-motion-kicker",children:"Currently working"}),e.jsx("h2",{children:t}),e.jsx("p",{children:o})]})]}),e.jsx("div",{className:"s-thread-motion-meter","aria-hidden":"true",children:Se.map((S,T)=>e.jsx("span",{style:{"--bar-height":`${S}%`,"--bar-delay":`${T*74}ms`}},`${S}-${T}`))}),e.jsxs("dl",{className:"s-thread-motion-stats",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Session"}),e.jsx("dd",{children:x})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Activity"}),e.jsx("dd",{children:r.activityLabel})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Last"}),e.jsx("dd",{children:r.lastActivityLabel})]})]}),e.jsxs("div",{className:"s-thread-motion-latest",children:[e.jsx("span",{children:s}),e.jsx("strong",{children:r.latest})]}),c.length>0?e.jsx(k,{steps:c,phase:null,limit:6}):i.length>0?e.jsx(R,{events:i,limit:4}):l?e.jsx(k,{steps:c,phase:l,limit:6}):e.jsxs("div",{className:"s-thread-motion-waiting",children:[e.jsx("span",{children:"Session created"}),e.jsx("strong",{children:"waiting for the first trace event"})]}),(n||h)&&e.jsxs("div",{className:"s-thread-motion-chips",children:[n&&e.jsx("span",{children:n}),h&&e.jsx("span",{children:h})]}),e.jsx(P,{onOpenTrace:p,onOpenTerminal:u,onSteer:m})]})}function _({session:s,active:t,unread:o,needsYou:r,navigate:i}){const{route:c}=X(),l=H(s),d=(s.agentName??l)[0]?.toUpperCase()??"?",n=s.kind==="direct",h=q(s.workspaceRoot)??s.kind;return e.jsxs("button",{type:"button",className:["s-thread-rail-item",t&&"s-thread-rail-item--active",r&&"s-thread-rail-item--needs-you"].filter(Boolean).join(" "),onClick:()=>E(i,{view:"conversation",conversationId:s.id},{returnTo:c}),children:[n?e.jsx("div",{className:"s-thread-rail-avatar",style:{background:L(s.agentName??l)},children:d}):e.jsx("div",{className:"s-thread-rail-avatar s-thread-rail-avatar--channel",children:"#"}),e.jsxs("div",{className:"s-thread-rail-body",children:[e.jsx("span",{className:"s-thread-rail-name",children:l}),e.jsx("span",{className:"s-thread-rail-sub",children:h})]}),e.jsxs("div",{className:"s-thread-rail-trailing",children:[o&&!r&&e.jsx("span",{className:"s-thread-rail-presence-dot",style:{background:"var(--accent)"}}),r&&e.jsx("span",{className:"s-thread-rail-badge s-thread-rail-badge--amber",children:"!"})]})]})}function we({participants:s}){const c=s.map((l,d)=>{const n=2*Math.PI*d/s.length-Math.PI/2;return{...l,x:130+55*Math.cos(n),y:80+55*Math.sin(n)}});return e.jsx("div",{className:"s-thread-mini-mesh",children:e.jsxs("svg",{viewBox:"0 0 260 160","aria-label":"Conversation participant mesh",children:[c.map(l=>e.jsx("line",{x1:130,y1:80,x2:l.x,y2:l.y,className:"s-thread-mini-mesh-edge"},`edge-${l.id}`)),e.jsx("circle",{cx:130,cy:80,r:16,className:"s-thread-mini-mesh-node s-thread-mini-mesh-node--center"}),e.jsx("text",{x:130,y:80,className:"s-thread-mini-mesh-label s-thread-mini-mesh-label--center",children:"OP"}),c.map(l=>e.jsxs("g",{children:[e.jsx("circle",{cx:l.x,cy:l.y,r:16,className:"s-thread-mini-mesh-node",style:l.state==="in_turn"||l.state==="in_flight"?{stroke:"var(--green)"}:void 0}),e.jsx("text",{x:l.x,y:l.y,className:"s-thread-mini-mesh-label",children:l.name.slice(0,3).toUpperCase()})]},`node-${l.id}`))]})})}const Se=[42,76,54,88,34,66,92,48,72,38,84,58],Qe=Object.freeze(Object.defineProperty({__proto__:null,ChannelRail:Ne,PresenceSidebar:ye,ThreadLoadingSkeleton:be,ThreadMotionPanel:ke,WorkingTurnActions:P,WorkingTurnActivityPreview:R,WorkingTurnSteps:k},Symbol.toStringTag,{value:"Module"}));export{Qe as C,M as T,k as W,He as a,Ue as b,be as c,Je as d,ke as e,R as f,P as g,Ge as l,Ke as m,qe as o,Ve as s,Fe as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.s-thread-layout{display:flex;flex:1 1 0;height:100%;min-height:0;overflow:hidden;background:var(--bg)}.s-thread-rail{width:280px;flex-shrink:0;display:flex;flex-direction:column;background:color-mix(in srgb,var(--bg) 70%,black);border-right:1px solid var(--border);overflow:hidden}.s-thread-rail-scroll{flex:1;min-height:0;overflow-y:auto;padding-bottom:var(--space-2xl)}.s-thread-rail-section{padding:0}.s-thread-rail-section-label{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-xl) var(--space-2xl) var(--space-xs);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-lg);text-transform:uppercase;color:var(--dim);-webkit-user-select:none;user-select:none}.s-thread-rail-section--needs-you .s-thread-rail-section-label{color:var(--amber)}.s-thread-rail-item{position:relative;display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-2xl) var(--space-sm) var(--space-xl);cursor:pointer;border:none;background:transparent;width:100%;text-align:left;transition:background .1s ease;border-left:2px solid transparent}.s-thread-rail-item:hover{background:color-mix(in srgb,var(--ink) 4%,transparent)}.s-thread-rail-item--active{background:color-mix(in srgb,var(--accent) 6%,transparent);border-left-color:var(--accent)}.s-thread-rail-item--needs-you{background:color-mix(in srgb,var(--amber) 4%,transparent)}.s-thread-rail-item--needs-you:hover{background:color-mix(in srgb,var(--amber) 8%,transparent)}.s-thread-rail-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:600;color:var(--scout-chrome-avatar-ink);flex-shrink:0}.s-thread-rail-avatar--channel{background:color-mix(in srgb,var(--border) 60%,transparent);color:var(--muted);font-size:var(--text-lg);font-weight:400}.s-thread-rail-body{flex:1;min-width:0}.s-thread-rail-name{display:block;font-size:var(--text-md);font-weight:550;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.005em}.s-thread-rail-item--active .s-thread-rail-name{color:var(--ink);font-weight:600}.s-thread-rail-sub{display:block;font-size:var(--text-xs);color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}.s-thread-rail-trailing{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.s-thread-rail-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 var(--space-xs);border-radius:var(--radius-lg);background:var(--accent);color:var(--bg);font-size:var(--text-xs);font-weight:600;font-variant-numeric:tabular-nums}.s-thread-rail-badge--amber{background:var(--amber)}.s-thread-rail-presence-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.s-thread-center{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0;overflow:hidden;background:var(--bg)}.s-thread-center-header{display:flex;align-items:center;gap:var(--space-md);min-height:62px;padding:var(--space-md) var(--space-3xl);border-bottom:1px solid color-mix(in srgb,var(--border) 92%,var(--surface));background:var(--surface);flex-shrink:0}.s-thread-header-back{min-width:30px;height:30px;padding:0 var(--space-sm);border-color:color-mix(in srgb,var(--border) 34%,transparent);background:transparent;color:var(--muted);font-size:var(--text-xs);align-self:center}.s-thread-header-back:hover{background:color-mix(in srgb,var(--ink) 4%,transparent)}.s-thread-center-header-info{flex:1;min-width:0}.s-thread-center-header-name{display:block;font-size:var(--text-2xl);font-weight:650;letter-spacing:-.02em;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.s-thread-center-header-name{appearance:none;width:100%;padding:0;border:0;background:none;font-family:inherit;text-align:left;cursor:pointer}.s-thread-center-header-right{display:flex;align-items:center;gap:var(--space-sm);min-width:0;flex-shrink:0}.s-thread-participants{--fp-coin: 46px;--fp-lap: 9px;--fp-cut: 1px;--fp-step: calc(var(--fp-coin) - var(--fp-lap));--fp-sprite: 24px;--fp-badge: 14px;display:flex;align-items:center;min-width:0;max-width:min(48vw,520px)}.s-thread-participant{position:relative;z-index:var(--fp-z, 0);display:inline-flex;align-items:center;justify-content:center;width:var(--fp-coin);height:var(--fp-coin);flex:0 0 auto;padding:0;border:0;background:transparent;color:var(--muted)}.s-thread-participant+.s-thread-participant{margin-left:calc(var(--fp-lap) * -1)}.s-thread-participant-face{position:relative;display:grid;place-items:center;width:var(--fp-coin);height:var(--fp-coin);border-radius:50%;overflow:hidden;background:color-mix(in srgb,var(--ink) 7%,var(--surface));transition:background .16s ease,box-shadow .16s ease}.s-thread-participant+.s-thread-participant .s-thread-participant-face{--fp-carve: radial-gradient( circle at calc(50% - var(--fp-step)) 50%, transparent calc(var(--fp-coin) / 2 + var(--fp-cut)), #000 calc(var(--fp-coin) / 2 + var(--fp-cut) + .5px) );-webkit-mask-image:var(--fp-carve);mask-image:var(--fp-carve)}button.s-thread-participant{font:inherit;cursor:pointer}.s-thread-participants:hover .s-thread-participant-face{background:color-mix(in srgb,var(--ink) 12%,var(--surface));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 60%,transparent);transition-delay:calc(var(--fp-i, 0) * 26ms)}.s-thread-participant{transition:transform .18s cubic-bezier(.22,1,.36,1),filter .18s ease}.s-thread-participant:hover{z-index:40;transform:translateY(-3px);filter:drop-shadow(0 4px 8px color-mix(in srgb,var(--bg) 70%,transparent))}.s-thread-participant:hover .s-thread-participant-face{-webkit-mask-image:none;mask-image:none;background:color-mix(in srgb,var(--ink) 14%,var(--surface));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent) 55%,transparent);transition-delay:0s}.s-thread-participant:hover .s-thread-participant-avatar{transform:scale(1.1)}.s-thread-participant:hover .sprite-cell--eye circle{animation:s-thread-participant-glance .46s cubic-bezier(.34,1.4,.64,1) 1}@keyframes s-thread-participant-glance{0%{transform:translate(0)}30%{transform:translate(1.4px)}62%{transform:translate(-1.2px)}to{transform:translate(0)}}@media(prefers-reduced-motion:reduce){.s-thread-participant,.s-thread-participant-face,.s-thread-participant-avatar{transition:none}.s-thread-participant:hover,.s-thread-participant:hover .s-thread-participant-avatar{transform:none}.s-thread-participant:hover .sprite-cell--eye circle{animation:none}}.s-thread-participant-avatar{display:inline-flex;align-items:center;justify-content:center;width:var(--fp-sprite);height:var(--fp-sprite);flex:0 0 auto;transition:transform .18s cubic-bezier(.22,1,.36,1)}.s-thread-participant-harness{position:absolute;right:4px;bottom:-3px;display:grid;place-items:center;width:var(--fp-badge);height:var(--fp-badge);border-radius:50%;background:color-mix(in srgb,var(--ink) 18%,var(--surface));box-shadow:0 0 0 1.5px var(--surface);color:var(--muted);pointer-events:none;transition:color .16s ease}.s-thread-participant:hover .s-thread-participant-harness{color:var(--ink)}.s-thread-participant--operator .s-thread-participant-face{background:color-mix(in srgb,var(--surface) 70%,var(--bg));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 70%,transparent);color:var(--muted)}.s-thread-participant-face{--fp-suit: color-mix( in oklab, oklch(.62 .14 var(--fp-suit-hue, 260)) 22%, color-mix(in srgb, var(--ink) 13%, var(--surface)) );--fp-suit-light: color-mix( in oklab, oklch(.68 .16 var(--fp-suit-hue, 260)) 34%, color-mix(in srgb, var(--ink) 20%, var(--surface)) );--fp-visor: color-mix(in srgb, var(--ink) 9%, transparent);align-items:start}.s-thread-participant-suit{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}[data-scout-avatar-style=crew] .s-thread-participant-suit,[data-scout-avatar-style=chip] .s-thread-participant-suit{display:none}[data-scout-avatar-style=crew] .s-thread-participant-face,[data-scout-avatar-style=chip] .s-thread-participant-face{align-items:center;justify-content:center}[data-scout-avatar-style=crew] .s-thread-participant-avatar,[data-scout-avatar-style=chip] .s-thread-participant-avatar{align-self:center;margin-top:0;width:100%!important;height:100%!important}[data-scout-avatar-style=crew] .s-thread-participant-harness,[data-scout-avatar-style=chip] .s-thread-participant-harness{display:none}.s-thread-participant-avatar{align-self:start;margin-top:6px}.s-thread-participant:hover .s-thread-participant-avatar{transform:scale(1.08);transform-origin:50% 38%}.s-thread-participant-face--overflow{align-items:center}.s-thread-participant-harness{right:3px;bottom:2px;background:color-mix(in srgb,var(--ink) 15%,var(--surface));box-shadow:none;color:color-mix(in srgb,var(--ink) 44%,transparent);transform:scale(.9);transition:background .18s ease,color .18s ease,transform .2s cubic-bezier(.34,1.4,.64,1)}.s-thread-participants:hover .s-thread-participant-harness{background:color-mix(in srgb,var(--ink) 26%,var(--surface));color:color-mix(in srgb,var(--ink) 80%,transparent);transform:scale(1);transition-delay:calc(var(--fp-i, 0) * 26ms)}.s-thread-participant:hover .s-thread-participant-harness{background:color-mix(in srgb,var(--ink) 34%,var(--surface));color:var(--ink);transform:scale(1.08);transition-delay:0s}.s-thread-participant[data-state=in_turn]{z-index:50;transform:translateY(-3px)}.s-thread-participant[data-state=in_turn] .s-thread-participant-face{-webkit-mask-image:none;mask-image:none;background:color-mix(in srgb,var(--ink) 12%,var(--surface));animation:s-thread-participant-turn 2.6s ease-in-out infinite}.s-thread-participant[data-state=in_turn]+.s-thread-participant .s-thread-participant-face{-webkit-mask-image:none;mask-image:none}.s-thread-participant[data-state=in_turn] .s-thread-participant-harness{background:color-mix(in srgb,var(--ink) 30%,var(--surface));color:var(--ink);transform:scale(1)}@keyframes s-thread-participant-turn{0%,to{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent) 26%,transparent)}50%{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent) 72%,transparent)}}.s-thread-participant .sprite-cell--eye{transform-box:fill-box;transform-origin:50% 50%;animation:s-thread-participant-blink 7.2s ease-in-out infinite;animation-delay:calc(var(--fp-i, 0) * -1.73s)}@keyframes s-thread-participant-blink{0%,93%,to{transform:scaleY(1)}96%{transform:scaleY(.06)}}.s-thread-participant .sprite-cell--eye circle{transition:transform .12s cubic-bezier(.22,1,.36,1)}.s-thread-participant:hover .sprite-cell--eye circle{animation:s-thread-participant-widen .42s ease-out 1}.s-thread-participant[data-state=in_turn] .sprite-cell--eye circle{animation:s-thread-participant-dilate 2.6s ease-in-out infinite}@keyframes s-thread-participant-widen{0%,to{r:2.4px}42%{r:3px}}@keyframes s-thread-participant-dilate{0%,to{r:2.4px}50%{r:3.2px}}.s-thread-participant-avatar svg{transform-origin:50% 92%;transition:transform .22s cubic-bezier(.22,1,.36,1)}@media(prefers-reduced-motion:reduce){.s-thread-participant .sprite-cell--eye,.s-thread-participant .sprite-cell--eye circle,.s-thread-participant:hover .sprite-cell--eye circle,.s-thread-participant[data-state=in_turn] .sprite-cell--eye circle{animation:none;transition:none;transform:none!important}.s-thread-participant-avatar svg{transition:none;transform:none!important}.s-thread-participant[data-state=in_turn]{transform:none}.s-thread-participant[data-state=in_turn] .s-thread-participant-face{animation:none;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent) 55%,transparent)}}.s-thread-participant-face--overflow{padding-left:calc(var(--fp-lap) + var(--fp-cut));background:color-mix(in srgb,var(--surface) 80%,var(--bg));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--border) 55%,transparent);color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-variant-numeric:tabular-nums;letter-spacing:-.04em;white-space:nowrap}.s-thread-participant-observer{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:0 0 auto;margin-left:var(--space-xs);border:1px dashed color-mix(in srgb,var(--border) 60%,transparent);border-radius:50%;background:transparent;color:var(--dim)}.s-thread-participant-observer svg{opacity:.85}.s-thread-participant--button{appearance:none}.s-thread-participant-card{position:absolute;z-index:80;top:calc(100% + 8px);right:-8px;display:grid;width:max-content;min-width:168px;max-width:240px;gap:2px;padding:var(--space-sm) var(--space-md);border:1px solid color-mix(in srgb,var(--border) 72%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 96%,var(--bg));box-shadow:0 10px 26px color-mix(in srgb,var(--bg) 42%,transparent);color:var(--muted);font-size:var(--text-xs);line-height:1.35;text-align:left;pointer-events:none;opacity:0;visibility:hidden;transform:translateY(-3px);transition:opacity .12s ease,transform .16s cubic-bezier(.22,1,.36,1),visibility 0s linear .16s}.s-thread-participant-card strong{overflow:hidden;color:var(--ink);font-size:var(--text-sm);font-weight:650;text-overflow:ellipsis;white-space:nowrap}.s-thread-participant-card-action{margin-top:var(--space-2xs);color:var(--accent);font-weight:600}.s-thread-participant:hover .s-thread-participant-card,.s-thread-participant:focus-visible .s-thread-participant-card,.s-thread-participant-observer:hover .s-thread-participant-card,.s-thread-participant-observer:focus-visible .s-thread-participant-card{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}.s-thread-participant:focus-visible{z-index:40;outline:none;filter:drop-shadow(0 4px 8px color-mix(in srgb,var(--bg) 70%,transparent));transform:translateY(-3px)}.s-thread-participant:focus-visible .s-thread-participant-face{-webkit-mask-image:none;mask-image:none;background:color-mix(in srgb,var(--ink) 14%,var(--surface));box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 72%,transparent)}.s-thread-participant-observer{position:relative}.s-thread-participant-observer:hover,.s-thread-participant-observer:focus-visible{border-color:color-mix(in srgb,var(--accent) 54%,var(--border));color:var(--ink);outline:none}.s-thread-participant-observer .s-thread-participant-card{right:0}.s-thread-participant--compact-overflow,.s-thread-participant--narrow-overflow{display:none}.s-thread-participant-roster{position:absolute;z-index:90;top:calc(100% + 10px);right:0;display:grid;width:min(290px,calc(100vw - 32px));gap:var(--space-sm);padding:var(--space-md);border:1px solid color-mix(in srgb,var(--border) 74%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 97%,var(--bg));box-shadow:0 16px 38px color-mix(in srgb,var(--bg) 48%,transparent)}.s-thread-participant-roster-title{padding:0 var(--space-xs);color:var(--ink);font-size:var(--text-sm)}.s-thread-participant-roster-list{display:grid;max-height:min(360px,55vh);overflow-y:auto}.s-thread-participant-roster-row{display:flex;align-items:center;width:100%;min-width:0;gap:var(--space-sm);padding:var(--space-sm);border:0;border-radius:var(--radius-md);background:transparent;color:var(--ink);font:inherit;text-align:left}button.s-thread-participant-roster-row{cursor:pointer}button.s-thread-participant-roster-row:hover,button.s-thread-participant-roster-row:focus-visible{background:color-mix(in srgb,var(--accent) 9%,transparent);outline:none}.s-thread-participant-roster-row>span:last-child{display:grid;min-width:0}.s-thread-participant-roster-row strong,.s-thread-participant-roster-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-thread-participant-roster-row small{color:var(--muted);font-size:var(--text-xs)}.s-thread-participant-roster-avatar{width:24px;height:24px;flex:0 0 auto}@media(prefers-reduced-motion:reduce){.s-thread-participant-card{transition:none}.s-thread-participant:focus-visible{transform:none}}.s-thread-add-participant-trigger{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;flex-shrink:0;border:1px solid color-mix(in srgb,var(--border) 48%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--bg) 70%,transparent);color:var(--muted);cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.s-thread-add-participant-trigger:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--border));background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--ink)}.s-thread-add-participant-trigger.is-on{border-color:color-mix(in oklab,var(--ink) 45%,transparent);color:var(--ink)}.s-thread-identity-row{display:flex;align-items:center;gap:var(--space-xs);min-height:30px;padding:var(--space-2xs) var(--space-3xl);border-bottom:1px solid color-mix(in srgb,var(--border) 46%,transparent);background:color-mix(in srgb,var(--surface) 72%,var(--bg));overflow-x:auto;flex-shrink:0}.s-thread-identity-chip{display:inline-flex;align-items:center;gap:var(--space-xs);max-width:240px;min-height:20px;padding:0 var(--space-sm);border:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-radius:var(--radius-md);background:var(--bg);color:var(--muted);font:inherit;font-size:var(--text-xs);white-space:nowrap}button.s-thread-identity-chip{cursor:pointer}button.s-thread-identity-chip:hover{border-color:color-mix(in srgb,var(--accent) 32%,var(--border));color:var(--ink)}.s-thread-identity-chip span{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-md);text-transform:uppercase}.s-thread-identity-chip strong{min-width:0;overflow:hidden;text-overflow:ellipsis;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;color:var(--muted)}.s-thread-add-participant{margin:var(--space-md) var(--space-3xl) 0;padding:var(--space-lg) var(--space-xl);border:1px solid color-mix(in srgb,var(--accent) 18%,var(--border));border-radius:var(--radius-lg);background:color-mix(in srgb,var(--accent) 5%,var(--surface));display:flex;flex-direction:column;gap:var(--space-md)}.s-thread-add-participant-row{display:flex;align-items:flex-end;gap:var(--space-lg);flex-wrap:wrap}.s-thread-add-participant-field{display:flex;flex-direction:column;gap:var(--space-xs);flex:1;min-width:220px}.s-thread-add-participant-label{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--dim)}.s-thread-add-participant-select{width:100%;min-height:36px;border-radius:var(--radius-lg);border:1px solid color-mix(in srgb,var(--border) 86%,var(--surface));background:var(--bg);color:var(--ink);font:inherit;padding:0 var(--space-md)}.s-thread-add-participant-select:focus-visible{outline:none;border-color:color-mix(in srgb,var(--accent) 40%,var(--border));box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}.s-thread-add-participant-actions{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.s-thread-add-participant-error{font-size:var(--text-sm);color:var(--red)}.s-thread-pinned-ask{margin:var(--space-lg) var(--space-3xl) 0;padding:var(--space-lg) var(--space-xl);display:flex;align-items:flex-start;flex-wrap:wrap;gap:var(--space-lg);border:1px solid var(--border);border-radius:10px;background:var(--surface);box-shadow:0 2px 6px var(--shadow-soft)}.s-thread-pinned-ask-coin{flex:0 0 auto;display:inline-grid;place-items:center;margin-top:1px}.s-thread-pinned-ask-body{flex:1 1 260px;min-width:0}.s-thread-pinned-ask-eyebrow{display:block;font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-normal);letter-spacing:var(--tracking-xs);color:var(--dim)}.s-thread-pinned-ask-text{font-size:var(--text-lg);line-height:var(--leading-snug);color:var(--ink);margin:var(--space-2xs) 0 0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}.s-thread-pinned-ask-context{font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--muted);margin:var(--space-2xs) 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.s-thread-pinned-ask-actions{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap;margin-left:auto}.s-thread-pinned-ask-btn{display:inline-flex;align-items:center;gap:var(--space-xs);font-weight:600;letter-spacing:var(--tracking-xs)}.s-thread-approval-gate{margin:var(--space-lg) var(--space-3xl) 0;padding:var(--space-xl) var(--space-2xl);border:1px solid color-mix(in srgb,var(--amber) 40%,var(--border));border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 95%,transparent);box-shadow:0 0 16px color-mix(in srgb,var(--amber) 12%,transparent);display:flex;flex-direction:column;gap:var(--space-md)}.s-thread-approval-gate-head{display:flex;flex-direction:column;gap:var(--space-2xs)}.s-thread-approval-gate-title-wrap{display:flex;align-items:center;gap:var(--space-xs)}.s-thread-approval-gate-title{margin:0;font-size:var(--text-2xl);font-weight:600;color:var(--ink)}.s-thread-approval-gate-desc{margin:0;font-size:var(--text-md);color:var(--muted)}.s-thread-approval-gate-command,.s-thread-approval-gate-diff{padding:var(--space-sm) var(--space-md);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg) 85%,transparent);border:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.s-thread-approval-gate-code,.s-thread-approval-gate-diff-pre code{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink);white-space:pre-wrap;word-break:break-all}.s-thread-approval-gate-actions{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap;padding-top:var(--space-xs)}@keyframes s-thread-thinking-strip{0%{background-position:200% 0}to{background-position:-200% 0}}.s-thread-feed{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-3xl) var(--space-3xl) var(--space-2xl);align-items:stretch;background:linear-gradient(var(--bg) 2%,transparent 8%),linear-gradient(transparent 92%,var(--bg) 98%);background-attachment:local;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--border) 60%,transparent) transparent}.s-thread-feed::-webkit-scrollbar{width:4px}.s-thread-feed::-webkit-scrollbar-track{background:transparent}.s-thread-feed::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--border) 60%,transparent);border-radius:var(--radius-xs)}.s-thread-history-control{align-self:stretch;display:flex;justify-content:center;padding:0 0 var(--space-lg)}.s-thread-history-button{display:inline-flex;align-items:center;justify-content:center;min-height:30px;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border:1px solid color-mix(in srgb,var(--border) 82%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 82%,var(--bg));color:var(--muted);font:inherit;font-size:var(--text-xs);font-weight:600;cursor:pointer;transition:background .16s ease-out,border-color .16s ease-out,color .16s ease-out}.s-thread-history-button:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 30%,var(--border));background:color-mix(in srgb,var(--accent) 7%,var(--surface));color:var(--ink)}.s-thread-history-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.s-thread-history-button:disabled{cursor:default;opacity:.68}.s-thread-new-messages{position:sticky;bottom:var(--space-sm);z-index:1;align-self:center;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);min-height:30px;margin:calc(var(--space-sm) * -1) 0 0;padding:var(--space-sm) var(--space-lg);border:1px solid color-mix(in srgb,var(--accent) 48%,var(--border));border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 94%,var(--accent));color:var(--accent);font:inherit;font-size:var(--text-xs);font-weight:600;cursor:pointer;box-shadow:0 var(--space-sm) var(--space-xl) color-mix(in srgb,var(--bg) 42%,transparent);transition:background .16s ease-out,border-color .16s ease-out,color .16s ease-out}.s-thread-new-messages:hover{border-color:var(--accent);background:color-mix(in srgb,var(--surface) 86%,var(--accent));color:var(--ink)}.s-thread-new-messages:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.s-thread-history-spinner{width:11px;height:11px;border:1.5px solid color-mix(in srgb,currentColor 28%,transparent);border-top-color:currentColor;border-radius:50%;animation:s-thread-history-spin .7s linear infinite}@keyframes s-thread-history-spin{to{transform:rotate(360deg)}}.s-thread-feed-block{display:flex;flex-direction:column;gap:var(--space-xs);max-width:min(88%,760px)}.s-thread-feed-block--you{align-self:flex-end}.s-thread-msg-permalink{opacity:0;transition:opacity .15s;cursor:pointer;color:var(--muted);background:transparent;border:none;width:22px;height:22px;padding:0;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center}.s-thread-msg-actions{display:contents}.s-thread-msg-card:hover .s-thread-msg-permalink{opacity:1}.s-thread-msg-permalink:focus-visible{opacity:1;outline:2px solid color-mix(in srgb,var(--accent) 50%,transparent);outline-offset:1px}.s-thread-msg-permalink:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 7%,transparent)}@media(hover:none){.s-thread-msg-permalink{opacity:.72}}.s-thread-compose-reply{display:grid;grid-template-columns:auto auto auto minmax(0,1fr) auto;align-items:center;gap:var(--space-xs);min-width:0;color:var(--muted);font-size:var(--text-xs);line-height:var(--leading-tight)}.s-thread-compose-reply-icon{flex:none;color:var(--accent)}.s-thread-compose-reply-label{color:var(--dim)}.s-thread-compose-reply-actor{color:var(--ink);font-family:var(--font-mono);font-weight:600;white-space:nowrap}.s-thread-compose-reply-preview{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted)}.s-thread-compose-reply-cancel{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin:calc(var(--space-2xs) * -1);padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--dim);cursor:pointer}.s-thread-compose-reply-cancel:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 7%,transparent)}.s-thread-compose-reply-cancel:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 50%,transparent);outline-offset:1px}.s-thread-msg-dismiss{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;color:color-mix(in srgb,var(--amber) 78%,var(--muted));background:color-mix(in srgb,var(--amber) 6%,transparent);border:1px solid color-mix(in srgb,var(--amber) 28%,transparent);border-radius:var(--radius-md);cursor:pointer}.s-thread-msg-dismiss:hover{color:var(--ink);background:color-mix(in srgb,var(--amber) 12%,transparent);border-color:color-mix(in srgb,var(--amber) 45%,transparent)}.s-thread-feed-block--full-width{max-width:100%;align-self:stretch}.s-thread-feed-block--full-width.s-thread-feed-block--you{align-items:flex-end}.s-thread-feed-block--full-width.s-thread-feed-block--you .s-thread-day-divider{align-self:stretch}.s-thread-feed-block--full-width.s-thread-feed-block--you .s-thread-msg{max-width:min(88%,760px)}.s-thread-day-divider{display:flex;align-items:center;gap:var(--space-xl);margin:var(--space-lg) 0}.s-thread-day-line{flex:1;height:1px;background:color-mix(in srgb,var(--border) 40%,transparent)}.s-thread-day-label{flex-shrink:0;font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--muted)}.s-thread-msg{max-width:min(100%,760px)}.s-thread-msg-card{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) var(--space-xl);border-radius:var(--radius-2xl);border:1px solid color-mix(in srgb,var(--border) 80%,var(--surface));background:var(--surface)}.s-thread-msg-card-content{min-width:0;display:flex;flex-direction:column;gap:var(--space-sm)}.s-thread-msg-card--avatar-row{flex-direction:row;gap:var(--space-lg);align-items:flex-start}.s-thread-msg-card--avatar-row .s-thread-msg-card-content{flex:1}.s-thread-msg-avatar{--size: 28px;display:inline-flex;align-items:center;justify-content:center;width:var(--size);height:var(--size);flex-shrink:0;margin-top:0;border-radius:50%;overflow:hidden}.s-thread-msg-avatar--working{--size: 32px}.s-thread-msg-avatar--nav{--size: 28px;display:inline-flex;width:var(--size);height:var(--size);align-items:center;justify-content:center;flex-shrink:0;border:none;background:transparent;padding:0;cursor:pointer;border-radius:50%;transition:transform .15s cubic-bezier(.2,0,0,1),box-shadow .15s ease}.s-thread-msg-avatar--nav:hover{transform:scale(1.05);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 28%,transparent)}.s-thread-msg-avatar--nav:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.s-thread-msg--you .s-thread-msg-card{border-color:color-mix(in srgb,var(--accent) 18%,var(--border));background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.s-thread-msg-header{display:flex;align-items:flex-start;gap:var(--space-md)}.s-thread-msg-meta{display:flex;align-items:center;flex:1;flex-wrap:wrap;min-width:0;gap:var(--space-sm)}.s-thread-msg-actor{min-width:0;font-size:var(--text-md);font-weight:600;letter-spacing:0;color:var(--ink)}button.s-thread-msg-actor{background:transparent;border:none;padding:0;cursor:pointer;font-family:inherit;text-align:left;border-radius:var(--radius-sm);transition:color .1s ease,text-decoration-color .1s ease;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:3px}button.s-thread-msg-actor:hover{color:var(--accent);text-decoration-color:color-mix(in srgb,var(--accent) 60%,transparent)}button.s-thread-msg-actor:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.s-thread-msg-handle{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:var(--text-xs);color:var(--dim);font-family:var(--font-mono)}.s-thread-msg-kind{display:inline-flex;align-items:center;min-height:20px;padding:0 var(--space-sm);border-radius:var(--radius-md);border:1px solid color-mix(in srgb,var(--border) 70%,var(--surface));background:var(--bg);font-size:var(--text-xs);font-weight:500;letter-spacing:var(--tracking-xs);color:var(--dim);font-family:var(--font-mono)}.s-thread-msg-time{flex-shrink:0;font-size:var(--text-xs);font-family:var(--font-sans);color:var(--dim);opacity:.85;transition:opacity .12s ease;margin-left:auto}.s-thread-msg-card:hover .s-thread-msg-time{opacity:1}.s-thread-msg-body{padding:0;border:none;background:none;font-size:var(--text-md);line-height:var(--leading-normal);color:var(--ink);letter-spacing:0;white-space:pre-wrap;word-break:break-word;cursor:text;user-select:text;-webkit-user-select:text}.s-thread-msg-body .s-inline-code{border-color:color-mix(in srgb,var(--border) 62%,transparent);background:color-mix(in srgb,var(--ink) 5%,transparent);color:color-mix(in srgb,var(--ink) 82%,var(--muted))}.s-thread-reply-ctx{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin:0 0 5px;padding:0;border:none;background:none;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim);cursor:pointer}.s-thread-reply-ctx svg{flex:none;color:var(--dim);transition:color .12s ease}.s-thread-reply-ctx-label{flex:none;text-transform:uppercase;letter-spacing:var(--tracking-xs);font-weight:700}.s-thread-reply-ctx-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);transition:color .12s ease}.s-thread-reply-ctx-from,.s-thread-reply-ctx-status{flex:none;color:var(--dim)}.s-thread-reply-ctx:hover .s-thread-reply-ctx-title{color:var(--accent);text-decoration:underline}.s-thread-reply-ctx:hover svg{color:var(--accent)}.s-thread-reply-ctx:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 55%,transparent);outline-offset:2px;border-radius:var(--radius-sm)}.s-thread-fanout{align-self:stretch}.s-thread-fanout-anchor{display:block;height:0;scroll-margin-block:var(--space-2xl)}.s-thread-fanout-summary{display:inline-flex;align-items:baseline;gap:var(--space-sm);padding:var(--space-2xs) var(--space-sm);margin-left:calc(var(--space-sm) * -1);border:none;border-radius:var(--radius-sm);background:none;color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-xs);cursor:pointer;transition:color .12s ease,background .12s ease}.s-thread-fanout-summary:hover{background:color-mix(in srgb,var(--ink) 4%,transparent);color:var(--muted)}.s-thread-fanout-summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.s-thread-fanout-caret{flex:none;width:8px}.s-thread-fanout-label{font-weight:650;text-transform:uppercase}.s-thread-fanout-time{color:color-mix(in srgb,var(--dim) 78%,transparent)}.s-thread-fanout-detail{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-sm) 0 var(--space-md) var(--space-lg);border-left:1px solid color-mix(in srgb,var(--border) 55%,transparent)}.s-thread-fanout-recipients{display:flex;flex-wrap:wrap;gap:var(--space-2xs) var(--space-sm);margin:0;padding:0;list-style:none}.s-thread-fanout-recipient{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted)}.s-thread-fanout-body{max-width:68ch;font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--muted);white-space:pre-wrap;word-break:break-word}.s-thread-msg--flash .s-thread-msg-card,.s-thread-fanout--flash .s-thread-fanout-summary{animation:s-thread-msg-flash 1.2s ease}@keyframes s-thread-msg-flash{0%,35%{background:color-mix(in srgb,var(--accent) 12%,transparent)}to{background:transparent}}.s-thread-msg--tool .s-thread-msg-card{border-style:dashed;border-color:color-mix(in srgb,var(--border) 60%,transparent);background:var(--bg)}.s-thread-msg--tool .s-thread-msg-body:before{content:"›_";font-family:var(--font-mono);color:var(--dim);margin-right:var(--space-xs)}.s-thread-msg[data-class=status] .s-thread-msg-card,.s-thread-msg[data-class="scout.dispatch"] .s-thread-msg-card{border-color:color-mix(in srgb,var(--accent) 12%,var(--border))}.s-thread-feed-block:has(>.s-thread-msg[data-class=system]),.s-thread-feed-block:has(>.s-thread-msg[data-class=status]){max-width:min(72%,560px);align-self:center}.s-thread-msg[data-class=system] .s-thread-msg-card,.s-thread-msg[data-class=status] .s-thread-msg-card{gap:var(--space-3xs);padding:var(--space-xs) var(--space-lg);border-radius:var(--radius-lg);border-color:color-mix(in srgb,var(--border) 60%,transparent);background:color-mix(in srgb,var(--bg) 80%,transparent)}.s-thread-msg[data-class=system] .s-thread-msg-avatar,.s-thread-msg[data-class=status] .s-thread-msg-avatar{--size: 18px;margin-top:1px;opacity:.55}.s-thread-presence-line-avatar{display:inline-flex;width:20px;height:20px}.s-thread-msg[data-class=system] .s-thread-msg-actor,.s-thread-msg[data-class=status] .s-thread-msg-actor{font-size:var(--text-sm);font-weight:500;color:var(--dim);text-transform:uppercase;letter-spacing:var(--tracking-md)}.s-thread-msg[data-class=system] .s-thread-msg-handle,.s-thread-msg[data-class=status] .s-thread-msg-handle{display:none}.s-thread-msg[data-class=system] .s-thread-msg-kind,.s-thread-msg[data-class=status] .s-thread-msg-kind{min-height:16px;padding:0 var(--space-xs);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase;border-color:color-mix(in srgb,var(--border) 50%,transparent);color:var(--dim)}.s-thread-msg[data-class=system] .s-thread-msg-time,.s-thread-msg[data-class=status] .s-thread-msg-time{font-size:var(--text-2xs)}.s-thread-msg[data-class=system] .s-thread-msg-body,.s-thread-msg[data-class=status] .s-thread-msg-body{font-size:var(--text-sm);line-height:var(--leading-snug);color:var(--muted)}.s-thread-failure-notice{display:grid;grid-template-columns:16px minmax(0,1fr) max-content;align-items:start;gap:var(--space-sm);width:100%;padding:var(--space-xs) var(--space-2xs)}.s-thread-failure-notice-mark{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-top:1px;border:1px solid color-mix(in srgb,var(--red) 44%,transparent);border-radius:50%;color:color-mix(in srgb,var(--red) 80%,var(--ink));font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:700;line-height:1}.s-thread-failure-notice-content{min-width:0}.s-thread-failure-notice-content p{margin:0;color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.s-thread-failure-notice-content strong{color:var(--ink);font-weight:600}.s-thread-failure-notice-time{padding-top:1px;color:var(--dim);font-size:var(--text-2xs);white-space:nowrap}.s-thread-failure-notice-details{margin-top:var(--space-2xs);color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs)}.s-thread-failure-notice-details summary{width:max-content;max-width:100%;cursor:pointer;-webkit-user-select:none;user-select:none}.s-thread-failure-notice-details summary:hover{color:var(--muted)}.s-thread-failure-notice-details summary:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--accent);outline-offset:2px}.s-thread-failure-notice-details pre{max-width:100%;margin:var(--space-sm) 0 0;padding:var(--space-sm) var(--space-md);overflow-x:auto;border:1px solid color-mix(in srgb,var(--border) 56%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--bg) 82%,transparent);color:var(--dim);font:inherit;line-height:var(--leading-normal);white-space:pre-wrap;overflow-wrap:anywhere}.s-thread-failure-notice-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm);margin-top:var(--space-sm)}.s-thread-failure-notice-action{min-height:24px;padding:2px var(--space-sm);border:1px solid color-mix(in srgb,var(--border) 72%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 84%,transparent);color:var(--muted);font:600 var(--text-2xs)/var(--leading-normal) var(--font-sans);cursor:pointer}.s-thread-failure-notice-action--primary{border-color:color-mix(in srgb,var(--accent) 34%,var(--border));background:color-mix(in srgb,var(--accent) 9%,transparent);color:color-mix(in srgb,var(--accent) 76%,var(--ink))}.s-thread-failure-notice-action--clear{min-height:24px;padding:0;border:0;background:transparent;color:var(--dim)}.s-thread-failure-notice-action:hover:not(:disabled){color:var(--ink)}.s-thread-failure-notice-action:disabled{cursor:not-allowed;opacity:.44}.s-thread-failure-notice-action:focus-visible{border-radius:var(--radius-sm);outline:2px solid var(--accent);outline-offset:2px}@media(max-width:700px){.s-thread-failure-notice{grid-template-columns:16px minmax(0,1fr)}.s-thread-failure-notice-action{min-height:44px;padding-inline:var(--space-md)}.s-thread-failure-notice-action--clear{padding-inline:var(--space-sm)}.s-thread-failure-notice-time{grid-column:2}}.s-thread-msg-working-card{border-color:color-mix(in srgb,var(--green) 12%,var(--border));background:color-mix(in srgb,var(--green) 2%,var(--surface))}.s-thread-msg-working-card.s-thread-msg-card--avatar-row{gap:var(--space-4xl)}.s-thread-msg-avatar--working{--sprite-lane: 16px;--sprite-stride: 4.5s;--sprite-hop-every: 150s;animation:s-thread-sprite-walk var(--sprite-stride) ease-in-out infinite alternate}.s-thread-msg-avatar--working>span{animation:s-thread-sprite-step calc(var(--sprite-stride) / 5) ease-in-out infinite}.s-thread-msg-avatar--working svg{transform-origin:50% 100%;animation:s-thread-sprite-hop var(--sprite-hop-every) linear infinite}@keyframes s-thread-sprite-walk{0%{transform:translateZ(0)}to{transform:translate3d(var(--sprite-lane),0,0)}}@keyframes s-thread-sprite-step{0%,to{transform:translateZ(0)}50%{transform:translate3d(0,-1.5px,0)}}@keyframes s-thread-sprite-hop{0%,99%{transform:translateZ(0) scaleY(1)}99.2%{transform:translateZ(0) scaleY(.9)}99.45%{transform:translate3d(0,-7px,0) scaleY(1.05)}99.7%{transform:translateZ(0) scaleY(.94)}to{transform:translateZ(0) scaleY(1)}}@media(prefers-reduced-motion:reduce){.s-thread-msg-avatar--working,.s-thread-msg-avatar--working>span,.s-thread-msg-avatar--working svg{animation:none}}.s-thread-msg-working-body{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-sm);padding:0;border:none;background:none}.s-thread-msg-working-copy{display:-webkit-box;color:var(--ink);font-size:var(--text-md);line-height:var(--leading-snug);overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.s-thread-turn-snapshot{display:flex;align-items:flex-start;gap:var(--space-sm);min-width:0}.s-thread-turn-snapshot-pulse{position:relative;width:9px;height:9px;flex:0 0 auto;margin-top:16px;border-radius:var(--radius-pill);background:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 12%,transparent)}.s-thread-turn-snapshot-pulse:after{content:"";position:absolute;inset:-5px;border-radius:inherit;border:1px solid color-mix(in srgb,var(--green) 38%,transparent);animation:s-thread-turn-pulse 1.8s ease-out infinite}.s-thread-turn-snapshot-main{display:flex;min-width:0;flex:1;flex-direction:column;gap:var(--space-3xs)}.s-thread-turn-snapshot-label{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-md);text-transform:uppercase}.s-thread-turn-snapshot-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:var(--space-3xs) 0 0;padding:var(--space-sm) 0 0;border-top:1px solid color-mix(in srgb,var(--green) 12%,transparent)}.s-thread-turn-snapshot-stat{min-width:0;padding-right:var(--space-md)}.s-thread-turn-snapshot-stat+.s-thread-turn-snapshot-stat{padding-left:var(--space-md);border-left:1px solid color-mix(in srgb,var(--border) 54%,transparent)}.s-thread-turn-snapshot-stat dt{margin:0 0 var(--space-3xs);color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-md);text-transform:uppercase}.s-thread-turn-snapshot-stat dd{margin:0;color:var(--muted);font-size:var(--text-sm);font-weight:600;line-height:var(--leading-tight);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-thread-working-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs);padding-top:var(--space-sm);border-top:1px solid color-mix(in srgb,var(--border) 46%,transparent)}.s-thread-working-actions--compact{padding-top:var(--space-xs)}.s-thread-working-action{min-height:30px;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);padding:0 var(--space-md);border:1px solid color-mix(in srgb,var(--border) 78%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 84%,var(--bg));color:var(--muted);font:inherit;font-size:var(--text-xs);font-weight:650;cursor:pointer;transition:border-color .14s ease-out,background .14s ease-out,color .14s ease-out}.s-thread-working-action--primary{border-color:color-mix(in srgb,var(--accent) 30%,var(--border));background:color-mix(in srgb,var(--accent) 9%,var(--surface));color:color-mix(in srgb,var(--accent) 72%,var(--ink))}.s-thread-working-action:hover{border-color:color-mix(in srgb,var(--accent) 38%,var(--border));background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--ink)}.s-thread-working-action:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.s-thread-typing-indicator{display:inline-flex;gap:var(--space-3xs);align-items:center}.s-thread-typing-dot{width:4px;height:4px;border-radius:50%;background:var(--green);animation:s-thread-typing-bounce var(--motion-duration-typing) ease-in-out infinite}.s-thread-typing-dot:nth-child(2){animation-delay:.15s}.s-thread-typing-dot:nth-child(3){animation-delay:.3s}@keyframes s-thread-typing-bounce{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}@keyframes s-thread-turn-pulse{0%{opacity:.5;transform:scale(.72)}to{opacity:0;transform:scale(1.35)}}.s-thread-presence-line{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-3xl);border-top:1px solid color-mix(in srgb,var(--border) 40%,transparent);flex-shrink:0}.s-thread-presence-line-avatars{display:flex;align-items:center}.s-thread-presence-line-avatars .s-ops-avatar{--size: 20px;margin-left:-4px;border:2px solid var(--bg)}.s-thread-presence-line-avatars .s-ops-avatar:first-child{margin-left:0}.s-thread-presence-line-label{min-width:0;flex:0 1 auto;font-size:var(--text-sm);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-thread-presence-strip{--presence-trail-start: 46%;--presence-trail-duration: 2.4s;flex:1;height:2px;border-radius:1px;background:linear-gradient(90deg,transparent 0%,transparent var(--presence-trail-start),color-mix(in srgb,var(--green) 12%,transparent) calc(var(--presence-trail-start) + 4%),color-mix(in srgb,var(--green) 44%,transparent) 53%,var(--green) 58%,color-mix(in srgb,var(--green) 72%,var(--ink)) 59%,transparent 61%,transparent 100%);background-size:200% 100%;animation:s-thread-thinking-strip var(--presence-trail-duration) ease-in-out infinite}.s-thread-presence-strip--sustained{--presence-trail-start: 32%;--presence-trail-duration: 3.2s}.s-thread-presence-strip--long{--presence-trail-start: 14%;--presence-trail-duration: 4.2s}@media(prefers-reduced-motion:reduce){.s-thread-presence-strip{background:color-mix(in srgb,var(--green) 58%,transparent);background-size:auto;animation:none;opacity:.8}}.s-thread-dispatch{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-sm);margin-top:var(--space-3xs)}.s-thread-dispatch-tile{display:flex;flex-direction:column;gap:var(--space-2xs);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-xl);border:1px solid color-mix(in srgb,var(--border) 92%,var(--surface));background:var(--bg);cursor:pointer;transition:border-color .12s ease,background .12s ease}.s-thread-dispatch-tile:hover{border-color:color-mix(in srgb,var(--accent) 18%,var(--border));background:color-mix(in srgb,var(--accent) 4%,var(--surface))}.s-thread-dispatch-tile-id{font-size:var(--text-md);font-weight:600;color:var(--ink);font-family:var(--font-mono)}.s-thread-dispatch-tile-state{font-size:var(--text-xs);color:var(--muted)}.s-thread-dispatch-tile-meta{font-size:var(--text-xs);color:var(--dim)}.s-thread-compose{box-sizing:border-box;width:100%;min-width:0;padding:var(--space-md) var(--space-3xl) var(--space-2xl);border-top:1px solid color-mix(in srgb,var(--border) 40%,transparent);background:transparent;flex-shrink:0;margin-top:auto}.s-thread-compose-shell{position:relative;box-sizing:border-box;width:100%;max-width:100%;min-width:0;border:1px solid color-mix(in srgb,var(--border) 60%,var(--surface));border-radius:var(--radius-xl);background:var(--surface);transition:border-color .15s ease}.s-thread-compose-shell:focus-within{border-color:color-mix(in srgb,var(--border) 100%,transparent)}.s-thread-compose-row{display:flex;align-items:flex-end;gap:var(--space-sm);min-width:0;padding:var(--space-xs) var(--space-sm) var(--space-xs) var(--space-xs)}.s-thread-compose-voice-status{display:flex;align-items:center;gap:var(--space-xs);padding:0 var(--space-md) var(--space-sm);font-size:var(--text-xs);color:var(--dim);line-height:var(--leading-snug)}.s-thread-compose-voice-status--recording{color:var(--green)}.s-thread-compose-voice-status--processing{color:var(--muted)}.s-thread-compose-voice-status--error{color:var(--red)}.s-thread-compose-mode-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);padding:var(--space-md) var(--space-lg) 0}.s-thread-compose-mode{flex-shrink:0;display:flex;gap:0;padding:var(--space-3xs);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg) 82%,var(--surface))}.s-thread-compose-mode-btn{padding:var(--space-2xs) var(--space-lg);font-size:var(--text-sm);font-weight:500;border:none;border-radius:var(--radius-md);background:transparent;color:var(--muted);cursor:pointer;transition:background .12s,color .12s}.s-thread-compose-mode-btn[aria-pressed=true]{background:var(--surface);color:var(--ink);font-weight:600}.s-thread-compose-mode-detail{font-size:var(--text-xs);color:var(--dim);line-height:var(--leading-snug)}.s-thread-compose-input{display:block;flex:1;min-width:0;min-height:34px;max-height:160px;border:none;border-radius:0;background:transparent;padding:var(--space-sm) var(--space-2xs) var(--space-sm) var(--space-md);font-size:var(--text-lg);font-family:var(--font-sans);line-height:var(--leading-normal);color:var(--ink);resize:none;outline:none;cursor:text;user-select:text;-webkit-user-select:text}.s-thread-compose-input::placeholder{color:var(--dim)}.s-thread-compose-input:focus{box-shadow:none}.s-thread-compose-send{width:34px;height:34px;border-radius:50%;border:none;background:var(--ink);color:var(--bg);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;align-self:flex-end;transition:opacity .12s ease,transform .12s ease}.s-thread-compose-send:not(:disabled):hover{transform:scale(1.05)}.s-thread-compose-send:disabled{opacity:.25;cursor:default}.s-thread-compose-send--stop{background:var(--red)}.s-thread-compose-suggest{position:absolute;left:0;right:0;bottom:calc(100% + 6px);max-height:260px;overflow-y:auto;padding:var(--space-2xs);background:var(--surface);border:1px solid color-mix(in srgb,var(--border) 80%,transparent);border-radius:var(--radius-xl);box-shadow:0 12px 32px color-mix(in srgb,var(--ink) 22%,transparent);z-index:20}.s-thread-compose-suggest-label{padding:var(--space-xs) var(--space-md) var(--space-2xs);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-lg);text-transform:uppercase;color:var(--dim)}.s-thread-compose-suggest-item{display:flex;align-items:center;gap:var(--space-md);width:100%;padding:var(--space-xs) var(--space-md);border:none;border-radius:var(--radius-lg);background:transparent;color:var(--ink);text-align:left;cursor:pointer;font-family:inherit}.s-thread-compose-suggest-item:hover,.s-thread-compose-suggest-item--active{background:color-mix(in srgb,var(--accent) 10%,transparent)}.s-thread-compose-suggest-cmd{font-family:var(--font-mono);font-size:var(--text-md);color:var(--ink)}.s-thread-compose-suggest-desc{flex:1;min-width:0;font-size:var(--text-sm);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-thread-compose-suggest-avatar{flex-shrink:0}.s-thread-sidebar{width:320px;flex-shrink:0;display:flex;flex-direction:column;gap:0;border-left:1px solid var(--border);background:var(--surface);overflow-y:auto}.s-thread-sidebar-section{padding:var(--space-2xl);border-bottom:1px solid color-mix(in srgb,var(--border) 60%,transparent)}.s-thread-sidebar-section:last-child{border-bottom:none}.s-thread-sidebar-label{font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:var(--tracking-lg);text-transform:uppercase;color:var(--dim);margin-bottom:var(--space-lg)}.s-thread-sidebar-participant{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-xs) 0;width:100%;border:0;background:transparent;color:inherit;font:inherit;text-align:left;border-radius:var(--radius-lg)}button.s-thread-sidebar-participant{cursor:pointer}button.s-thread-sidebar-participant:hover{background:color-mix(in srgb,var(--ink) 5%,transparent)}button.s-thread-sidebar-participant:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 72%,transparent);outline-offset:2px}.s-thread-sidebar-participant-info{flex:1;min-width:0}.s-thread-sidebar-participant-name{display:block;font-size:var(--text-md);font-weight:600;color:var(--ink)}.s-thread-sidebar-participant-handle{display:block;font-size:var(--text-xs);color:var(--dim);font-family:var(--font-mono);margin-top:1px}.s-thread-sidebar-participant-detail{font-size:var(--text-xs);color:var(--dim)}.s-thread-sidebar-participant-activity{display:flex;align-items:center;gap:var(--space-2xs);flex-shrink:0}.s-thread-sidebar-activity-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.s-thread-sidebar-activity-dot--pulse{animation:s-thread-sidebar-pulse 1.5s ease-in-out infinite}@keyframes s-thread-sidebar-pulse{0%,to{opacity:1}50%{opacity:.3}}.s-thread-sidebar-activity-label{font-size:var(--text-xs);color:var(--muted);font-family:var(--font-mono);letter-spacing:var(--tracking-xs)}.s-thread-mini-mesh{display:flex;align-items:center;justify-content:center;padding:var(--space-sm) 0}.s-thread-mini-mesh svg{width:100%;max-width:260px;height:auto}.s-thread-mini-mesh-edge{stroke:color-mix(in srgb,var(--border) 80%,transparent);stroke-width:1;fill:none}.s-thread-mini-mesh-node{fill:var(--surface);stroke:var(--border);stroke-width:1}.s-thread-mini-mesh-node--center{fill:color-mix(in srgb,var(--accent) 10%,var(--surface));stroke:var(--accent)}.s-thread-mini-mesh-label{font-family:var(--font-mono);font-size:var(--text-3xs);letter-spacing:var(--tracking-md);text-transform:uppercase;fill:var(--dim);text-anchor:middle;dominant-baseline:central}.s-thread-mini-mesh-label--center{fill:var(--accent);font-weight:600}.s-thread-empty{align-self:center;width:min(100%,540px);padding:var(--space-6xl) var(--space-4xl);border:1px dashed color-mix(in srgb,var(--border) 84%,var(--surface));border-radius:var(--radius-2xl);background:var(--surface);text-align:center}.s-thread-empty p:first-child{font-size:var(--text-xl);font-weight:600;color:var(--muted)}.s-thread-empty p:last-child{font-size:var(--text-md);color:var(--dim);margin-top:var(--space-2xs)}.s-thread-empty-glyph{font-size:var(--text-6xl);font-weight:100;color:color-mix(in srgb,var(--border) 90%,var(--muted));line-height:var(--leading-none);margin-bottom:var(--space-lg);-webkit-user-select:none;user-select:none}.s-thread-empty-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-xs);margin-top:var(--space-lg)}.s-thread-empty-chip{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim);background:color-mix(in srgb,var(--border) 30%,transparent);border:1px solid color-mix(in srgb,var(--border) 50%,transparent);border-radius:var(--radius-sm);padding:var(--space-3xs) var(--space-sm);letter-spacing:var(--tracking-sm)}.s-thread-motion-panel{align-self:center;width:min(100%,640px);position:relative;display:grid;gap:var(--space-lg);padding:var(--space-3xl);overflow:hidden;border:1px solid color-mix(in srgb,var(--green) 24%,var(--border));border-radius:var(--radius-lg);background:linear-gradient(180deg,color-mix(in srgb,var(--green) 8%,transparent),transparent 58%),color-mix(in srgb,var(--surface) 92%,var(--bg));box-shadow:inset 0 1px color-mix(in srgb,white 5%,transparent),0 16px 44px color-mix(in srgb,black 18%,transparent)}.s-thread-motion-panel:before{content:"";position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--green) 80%,white),transparent);background-size:180% 100%;animation:s-thread-motion-scan 1.7s ease-in-out infinite}.s-thread-motion-panel--pending{border-color:color-mix(in srgb,var(--accent) 26%,var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 8%,transparent),transparent 58%),color-mix(in srgb,var(--surface) 92%,var(--bg))}.s-thread-motion-panel--pending:before{background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 82%,white),transparent)}.s-thread-motion-panel--quiet{border-color:color-mix(in srgb,var(--amber) 34%,var(--border));background:linear-gradient(180deg,color-mix(in srgb,var(--amber) 8%,transparent),transparent 58%),color-mix(in srgb,var(--surface) 92%,var(--bg))}.s-thread-motion-panel--quiet:before{background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--amber) 82%,white),transparent)}.s-thread-motion-head{min-width:0;display:grid;grid-template-columns:32px minmax(0,1fr);gap:var(--space-md);align-items:start}.s-thread-motion-beacon{position:relative;width:28px;height:28px;display:grid;place-items:center;color:var(--green)}.s-thread-motion-panel--pending .s-thread-motion-beacon{color:var(--accent)}.s-thread-motion-panel--quiet .s-thread-motion-beacon{color:var(--amber)}.s-thread-motion-beacon span{width:9px;height:9px;border-radius:var(--radius-pill);background:currentColor;box-shadow:0 0 0 5px color-mix(in srgb,currentColor 12%,transparent)}.s-thread-motion-beacon:after{content:"";position:absolute;inset:4px;border:1px solid currentColor;border-radius:var(--radius-pill);opacity:.45;animation:s-thread-motion-ping 1.8s ease-out infinite}.s-thread-motion-title-block{min-width:0}.s-thread-motion-kicker{margin-bottom:var(--space-2xs);color:var(--green);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--tracking-xl);text-transform:uppercase}.s-thread-motion-panel--pending .s-thread-motion-kicker{color:var(--accent)}.s-thread-motion-panel--quiet .s-thread-motion-kicker{color:var(--amber)}.s-thread-motion-title-block h2{margin:0;color:var(--ink);font-size:var(--text-3xl);font-weight:700;letter-spacing:0;line-height:var(--leading-tight)}.s-thread-motion-title-block p{display:-webkit-box;margin:var(--space-2xs) 0 0;overflow:hidden;color:var(--muted);font-size:var(--text-md);line-height:var(--leading-snug);-webkit-box-orient:vertical;-webkit-line-clamp:2}.s-thread-motion-meter{height:52px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;gap:var(--space-2xs);padding:var(--space-sm);border:1px solid color-mix(in srgb,var(--border) 44%,transparent);border-radius:var(--radius-md);background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 4%,transparent),transparent),color-mix(in srgb,var(--bg) 64%,transparent)}.s-thread-motion-meter span{height:var(--bar-height);min-height:8px;border-radius:var(--radius-pill);background:color-mix(in srgb,var(--green) 76%,var(--ink));opacity:.54;animation:s-thread-motion-bar 1.18s ease-in-out infinite;animation-delay:var(--bar-delay)}.s-thread-motion-panel--pending .s-thread-motion-meter span{background:color-mix(in srgb,var(--accent) 82%,var(--ink))}.s-thread-motion-panel--quiet .s-thread-motion-meter span{background:color-mix(in srgb,var(--amber) 82%,var(--ink))}.s-thread-motion-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0;padding:var(--space-sm) 0 0;border-top:1px solid color-mix(in srgb,var(--border) 42%,transparent)}.s-thread-motion-stats div{min-width:0;padding-right:var(--space-md)}.s-thread-motion-stats div+div{padding-left:var(--space-md);border-left:1px solid color-mix(in srgb,var(--border) 46%,transparent)}.s-thread-motion-stats dt,.s-thread-motion-latest span,.s-thread-motion-event-kind,.s-thread-motion-waiting span{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--tracking-md);text-transform:uppercase}.s-thread-motion-stats dd{margin:var(--space-2xs) 0 0;overflow:hidden;color:var(--ink);font-size:var(--text-sm);font-weight:650;line-height:var(--leading-tight);text-overflow:ellipsis;white-space:nowrap}.s-thread-motion-latest{min-width:0;display:grid;gap:var(--space-2xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:color-mix(in srgb,var(--ink) 4%,transparent)}.s-thread-motion-latest strong{display:-webkit-box;min-width:0;overflow:hidden;color:var(--ink);font-size:var(--text-md);font-weight:550;line-height:var(--leading-snug);-webkit-box-orient:vertical;-webkit-line-clamp:2}.s-thread-motion-events{display:grid;gap:var(--space-2xs);margin:0;padding:0;list-style:none}.s-thread-motion-events li{display:grid;grid-template-columns:56px minmax(0,1fr) auto;align-items:baseline;gap:var(--space-xs);min-height:24px;padding:var(--space-2xs) 0;border-bottom:1px solid color-mix(in srgb,var(--border) 34%,transparent);animation:s-thread-motion-event-enter .56s cubic-bezier(.16,1,.3,1) both}.s-thread-motion-event-summary{min-width:0;overflow:hidden;color:var(--muted);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap}.s-thread-motion-events time{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);white-space:nowrap}.s-thread-motion-events--compact{gap:0;padding-top:var(--space-xs);border-top:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.s-thread-motion-events--compact li{grid-template-columns:52px minmax(0,1fr) auto;min-height:22px;padding:var(--space-3xs) 0}.s-thread-motion-waiting{min-width:0;display:grid;gap:var(--space-2xs);padding:var(--space-sm) var(--space-md);border:1px dashed color-mix(in srgb,var(--border) 58%,transparent);border-radius:var(--radius-md);color:var(--muted)}.s-thread-motion-waiting strong{color:var(--muted);font-size:var(--text-sm);font-weight:550}.s-thread-steps{min-width:0;display:flex;flex-direction:column;gap:var(--space-xs)}.s-thread-turn-phases-ribbon{display:flex;align-items:center;gap:var(--space-2xs);flex-wrap:wrap;padding-bottom:var(--space-2xs);border-bottom:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.s-thread-turn-phase-chip{display:inline-flex;align-items:center;gap:var(--space-2xs);transition:all .14s ease}.s-thread-turn-phase-chip--active{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:color-mix(in srgb,var(--accent) 40%,var(--border));color:var(--accent)}.s-thread-turn-phase-count{font-size:var(--text-3xs);opacity:.75}.s-thread-steps-elided{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-sm);padding:0 var(--space-2xs)}.s-thread-steps-list{display:flex;flex-direction:column;gap:var(--space-2xs);margin:0;padding:0;list-style:none}.s-thread-step-card{display:flex;flex-direction:column;border:1px solid color-mix(in srgb,var(--border) 50%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 50%,var(--bg));padding:var(--space-2xs) var(--space-sm);transition:all .14s cubic-bezier(.16,1,.3,1);animation:s-thread-motion-event-enter .34s cubic-bezier(.16,1,.3,1) both}.s-thread-step-card:hover{background:color-mix(in srgb,var(--surface) 80%,var(--bg));border-color:color-mix(in srgb,var(--border) 80%,transparent)}.s-thread-step-card--latest{border-color:color-mix(in srgb,var(--accent) 30%,var(--border));background:color-mix(in srgb,var(--accent) 3%,var(--surface))}.s-thread-step-card--error{border-color:color-mix(in srgb,var(--red) 35%,var(--border));background:color-mix(in srgb,var(--red) 4%,var(--surface))}.s-thread-step-card--warning{border-color:color-mix(in srgb,var(--amber) 35%,var(--border));background:color-mix(in srgb,var(--amber) 4%,var(--surface))}.s-thread-step-header{display:flex;align-items:center;gap:var(--space-xs);min-height:24px}.s-thread-step-indicator{display:flex;align-items:center;justify-content:center;flex-shrink:0}.s-thread-step-kind{flex-shrink:0}.s-thread-step-body{flex:1;min-width:0;display:flex;align-items:baseline;gap:var(--space-2xs);overflow:hidden;white-space:nowrap}.s-thread-step-tool-arg{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-thread-step-arg-code{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink);background:color-mix(in srgb,var(--ink) 4%,transparent);padding:1px var(--space-3xs);border-radius:var(--radius-xs)}.s-thread-step-text{font-size:var(--text-sm);color:var(--muted);overflow:hidden;text-overflow:ellipsis}.s-thread-step-card[data-kind=think] .s-thread-step-text{color:var(--dim);font-style:italic}.s-thread-step-meta{margin-left:auto;display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.s-thread-step-duration{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs)}.s-thread-step-meta time{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);white-space:nowrap}.s-thread-step-toggle{width:18px;height:18px;padding:0;color:var(--dim)}.s-thread-step-toggle:hover{color:var(--ink)}.s-thread-step-output{margin-top:var(--space-2xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);background:color-mix(in srgb,var(--bg) 90%,transparent);border:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.s-thread-step-output-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3xs)}.s-thread-step-output-code{margin:0;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted);white-space:pre-wrap;word-break:break-word;line-height:var(--leading-tight)}.s-thread-step-mark{width:6px;height:6px;align-self:center;border:1px solid currentColor;border-radius:1px;color:var(--dim)}.s-thread-steps-phase{min-width:0;display:flex;flex-direction:column;gap:var(--space-3xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 60%,var(--bg));border:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.s-thread-steps-phase-header{display:flex;align-items:center;gap:var(--space-xs)}.s-thread-steps-phase-detail{font-size:var(--text-sm);font-weight:500;color:var(--muted)}.s-thread-steps--compact{padding-top:var(--space-xs);border-top:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.s-thread-motion-panel .s-thread-steps--compact,.s-thread-motion-panel .s-thread-steps-phase{padding-top:0;border-top:none}@media(prefers-reduced-motion:reduce){.s-thread-step-card{animation:none}}.s-thread-motion-chips{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.s-thread-motion-chips span{min-width:0;max-width:220px;overflow:hidden;padding:var(--space-3xs) var(--space-sm);border:1px solid color-mix(in srgb,var(--border) 52%,transparent);border-radius:var(--radius-sm);color:var(--dim);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-sm);text-overflow:ellipsis;white-space:nowrap}@keyframes s-thread-motion-scan{0%{background-position:180% 0}to{background-position:-180% 0}}@keyframes s-thread-motion-ping{0%{opacity:.5;transform:scale(.72)}to{opacity:0;transform:scale(1.45)}}@keyframes s-thread-motion-bar{0%,to{opacity:.42;transform:scaleY(.72)}48%{opacity:1;transform:scaleY(1)}}@keyframes s-thread-motion-event-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.s-thread-motion-panel:before,.s-thread-motion-beacon:after,.s-thread-motion-meter span,.s-thread-motion-events li{animation:none}}.s-thread-error{margin:var(--space-xl) var(--space-3xl) 0;padding:var(--space-md) var(--space-xl);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--red) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--red) 20%,var(--border));font-size:var(--text-md);color:var(--red)}.s-thread-status{display:flex;align-items:center;gap:var(--space-sm);margin:var(--space-xs) var(--space-3xl) 0;padding:var(--space-xs) var(--space-lg);border:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg) 80%,transparent)}.s-thread-status--pending{border-color:color-mix(in srgb,var(--accent) 18%,var(--border))}.s-thread-status--working{border-color:color-mix(in srgb,var(--green) 20%,var(--border))}.s-thread-status-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0;animation:s-thread-sidebar-pulse 1.5s ease-in-out infinite}.s-thread-status-copy{flex:1;min-width:0;display:flex;align-items:baseline;gap:var(--space-sm);flex-wrap:wrap}.s-thread-status-label{font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--dim);font-family:var(--font-mono)}.s-thread-status-detail{font-size:var(--text-sm);color:var(--muted)}.s-thread-flight-outcome{display:flex;flex-direction:column;gap:var(--space-xs);margin:var(--space-xs) var(--space-3xl) 0;padding:var(--space-sm) var(--space-lg);border:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--bg) 80%,transparent)}.s-thread-flight-outcome--failed{border-color:color-mix(in srgb,var(--red) 24%,var(--border))}.s-thread-flight-outcome--cancelled{border-color:color-mix(in srgb,var(--amber) 22%,var(--border))}.s-thread-flight-outcome--completed{border-color:color-mix(in srgb,var(--green) 20%,var(--border))}.s-thread-flight-outcome-head{display:flex;align-items:center;gap:var(--space-sm)}.s-thread-flight-outcome-mark{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;border-radius:50%;border:1px solid color-mix(in srgb,var(--dim) 44%,transparent);color:var(--dim)}.s-thread-flight-outcome--failed .s-thread-flight-outcome-mark{border-color:color-mix(in srgb,var(--red) 44%,transparent);color:color-mix(in srgb,var(--red) 80%,var(--ink))}.s-thread-flight-outcome--cancelled .s-thread-flight-outcome-mark{border-color:color-mix(in srgb,var(--amber) 44%,transparent);color:color-mix(in srgb,var(--amber) 84%,var(--ink))}.s-thread-flight-outcome--completed .s-thread-flight-outcome-mark{border-color:color-mix(in srgb,var(--green) 44%,transparent);color:color-mix(in srgb,var(--green) 84%,var(--ink))}.s-thread-flight-outcome-title{color:var(--ink)}.s-thread-flight-outcome-summary{margin:0;color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.s-thread-flight-outcome-note{margin:0;font-size:var(--text-xs)}.s-thread-flight-outcome-actions{display:flex;justify-content:flex-end}.s-thread-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:16px;padding:0 var(--space-2xs);border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--border) 80%,transparent);background:color-mix(in srgb,var(--ink) 4%,transparent);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:500;color:var(--dim);line-height:var(--leading-none)}@media(max-width:1200px){.s-thread-sidebar{display:none}}@media(max-width:900px){.s-thread-rail{display:none}}@media(max-width:720px){.s-thread-center-header{padding:var(--space-lg) var(--space-2xl)}.s-thread-feed,.s-thread-compose{padding-inline:var(--space-2xl)}.s-thread-pinned-ask,.s-thread-status{margin-inline:var(--space-2xl)}}.s-thread-embed{display:flex;width:100vw;height:100vh;min-height:0;overflow:hidden}.s-thread-layout--embedded{border-top:none}.s-thread-layout--embedded .s-thread-center{padding:0}.s-thread-layout--embedded .s-thread-compose{padding:var(--space-sm) var(--space-2xl) var(--space-lg)}.s-thread-layout--embedded .s-thread-compose-shell{border-radius:var(--radius-xl)}.s-thread-layout--embedded .s-thread-compose-row{padding:var(--space-2xs) var(--space-xs) var(--space-2xs) var(--space-2xs);gap:var(--space-xs)}.s-thread-layout--embedded .s-thread-compose-input{min-height:28px;padding:var(--space-xs) var(--space-2xs) var(--space-xs) var(--space-sm);font-size:var(--text-md)}.s-thread-layout--embedded .s-thread-compose-send{width:28px;height:28px}.s-conv-board{flex:1;min-height:0;overflow-y:auto;padding:var(--space-3xl) clamp(var(--space-3xl),3vw,var(--space-6xl)) var(--space-6xl);background:var(--bg);font-family:var(--font-mono)}.s-conv-board-shortcuts{display:flex;flex-wrap:wrap;gap:var(--space-sm) var(--space-3xl);padding:var(--space-2xs) 0 var(--space-sm)}.s-conv-board-shortcut{padding:0;border:0;background:none;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-sm);cursor:pointer}.s-conv-board-shortcut:hover,.s-conv-board-shortcut:focus-visible{color:var(--accent);outline:none}.s-conv-board-section{min-width:0;width:min(100%,920px)}.s-conv-board-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);padding:var(--space-4xl) 0 var(--space-sm);border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:700;letter-spacing:var(--tracking-xl);text-transform:uppercase;color:var(--dim)}.s-conv-board-count{color:color-mix(in srgb,var(--dim) 86%,transparent);font-variant-numeric:tabular-nums}.s-conv-board-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2xl);width:100%;padding:var(--space-md) 0;border:0;border-bottom:1px solid color-mix(in srgb,var(--border) 42%,transparent);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.s-conv-board-row:hover .s-conv-board-row-title,.s-conv-board-row:focus-visible .s-conv-board-row-title{color:var(--accent)}.s-conv-board-row:focus-visible{outline:none}.s-conv-board-row:hover .s-conv-board-arrow,.s-conv-board-row:focus-visible .s-conv-board-arrow{color:var(--accent)}.s-conv-board-row-main{min-width:0;display:flex;align-items:baseline;gap:var(--space-md);overflow:hidden}.s-conv-board-row-title{flex:none;max-width:48%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:var(--text-md);font-weight:550;transition:color .12s ease}.s-conv-board-preview{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dim);font-size:var(--text-xs);font-weight:400}.s-conv-board-meta{flex:none;display:flex;align-items:baseline;gap:var(--space-md);font-family:var(--font-mono);font-size:var(--text-2xs);font-variant-numeric:tabular-nums;color:var(--dim)}.s-conv-board-new{font-style:normal;font-weight:650;color:var(--accent)}.s-conv-board-arrow{color:var(--dim);transition:color .12s ease}.s-conv-board-note{margin:var(--space-4xl) 0 0;max-width:920px;font-family:var(--font-mono);font-size:var(--text-xs);font-style:italic;color:var(--dim)}.s-conv-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-5xl);background:var(--bg)}.s-conv-empty-inner{display:flex;flex-direction:column;align-items:center;text-align:center;width:min(100%,420px)}.s-conv-empty-mesh{width:72px;height:72px;margin-bottom:var(--space-4xl);color:var(--border)}.s-conv-empty-mesh-node{fill:currentColor}.s-conv-empty-mesh-node--accent{fill:var(--accent)}.s-conv-empty--offline .s-conv-empty-mesh-node--accent,.s-conv-empty--offline .s-conv-empty-ambient-dot{fill:var(--red);background:var(--red)}.s-conv-empty-mesh-link{stroke:currentColor;stroke-width:1;opacity:.7}.s-conv-empty-eyebrow{font-family:var(--font-mono);text-transform:uppercase;font-size:var(--text-2xs);letter-spacing:var(--tracking-xl);color:color-mix(in srgb,var(--accent) 70%,var(--muted));margin-bottom:var(--space-md)}.s-conv-empty-title{font-size:var(--text-2xl);font-weight:600;color:var(--muted);line-height:var(--leading-tight);margin:0}.s-conv-empty-detail{font-size:var(--text-md);line-height:var(--leading-normal);color:var(--dim);margin:var(--space-sm) 0 0}.s-conv-empty-hints{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-2xl);margin-top:var(--space-5xl)}.s-conv-empty-action{min-height:30px;margin-top:var(--space-5xl);padding:0 var(--space-lg);border:1px solid color-mix(in srgb,var(--red) 34%,var(--border));border-radius:var(--radius-sm);background:color-mix(in srgb,var(--red) 8%,transparent);color:color-mix(in srgb,var(--red) 86%,var(--ink));cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-sm)}.s-conv-empty-action:hover{background:color-mix(in srgb,var(--red) 14%,transparent);color:var(--ink)}.s-conv-empty-new{align-self:center;margin-top:var(--space-3xl)}.s-conv-empty-hint{display:inline-flex;align-items:center;gap:var(--space-sm);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-sm);color:var(--dim)}.s-conv-empty-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:18px;padding:0 var(--space-2xs);border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--border) 80%,transparent);background:color-mix(in srgb,var(--ink) 4%,transparent);font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:500;color:var(--muted);line-height:var(--leading-none)}.s-conv-empty-ambient{display:inline-flex;align-items:center;gap:var(--space-sm);margin-top:var(--space-5xl);font-family:var(--font-mono);text-transform:uppercase;font-size:var(--text-2xs);letter-spacing:var(--tracking-lg);color:var(--dim)}.s-conv-empty-ambient-dot{width:5px;height:5px;border-radius:50%;background:var(--accent);flex-shrink:0}@keyframes s-thread-msg-enter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.s-thread-msg--enter{animation:s-thread-msg-enter .22s cubic-bezier(.2,.7,.3,1) backwards;will-change:opacity,transform}.s-thread-skeleton{display:flex;flex-direction:column;gap:var(--space-2xl);padding:var(--space-2xl) 0;max-width:min(100%,760px)}.s-thread-skeleton-intro{display:flex;align-items:center;gap:var(--space-md);min-height:32px}.s-thread-loader-mark{position:relative;width:28px;height:28px;flex:none}.s-thread-loader-orbit{position:absolute;inset:2px;border:1px solid color-mix(in srgb,var(--accent) 28%,transparent);border-radius:50%}.s-thread-loader-orbit>span{position:absolute;top:-2px;left:50%;width:5px;height:5px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px color-mix(in srgb,var(--accent) 58%,transparent);transform:translate(-50%)}.s-thread-loader-core{position:absolute;inset:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px color-mix(in srgb,var(--accent) 42%,transparent)}.s-thread-skeleton-copy{display:flex;min-width:0;flex-direction:column;gap:2px;font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase;color:var(--dim)}.s-thread-skeleton-copy strong{color:var(--muted);font-size:var(--text-xs);font-weight:600}.s-thread-skeleton-copy>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-thread-skeleton-turns{display:flex;flex-direction:column;gap:var(--space-3xl)}.s-thread-skeleton-turn{display:flex;gap:var(--space-lg);align-items:flex-start}.s-thread-skeleton-lines{display:flex;flex-direction:column;gap:var(--space-sm);flex:1;min-width:0}.s-thread-skeleton-avatar,.s-thread-skeleton-line{background:linear-gradient(90deg,color-mix(in srgb,var(--ink) 5%,transparent),color-mix(in srgb,var(--ink) 9%,transparent),color-mix(in srgb,var(--ink) 5%,transparent) 80%);background-size:280% 100%;border-radius:var(--radius-sm);animation:s-thread-skeleton-sweep 1.6s ease-in-out infinite}.s-thread-skeleton-avatar{width:24px;height:24px;flex:none;border-radius:var(--radius-md)}.s-thread-skeleton-line{height:9px}.s-thread-skeleton-line--head{width:30%}.s-thread-skeleton-line--short{width:62%}.s-thread-skeleton-turn:nth-child(3) .s-thread-skeleton-line{animation-delay:.12s}.s-thread-skeleton-turn:nth-child(4) .s-thread-skeleton-line{animation-delay:.24s}@keyframes s-thread-skeleton-sweep{0%{background-position:140% 0}to{background-position:-40% 0}}@media(prefers-reduced-motion:reduce){.s-thread-msg--enter,.s-thread-skeleton-avatar,.s-thread-skeleton-line,.s-thread-history-spinner{animation:none}}.s-thread-layout[data-thread-treatment] .s-thread-feed-block,.s-thread-layout[data-thread-treatment] .s-thread-feed-block--you,.s-thread-layout[data-thread-treatment] .s-thread-feed-block--full-width .s-thread-msg{max-width:100%;align-self:stretch;align-items:stretch}.s-thread-layout[data-thread-treatment] .s-thread-msg-card,.s-thread-layout[data-thread-treatment] .s-thread-msg--you .s-thread-msg-card,.s-thread-layout[data-thread-treatment] .s-thread-msg--tool .s-thread-msg-card,.s-thread-layout[data-thread-treatment] .s-thread-msg[data-class=status] .s-thread-msg-card{border:none;border-radius:0;background:none}.s-thread-layout[data-thread-treatment=familiar] .s-thread-feed{gap:var(--space-2xl);padding:var(--space-3xl) var(--space-2xl) var(--space-2xl);align-items:center}.s-thread-layout[data-thread-treatment=familiar] .s-thread-feed-block,.s-thread-layout[data-thread-treatment=familiar] .s-thread-feed-block--full-width{width:min(100%,720px);max-width:720px;margin-inline:auto;align-self:center}.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg{width:100%;max-width:100%}.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg-card{padding:var(--space-sm) 0}.s-thread-layout[data-thread-treatment=familiar] .s-thread-feed-block--you{align-items:flex-end}.s-thread-layout[data-thread-treatment=familiar] .s-thread-feed-block--you .s-thread-msg{width:auto;max-width:min(72%,520px);align-self:flex-end}.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg--you .s-thread-msg-card{padding:var(--space-md) var(--space-xl);border:1px solid color-mix(in srgb,var(--accent) 20%,var(--border));border-radius:var(--radius-2xl);background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg--you .s-thread-msg-meta{justify-content:flex-end}.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg--you .s-thread-msg-avatar,.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg--you .s-thread-msg-avatar--nav,.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg--you .s-thread-msg-actor,.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg--you .s-thread-msg-handle,.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg--you .s-thread-msg-kind{display:none}.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg--tool .s-thread-msg-card,.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg[data-class=system] .s-thread-msg-card,.s-thread-layout[data-thread-treatment=familiar] .s-thread-msg[data-class=status] .s-thread-msg-card{padding:var(--space-md) var(--space-xl);border:1px solid color-mix(in srgb,var(--border) 70%,transparent);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 72%,var(--bg))}.s-thread-layout[data-thread-treatment=ledger] .s-thread-feed{gap:0;padding:var(--space-sm) 0 var(--space-xl)}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-card{position:relative;padding:5px calc(var(--space-xl) + 40px) 5px var(--space-xl);border-bottom:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-card:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-card-content{display:grid;grid-template-columns:max-content minmax(0,1fr);column-gap:var(--space-sm);row-gap:var(--space-sm);align-items:baseline}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-card-content>*:not(.s-thread-msg-header):not(.s-thread-msg-actions){grid-column:2;min-width:0}.s-thread-layout[data-thread-treatment=ledger] .s-message-embeds>*{max-width:min(460px,100%)}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-actions{position:absolute;inset-block-start:5px;inset-inline-end:var(--space-xl);z-index:1;display:flex;align-items:center;gap:var(--space-sm);pointer-events:none}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-card:hover .s-thread-msg-actions,.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-actions:focus-within{pointer-events:auto}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-header{grid-column:1;grid-row:1;align-items:baseline;gap:var(--space-sm)}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-meta{flex:none;flex-wrap:nowrap;align-items:baseline;gap:var(--space-sm)}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-avatar,.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-avatar--nav,.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-handle{display:none}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-time{order:-1;flex:none;width:4.5ch;font-size:var(--text-2xs);color:var(--dim)}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-actor{width:17ch;flex:none;font-size:var(--text-xs);font-weight:500;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.s-thread-layout[data-thread-treatment=ledger] .s-thread-msg-body{grid-column:2;min-width:0;font-size:var(--text-sm);line-height:1.5}.s-thread-layout[data-thread-treatment=rail] .s-thread-feed{--thread-rail-gutter: clamp(196px, 14vw, 240px);--thread-rail-measure: clamp(760px, 60vw, 1040px);--thread-rail-column: calc( var(--thread-rail-gutter) + var(--space-lg) + var(--thread-rail-measure) );gap:0;padding:var(--space-xl) var(--space-2xl) var(--space-xl)}.s-thread-layout[data-thread-treatment=rail] .s-thread-feed-block{width:min(100%,var(--thread-rail-column));margin-inline:0}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg{max-width:100%}.s-thread-layout[data-thread-treatment=rail] .s-thread-feed-block+.s-thread-feed-block{border-top:1px solid color-mix(in srgb,var(--border) 45%,transparent)}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-card{position:relative;padding:var(--space-md) 0 var(--space-md) calc(var(--thread-rail-gutter) + var(--space-lg))}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-card:before{content:"";position:absolute;left:var(--thread-rail-gutter);top:0;bottom:0;width:1px;background:color-mix(in srgb,var(--border) 70%,transparent)}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-card-content{display:flow-root}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-card-content>*+*{margin-top:var(--space-sm)}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-header{float:left;display:flex;width:var(--thread-rail-gutter);margin-top:0;margin-left:calc(-1 * (var(--thread-rail-gutter) + var(--space-lg)));padding-right:var(--space-lg);flex-direction:row;flex-wrap:wrap;align-items:baseline;text-align:left;gap:var(--space-2xs) var(--space-sm);min-width:0}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-meta{flex:1 1 auto;flex-direction:row;align-items:baseline;gap:var(--space-2xs) var(--space-sm);width:auto}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-handle,.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-time{font-size:var(--text-2xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-body{max-width:var(--thread-rail-measure);font-size:var(--text-md);line-height:1.58}.s-thread-layout[data-thread-treatment=rail] .s-thread-reply-ctx{max-width:min(38ch,var(--thread-rail-measure));margin-bottom:var(--space-2xs);font-size:var(--text-2xs);opacity:.72}.s-thread-layout[data-thread-treatment=rail] .s-thread-reply-ctx:hover,.s-thread-layout[data-thread-treatment=rail] .s-thread-reply-ctx:focus-visible{opacity:1}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-card--avatar-row{display:grid;grid-template-columns:var(--thread-rail-gutter) minmax(0,1fr);column-gap:var(--space-lg);align-items:start;padding-left:0}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-card--avatar-row>.s-thread-msg-avatar{grid-column:1;justify-self:end;margin-right:var(--space-lg)}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-card--avatar-row>.s-thread-msg-card-content{grid-column:2}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-card--avatar-row .s-thread-msg-header{float:none;width:auto;margin-left:0;padding-right:0;flex-direction:row;align-items:baseline;text-align:left;gap:var(--space-sm)}.s-thread-layout[data-thread-treatment=rail] .s-thread-msg-card--avatar-row .s-thread-msg-meta{flex-direction:row;align-items:baseline;gap:var(--space-sm);width:auto}.s-thread-layout[data-thread-treatment=document] .s-thread-feed{gap:0;padding:var(--space-2xl) var(--space-3xl) var(--space-2xl)}.s-thread-layout[data-thread-treatment=document] .s-thread-feed-block+.s-thread-feed-block{border-top:1px solid color-mix(in srgb,var(--border) 40%,transparent)}.s-thread-layout[data-thread-treatment=document] .s-thread-msg-card{padding:var(--space-xl) 0}.s-thread-layout[data-thread-treatment=document] .s-thread-msg-avatar,.s-thread-layout[data-thread-treatment=document] .s-thread-msg-avatar--nav,.s-thread-layout[data-thread-treatment=document] .s-thread-msg-handle{display:none}.s-thread-layout[data-thread-treatment=document] .s-thread-msg-header{margin-bottom:var(--space-xs)}.s-thread-layout[data-thread-treatment=document] .s-thread-msg-actor{font-size:var(--text-2xs);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.s-thread-layout[data-thread-treatment=document] .s-thread-msg-time{font-size:var(--text-2xs);letter-spacing:.08em}.s-thread-layout[data-thread-treatment=document] .s-thread-msg-body{max-width:62ch;font-size:var(--text-lg);line-height:1.78}.s-thread-layout[data-thread-treatment=document] .s-thread-msg-body .s-inline-code{background:none;border-color:transparent;padding:0;color:var(--muted)}@media(max-width:560px){.s-thread-participants{--fp-coin: 40px;--fp-lap: 8px;--fp-sprite: 21px;--fp-badge: 13px;max-width:none}.s-thread-participant[data-compact-hidden=true],.s-thread-participant--desktop-overflow{display:none}.s-thread-participant--compact-overflow{display:inline-flex}.s-thread-participant-card{right:-4px}}@media(max-width:420px){.s-thread-participant[data-narrow-hidden=true],.s-thread-participant--compact-overflow{display:none}.s-thread-participant--narrow-overflow{display:inline-flex}}
|