@openscout/scout 0.2.84 → 0.2.86
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 +1 -1
- package/bin/scoutd +0 -0
- package/dist/build-manifest.json +3 -3
- package/dist/client/assets/ActivityScreen-C7AwUogt.js +1 -0
- package/dist/client/assets/{AddProjectForm-Czb5uwou.js → AddProjectForm-BNRpRPod.js} +1 -1
- package/dist/client/assets/AgentAvatar-B1xvQ7ej.js +1 -0
- package/dist/client/assets/AgentConfigurationScreen-BoBQpyz5.js +1 -0
- package/dist/client/assets/AgentDefinitionsWorkspace-rw3vh8Lm.js +1 -0
- package/dist/client/assets/{AgentDetailCard-Biq8b2gv.js → AgentDetailCard-FelCxQrT.js} +1 -1
- package/dist/client/assets/AgentFloorView-Crdw8Uo5.js +1 -0
- package/dist/client/assets/AgentInfoScreen-Cge7HHbV.js +1 -0
- package/dist/client/assets/{AgentLaneCard-C4DMQR-c.js → AgentLaneCard-CRDG74C1.js} +1 -1
- package/dist/client/assets/{AgentLaneChrome-D1xNNf7A.js → AgentLaneChrome-CWFqUdch.js} +1 -1
- package/dist/client/assets/AgentLaneDetailSheet-DCIIg3Zp.js +4 -0
- package/dist/client/assets/{AgentLaneSummaryResize-C9loK-st.js → AgentLaneSummaryResize-yTM4GQAJ.js} +1 -1
- package/dist/client/assets/AgentLanesEmbedScreen-BJLwXSNp.js +1 -0
- package/dist/client/assets/{AgentLanesPreflight-M7iDXdP2.js → AgentLanesPreflight-DJeDRTAN.js} +1 -1
- package/dist/client/assets/AgentLanesView-CbY9qD0z.js +2 -0
- package/dist/client/assets/{AgentLiveActions-0iy8QZ1T.js → AgentLiveActions-Bn3zeZBN.js} +1 -1
- package/dist/client/assets/AgentSessions-czl5zT7A.js +6 -0
- package/dist/client/assets/AgentsConsole-CoT2crwq.js +1 -0
- package/dist/client/assets/{AgentsScreen-Bww6HgFs.js → AgentsScreen-BcPM-z1T.js} +1 -1
- package/dist/client/assets/AgentsSubnav-3_vpn2bT.js +1 -0
- package/dist/client/assets/AstronautSuit-BADl7m8x.js +1 -0
- package/dist/client/assets/{AtopView-h_aFoNkP.js → AtopView-DymBCiXv.js} +1 -1
- package/dist/client/assets/{BackToPicker-BXp5E2ck.js → BackToPicker-CqYhOaLB.js} +1 -1
- package/dist/client/assets/BriefingDetailScreen-DDfZ8ci1.js +1 -0
- package/dist/client/assets/{BriefingsScreen-BTsvr5fv.js → BriefingsScreen-CLvSOJjy.js} +1 -1
- package/dist/client/assets/{BrokerMetadataPanel-jg7odHQp.js → BrokerMetadataPanel-DFAH-NO6.js} +1 -1
- package/dist/client/assets/BrokerScreen-Bkvu92jk.js +5 -0
- package/dist/client/assets/{Canvas-BePL08RR.js → Canvas-KyTsDJlB.js} +1 -1
- package/dist/client/assets/ChatCollapsedStrip-Bjjqa30K.js +1 -0
- package/dist/client/assets/{CodeDiffPane-86odpBSt.js → CodeDiffPane-C9HT1dCT.js} +1 -1
- package/dist/client/assets/{CodeProjectPicker-8svr_S_A.js → CodeProjectPicker-5Y3GvXkM.js} +1 -1
- package/dist/client/assets/{CodeScreen-CJ2RgB32.js → CodeScreen-DpN9kQvm.js} +1 -1
- package/dist/client/assets/ConversationComposer-Ce7Byw48.js +1 -0
- package/dist/client/assets/ConversationFeedRows-DygDfQn_.js +1 -0
- package/dist/client/assets/ConversationHeader-C3sg0ULI.js +1 -0
- package/dist/client/assets/ConversationPanels-Dg4Y2GgX.js +6 -0
- package/dist/client/assets/ConversationScreen-BP5tdz2k.css +1 -0
- package/dist/client/assets/ConversationScreen-CjWWmuuh.js +1 -0
- package/dist/client/assets/ConversationStatus-BhVIYQza.js +1 -0
- package/dist/client/assets/CrewWorkspaces-B6YIyw1z.css +1 -0
- package/dist/client/assets/CrewWorkspaces-CDU-wy1Y.js +1 -0
- package/dist/client/assets/{DataTable-CGw5CECG.js → DataTable-oJP339bX.js} +1 -1
- package/dist/client/assets/{DispatchAftermath-DowTb7uO.js → DispatchAftermath-CH02HAVw.js} +1 -1
- package/dist/client/assets/DocumentFocusViewer-DmtFisY9.js +1 -0
- package/dist/client/assets/{EmbeddableSurfacesLab-CxfJXS2g.js → EmbeddableSurfacesLab-84b9I3fy.js} +1 -1
- package/dist/client/assets/{EmptyState-BUvllvA6.js → EmptyState-BnDda92b.js} +1 -1
- package/dist/client/assets/{FileViewerPane-BM4AD_bo.js → FileViewerPane-Dg7_88pv.js} +1 -1
- package/dist/client/assets/FlightObserveScreen-DL3Xhl0h.js +1 -0
- package/dist/client/assets/{FollowScreen-DG0osbUp.js → FollowScreen-DcFBqr6l.js} +1 -1
- package/dist/client/assets/{HarnessMark-MztYnrGK.js → HarnessMark-DGZ6o6Ct.js} +1 -1
- package/dist/client/assets/{HarnessesScreen-BWqirBjK.js → HarnessesScreen-DTDL-XaA.js} +1 -1
- package/dist/client/assets/{HerdrSession-6sFln7WX.js → HerdrSession-DV2hD6Yh.js} +1 -1
- package/dist/client/assets/HomeHero-7JwycwFY.css +1 -0
- package/dist/client/assets/HomeHero-CENwVZ45.js +1 -0
- package/dist/client/assets/HostAdvisorView-PgiZUkd_.js +1 -0
- package/dist/client/assets/{KnowledgeSearchInspector-BOIhFWd2.js → KnowledgeSearchInspector-DNQjeWZO.js} +1 -1
- package/dist/client/assets/KnowledgeSearchScreen-Bj80IgR0.js +1 -0
- package/dist/client/assets/{LaneToolHoverCard-CcEiQC6B.js → LaneToolHoverCard-197xYmRp.js} +1 -1
- package/dist/client/assets/LaneTraceDetailSheet-BztwvOv9.js +1 -0
- package/dist/client/assets/{LaneTraceEventFocus-Bl9L0EYb.js → LaneTraceEventFocus-C9cmqxnK.js} +1 -1
- package/dist/client/assets/{MeshCanvas-ZjIuMiRo.js → MeshCanvas-C3_2p9B6.js} +2 -2
- package/dist/client/assets/{MeshCanvasMinimap-C-LQtiX6.js → MeshCanvasMinimap-ZTjYWXTZ.js} +1 -1
- package/dist/client/assets/{MeshScreen-Bs3soujg.js → MeshScreen-lJKaOyGB.js} +1 -1
- package/dist/client/assets/{MeshTopologyView-C0LUyT3K.js → MeshTopologyView-CBjHbAZw.js} +2 -2
- package/dist/client/assets/MessagesScreen-D6MVLvdg.js +1 -0
- package/dist/client/assets/{MissionContextRail-CjGAEGu8.js → MissionContextRail-DXkrbcnZ.js} +1 -1
- package/dist/client/assets/MissionControlView-BCH-Zsp4.js +1 -0
- package/dist/client/assets/MissionFocusOverlay-DbAliOSF.js +1 -0
- package/dist/client/assets/MissionLeftAgentRow-Bx6Pg8_O.js +1 -0
- package/dist/client/assets/MissionLogPane-D06c29Y8.js +1 -0
- package/dist/client/assets/{NewAgentModal-D5e0YUAo.js → NewAgentModal-C18Ajovd.js} +1 -1
- package/dist/client/assets/NewChatComposer-Bgqes0UQ.js +19 -0
- package/dist/client/assets/{NewChatOrigin-BEz6jyqf.js → NewChatOrigin-DpHS2Wmt.js} +1 -1
- package/dist/client/assets/ObserveEmbedScreen-Cmhwai4X.js +2 -0
- package/dist/client/assets/ObserveTextFlow-C1f5oize.js +2 -0
- package/dist/client/assets/ObservedTopologyPanel-D85P6RAk.js +2 -0
- package/dist/client/assets/OpenScoutAppShell-IDI4fuUE.js +88 -0
- package/dist/client/assets/OpsAgentsView-yt0JavoB.js +1 -0
- package/dist/client/assets/OpsScreen-C3yNQqJE.js +1 -0
- package/dist/client/assets/OpsSubnav-BijKI3yG.js +1 -0
- package/dist/client/assets/ProjectAgentProfile-DnIeC16r.js +1 -0
- package/dist/client/assets/{ProjectAgentProfileBar-B1VpwzGD.js → ProjectAgentProfileBar-IDEpKZvI.js} +1 -1
- package/dist/client/assets/ProjectAgentProfileHero-Bh_aISs-.js +1 -0
- package/dist/client/assets/ProjectsInbox-B8Srlklk.js +2 -0
- package/dist/client/assets/ProjectsRail-DqAbdvCf.js +1 -0
- package/dist/client/assets/ProjectsScreen-DKHQ2iEv.js +1 -0
- package/dist/client/assets/ProjectsThreadAside-DpkjYLL2.js +1 -0
- package/dist/client/assets/Provider-Ve8yXaWR.js +1 -0
- package/dist/client/assets/RailRow-B0sRaJc6.css +1 -0
- package/dist/client/assets/RailRow-C4GNGR80.js +1 -0
- package/dist/client/assets/RawSessionsTable-Co3vzwsf.js +1 -0
- package/dist/client/assets/RealtimeVoiceScreen-DMd1CBAf.js +9 -0
- package/dist/client/assets/{RepoDiffEmbedScreen-VLg4caej.js → RepoDiffEmbedScreen-C97Euf4s.js} +1 -1
- package/dist/client/assets/{RepoDiffPageScreen-BelnvgnP.js → RepoDiffPageScreen-DUKLzkrW.js} +1 -1
- package/dist/client/assets/RepoDiffViewer-CovKjSgb.js +7 -0
- package/dist/client/assets/RepoDiffViewerLazy-zIiEmh-e.js +2 -0
- package/dist/client/assets/{ReposScreen-IINK-CFn.js → ReposScreen-BR1LqTf1.js} +6 -6
- package/dist/client/assets/ScoutDeckSurface-BGsVicc2.js +1 -0
- package/dist/client/assets/{ScoutSurface-x_QbcRyk.js → ScoutSurface-BMKW7hSu.js} +1 -1
- package/dist/client/assets/{ScoutbotFxLab-7t9JVvZg.js → ScoutbotFxLab-0O2iDRrF.js} +1 -1
- package/dist/client/assets/{SecondaryNav-Dj30epYF.js → SecondaryNav-cYTw2p39.js} +1 -1
- package/dist/client/assets/{SessionEmbedScreen-s2mJ5Fg9.js → SessionEmbedScreen-mNjT0R6j.js} +1 -1
- package/dist/client/assets/{SessionObserve-DaUrJCMq.js → SessionObserve-zAlFbwFn.js} +1 -1
- package/dist/client/assets/{SessionObserveEvidence-ClUW8jpV.js → SessionObserveEvidence-BVawzqoE.js} +1 -1
- package/dist/client/assets/SessionRefScreen-BmKhf29o.js +1 -0
- package/dist/client/assets/SessionsScreen-CsSqjIY2.js +1 -0
- package/dist/client/assets/SettingsDrawer-Dsj-On_x.css +1 -0
- package/dist/client/assets/SettingsDrawer-DwYQTGi8.js +3 -0
- package/dist/client/assets/SettingsScreen-Btaku7YM.js +1 -0
- package/dist/client/assets/{ShikiPane-Dkwyx--r.js → ShikiPane-DyEJdcvb.js} +1 -1
- package/dist/client/assets/{SlidePanel-CuTeirnk.js → SlidePanel-Dg8_styW.js} +1 -1
- package/dist/client/assets/{SpriteAvatar-DQ3PTb8L.js → SpriteAvatar-DMrSssNZ.js} +1 -1
- package/dist/client/assets/{StatusPill-BJ1ierIR.js → StatusPill-NFFnphtx.js} +1 -1
- package/dist/client/assets/{TailView-CufWcrvf.js → TailView-BfObcZu3.js} +2 -2
- package/dist/client/assets/Terminal-Dr-M9U4u.js +1 -0
- package/dist/client/assets/TerminalEmbedScreen-BmyZkonh.js +1 -0
- package/dist/client/assets/{TerminalRelay-rvUzI9Ek.js → TerminalRelay-lJ2KdMCW.js} +3 -3
- package/dist/client/assets/{TextDocumentSurface-Bc-kHPgG.js → TextDocumentSurface-C7fGlzY8.js} +1 -1
- package/dist/client/assets/{TmuxPeek-DLyDkq_D.js → TmuxPeek-BSeKIjnX.js} +1 -1
- package/dist/client/assets/{VoicePermissionsPanel-CD903y9K.js → VoicePermissionsPanel-BkIGTzgw.js} +1 -1
- package/dist/client/assets/{WorkDetailScreen-D51oI0dH.js → WorkDetailScreen-Cwe-KWK4.js} +3 -3
- package/dist/client/assets/WorkFilesViewer-BBtKRBPv.js +1 -0
- package/dist/client/assets/{activity-BvGruxWG.js → activity-D4W2XZY2.js} +1 -1
- package/dist/client/assets/{addon-fit-Cfq4Ayjd.js → addon-fit-Celjj2yn.js} +1 -1
- package/dist/client/assets/{addon-webgl-B8sIf9-s.js → addon-webgl-Cu4tJ21-.js} +1 -1
- package/dist/client/assets/{ScoutbotBroadcastChip-CxtYZWPZ.css → agent-autocomplete-C7xwIcwd.css} +1 -1
- package/dist/client/assets/agent-autocomplete-Dv-_9dAw.js +2 -0
- package/dist/client/assets/{agent-essentials-yb4wIJlX.js → agent-essentials-CngjUhQj.js} +1 -1
- package/dist/client/assets/agent-identity-DzHGhLdJ.js +1 -0
- package/dist/client/assets/{agent-lane-card-model-q4cwzLX4.js → agent-lane-card-model-CSugZCdy.js} +1 -1
- package/dist/client/assets/{agent-lane-detail-BNNm6FNu.js → agent-lane-detail-D5EIlX7_.js} +1 -1
- package/dist/client/assets/{agent-lane-preview-C33Dwpn7.js → agent-lane-preview-BhplDYGf.js} +1 -1
- package/dist/client/assets/{agent-lanes-BDNktFBZ.css → agent-lanes-DlqcEf0l.css} +1 -1
- package/dist/client/assets/{agent-lanes-model-VYQ5a68i.js → agent-lanes-model-BKOs_32K.js} +2 -2
- package/dist/client/assets/agent-specialization-CNrsRbKA.js +1 -0
- package/dist/client/assets/{api-BkjHJfgJ.js → api-BHHEUSS3.js} +1 -1
- package/dist/client/assets/api-DEHEgJ9m.js +1 -0
- package/dist/client/assets/{arc.es-BBTfhvLE.js → arc.es-DNT50Y-_.js} +1 -1
- package/dist/client/assets/archive-DH49QqFG.js +1 -0
- package/dist/client/assets/{arrow-left-BOht-YQu.js → arrow-left-i-h6JAgs.js} +1 -1
- package/dist/client/assets/arrow-right-B0Yi01Zr.js +1 -0
- package/dist/client/assets/{arrow-up-right-hoR8_oUz.js → arrow-up-right-RBC6k8nn.js} +1 -1
- package/dist/client/assets/{bot-BUK7dOPS.js → bot-r2IuAuJd.js} +1 -1
- package/dist/client/assets/broker-display-Q75fupqG.js +2 -0
- package/dist/client/assets/{cache-Dr0why2k.js → cache-BO2Bd_LV.js} +1 -1
- package/dist/client/assets/{check--esHw52j.js → check-Bfs7hMb1.js} +1 -1
- package/dist/client/assets/{chevron-down-NAhBUkFd.js → chevron-down-Da5tV19_.js} +1 -1
- package/dist/client/assets/{chevron-right-C10o7t_X.js → chevron-right-BMqtBds_.js} +1 -1
- package/dist/client/assets/{chunk-HRAB3GC3-DF8R9rPv.js → chunk-HRAB3GC3-BUVYXXAp.js} +1 -1
- package/dist/client/assets/{clock-of01sAB6.js → clock-DaKLp6Xd.js} +1 -1
- package/dist/client/assets/{code-xml-CLn3TDWF.js → code-xml-ByQsfOI_.js} +1 -1
- package/dist/client/assets/collapsed-strip-raJWthAH.css +1 -0
- package/dist/client/assets/compass-BepM5iWH.js +1 -0
- package/dist/client/assets/{content-Cgj5AWqT.js → content-5hnDC9WE.js} +1 -1
- package/dist/client/assets/content-BRFZ-a6m.js +1 -0
- package/dist/client/assets/content-BYykncDo.js +1 -0
- package/dist/client/assets/content-Be6yyWbJ.js +1 -0
- package/dist/client/assets/content-Bgl_X3ao.js +1 -0
- package/dist/client/assets/content-BopJW1Zx.js +1 -0
- package/dist/client/assets/content-Bv2sfg0w.js +1 -0
- package/dist/client/assets/content-CMBiIZTg.js +1 -0
- package/dist/client/assets/content-CPVqvf5o.js +1 -0
- package/dist/client/assets/content-CbwyFqdI.js +1 -0
- package/dist/client/assets/content-ClQjAWYi.js +1 -0
- package/dist/client/assets/content-Cv2tSAbv.js +1 -0
- package/dist/client/assets/content-DFFe3-Ot.js +1 -0
- package/dist/client/assets/content-DY5hwBmm.js +1 -0
- package/dist/client/assets/content-_IXoxGno.js +1 -0
- package/dist/client/assets/content-j_tewJdE.js +1 -0
- package/dist/client/assets/{conversation-icons-ClBJi21l.js → conversation-icons-C4amK8Sa.js} +1 -1
- package/dist/client/assets/conversation-model-CigSPlKA.js +1 -0
- package/dist/client/assets/conversation-motion-features-_95aZx_1.js +1 -0
- package/dist/client/assets/{copy-Dty8ZYsM.js → copy-De4s38o2.js} +1 -1
- package/dist/client/assets/cpu-Bc268H9Q.js +1 -0
- package/dist/client/assets/{createLucideIcon-Bt67PWH-.js → createLucideIcon-DLlxGjKt.js} +1 -1
- package/dist/client/assets/credentials-qwds23lv.js +1 -0
- package/dist/client/assets/ctx-panel-D_HJ3nhb.css +1 -0
- package/dist/client/assets/discover-DOlk1hG7.js +2 -0
- package/dist/client/assets/embed-entry-BqDJfa87.js +2 -0
- package/dist/client/assets/{external-link-Dem738OJ.js → external-link-BGHC_naA.js} +1 -1
- package/dist/client/assets/{eye-B3lBIwJZ.js → eye-BeCSqJn1.js} +1 -1
- package/dist/client/assets/file-code-corner-CX53Cd9y.js +1 -0
- package/dist/client/assets/{file-text-iF0hyVyU.js → file-text-BVhkMWyC.js} +1 -1
- package/dist/client/assets/gauge-CPcEPmNt.js +1 -0
- package/dist/client/assets/gestures-BXIGYk_p.js +1 -0
- package/dist/client/assets/git-branch-q8Ayc8py.js +1 -0
- package/dist/client/assets/home-moving-signal-DMguaRWR.css +1 -0
- package/dist/client/assets/home-moving-signal-Dm2Z2x0p.js +1 -0
- package/dist/client/assets/{home-now-card-nano-hZl9klbP.js → home-now-card-nano-Djhy6ax0.js} +1 -1
- package/dist/client/assets/home-now-card-xU5LGP7q.js +1 -0
- package/dist/client/assets/hooks-CdKx1CxP.js +2 -0
- package/dist/client/assets/host-advisor-B2Fqs5Dd.css +1 -0
- package/dist/client/assets/index-Bli6bTLU.js +10 -0
- package/dist/client/assets/index-D7UEHxaY.js +1 -0
- package/dist/client/assets/index-DFdlQs_c.js +1 -0
- package/dist/client/assets/index-DhfOMK0D.js +1 -0
- package/dist/client/assets/index-DzlEgstl.css +1 -0
- package/dist/client/assets/index-wLwc74Pu.css +1 -0
- package/dist/client/assets/inspector-panel-B8pigRsg.js +2 -0
- package/dist/client/assets/{keyboard-nav-Chf51dns.js → keyboard-nav-7iEtvu9P.js} +1 -1
- package/dist/client/assets/{lane-observe-BA3g9aVd.js → lane-observe-vfyACHi0.js} +1 -1
- package/dist/client/assets/{lane-roster-store-BiIVlYmG.js → lane-roster-store-pHT3TAVs.js} +1 -1
- package/dist/client/assets/layers-BiZA-Clc.js +1 -0
- package/dist/client/assets/layout-grid-DMpv9CZM.js +1 -0
- package/dist/client/assets/left-BayK4ocL.js +1 -0
- package/dist/client/assets/left-BhZhSrS2.js +1 -0
- package/dist/client/assets/left-BhgU6NOA.js +1 -0
- package/dist/client/assets/left-CY_FGnN7.js +1 -0
- package/dist/client/assets/left-Cq8mjamr.js +1 -0
- package/dist/client/assets/left-DH44V4I_.css +1 -0
- package/dist/client/assets/left-Dnqla0b5.js +2 -0
- package/dist/client/assets/left-Dy403II2.js +2 -0
- package/dist/client/assets/left-R2OOE7VG.css +1 -0
- package/dist/client/assets/left-advisor-oOAtJ9YE.js +1 -0
- package/dist/client/assets/left-agents-TIKe8vW8.js +1 -0
- package/dist/client/assets/left-default-owH0Lwxo.js +1 -0
- package/dist/client/assets/left-lanes-BE_co2lP.js +1 -0
- package/dist/client/assets/left-mission-C_nWUtfA.js +1 -0
- package/dist/client/assets/library-BSVrjn_m.js +1 -0
- package/dist/client/assets/{loader-circle-4LDsy4Ke.js → loader-circle-DoT8gpw6.js} +1 -1
- package/dist/client/assets/{local-agents-DIi2EacM.js → local-agents-BMadXuP1.js} +1 -1
- package/dist/client/assets/mentions-Cd6XticV.js +1 -0
- package/dist/client/assets/{mesh-ops-JZwGuAPn.js → mesh-ops-C0zCLTR8.js} +1 -1
- package/dist/client/assets/{mesh-view-store-Du7VqIT_.js → mesh-view-store-Cpqil_2D.js} +1 -1
- package/dist/client/assets/{message-circle-BM3XgevU.js → message-circle-44KSmbvQ.js} +1 -1
- package/dist/client/assets/{message-markup-BcY1lShv.js → message-markup-DAnnGpWr.js} +1 -1
- package/dist/client/assets/{message-square-ER1_q2pe.js → message-square-DlY4EneU.js} +1 -1
- package/dist/client/assets/mission-control-CnU7dNt1.css +1 -0
- package/dist/client/assets/{mission-control-store-C6w5iVfg.js → mission-control-store-DtjtRs9Z.js} +1 -1
- package/dist/client/assets/{observe-3-jn4SXb.js → observe-DL5_8-Zj.js} +1 -1
- package/dist/client/assets/{operator-attention-BwSPeheT.js → operator-attention-BqoWAlhp.js} +1 -1
- package/dist/client/assets/{page-status-0LPfBC8S.js → page-status-CW8co39E.js} +1 -1
- package/dist/client/assets/persistent-state-DYjP8lqN.js +1 -0
- package/dist/client/assets/{plus-C-2gTcPK.js → plus-64n9qucr.js} +1 -1
- package/dist/client/assets/profile-BkmuseW7.js +1 -0
- package/dist/client/assets/projects-inbox-C0umZMSY.js +1 -0
- package/dist/client/assets/{provider-BvAxRQfE.js → provider-CX9EWecp.js} +1 -1
- package/dist/client/assets/proxy-C35W-YHZ.js +1 -0
- package/dist/client/assets/{radio-v7UAMZGh.js → radio-BjpQTKT0.js} +1 -1
- package/dist/client/assets/{refresh-cw-B5To7b6B.js → refresh-cw-IgN2fZLM.js} +1 -1
- package/dist/client/assets/resolve-panes-CCqRkQdM.js +1 -0
- package/dist/client/assets/resolve-sidebar-context-JkxY8qsV.js +1 -0
- package/dist/client/assets/right-B3PQUHd5.js +1 -0
- package/dist/client/assets/right-B96CBzrV.js +1 -0
- package/dist/client/assets/right-BPirlFC8.js +1 -0
- package/dist/client/assets/right-BUP2Ro_M.js +1 -0
- package/dist/client/assets/right-BVWYPIFX.js +1 -0
- package/dist/client/assets/right-BoAJxwA3.js +1 -0
- package/dist/client/assets/right-C2aOC2li.js +1 -0
- package/dist/client/assets/right-CtPJjgOV.js +1 -0
- package/dist/client/assets/{right-BvoGOUKH.js → right-DqiVyo8v.js} +1 -1
- package/dist/client/assets/right-SfSu0zHC.js +1 -0
- package/dist/client/assets/{rocket-BQQQv2L5.js → rocket-DnmN_YOD.js} +1 -1
- package/dist/client/assets/{router-C65cZYPn.js → router-B0YclXYg.js} +1 -1
- package/dist/client/assets/{scope-views-BOOmgmwx.js → scope-views-Z8aoAmtU.js} +1 -1
- package/dist/client/assets/scout-voice-DvG_3stJ.js +1 -0
- package/dist/client/assets/{scoutbot-BTIErYHo.js → scoutbot-D4vuKzOL.js} +2 -2
- package/dist/client/assets/scoutbot-markdown-BJJyaPu2.js +6 -0
- package/dist/client/assets/{scroll-text-BuneRiAD.js → scroll-text-DRidbcse.js} +1 -1
- package/dist/client/assets/{search-7_n7CxWl.js → search-BbgsEMXa.js} +1 -1
- package/dist/client/assets/secondaryNavConfig-DyC_P9Wx.js +1 -0
- package/dist/client/assets/{selection-bridge-SlGsgHw2.js → selection-bridge-CpzFGx3-.js} +1 -1
- package/dist/client/assets/{send-horizontal-DP16OOIW.js → send-horizontal-BXo2uz3Z.js} +1 -1
- package/dist/client/assets/{server-pYOMFjrT.js → server-Dt3tpiBj.js} +1 -1
- package/dist/client/assets/{session-catalog-_QfQ7fhZ.js → session-catalog-CUQ8LUJY.js} +1 -1
- package/dist/client/assets/{session-table-CYN8e4s3.js → session-table-B4JOKevn.js} +1 -1
- package/dist/client/assets/settings-BzWCF3NF.js +1 -0
- package/dist/client/assets/{sliders-horizontal-D2Z8gz6J.js → sliders-horizontal-7V8B3xsf.js} +1 -1
- package/dist/client/assets/{sparkles-Bth2iK7t.js → sparkles-ytTwpCbZ.js} +1 -1
- package/dist/client/assets/{sse-CL6gctHY.js → sse-CSozY6mp.js} +1 -1
- package/dist/client/assets/system-surfaces-redesign-QVXNeGYw.css +1 -0
- package/dist/client/assets/{tail-display-BRcJltQa.js → tail-display-DcliDVkW.js} +1 -1
- package/dist/client/assets/{tail-events-NLIWLq27.js → tail-events-CrN-Rmxj.js} +1 -1
- package/dist/client/assets/{terminal-By1Lw2i2.js → terminal-BiNIXhna.js} +1 -1
- package/dist/client/assets/{terminal-relay-CjkI5aUy.js → terminal-relay-pSm7_An6.js} +1 -1
- package/dist/client/assets/{terminal-sessions-AmSgHklm.js → terminal-sessions-D4dHTRkt.js} +1 -1
- package/dist/client/assets/{terminal-takeover-7AvNpnkC.js → terminal-takeover-CtA3wcXh.js} +1 -1
- package/dist/client/assets/{runtime-picker-eDEvx2Mz.js → text-BR9Bap0E.js} +1 -1
- package/dist/client/assets/text-rLpBg4_z.css +1 -0
- package/dist/client/assets/{use-conversation-list-BCzY032j.js → use-conversation-list-C0bEXFeH.js} +1 -1
- package/dist/client/assets/{use-fleet-active-asks-CJ6-oj5k.js → use-fleet-active-asks-CK4aw-3G.js} +1 -1
- package/dist/client/assets/{use-mesh-ops-items-D5L-CKe_.js → use-mesh-ops-items-QixBijmT.js} +1 -1
- package/dist/client/assets/use-reduced-motion-BLn59zLn.js +1 -0
- package/dist/client/assets/{use-scout-dev-flags-BohC8seq.js → use-scout-dev-flags-JKb1EhFh.js} +1 -1
- package/dist/client/assets/{useAgentHoverCard-RsLUYyeh.js → useAgentHoverCard-6N8b7qsU.js} +1 -1
- package/dist/client/assets/useContentSecondaryNav-D-hVKzM9.js +1 -0
- package/dist/client/assets/{usePersistentState-D3M4m2Ou.js → usePersistentState-DOEahRlt.js} +1 -1
- package/dist/client/assets/{usePierreRuntime-B4hbNWTz.js → usePierreRuntime-Bq6mXrgd.js} +1 -1
- package/dist/client/assets/{wrench-M4G7WtYB.js → wrench-CQvdf7KT.js} +1 -1
- package/dist/client/assets/{x-ynOfVadO.js → x-BJyPzFnn.js} +1 -1
- package/dist/client/assets/{xterm-DZHyijPp.js → xterm-D6dE_wMr.js} +1 -1
- package/dist/client/assets/zap-rw7uwZht.js +1 -0
- package/dist/client/index.html +2 -2
- package/dist/main.mjs +629 -167
- package/dist/node/main.mjs +454 -270
- package/dist/pairing-runtime-controller.mjs +607 -357
- package/dist/runtime/base-daemon.mjs +384 -21
- package/dist/runtime/broker-daemon.mjs +11024 -10023
- package/dist/runtime/broker-process-manager.mjs +9 -3
- package/dist/runtime/mesh-discover.mjs +9 -3
- package/dist/scout-control-plane-web.mjs +1590 -984
- package/dist/scout-web-server.mjs +1590 -984
- package/package.json +4 -4
- package/dist/client/assets/ActivityScreen-aewI4Ul1.js +0 -1
- package/dist/client/assets/AgentAvatar-DMov24_o.js +0 -1
- package/dist/client/assets/AgentConfigurationScreen-BjG6ECjl.js +0 -1
- package/dist/client/assets/AgentDefinitionsWorkspace-D4MbSMXp.js +0 -1
- package/dist/client/assets/AgentFloorView-h9KDJdw0.js +0 -1
- package/dist/client/assets/AgentInfoScreen-SjhK_SBh.js +0 -1
- package/dist/client/assets/AgentLaneDetailSheet-DnAKe4e3.js +0 -4
- package/dist/client/assets/AgentLanesEmbedScreen-BNOYF16R.js +0 -1
- package/dist/client/assets/AgentLanesView-Ct-Gz5WD.js +0 -2
- package/dist/client/assets/AgentSessions-CDfSfNiE.js +0 -6
- package/dist/client/assets/AgentsConsole-BVxhBqRa.js +0 -1
- package/dist/client/assets/AgentsSubnav-CiIuzxnZ.js +0 -1
- package/dist/client/assets/BriefingDetailScreen-C83o2YfN.js +0 -6
- package/dist/client/assets/BrokerScreen-DplF8d_X.js +0 -5
- package/dist/client/assets/ChatCollapsedStrip-BRljIymi.js +0 -1
- package/dist/client/assets/ContextMenu-CxkmFQcN.js +0 -1
- package/dist/client/assets/ConversationComposer-CWohCCmn.js +0 -1
- package/dist/client/assets/ConversationFeedRows-IWh0JSIL.js +0 -1
- package/dist/client/assets/ConversationHeader-BxTzXl8e.js +0 -1
- package/dist/client/assets/ConversationPanels-D9UCwNkS.js +0 -2
- package/dist/client/assets/ConversationScreen-oZSitVtX.js +0 -1
- package/dist/client/assets/ConversationScreen-yIKEsm-8.css +0 -1
- package/dist/client/assets/ConversationStatus-B6pAbo2w.js +0 -1
- package/dist/client/assets/DocumentFocusViewer-DRKjNG9s.js +0 -1
- package/dist/client/assets/FleetSearch-CYeWn85V.js +0 -1
- package/dist/client/assets/FleetSearch-EXOe8ulE.css +0 -1
- package/dist/client/assets/FlightObserveScreen-DYJJ3Z2B.js +0 -1
- package/dist/client/assets/HomeHero-BPBArHXa.js +0 -1
- package/dist/client/assets/HomeHero-DEl-WBsT.css +0 -1
- package/dist/client/assets/KnowledgeSearchScreen-BP8tD-Bh.js +0 -1
- package/dist/client/assets/LaneTraceDetailSheet-B4i1Ut4R.js +0 -1
- package/dist/client/assets/MessageComposerSuggestions-Dfc3PH2y.js +0 -1
- package/dist/client/assets/MessagesScreen-TgSL5KMc.js +0 -1
- package/dist/client/assets/MissionControlView-D629w2A8.js +0 -1
- package/dist/client/assets/MissionFocusOverlay-Bubrr8Gc.js +0 -1
- package/dist/client/assets/MissionLeftAgentRow-DokImu4Y.js +0 -1
- package/dist/client/assets/MissionLogPane-Cs0LuIkn.js +0 -1
- package/dist/client/assets/NewChatComposer-S08F6_La.js +0 -19
- package/dist/client/assets/ObserveEmbedScreen-CHx2sEAA.js +0 -2
- package/dist/client/assets/ObserveTextFlow-_ApDwRCO.js +0 -2
- package/dist/client/assets/ObservedTopologyPanel-ByW7Ar7p.js +0 -2
- package/dist/client/assets/OpenScoutAppShell-DTmnbG-h.js +0 -88
- package/dist/client/assets/OpsAgentsView-DiFuHcJs.js +0 -1
- package/dist/client/assets/OpsScreen-CCR3U_9P.js +0 -1
- package/dist/client/assets/OpsSubnav-CZs_OL2N.js +0 -1
- package/dist/client/assets/PlanView-C54eAzig.js +0 -1
- package/dist/client/assets/ProjectAgentProfile-BEfYOaxc.js +0 -1
- package/dist/client/assets/ProjectAgentProfileHero-B4f_AoCr.js +0 -1
- package/dist/client/assets/ProjectsInbox-DoPZ17FC.js +0 -2
- package/dist/client/assets/ProjectsRail-CWOkZjsY.js +0 -1
- package/dist/client/assets/ProjectsScreen-Dse0Q6p6.js +0 -1
- package/dist/client/assets/ProjectsThreadAside-DMnfyPLE.js +0 -1
- package/dist/client/assets/Provider-DKZWuzSR.js +0 -1
- package/dist/client/assets/RailRow-Cf9LOiEj.css +0 -1
- package/dist/client/assets/RailRow-DIGd3MMM.js +0 -1
- package/dist/client/assets/RawSessionsTable-Zkl4YDvz.js +0 -1
- package/dist/client/assets/RealtimeVoiceScreen-B_PMJxY_.js +0 -1
- package/dist/client/assets/RepoDiffViewer-VrUJw33u.js +0 -7
- package/dist/client/assets/RepoDiffViewerLazy-BPg_JkYW.js +0 -2
- package/dist/client/assets/ScoutDeckSurface-MbwGp6Ab.js +0 -1
- package/dist/client/assets/ScoutbotBroadcastChip-DAKQKB25.js +0 -2
- package/dist/client/assets/ScoutbotRealtimeVoiceCall-Br4bYVAx.js +0 -1
- package/dist/client/assets/SessionRefScreen-DLZNFZFK.js +0 -1
- package/dist/client/assets/SessionsScreen-D-hN1n4k.js +0 -1
- package/dist/client/assets/SettingsDrawer-BFsnww-k.js +0 -3
- package/dist/client/assets/SettingsDrawer-UX7pFJU_.css +0 -1
- package/dist/client/assets/SettingsScreen-Bc3Xtv5V.js +0 -1
- package/dist/client/assets/Terminal-D_OmdFmr.js +0 -1
- package/dist/client/assets/TerminalEmbedScreen-D21ytNXW.js +0 -1
- package/dist/client/assets/WorkFilesViewer-BDMNbxE4.js +0 -1
- package/dist/client/assets/agent-identity-BxCsXnDp.js +0 -1
- package/dist/client/assets/api-h5zurxmi.js +0 -1
- package/dist/client/assets/broker-display-pp33bLsu.js +0 -2
- package/dist/client/assets/collapsed-strip-Dz-of2SM.css +0 -1
- package/dist/client/assets/content-B-SUUhXj.js +0 -1
- package/dist/client/assets/content-BRY2vo1_.js +0 -1
- package/dist/client/assets/content-BTm0mVyD.js +0 -1
- package/dist/client/assets/content-BTqvyb5E.js +0 -1
- package/dist/client/assets/content-BjDaXmSD.js +0 -1
- package/dist/client/assets/content-BrR6deGh.js +0 -1
- package/dist/client/assets/content-C5yvBEMy.js +0 -1
- package/dist/client/assets/content-CkhG__-v.js +0 -1
- package/dist/client/assets/content-CudIBsiP.js +0 -1
- package/dist/client/assets/content-DBb7ppd5.js +0 -1
- package/dist/client/assets/content-DEw_kGyK.js +0 -1
- package/dist/client/assets/content-DIy0DCzK.js +0 -1
- package/dist/client/assets/content-THl9hRAo.js +0 -1
- package/dist/client/assets/content-vi9FbmV9.js +0 -1
- package/dist/client/assets/content-wcgPMGVf.js +0 -1
- package/dist/client/assets/conversation-model-CHwHZNw-.js +0 -1
- package/dist/client/assets/conversation-motion-features-zU0k3Agz.js +0 -1
- package/dist/client/assets/ctx-panel-B4s49N9e.css +0 -1
- package/dist/client/assets/discover-NDAqNvKt.js +0 -2
- package/dist/client/assets/embed-entry-BVR09F6e.js +0 -2
- package/dist/client/assets/home-moving-signal-C8dTXieA.js +0 -1
- package/dist/client/assets/home-moving-signal-CAa0V91u.css +0 -1
- package/dist/client/assets/home-now-card-BgvVcE83.js +0 -1
- package/dist/client/assets/hooks-DBIezYS2.js +0 -2
- package/dist/client/assets/index-BMwKgdz_.js +0 -1
- package/dist/client/assets/index-Bu-fckyR.css +0 -1
- package/dist/client/assets/index-BxoufAPA.js +0 -1
- package/dist/client/assets/index-Cj7NnSxI.js +0 -1
- package/dist/client/assets/index-CvF09yvf.css +0 -1
- package/dist/client/assets/index-o4FKpU7Z.js +0 -10
- package/dist/client/assets/inspector-panel-Dy2cVTCi.js +0 -2
- package/dist/client/assets/left-BC7p5QbT.js +0 -1
- package/dist/client/assets/left-BCSGqccQ.js +0 -1
- package/dist/client/assets/left-BSyj8PuJ.js +0 -2
- package/dist/client/assets/left-Bk3XnxPD.css +0 -1
- package/dist/client/assets/left-CCoobxPS.css +0 -1
- package/dist/client/assets/left-DDnxNUxd.js +0 -1
- package/dist/client/assets/left-DLoDKxT5.js +0 -2
- package/dist/client/assets/left-O-TBH7JB.js +0 -1
- package/dist/client/assets/left-agents-Dk9Y89lb.js +0 -1
- package/dist/client/assets/left-default-B3JBRQNJ.js +0 -1
- package/dist/client/assets/left-lanes-30Oe_3RM.js +0 -1
- package/dist/client/assets/left-mission-DEl4-7xu.js +0 -1
- package/dist/client/assets/left-plan-B4qdm4Gn.js +0 -2
- package/dist/client/assets/left-rvUOB14X.js +0 -1
- package/dist/client/assets/library-DDKSLFJ_.js +0 -1
- package/dist/client/assets/mentions-CvDaviLJ.js +0 -1
- package/dist/client/assets/mission-control-m3BTDQ9l.css +0 -1
- package/dist/client/assets/model-Co0zkMIc.js +0 -1
- package/dist/client/assets/plan-view-D56fneVF.css +0 -1
- package/dist/client/assets/profile-DW80Gn5k.js +0 -1
- package/dist/client/assets/projects-inbox-DCeD3FfV.js +0 -1
- package/dist/client/assets/resolve-panes-BDi9Qx4R.js +0 -1
- package/dist/client/assets/resolve-sidebar-context-HE-5eZYa.js +0 -1
- package/dist/client/assets/right-BDf_yTv6.js +0 -1
- package/dist/client/assets/right-C-bgjYg-.js +0 -1
- package/dist/client/assets/right-C3JdEfYQ.js +0 -1
- package/dist/client/assets/right-CYIs2tEe.js +0 -1
- package/dist/client/assets/right-CyRCv6Up.js +0 -1
- package/dist/client/assets/right-DBYGtoRv.js +0 -1
- package/dist/client/assets/right-o3LHMiKa.js +0 -1
- package/dist/client/assets/right-oPrcx9MX.js +0 -1
- package/dist/client/assets/right-sSvBUK-j.js +0 -1
- package/dist/client/assets/runtime-picker-vhm0gtLs.css +0 -1
- package/dist/client/assets/scout-voice-B7kXlkcl.js +0 -1
- package/dist/client/assets/secondaryNavConfig-CSFDCQAf.js +0 -1
- package/dist/client/assets/system-surfaces-redesign-B7GQhfpw.css +0 -1
- package/dist/client/assets/text-DsBWV_4k.js +0 -1
- package/dist/client/assets/use-reduced-motion-CqXpVXv-.js +0 -1
- package/dist/client/assets/useContentSecondaryNav-DOr5yHbT.js +0 -1
- /package/dist/client/assets/{document-focus-viewer-BSC_JwVE.css → DocumentFocusViewer-BSC_JwVE.css} +0 -0
package/dist/client/assets/{SessionEmbedScreen-s2mJ5Fg9.js → SessionEmbedScreen-mNjT0R6j.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as n,j as s}from"./index-
|
|
1
|
+
import{r as n,j as s}from"./index-Bli6bTLU.js";import{a as S}from"./api-DEHEgJ9m.js";import{d as j,S as E}from"./SessionObserve-zAlFbwFn.js";import{u as h}from"./sse-CSozY6mp.js";import{ConversationScreen as x}from"./ConversationScreen-CjWWmuuh.js";import{SessionObserveEmbedStatus as y}from"./SessionObserveEvidence-BVawzqoE.js";const I=2500;function l({children:e}){return s.jsx("div",{className:"s-observe-embed-page",children:e})}function a({title:e,detail:r}){return s.jsx(l,{children:s.jsxs("div",{className:"s-observe-embed-empty",children:[s.jsx("div",{className:"s-observe-embed-empty-title",children:e}),r&&s.jsx("div",{className:"s-observe-embed-empty-detail",children:r})]})})}function m({lookup:e}){const r=j({source:e.observe.source,fidelity:e.observe.fidelity,live:e.observe.data.live,eventCount:e.observe.data.events.length});return s.jsxs(l,{children:[s.jsx(y,{source:e.observe.source,fidelity:e.observe.fidelity,sessionId:e.observe.sessionId??e.observe.refId,evidence:r}),s.jsx(E,{data:e.observe.data,agentId:e.observe.agentId??e.session?.agentId??void 0,sessionId:e.observe.sessionId??e.observe.refId,showRail:!1,observeSource:e.observe.source,observeFidelity:e.observe.fidelity})]})}function c(){const e=typeof window>"u"?"":new URLSearchParams(window.location.search).get("ref")?.trim()??"",[r,v]=n.useState(null),[u,d]=n.useState(!0),[b,f]=n.useState(null),i=n.useCallback(async(o=!1)=>{if(!e){d(!1);return}o||d(!0),f(null);try{const t=await S(`/api/session-ref/${encodeURIComponent(e)}`);v(t)}catch(t){o||v(null),f(t instanceof Error?t.message:String(t))}finally{d(!1)}},[e]);return n.useEffect(()=>{i();const o=window.setInterval(()=>{i(!0)},I);return()=>window.clearInterval(o)},[i]),h(()=>{i(!0)}),e?b&&!r?s.jsx(a,{title:"Session unavailable",detail:b}):u&&!r?s.jsx(a,{title:"Resolving session",detail:e}):r?r.kind==="conversation"?s.jsx(l,{children:s.jsx(x,{conversationId:r.conversationId,navigate:()=>{},embedded:!0,showBackNav:!1})}):s.jsx(m,{lookup:r}):s.jsx(a,{title:"Session not found",detail:"This session may have ended or its archive is not on this machine."}):s.jsx(a,{title:"No session reference",detail:"This embed needs a ?ref=<sessionId> query parameter."})}const R=Object.freeze(Object.defineProperty({__proto__:null,SessionEmbedObserveContent:m,SessionEmbedScreen:c,default:c},Symbol.toStringTag,{value:"Module"})),C=Object.freeze(Object.defineProperty({__proto__:null,SessionEmbedScreen:c},Symbol.toStringTag,{value:"Module"}));export{R as S,C as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{r as h,j as t}from"./index-
|
|
1
|
+
import{r as h,j as t}from"./index-Bli6bTLU.js";import{f as ge}from"./bash-format-BRV5C6Gv.js";import{j as js,p as He,k as ks}from"./tail-display-DcliDVkW.js";import{l as ys}from"./lane-edit-display-C_Aujldz.js";import{f as Ns}from"./lane-tool-detail-0WhMf4Vj.js";import{useLaneToolHoverCard as ws}from"./LaneToolHoverCard-197xYmRp.js";import{e as Cs,L as Le,g as Ss,h as Ts,j as Ee,o as $s,b as Re,f as Ls,k as Es,m as je,l as Ge,a as qe}from"./lane-observe-vfyACHi0.js";import{b as Rs}from"./lane-ask-display-B6iCAVcd.js";import{d as Ps}from"./colors-BtO5_zlx.js";import{a as ke}from"./api-DEHEgJ9m.js";import{r as Ue}from"./mentions-Cd6XticV.js";import{a as Os,g as Ve,t as As,b as Is,d as Bs,n as Pe}from"./time-Dhsh_2EG.js";import{M as Ke}from"./message-markup-DAnnGpWr.js";import{q as _s}from"./terminal-takeover-CtA3wcXh.js";import{G as Fs,H as Ds,I as Ms}from"./NewChatComposer-Bgqes0UQ.js";import{u as ye,k as Je}from"./Provider-Ve8yXaWR.js";import{o as Ws}from"./openContent-C6XO6kr5.js";import{O as zs}from"./ObservedTopologyPanel-D85P6RAk.js";import{M as Hs}from"./text-BR9Bap0E.js";import"./index-DFdlQs_c.js";import{ObserveReasoningDisclosure as Gs,ObserveStreamCursor as Oe}from"./ObserveTextFlow-C1f5oize.js";import{SessionObserveReceiptView as qs}from"./SessionObserveEvidence-BVawzqoE.js";import{M as Us}from"./message-circle-44KSmbvQ.js";import{W as Vs}from"./wrench-CQvdf7KT.js";import{E as Ks}from"./external-link-BGHC_naA.js";import{C as Ye}from"./chevron-down-Da5tV19_.js";import{c as Js}from"./createLucideIcon-DLlxGjKt.js";const Ys=[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]],Xs=Js("tag",Ys),Ne=new Set(["bash","shell","terminal","exec","run","command","exec_command","shell_command","local_shell","container_exec","container.exec"]);function I(e){return(e??"").trim()}function q(e){return[e.kind,I(e.tool),I(e.arg),I(e.text),I(e.detail)].join("|")}function Zs(e){if(e.kind!=="tool"||!e.tool||e.result)return!1;const s=I(e.arg).toLowerCase();return s==="started"||s.length>0&&s!=="completed"}function Qs(e){return e.kind!=="tool"||!e.tool?!1:I(e.arg).toLowerCase()==="completed"||!!e.result?.outcome}const Xe=/^permission requested · ([A-Za-z][\w-]*)$/i,Ze=/^permission ([a-z_]+) · ([A-Za-z][\w-]*)$/i;function Qe(e){return e.kind==="system"&&Xe.test(e.text.trim())}function es(e){return e.kind==="system"&&Ze.test(e.text.trim())}function Ae(e){const s=e.text.trim(),n=s.match(Xe);if(n?.[1])return n[1];const a=s.match(Ze);return a?.[2]?a[2]:null}function et(e,s){const n=e.text.trim();return{...e,text:s>1?`${n}
|
|
2
2
|
|
|
3
3
|
(${s} reasoning updates)`:n}}function st(e,s){const n=s.tool??e.tool,a=s.result?.outcome,r=e.arg&&e.arg!=="started"&&e.arg!=="completed"?e.arg:s.arg&&s.arg!=="completed"?s.arg:void 0,o=s.stream?.join(`
|
|
4
4
|
`)??"",l=r?o.trim()?`${n} · ${r} · ${o}`:a?`${n} · ${r} · ${a}`:`${n} · ${r}`:s.text.trim()||(a?`${n} completed · ${a}`:`${n} completed`);return{...s,tool:n,arg:r??"completed",text:l,stream:s.stream??e.stream,diff:s.diff??e.diff,detail:s.detail??e.detail,live:s.live??e.live}}function tt(e){if(e.kind!=="tool"||!e.tool)return!1;const s=I(e.tool).toLowerCase();if(!Ne.has(s))return!1;const n=I(e.arg);return n.length>0&&n!=="started"&&n!=="completed"}function nt(e){if(e.kind!=="tool")return!1;const s=I(e.tool).toLowerCase();return s==="res"?!!(I(e.arg)||(e.stream?.length??0)>0):Ne.has(s)?(e.stream?.length??0)>0:!1}function at(e){return(e.stream?.length??0)>0?e.stream.join(`
|
package/dist/client/assets/{SessionObserveEvidence-ClUW8jpV.js → SessionObserveEvidence-BVawzqoE.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as s}from"./index-
|
|
1
|
+
import{j as s}from"./index-Bli6bTLU.js";function n(e){return e?e.length>18?`${e.slice(0,8)}...${e.slice(-6)}`:e:"no session"}function l({source:e,fidelity:r,sessionId:t,evidence:i}){return s.jsxs("div",{className:"s-observe-embed-status","data-tone":i.tone,children:[s.jsx("span",{className:"s-observe-embed-status-source",children:e}),s.jsx("span",{children:r}),s.jsx("span",{title:t??void 0,children:n(t)}),s.jsx("span",{children:i.eventCountLabel}),i.tone==="live"&&s.jsx("span",{className:"s-observe-embed-status-live",children:"Live"})]})}function o({events:e}){return s.jsxs("section",{className:"s-observe-receipt-view","aria-label":"Session setup receipts",children:[s.jsxs("div",{className:"s-observe-receipt-view-copy",children:[s.jsx("strong",{children:"No observed trace activity"}),s.jsx("span",{children:"These broker lifecycle records confirm setup only."})]}),e.length>0&&s.jsx("ul",{className:"s-observe-receipt-list",children:e.map(r=>s.jsxs("li",{className:"s-observe-receipt",children:[s.jsx("span",{children:r.text}),r.detail&&s.jsx("small",{children:r.detail})]},r.id))})]})}export{l as SessionObserveEmbedStatus,o as SessionObserveReceiptView};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as n,j as e}from"./index-Bli6bTLU.js";import{a as j}from"./api-DEHEgJ9m.js";import{u as g}from"./sse-CSozY6mp.js";import{u as N}from"./tail-events-CrN-Rmxj.js";import{B as I}from"./BackToPicker-CqYhOaLB.js";import{ConversationScreen as S}from"./ConversationScreen-CjWWmuuh.js";import{S as k,a as y}from"./SessionObserve-zAlFbwFn.js";/* empty css */import"./index-BWHgHrtv.js";import"./router-B0YclXYg.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-D4dHTRkt.js";import"./NewChatComposer-Bgqes0UQ.js";import"./text-BR9Bap0E.js";import"./scout-voice-DvG_3stJ.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-DoT8gpw6.js";import"./createLucideIcon-DLlxGjKt.js";import"./conversation-model-CigSPlKA.js";import"./colors-BtO5_zlx.js";import"./time-Dhsh_2EG.js";import"./index-DFdlQs_c.js";import"./HarnessMark-DGZ6o6Ct.js";import"./NewChatOrigin-DpHS2Wmt.js";import"./keyboard-nav-7iEtvu9P.js";import"./x-BJyPzFnn.js";import"./chevron-down-Da5tV19_.js";import"./search-BbgsEMXa.js";import"./file-text-BVhkMWyC.js";import"./ConversationComposer-Ce7Byw48.js";import"./AgentAvatar-B1xvQ7ej.js";import"./Provider-Ve8yXaWR.js";import"./provider-CX9EWecp.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-D4vuKzOL.js";import"./DocumentFocusViewer-DmtFisY9.js";import"./TextDocumentSurface-C7fGlzY8.js";import"./chevron-right-BMqtBds_.js";import"./code-xml-ByQsfOI_.js";import"./arrow-left-i-h6JAgs.js";import"./arrow-right-B0Yi01Zr.js";import"./chunk-HRAB3GC3-BUVYXXAp.js";import"./SpriteAvatar-DMrSssNZ.js";import"./agent-identity-DzHGhLdJ.js";import"./zap-rw7uwZht.js";import"./message-markup-DAnnGpWr.js";import"./mentions-Cd6XticV.js";import"./AgentDetailCard-FelCxQrT.js";import"./AgentLiveActions-Bn3zeZBN.js";import"./terminal-takeover-CtA3wcXh.js";import"./openContent-C6XO6kr5.js";import"./eye-BeCSqJn1.js";import"./terminal-BiNIXhna.js";import"./message-visibility-kJM8XcSG.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-C3sg0ULI.js";import"./AstronautSuit-BADl7m8x.js";import"./ConversationFeedRows-DygDfQn_.js";import"./ConversationPanels-Dg4Y2GgX.js";import"./tail-display-DcliDVkW.js";import"./lane-edit-display-C_Aujldz.js";import"./use-reduced-motion-BLn59zLn.js";import"./proxy-C35W-YHZ.js";import"./activity-D4W2XZY2.js";import"./message-circle-44KSmbvQ.js";import"./ConversationStatus-BhVIYQza.js";import"./check-Bfs7hMb1.js";import"./sparkles-ytTwpCbZ.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-197xYmRp.js";import"./lane-observe-vfyACHi0.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-D85P6RAk.js";import"./ObserveTextFlow-C1f5oize.js";import"./SessionObserveEvidence-BVawzqoE.js";import"./wrench-CQvdf7KT.js";import"./external-link-BGHC_naA.js";function d(o){const s=o?.trim()??"",i=s.split(/[\\/]/).filter(Boolean).at(-1)??s;return i.endsWith(".jsonl")?i.slice(0,-6):i}function R(o){return o.startsWith("native:process:")}function x(o){const[s,i]=n.useState(null),[c,l]=n.useState(!0),[r,p]=n.useState(null),t=n.useRef(null),a=n.useCallback(async()=>{p(null);try{const m=await j(`/api/session-ref/${encodeURIComponent(o)}`);i(m)}catch(m){i(null),p(m instanceof Error?m.message:String(m))}finally{l(!1)}},[o]);n.useEffect(()=>{l(!0),a()},[a]);const u=n.useCallback(()=>{t.current&&clearTimeout(t.current),t.current=setTimeout(()=>{t.current=null,a()},150)},[a]);return g(u),N(m=>{const v=d(m.sessionId),b=d(o),h=s?.kind==="observe"?d(s.observe.sessionId??s.observe.refId):"",f=s?.kind==="observe"?d(s.observe.data.metadata?.session?.externalSessionId):"";v!==b&&(!h||v!==h)&&(!f||v!==f)||u()}),n.useEffect(()=>()=>{t.current&&clearTimeout(t.current)},[]),{lookup:s,loading:c,error:r}}function ss({sessionRef:o}){const{lookup:s,loading:i,error:c}=x(o);return s?.kind==="observe"?e.jsx(y,{data:s.observe.data,agentId:s.observe.agentId??s.session?.agentId??void 0,sessionId:s.observe.sessionId??s.observe.refId,surface:"context",observeSource:s.observe.source,observeFidelity:s.observe.fidelity}):e.jsx("aside",{className:"s-observe-rail s-observe-rail--context",children:e.jsxs("div",{children:[e.jsx("div",{className:"s-observe-rail-label",children:s?.kind==="conversation"?"Conversation":"Session context"}),e.jsx("div",{className:"s-observe-empty",children:i?"Resolving session reference":c?"Session context unavailable":"No observe context captured for this session"})]})})}function rs({sessionRef:o,navigate:s,renderBeforeContent:i,showObserveRail:c=!0,onLookup:l}){const{lookup:r,loading:p,error:t}=x(o);if(n.useEffect(()=>{r&&l?.(r)},[r,l]),r?.kind==="conversation")return e.jsxs(e.Fragment,{children:[i?.(r),e.jsx(S,{conversationId:r.conversationId,navigate:s})]});if(r?.kind==="observe")return e.jsxs(e.Fragment,{children:[i?.(r),e.jsx(k,{data:r.observe.data,agentId:r.observe.agentId??r.session?.agentId??void 0,sessionId:r.observe.sessionId??r.observe.refId,conversationId:r.session?.id??null,showRail:c,observeSource:r.observe.source,observeFidelity:r.observe.fidelity})]});if(p)return e.jsx("div",{className:"s-sessions-screen s-inbox-thread-redesign",children:e.jsx("section",{className:"s-thread-overview",children:e.jsxs("div",{className:"s-thread-overview-copy",children:[e.jsxs("div",{className:"s-sessions-header s-thread-overview-heading",children:[e.jsx("h2",{className:"s-page-title",children:"Session"}),e.jsx("span",{className:"s-meta s-tabular",children:o.slice(0,8)})]}),e.jsxs("p",{className:"s-thread-overview-summary s-session-ref-loading",children:[e.jsx("span",{className:"s-session-ref-loading-dot"}),e.jsx("span",{className:"s-session-ref-loading-dot"}),e.jsx("span",{className:"s-session-ref-loading-dot"}),"Resolving session reference"]})]})})});const a=R(o);return e.jsx("div",{className:"s-sessions-screen s-inbox-thread-redesign",children:e.jsx("section",{className:"s-thread-overview",children:e.jsxs("div",{className:"s-thread-overview-copy",children:[e.jsxs("div",{className:"s-sessions-header s-thread-overview-heading",children:[e.jsx("h2",{className:"s-page-title",children:a?"Process trace unavailable":"Session not found"}),e.jsx("span",{className:"s-meta s-tabular",children:o.slice(0,8)})]}),e.jsx("p",{className:"s-thread-overview-summary",children:a?"This is a live process handle, not a transcript session. No replayable session archive is attached yet.":"This session may have ended or the archive is not available on this machine."}),t&&e.jsx("p",{className:"s-session-ref-error-detail",children:t}),e.jsx("div",{className:"s-session-ref-nav-hint",children:e.jsx(I,{slot:"sessions",fallback:{view:"sessions"},navigate:s})})]})})})}export{ss as SessionRefContextRail,rs as SessionRefScreen};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as r}from"./index-Bli6bTLU.js";import{RawSessionsTable as t}from"./RawSessionsTable-Co3vzwsf.js";/* empty css */import"./DataTable-oJP339bX.js";/* empty css */import"./api-DEHEgJ9m.js";import"./time-Dhsh_2EG.js";import"./tail-events-CrN-Rmxj.js";import"./index-BWHgHrtv.js";import"./openContent-C6XO6kr5.js";import"./Provider-Ve8yXaWR.js";import"./provider-CX9EWecp.js";import"./router-B0YclXYg.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-D4dHTRkt.js";import"./sse-CSozY6mp.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-D4vuKzOL.js";import"./DocumentFocusViewer-DmtFisY9.js";import"./createLucideIcon-DLlxGjKt.js";import"./TextDocumentSurface-C7fGlzY8.js";import"./file-text-BVhkMWyC.js";import"./x-BJyPzFnn.js";import"./chevron-right-BMqtBds_.js";import"./code-xml-ByQsfOI_.js";import"./arrow-left-i-h6JAgs.js";import"./arrow-right-B0Yi01Zr.js";import"./scout-voice-DvG_3stJ.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-7iEtvu9P.js";import"./NewChatComposer-Bgqes0UQ.js";import"./text-BR9Bap0E.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-DoT8gpw6.js";import"./conversation-model-CigSPlKA.js";import"./index-DFdlQs_c.js";import"./HarnessMark-DGZ6o6Ct.js";import"./NewChatOrigin-DpHS2Wmt.js";import"./chevron-down-Da5tV19_.js";import"./search-BbgsEMXa.js";import"./chunk-HRAB3GC3-BUVYXXAp.js";function Q({navigate:o}){return r.jsx(t,{navigate:o})}export{Q as SessionsScreen};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.s-settings-page{height:100%;min-height:0;overflow:auto;background:var(--bg);color:var(--ink);scrollbar-gutter:stable}.s-settings-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4xl);max-width:1320px;margin:0 auto;padding:var(--space-5xl) var(--space-5xl) var(--space-4xl);border-bottom:1px solid color-mix(in srgb,var(--border) 72%,transparent)}.s-settings-page-kicker{margin-bottom:var(--space-sm);color:var(--accent);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:650;letter-spacing:var(--tracking-lg);text-transform:uppercase}.s-settings-page-header h1{margin:0;color:var(--ink);font-family:var(--font-accent-title);font-size:clamp(var(--text-4xl),3vw,var(--text-6xl));font-weight:620;letter-spacing:-.025em;line-height:var(--leading-tight)}.s-settings-page-header p{max-width:64ch;margin:var(--space-sm) 0 0;color:var(--muted);font-size:var(--text-md);line-height:var(--leading-normal)}.s-settings-page-save-state{display:inline-flex;align-items:center;gap:var(--space-sm);flex:none;margin-top:var(--space-xl);color:var(--dim);font-family:var(--font-mono);font-size:var(--text-xs)}.s-settings-page-save-state>span{width:6px;height:6px;border-radius:50%;background:var(--green)}.s-settings-page-save-state[data-state=saving]>span{background:var(--accent)}.s-settings-page-save-state[data-state=neutral]>span{background:var(--dim)}.s-settings-page-save-state[data-state=error]{color:var(--red)}.s-settings-page-save-state[data-state=error]>span{background:var(--red)}.s-settings-page-layout{display:grid;grid-template-columns:220px minmax(0,1fr);align-items:start;gap:var(--space-5xl);max-width:1320px;margin:0 auto;padding:var(--space-4xl) var(--space-5xl) var(--space-7xl)}.s-settings-page .s-settings-rail{position:sticky;top:var(--space-4xl);grid-column:auto;grid-row:auto;padding:0;border-right:0;background:transparent}.s-settings-page .s-settings-rail-btn{border-left-width:1px;padding:var(--space-md) var(--space-xl)}.s-settings-page .s-settings-rail-btn:hover{background:color-mix(in srgb,var(--ink) 4%,transparent)}.s-settings-page .s-settings-rail-btn--active{background:color-mix(in srgb,var(--accent) 7%,transparent)}.s-settings-page .s-settings-content{grid-column:auto;grid-row:auto;min-width:0;overflow:visible;padding:0 0 var(--space-6xl);scroll-margin-top:var(--space-4xl)}.s-settings-page .s-settings-content:not([data-settings-section=appearance]){max-width:820px}.s-settings-loading,.s-settings-inline-note{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-sm)}.s-settings-theme-mode-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm)}.s-settings-theme-mode,.s-settings-shell-choice,.s-settings-palette-choice,.s-settings-interface-choice,.s-settings-contrast-choice,.s-settings-avatar-size-choice,.s-settings-accent-choice{position:relative;display:flex;min-width:0;border:1px solid var(--border);border-radius:var(--radius-lg);background:color-mix(in srgb,var(--surface) 88%,var(--bg));color:var(--muted);cursor:pointer;text-align:left;transition:background .14s ease,border-color .14s ease,color .14s ease,transform .14s cubic-bezier(.2,.8,.2,1)}.s-settings-theme-mode{align-items:center;gap:var(--space-md);min-height:68px;padding:var(--space-lg)}.s-settings-theme-mode:hover,.s-settings-shell-choice:hover,.s-settings-palette-choice:hover,.s-settings-interface-choice:hover,.s-settings-contrast-choice:hover,.s-settings-avatar-size-choice:hover,.s-settings-accent-choice:hover{border-color:color-mix(in srgb,var(--ink) 26%,var(--border));background:color-mix(in srgb,var(--ink) 4%,var(--surface))}.s-settings-theme-mode:focus-visible,.s-settings-shell-choice:focus-visible,.s-settings-palette-choice:focus-visible,.s-settings-interface-choice:focus-visible,.s-settings-contrast-choice:focus-visible,.s-settings-avatar-size-choice:focus-visible,.s-settings-accent-choice:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:none}.s-settings-theme-mode:active,.s-settings-shell-choice:active,.s-settings-palette-choice:active,.s-settings-interface-choice:active,.s-settings-contrast-choice:active,.s-settings-avatar-size-choice:active,.s-settings-accent-choice:active{transform:scale(.985)}.s-settings-theme-mode[data-active],.s-settings-shell-choice[data-active],.s-settings-palette-choice[data-active],.s-settings-interface-choice[data-active],.s-settings-contrast-choice[data-active],.s-settings-avatar-size-choice[data-active],.s-settings-accent-choice[data-active]{border-color:color-mix(in srgb,var(--ink) 58%,var(--border));background:var(--surface);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ink) 20%,transparent);color:var(--ink)}.s-settings-theme-mode>span:not(.s-settings-theme-check){display:flex;flex-direction:column;gap:var(--space-3xs);min-width:0}.s-settings-theme-mode strong{color:var(--ink);font-size:var(--text-md);font-weight:620}.s-settings-theme-mode small{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);line-height:var(--leading-snug)}.s-settings-theme-check{flex:none;margin-left:auto;color:var(--accent)}.s-settings-shell-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.s-settings-shell-choice{display:grid;grid-template-columns:116px minmax(0,1fr);align-items:center;gap:var(--space-lg);min-height:92px;padding:var(--space-md)}.s-settings-shell-sample{position:relative;display:grid;grid-template-columns:18px 34px minmax(0,1fr);grid-template-rows:13px 46px;width:110px;height:61px;overflow:hidden;border:1px solid var(--hud-chrome-border);border-radius:6px;background:var(--hud-bg)}.s-settings-shell-sample>i{display:block;min-width:0}.s-settings-shell-sample [data-part=top]{grid-column:1 / -1;border-bottom:1px solid var(--hud-border);background:color-mix(in srgb,var(--hud-surface) 82%,var(--hud-bg))}.s-settings-shell-sample [data-part=rail]{border-right:1px solid var(--hud-border);background:color-mix(in srgb,var(--hud-surface) 76%,var(--hud-bg))}.s-settings-shell-sample [data-part=list]{display:flex;flex-direction:column;gap:5px;padding:8px 5px;border-right:1px solid var(--hud-border);background:color-mix(in srgb,var(--hud-surface) 90%,var(--hud-bg))}.s-settings-shell-sample [data-part=content]{display:flex;flex-direction:column;gap:6px;padding:10px 7px}.s-settings-shell-sample b{display:block;height:2px;border-radius:999px;background:var(--hud-muted);opacity:.46}.s-settings-shell-sample [data-part=content] b:first-child{width:62%;height:3px;background:var(--hud-ink);opacity:.78}.s-settings-shell-choice[data-shell=slack] .s-settings-shell-sample{grid-template-columns:15px 39px minmax(0,1fr)}.s-settings-shell-choice[data-shell=slack] .s-settings-shell-sample [data-part=top],.s-settings-shell-choice[data-shell=slack] .s-settings-shell-sample [data-part=rail]{background:#451f48}.s-settings-shell-choice[data-shell=slack] .s-settings-shell-sample [data-part=list]{background:#572d5a}.s-settings-appearance-workbench{display:grid;grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:var(--space-5xl)}.s-settings-appearance-controls,.s-settings-preview-column{min-width:0}.s-settings-appearance-controls{display:flex;flex-direction:column;gap:var(--space-4xl)}.s-settings-palette-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.s-settings-palette-choice{display:grid;grid-template-columns:112px minmax(0,1fr);align-items:center;gap:var(--space-lg);min-height:98px;padding:var(--space-md)}.s-settings-palette-sample{display:grid;grid-template-columns:18px 32px minmax(0,1fr);gap:4px;height:72px;padding:5px;overflow:hidden;border:1px solid var(--hud-chrome-border);border-radius:var(--hud-radius);background:var(--hud-bg)}.s-settings-palette-rail,.s-settings-palette-list,.s-settings-palette-detail{display:flex;min-width:0;flex-direction:column;gap:4px;padding:5px;border:1px solid var(--hud-border);border-radius:calc(var(--hud-radius) * .72);background:var(--hud-surface)}.s-settings-palette-rail{align-items:center}.s-settings-palette-rail i,.s-settings-palette-list i,.s-settings-palette-detail i{display:block;width:100%;height:4px;border-radius:calc(var(--hud-radius) * .35);background:color-mix(in srgb,var(--hud-ink) 18%,transparent)}.s-settings-palette-rail i[data-active],.s-settings-palette-detail i[data-action]{background:var(--hud-accent)}.s-settings-palette-list i{flex:1;height:auto;border:1px solid var(--hud-border);background:color-mix(in srgb,var(--hud-bg) 62%,var(--hud-surface))}.s-settings-palette-list i[data-selected]{border-color:var(--hud-accent-line);background:var(--hud-accent-soft)}.s-settings-palette-detail i[data-title]{width:58%;height:5px;margin-bottom:2px;background:color-mix(in srgb,var(--hud-ink) 48%,transparent)}.s-settings-palette-detail i[data-action]{width:42%;height:7px;margin-top:auto}.s-settings-choice-copy{display:flex;min-width:0;flex-direction:column;gap:var(--space-3xs)}.s-settings-choice-title{display:flex;align-items:center;gap:var(--space-sm)}.s-settings-choice-title strong{color:var(--ink);font-size:var(--text-md);font-weight:620}.s-settings-choice-title .s-settings-theme-check{margin-left:auto}.s-settings-choice-copy small{color:var(--muted);font-family:var(--font-sans);font-size:var(--text-xs);line-height:var(--leading-snug)}.s-settings-choice-copy>span:last-child:not(.s-settings-choice-title){color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-sm)}.s-settings-interface-grid,.s-settings-contrast-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm)}.s-settings-interface-choice{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:var(--space-md);min-height:82px;padding:var(--space-md)}.s-settings-shape-sample{display:grid;width:42px;height:42px;place-items:center;border:1px solid var(--hud-chrome-border);border-radius:var(--hud-radius);background:var(--hud-bg)}.s-settings-shape-sample>i{display:grid;width:28px;height:28px;place-items:center;border:1px solid var(--hud-border);border-radius:calc(var(--hud-radius) * .72);background:var(--hud-surface)}.s-settings-shape-sample>i>i{display:block;width:14px;height:4px;border-radius:calc(var(--hud-radius) * .4);background:var(--hud-accent)}.s-settings-contrast-choice{display:grid;grid-template-columns:30px minmax(0,1fr);gap:0 var(--space-md);align-items:center;min-height:64px;padding:var(--space-md)}.s-settings-contrast-choice strong,.s-settings-contrast-choice small{grid-column:2}.s-settings-contrast-choice strong{align-self:end;color:var(--ink);font-size:var(--text-md);font-weight:620}.s-settings-contrast-choice small{align-self:start;color:var(--muted);font-family:var(--font-mono);font-size:var(--text-2xs)}.s-settings-contrast-lines{grid-row:1 / span 2;display:flex;width:30px;height:36px;flex-direction:column;justify-content:center;gap:5px}.s-settings-contrast-lines i{height:1px;background:var(--ink)}.s-settings-contrast-lines[data-level=soft] i{opacity:.18}.s-settings-contrast-lines[data-level=balanced] i{opacity:.42}.s-settings-contrast-lines[data-level=strong] i{opacity:.78}.s-settings-accent-row{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.s-settings-accent-choice{align-items:center;gap:var(--space-sm);min-height:38px;padding:var(--space-sm) var(--space-md);color:var(--muted);font-family:var(--font-mono);font-size:var(--text-xs)}.s-settings-accent-choice>svg{margin-left:var(--space-2xs);color:var(--ink)}.s-settings-accent-dot{display:grid;width:16px;height:16px;place-items:center;border:1px solid var(--hud-chrome-border);border-radius:50%;background:var(--hud-bg)}.s-settings-accent-dot i{display:block;width:8px;height:8px;border-radius:50%;background:var(--hud-accent)}.s-settings-avatar-size-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-sm)}.s-settings-avatar-size-choice{flex-direction:column;align-items:flex-start;gap:var(--space-2xs);padding:var(--space-md)}.s-settings-avatar-size-sample{display:flex;align-items:center;min-height:40px;margin-bottom:var(--space-2xs);gap:0}.s-settings-avatar-size-sample>*+*{margin-left:-6px}.s-settings-avatar-size-choice .s-settings-choice-title{display:flex;align-items:center;gap:var(--space-2xs);color:var(--ink);font-size:var(--text-md);font-weight:620}.s-settings-avatar-size-choice small{color:var(--muted);font-size:var(--text-2xs);line-height:1.35}.s-settings-avatar-size-spec{color:color-mix(in srgb,var(--muted) 78%,transparent);font-family:var(--font-mono);font-size:var(--text-3xs, var(--text-2xs));letter-spacing:.06em}.s-settings-stage-hero-card{position:relative;display:flex;flex-direction:column;border:1px solid var(--hud-border);border-top:1px solid color-mix(in srgb,var(--hud-border) 70%,white 30%);border-radius:calc(var(--hud-radius) * 1.5);background:color-mix(in srgb,var(--hud-surface) 88%,var(--hud-bg));box-shadow:inset 0 1px #ffffff0d,0 4px 20px color-mix(in srgb,black 25%,transparent);padding:var(--space-lg);overflow:hidden;transition:all .3s ease}.s-settings-stage-hero-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding-bottom:var(--space-md);border-bottom:1px solid color-mix(in srgb,var(--hud-border) 60%,transparent)}.s-settings-stage-hero-badge{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:600;letter-spacing:.1em;color:var(--hud-muted)}.s-settings-stage-live-dot{width:5px;height:5px;border-radius:50%;background:color-mix(in srgb,var(--hud-ink) 45%,transparent)}.s-settings-stage-hero-body{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:var(--space-xl);padding-top:var(--space-md)}.s-settings-stage-art-col{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:140px}.s-settings-stage-click-hint{margin-top:8px;font-family:var(--font-mono);font-size:10px;color:var(--hud-muted);text-align:center;-webkit-user-select:none;user-select:none}.s-settings-stage-meta-col{display:flex;flex-direction:column;gap:var(--space-xs);min-width:0}.s-settings-stage-title-row{display:flex;align-items:baseline;gap:var(--space-sm);flex-wrap:wrap}.s-settings-stage-char-name{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:700;color:var(--hud-ink);letter-spacing:.05em}.s-settings-stage-char-title{font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;color:var(--hud-muted)}.s-settings-stage-kernel-pill{display:inline-flex;align-items:center;width:fit-content;padding:2px 8px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--hud-ink) 7%,transparent);border:1px solid color-mix(in srgb,var(--hud-border) 60%,transparent)}.s-settings-stage-kernel-pill code{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--hud-ink);opacity:.85}.s-settings-stage-blurb{margin:4px 0 8px;font-size:var(--text-xs);line-height:1.45;color:var(--hud-muted)}.s-settings-stage-identity-group{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) var(--space-md);border:1px solid color-mix(in srgb,var(--hud-border) 70%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--hud-bg) 70%,var(--hud-surface));flex-wrap:wrap}.s-settings-stage-operator-id{display:flex;flex-direction:column}.s-settings-stage-operator-id strong{font-size:var(--text-sm);font-weight:600;color:var(--hud-ink)}.s-settings-stage-operator-id span{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--hud-muted)}.s-settings-preview-column{position:sticky;top:var(--space-4xl)}.s-settings-live-preview{overflow:hidden;border:1px solid var(--hud-chrome-border);border-radius:var(--hud-radius);background:var(--hud-bg);color:var(--hud-ink)}.s-settings-live-preview-bar{display:flex;align-items:center;justify-content:space-between;height:34px;padding:0 var(--space-md);border-bottom:1px solid var(--hud-border);background:color-mix(in srgb,var(--hud-surface) 78%,var(--hud-bg));color:var(--hud-muted);font-family:var(--hud-font-mono);font-size:var(--text-3xs);letter-spacing:.12em}.s-settings-live-preview-bar>span,.s-settings-live-preview-state{display:inline-flex;align-items:center;gap:5px}.s-settings-live-preview-bar i,.s-settings-live-preview-event i{display:block;width:6px;height:6px;border-radius:50%;background:var(--hud-accent)}.s-settings-live-preview-shell{display:grid;grid-template-columns:28px 104px minmax(0,1fr);min-height:294px}.s-settings-live-preview-rail,.s-settings-live-preview-list{border-right:1px solid var(--hud-border);background:color-mix(in srgb,var(--hud-surface) 74%,var(--hud-bg))}.s-settings-live-preview-rail{display:flex;align-items:center;gap:12px;padding:14px 7px;flex-direction:column}.s-settings-live-preview-rail i{display:block;width:10px;height:10px;border:1px solid var(--hud-border);border-radius:calc(var(--hud-radius) * .45)}.s-settings-live-preview-rail i[data-active]{border-color:var(--hud-accent-line);background:var(--hud-accent-soft)}.s-settings-live-preview-list{padding:13px 7px}.s-settings-live-preview-kicker{display:block;margin-bottom:9px;color:var(--hud-muted);font-family:var(--hud-font-mono);font-size:var(--text-3xs);letter-spacing:.11em}.s-settings-live-preview-row{display:grid;grid-template-columns:6px 1fr auto;align-items:center;gap:5px;min-height:29px;padding:0 5px;border:1px solid transparent;border-radius:calc(var(--hud-radius) * .55);color:var(--hud-muted);font-size:var(--text-3xs)}.s-settings-live-preview-row[data-selected]{border-color:var(--hud-accent-line);background:var(--hud-accent-soft);color:var(--hud-ink)}.s-settings-live-preview-row>i{width:5px;height:5px;border-radius:50%;background:var(--hud-accent)}.s-settings-live-preview-row b{overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.s-settings-live-preview-row small{color:var(--hud-muted);font-family:var(--hud-font-mono);font-size:var(--text-3xs)}.s-settings-live-preview-detail{display:flex;min-width:0;flex-direction:column;padding:18px 14px}.s-settings-live-preview-detail strong{color:var(--hud-ink);font-size:var(--text-lg);font-weight:620}.s-settings-live-preview-detail p{margin:7px 0 14px;color:var(--hud-muted);font-size:var(--text-2xs);line-height:1.5}.s-settings-live-preview-event{display:flex;align-items:center;gap:6px;padding:8px;border:1px solid var(--hud-border);border-radius:calc(var(--hud-radius) * .65);background:var(--hud-surface);color:var(--hud-muted);font-family:var(--hud-font-mono);font-size:var(--text-3xs);line-height:1.45}.s-settings-live-preview-detail button{align-self:flex-start;margin-top:auto;padding:5px 8px;border:1px solid var(--hud-accent-line);border-radius:calc(var(--hud-radius) * .65);background:var(--hud-accent-soft);color:var(--hud-accent);font-family:var(--hud-font-mono);font-size:var(--text-3xs)}.s-settings-theme-readout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:var(--space-md) 0 0;border-top:1px solid var(--border);border-left:1px solid var(--border)}.s-settings-theme-readout>div{padding:var(--space-md);border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.s-settings-theme-readout dt,.s-settings-theme-readout dd{margin:0}.s-settings-theme-readout dt{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-md);text-transform:uppercase}.s-settings-theme-readout dd{margin-top:var(--space-2xs);color:var(--ink);font-size:var(--text-sm)}.s-settings-preview-note{margin:var(--space-md) 0 0;color:var(--muted);font-size:var(--text-xs);line-height:var(--leading-normal)}.s-settings-appearance-note{display:grid;grid-template-columns:minmax(140px,.4fr) 1fr;gap:var(--space-2xl);padding:var(--space-xl) 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.s-settings-appearance-note strong{color:var(--ink);font-size:var(--text-sm);font-weight:620}.s-settings-appearance-note span{color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.s-settings-scrim{position:fixed;inset:0;z-index:90;background:color-mix(in srgb,var(--bg) 55%,transparent);transition:opacity .18s ease}.s-settings-scrim--open{opacity:1;pointer-events:auto;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}.s-settings-scrim--closed{opacity:0;pointer-events:none;backdrop-filter:none;-webkit-backdrop-filter:none}.s-settings-drawer{position:fixed;left:0;top:0;bottom:0;width:720px;z-index:100;background:var(--bg);color:var(--ink);border-right:1px solid var(--border);box-shadow:0 0 60px color-mix(in srgb,var(--bg) 60%,transparent);display:grid;grid-template-columns:200px 1fr;grid-template-rows:52px 1fr 48px;transition:transform .24s cubic-bezier(.2,.8,.2,1)}.s-settings-drawer--open{transform:translate(0)}.s-settings-drawer--closed{transform:translate(-100%)}.s-settings-header{grid-column:1 / -1;grid-row:1;display:flex;align-items:center;gap:var(--space-xl);padding:0 var(--space-4xl);border-bottom:1px solid var(--border);background:var(--surface)}.s-settings-header-title{font-family:var(--font-mono);font-size:var(--text-md);letter-spacing:.24em;font-weight:600}.s-settings-header-sep{color:var(--dim)}.s-settings-header-section{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--dim);letter-spacing:var(--tracking-md);text-transform:uppercase}.s-settings-header-hint{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--dim)}.s-settings-close{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:var(--text-3xl);padding:var(--space-2xs);line-height:var(--leading-none)}.s-settings-rail{grid-column:1;grid-row:2;border-right:1px solid var(--border);padding:var(--space-3xl) 0;background:var(--surface)}.s-settings-rail-btn{display:flex;flex-direction:column;gap:var(--space-3xs);width:100%;padding:var(--space-md) var(--space-3xl);text-align:left;border:0;background:transparent;border-left:2px solid transparent;cursor:pointer;color:inherit;text-decoration:none}.s-settings-rail-btn--active{background:var(--bg);border-left-color:var(--accent)}.s-settings-rail-label{font-size:var(--text-lg);font-weight:500;color:var(--muted)}.s-settings-rail-btn--active .s-settings-rail-label{color:var(--ink)}.s-settings-rail-sub{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim);letter-spacing:var(--tracking-sm)}.s-settings-content{grid-column:2;grid-row:2;overflow:auto;padding:var(--space-5xl)}.s-settings-footer{grid-column:1 / -1;grid-row:3;display:flex;align-items:center;gap:var(--space-md);padding:0 var(--space-4xl);border-top:1px solid var(--border);background:var(--surface);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--dim);letter-spacing:var(--tracking-md)}.s-settings-footer-sync{color:var(--green)}.s-settings-section-rule{display:flex;align-items:center;gap:var(--space-lg);padding:var(--space-2xs) 0;margin-bottom:var(--space-2xl)}.s-settings-section-label{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-lg);text-transform:uppercase;color:var(--dim);flex-shrink:0}.s-settings-section-line{flex:1;height:1px;background:var(--border)}.s-settings-section-right{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--dim);flex-shrink:0}.s-settings-field{display:flex;flex-direction:column;gap:var(--space-xs)}.s-settings-field-label{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-lg);text-transform:uppercase;color:var(--muted)}.s-settings-field-hint{font-size:var(--text-sm);color:var(--dim);line-height:var(--leading-snug)}.s-settings-input{padding:var(--space-md) var(--space-lg);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-lg);outline:none}.s-settings-input:focus{border-color:var(--accent)}.s-settings-input--mono{font-family:var(--font-mono);font-size:var(--text-md)}.s-settings-textarea{padding:var(--space-md) var(--space-lg);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-lg);line-height:var(--leading-normal);outline:none;resize:vertical}.s-settings-textarea:focus{border-color:var(--accent)}.s-settings-option-grid{display:grid;gap:var(--space-xs)}.s-settings-option-stacked{display:flex;flex-direction:column;gap:var(--space-xs)}.s-settings-option-btn{padding:var(--space-md) var(--space-lg);text-align:left;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-md);cursor:pointer;display:flex;flex-direction:column;gap:var(--space-3xs);color:inherit}.s-settings-option-btn--active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.s-settings-option-label{font-size:var(--text-md);font-weight:500;color:var(--muted)}.s-settings-option-btn--active .s-settings-option-label{color:var(--ink)}.s-settings-option-sub{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--dim);letter-spacing:var(--tracking-sm)}.s-settings-slider-wrap{display:flex;align-items:center;gap:var(--space-lg)}.s-settings-slider-wrap input[type=range]{flex:1;accent-color:var(--accent)}.s-settings-slider-value{font-family:var(--font-mono);font-size:var(--text-md);color:var(--ink);padding:var(--space-2xs) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);min-width:70px;text-align:center}.s-settings-identity-card{display:flex;gap:var(--space-3xl);align-items:center;padding:var(--space-3xl);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.s-settings-identity-dot{width:56px;height:56px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:var(--text-5xl);font-weight:600;flex-shrink:0}.s-settings-identity-name{font-size:var(--text-5xl);font-weight:500;line-height:var(--leading-none)}.s-settings-identity-meta{font-family:var(--font-mono);font-size:var(--text-md);color:var(--dim);margin-top:var(--space-2xs)}.s-settings-hue-wrap{display:flex;flex-direction:column;gap:var(--space-xs)}.s-settings-hue-row{display:flex;gap:var(--space-2xs)}.s-settings-hue-dot{width:22px;height:22px;border-radius:50%;border:1px solid var(--border);cursor:pointer;padding:0}.s-settings-hue-dot--active{border:2px solid var(--accent)}.s-settings-two-col{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2xl)}.s-settings-col-gap{display:flex;flex-direction:column;gap:var(--space-4xl)}.s-settings-button-row{display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.s-settings-device-row{display:grid;grid-template-columns:40px 1fr auto auto;align-items:center;gap:var(--space-xl);padding:var(--space-xl) var(--space-2xl);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.s-settings-device-icon{width:36px;height:36px;border-radius:var(--radius-md);background:var(--bg);border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;font-size:var(--text-3xl);color:var(--muted)}.s-settings-device-name{font-size:var(--text-lg);font-weight:500}.s-settings-device-meta{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--dim);letter-spacing:var(--tracking-sm)}.s-settings-device-status{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:var(--tracking-md);text-transform:uppercase}.s-settings-relay-card{padding:var(--space-2xl);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);display:grid;grid-template-columns:1fr auto;gap:var(--space-2xl);align-items:center}.s-settings-relay-title{font-size:var(--text-lg);font-weight:500;margin-bottom:var(--space-2xs)}.s-settings-relay-meta{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--dim);letter-spacing:var(--tracking-sm)}.s-settings-relay-desc{font-size:var(--text-md);color:var(--muted);margin-top:var(--space-xs);line-height:var(--leading-normal)}.s-settings-about{display:flex;flex-direction:column;gap:var(--space-4xl)}.s-settings-about-summary{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-3xl);padding:var(--space-3xl);border:1px solid color-mix(in srgb,var(--ink) 6%,transparent);border-radius:var(--radius-xl);background:color-mix(in srgb,var(--surface) 96%,transparent)}.s-settings-about-summary>div:first-child{display:grid;gap:var(--space-xs);min-width:0}.s-settings-about-product{color:var(--accent);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:650;letter-spacing:var(--tracking-md);text-transform:uppercase}.s-settings-about-summary strong{color:var(--ink);font-family:var(--font-accent-title);font-size:clamp(var(--text-4xl),4vw,var(--text-6xl));font-weight:620;letter-spacing:-.025em;line-height:var(--leading-tight)}.s-settings-about-source{color:var(--muted);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading-normal);overflow-wrap:anywhere}.s-settings-about-collected{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-normal)}.s-settings-about-actions{display:flex;flex:none;flex-wrap:wrap;gap:var(--space-sm)}.s-settings-about-actions .s-btn{display:inline-flex;align-items:center;gap:var(--space-xs)}.s-settings-about-copy{color:var(--accent)}.s-settings-about-warning{margin-top:calc(-1 * var(--space-md));padding:var(--space-lg) var(--space-xl);border:1px solid color-mix(in srgb,var(--amber) 28%,var(--border));border-radius:var(--radius-md);background:color-mix(in srgb,var(--amber) 7%,transparent);color:color-mix(in srgb,var(--amber) 78%,var(--ink));font-size:var(--text-sm);line-height:var(--leading-normal)}.s-settings-about-copy-fallback{display:grid;gap:var(--space-sm);margin-top:calc(-1 * var(--space-md));padding:var(--space-lg) var(--space-xl);border:1px solid color-mix(in srgb,var(--red) 26%,var(--border));border-radius:var(--radius-md);background:color-mix(in srgb,var(--red) 5%,transparent);color:var(--ink);font-size:var(--text-sm)}.s-settings-about-copy-fallback>span{color:var(--muted)}.s-settings-about-copy-fallback textarea{width:100%;min-height:180px;padding:var(--space-md);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-normal);resize:vertical}.s-settings-about-ledger{margin:calc(-1 * var(--space-2xl)) 0 0;border-top:1px solid var(--border)}.s-settings-about-fact{display:grid;grid-template-columns:minmax(140px,.34fr) minmax(0,1fr);gap:var(--space-2xl);padding:var(--space-lg) 0;border-bottom:1px solid var(--border)}.s-settings-about-fact dt{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:var(--tracking-sm);line-height:var(--leading-normal);text-transform:uppercase}.s-settings-about-fact dd{display:grid;gap:var(--space-2xs);min-width:0;margin:0}.s-settings-about-fact code{color:var(--ink);font-family:var(--font-mono);font-size:var(--text-sm);line-height:var(--leading-normal);overflow-wrap:anywhere;white-space:normal}.s-settings-about-fact dd>span{max-width:68ch;color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-normal)}.s-settings-about-note{max-width:70ch;margin:0;color:var(--muted);font-size:var(--text-sm);line-height:var(--leading-normal)}@media(max-width:800px){.s-settings-drawer{width:100%;grid-template-columns:1fr;grid-template-rows:52px auto 1fr 48px}.s-settings-rail{grid-column:1;grid-row:2;border-right:none;border-bottom:1px solid var(--border);display:flex;padding:var(--space-sm) var(--space-lg);gap:var(--space-2xs);overflow-x:auto}.s-settings-rail-btn{flex-direction:row;gap:var(--space-sm);padding:var(--space-xs) var(--space-lg);white-space:nowrap}.s-settings-content{grid-column:1;grid-row:3}.s-settings-footer{grid-column:1;grid-row:4}}.s-settings-realtime-voice{display:flex;align-items:flex-start;gap:var(--space-md);padding:var(--space-md);border:1px solid color-mix(in srgb,var(--border) 68%,transparent);border-radius:var(--radius-md);background:color-mix(in srgb,var(--surface) 70%,transparent)}.s-settings-realtime-voice[data-enabled=true]{border-color:color-mix(in srgb,var(--green) 36%,var(--border));background:color-mix(in srgb,var(--green) 6%,var(--surface))}.s-settings-realtime-voice[data-unavailable=true]{opacity:.7}.s-settings-realtime-voice-copy{display:grid;gap:var(--space-2xs);min-width:0}.s-settings-realtime-voice-copy strong{color:var(--ink);font-size:var(--text-sm);font-weight:650}.s-settings-realtime-voice-copy>span{color:var(--muted);font-size:var(--text-xs);line-height:var(--leading-normal)}.s-settings-realtime-voice-copy em{color:var(--dim);font-family:var(--font-mono);font-size:var(--text-2xs);font-style:normal}@media(max-width:1180px){.s-settings-page-layout{grid-template-columns:190px minmax(0,1fr);gap:var(--space-3xl)}.s-settings-appearance-workbench{grid-template-columns:1fr}.s-settings-preview-column{position:static}.s-settings-live-preview-shell{min-height:250px}}@media(max-width:760px){.s-settings-page-header{flex-direction:column;gap:var(--space-xl);padding:var(--space-3xl) var(--space-2xl)}.s-settings-page-save-state{margin-top:0}.s-settings-page-layout{display:block;padding:0 var(--space-2xl) var(--space-6xl)}.s-settings-page .s-settings-rail{position:sticky;top:0;z-index:5;display:flex;gap:var(--space-2xs);margin:0 calc(-1 * var(--space-2xl)) var(--space-3xl);padding:var(--space-sm) var(--space-2xl);overflow-x:auto;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg) 96%,transparent)}.s-settings-page .s-settings-rail-btn{flex:none;width:auto;min-height:42px;padding:var(--space-sm) var(--space-lg);border:1px solid transparent;border-radius:var(--radius-md);white-space:nowrap}.s-settings-page .s-settings-rail-btn--active{border-color:color-mix(in srgb,var(--accent) 36%,var(--border))}.s-settings-page .s-settings-rail-sub{display:none}.s-settings-theme-mode-grid,.s-settings-palette-grid,.s-settings-interface-grid,.s-settings-contrast-grid{grid-template-columns:1fr}.s-settings-palette-choice{grid-template-columns:112px minmax(0,1fr)}.s-settings-live-preview-shell{grid-template-columns:28px 96px minmax(0,1fr)}.s-settings-appearance-note{grid-template-columns:1fr;gap:var(--space-sm)}.s-settings-two-col{grid-template-columns:1fr}.s-settings-about-summary{align-items:stretch;flex-direction:column}.s-settings-about-actions .s-btn{justify-content:center;min-height:42px}.s-settings-about-fact{grid-template-columns:1fr;gap:var(--space-2xs)}}@media(prefers-reduced-motion:reduce){.s-settings-theme-mode,.s-settings-palette-choice,.s-settings-interface-choice,.s-settings-contrast-choice,.s-settings-accent-choice{transition:none}.s-settings-theme-mode:active,.s-settings-palette-choice:active,.s-settings-interface-choice:active,.s-settings-contrast-choice:active,.s-settings-accent-choice:active{transform:none}}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{j as e,r as o,O as ge}from"./index-Bli6bTLU.js";import{a as pe}from"./provider-CX9EWecp.js";import{a as M}from"./api-DEHEgJ9m.js";import{g as ve,a as be,e as xe,s as je,b as ye,d as fe,c as Ne}from"./credentials-qwds23lv.js";import{u as le,p as Se}from"./Provider-Ve8yXaWR.js";import{t as we}from"./time-Dhsh_2EG.js";import{d as ke,k as Ce,l as Ae}from"./scout-voice-DvG_3stJ.js";import{u as Te}from"./keyboard-nav-7iEtvu9P.js";import{a as Ee}from"./router-B0YclXYg.js";import{p as Z}from"./AgentAvatar-B1xvQ7ej.js";import{S as re}from"./SpriteAvatar-DMrSssNZ.js";import{VoiceHostStatusBanner as Oe,VoicePermissionsPanel as Ie}from"./VoicePermissionsPanel-BkIGTzgw.js";import{u as $e}from"./chunk-HRAB3GC3-BUVYXXAp.js";import{C as $}from"./check-Bfs7hMb1.js";import{c as U}from"./createLucideIcon-DLlxGjKt.js";import{R as Pe}from"./refresh-cw-IgN2fZLM.js";import{C as Re}from"./copy-De4s38o2.js";const Le=[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]],De=U("monitor",Le);const Me=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],Ve=U("moon",Me);const He=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],_e=U("sun",He),ze=[195,125,300,45,355,210];function Be(s){return`oklch(0.80 0.14 ${s})`}function m({label:s,right:t}){return e.jsxs("div",{className:"s-settings-section-rule",children:[e.jsx("span",{className:"s-settings-section-label",children:s}),e.jsx("span",{className:"s-settings-section-line"}),t&&e.jsx("span",{className:"s-settings-section-right",children:t})]})}function N({label:s,hint:t,children:n}){return e.jsxs("div",{className:"s-settings-field",children:[e.jsx("label",{className:"s-settings-field-label",children:s}),n,t&&e.jsx("span",{className:"s-settings-field-hint",children:t})]})}function P({value:s,onChange:t,mono:n}){return e.jsx("input",{className:`s-settings-input${n?" s-settings-input--mono":""}`,value:s,onChange:i=>t(i.target.value)})}function Q({value:s,onChange:t,rows:n=3}){return e.jsx("textarea",{className:"s-settings-textarea",value:s,onChange:i=>t(i.target.value),rows:n})}function Fe({value:s,onChange:t,min:n,max:i,step:u=1,unit:h=""}){return e.jsxs("div",{className:"s-settings-slider-wrap",children:[e.jsx("input",{type:"range",min:n,max:i,step:u,value:s,onChange:v=>t(Number(v.target.value))}),e.jsxs("span",{className:"s-settings-slider-value",children:[s," ",h]})]})}function R({value:s,onChange:t,options:n,stacked:i,columns:u}){return e.jsx("div",{className:i?"s-settings-option-stacked":"s-settings-option-grid",style:i?void 0:{gridTemplateColumns:`repeat(${u??n.length}, 1fr)`},children:n.map(h=>e.jsxs("button",{className:`s-settings-option-btn${s===h.id?" s-settings-option-btn--active":""}`,onClick:()=>t(h.id),children:[e.jsx("span",{className:"s-settings-option-label",children:h.label}),e.jsx("span",{className:"s-settings-option-sub",children:h.sub})]},h.id))})}const Ke=[{id:"system",label:"System",sub:"Follow this device",icon:De},{id:"light",label:"Light",sub:"Bright workspace",icon:_e},{id:"dark",label:"Dark",sub:"Low-light workspace",icon:Ve}],Ue=[{id:"scout",label:"Scout",sub:"Control-room navigation"},{id:"slack",label:"Slack",sub:"Workspace rail and channel-style lists"}],J=[{id:"scout",label:"Scout",sub:"Near-neutral control room",spec:"SLATE · LIME"},{id:"graphite",label:"Graphite",sub:"Monochrome technical chassis",spec:"BLACK · SLATE"},{id:"polar",label:"Polar",sub:"Nord-inspired arctic slate",spec:"POLAR · FROST"},{id:"solar",label:"Solar",sub:"Solarized-inspired measured contrast",spec:"TEAL · PAPER"}],ee=[{id:"hudson",label:"Rounded",sub:"Soft corners and luminous chrome",spec:"8PX"},{id:"editorial",label:"Compact",sub:"Tighter corners and flatter hierarchy",spec:"4PX"},{id:"drafting",label:"Square",sub:"Zero-radius technical grid",spec:"0PX"}],se=[{id:"soft",label:"Soft",sub:"Quiet separators"},{id:"balanced",label:"Defined",sub:"Clear structure"},{id:"strong",label:"Strong",sub:"High separation"}],te=[{id:"theme",label:"Theme"},{id:"lime",label:"Lime"},{id:"cyan",label:"Cyan"},{id:"violet",label:"Violet"},{id:"amber",label:"Amber"}],ae=[{id:"compact",label:"Compact",sub:"More rows per screen; the name carries"},{id:"regular",label:"Regular",sub:"Scout's default balance"},{id:"large",label:"Large",sub:"Faces legible at a glance"}],We=["milo","vex","sprout"];function H({className:s,theme:t,template:n,palette:i,contrast:u,accent:h,children:v}){return e.jsx("div",{className:s,"data-scout-theme":t,"data-scout-theme-mode":t,"data-scout-palette":i,"data-scout-contrast":u,"data-scout-accent":h,"data-hudson-theme":t,"data-hudson-template":n,children:v})}function qe({palette:s,theme:t,template:n}){return e.jsxs(H,{className:"s-settings-palette-sample",theme:t,template:n,palette:s,contrast:"balanced",accent:"theme",children:[e.jsxs("span",{className:"s-settings-palette-rail",children:[e.jsx("i",{}),e.jsx("i",{"data-active":!0}),e.jsx("i",{}),e.jsx("i",{})]}),e.jsxs("span",{className:"s-settings-palette-list",children:[e.jsx("i",{}),e.jsx("i",{"data-selected":!0}),e.jsx("i",{})]}),e.jsxs("span",{className:"s-settings-palette-detail",children:[e.jsx("i",{"data-title":!0}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{"data-action":!0})]})]})}function Ge({theme:s,template:t,palette:n,contrast:i,accent:u}){return e.jsxs(H,{className:"s-settings-live-preview",theme:s,template:t,palette:n,contrast:i,accent:u,children:[e.jsxs("div",{className:"s-settings-live-preview-bar",children:[e.jsxs("span",{children:[e.jsx("i",{})," SCOUT"]}),e.jsxs("span",{className:"s-settings-live-preview-state",children:[e.jsx("i",{})," WORKING"]})]}),e.jsxs("div",{className:"s-settings-live-preview-shell",children:[e.jsxs("div",{className:"s-settings-live-preview-rail","aria-hidden":"true",children:[e.jsx("i",{"data-active":!0}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{})]}),e.jsxs("div",{className:"s-settings-live-preview-list",children:[e.jsx("span",{className:"s-settings-live-preview-kicker",children:"CONVERSATIONS"}),e.jsxs("span",{className:"s-settings-live-preview-row","data-selected":!0,children:[e.jsx("i",{}),e.jsx("b",{children:"Openscout"}),e.jsx("small",{children:"now"})]}),e.jsxs("span",{className:"s-settings-live-preview-row",children:[e.jsx("i",{}),e.jsx("b",{children:"Hudson"}),e.jsx("small",{children:"8m"})]}),e.jsxs("span",{className:"s-settings-live-preview-row",children:[e.jsx("i",{}),e.jsx("b",{children:"Scout"}),e.jsx("small",{children:"1h"})]})]}),e.jsxs("div",{className:"s-settings-live-preview-detail",children:[e.jsx("span",{className:"s-settings-live-preview-kicker",children:"ACTIVE FLIGHT"}),e.jsx("strong",{children:"Theme system review"}),e.jsx("p",{children:"Separating palette, interface shape, and contrast keeps every choice honest."}),e.jsxs("div",{className:"s-settings-live-preview-event",children:[e.jsx("i",{})," Agent is working · updated now"]}),e.jsx("button",{type:"button",tabIndex:-1,children:"Open trace"})]})]})]})}function Ye(){const s=$e(),{appearanceDetails:t,updateAppearanceDetails:n}=le();if(!s)return e.jsx("div",{className:"s-settings-inline-note",children:"Theme controls are unavailable in this embedded surface."});const i=s.resolvedTheme??"dark",u=ge(s.template)??"hudson",h=J.find(a=>a.id===t.palette)?.label??"Scout",v=ee.find(a=>a.id===u)?.label??"Rounded",y=se.find(a=>a.id===t.contrast)?.label??"Defined",x=te.find(a=>a.id===t.accent)?.label??"Theme",c=ae.find(a=>a.id===t.avatarSize)?.label??"Regular";return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(m,{label:"App layout",right:`currently ${t.shell}`}),e.jsx("div",{className:"s-settings-shell-grid",role:"group","aria-label":"App layout",children:Ue.map(a=>{const r=t.shell===a.id;return e.jsxs("button",{type:"button",className:"s-settings-shell-choice","data-shell":a.id,"data-active":r||void 0,"aria-pressed":r,onClick:()=>n({shell:a.id}),children:[e.jsxs("span",{className:"s-settings-shell-sample","aria-hidden":"true",children:[e.jsx("i",{"data-part":"top"}),e.jsx("i",{"data-part":"rail"}),e.jsxs("i",{"data-part":"list",children:[e.jsx("b",{}),e.jsx("b",{}),e.jsx("b",{})]}),e.jsxs("i",{"data-part":"content",children:[e.jsx("b",{}),e.jsx("b",{}),e.jsx("b",{})]})]}),e.jsxs("span",{className:"s-settings-choice-copy",children:[e.jsxs("span",{className:"s-settings-choice-title",children:[e.jsx("strong",{children:a.label}),r?e.jsx($,{className:"s-settings-theme-check",size:15,"aria-hidden":!0}):null]}),e.jsx("small",{children:a.sub})]})]},a.id)})}),e.jsx(m,{label:"Color mode",right:`currently ${i}`}),e.jsx("div",{className:"s-settings-theme-mode-grid",role:"group","aria-label":"Color mode",children:Ke.map(a=>{const r=a.icon,g=s.theme===a.id,S=a.id==="system"?`Follow this device · resolves to ${s.resolvedTheme??"…"}`:a.sub;return e.jsxs("button",{type:"button",className:"s-settings-theme-mode","data-active":g||void 0,"aria-pressed":g,onClick:()=>s.setTheme(a.id),children:[e.jsx(r,{size:18,strokeWidth:1.7,"aria-hidden":!0}),e.jsxs("span",{children:[e.jsx("strong",{children:a.label}),e.jsx("small",{children:S})]}),g?e.jsx($,{className:"s-settings-theme-check",size:15,"aria-hidden":!0}):null]},a.id)})}),e.jsxs("div",{className:"s-settings-appearance-workbench",children:[e.jsxs("div",{className:"s-settings-appearance-controls",children:[e.jsx(m,{label:"Color theme",right:`currently ${h.toLowerCase()}`}),e.jsx("div",{className:"s-settings-palette-grid",role:"group","aria-label":"Color theme",children:J.map(a=>{const r=t.palette===a.id;return e.jsxs("button",{type:"button",className:"s-settings-palette-choice","data-active":r||void 0,"aria-pressed":r,onClick:()=>n({palette:a.id}),children:[e.jsx(qe,{palette:a.id,theme:i,template:u}),e.jsxs("span",{className:"s-settings-choice-copy",children:[e.jsxs("span",{className:"s-settings-choice-title",children:[e.jsx("strong",{children:a.label}),r?e.jsx($,{className:"s-settings-theme-check",size:15,"aria-hidden":!0}):null]}),e.jsx("small",{children:a.sub}),e.jsx("span",{children:a.spec})]})]},a.id)})}),e.jsx(m,{label:"Interface shape",right:`currently ${v.toLowerCase()}`}),e.jsx("div",{className:"s-settings-interface-grid",role:"group","aria-label":"Interface shape",children:ee.map(a=>{const r=u===a.id;return e.jsxs("button",{type:"button",className:"s-settings-interface-choice","data-active":r||void 0,"aria-pressed":r,onClick:()=>s.setTemplate(a.id),children:[e.jsx(H,{className:"s-settings-shape-sample",theme:i,template:a.id,palette:t.palette,contrast:t.contrast,accent:t.accent,children:e.jsx("i",{children:e.jsx("i",{})})}),e.jsxs("span",{className:"s-settings-choice-copy",children:[e.jsxs("span",{className:"s-settings-choice-title",children:[e.jsx("strong",{children:a.label}),r?e.jsx($,{className:"s-settings-theme-check",size:14,"aria-hidden":!0}):null]}),e.jsx("small",{children:a.sub}),e.jsx("span",{children:a.spec})]})]},a.id)})}),e.jsx(m,{label:"Separation",right:`currently ${y.toLowerCase()}`}),e.jsx("div",{className:"s-settings-contrast-grid",role:"group","aria-label":"Interface contrast",children:se.map(a=>{const r=t.contrast===a.id;return e.jsxs("button",{type:"button",className:"s-settings-contrast-choice","data-active":r||void 0,"aria-pressed":r,onClick:()=>n({contrast:a.id}),children:[e.jsxs("span",{className:"s-settings-contrast-lines","data-level":a.id,"aria-hidden":!0,children:[e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{})]}),e.jsx("strong",{children:a.label}),e.jsx("small",{children:a.sub})]},a.id)})}),e.jsx(m,{label:"Signal accent",right:`currently ${x.toLowerCase()}`}),e.jsx("div",{className:"s-settings-accent-row",role:"group","aria-label":"Signal accent",children:te.map(a=>{const r=t.accent===a.id;return e.jsxs("button",{type:"button",className:"s-settings-accent-choice","data-accent-option":a.id,"data-active":r||void 0,"aria-pressed":r,"aria-label":`${a.label} accent`,onClick:()=>n({accent:a.id}),children:[e.jsx(H,{className:"s-settings-accent-dot",theme:i,template:u,palette:t.palette,contrast:t.contrast,accent:a.id,children:e.jsx("i",{})}),e.jsx("span",{children:a.label}),r?e.jsx($,{size:13,"aria-hidden":!0}):null]},a.id)})}),e.jsx(m,{label:"Avatar size",right:`currently ${c.toLowerCase()}`}),e.jsx("div",{className:"s-settings-avatar-size-row",role:"group","aria-label":"Avatar size",children:ae.map(a=>{const r=t.avatarSize===a.id,g=Z("row",a.id)??24;return e.jsxs("button",{type:"button",className:"s-settings-avatar-size-choice","data-active":r||void 0,"aria-pressed":r,onClick:()=>n({avatarSize:a.id}),children:[e.jsx("span",{className:"s-settings-avatar-size-sample","aria-hidden":!0,children:We.map(S=>e.jsx(re,{name:S,size:g},S))}),e.jsxs("span",{className:"s-settings-choice-title",children:[e.jsx("strong",{children:a.label}),r?e.jsx($,{className:"s-settings-theme-check",size:14,"aria-hidden":!0}):null]}),e.jsx("small",{children:a.sub}),e.jsx("span",{className:"s-settings-avatar-size-spec",children:`${g}PX ROW · ${Z("inspector",a.id)}PX TILE`})]},a.id)})}),e.jsxs("div",{className:"s-settings-appearance-note",children:[e.jsx("strong",{children:"Saved on this device"}),e.jsx("span",{children:"Layout, mode, palette, shape, separation, accent, and avatar size stay in sync across tabs. URL overrides remain available for embeds and visual QA."})]})]}),e.jsxs("aside",{className:"s-settings-preview-column","aria-label":"Live appearance preview",children:[e.jsx(m,{label:"Live specimen",right:i}),e.jsx(Ge,{theme:i,template:u,palette:t.palette,contrast:t.contrast,accent:t.accent}),e.jsxs("dl",{className:"s-settings-theme-readout",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Palette"}),e.jsx("dd",{children:h})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Shape"}),e.jsx("dd",{children:v})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Separation"}),e.jsx("dd",{children:y})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Accent"}),e.jsx("dd",{children:x})]})]}),e.jsx("p",{className:"s-settings-preview-note",children:"Each control changes one visual axis. Success, warning, and failure colors keep their meaning."})]})]})]})}function Xe({profile:s,update:t}){const n=s.name||"Operator";return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(m,{label:"Operator Identity",right:"generative avatar"}),e.jsxs("div",{className:"s-settings-stage-hero-card","data-open":"false",children:[e.jsx("div",{className:"s-settings-stage-hero-header",children:e.jsxs("div",{className:"s-settings-stage-hero-badge",children:[e.jsx("span",{className:"s-settings-stage-live-dot"}),e.jsx("span",{className:"s-settings-stage-badge-text",children:"GENERATIVE IDENTITY"})]})}),e.jsxs("div",{className:"s-settings-stage-hero-body",children:[e.jsxs("div",{className:"s-settings-stage-art-col",children:[e.jsx(re,{name:n,size:96,hue:s.hue}),e.jsx("span",{className:"s-settings-stage-click-hint",children:"Deterministic identity · no external artwork"})]}),e.jsxs("div",{className:"s-settings-stage-meta-col",children:[e.jsxs("div",{className:"s-settings-stage-title-row",children:[e.jsx("span",{className:"s-settings-stage-char-name",children:n}),e.jsx("span",{className:"s-settings-stage-char-title",children:"Generative Identity"})]}),e.jsx("div",{className:"s-settings-stage-kernel-pill",children:e.jsx("code",{children:"name·hue·deterministic"})}),e.jsx("p",{className:"s-settings-stage-blurb",children:"Built locally from your display name and identity hue."}),e.jsxs("div",{className:"s-settings-stage-identity-group",children:[e.jsxs("div",{className:"s-settings-stage-operator-id",children:[e.jsx("strong",{children:s.name||"Operator"}),e.jsxs("span",{children:[s.handle||"@you"," · ",s.pronouns||"—"]})]}),e.jsxs("div",{className:"s-settings-hue-wrap",children:[e.jsx("span",{className:"s-settings-field-label",children:"Stage & Identity Hue"}),e.jsx("div",{className:"s-settings-hue-row",children:ze.map(i=>e.jsx("button",{type:"button",onClick:()=>t({hue:i}),className:`s-settings-hue-dot${s.hue===i?" s-settings-hue-dot--active":""}`,style:{background:Be(i)},title:`Hue ${i}°`},i))})]})]})]})]})]}),e.jsx(N,{label:"Display name",hint:"Shown when agents address you.",children:e.jsx(P,{value:s.name,onChange:i=>t({name:i})})}),e.jsx(N,{label:"Handle",hint:"Used in @mentions across threads.",children:e.jsx(P,{value:s.handle,onChange:i=>t({handle:i}),mono:!0})}),e.jsx(N,{label:"Pronouns",children:e.jsx(P,{value:s.pronouns,onChange:i=>t({pronouns:i})})}),e.jsx(m,{label:"How agents understand you",right:"shipped as system prompt context"}),e.jsx(N,{label:"Operator bio",hint:"How you want to be worked with. Agents read this before asking you things.",children:e.jsx(Q,{value:s.bio,onChange:i=>t({bio:i}),rows:4})}),e.jsxs("div",{className:"s-settings-two-col",children:[e.jsx(N,{label:"Timezone",children:e.jsx(P,{value:s.timezone,onChange:i=>t({timezone:i}),mono:!0})}),e.jsx(N,{label:"Working hours",children:e.jsx(P,{value:s.workingHours,onChange:i=>t({workingHours:i}),mono:!0})})]}),e.jsx(m,{label:"Ephemeral agent names",right:"rotation pool for one-off agents"}),e.jsx(N,{label:"Name pool",hint:s.provisionalAgentNames.length>0?`${s.provisionalAgentNamesResolvedCount} names active (${s.provisionalAgentNamesSource}). Preview: ${s.provisionalAgentNamesPreview.join(", ")}${s.provisionalAgentNamesResolvedCount>s.provisionalAgentNamesPreview.length?", …":""}`:"Leave empty to use Scout's built-in rotation. One short name per line.",children:e.jsx(Q,{value:s.provisionalAgentNames.join(`
|
|
2
|
+
`),onChange:i=>t({provisionalAgentNames:i.split(/\r?\n/u).map(u=>u.trim()).filter(Boolean)}),rows:6})}),e.jsx(N,{label:"Pool mode",hint:"Replace uses only your list. Add to defaults prepends yours, then Scout's built-in names.",children:e.jsx(R,{value:s.provisionalAgentNamesMode,onChange:i=>t({provisionalAgentNamesMode:i}),options:[{id:"replace",label:"Replace",sub:"your list only"},{id:"extend",label:"Add to defaults",sub:"yours first, then Scout"}],columns:2})})]})}function Ze({profile:s,update:t}){return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(m,{label:"Interrupt policy"}),e.jsx(N,{label:"When agents can ping you directly",hint:"Blocking-only means only asks that truly stall work. Others get batched.",children:e.jsx(R,{value:s.interruptThreshold,onChange:n=>t({interruptThreshold:n}),options:[{id:"always",label:"Always",sub:"any ask, any time"},{id:"blocking-only",label:"Blocking only",sub:"stuck agents · default"},{id:"batched",label:"Batched",sub:"grouped every 15m"},{id:"never",label:"Never",sub:"queue only, I'll check in"}]})}),e.jsxs("div",{className:"s-settings-two-col",children:[e.jsx(N,{label:"Batch window (min)",children:e.jsx(Fe,{value:s.batchWindow,min:5,max:60,step:5,onChange:n=>t({batchWindow:n}),unit:"min"})}),e.jsx(N,{label:"Quiet hours",children:e.jsx(P,{value:s.quietHours,onChange:n=>t({quietHours:n}),mono:!0})})]}),e.jsx(m,{label:"Where to reach you"}),e.jsx(N,{label:"Preferred channel",children:e.jsx(R,{value:s.channel,onChange:n=>t({channel:n}),options:[{id:"here",label:"Here only",sub:"desktop app"},{id:"mobile",label:"Mobile only",sub:"paired phone"},{id:"here+mobile",label:"Both",sub:"whichever is active"}]})}),e.jsx(m,{label:"Tone calibration",right:"how agents write to you"}),e.jsxs("div",{className:"s-settings-two-col",children:[e.jsx(N,{label:"Verbosity",children:e.jsx(R,{stacked:!0,value:s.verbosity,onChange:n=>t({verbosity:n}),options:[{id:"terse",label:"Terse",sub:"one-liners, answers only"},{id:"normal",label:"Normal",sub:"context + answer"},{id:"detailed",label:"Detailed",sub:"show reasoning"}]})}),e.jsx(N,{label:"Tone",children:e.jsx(R,{stacked:!0,value:s.tone,onChange:n=>t({tone:n}),options:[{id:"direct",label:"Direct",sub:"no hedging"},{id:"warm",label:"Warm",sub:"friendly, conversational"},{id:"formal",label:"Formal",sub:"business-like"}]})})]})]})}function Qe({clientCredentials:s,serverCredentials:t,reloadCredentials:n}){const[i,u]=o.useState(""),[h,v]=o.useState(!1),[y,x]=o.useState(null),c=t?.openai??null,a=!!c?.configured,r=c?.source==="env"?"OPENAI_API_KEY":c?.source==="local-config"?"local Scout config":c?.source==="local-store"?"local OpenScout store":"missing",g=c?.source==="local-store"&&s?.configured?"local OpenScout store + HudVault mirror":r,S=c?.preview??s?.preview??null,T=async()=>{v(!0),x(null);try{const p=i.trim();await je(p);let j=null;try{await ye(p)}catch(k){j=k instanceof Error?k.message:"HudVault save failed."}u(""),await n(),x(j?`Saved to local OpenScout store. Browser mirror failed: ${j}`:"Saved to local OpenScout store and Hudson Vault.")}catch(p){x(p instanceof Error?p.message:"Could not save key.")}finally{v(!1)}},E=async()=>{v(!0),x(null);try{const[p,j]=await Promise.allSettled([fe(),Ne()]);u(""),await n(),p.status==="rejected"||j.status==="rejected"?x("Cleared what I could; one credential store did not respond."):x(c?.source==="env"||c?.source==="local-config"?"Removed saved key. Server fallback is still configured.":"Removed saved key.")}catch(p){x(p instanceof Error?p.message:"Could not clear key.")}finally{v(!1)}};return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(m,{label:"Model providers",right:a?`configured · ${g}`:"missing"}),e.jsx("div",{className:"s-settings-relay-card",children:e.jsxs("div",{children:[e.jsxs("div",{className:"s-settings-relay-title",children:["OpenAI · ",e.jsxs("span",{className:"s-settings-device-status",style:{color:a?"var(--green)":"var(--dim)"},children:["●"," ",a?"ready":"missing"]})]}),e.jsxs("div",{className:"s-settings-relay-meta",children:[S??"No key stored"," · ",g]}),e.jsx("div",{className:"s-settings-relay-desc",children:"Scout stores user-entered keys in the local OpenScout credential store and keeps a HudVault mirror for this browser profile."})]})}),e.jsx(N,{label:"OpenAI API key",hint:"Saved locally. Existing keys are never shown again.",children:e.jsx("input",{className:"s-settings-input s-settings-input--mono",type:"password",value:i,placeholder:a?"Saved key configured":"sk-...",autoComplete:"off",spellCheck:!1,onChange:p=>u(p.target.value)})}),y&&e.jsx("div",{className:"s-settings-field-hint",children:y}),e.jsxs("div",{className:"s-settings-button-row",children:[e.jsx("button",{type:"button",className:"s-btn",disabled:h||!i.trim(),onClick:()=>{T()},children:h?"Saving":"Save key"}),e.jsx("button",{type:"button",className:"s-btn",disabled:h||!(s?.configured||c?.source==="local-store"),onClick:()=>{E()},children:"Clear saved key"})]})]})}const Je=[{id:"auto",label:"Auto",sub:"Parakeet when warm, Apple fallback"},{id:"parakeet",label:"Parakeet",sub:"on-device, best quality"},{id:"apple",label:"Apple Speech",sub:"instant, no model warmup"}];function es(){const s=pe(Se,!1),[t,n]=o.useState(null),[i,u]=o.useState([]),[h,v]=o.useState([]),[y,x]=o.useState(!0),[c,a]=o.useState(!1),[r,g]=o.useState(null),S=o.useCallback(async()=>{x(!0);try{const[l,f]=await Promise.all([ke(),Ce(12).catch(()=>[])]);n(l.settings),u(l.devices),v(f),g(null)}catch(l){g(l instanceof Error?l.message:String(l))}finally{x(!1)}},[]);o.useEffect(()=>{S()},[S]);const T=o.useCallback(async l=>{a(!0),g(null);try{const f=await Ae(l);n(f.settings),u(f.devices)}catch(f){g(f instanceof Error?f.message:String(f))}finally{a(!1)}},[]);if(y&&!t)return e.jsx("div",{className:"s-settings-field-hint",children:"Loading voice settings…"});const E=t?.inputDeviceId??i.find(l=>l.isDefault)?.id??"",p=t?.permissions?.find(l=>l.kind==="microphone")??null,j=t?.permissions?.find(l=>l.kind==="speechRecognition")??null,k=(t?.permissions?.length??0)>0||i.length>0,O=[k?null:"Scout voice host is offline. Launch Scout Menu on this Mac — the browser does not capture audio.",p?.status==="denied"||p?.status==="restricted"?p?.status==="restricted"?"Microphone access is restricted on this Mac.":"Microphone access is off for Scout Menu. Choose Retry access to reopen the macOS permission pane.":p?.canRequest?"Microphone has not been requested yet. Request access or tap the mic in chat to show the macOS prompt.":null,!j?.granted&&(j?.status==="denied"||j?.status==="restricted")?j?.status==="restricted"?"Speech recognition is restricted on this Mac.":"Speech recognition is off for Scout Menu. Open Privacy & Security → Speech Recognition to change it.":null,t?.modelReady?null:"Parakeet may download on first use. Apple Speech stays available while the model warms.","Dictation requires Scout Menu running. The browser does not capture audio.","If transcription hangs on Processing, wait up to 60 seconds or tap the mic again to cancel."].filter(l=>!!l);return e.jsxs("div",{className:"s-settings-col-gap",children:[r&&e.jsx("div",{className:"s-settings-field-hint",style:{color:"var(--amber)"},children:r}),e.jsx(m,{label:"Realtime conversation",right:"footer control"}),e.jsx("div",{className:"s-settings-realtime-voice","data-enabled":s||void 0,"data-unavailable":!s||void 0,children:e.jsxs("span",{className:"s-settings-realtime-voice-copy",children:[e.jsx("strong",{children:s?"Realtime voice enabled":"Realtime voice disabled"}),e.jsx("span",{children:"Starting a call sends microphone audio to OpenAI Realtime and bills the configured OpenAI API account. Voice may read live Scout context and navigate this app; agent requests still require confirmation."}),s?e.jsx("em",{children:"Use Voice in the footer to start or manage a call."}):e.jsx("em",{children:"Turn on Live voice in the host app's Settings → Voice."})]})}),e.jsx(Oe,{hostOnline:k,micPermission:p,speechPermission:j,modelReady:t?.modelReady}),e.jsx(m,{label:"Scout Menu permissions",right:"voice host"}),e.jsx(Ie,{permissions:t?.permissions,hostOnline:k,disabled:c||y,onError:l=>g(l),onRefresh:S}),e.jsx(m,{label:"Transcription"}),e.jsx(N,{label:"Engine",hint:t?.modelReady?"Parakeet is warm and ready.":t?.modelInstalled?"Parakeet is installed; first dictation may warm the model.":"Parakeet downloads on first use. Apple Speech stays available meanwhile.",children:e.jsx(R,{value:t?.preference??"auto",onChange:l=>{n(f=>f&&{...f,preference:l}),T({preference:l})},options:Je,columns:3})}),e.jsx(N,{label:"Microphone input",hint:"Scout Menu uses the macOS system default input unless you pick a device here. The browser never captures audio.",children:i.length>0?e.jsx("select",{className:"s-settings-input",value:E,disabled:c,onChange:l=>{const f=l.target.value||null;n(I=>I&&{...I,inputDeviceId:f,inputDeviceName:i.find(L=>L.id===f)?.name??null}),T({inputDeviceId:f})},children:i.map(l=>e.jsxs("option",{value:l.id,children:[l.name,l.isDefault?" (system default)":""]},l.id))}):e.jsx("div",{className:"s-settings-field-hint",children:"Scout Menu is not reporting microphones. Launch Scout Menu, grant mic access, then refresh."})}),e.jsx(m,{label:"Diagnostics"}),e.jsx("ul",{className:"s-settings-field-hint",style:{margin:0,paddingLeft:"1.1rem",display:"grid",gap:"0.35rem"},children:O.map(l=>e.jsx("li",{children:l},l))}),e.jsx(m,{label:"Recent sessions",right:h.length?`${h.length} shown`:"none"}),h.length===0?e.jsx("div",{className:"s-settings-field-hint",children:"No recent dictation sessions on this web server. History fills as you use the mic in chat."}):e.jsx("div",{className:"s-settings-col-gap",style:{gap:"0.35rem"},children:h.map(l=>e.jsx("div",{className:"s-settings-device-row",style:{alignItems:"flex-start"},children:e.jsxs("div",{style:{flex:1,minWidth:0},children:[e.jsxs("div",{className:"s-settings-device-name",style:{fontFamily:"var(--mono)"},children:[l.status," · ",l.lastEvent??"started"]}),e.jsxs("div",{className:"s-settings-device-meta",children:[l.surface," · ",we(l.updatedAt),l.error?` · ${l.error}`:""]}),l.lastTranscript?e.jsx("div",{className:"s-settings-field-hint",style:{marginTop:"0.2rem"},children:l.lastTranscript.length>96?`${l.lastTranscript.slice(0,96)}…`:l.lastTranscript}):null]})},l.sessionId))}),e.jsx("div",{className:"s-settings-button-row",children:e.jsx("button",{type:"button",className:"s-btn",disabled:y||c,onClick:()=>{S()},children:y?"Refreshing…":"Refresh"})})]})}const ss={desktop:"◻",mobile:"▯",tablet:"▭"};function ts({device:s}){const t=s.status==="this-device"?"var(--accent)":s.status==="online"?"var(--green)":"var(--dim)";return e.jsxs("div",{className:"s-settings-device-row",children:[e.jsx("span",{className:"s-settings-device-icon",children:ss[s.kind]??"□"}),e.jsxs("div",{children:[e.jsx("div",{className:"s-settings-device-name",children:s.name}),e.jsxs("div",{className:"s-settings-device-meta",children:[s.kind," · via ",s.relay," · ",s.lastSeen]})]}),e.jsxs("span",{className:"s-settings-device-status",style:{color:t},children:["●"," ",s.status==="this-device"?"this device":s.status]}),e.jsx("button",{className:"s-btn",disabled:s.status==="this-device",children:s.status==="this-device"?"—":"Unpair"})]})}function as({pairing:s}){const t=[{id:"local",name:"This machine",kind:"desktop",status:"this-device",relay:"local",lastSeen:"now"}];if(s?.trustedPeers)for(const n of s.trustedPeers){const i=n.fingerprint===s.connectedPeerFingerprint;t.push({id:n.fingerprint,name:n.name??"Paired device",kind:"mobile",status:i?"online":"offline",relay:"tailscale",lastSeen:n.lastSeenLabel??"—"})}return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(m,{label:`Paired devices · ${t.length}`}),e.jsx("div",{className:"s-settings-col-gap",style:{gap:10},children:t.map(n=>e.jsx(ts,{device:n},n.id))}),e.jsx(m,{label:"Relay"}),e.jsxs("div",{className:"s-settings-relay-card",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"s-settings-relay-title",children:["Relay · ",e.jsxs("span",{className:"s-settings-device-status",style:{color:s?.isRunning?"var(--green)":"var(--dim)"},children:["●"," ",s?.isRunning?"connected":"offline"]})]}),e.jsxs("div",{className:"s-settings-relay-meta",children:[s?.relay??"not configured"," · tailscale"]}),e.jsx("div",{className:"s-settings-relay-desc",children:"Agents route through your relay to reach mobile when the app is backgrounded. End-to-end encrypted; keys never leave your devices."})]}),e.jsx("button",{className:"s-btn",children:"Configure"})]})]})}function V(s,t,n=!1){if(!s&&!t)return"Not reported";const i=s||"detached";return t?`${i} @ ${t}${n?" (modified)":""}`:i}function oe(){return navigator.userAgentData?.platform||navigator.platform||"Unknown"}function w({label:s,value:t,detail:n}){return e.jsxs("div",{className:"s-settings-about-fact",children:[e.jsx("dt",{children:s}),e.jsxs("dd",{children:[e.jsx("code",{children:t}),n?e.jsx("span",{children:n}):null]})]})}function ne(s){const{build:t,mesh:n}=s,i=n?.health.build??null,u=n?.localNode?n.nodes[n.localNode.id]?.host:void 0,h=oe();return["OpenScout troubleshooting report",`Collected: ${s.collectedAt.toISOString()}`,"","[Web]",`Observed: ${s.buildCollectedAt?.toISOString()??"unknown"}`,`Version: ${t?.version??"unknown"}`,`Mode: ${t?.mode??"unknown"}`,`Source: ${V(t?.branch,t?.commit,t?.dirty===!0)}`,`Server: ${t?.server?`${t.server.engine} ${t.server.engineVersion}`:"unknown"}`,`Server platform: ${t?.server?`${t.server.platform}/${t.server.arch}`:"unknown"}`,"","[Broker]",`Observed: ${s.meshCollectedAt?.toISOString()??"unknown"}`,`Reachable: ${n?.health.reachable===void 0?"unknown":n.health.reachable?"yes":"no"}`,`Healthy: ${n?.health.ok===void 0?"unknown":n.health.ok?"yes":"no"}`,`Error: ${n?.health.error??"none reported"}`,`Package: ${i?.packageName??"unknown"}`,`Version: ${i?.version??"unknown"}`,`Mode: ${i?.mode??"unknown"}`,`Source: ${V(i?.branch,i?.commit)}`,`Build: ${i?.buildNumber??i?.buildId??"not reported"}`,`Node: ${n?.health.nodeId??"unknown"}`,`Broker URL: ${n?.brokerUrl??"unknown"}`,"","[Host]",`Name: ${n?.localNode?.name??"unknown"}`,`Scout version: ${u?.scoutVersion??"not reported"}`,`System: ${u?.os??"unknown"}`,`Architecture: ${u?.arch??t?.server?.arch??"unknown"}`,"","[Browser]",`Platform: ${h}`,`User agent: ${navigator.userAgent}`,`Origin: ${window.location.origin}`].join(`
|
|
3
|
+
`)}async function ns(s){if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(s);return}const t=document.createElement("textarea");t.value=s,t.setAttribute("readonly",""),t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();const n=document.execCommand("copy");if(t.remove(),!n)throw new Error("Clipboard access is unavailable")}function is(){const[s,t]=o.useState(null),[n,i]=o.useState(!0),[u,h]=o.useState(null),[v,y]=o.useState("idle"),x=o.useCallback(async(p=!1)=>{i(!0),h(null),y("idle");const[j,k]=await Promise.allSettled([M(p?"/api/build?refresh=1":"/api/build"),M("/api/mesh")]),O=new Date;if(t(l=>({build:j.status==="fulfilled"?j.value:l?.build??null,mesh:k.status==="fulfilled"?k.value:l?.mesh??null,collectedAt:O,buildCollectedAt:j.status==="fulfilled"?O:l?.buildCollectedAt??null,meshCollectedAt:k.status==="fulfilled"?O:l?.meshCollectedAt??null})),j.status==="rejected"||k.status==="rejected"){const l=[j.status==="rejected"?"web build":null,k.status==="rejected"?"broker":null].filter(Boolean).join(" and ");h(`Could not refresh ${l} details. Last reported values are kept when available.`)}i(!1)},[]);o.useEffect(()=>{x()},[x]);const c=s?.build??null,a=s?.mesh??null,r=a?.health.build??null,g=a?.localNode?a.nodes[a.localNode.id]?.host:void 0,S=oe(),T=a===null?"not reported":a.health.reachable?a.health.ok?"healthy":"degraded":"unreachable",E=o.useCallback(()=>{s&&ns(ne(s)).then(()=>{y("copied"),setTimeout(()=>y("idle"),1800)}).catch(()=>{y("error")})},[s]);return n&&!s?e.jsx("div",{className:"s-settings-loading",children:"Collecting version details…"}):e.jsxs("div",{className:"s-settings-about",children:[e.jsxs("div",{className:"s-settings-about-summary",children:[e.jsxs("div",{children:[e.jsx("span",{className:"s-settings-about-product",children:"OpenScout Web"}),e.jsx("strong",{children:c?.version?`v${c.version}`:"Version unavailable"}),e.jsxs("span",{className:"s-settings-about-source",children:[c?.mode??"unknown mode"," · ",V(c?.branch,c?.commit,c?.dirty===!0)]}),e.jsxs("span",{className:"s-settings-about-collected",children:["Snapshot collected ",s?.collectedAt.toLocaleString()??"—"]})]}),e.jsxs("div",{className:"s-settings-about-actions",children:[e.jsxs("button",{type:"button",className:"s-btn",onClick:()=>{x(!0)},disabled:n,children:[e.jsx(Pe,{size:13,"aria-hidden":!0}),n?"Refreshing…":"Refresh"]}),e.jsxs("button",{type:"button",className:"s-btn s-settings-about-copy",onClick:E,disabled:!s,children:[v==="copied"?e.jsx($,{size:13,"aria-hidden":!0}):e.jsx(Re,{size:13,"aria-hidden":!0}),v==="copied"?"Copied report":v==="error"?"Copy failed":"Copy report"]})]})]}),u?e.jsx("div",{className:"s-settings-about-warning",role:"status",children:u}):null,v==="error"&&s?e.jsxs("div",{className:"s-settings-about-copy-fallback",role:"alert",children:[e.jsx("strong",{children:"Clipboard access was denied."}),e.jsx("span",{children:"Select and copy the report below."}),e.jsx("textarea",{readOnly:!0,value:ne(s),"aria-label":"OpenScout troubleshooting report"})]}):null,e.jsx(m,{label:"Web application",right:"release and source identity"}),e.jsxs("dl",{className:"s-settings-about-ledger",children:[e.jsx(w,{label:"Package version",value:c?.version??"Unknown",detail:`Observed ${s?.buildCollectedAt?.toLocaleString()??"at an unknown time"}. Use this when comparing releases.`}),e.jsx(w,{label:"Run mode",value:c?.mode??"Unknown"}),e.jsx(w,{label:"Source checkout",value:V(c?.branch,c?.commit,c?.dirty===!0),detail:"A dev SHA identifies the running checkout; it is not the release version."}),e.jsx(w,{label:"Server engine",value:c?.server?`${c.server.engine} ${c.server.engineVersion}`:"Not reported",detail:c?.server?`Node compatibility ${c.server.nodeVersion} · ${c.server.platform}/${c.server.arch}`:void 0})]}),e.jsx(m,{label:"Broker",right:T}),e.jsxs("dl",{className:"s-settings-about-ledger",children:[e.jsx(w,{label:"Status",value:T,detail:[`Observed ${s?.meshCollectedAt?.toLocaleString()??"at an unknown time"}.`,a?.health.error].filter(Boolean).join(" ")}),e.jsx(w,{label:"Package",value:r?.packageName??"Not reported"}),e.jsx(w,{label:"Version",value:r?.version??"Not reported"}),e.jsx(w,{label:"Source",value:V(r?.branch,r?.commit)}),e.jsx(w,{label:"Build",value:r?.buildNumber??r?.buildId??"Not reported"}),e.jsx(w,{label:"Node",value:a?.health.nodeId??"Not reported",detail:a?.brokerUrl})]}),e.jsx(m,{label:"Host and browser",right:"troubleshooting context"}),e.jsxs("dl",{className:"s-settings-about-ledger",children:[e.jsx(w,{label:"Host",value:a?.localNode?.name??"Not reported"}),e.jsx(w,{label:"Host Scout",value:g?.scoutVersion??"Not reported"}),e.jsx(w,{label:"Host system",value:[g?.os,g?.arch??c?.server?.arch].filter(Boolean).join(" · ")||"Not reported"}),e.jsx(w,{label:"Browser platform",value:S}),e.jsx(w,{label:"Browser",value:navigator.userAgent}),e.jsx(w,{label:"Page origin",value:window.location.origin})]}),e.jsx("p",{className:"s-settings-about-note",children:"Native app and CLI versions are shown only when those components report them. Scout does not infer a version from a nearby checkout."})]})}const D=[{id:"appearance",label:"Appearance",sub:"mode · workspace style"},{id:"operator",label:"Operator",sub:"identity · bio · hours"},{id:"comms",label:"Communication",sub:"how agents reach you"},{id:"voice",label:"Voice",sub:"realtime · permissions · dictation"},{id:"credentials",label:"Credentials",sub:"model provider keys"},{id:"devices",label:"Paired devices",sub:"relay · connected"},{id:"about",label:"About",sub:"versions · build · runtime"}],ie={appearance:"Appearance",operator:"Operator identity",comms:"Communication",voice:"Voice",credentials:"Credentials",devices:"Paired devices",about:"About OpenScout"},ls={appearance:"Choose how Scout looks on this device. Changes apply immediately across the workspace.",operator:"Your identity, availability, and the context agents receive when they work with you.",comms:"Set interruption rules, delivery channels, response style, and quiet hours.",voice:"Configure dictation, realtime voice, permissions, and input devices.",credentials:"Manage model-provider credentials stored by this Scout installation.",devices:"Review the relay and devices currently connected to this Scout workspace.",about:"Exact release, source, broker, host, and browser details for troubleshooting."},rs={name:"",handle:"",pronouns:"",hue:195,bio:"",timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,workingHours:"08:00 – 18:00",interruptThreshold:"blocking-only",batchWindow:15,channel:"here+mobile",verbosity:"terse",tone:"direct",quietHours:"22:00 – 07:00",provisionalAgentNames:[],provisionalAgentNamesMode:"replace",provisionalAgentNamesResolvedCount:0,provisionalAgentNamesPreview:[],provisionalAgentNamesSource:"default"};function ce({open:s,onClose:t,section:n,onSectionChange:i,presentation:u}){const{refreshOnboarding:h}=le(),{ref:v,onKeyDown:y}=Te(s&&u==="drawer"),[x,c]=o.useState("appearance"),a=n??x,r=o.useCallback(d=>{i?i(d):c(d)},[i]),[g,S]=o.useState(rs),[T,E]=o.useState(null),[p,j]=o.useState(null),[k,O]=o.useState(null),[l,f]=o.useState(!1),[I,L]=o.useState("saved"),_=o.useRef(null),z=o.useRef(!0),B=o.useRef(null);o.useEffect(()=>()=>{z.current=!1},[]);const F=o.useCallback(async()=>{const[d,A]=await Promise.allSettled([ve(),be()]),C=d.status==="fulfilled"?d.value:null;let b=A.status==="fulfilled"?A.value:null;C?.configured&&!b?.openai.configured&&(b=await xe().catch(()=>b)),j(C),O(b)},[]),W=o.useCallback(async()=>{try{const d=M("/api/user"),A=Promise.race([M("/api/pairing-state"),new Promise((os,me)=>setTimeout(()=>me(new Error("timeout")),3e3))]),[C,b]=await Promise.allSettled([d,A]);C.status==="fulfilled"&&S(C.value),b.status==="fulfilled"&&E(b.value),await F()}finally{f(!0)}},[F]);o.useEffect(()=>{s&&a!=="appearance"&&a!=="about"&&!l&&W()},[l,s,W,a]),o.useEffect(()=>{if(!s||!window.matchMedia("(max-width: 760px)").matches)return;const d=window.requestAnimationFrame(()=>{B.current?.scrollIntoView({block:"nearest",inline:"nearest"})});return()=>window.cancelAnimationFrame(d)},[s,a]);const K=o.useCallback(d=>{const C=(D.findIndex(b=>b.id===a)+d+D.length)%D.length;r(D[C].id)},[a]),he=o.useCallback(d=>{if(y(d),u==="drawer"&&d.key==="Escape"){d.preventDefault(),t();return}d.target?.closest(".s-settings-rail")&&(d.key==="ArrowDown"?(d.preventDefault(),K(1)):d.key==="ArrowUp"&&(d.preventDefault(),K(-1)))},[K,t,y,u]),q=o.useCallback(d=>{_.current&&clearTimeout(_.current),L("saving"),_.current=setTimeout(()=>{M("/api/user",{method:"POST",body:JSON.stringify(d)}).then(()=>h()).then(()=>{z.current&&L("saved")}).catch(()=>{z.current&&L("error")})},400)},[h]),G=o.useCallback(d=>{S(A=>{const C={...A,...d};return q(C),C})},[q]),Y=e.jsx("nav",{className:"s-settings-rail","aria-label":"Settings pages",children:D.map(d=>{const A=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"s-settings-rail-label",children:d.label}),e.jsx("span",{className:"s-settings-rail-sub",children:d.sub})]}),C=`s-settings-rail-btn${a===d.id?" s-settings-rail-btn--active":""}`;return u==="page"?e.jsx("a",{ref:a===d.id?b=>{B.current=b}:void 0,href:Ee({view:"settings",section:d.id}),"aria-current":a===d.id?"page":void 0,className:C,onClick:b=>{b.button!==0||b.metaKey||b.ctrlKey||b.shiftKey||b.altKey||(b.preventDefault(),r(d.id))},children:A},d.id):e.jsx("button",{ref:a===d.id?b=>{B.current=b}:void 0,onClick:()=>r(d.id),"aria-current":a===d.id?"page":void 0,className:C,children:A},d.id)})}),X=e.jsx("main",{className:"s-settings-content",id:`settings-${a}`,"data-settings-section":a,tabIndex:-1,children:a==="appearance"?e.jsx(Ye,{}):a==="about"?e.jsx(is,{}):l?e.jsxs(e.Fragment,{children:[a==="operator"&&e.jsx(Xe,{profile:g,update:G}),a==="comms"&&e.jsx(Ze,{profile:g,update:G}),a==="credentials"&&e.jsx(Qe,{clientCredentials:p,serverCredentials:k,reloadCredentials:F}),a==="voice"&&e.jsx(es,{}),a==="devices"&&e.jsx(as,{pairing:T})]}):e.jsx("div",{className:"s-settings-loading",children:"Loading settings…"})});return u==="page"?e.jsxs("section",{className:"s-settings-page","aria-labelledby":"settings-page-title",children:[e.jsxs("header",{className:"s-settings-page-header",children:[e.jsxs("div",{children:[e.jsx("div",{className:"s-settings-page-kicker",children:"Settings"}),e.jsx("h1",{id:"settings-page-title",children:ie[a]}),e.jsx("p",{children:ls[a]})]}),a==="about"?e.jsxs("div",{className:"s-settings-page-save-state","data-state":"neutral",children:[e.jsx("span",{"aria-hidden":"true"}),"Diagnostic snapshot"]}):e.jsxs("div",{className:"s-settings-page-save-state","data-state":I,role:"status","aria-live":"polite",children:[e.jsx("span",{"aria-hidden":"true"}),I==="saving"?"Saving changes…":I==="error"?"Couldn’t save changes":"Saved automatically"]})]}),e.jsxs("div",{className:"s-settings-page-layout",children:[Y,X]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`s-settings-scrim ${s?"s-settings-scrim--open":"s-settings-scrim--closed"}`,onClick:t}),e.jsxs("div",{ref:v,role:"dialog","aria-modal":"true","aria-label":"Settings",className:`s-settings-drawer ${s?"s-settings-drawer--open":"s-settings-drawer--closed"}`,onKeyDown:he,children:[e.jsxs("div",{className:"s-settings-header",children:[e.jsxs("div",{className:"s-settings-header-title",children:["⚙"," SETTINGS"]}),e.jsx("span",{className:"s-settings-header-sep",children:"/"}),e.jsx("span",{className:"s-settings-header-section",children:ie[a]}),e.jsx("span",{style:{flex:1}}),e.jsx("span",{className:"s-settings-header-hint",children:"ESC to close"}),e.jsx("button",{className:"s-settings-close",onClick:t,children:"×"})]}),Y,X,e.jsxs("div",{className:"s-settings-footer",children:[e.jsxs("span",{className:"s-settings-footer-sync",children:["●"," synced"]}),e.jsx("span",{children:"·"}),e.jsx("span",{children:"changes apply instantly to every agent in your fleet"}),e.jsx("span",{style:{flex:1}}),e.jsx("button",{className:"s-btn",onClick:t,children:"Done"})]})]})]})}function de(s){return e.jsx(ce,{...s,presentation:"drawer"})}function ue({section:s="appearance",onSectionChange:t}){return e.jsx(ce,{open:!0,onClose:()=>{},section:s,onSectionChange:t,presentation:"page"})}const Cs=Object.freeze(Object.defineProperty({__proto__:null,SettingsDrawer:de,SettingsPage:ue},Symbol.toStringTag,{value:"Module"})),As=Object.freeze(Object.defineProperty({__proto__:null,SettingsDrawer:de,SettingsPage:ue},Symbol.toStringTag,{value:"Module"}));export{ue as S,Cs as a,As as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as i,r as d}from"./index-Bli6bTLU.js";import{E as it}from"./EmptyState-BnDda92b.js";import{S as B}from"./StatusPill-NFFnphtx.js";import{a as M}from"./api-DEHEgJ9m.js";import{p as Rt}from"./status-tone-BM_zuRy1.js";import{t as ot}from"./time-Dhsh_2EG.js";import{AgentConfigurationScreen as Mt}from"./AgentConfigurationScreen-BoBQpyz5.js";import{S as At}from"./SettingsDrawer-DwYQTGi8.js";/* empty css */import"./NewChatComposer-Bgqes0UQ.js";import"./text-BR9Bap0E.js";import"./scout-voice-DvG_3stJ.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-DoT8gpw6.js";import"./createLucideIcon-DLlxGjKt.js";import"./conversation-model-CigSPlKA.js";import"./colors-BtO5_zlx.js";import"./index-DFdlQs_c.js";import"./HarnessMark-DGZ6o6Ct.js";import"./NewChatOrigin-DpHS2Wmt.js";import"./keyboard-nav-7iEtvu9P.js";import"./x-BJyPzFnn.js";import"./chevron-down-Da5tV19_.js";import"./search-BbgsEMXa.js";import"./file-text-BVhkMWyC.js";import"./Provider-Ve8yXaWR.js";import"./provider-CX9EWecp.js";import"./router-B0YclXYg.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-D4dHTRkt.js";import"./sse-CSozY6mp.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-D4vuKzOL.js";import"./DocumentFocusViewer-DmtFisY9.js";import"./TextDocumentSurface-C7fGlzY8.js";import"./chevron-right-BMqtBds_.js";import"./code-xml-ByQsfOI_.js";import"./arrow-left-i-h6JAgs.js";import"./arrow-right-B0Yi01Zr.js";import"./chunk-HRAB3GC3-BUVYXXAp.js";import"./openContent-C6XO6kr5.js";import"./AgentsSubnav-3_vpn2bT.js";import"./SecondaryNav-cYTw2p39.js";import"./secondaryNavConfig-DyC_P9Wx.js";import"./message-square-DlY4EneU.js";import"./compass-BepM5iWH.js";import"./settings-BzWCF3NF.js";import"./terminal-BiNIXhna.js";import"./git-branch-q8Ayc8py.js";import"./scroll-text-DRidbcse.js";import"./refresh-cw-IgN2fZLM.js";import"./bot-r2IuAuJd.js";import"./wrench-CQvdf7KT.js";import"./server-Dt3tpiBj.js";import"./cpu-Bc268H9Q.js";import"./credentials-qwds23lv.js";import"./AgentAvatar-B1xvQ7ej.js";import"./SpriteAvatar-DMrSssNZ.js";import"./agent-identity-DzHGhLdJ.js";import"./VoicePermissionsPanel-BkIGTzgw.js";import"./check-Bfs7hMb1.js";import"./copy-De4s38o2.js";var k=(t=>(t[t.Border=-1]="Border",t[t.Data=0]="Data",t[t.Function=1]="Function",t[t.Position=2]="Position",t[t.Timing=3]="Timing",t[t.Alignment=4]="Alignment",t))(k||{});const Ct=[0,1],dt=[1,0],ht=[2,3],ft=[3,2],It={L:Ct,M:dt,Q:ht,H:ft},zt=/^\d*$/,Ft=/^[A-Z0-9 $%*+./:-]*$/,L="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:",T=1,q=40,at=3,Bt=3,I=40,Lt=10,mt=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],pt=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]];class _t{constructor(e,s,n,r){if(this.version=e,this.ecc=s,e<T||e>q)throw new RangeError("Version value out of range");if(r<-1||r>7)throw new RangeError("Mask value out of range");this.size=e*4+17;const o=Array.from({length:this.size}).fill(!1);for(let c=0;c<this.size;c++)this.modules.push(o.slice()),this.types.push(o.map(()=>0));this.drawFunctionPatterns();const a=this.addEccAndInterleave(n);if(this.drawCodewords(a),r===-1){let c=1e9;for(let u=0;u<8;u++){this.applyMask(u),this.drawFormatBits(u);const h=this.getPenaltyScore();h<c&&(r=u,c=h),this.applyMask(u)}}this.mask=r,this.applyMask(r),this.drawFormatBits(r)}size;mask;modules=[];types=[];getModule(e,s){return e>=0&&e<this.size&&s>=0&&s<this.size&&this.modules[s][e]}drawFunctionPatterns(){for(let n=0;n<this.size;n++)this.setFunctionModule(6,n,n%2===0,k.Timing),this.setFunctionModule(n,6,n%2===0,k.Timing);this.drawFinderPattern(3,3),this.drawFinderPattern(this.size-4,3),this.drawFinderPattern(3,this.size-4);const e=this.getAlignmentPatternPositions(),s=e.length;for(let n=0;n<s;n++)for(let r=0;r<s;r++)n===0&&r===0||n===0&&r===s-1||n===s-1&&r===0||this.drawAlignmentPattern(e[n],e[r]);this.drawFormatBits(0),this.drawVersion()}drawFormatBits(e){const s=this.ecc[1]<<3|e;let n=s;for(let o=0;o<10;o++)n=n<<1^(n>>>9)*1335;const r=(s<<10|n)^21522;for(let o=0;o<=5;o++)this.setFunctionModule(8,o,x(r,o));this.setFunctionModule(8,7,x(r,6)),this.setFunctionModule(8,8,x(r,7)),this.setFunctionModule(7,8,x(r,8));for(let o=9;o<15;o++)this.setFunctionModule(14-o,8,x(r,o));for(let o=0;o<8;o++)this.setFunctionModule(this.size-1-o,8,x(r,o));for(let o=8;o<15;o++)this.setFunctionModule(8,this.size-15+o,x(r,o));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let n=0;n<12;n++)e=e<<1^(e>>>11)*7973;const s=this.version<<12|e;for(let n=0;n<18;n++){const r=x(s,n),o=this.size-11+n%3,a=Math.floor(n/3);this.setFunctionModule(o,a,r),this.setFunctionModule(a,o,r)}}drawFinderPattern(e,s){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){const o=Math.max(Math.abs(r),Math.abs(n)),a=e+r,c=s+n;a>=0&&a<this.size&&c>=0&&c<this.size&&this.setFunctionModule(a,c,o!==2&&o!==4,k.Position)}}drawAlignmentPattern(e,s){for(let n=-2;n<=2;n++)for(let r=-2;r<=2;r++)this.setFunctionModule(e+r,s+n,Math.max(Math.abs(r),Math.abs(n))!==1,k.Alignment)}setFunctionModule(e,s,n,r=k.Function){this.modules[s][e]=n,this.types[s][e]=r}addEccAndInterleave(e){const s=this.version,n=this.ecc;if(e.length!==z(s,n))throw new RangeError("Invalid argument");const r=pt[n[0]][s],o=mt[n[0]][s],a=Math.floor(O(s)/8),c=r-a%r,u=Math.floor(a/r),h=[],p=Yt(o);for(let f=0,b=0;f<r;f++){const g=e.slice(b,b+u-o+(f<c?0:1));b+=g.length;const E=Gt(g,p);f<c&&g.push(0),h.push(g.concat(E))}const m=[];for(let f=0;f<h[0].length;f++)h.forEach((b,g)=>{(f!==u-o||g>=c)&&m.push(b[f])});return m}drawCodewords(e){if(e.length!==Math.floor(O(this.version)/8))throw new RangeError("Invalid argument");let s=0;for(let n=this.size-1;n>=1;n-=2){n===6&&(n=5);for(let r=0;r<this.size;r++)for(let o=0;o<2;o++){const a=n-o,u=(n+1&2)===0?this.size-1-r:r;!this.types[u][a]&&s<e.length*8&&(this.modules[u][a]=x(e[s>>>3],7-(s&7)),s++)}}}applyMask(e){if(e<0||e>7)throw new RangeError("Mask value out of range");for(let s=0;s<this.size;s++)for(let n=0;n<this.size;n++){let r;switch(e){case 0:r=(n+s)%2===0;break;case 1:r=s%2===0;break;case 2:r=n%3===0;break;case 3:r=(n+s)%3===0;break;case 4:r=(Math.floor(n/3)+Math.floor(s/2))%2===0;break;case 5:r=n*s%2+n*s%3===0;break;case 6:r=(n*s%2+n*s%3)%2===0;break;case 7:r=((n+s)%2+n*s%3)%2===0;break;default:throw new Error("Unreachable")}!this.types[s][n]&&r&&(this.modules[s][n]=!this.modules[s][n])}}getPenaltyScore(){let e=0;for(let o=0;o<this.size;o++){let a=!1,c=0;const u=[0,0,0,0,0,0,0];for(let h=0;h<this.size;h++)this.modules[o][h]===a?(c++,c===5?e+=at:c>5&&e++):(this.finderPenaltyAddHistory(c,u),a||(e+=this.finderPenaltyCountPatterns(u)*I),a=this.modules[o][h],c=1);e+=this.finderPenaltyTerminateAndCount(a,c,u)*I}for(let o=0;o<this.size;o++){let a=!1,c=0;const u=[0,0,0,0,0,0,0];for(let h=0;h<this.size;h++)this.modules[h][o]===a?(c++,c===5?e+=at:c>5&&e++):(this.finderPenaltyAddHistory(c,u),a||(e+=this.finderPenaltyCountPatterns(u)*I),a=this.modules[h][o],c=1);e+=this.finderPenaltyTerminateAndCount(a,c,u)*I}for(let o=0;o<this.size-1;o++)for(let a=0;a<this.size-1;a++){const c=this.modules[o][a];c===this.modules[o][a+1]&&c===this.modules[o+1][a]&&c===this.modules[o+1][a+1]&&(e+=Bt)}let s=0;for(const o of this.modules)s=o.reduce((a,c)=>a+(c?1:0),s);const n=this.size*this.size,r=Math.ceil(Math.abs(s*20-n*10)/n)-1;return e+=r*Lt,e}getAlignmentPatternPositions(){if(this.version===1)return[];{const e=Math.floor(this.version/7)+2,s=this.version===32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.length<e;r-=s)n.splice(1,0,r);return n}}finderPenaltyCountPatterns(e){const s=e[1],n=s>0&&e[2]===s&&e[3]===s*3&&e[4]===s&&e[5]===s;return(n&&e[0]>=s*4&&e[6]>=s?1:0)+(n&&e[6]>=s*4&&e[0]>=s?1:0)}finderPenaltyTerminateAndCount(e,s,n){return e&&(this.finderPenaltyAddHistory(s,n),s=0),s+=this.size,this.finderPenaltyAddHistory(s,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,s){s[0]===0&&(e+=this.size),s.pop(),s.unshift(e)}}function N(t,e,s){if(e<0||e>31||t>>>e)throw new RangeError("Value out of range");for(let n=e-1;n>=0;n--)s.push(t>>>n&1)}function x(t,e){return(t>>>e&1)!==0}class V{constructor(e,s,n){if(this.mode=e,this.numChars=s,this.bitData=n,s<0)throw new RangeError("Invalid argument");this.bitData=n.slice()}getData(){return this.bitData.slice()}}const $t=[1,10,12,14],Ot=[2,9,11,13],Ut=[4,8,16,16];function gt(t,e){return t[Math.floor((e+7)/17)+1]}function yt(t){const e=[];for(const s of t)N(s,8,e);return new V(Ut,t.length,e)}function Dt(t){if(!bt(t))throw new RangeError("String contains non-numeric characters");const e=[];for(let s=0;s<t.length;){const n=Math.min(t.length-s,3);N(Number.parseInt(t.substring(s,s+n),10),n*3+1,e),s+=n}return new V($t,t.length,e)}function Tt(t){if(!vt(t))throw new RangeError("String contains unencodable characters in alphanumeric mode");const e=[];let s;for(s=0;s+2<=t.length;s+=2){let n=L.indexOf(t.charAt(s))*45;n+=L.indexOf(t.charAt(s+1)),N(n,11,e)}return s<t.length&&N(L.indexOf(t.charAt(s)),6,e),new V(Ot,t.length,e)}function qt(t){return t===""?[]:bt(t)?[Dt(t)]:vt(t)?[Tt(t)]:[yt(Ht(t))]}function bt(t){return zt.test(t)}function vt(t){return Ft.test(t)}function Vt(t,e){let s=0;for(const n of t){const r=gt(n.mode,e);if(n.numChars>=1<<r)return Number.POSITIVE_INFINITY;s+=4+r+n.bitData.length}return s}function Ht(t){t=encodeURI(t);const e=[];for(let s=0;s<t.length;s++)t.charAt(s)!=="%"?e.push(t.charCodeAt(s)):(e.push(Number.parseInt(t.substring(s+1,s+3),16)),s+=2);return e}function O(t){if(t<T||t>q)throw new RangeError("Version number out of range");let e=(16*t+128)*t+64;if(t>=2){const s=Math.floor(t/7)+2;e-=(25*s-10)*s-55,t>=7&&(e-=36)}return e}function z(t,e){return Math.floor(O(t)/8)-mt[e[0]][t]*pt[e[0]][t]}function Yt(t){if(t<1||t>255)throw new RangeError("Degree out of range");const e=[];for(let n=0;n<t-1;n++)e.push(0);e.push(1);let s=1;for(let n=0;n<t;n++){for(let r=0;r<e.length;r++)e[r]=U(e[r],s),r+1<e.length&&(e[r]^=e[r+1]);s=U(s,2)}return e}function Gt(t,e){const s=e.map(n=>0);for(const n of t){const r=n^s.shift();s.push(0),e.forEach((o,a)=>s[a]^=U(o,r))}return s}function U(t,e){if(t>>>8||e>>>8)throw new RangeError("Byte out of range");let s=0;for(let n=7;n>=0;n--)s=s<<1^(s>>>7)*285,s^=(e>>>n&1)*t;return s}function Wt(t,e,s=1,n=40,r=-1,o=!0){if(!(T<=s&&s<=n&&n<=q)||r<-1||r>7)throw new RangeError("Invalid value");let a,c;for(a=s;;a++){const m=z(a,e)*8,f=Vt(t,a);if(f<=m){c=f;break}if(a>=n)throw new RangeError("Data too long")}for(const m of[dt,ht,ft])o&&c<=z(a,m)*8&&(e=m);const u=[];for(const m of t){N(m.mode[0],4,u),N(m.numChars,gt(m.mode,a),u);for(const f of m.getData())u.push(f)}const h=z(a,e)*8;N(0,Math.min(4,h-u.length),u),N(0,(8-u.length%8)%8,u);for(let m=236;u.length<h;m^=253)N(m,8,u);const p=Array.from({length:Math.ceil(u.length/8)},()=>0);return u.forEach((m,f)=>p[f>>>3]|=m<<7-(f&7)),new _t(a,e,p,r)}function Xt(t,e){const{ecc:s="L",boostEcc:n=!1,minVersion:r=1,maxVersion:o=40,maskPattern:a=-1,border:c=1}=e||{},u=typeof t=="string"?qt(t):Array.isArray(t)?[yt(t)]:void 0;if(!u)throw new Error(`uqr only supports encoding string and binary data, but got: ${typeof t}`);const h=Wt(u,It[s],r,o,a,n),p=Jt({version:h.version,maskPattern:h.mask,size:h.size,data:h.modules,types:h.types},c);return e?.invert&&(p.data=p.data.map(m=>m.map(f=>!f))),e?.onEncoded?.(p),p}function Jt(t,e=1){if(!e)return t;const{size:s}=t,n=s+e*2;t.size=n,t.data.forEach(o=>{for(let a=0;a<e;a++)o.unshift(!1),o.push(!1)});for(let o=0;o<e;o++)t.data.unshift(Array.from({length:n},a=>!1)),t.data.push(Array.from({length:n},a=>!1));const r=k.Border;t.types.forEach(o=>{for(let a=0;a<e;a++)o.unshift(r),o.push(r)});for(let o=0;o<e;o++)t.types.unshift(Array.from({length:n},a=>r)),t.types.push(Array.from({length:n},a=>r));return t}function lt(t){return t.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function Kt(t,e={}){const s=Xt(t,e),{pixelSize:n=10,whiteColor:r="white",blackColor:o="black"}=e,a=s.size*n,c=s.size*n;let u=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${c} ${a}">`;const h=[];for(let p=0;p<s.size;p++)for(let m=0;m<s.size;m++){const f=m*n,b=p*n;s.data[p][m]&&h.push(`M${f},${b}h${n}v${n}h-${n}z`)}return u+=`<rect fill="${lt(r)}" width="${c}" height="${a}"/>`,u+=`<path fill="${lt(o)}" d="${h.join("")}"/>`,u+="</svg>",u}const Zt="scout",Qt="pair";function _(t){const e=typeof t=="string"?t.trim():"";return e?`${Zt}://${Qt}?payload=${encodeURIComponent(e)}`:null}function te(t){const e=ee(t),s=_(t);if(!e)return{default:s,lan:null,tailnet:null};const n=xt(e.relay,e.fallbackRelays??[]),r=n.find(se),o=n.find(ne);return{default:s,lan:r?_(JSON.stringify(ct(e,r))):null,tailnet:o?_(JSON.stringify(ct(e,o))):null}}function ee(t){const e=typeof t=="string"?t.trim():"";if(!e)return null;try{const s=JSON.parse(e);return!s||typeof s!="object"||typeof s.relay!="string"?null:s}catch{return null}}function ct(t,e){const s=xt(e,[t.relay,...Array.isArray(t.fallbackRelays)?t.fallbackRelays:[]]),n={...t,relay:s[0]};return s.length>1?n.fallbackRelays=s.slice(1):delete n.fallbackRelays,n}function xt(t,e){const s=[],n=new Set;for(const r of[t,...e]){if(typeof r!="string")continue;const o=r.trim();!o||n.has(o)||(n.add(o),s.push(o))}return s}function se(t){const e=Nt(t);if(!e)return!1;if(e.endsWith(".local"))return!0;const s=wt(e);if(!s)return!1;const[n,r]=s;return n===10||n===192&&r===168||n===172&&r>=16&&r<=31||n===169&&r===254}function ne(t){const e=Nt(t);if(!e)return!1;if(e.endsWith(".ts.net"))return!0;const s=wt(e);if(!s)return!1;const[n,r]=s;return n===100&&r>=64&&r<=127}function Nt(t){try{return new URL(t).hostname.toLowerCase()}catch{return""}}function wt(t){const e=t.split(".");if(e.length!==4)return null;const s=e.map(n=>{if(!/^\d+$/.test(n))return Number.NaN;const r=Number(n);return r>=0&&r<=255?r:Number.NaN});return s.every(Number.isFinite)?s:null}function re(t){return t?t.replace(/^wss?:\/\//,"").replace(/:\d+$/,""):null}function ut(t){return t?t.length<=18?t:`${t.slice(0,10)}...${t.slice(-6)}`:null}function ie(t,e){if(!t)return null;const s=Math.max(0,Math.floor((t-e)/1e3));if(s===0)return null;if(s<60)return`${s}s`;const n=Math.floor(s/60),r=s%60;return r>0?`${n}m ${r}s`:`${n}m`}function D({value:t}){const[e,s]=d.useState(!1),n=d.useCallback(()=>{navigator.clipboard.writeText(t).then(()=>{s(!0),setTimeout(()=>s(!1),1500)})},[t]);return i.jsx("button",{type:"button",className:"sys-copy-btn",onClick:n,title:"Copy",children:e?i.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:i.jsx("polyline",{points:"20 6 9 17 4 12"})}):i.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[i.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),i.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})}function $({label:t,value:e}){return i.jsxs("span",{className:"sys-settings-route-link",children:[i.jsx("a",{className:"sys-settings-link",href:e,title:e,"aria-label":`Open Scout ${t} pairing link`,children:i.jsx("code",{children:t})}),i.jsx(D,{value:e})]})}function oe({agentId:t,navigate:e}){return d.useEffect(()=>{e({view:"agents-v2",agentId:t,tab:"config"})},[t,e]),null}function vs({navigate:t,section:e,agentId:s}){if(e==="agents"&&s)return i.jsx(oe,{agentId:s,navigate:t});if(e==="agents")return i.jsx(Mt,{navigate:t,selectedAgentId:s});if(e===void 0||e==="appearance"||e==="operator"||e==="comms"||e==="credentials"||e==="voice"||e==="devices"||e==="about"){const n=e??"appearance";return i.jsx(At,{section:n,onSectionChange:r=>t({view:"settings",section:r})})}return i.jsx(ae,{})}function ae(){const[t,e]=d.useState(null),[s,n]=d.useState(""),[r,o]=d.useState(""),[a,c]=d.useState(!0),[u,h]=d.useState(!1),[p,m]=d.useState(!1),[f,b]=d.useState(null),[g,E]=d.useState(null),[H,A]=d.useState(null),[C,Y]=d.useState(null),[jt,G]=d.useState(()=>Date.now()),[W,X]=d.useState(null),J=d.useRef(null),w=d.useRef(0),K=d.useRef(null);d.useEffect(()=>{J.current=t},[t]),d.useEffect(()=>{K.current=f},[f]),d.useEffect(()=>{!t||window.location.hash!=="#trusted-peers"||window.requestAnimationFrame(()=>{document.getElementById("trusted-peers")?.scrollIntoView({block:"start"})})},[t]);const j=d.useCallback(async(l="initial")=>{if(l==="background"&&K.current)return;const v=++w.current;!(J.current!==null)&&l!=="background"?(c(!0),E(null)):h(!0);try{const R=await M(l==="manual"?"/api/pairing-state/refresh":"/api/pairing-state");if(v!==w.current)return;e(R),E(null),Y(Date.now())}catch(R){if(v!==w.current)return;E(R instanceof Error?R.message:String(R))}finally{v===w.current&&(c(!1),h(!1))}},[]),Z=d.useCallback(async()=>{try{const l=await M("/api/user");o(l.name),n(l.name),A(null)}catch(l){A(l instanceof Error?l.message:String(l))}},[]),Q=d.useRef(!1);d.useEffect(()=>{j("initial"),Z()},[j,Z]),d.useEffect(()=>{const l=setInterval(()=>{j("background")},1e4);return()=>clearInterval(l)},[j]),d.useEffect(()=>{if(!t?.pairing?.expiresAt)return;G(Date.now());const l=setInterval(()=>{G(Date.now())},1e3);return()=>clearInterval(l)},[t?.pairing?.expiresAt]);const tt=d.useCallback(async()=>{m(!0),A(null);try{const l=await M("/api/user",{method:"POST",body:JSON.stringify({name:s})});o(l.name),n(l.name)}catch(l){A(l instanceof Error?l.message:String(l))}finally{m(!1)}},[s]),S=d.useCallback(async l=>{const v=++w.current;b(l),E(null);try{const P=await M("/api/pairing/control",{method:"POST",body:JSON.stringify({action:l})});if(v!==w.current)return;e(P),Y(Date.now())}catch(P){if(v!==w.current)return;E(P instanceof Error?P.message:String(P))}finally{v===w.current&&b(null)}},[]);d.useEffect(()=>{!t||t.isRunning||Q.current||(Q.current=!0,S("start"))},[t,S]);const Et=d.useCallback(async l=>{X(l);try{await M(`/api/pairing/peers/${encodeURIComponent(l)}`,{method:"DELETE"}),j("manual")}catch{}finally{X(null)}},[j]),et=d.useMemo(()=>{const l=t?.pairing?.qrValue?.trim();return l?Kt(l,{border:2,ecc:"M",pixelSize:8}):null},[t?.pairing?.qrValue]),y=d.useMemo(()=>te(t?.pairing?.qrValue),[t?.pairing?.qrValue]),kt=!!(y.lan||y.tailnet||y.default),F=re(t?.pairing?.relay??t?.relay??null),st=ie(t?.pairing?.expiresAt,jt),nt=(t?.trustedPeers.find(l=>l.fingerprint===t.connectedPeerFingerprint)??null)?.name??ut(t?.connectedPeerFingerprint??null),Pt=Rt(t),rt=s.trim()!==r,St=!a&&!t&&!!g;return i.jsxs("div",{className:"sys-surface-page sys-settings-page",children:[i.jsxs("div",{className:"sys-page-head",children:[i.jsxs("div",{className:"sys-page-title-group",children:[i.jsx("h2",{className:"sys-page-title",children:"Settings"}),i.jsx("p",{className:"sys-page-subtitle",children:"Identity, pairing, and trusted devices."})]}),i.jsxs("div",{className:"sys-page-actions",children:[t&&i.jsx(B,{tone:Pt,children:t.statusLabel}),i.jsx("div",{className:"sys-sync-note",children:a?"Loading...":g&&t?`Snapshot from ${C?ot(C):"earlier"}`:C?`Updated ${ot(C)}`:""}),i.jsx("button",{type:"button",className:"s-btn",disabled:a||u||!!f,onClick:()=>{j("manual")},children:u?"Refreshing...":"Refresh"})]})]}),g&&t&&i.jsxs("div",{className:"sys-banner sys-banner-warning",children:[i.jsx("strong",{children:"Refresh failed."}),i.jsx("span",{children:g})]}),H&&i.jsxs("div",{className:"sys-banner sys-banner-warning",children:[i.jsx("strong",{children:"Identity error."}),i.jsx("span",{children:H})]}),a&&!t&&i.jsx(it,{title:"Loading settings",body:"Checking relay status and trusted peers."}),St&&i.jsx(it,{className:"sys-state-card-error",title:"Pairing unavailable",body:g,action:i.jsx("button",{type:"button",className:"s-btn",onClick:()=>{j("manual")},children:"Try again"})}),i.jsxs("div",{className:"sys-settings-hero",children:[i.jsx("div",{className:"sys-settings-qr-col",children:et?i.jsxs("div",{className:"sys-settings-qr-frame",children:[i.jsx("div",{className:"s-qr",dangerouslySetInnerHTML:{__html:et}}),st&&i.jsxs("span",{className:"sys-settings-qr-expires",children:["Expires in ",st]})]}):i.jsx("div",{className:"sys-settings-qr-empty",children:i.jsx("span",{className:"sys-settings-qr-empty-label",children:"Generating QR..."})})}),i.jsxs("div",{className:"sys-settings-info-col",children:[i.jsxs("div",{className:"sys-input-row",children:[i.jsx("input",{className:"sys-input",type:"text",placeholder:"Your name",value:s,onChange:l=>n(l.target.value),onKeyDown:l=>{l.key==="Enter"&&rt&&!p&&tt()}}),i.jsx("button",{type:"button",className:"s-btn s-btn-primary",disabled:!rt||p,onClick:()=>{tt()},children:p?"Saving...":"Save"})]}),i.jsxs("div",{className:"sys-settings-kv-list",children:[t?.identityFingerprint&&i.jsxs("div",{className:"sys-settings-kv",children:[i.jsx("span",{className:"sys-settings-kv-label",children:"Fingerprint"}),i.jsxs("span",{className:"sys-settings-kv-value",children:[i.jsx("code",{children:t.identityFingerprint}),i.jsx(D,{value:t.identityFingerprint})]})]}),F&&i.jsxs("div",{className:"sys-settings-kv",children:[i.jsx("span",{className:"sys-settings-kv-label",children:"Relay"}),i.jsxs("span",{className:"sys-settings-kv-value",children:[i.jsx("code",{children:F}),i.jsx(D,{value:F})]})]}),kt&&i.jsxs("div",{className:"sys-settings-kv",children:[i.jsx("span",{className:"sys-settings-kv-label",children:"Links"}),i.jsxs("span",{className:"sys-settings-kv-value sys-settings-link-list",children:[y.lan&&i.jsx($,{label:"LAN",value:y.lan}),y.tailnet&&i.jsx($,{label:"TSN",value:y.tailnet}),!y.lan&&!y.tailnet&&y.default&&i.jsx($,{label:"PAIR",value:y.default})]})]}),t?.statusDetail&&i.jsxs("div",{className:"sys-settings-kv",children:[i.jsx("span",{className:"sys-settings-kv-label",children:"Status"}),i.jsx("span",{className:"sys-settings-kv-value sys-settings-kv-nowrap",children:t.statusDetail})]}),nt&&i.jsxs("div",{className:"sys-settings-kv",children:[i.jsx("span",{className:"sys-settings-kv-label",children:"Connected"}),i.jsx("span",{className:"sys-settings-kv-value",children:nt})]}),t?.secure&&i.jsxs("div",{className:"sys-settings-kv",children:[i.jsx("span",{className:"sys-settings-kv-label",children:"Security"}),i.jsx("span",{className:"sys-settings-kv-value",children:i.jsx(B,{tone:"success",children:"Noise XX"})})]})]}),t&&i.jsx("div",{className:"sys-inline-actions sys-settings-controls",children:t.isRunning?i.jsxs(i.Fragment,{children:[i.jsx("button",{type:"button",className:"s-btn",disabled:!!f,onClick:()=>{S("restart")},children:f==="restart"?"Restarting...":"Restart"}),i.jsx("button",{type:"button",className:"s-btn",disabled:!!f,onClick:()=>{S("stop")},children:f==="stop"?"Stopping...":"Stop"})]}):i.jsx("button",{type:"button",className:"s-btn s-btn-primary",disabled:!!f,onClick:()=>{S("start")},children:f==="start"?"Starting...":"Start pairing"})})]})]}),t&&i.jsxs("section",{className:"sys-settings-peers",id:"trusted-peers",children:[i.jsx("div",{className:"sys-section-head",children:i.jsxs("div",{children:[i.jsx("h3",{className:"sys-section-title",children:"Trusted peers"}),i.jsxs("p",{className:"sys-section-subtitle",children:[t.trustedPeers.length," device",t.trustedPeers.length!==1?"s":""," paired with this broker."]})]})}),t.trustedPeers.length===0?i.jsxs("div",{className:"sys-list-empty",children:[i.jsx("h3",{children:"No trusted peers"}),i.jsx("p",{children:"Devices appear here after completing pairing."})]}):i.jsxs("table",{className:"sys-peers-table",children:[i.jsx("thead",{children:i.jsxs("tr",{children:[i.jsx("th",{children:"Device"}),i.jsx("th",{children:"Fingerprint"}),i.jsx("th",{children:"Paired"}),i.jsx("th",{children:"Last seen"}),i.jsx("th",{})]})}),i.jsx("tbody",{children:t.trustedPeers.map(l=>{const v=l.fingerprint===t.connectedPeerFingerprint;return i.jsxs("tr",{className:v?"sys-peers-row-connected":"",children:[i.jsx("td",{children:i.jsxs("span",{className:"sys-peers-name",children:[l.name??ut(l.fingerprint)??"Peer",v&&i.jsx(B,{tone:"success",className:"sys-peers-badge",children:"Connected"})]})}),i.jsx("td",{children:i.jsx("code",{className:"sys-peers-fp",children:l.fingerprint})}),i.jsx("td",{children:l.pairedAtLabel??"—"}),i.jsx("td",{children:l.lastSeenLabel??"—"}),i.jsx("td",{children:i.jsx("button",{type:"button",className:"sys-peers-remove",disabled:W===l.fingerprint,onClick:()=>{Et(l.fingerprint)},title:"Remove peer",children:W===l.fingerprint?"...":"Remove"})})]},l.fingerprint)})})]})]})]})}export{vs as SettingsScreen};
|