@openscout/scout 0.2.98 → 0.2.102

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.
Files changed (622) hide show
  1. package/NOTICE +7 -0
  2. package/bin/scoutd +0 -0
  3. package/dist/build-manifest.json +3 -3
  4. package/dist/client/assets/ActivityScreen-DCALiEXY.js +1 -0
  5. package/dist/client/assets/{AddProjectForm-fXndbzXT.js → AddProjectForm-DfbjlFfy.js} +1 -1
  6. package/dist/client/assets/AdventureEvidence-Dzz9VbuE.js +5 -0
  7. package/dist/client/assets/AdventureReader-ClMxT0e4.js +4 -0
  8. package/dist/client/assets/AdventureScenery-D548O0x4.js +1 -0
  9. package/dist/client/assets/AgentAdventures-NwTKeF0F.js +1 -0
  10. package/dist/client/assets/AgentAvatar-BIwg54Tj.js +1 -0
  11. package/dist/client/assets/AgentConfigurationScreen-B2Hw0ce1.js +1 -0
  12. package/dist/client/assets/AgentDefinitionsWorkspace-CwZJ833X.js +1 -0
  13. package/dist/client/assets/AgentDetailCard-CFDE8TLi.js +1 -0
  14. package/dist/client/assets/AgentFloorView-l2wNKFob.js +1 -0
  15. package/dist/client/assets/AgentFloorWorld-BDJmXl3C.js +1 -0
  16. package/dist/client/assets/AgentInfoScreen-ClZM1wQb.js +1 -0
  17. package/dist/client/assets/{AgentLaneCard-Cc9uyfBr.js → AgentLaneCard-C6YmwPxQ.js} +1 -1
  18. package/dist/client/assets/{AgentLaneChrome-Dv2lBFoH.js → AgentLaneChrome-D9uJ4QY7.js} +1 -1
  19. package/dist/client/assets/{AgentLaneDetailSheet-CGqtqSHQ.js → AgentLaneDetailSheet-KYckCBCX.js} +2 -2
  20. package/dist/client/assets/{AgentLaneSummaryResize-Di4u6df2.js → AgentLaneSummaryResize-BBYBS3DO.js} +1 -1
  21. package/dist/client/assets/AgentLanesEmbedScreen-DqHwqY0X.js +1 -0
  22. package/dist/client/assets/{AgentLanesPreflight-CCGBArIb.js → AgentLanesPreflight-pw2vMO3Q.js} +1 -1
  23. package/dist/client/assets/AgentLanesView-aAyC7lHf.js +2 -0
  24. package/dist/client/assets/AgentLiveActions-lYzicnNa.js +1 -0
  25. package/dist/client/assets/AgentMasterScreen-By6DN0jF.js +1 -0
  26. package/dist/client/assets/AgentSessions-Cox2zS-e.js +6 -0
  27. package/dist/client/assets/AgentsConsole-Dq0S_hRA.js +1 -0
  28. package/dist/client/assets/AgentsScreen-Bi9Lx47B.js +1 -0
  29. package/dist/client/assets/AgentsSubnav-BOobgtGE.js +1 -0
  30. package/dist/client/assets/{AstronautSuit-CwB4Dw07.js → AstronautSuit-C-4I5YKi.js} +1 -1
  31. package/dist/client/assets/AtopView-DKm-ERYC.js +1 -0
  32. package/dist/client/assets/BackToPicker-Bys9ColC.js +1 -0
  33. package/dist/client/assets/BriefingDetailScreen-sprFl4Nk.js +1 -0
  34. package/dist/client/assets/BriefingsScreen-D4Zf31Y6.js +1 -0
  35. package/dist/client/assets/{BrokerMetadataPanel-BJSwU9XZ.js → BrokerMetadataPanel-1GoSl2BV.js} +1 -1
  36. package/dist/client/assets/BrokerScreen-CejzhRsB.js +8 -0
  37. package/dist/client/assets/{CastPicker-CkgTalIt.js → CastPicker-BuwE_JQp.js} +1 -1
  38. package/dist/client/assets/CharacterFamilyPreview-BniL8sEL.css +1 -0
  39. package/dist/client/assets/CharacterFamilyPreview-CfO3j8Of.js +1 -0
  40. package/dist/client/assets/ChatCollapsedStrip-TV0j1xTB.js +1 -0
  41. package/dist/client/assets/{CodeDiffPane-DfluIWmO.js → CodeDiffPane-DB6-mqtX.js} +1 -1
  42. package/dist/client/assets/{CodeProjectPicker-By_Wz9ex.js → CodeProjectPicker-B_LNLpIK.js} +1 -1
  43. package/dist/client/assets/CodeScreen-C9H160XS.js +1 -0
  44. package/dist/client/assets/CommsCanvas-BR2YS76H.css +1 -0
  45. package/dist/client/assets/CommsCanvas-DOKw3Q8i.js +1 -0
  46. package/dist/client/assets/CommsDeck-C18JA7rK.js +1 -0
  47. package/dist/client/assets/CommsFlowGraph-Czg-KTS0.js +1 -0
  48. package/dist/client/assets/CommsFlowGraph-vQucylxF.css +1 -0
  49. package/dist/client/assets/CommsFlowMap-CzBWvSa5.js +1 -0
  50. package/dist/client/assets/CommsSelection-g1twA-Lb.js +1 -0
  51. package/dist/client/assets/{ConversationComposer-BUIjWMBi.js → ConversationComposer-B7RU6LKd.js} +1 -1
  52. package/dist/client/assets/ConversationFeedRows-DVqnZQH0.js +1 -0
  53. package/dist/client/assets/ConversationHeader-CCSU8uo_.js +1 -0
  54. package/dist/client/assets/ConversationPanels-C9yCAoJy.js +6 -0
  55. package/dist/client/assets/ConversationScreen-Brfas2y0.css +1 -0
  56. package/dist/client/assets/ConversationScreen-tTP6B_F-.js +2 -0
  57. package/dist/client/assets/ConversationStatus-CK-YfLpi.js +1 -0
  58. package/dist/client/assets/{CrewAvatar-CZ_faQ_s.js → CrewAvatar-CJhuqTsJ.js} +1 -1
  59. package/dist/client/assets/CrewSprite-DsQJdu3Z.css +1 -0
  60. package/dist/client/assets/CrewSprite-hgpA3SWB.js +1 -0
  61. package/dist/client/assets/CrewWorkspaces-4O8dgRUD.js +1 -0
  62. package/dist/client/assets/{DataTable-C6aMSilS.js → DataTable-BMOZ1-z8.js} +1 -1
  63. package/dist/client/assets/DispatchAftermath-DDlwqSCY.js +1 -0
  64. package/dist/client/assets/DocumentFocusViewer-f12RRQpV.js +1 -0
  65. package/dist/client/assets/{EmbeddableSurfacesLab-D3iZiS8o.js → EmbeddableSurfacesLab-DGl9EMRV.js} +1 -1
  66. package/dist/client/assets/{EmptyState-CKPWFSjq.js → EmptyState-uyYN5piI.js} +1 -1
  67. package/dist/client/assets/{FileViewerPane-CxNbcTYf.js → FileViewerPane-HtiDbj9N.js} +2 -2
  68. package/dist/client/assets/FlightObserveScreen-DDXfNbsw.js +1 -0
  69. package/dist/client/assets/FloorContextSheet-DV-SYA0K.js +1 -0
  70. package/dist/client/assets/FloorExchangePanel-B3TFhjLk.css +1 -0
  71. package/dist/client/assets/FloorExchangePanel-D59nvRCF.js +1 -0
  72. package/dist/client/assets/FloorMessagePasses-BCwsz9VS.js +1 -0
  73. package/dist/client/assets/FloorMessagePasses-nxwwiUom.css +1 -0
  74. package/dist/client/assets/FloorReplay-BHo79HCD.js +1 -0
  75. package/dist/client/assets/FloorResourcesSheet-Djrgd_ZU.js +1 -0
  76. package/dist/client/assets/FloorSavedWork-2tjBoy06.js +1 -0
  77. package/dist/client/assets/FloorTacticalHUD-Bngao6sn.js +1 -0
  78. package/dist/client/assets/FollowScreen-eHXOlK-u.js +1 -0
  79. package/dist/client/assets/{HarnessMark-DttReffF.js → HarnessMark-Bt47OeHy.js} +1 -1
  80. package/dist/client/assets/HarnessesScreen-M84sFjWY.js +1 -0
  81. package/dist/client/assets/{HerdrSession-DsuxCtfX.js → HerdrSession-CtJOUn7H.js} +3 -3
  82. package/dist/client/assets/{HomeHero-DXJo2QSO.js → HomeHero-Cvwx2H0w.js} +1 -1
  83. package/dist/client/assets/HostAdvisorView-CTJXIc1Q.js +1 -0
  84. package/dist/client/assets/KnowledgeSearchInspector-DwGMVmFL.js +1 -0
  85. package/dist/client/assets/KnowledgeSearchScreen-WC0WhFio.js +1 -0
  86. package/dist/client/assets/{LaneToolHoverCard-t7-XJP-h.js → LaneToolHoverCard-C6YehJqD.js} +1 -1
  87. package/dist/client/assets/LaneTraceDetailSheet-mAhj7MJi.js +1 -0
  88. package/dist/client/assets/{LaneTraceEventFocus-BB5DhFQm.js → LaneTraceEventFocus-WLNZZVi_.js} +1 -1
  89. package/dist/client/assets/MeshCanvas-FDDGE69h.js +3 -0
  90. package/dist/client/assets/MeshCanvasMinimap-CGRzQCac.js +1 -0
  91. package/dist/client/assets/MeshScreen-DlfiMlaR.js +1 -0
  92. package/dist/client/assets/{MeshTopologyView-Dc0GSrKa.js → MeshTopologyView-C2Cv_2gx.js} +2 -2
  93. package/dist/client/assets/MessagesScreen-BZ7yaGJx.js +1 -0
  94. package/dist/client/assets/MissionContextRail-CVSZJnvX.js +1 -0
  95. package/dist/client/assets/MissionControlView-DpGhxG4a.js +1 -0
  96. package/dist/client/assets/MissionFocusOverlay-B9SiuO-i.js +1 -0
  97. package/dist/client/assets/MissionLeftAgentRow-DhhRRim0.js +1 -0
  98. package/dist/client/assets/MissionLogPane-CMBiI29U.js +1 -0
  99. package/dist/client/assets/NativeAreaScreen-BQyHHRAM.js +1 -0
  100. package/dist/client/assets/NativeAreaScreen-Ditv-TYW.js +1 -0
  101. package/dist/client/assets/NativeAreaScreen-Dq3uPSEI.js +1 -0
  102. package/dist/client/assets/NewAgentModal-Cl4nsGhu.js +1 -0
  103. package/dist/client/assets/NewChatComposer-JjLbm3W2.js +19 -0
  104. package/dist/client/assets/{NewChatOrigin-DCn5cWPZ.js → NewChatOrigin-CyPPWTJP.js} +1 -1
  105. package/dist/client/assets/NodeDetailPanel-BUG8rOb-.js +1 -0
  106. package/dist/client/assets/NodeMenu-Fw8ATWQA.js +1 -0
  107. package/dist/client/assets/ObserveEmbedScreen-BPiSXXvm.js +2 -0
  108. package/dist/client/assets/{ObserveTextFlow-DCJ5EmD8.js → ObserveTextFlow-ET0dD1wO.js} +2 -2
  109. package/dist/client/assets/{ObservedTopologyPanel-CJVqIqQ2.js → ObservedTopologyPanel-DkEkQzo-.js} +1 -1
  110. package/dist/client/assets/OpenScoutAppShell-CzKbjwCA.js +22 -0
  111. package/dist/client/assets/OpsAgentsView-CZbtkcQH.js +1 -0
  112. package/dist/client/assets/OpsScreen-DJq-aBmX.js +1 -0
  113. package/dist/client/assets/OpsSubnav-9sURjajO.js +1 -0
  114. package/dist/client/assets/ProjectAgentProfile-q_1tMJIL.js +1 -0
  115. package/dist/client/assets/{ProjectAgentProfileBar-CUzZ4Rpx.js → ProjectAgentProfileBar-C1fR65Eh.js} +1 -1
  116. package/dist/client/assets/ProjectAgentProfileHero-DyEFyTFs.js +1 -0
  117. package/dist/client/assets/ProjectsInbox-Bs8I__my.js +2 -0
  118. package/dist/client/assets/ProjectsRail-Deb38OJ1.js +1 -0
  119. package/dist/client/assets/ProjectsScreen-CgLiYiss.js +1 -0
  120. package/dist/client/assets/ProjectsThreadAside-C0Yw3yIL.js +1 -0
  121. package/dist/client/assets/Provider-5Hotn7NQ.js +5 -0
  122. package/dist/client/assets/{RailRow-B0sRaJc6.css → RailRow-B25zKEub.css} +1 -1
  123. package/dist/client/assets/RailRow-BYguXNm4.js +1 -0
  124. package/dist/client/assets/RawSessionsTable-DIhmlvk-.js +1 -0
  125. package/dist/client/assets/RealtimeVoiceScreen-3oU7b7V5.js +1 -0
  126. package/dist/client/assets/RenderedWorkerSprite-CvdWO32C.js +1 -0
  127. package/dist/client/assets/RenderedWorkerSprite-qnTfkd_4.css +1 -0
  128. package/dist/client/assets/ReplayClock-B7JLTp8A.js +1 -0
  129. package/dist/client/assets/ReplayLog-DZTpf2CW.js +1 -0
  130. package/dist/client/assets/ReplayOutpost-CvWQa30T.js +1 -0
  131. package/dist/client/assets/ReplayOutpost-Y1DvZgeu.css +1 -0
  132. package/dist/client/assets/{RepoDiffEmbedScreen-mexrJPhW.js → RepoDiffEmbedScreen-Cbu0_PJW.js} +1 -1
  133. package/dist/client/assets/{RepoDiffPageScreen-DbqX4L3q.js → RepoDiffPageScreen-Chwm6GXL.js} +1 -1
  134. package/dist/client/assets/RepoDiffViewer-C2mb0Wj-.js +7 -0
  135. package/dist/client/assets/RepoDiffViewerLazy-BQ6ZCrsq.js +2 -0
  136. package/dist/client/assets/{ReposScreen-CzbO1Fuy.js → ReposScreen-C7JZQmyh.js} +2 -2
  137. package/dist/client/assets/RiggedWorkerCharacter-BpYECnyK.css +1 -0
  138. package/dist/client/assets/RiggedWorkerCharacter-DNe731GE.js +1 -0
  139. package/dist/client/assets/SageModelStudio-768dRQr4.css +1 -0
  140. package/dist/client/assets/SageModelStudio-BR1J2D4R.js +4108 -0
  141. package/dist/client/assets/ScoutDeckSurface-flRamdvE.js +1 -0
  142. package/dist/client/assets/{ScoutSurface-NlhDsPzg.js → ScoutSurface-BpklGmDL.js} +1 -1
  143. package/dist/client/assets/{ScoutbotFxLab-l2WAahCg.js → ScoutbotFxLab-DeK7ySWZ.js} +1 -1
  144. package/dist/client/assets/{SecondaryNav-Cs0_FQdj.js → SecondaryNav-BkTn5tkq.js} +1 -1
  145. package/dist/client/assets/SessionEmbedScreen-CcQN6xlo.js +1 -0
  146. package/dist/client/assets/{SessionObserve-CLrHfAKZ.css → SessionObserve-BOBJSfs0.css} +1 -1
  147. package/dist/client/assets/SessionObserve-DaqDhqDI.js +12 -0
  148. package/dist/client/assets/SessionObserveEvidence-Drv-D8Oh.js +1 -0
  149. package/dist/client/assets/SessionRefScreen-BOQ1_ydg.js +1 -0
  150. package/dist/client/assets/SessionsScreen-R8QKvoey.js +1 -0
  151. package/dist/client/assets/SettingsDrawer-BDapR4E9.js +3 -0
  152. package/dist/client/assets/SettingsScreen-DirtO7Z0.js +1 -0
  153. package/dist/client/assets/SharedFloorCharacter-Bi5_md4R.css +1 -0
  154. package/dist/client/assets/SharedFloorCharacter-CSYG_t9t.js +1 -0
  155. package/dist/client/assets/SharedWorkFloor-BCmdeb3Q.css +1 -0
  156. package/dist/client/assets/SharedWorkFloor-yPWFLZwX.js +2 -0
  157. package/dist/client/assets/{ShikiPane-C0TuCATU.js → ShikiPane-BudrOxNK.js} +1 -1
  158. package/dist/client/assets/{SlidePanel-CETQ5NTx.js → SlidePanel-Datu7XG4.js} +1 -1
  159. package/dist/client/assets/SpriteAvatar-BW1JzkDt.js +1 -0
  160. package/dist/client/assets/SproutActionSprite-DveCzg6l.js +1 -0
  161. package/dist/client/assets/{StatusPill-BllrY-eg.js → StatusPill-MxYClPG5.js} +1 -1
  162. package/dist/client/assets/{TailView-_gKWfaQM.js → TailView-Dn7uWmPz.js} +2 -2
  163. package/dist/client/assets/Terminal-D-DsQlmV.js +4 -0
  164. package/dist/client/assets/TerminalEmbedScreen-9Gmln759.js +1 -0
  165. package/dist/client/assets/TerminalHeaderMount-DCGstkZ4.js +1 -0
  166. package/dist/client/assets/{TextDocumentSurface-2X1Gw4eA.js → TextDocumentSurface-BhYvAB0o.js} +1 -1
  167. package/dist/client/assets/{TmuxPeek-CqTJRhkI.js → TmuxPeek-BhK0V9Qt.js} +1 -1
  168. package/dist/client/assets/{VoicePermissionsPanel-C4vkU-sU.js → VoicePermissionsPanel-CecFWzva.js} +1 -1
  169. package/dist/client/assets/{WorkDetailScreen-DqGnuK0e.js → WorkDetailScreen-CwtRCm_-.js} +4 -4
  170. package/dist/client/assets/WorkFilesViewer-DJHftsH9.js +1 -0
  171. package/dist/client/assets/WorkRunView-CxwAZ2QQ.css +1 -0
  172. package/dist/client/assets/WorkRunView-x5PH1byG.js +1 -0
  173. package/dist/client/assets/WorldActorTalk-uIH2jGqA.js +1 -0
  174. package/dist/client/assets/WorldCharacter-Dn4sIXNP.js +1 -0
  175. package/dist/client/assets/WorldMinimap-Blqg0d5r.js +1 -0
  176. package/dist/client/assets/WorldSky-DV9bpvXj.js +1 -0
  177. package/dist/client/assets/{activity-CzTJ-YMX.js → activity-CSUhvjD0.js} +1 -1
  178. package/dist/client/assets/{addon-fit-Zx3A7pGS.js → addon-fit-MR98IWES.js} +1 -1
  179. package/dist/client/assets/{addon-webgl-DitJj-N0.js → addon-webgl-CIIKXrvK.js} +1 -1
  180. package/dist/client/assets/adventure-evidence-DgQbBmfa.css +1 -0
  181. package/dist/client/assets/adventure-habitats-v1-CVMbdB_Z.png +0 -0
  182. package/dist/client/assets/adventure-habitats-v1-M1lcpTJh.js +1 -0
  183. package/dist/client/assets/adventure-playback-DTfkhIc0.js +3 -0
  184. package/dist/client/assets/adventure-reader-DM5UDDm9.css +1 -0
  185. package/dist/client/assets/agent-adventures-DZtWpj6k.css +1 -0
  186. package/dist/client/assets/agent-autocomplete-CeHQpuG9.js +10 -0
  187. package/dist/client/assets/{agent-essentials-K9B6kbTS.js → agent-essentials-8t2il7PV.js} +1 -1
  188. package/dist/client/assets/{agent-floor-CuJr1iK1.css → agent-floor-Dmr9hZHL.css} +1 -1
  189. package/dist/client/assets/agent-floor-actor-3v9drnxh.js +1 -0
  190. package/dist/client/assets/agent-floor-world-Bnd1AtwK.css +1 -0
  191. package/dist/client/assets/agent-floor-world-layout-hfMjuoui.js +1 -0
  192. package/dist/client/assets/agent-lane-card-model-l0stnU9N.js +1 -0
  193. package/dist/client/assets/{agent-lane-detail-ppJId6Jc.js → agent-lane-detail-Db7KyAlf.js} +1 -1
  194. package/dist/client/assets/{agent-lane-preview-BhplDYGf.js → agent-lane-preview-B8lsQJOQ.js} +1 -1
  195. package/dist/client/assets/{agent-lanes-DlqcEf0l.css → agent-lanes-DmgipV9D.css} +1 -1
  196. package/dist/client/assets/agent-lanes-model-CX0wTcnF.js +4 -0
  197. package/dist/client/assets/agent-master-THmq-1k8.css +1 -0
  198. package/dist/client/assets/agent-master-model-C-KdOFDK.js +1 -0
  199. package/dist/client/assets/{agent-specialization-CtF_jI34.js → agent-specialization-CiVxQsFT.js} +1 -1
  200. package/dist/client/assets/agent-state-DDhnFEEP.js +1 -0
  201. package/dist/client/assets/{api-HFH8wFyb.js → api-B9_IqFKY.js} +1 -1
  202. package/dist/client/assets/api-CaROe5_H.js +1 -0
  203. package/dist/client/assets/{arc.es-BNXJqSw7.js → arc.es-BzhWalCl.js} +1 -1
  204. package/dist/client/assets/{arrow-down-BAGkhHA6.js → arrow-down-WoVlkUmg.js} +1 -1
  205. package/dist/client/assets/{arrow-left-eToA6GxC.js → arrow-left-PuKdO3NM.js} +1 -1
  206. package/dist/client/assets/{arrow-right-DTX42clh.js → arrow-right-ldbfp4SZ.js} +1 -1
  207. package/dist/client/assets/{arrow-up-right-B09GPwFl.js → arrow-up-right-Hn754ybA.js} +1 -1
  208. package/dist/client/assets/book-open-BlJnpf2U.js +1 -0
  209. package/dist/client/assets/{bot-WxKXYtEX.js → bot-CfN9PSBF.js} +1 -1
  210. package/dist/client/assets/broker-display-BkBzyvbR.js +2 -0
  211. package/dist/client/assets/{cache-CeWH_KzJ.js → cache-DEy9E34b.js} +1 -1
  212. package/dist/client/assets/{check-Dz2SRHft.js → check-B8dMv3Is.js} +1 -1
  213. package/dist/client/assets/{chevron-down-D120PY4g.js → chevron-down-B5eMsn5c.js} +1 -1
  214. package/dist/client/assets/{chevron-right-CowuvuE6.js → chevron-right-C7UGFpkl.js} +1 -1
  215. package/dist/client/assets/chevron-up-BHOEgHcn.js +1 -0
  216. package/dist/client/assets/{chunk-HRAB3GC3-KjjrTLCU.js → chunk-HRAB3GC3-C5X-kFhb.js} +1 -1
  217. package/dist/client/assets/chunk-JTPDIGGW-ZC-98AHT.js +46 -0
  218. package/dist/client/assets/{chunk-T65CQEWV-H2QEKfr1.js → chunk-T65CQEWV-CSVUz2rY.js} +1 -1
  219. package/dist/client/assets/chunk-YOZR3KYS-B59jqwO0.js +2 -0
  220. package/dist/client/assets/{clock-_9FDplIT.js → clock-DFcRbtrl.js} +1 -1
  221. package/dist/client/assets/{code-xml-CkkNdRmu.js → code-xml-BmyLM0I2.js} +1 -1
  222. package/dist/client/assets/coffee-C_D9zooM.js +1 -0
  223. package/dist/client/assets/colors-CFlbwC25.js +1 -0
  224. package/dist/client/assets/comms-deck-C8nVeMBh.css +1 -0
  225. package/dist/client/assets/comms-deck-CBhsXnY-.js +2 -0
  226. package/dist/client/assets/comms-gesture-_aGFo6g3.js +2 -0
  227. package/dist/client/assets/{compass-BdpImt_W.js → compass-DTZdCpv9.js} +1 -1
  228. package/dist/client/assets/content-B5Q4pb9R.js +1 -0
  229. package/dist/client/assets/content-BK1IfOZs.js +1 -0
  230. package/dist/client/assets/content-BeEsWLEm.js +1 -0
  231. package/dist/client/assets/content-BkOwEknW.js +1 -0
  232. package/dist/client/assets/content-C32W5kAG.js +1 -0
  233. package/dist/client/assets/content-CoqyLs9v.js +1 -0
  234. package/dist/client/assets/content-CwpdIS5b.js +1 -0
  235. package/dist/client/assets/content-DS2OkJ3Q.js +1 -0
  236. package/dist/client/assets/content-DXKaPDfn.js +1 -0
  237. package/dist/client/assets/content-DZt5-dkI.js +1 -0
  238. package/dist/client/assets/content-DbQJH8L1.js +1 -0
  239. package/dist/client/assets/content-DetoiaHq.js +1 -0
  240. package/dist/client/assets/content-Dhu3wL7J.js +1 -0
  241. package/dist/client/assets/content-Dpv34iZu.js +1 -0
  242. package/dist/client/assets/content-TtQJb61D.js +1 -0
  243. package/dist/client/assets/content-ymNb2R7g.js +1 -0
  244. package/dist/client/assets/{context-budget-DqxWzalx.js → context-budget-DemtXu7E.js} +1 -1
  245. package/dist/client/assets/{conversation-icons-DHGc9wbT.js → conversation-icons-BQ4OeOmr.js} +1 -1
  246. package/dist/client/assets/conversation-model-BGFHoxQ0.js +1 -0
  247. package/dist/client/assets/conversation-motion-features-9x8uZpwh.js +1 -0
  248. package/dist/client/assets/conversations-Cbg9h_Af.js +1 -0
  249. package/dist/client/assets/{copy-BzdzWsQd.js → copy-D9WUpQRf.js} +1 -1
  250. package/dist/client/assets/{cpu-CHFIGw87.js → cpu-Ck_4tB_-.js} +1 -1
  251. package/dist/client/assets/{createLucideIcon-Dv8H8m7J.js → createLucideIcon-DkjnzvcJ.js} +1 -1
  252. package/dist/client/assets/{credentials-BTce3VP1.js → credentials-C4VXz2hr.js} +1 -1
  253. package/dist/client/assets/discover-C8IOY7_K.js +2 -0
  254. package/dist/client/assets/embed-entry-CG3CfCbm.js +2 -0
  255. package/dist/client/assets/embed-navigation-DayfkQau.js +1 -0
  256. package/dist/client/assets/{external-link-BvX5PfLh.js → external-link-RT4Ph-6-.js} +1 -1
  257. package/dist/client/assets/{eye-C9cGk5z6.js → eye-CtqSV8BS.js} +1 -1
  258. package/dist/client/assets/{file-code-corner-jlGFdr8d.js → file-code-corner-D_Aptal2.js} +1 -1
  259. package/dist/client/assets/{file-text-BHro8MkG.js → file-text-ChtICwub.js} +1 -1
  260. package/dist/client/assets/flag-CqdOxVkI.js +1 -0
  261. package/dist/client/assets/floor-character-name-CqJPOlXb.js +1 -0
  262. package/dist/client/assets/floor-context-model-DZBpo_oD.js +1 -0
  263. package/dist/client/assets/floor-context-sheet-BFnkFiY3.css +1 -0
  264. package/dist/client/assets/floor-memory-YMM8AlLY.js +1 -0
  265. package/dist/client/assets/floor-message-passes-CJh9f8Jp.js +1 -0
  266. package/dist/client/assets/floor-preview-text-HrORUJ7D.js +1 -0
  267. package/dist/client/assets/floor-replay-CccYqE-f.css +1 -0
  268. package/dist/client/assets/floor-tactical-hud-HL5Vja5Y.css +1 -0
  269. package/dist/client/assets/folder-0fWevPvQ.js +1 -0
  270. package/dist/client/assets/{gauge-DSflSery.js → gauge-Dgtfxf_o.js} +1 -1
  271. package/dist/client/assets/{gestures-YA5IIwp-.js → gestures-BDCZ1FRG.js} +1 -1
  272. package/dist/client/assets/{git-branch-Bc_eDIpG.js → git-branch-CA3cHKCI.js} +1 -1
  273. package/dist/client/assets/go-shortcuts-DKtw4qYx.js +1 -0
  274. package/dist/client/assets/home-moving-signal-B7m-ngb2.js +1 -0
  275. package/dist/client/assets/home-now-card-DduXkHRR.js +1 -0
  276. package/dist/client/assets/{home-now-card-nano-Jmy7eJ6H.js → home-now-card-nano-D1ScGrgv.js} +1 -1
  277. package/dist/client/assets/hooks-C6VyQTQe.js +2 -0
  278. package/dist/client/assets/{hooks-D6NI15f6.css → hooks-D787lBmm.css} +1 -1
  279. package/dist/client/assets/index-C5cX8dkl.js +1 -0
  280. package/dist/client/assets/{index-C1VaWNuD.js → index-C8uS5szO.js} +5 -5
  281. package/dist/client/assets/index-Ck1__1yL.css +1 -0
  282. package/dist/client/assets/index-ClOOrVG1.js +1 -0
  283. package/dist/client/assets/index-Crtgfc9I.js +1 -0
  284. package/dist/client/assets/index-CvsM3jm8.js +1 -0
  285. package/dist/client/assets/{inspector-panel-CwrHjRaQ.js → inspector-panel-BLhDODb3.js} +2 -2
  286. package/dist/client/assets/{keyboard-nav-B8sQ_8IF.js → keyboard-nav-CXfav14z.js} +1 -1
  287. package/dist/client/assets/knowledge-search-BNdQweGz.css +1 -0
  288. package/dist/client/assets/{lane-edit-display-C_Aujldz.js → lane-edit-display-BjdT9oZl.js} +1 -1
  289. package/dist/client/assets/{lane-observe-vfyACHi0.js → lane-observe-BD21P8BB.js} +2 -2
  290. package/dist/client/assets/lane-roster-store-DzNHP392.js +1 -0
  291. package/dist/client/assets/{lane-tool-detail-0WhMf4Vj.js → lane-tool-detail-Czggx8oM.js} +1 -1
  292. package/dist/client/assets/{layers-CW2-qHsG.js → layers-Bolb8ejU.js} +1 -1
  293. package/dist/client/assets/{layout-grid-BoVnPOk-.js → layout-grid-DI9tVJ2E.js} +1 -1
  294. package/dist/client/assets/left-B-_z_nqj.js +2 -0
  295. package/dist/client/assets/left-B1LY7rJc.js +1 -0
  296. package/dist/client/assets/{left-DH44V4I_.css → left-BV9yMiTL.css} +1 -1
  297. package/dist/client/assets/left-C6bdjWcG.js +2 -0
  298. package/dist/client/assets/left-CF4iuqlz.js +1 -0
  299. package/dist/client/assets/left-DLtNyZl1.js +1 -0
  300. package/dist/client/assets/left-Fpxoq-VY.js +1 -0
  301. package/dist/client/assets/left-N2wXfTlp.js +1 -0
  302. package/dist/client/assets/left-advisor-CeIjCKbd.js +1 -0
  303. package/dist/client/assets/left-agents-upjHVlOj.js +1 -0
  304. package/dist/client/assets/left-default-08gmdCtb.js +1 -0
  305. package/dist/client/assets/left-lanes-Cvsp73Hw.js +1 -0
  306. package/dist/client/assets/left-mission-DENnfshd.css +1 -0
  307. package/dist/client/assets/left-mission-W1LLaz74.js +1 -0
  308. package/dist/client/assets/library-DLKBVUJ6.js +1 -0
  309. package/dist/client/assets/{loader-circle-DmUG_YC7.js → loader-circle-DurUYl7E.js} +1 -1
  310. package/dist/client/assets/{local-agents-VP1-ZlPw.js → local-agents-D9fYYRyj.js} +1 -1
  311. package/dist/client/assets/machine-children-RGS4Q0r6.js +1 -0
  312. package/dist/client/assets/machine-scope-DJt9RZ2w.js +1 -0
  313. package/dist/client/assets/mentions-Ctw1ECUC.js +1 -0
  314. package/dist/client/assets/{mesh-ops-CKSWgax2.js → mesh-ops-CGpRk4ik.js} +1 -1
  315. package/dist/client/assets/{mesh-screen-D1Yvo8fU.css → mesh-screen-DjA4mOaN.css} +1 -1
  316. package/dist/client/assets/mesh-view-store-CliSYsmt.js +1 -0
  317. package/dist/client/assets/{message-circle-joGFxfj1.js → message-circle-CSiJj6yo.js} +1 -1
  318. package/dist/client/assets/{message-markup-DC0QFEZn.js → message-markup-DgFSyb3f.js} +1 -1
  319. package/dist/client/assets/{message-square-BLiFqpe_.js → message-square-NmXWtWLR.js} +1 -1
  320. package/dist/client/assets/{message-visibility-CGOmSSKs.js → message-visibility-DwxgcgYK.js} +1 -1
  321. package/dist/client/assets/mission-control-CsX3Yc58.css +1 -0
  322. package/dist/client/assets/mission-control-model-C30vU1Fe.js +1 -0
  323. package/dist/client/assets/mission-control-store-DZ29Mlj1.js +1 -0
  324. package/dist/client/assets/{mission-wall-CocIM1cF.js → mission-wall-DOuGOxQy.js} +1 -1
  325. package/dist/client/assets/nav-destinations-CyXnw9kh.js +1 -0
  326. package/dist/client/assets/observe-CkfOxYx_.js +1 -0
  327. package/dist/client/assets/{operator-attention-RqieiSY8.js → operator-attention-DGR4kOog.js} +1 -1
  328. package/dist/client/assets/ops-screen-CxYM0VOW.css +1 -0
  329. package/dist/client/assets/page-status-CkS3SZu-.js +1 -0
  330. package/dist/client/assets/panel-right-BNTJhy8M.js +1 -0
  331. package/dist/client/assets/pause-DWS7YGQ3.js +1 -0
  332. package/dist/client/assets/{persistent-state-BubPQ7tT.js → persistent-state-xsuk6Kc-.js} +1 -1
  333. package/dist/client/assets/pin-DWlD1BOF.js +1 -0
  334. package/dist/client/assets/pip-idle-v1-Tt-CZsRG.png +0 -0
  335. package/dist/client/assets/pip-thinking-v1-BoHWSEye.png +0 -0
  336. package/dist/client/assets/pip-waiting-v1-DkuvJ-dN.png +0 -0
  337. package/dist/client/assets/pip-working-v1-wWQLRS1z.png +0 -0
  338. package/dist/client/assets/play-D_Pggug4.js +1 -0
  339. package/dist/client/assets/{plus-BWKhylds.js → plus-D_wLGJGT.js} +1 -1
  340. package/dist/client/assets/profile-C3KgiZvc.js +1 -0
  341. package/dist/client/assets/{projects-inbox-DFbgVlXL.js → projects-inbox-DvbqJO3q.js} +1 -1
  342. package/dist/client/assets/{proxy-DVDRhSRR.js → proxy-DOG46ja4.js} +1 -1
  343. package/dist/client/assets/{radio-CxIXS1nU.js → radio-C_jtwbFP.js} +1 -1
  344. package/dist/client/assets/{refresh-cw-Bkh7Cvnd.js → refresh-cw-Da9DDLk2.js} +1 -1
  345. package/dist/client/assets/resolve-panes-DuowGRTk.js +1 -0
  346. package/dist/client/assets/resolve-sidebar-context-BkTbqteq.js +1 -0
  347. package/dist/client/assets/right-B9OUA6Ho.js +1 -0
  348. package/dist/client/assets/right-BDQnjetX.js +1 -0
  349. package/dist/client/assets/{right-DVUq5374.js → right-BLJsc2-p.js} +2 -2
  350. package/dist/client/assets/right-BUbKHmRH.js +1 -0
  351. package/dist/client/assets/right-Ci2IcD4s.js +1 -0
  352. package/dist/client/assets/right-CmCce3e5.js +1 -0
  353. package/dist/client/assets/right-D7w0zM5a.js +1 -0
  354. package/dist/client/assets/right-DIoON_bv.js +1 -0
  355. package/dist/client/assets/right-E0Jr3VN5.js +1 -0
  356. package/dist/client/assets/right-lCdAk9dW.js +1 -0
  357. package/dist/client/assets/{rocket-CnxqjX_K.js → rocket-DyrYDo8V.js} +1 -1
  358. package/dist/client/assets/router-BKiMcYa7.js +1 -0
  359. package/dist/client/assets/{runtime-picker-BYAFNLNq.css → runtime-picker-C3JwrDKP.css} +1 -1
  360. package/dist/client/assets/runtime-picker-DdsttHHc.js +1 -0
  361. package/dist/client/assets/{scope-views-KPY85UUx.js → scope-views-B7PZGlhY.js} +1 -1
  362. package/dist/client/assets/scout-voice-DOQ_B77g.js +1 -0
  363. package/dist/client/assets/{scoutbot-D7kGGyK_.js → scoutbot-Bk3nyrkj.js} +2 -2
  364. package/dist/client/assets/{scoutbot-markdown-yb87JlSE.js → scoutbot-markdown-Bz0Vbto2.js} +1 -1
  365. package/dist/client/assets/{scroll-text-DFcBYy5J.js → scroll-text-DwC8r2g6.js} +1 -1
  366. package/dist/client/assets/{search-FB2vVxCp.js → search-C4VlW_0l.js} +1 -1
  367. package/dist/client/assets/secondaryNavConfig-DAXIFtVd.js +1 -0
  368. package/dist/client/assets/{selection-bridge-qBGFCJv8.js → selection-bridge-B5jqyMR9.js} +1 -1
  369. package/dist/client/assets/{send-horizontal-CS7mxVhX.js → send-horizontal-pOtGI7FM.js} +1 -1
  370. package/dist/client/assets/send-to-agent-session-BZGq_ycy.js +1 -0
  371. package/dist/client/assets/{server-WY6gsbZz.js → server-ms1yxUYJ.js} +1 -1
  372. package/dist/client/assets/{session-catalog-CG4oL_yN.js → session-catalog-s-T_w41t.js} +1 -1
  373. package/dist/client/assets/{session-table-uJh3v-ly.js → session-table-CDx_16xf.js} +1 -1
  374. package/dist/client/assets/sessions-view-DzYGsKWS.js +1 -0
  375. package/dist/client/assets/{settings-DQEtqkM9.js → settings-TJIkkZ0P.js} +1 -1
  376. package/dist/client/assets/shared-work-artifacts-4IIQXQfc.js +1 -0
  377. package/dist/client/assets/{sliders-horizontal-57e99_qO.js → sliders-horizontal-CHf3ntw0.js} +1 -1
  378. package/dist/client/assets/solar-system-scope-2k-stars-points-1FwHnkj0.png +0 -0
  379. package/dist/client/assets/{sparkles-D0vWLTyC.js → sparkles-BbOFw3d0.js} +1 -1
  380. package/dist/client/assets/sprout-action-sprite-DZ8C0fTl.css +1 -0
  381. package/dist/client/assets/sprout-actions-proof-v1-BzUdc812.png +0 -0
  382. package/dist/client/assets/{sse-B29iGBnw.js → sse-v5QLsOHV.js} +1 -1
  383. package/dist/client/assets/system-surfaces-redesign-DKFg4GB5.css +1 -0
  384. package/dist/client/assets/{tail-display-DcliDVkW.js → tail-display-DHSNmvor.js} +2 -2
  385. package/dist/client/assets/{tail-events-LK29oCKm.js → tail-events-DQ46QBW1.js} +1 -1
  386. package/dist/client/assets/{terminal-UDy4lzV1.js → terminal-96JWDYDL.js} +1 -1
  387. package/dist/client/assets/{terminal-relay-CXHMdain.js → terminal-relay-Bfx8pg80.js} +1 -1
  388. package/dist/client/assets/terminal-screen-Bpb2SZrn.css +1 -0
  389. package/dist/client/assets/{terminal-sessions-Bdt2W3Y4.js → terminal-sessions-Ch9aYlgi.js} +1 -1
  390. package/dist/client/assets/{terminal-takeover-BMeBjBB2.js → terminal-takeover-BlpxpvSp.js} +1 -1
  391. package/dist/client/assets/use-beside-Df-F2Uvg.js +1 -0
  392. package/dist/client/assets/use-conversation-list-A_YUf8lo.js +1 -0
  393. package/dist/client/assets/{use-fleet-active-asks-CCGrll5q.js → use-fleet-active-asks-DFs_u-vM.js} +1 -1
  394. package/dist/client/assets/use-mesh-node-state-Ck9CYplv.js +1 -0
  395. package/dist/client/assets/{use-mesh-ops-items-BjyeFJTz.js → use-mesh-ops-items-Be1WmwCg.js} +1 -1
  396. package/dist/client/assets/{use-reduced-motion-CPoX8iV2.js → use-reduced-motion-D7n3vK8t.js} +1 -1
  397. package/dist/client/assets/use-scout-dev-flags-0TXfQcG0.js +1 -0
  398. package/dist/client/assets/{useAgentHoverCard-BgTLNcF-.js → useAgentHoverCard-Dr-OjNFF.js} +1 -1
  399. package/dist/client/assets/useContentSecondaryNav-CGvMOVGY.js +1 -0
  400. package/dist/client/assets/{useEmbedHeadline-DuUnwTB7.js → useEmbedHeadline-BL8wQawZ.js} +1 -1
  401. package/dist/client/assets/{usePierreRuntime-35AHf9RQ.js → usePierreRuntime-DJkRHMoe.js} +1 -1
  402. package/dist/client/assets/worker-rendered-v1-DmGVMlVi.png +0 -0
  403. package/dist/client/assets/worker-thinking-v1-ujakpzrK.png +0 -0
  404. package/dist/client/assets/worker-waiting-v1-DbTSsfJJ.png +0 -0
  405. package/dist/client/assets/worker-working-v1-BROAvJ_z.png +0 -0
  406. package/dist/client/assets/world-outposts-v1-DOt0i98W.png +0 -0
  407. package/dist/client/assets/{wrench-BfVeded5.js → wrench-BsMTSeji.js} +1 -1
  408. package/dist/client/assets/{x-DgmmnPKt.js → x-DI1ktCYb.js} +1 -1
  409. package/dist/client/assets/{xterm-DnJJmrCA.js → xterm-B1YBE4Gq.js} +1 -1
  410. package/dist/client/assets/{zap-Bcja1lHG.js → zap-sKPkh4sQ.js} +1 -1
  411. package/dist/client/characters/sage/sage.glb +0 -0
  412. package/dist/client/crew/brik-bust.webp +0 -0
  413. package/dist/client/crew/brik-chip-id.webp +0 -0
  414. package/dist/client/crew/fenn-bust.webp +0 -0
  415. package/dist/client/crew/fenn-chip-id.webp +0 -0
  416. package/dist/client/crew/lulu-bust.webp +0 -0
  417. package/dist/client/crew/milo-bust.webp +0 -0
  418. package/dist/client/crew/milo-chip-id.webp +0 -0
  419. package/dist/client/crew/nori-bust.webp +0 -0
  420. package/dist/client/crew/pip-bust.webp +0 -0
  421. package/dist/client/crew/pip-chip-id.webp +0 -0
  422. package/dist/client/crew/sheets/eye-plate-v1/blink-half.webp +0 -0
  423. package/dist/client/crew/sheets/eye-plate-v1/blink-shut.webp +0 -0
  424. package/dist/client/crew/sheets/eye-plate-v1/look-left.webp +0 -0
  425. package/dist/client/crew/sheets/eye-plate-v1/look-right.webp +0 -0
  426. package/dist/client/crew/sheets/eye-plate-v1/look-up.webp +0 -0
  427. package/dist/client/crew/sheets/eye-plate-v1/rest.webp +0 -0
  428. package/dist/client/crew/sheets/sprout/blink-half.webp +0 -0
  429. package/dist/client/crew/sheets/sprout/blink-shut.webp +0 -0
  430. package/dist/client/crew/sheets/sprout/look-left.webp +0 -0
  431. package/dist/client/crew/sheets/sprout/look-right.webp +0 -0
  432. package/dist/client/crew/sheets/sprout/look-up.webp +0 -0
  433. package/dist/client/crew/sprout-bust.webp +0 -0
  434. package/dist/client/crew/sprout-chip-id.webp +0 -0
  435. package/dist/client/crew/tuck-bust.webp +0 -0
  436. package/dist/client/crew/tuck-chip-id.webp +0 -0
  437. package/dist/client/crew/vex-bust.webp +0 -0
  438. package/dist/client/crew/vex-chip-id.webp +0 -0
  439. package/dist/client/crew/wrench-bust.webp +0 -0
  440. package/dist/client/crew/wrench-chip-id.webp +0 -0
  441. package/dist/client/index.html +2 -2
  442. package/dist/drizzle/0017_wise_silver_sable.sql +26 -0
  443. package/dist/drizzle/0018_message_epoch_order.sql +1 -0
  444. package/dist/drizzle/meta/0017_snapshot.json +6785 -0
  445. package/dist/drizzle/meta/0018_snapshot.json +6804 -0
  446. package/dist/drizzle/meta/_journal.json +14 -0
  447. package/dist/main.mjs +26906 -24284
  448. package/dist/node/main.mjs +7077 -6284
  449. package/dist/openscout-terminal-relay.mjs +391 -9
  450. package/dist/pairing-runtime-controller.mjs +35541 -34446
  451. package/dist/runtime/base-daemon.mjs +31 -8
  452. package/dist/runtime/broker-daemon.mjs +7864 -2578
  453. package/dist/runtime/broker-process-manager.mjs +15 -3
  454. package/dist/runtime/mesh-discover.mjs +14 -3
  455. package/dist/scout-control-plane-web.mjs +37053 -33186
  456. package/dist/statusline.mjs +1021 -35
  457. package/dist/update-helper.mjs +32169 -0
  458. package/package.json +2 -2
  459. package/dist/client/assets/ActivityScreen-sfonf5SR.js +0 -1
  460. package/dist/client/assets/AgentAvatar-Dz79iTxB.js +0 -1
  461. package/dist/client/assets/AgentConfigurationScreen-DDc3udYM.js +0 -1
  462. package/dist/client/assets/AgentDefinitionsWorkspace-DHDS9Pgd.js +0 -1
  463. package/dist/client/assets/AgentDetailCard-8viaEY8b.js +0 -1
  464. package/dist/client/assets/AgentFloorView-DuyvyMMj.js +0 -1
  465. package/dist/client/assets/AgentInfoScreen-qntgg2q2.js +0 -1
  466. package/dist/client/assets/AgentLanesEmbedScreen-BA6fRwkD.js +0 -1
  467. package/dist/client/assets/AgentLanesView-96lHsoX7.js +0 -2
  468. package/dist/client/assets/AgentLiveActions-DlSKL60c.js +0 -1
  469. package/dist/client/assets/AgentMasterScreen-DHrMuQ6_.js +0 -1
  470. package/dist/client/assets/AgentSessions-DV9v34aq.js +0 -6
  471. package/dist/client/assets/AgentsConsole-DTpVhS67.js +0 -1
  472. package/dist/client/assets/AgentsScreen-hZ4o2I-e.js +0 -1
  473. package/dist/client/assets/AgentsSubnav-Ci7uWM7P.js +0 -1
  474. package/dist/client/assets/AtopView-D7vyQDtE.js +0 -1
  475. package/dist/client/assets/BackToPicker-BHicJyfc.js +0 -1
  476. package/dist/client/assets/BriefingDetailScreen-B-wD_Bot.js +0 -1
  477. package/dist/client/assets/BriefingsScreen-Cn4Mbam9.js +0 -1
  478. package/dist/client/assets/BrokerScreen-C8FQ5rlg.js +0 -5
  479. package/dist/client/assets/ChatCollapsedStrip-7Wrg8Ge0.js +0 -1
  480. package/dist/client/assets/CodeScreen-cLC0tJ4S.js +0 -1
  481. package/dist/client/assets/ConversationFeedRows-Bx0gFyG_.js +0 -1
  482. package/dist/client/assets/ConversationHeader-Bt2RBj93.js +0 -1
  483. package/dist/client/assets/ConversationPanels-o6W-cOoU.js +0 -6
  484. package/dist/client/assets/ConversationScreen-CkWnKXt6.css +0 -1
  485. package/dist/client/assets/ConversationScreen-DIU7m_aC.js +0 -2
  486. package/dist/client/assets/ConversationStatus-CTYOywFh.js +0 -1
  487. package/dist/client/assets/CrewWorkspaces-DNX-QQ1h.js +0 -1
  488. package/dist/client/assets/DispatchAftermath-ZCEB75hh.js +0 -1
  489. package/dist/client/assets/DocumentFocusViewer-D8iB6SMt.js +0 -1
  490. package/dist/client/assets/FlightObserveScreen-BTe1YRPr.js +0 -1
  491. package/dist/client/assets/FollowScreen-CkR-okdL.js +0 -1
  492. package/dist/client/assets/HarnessesScreen-COO_Q8VY.js +0 -1
  493. package/dist/client/assets/HostAdvisorView-DeJ-8RZV.js +0 -1
  494. package/dist/client/assets/KnowledgeSearchInspector-W_zNIBRV.js +0 -1
  495. package/dist/client/assets/KnowledgeSearchScreen-_rxJNUUh.js +0 -1
  496. package/dist/client/assets/LaneTraceDetailSheet-DNIECgEl.js +0 -1
  497. package/dist/client/assets/MeshCanvas-DZv2ipsy.js +0 -3
  498. package/dist/client/assets/MeshCanvasMinimap-BXHRNb7l.js +0 -1
  499. package/dist/client/assets/MeshScreen-DuNvpDC5.js +0 -1
  500. package/dist/client/assets/MessagesScreen-dNNPFwAc.js +0 -1
  501. package/dist/client/assets/MissionContextRail-DnCWPzAM.js +0 -1
  502. package/dist/client/assets/MissionControlView-DmaThhNR.js +0 -1
  503. package/dist/client/assets/MissionFocusOverlay-K21ssTxv.js +0 -1
  504. package/dist/client/assets/MissionLeftAgentRow-CbQm4BLv.js +0 -1
  505. package/dist/client/assets/MissionLogPane-BLvSSIdT.js +0 -1
  506. package/dist/client/assets/NewAgentModal-B7qxjZlW.js +0 -1
  507. package/dist/client/assets/NewChatComposer-D2Ah4T-W.js +0 -19
  508. package/dist/client/assets/ObserveEmbedScreen-DvKGsaLv.js +0 -2
  509. package/dist/client/assets/OpenScoutAppShell-C9TOLB7u.js +0 -79
  510. package/dist/client/assets/OpsAgentsView-vIoY-AW1.js +0 -1
  511. package/dist/client/assets/OpsScreen-CJBwshEp.js +0 -1
  512. package/dist/client/assets/OpsSubnav-CjDTnp64.js +0 -1
  513. package/dist/client/assets/ProjectAgentProfile-Br1eTD7G.js +0 -1
  514. package/dist/client/assets/ProjectAgentProfileHero-mjxNcRvw.js +0 -1
  515. package/dist/client/assets/ProjectsInbox-Bq29DE_o.js +0 -2
  516. package/dist/client/assets/ProjectsRail-kMDA0yn4.js +0 -1
  517. package/dist/client/assets/ProjectsScreen-BDaJYhc0.js +0 -1
  518. package/dist/client/assets/ProjectsThreadAside-B940p3vW.js +0 -1
  519. package/dist/client/assets/Provider-D0bB7q6y.js +0 -1
  520. package/dist/client/assets/RailRow-B88JVr62.js +0 -1
  521. package/dist/client/assets/RawSessionsTable-CzGhEdiZ.js +0 -1
  522. package/dist/client/assets/RealtimeVoiceScreen-CyP1CWsX.js +0 -1
  523. package/dist/client/assets/RepoDiffViewer-Bw5yMC4A.js +0 -7
  524. package/dist/client/assets/RepoDiffViewerLazy-DzfoFhbl.js +0 -2
  525. package/dist/client/assets/ScoutDeckSurface-DQoZofzH.js +0 -1
  526. package/dist/client/assets/SessionEmbedScreen-CpduQ0O9.js +0 -1
  527. package/dist/client/assets/SessionObserve-BVeTkcIl.js +0 -12
  528. package/dist/client/assets/SessionObserveEvidence-BkOezTGV.js +0 -1
  529. package/dist/client/assets/SessionRefScreen-DetLMkTT.js +0 -1
  530. package/dist/client/assets/SessionsScreen-B-McKw6d.js +0 -1
  531. package/dist/client/assets/SettingsDrawer-CPB32w0n.js +0 -3
  532. package/dist/client/assets/SettingsScreen-BEzYFdjz.js +0 -1
  533. package/dist/client/assets/SpriteAvatar-DFO4Kb4Z.js +0 -1
  534. package/dist/client/assets/Terminal-DWyZTZdY.js +0 -1
  535. package/dist/client/assets/TerminalEmbedScreen-_SSzwhWa.js +0 -1
  536. package/dist/client/assets/TerminalHeaderMount-CY7uIWBg.js +0 -1
  537. package/dist/client/assets/WorkFilesViewer-D8-4vF5l.js +0 -1
  538. package/dist/client/assets/agent-autocomplete-BlK8wY06.js +0 -10
  539. package/dist/client/assets/agent-lane-card-model-CY3OE1Xu.js +0 -1
  540. package/dist/client/assets/agent-lanes-model-tc-1hE6q.js +0 -2
  541. package/dist/client/assets/agent-master-I1W-5d-x.css +0 -1
  542. package/dist/client/assets/agent-master-model-DMcHeNq3.js +0 -1
  543. package/dist/client/assets/api-Co9aQ2Jw.js +0 -1
  544. package/dist/client/assets/broker-display-Q75fupqG.js +0 -2
  545. package/dist/client/assets/chunk-JTPDIGGW-COJ00z94.js +0 -46
  546. package/dist/client/assets/chunk-YOZR3KYS-CrCgXw9l.js +0 -2
  547. package/dist/client/assets/colors-BtO5_zlx.js +0 -1
  548. package/dist/client/assets/content-0RBfbCIJ.js +0 -1
  549. package/dist/client/assets/content-BTmnk2bl.js +0 -1
  550. package/dist/client/assets/content-Bk5DKhyP.js +0 -1
  551. package/dist/client/assets/content-Bw_8GE_S.js +0 -1
  552. package/dist/client/assets/content-CI4gLEWi.js +0 -1
  553. package/dist/client/assets/content-CLCtp9Rb.js +0 -1
  554. package/dist/client/assets/content-C_FAGTNk.js +0 -1
  555. package/dist/client/assets/content-CnnzWOE3.js +0 -1
  556. package/dist/client/assets/content-DKlY98pO.js +0 -1
  557. package/dist/client/assets/content-Df7ndXTG.js +0 -1
  558. package/dist/client/assets/content-DkZDzzx3.js +0 -1
  559. package/dist/client/assets/content-DnGmb2L0.js +0 -1
  560. package/dist/client/assets/content-Ds-zs-Ss.js +0 -1
  561. package/dist/client/assets/content-JIWSyC0f.js +0 -1
  562. package/dist/client/assets/content-Q3TIYC8q.js +0 -1
  563. package/dist/client/assets/content-evaBfvxD.js +0 -1
  564. package/dist/client/assets/conversation-model-C2KuZUXc.js +0 -1
  565. package/dist/client/assets/conversation-motion-features-BJnHs3Ul.js +0 -1
  566. package/dist/client/assets/discover-DutlV0ZU.js +0 -2
  567. package/dist/client/assets/embed-entry-CJG7WEVw.js +0 -2
  568. package/dist/client/assets/home-moving-signal-PHSqSBu_.js +0 -1
  569. package/dist/client/assets/home-now-card-C_qsI6C6.js +0 -1
  570. package/dist/client/assets/hooks-ME7rmhpE.js +0 -2
  571. package/dist/client/assets/index-C8UCRm2W.js +0 -1
  572. package/dist/client/assets/index-Cn0I2Hgi.js +0 -1
  573. package/dist/client/assets/index-Cx6Gbr6n.js +0 -1
  574. package/dist/client/assets/index-i7TMxlwW.css +0 -1
  575. package/dist/client/assets/knowledge-search-D_bLoYtC.css +0 -1
  576. package/dist/client/assets/lane-roster-store-DN2jxXF-.js +0 -1
  577. package/dist/client/assets/left-BRu9pnqx.js +0 -2
  578. package/dist/client/assets/left-BjS1dKNV.js +0 -2
  579. package/dist/client/assets/left-CL-TVLJ7.js +0 -1
  580. package/dist/client/assets/left-DLpsDi55.js +0 -1
  581. package/dist/client/assets/left-DPcM9o8Y.js +0 -1
  582. package/dist/client/assets/left-MmTJf1tK.js +0 -1
  583. package/dist/client/assets/left-P80i5V8L.js +0 -1
  584. package/dist/client/assets/left-advisor-CbXVzAqS.js +0 -1
  585. package/dist/client/assets/left-agents-7mJsiNyr.js +0 -1
  586. package/dist/client/assets/left-default-COK26l3H.js +0 -1
  587. package/dist/client/assets/left-lanes-Dbdm9Veu.js +0 -1
  588. package/dist/client/assets/left-mission-DSenPIyb.css +0 -1
  589. package/dist/client/assets/left-mission-DqGR5jby.js +0 -1
  590. package/dist/client/assets/library-COnWzUWv.js +0 -1
  591. package/dist/client/assets/mentions-BZ5SBMtc.js +0 -1
  592. package/dist/client/assets/mesh-buckets-CLYS8Jx8.js +0 -1
  593. package/dist/client/assets/mesh-view-store-CBM1za_N.js +0 -1
  594. package/dist/client/assets/mission-control-CnU7dNt1.css +0 -1
  595. package/dist/client/assets/mission-control-model-C0fByIjm.js +0 -1
  596. package/dist/client/assets/mission-control-store-CM8mQGg8.js +0 -1
  597. package/dist/client/assets/observe-BLmy4quB.js +0 -1
  598. package/dist/client/assets/ops-screen-giu3If_N.css +0 -1
  599. package/dist/client/assets/page-status-BE0-J1xY.js +0 -1
  600. package/dist/client/assets/paperclip-Br7wUDFl.js +0 -1
  601. package/dist/client/assets/perf-PX8Rx0EP.js +0 -1
  602. package/dist/client/assets/profile-BCvk8jOQ.js +0 -1
  603. package/dist/client/assets/resolve-panes-DhD5qmQO.js +0 -1
  604. package/dist/client/assets/resolve-sidebar-context-GqhZNRPY.js +0 -1
  605. package/dist/client/assets/right-B_08ilv6.js +0 -1
  606. package/dist/client/assets/right-Brm67HOL.js +0 -1
  607. package/dist/client/assets/right-BveAPKBW.js +0 -1
  608. package/dist/client/assets/right-CpTB_-Ya.js +0 -1
  609. package/dist/client/assets/right-CqC4Qdot.js +0 -1
  610. package/dist/client/assets/right-D91j9d5Y.js +0 -1
  611. package/dist/client/assets/right-DaLRhYl3.js +0 -1
  612. package/dist/client/assets/right-Dt1wOwA5.js +0 -1
  613. package/dist/client/assets/right-DtzqIZQF.js +0 -1
  614. package/dist/client/assets/router-kfcaYqZr.js +0 -1
  615. package/dist/client/assets/runtime-picker-C20lTGhV.js +0 -1
  616. package/dist/client/assets/scout-voice-Cg1qfepC.js +0 -1
  617. package/dist/client/assets/secondaryNavConfig-C0Srrmy8.js +0 -1
  618. package/dist/client/assets/system-surfaces-redesign-kuf3wuE_.css +0 -1
  619. package/dist/client/assets/terminal-screen-vMICbBJh.css +0 -1
  620. package/dist/client/assets/use-conversation-list-UG-tMN67.js +0 -1
  621. package/dist/client/assets/use-scout-dev-flags-DTseRrFi.js +0 -1
  622. package/dist/client/assets/useContentSecondaryNav-CoIoz7JU.js +0 -1
@@ -1,12 +0,0 @@
1
- import{r as h,j as t}from"./index-C1VaWNuD.js";import{f as je}from"./bash-format-BRV5C6Gv.js";import{j as ks,p as Ue,k as ys}from"./tail-display-DcliDVkW.js";import{l as Ns}from"./lane-edit-display-C_Aujldz.js";import{f as ws}from"./lane-tool-detail-0WhMf4Vj.js";import{useLaneToolHoverCard as Cs}from"./LaneToolHoverCard-t7-XJP-h.js";import{e as Ss,L as Oe,g as Ts,h as $s,j as Ae,o as Ls,b as Ie,f as Es,k as Rs,m as ke,l as Ve,a as Ke}from"./lane-observe-vfyACHi0.js";import{b as Ps}from"./lane-ask-display-B6iCAVcd.js";import{d as Os}from"./colors-BtO5_zlx.js";import{a as ye}from"./api-Co9aQ2Jw.js";import{r as Je}from"./mentions-BZ5SBMtc.js";import{a as As,g as Ye,t as Is,b as Bs,d as _s,n as Be}from"./time-Dhsh_2EG.js";import{M as Xe}from"./message-markup-DC0QFEZn.js";import{q as Fs}from"./terminal-takeover-BMeBjBB2.js";import{C as Ds,D as Ms,E as Ws}from"./NewChatComposer-D2Ah4T-W.js";import{u as Ne,I as Ze}from"./Provider-D0bB7q6y.js";import{o as zs}from"./openContent-C6XO6kr5.js";import{O as Hs}from"./ObservedTopologyPanel-CJVqIqQ2.js";import{M as Gs}from"./runtime-picker-C20lTGhV.js";import"./index-Cx6Gbr6n.js";import{ObserveReasoningDisclosure as qs,ObserveStreamCursor as _e}from"./ObserveTextFlow-DCJ5EmD8.js";import{SessionObserveReceiptView as Us}from"./SessionObserveEvidence-BkOezTGV.js";import{M as Vs}from"./message-circle-joGFxfj1.js";import{W as Ks}from"./wrench-BfVeded5.js";import{E as Js}from"./external-link-BvX5PfLh.js";import{C as Qe}from"./chevron-down-D120PY4g.js";import{c as Ys}from"./createLucideIcon-Dv8H8m7J.js";const Xs=[["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"}]],Zs=Ys("tag",Xs),we=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 Qs(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 et(e){return e.kind!=="tool"||!e.tool?!1:I(e.arg).toLowerCase()==="completed"||!!e.result?.outcome}const es=/^permission requested · ([A-Za-z][\w-]*)$/i,ss=/^permission ([a-z_]+) · ([A-Za-z][\w-]*)$/i;function Ce(e){return e.kind==="system"&&es.test(e.text.trim())}function Se(e){return e.kind==="system"&&ss.test(e.text.trim())}function de(e){const s=e.text.trim(),n=s.match(es);if(n?.[1])return n[1];const a=s.match(ss);return a?.[2]?a[2]:null}function Zn(e){const s=new Set;for(const n of e)if(Ce(n)){const a=de(n);a&&s.add(a)}else if(Se(n)){const a=de(n);a&&s.delete(a)}return s.size>0}function st(e,s){const n=e.text.trim();return{...e,text:s>1?`${n}
2
-
3
- (${s} reasoning updates)`:n}}function tt(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
- `)??"",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 nt(e){if(e.kind!=="tool"||!e.tool)return!1;const s=I(e.tool).toLowerCase();if(!we.has(s))return!1;const n=I(e.arg);return n.length>0&&n!=="started"&&n!=="completed"}function at(e){if(e.kind!=="tool")return!1;const s=I(e.tool).toLowerCase();return s==="res"?!!(I(e.arg)||(e.stream?.length??0)>0):we.has(s)?(e.stream?.length??0)>0:!1}function rt(e){return(e.stream?.length??0)>0?e.stream.join(`
5
- `):I(e.tool).toLowerCase()==="res"?e.arg??"":""}function ot(e,s){const n=rt(s),a=I(e.arg),r=e.tool??s.tool,o=n.trim()?`${r} · ${a} · ${n}`:e.text;return{...e,id:s.id,t:s.t,at:s.at,result:s.result??e.result,stream:n.trim()?[n]:s.stream??e.stream,diff:s.diff??e.diff,detail:s.detail??e.detail,text:o,live:s.live??e.live}}function Fe(e){if(e.kind!=="tool"||e.diff||(e.stream?.length??0)>0)return!1;const s=(e.tool??"").trim(),n=(e.arg??"").trim();if(!s||n==="started"||n==="completed")return!1;const a=e.result?.outcome;if(a!=null&&a!=="success"&&a!==0||e.result&&Object.keys(e.result).length>1)return!1;const r=s.toLowerCase();if(we.has(r)){if(!n||n.startsWith("{")||n.startsWith("["))return!1;const{dir:o,spans:l}=je(n);if(o)return!1;const u=l.filter(c=>c.tier==="prog");return u.length===1&&l.length===1&&u[0].text.length<=64}return n&&n!==s||/\s/u.test(s)?!1:s.length<=64}function lt(e){return Math.max(1,e.repeatCount)}function it(e){const s=e.result?.outcome;if(s==null)return!1;if(typeof s=="number")return s!==0;const n=s.trim().toLowerCase();return n.length>0&&n!=="0"&&n!=="ok"&&n!=="success"&&n!=="succeeded"&&n!=="completed"}function ct(e){if(e.live||e.kind==="boot")return!0;if(e.kind==="tool")return!!e.diff||it(e);if(e.kind==="note"){const s=e.text.trim().toLowerCase();return s==="turn started"||s==="turn complete"||s==="turn ended"||s==="[turn_started]"||s==="[turn_ended]"||/^turn \d+\b/u.test(s)}if(e.kind==="system"){const s=e.text.trim();return Ce(e)||Se(e)||/\b(?:approval|permission|denied|failed|failure|error|exception|aborted|blocked)\b/i.test(s)}return!1}function ut(e){return e.kind==="ask"||e.kind==="message"?!1:!ct(e)}function ae(e,s,n=`${s}s`){return`${e} ${e===1?s:n}`}function dt(e){const s={totalCount:0,toolCount:0,thinkCount:0,noteCount:0,systemCount:0};for(const a of e){const r=lt(a);switch(s.totalCount+=r,a.event.kind){case"tool":s.toolCount+=r;break;case"think":s.thinkCount+=r;break;case"note":s.noteCount+=r;break;case"system":case"boot":s.systemCount+=r;break}}const n=[s.toolCount>0?ae(s.toolCount,"tool"):null,s.thinkCount>0?ae(s.thinkCount,"reasoning update"):null,s.noteCount>0?ae(s.noteCount,"turn marker"):null,s.systemCount>0?ae(s.systemCount,"system event"):null].filter(a=>!!a);return{...s,labels:n}}function mt(e){return e.labels.length>0?e.labels.join(" · "):ae(e.totalCount,"technical event")}function ht(e){const s=e[0].event,n=e[e.length-1].event,a=dt(e),r=mt(a);return{event:{...n,id:`technical-rollup:${s.id}:${n.id}:${a.totalCount}`,kind:"note",text:r,detail:r,tool:void 0,arg:void 0,diff:void 0,result:void 0,stream:void 0,answer:void 0,answerT:void 0,to:void 0,live:e.some(o=>o.event.live)},repeatCount:1,technicalSummary:a,technicalSourceRows:e}}function ft(e){const s=[];let n=[];const a=()=>{n.length!==0&&(s.push(ht(n)),n=[])};for(const r of e){if(ut(r.event)){n.push(r);continue}a(),s.push(r)}return a(),s}function bt(e){const s=[];for(let n=0;n<e.length;n+=1){const a=e[n];if(!a)continue;const r=e[n+1];if(r&&Ce(a)&&Se(r)&&I(de(a)).toLowerCase()===I(de(r)).toLowerCase()){const o={...r,live:r.live??a.live},l=q(o),u=s[s.length-1];u&&q(u.event)===l?(u.repeatCount+=1,u.event=o):s.push({event:o,repeatCount:1}),n+=1;continue}if(r&&Qs(a)&&et(r)&&I(a.tool).toLowerCase()===I(r.tool).toLowerCase()){const o=tt(a,r),l=q(o),u=s[s.length-1];u&&q(u.event)===l?(u.repeatCount+=1,u.event=o):s.push({event:o,repeatCount:1}),n+=1;continue}if(r&&nt(a)&&at(r)&&(a.stream?.length??0)===0){const o=ot(a,r),l=q(o),u=s[s.length-1];u&&q(u.event)===l?(u.repeatCount+=1,u.event=o):s.push({event:o,repeatCount:1}),n+=1;continue}if(a.kind==="think"){let o=a,l=1;for(;e[n+l]?.kind==="think";){const c=e[n+l];if(!c)break;o=c,l+=1}const u=st(o,l);s.push({event:u,repeatCount:l}),n+=l-1;continue}if(a.kind!=="message"&&a.kind!=="ask"){const o=q(a),l=s[s.length-1];if(l&&q(l.event)===o){l.repeatCount+=1,l.event=a;continue}}s.push({event:a,repeatCount:1})}return s}function vt(e){return e.source==="broker"||e.source==="unavailable"||!Number.isFinite(e.eventCount)?0:Math.max(0,Math.floor(e.eventCount))}function pt(e){return e===0?"No trace events":`${e} event${e===1?"":"s"}`}function ts(e){const s=vt(e),n=pt(s);return e.source==="unavailable"?{label:"Trace unavailable",detail:"The session is known to the broker, but no readable event trace was captured.",tone:"unavailable",replayable:!1,traceEventCount:0,eventCountLabel:n,receiptOnly:!1}:e.source==="broker"?{label:"Session setup receipts",detail:"The broker recorded session setup, but no observed trace activity is available.",tone:"reconstructed",replayable:!1,traceEventCount:0,eventCountLabel:n,receiptOnly:!0}:e.fidelity==="timestamped"&&e.source==="live"&&e.live&&s>0?{label:"Live observed events",detail:"New timestamped events will appear here while the session runs.",tone:"live",replayable:s>1,traceEventCount:s,eventCountLabel:n,receiptOnly:!1}:e.fidelity==="timestamped"&&s===0?{label:"Attached · no trace events",detail:"This worker is attached but is not emitting trace events.",tone:"reconstructed",replayable:!1,traceEventCount:0,eventCountLabel:n,receiptOnly:!1}:e.fidelity==="timestamped"?{label:"Recorded event history",detail:"This timeline is replayed from timestamped session history.",tone:"recorded",replayable:s>1,traceEventCount:s,eventCountLabel:n,receiptOnly:!1}:{label:"Reconstructed session evidence",detail:"Lifecycle and session attachment are available; fine-grained activity may be missing.",tone:"reconstructed",replayable:!1,traceEventCount:s,eventCountLabel:n,receiptOnly:!1}}async function xt(e){await ye("/api/local-path/reveal",{method:"POST",body:JSON.stringify({path:e.path,...e.basePath?{basePath:e.basePath}:{},...e.agentId?{agentId:e.agentId}:{},...e.sessionId?{sessionId:e.sessionId}:{}})})}const ns={think:"var(--dim)",tool:"var(--accent)",ask:"var(--amber)",message:"var(--muted)",note:"var(--green)",system:"var(--dim)",boot:"var(--dim)"},gt={read:"◎",edit:"✎",bash:"$",grep:"⌕",write:"✎",think:"∿"},jt=20,as=new Intl.NumberFormat("en-US"),kt=new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1});function me(e){if(!Number.isFinite(e)||e<=0)return"0s";const s=Math.floor(e);if(s<60)return`${s}s`;if(s<3600)return`${Math.floor(s/60)}m`;const n=Math.floor(s/3600),a=Math.floor(s%3600/60);return a>0?`${n}h${a}m`:`${n}h`}function yt(e){return Ye(e*1e3)||"0:00"}function Nt(e){return!Number.isFinite(e)||e<=0?"0s":me(e)}function he(e,s){return Ls(e,s)}function wt(e,s,n,a=!1){const r=he(e,s);return r!==null?a?{label:Es(r,n),title:Ie(r)}:{label:Is(r,n),title:Ie(r)}:a?{label:""}:{label:me(e.t)}}function Ct(e,s){const n=he(e,s),a=yt(e.t);return n!==null?{label:_s(n)||me(e.t),title:`${Bs(n)} · elapsed ${a}`}:{label:me(e.t),title:`Elapsed ${a} from session start`}}function De(e,s){return e>=Math.max(0,s-jt)}function te(e){return typeof e!="number"||!Number.isFinite(e)?null:as.format(e)}function U(e){return typeof e!="number"||!Number.isFinite(e)?"—":Math.abs(e)<1e3?as.format(e):kt.format(e).toLowerCase()}function St(e){if(!Number.isFinite(e)||e<=0)return"0s";if(e<60)return`${Math.round(e)}s`;const s=Math.round(e),n=Math.floor(s/3600),a=Math.floor(s%3600/60),r=s%60;return n>0?`${n}h ${a}m`:a>=10||r===0?`${a}m`:`${a}m ${r}s`}function Me(e){return!!e&&Object.keys(e).length>0}function ve(e){return e.filter(s=>!!s)}function ge(e){const n=e.replace(/[\\/]+$/,"").split(/[\\/]/).filter(Boolean);return n[n.length-1]??e}function Tt(e){xt(e).catch(s=>{console.warn("Failed to reveal local path",s)})}function K({text:e,label:s="Copy",className:n}){const[a,r]=h.useState(!1),o=h.useRef(null);h.useEffect(()=>()=>{o.current&&clearTimeout(o.current)},[]);const l=h.useCallback(u=>{u.preventDefault(),u.stopPropagation();const c=e,f=()=>{r(!0),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>r(!1),1100)};navigator.clipboard?.writeText?navigator.clipboard.writeText(c).then(f).catch(()=>{We(c),f()}):(We(c),f())},[e]);return t.jsx("button",{type:"button",className:`s-observe-copy-btn${a?" s-observe-copy-btn--copied":""}${n?` ${n}`:""}`,onClick:l,"aria-label":s,title:a?"Copied":s,children:a?t.jsx("svg",{width:"11",height:"11",viewBox:"0 0 11 11",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:t.jsx("path",{d:"M2 5.5l2.4 2.4L9 3.4"})}):t.jsxs("svg",{width:"11",height:"11",viewBox:"0 0 11 11",fill:"none",stroke:"currentColor",strokeWidth:"1.2",strokeLinejoin:"round","aria-hidden":"true",children:[t.jsx("rect",{x:"3.4",y:"3.4",width:"6.1",height:"6.1",rx:"1.2"}),t.jsx("path",{d:"M7.6 3.4V2.2a.8.8 0 0 0-.8-.8H2.2a.8.8 0 0 0-.8.8v4.6a.8.8 0 0 0 .8.8h1.2"})]})})}function We(e){try{const s=document.createElement("textarea");s.value=e,s.style.position="fixed",s.style.opacity="0",s.style.pointerEvents="none",document.body.appendChild(s),s.select(),document.execCommand("copy"),document.body.removeChild(s)}catch(s){console.warn("Clipboard copy failed",s)}}function $t(e){const s=[],n=[e.tool,e.arg].filter(Boolean).join(" ");return n&&s.push(n),e.result&&s.push(Object.entries(e.result).map(([a,r])=>`${a}: ${r}`).join(" · ")),e.diff&&(s.push(`+${e.diff.add}${e.diff.del>0?` -${e.diff.del}`:""}`),e.diff.preview&&s.push(e.diff.preview)),e.stream&&e.stream.length>0&&s.push(e.stream.join(`
6
- `)),s.join(`
7
- `)}function rs({expanded:e,onToggle:s,label:n}){const a=e?"less":n??"more";return t.jsxs("button",{type:"button",className:"s-observe-lane-expand",onClick:s,"aria-expanded":e,"aria-label":e?"Show less":"Show more",children:[e?t.jsx(Ze,{size:11,strokeWidth:2,"aria-hidden":"true"}):t.jsx(Qe,{size:11,strokeWidth:2,"aria-hidden":"true"}),t.jsx("span",{children:a})]})}function os({text:e,className:s,laneMode:n=!1,live:a=!1,renderExpanded:r,renderCollapsed:o}){const[l,u]=h.useState(!1),c=e.trim();if(!n)return t.jsxs("div",{className:s,children:[r?r(c):c,a&&t.jsx(_e,{text:c})]});const f=ke(c),p=Ve(c),y=l?r?r(c):c:o?o(p):p;return t.jsx("div",{className:`s-observe-lane-expandable${l?" s-observe-lane-expandable--open":""}`,children:t.jsxs("div",{className:`${s} s-observe-lane-expandable-body`,children:[t.jsxs("span",{className:"s-observe-lane-expandable-text",children:[y,a&&t.jsx(_e,{text:c})]}),f&&t.jsx(rs,{expanded:l,onToggle:()=>u(m=>!m)})]})})}function Lt({event:e,laneMode:s=!1}){const n=e.text??"";return t.jsx(qs,{text:n,live:!!e.live,compact:s,copyControl:s?void 0:t.jsx(K,{text:n,label:"Copy reasoning",className:"s-observe-copy-btn--inline"})})}function Et({preview:e}){const s=e.split(`
8
- `);return t.jsx("pre",{className:"s-observe-tool-diff-preview",children:s.map((n,a)=>{const r=n[0],o=r==="+"?"add":r==="-"||r==="−"?"del":n.startsWith("@@")?"hunk":"ctx";return t.jsxs("span",{className:`s-observe-diff-line s-observe-diff-line--${o}`,children:[n,a<s.length-1?`
9
- `:null]},a)})})}function Rt(e){const s=(e??"").toLowerCase();return s==="shell"?"bash":s}function Pt(e){const s=e.arg?.trim();if(!(!s||s==="started"||s==="completed"))return s}const Ot={bash:["bash","shell","terminal","exec","run","command","exec_command","shell_command","local_shell","container_exec","container.exec"],read:["read","view","cat","readfile","open","open_file"],file:["write","writefile","create","edit","multiedit","str_replace","strreplace","str_replace_editor","apply_patch","applypatch","patch","patch_apply","update","delete"],search:["grep","glob","search","rg","ripgrep","find","codebase_search","file_search"],fetch:["webfetch","web_fetch","fetch","websearch","web_search","browse","url"],agent:["agent","task","dispatch","subagent"],generic:[]},At={bash:"$",read:"◎",file:"✎",search:"⌕",fetch:"⤓",agent:"◇",generic:"▸"};function It(e){const s=(e??"").trim().toLowerCase();if(!s)return"generic";for(const n of["bash","read","file","search","fetch","agent"])if(Ot[n].includes(s))return n;return"generic"}function ls(e){return!e||e==="started"||e==="completed"}function Bt(e){const s=e.trim().replace(/\/+$/u,""),n=s.lastIndexOf("/");return n<0?{dir:"",base:s}:{dir:s.slice(0,n+1),base:s.slice(n+1)}}function _t(e,s=2){const n=e.split("/").filter(Boolean);return n.length===0?"":n.length<=s?`${n.join("/")}/`:`…/${n.slice(-s).join("/")}/`}function Ft(e){if(!e)return null;for(const s of["matches","count","results","hits"]){const n=e[s];if(typeof n=="number"&&Number.isFinite(n))return n;if(typeof n=="string"&&/^\d+$/u.test(n.trim()))return Number(n.trim())}return null}function Dt(e){try{const s=new URL(e);return{host:s.host,path:s.pathname+s.search}}catch{return{host:e,path:""}}}function Mt(e){return e.length>=3&&/^(?:ba|z)?sh$/u.test(e[0])&&/^-[a-z]*c$/u.test(e[1])?e.slice(2).join(" "):e.join(" ")}function ne(e,s){const n=e.trim();if(!n.startsWith("{")&&!n.startsWith("["))return null;try{const a=JSON.parse(n);if(a&&typeof a=="object"&&!Array.isArray(a)){const r=a;for(const o of s){const l=r[o];if(typeof l=="string"&&l.trim())return l;if(Array.isArray(l)&&l.every(u=>typeof u=="string"))return Mt(l)}}}catch{}for(const a of s){const r=n.match(new RegExp(`"${a}"\\s*:\\s*"((?:[^"\\\\]|\\\\.)*)`,"u"));if(r?.[1])try{return JSON.parse(`"${r[1]}"`)}catch{return r[1]}}return null}function is(e){const s=e.match(/\*\*\*\s+(?:Update|Add|Delete|Move|Rename)\s+File:\s*(.+)/u);return s&&s[1].trim().split(/\s*(?:->|=>)\s*/u)[0]?.trim()||null}function cs(e,s){const n=s?.trim();if(!n)return"";switch(e){case"bash":return ne(n,["cmd","command","script","input","code"])??n;case"file":return n.includes("*** ")?is(n)??n:ne(n,["file_path","path","filename","file"])??n;case"read":return ne(n,["file_path","path","filename","file"])??n;case"search":return ne(n,["pattern","query","glob","regex","q","search"])??n;case"fetch":return ne(n,["url","href","uri"])??n;default:return n}}function ze({path:e,tone:s}){const n=Ns(e),{dir:a,base:r}=Bt(n);return t.jsxs("span",{className:"s-observe-tool-path",title:e,children:[a&&t.jsx("span",{className:"s-observe-tool-path-dir",children:_t(a)}),t.jsx("span",{className:`s-observe-tool-path-base s-observe-tool-path-base--${s}`,children:r})]})}function Wt({path:e}){const s=e.lastIndexOf("/"),n=s>=0?e.slice(0,s+1):"",a=s>=0?e.slice(s+1):e;return t.jsxs("span",{className:"s-observe-bash-dir",children:[n&&t.jsx("span",{className:"s-observe-bash-dir-prefix",children:n}),a]})}function zt({command:e,title:s,outcome:n,outputPreview:a,cwd:r,powerline:o}){const{dir:l,spans:u}=je(e,{cwd:r,powerline:o});return t.jsxs("span",{className:"s-observe-bash",title:s??e,children:[l&&t.jsxs("span",{className:"s-observe-bash-pl",children:[t.jsx("span",{className:"s-observe-bash-seg",children:l}),t.jsx("span",{className:"s-observe-bash-sep","aria-hidden":!0})]}),t.jsx("span",{className:"s-observe-bash-prompt","aria-hidden":!0,children:"❯"}),u.length>0?t.jsx("span",{className:"s-observe-bash-cmd",children:u.map((c,f)=>{const p=f>0?" ":"";return c.tier==="dir"?t.jsxs("span",{children:[p,t.jsx(Wt,{path:c.text})]},f):t.jsxs("span",{className:`s-observe-bash-${c.tier}${c.known?" s-observe-bash-prog--known":""}${c.flag?" s-observe-bash-flag":""}`,children:[p,c.text]},f)})}):!l&&t.jsx("span",{className:"s-observe-bash-arg",children:"shell"}),a&&t.jsxs("span",{className:"s-observe-bash-out",title:a,children:[" → ",Ke(a,88)]}),n&&t.jsx("span",{className:"s-observe-bash-ok",children:n})]})}function Ht({family:e,event:s}){const n=cs(e,s.arg),a=n.startsWith("{")||n.startsWith("["),r=!!n&&!ls(n)&&!a;switch(e){case"read":return r?t.jsx(ze,{path:n,tone:"read"}):t.jsx("span",{className:"s-observe-tool-cmd-name",children:"read"});case"file":{const o=r&&n!=="patch"?n:is(s.detail??"")??"";return o?t.jsx(ze,{path:o,tone:"file"}):t.jsx("span",{className:"s-observe-tool-cmd-name",children:s.tool??"edit"})}case"search":{if(!r)return t.jsx("span",{className:"s-observe-tool-cmd-name",children:"search"});const o=Ft(s.result);return t.jsxs(t.Fragment,{children:[t.jsxs("span",{className:"s-observe-tool-needle",children:[t.jsx("span",{className:"s-observe-tool-needle-q",children:'"'}),n,t.jsx("span",{className:"s-observe-tool-needle-q",children:'"'})]}),o!=null&&t.jsxs("span",{className:"s-observe-tool-count",children:["· ",o," ",o===1?"match":"matches"]})]})}case"fetch":{if(!r)return t.jsx("span",{className:"s-observe-tool-cmd-name",children:"fetch"});const{host:o,path:l}=Dt(n);return t.jsxs("span",{className:"s-observe-tool-url",title:n,children:[t.jsx("span",{className:"s-observe-tool-host",children:o}),l&&l!=="/"&&t.jsx("span",{className:"s-observe-tool-host-path",children:Ke(l,40)})]})}case"agent":return t.jsx("span",{className:"s-observe-tool-agent-name",children:r?n:s.tool??"agent"});default:return t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"s-observe-tool-cmd-name",children:s.tool}),r?t.jsxs(t.Fragment,{children:[" ",t.jsx("span",{className:"s-observe-tool-cmd-arg",children:n})]}):null]})}}function Gt({event:e,laneMode:s=!1,simple:n=!1,wallLabel:a,wallTitle:r}){const[o,l]=h.useState(!1),u=It(e.tool),c=s?At[u]:gt[Rt(e.tool)]??"▸",f=s&&u==="bash",p=f?cs("bash",e.arg):"",y=!!p&&!ls(p)&&!p.startsWith("{")&&!p.startsWith("["),m=f&&!n,i=y?je(p).spans.find(k=>k.tier==="prog")?.text??p:"",x=Pt(e)??e.arg?.trim()??"",A=typeof e.result?.outcome=="string"?e.result.outcome.trim():typeof e.result?.outcome=="number"?String(e.result.outcome):void 0,D=s?void 0:e.stream?.[0]?.trim()||void 0,L=!!(A&&A!=="success"),B=!!(L||e.diff||e.stream),R=!s&&(B||ke(x,120,2)),_=!R||o,W=!s&&R&&!o&&e.stream?Ve(e.stream.join(`
10
- `),180,2):null;return t.jsxs("div",{className:`s-observe-tool s-observe-block${s?` s-observe-tool--lane s-observe-tool--fam-${u}`:""}${s&&n?" s-observe-tool--simple":""}`,children:[t.jsxs("div",{className:`s-observe-tool-header${B&&!s?" s-observe-tool-header--has-body":""}`,children:[(!f||n)&&t.jsx("span",{className:"s-observe-tool-glyph",children:c}),t.jsxs("span",{className:"s-observe-tool-cmd",title:s&&!m?f&&y?p:`${e.tool??""} ${x}`.trim()||void 0:void 0,children:[m?t.jsx(zt,{command:y?p:"",title:y?p:void 0,outputPreview:D}):f&&n?t.jsx("span",{className:"s-observe-tool-cmd-name",children:i||"shell"}):s?t.jsx(Ht,{family:u,event:e}):t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"s-observe-tool-cmd-name",children:e.tool}),x?t.jsxs(t.Fragment,{children:[" ",t.jsx("span",{className:"s-observe-tool-cmd-arg",children:x})]}):null]}),A==="success"&&t.jsx("span",{className:"s-observe-tool-outcome s-observe-tool-outcome--success",children:"ok"}),!s&&e.diff&&t.jsxs("span",{className:"s-observe-tool-diff-inline","aria-label":`${e.diff.add} additions, ${e.diff.del} deletions`,children:[t.jsxs("span",{className:"s-observe-tool-diff-add",children:["+",e.diff.add]}),t.jsxs("span",{className:"s-observe-tool-diff-del",children:["−",e.diff.del]})]})]}),R&&t.jsx(rs,{expanded:o,onToggle:()=>l(k=>!k),label:e.stream?"output":"details"})]}),W&&t.jsx("pre",{className:"s-observe-tool-stream-preview",children:W}),L&&(s||_)&&e.result&&t.jsx("div",{className:"s-observe-tool-result",children:Object.entries(e.result).map(([k,T])=>`${k}: ${T}`).join(" · ")}),!s&&e.diff&&_&&t.jsxs("div",{className:"s-observe-tool-diff",children:[t.jsxs("div",{className:"s-observe-tool-diff-stats",children:[t.jsxs("span",{className:"s-observe-tool-diff-add",children:["+",e.diff.add]}),e.diff.del>0&&t.jsxs(t.Fragment,{children:[" ",t.jsxs("span",{className:"s-observe-tool-diff-del",children:["−",e.diff.del]})]})]}),t.jsx(Et,{preview:e.diff.preview})]}),!s&&e.stream&&_&&t.jsx("pre",{className:"s-observe-tool-stream",children:e.stream.join(`
11
- `)}),!s&&t.jsx(K,{text:$t(e),label:"Copy tool call"})]})}function qt({event:e,laneMode:s=!1,operatorName:n="you",wallLabel:a,wallTitle:r}){const o=Ps(e),l=o.preview===o.title?"":o.preview,u=(n.trim()[0]??"y").toUpperCase();return t.jsxs("div",{className:`s-observe-ask s-observe-block${s?" s-observe-ask--lane":""}`,children:[s?t.jsxs("div",{className:"s-observe-ask-head",children:[t.jsx("span",{className:"s-observe-ask-avatar",style:{background:Os(n)},"aria-hidden":"true",children:u}),t.jsx("span",{className:"s-observe-ask-author",children:n}),a?t.jsx("span",{className:"s-observe-ask-time",title:r,children:a}):null]}):t.jsx("div",{className:"s-observe-ask-label",children:o.label}),o.contextTags.length>0&&t.jsx("div",{className:"s-observe-ask-tags","aria-label":"Attached context",children:o.contextTags.map(c=>t.jsxs("span",{className:"s-observe-ask-tag",title:c.raw,children:[t.jsx(Zs,{size:10,strokeWidth:2,"aria-hidden":"true"}),t.jsx("span",{className:"s-observe-ask-tag-name",children:c.name}),c.detail?t.jsx("span",{className:"s-observe-ask-tag-detail",children:c.detail}):null]},c.name))}),t.jsx("div",{className:"s-observe-ask-title",children:o.title}),l?t.jsx(os,{text:l,className:"s-observe-ask-text",laneMode:s,live:e.live,renderCollapsed:c=>Je(c),renderExpanded:c=>t.jsx(Xe,{text:c})}):e.live?t.jsx("span",{className:"s-observe-cursor"}):null,o.answer&&(!s||ke(o.answer.text))&&t.jsxs("div",{className:"s-observe-ask-answer",children:[t.jsxs("span",{className:"s-observe-ask-answer-meta",children:["↳ ",o.answer.label]}),t.jsx("div",{className:"s-observe-ask-answer-text",children:o.answer.text})]}),!s&&t.jsx(K,{text:o.copyText,label:"Copy request"})]})}function Ut(e){const s=e.to?.trim();return s?s==="human"?"→ you":`→ ${s}`:null}function us(e){return e.kind==="message"&&(e.text??"").trim().toLowerCase()==="[thinking]"}function Vt({event:e,laneMode:s=!1}){const n=e.text??"",a=s&&us(e),r=a?"Thinking...":n,o=a?"Agent thinking":Ut(e);return t.jsxs("div",{className:["s-observe-block",s&&"s-observe-message--lane",a&&"s-observe-message--thinking",e.live&&"s-observe-message--streaming"].filter(Boolean).join(" "),"aria-busy":e.live||void 0,children:[o?t.jsx("div",{className:"s-observe-message-label",children:o}):null,t.jsx(os,{text:r,className:"s-observe-message-text",laneMode:s,live:e.live,renderCollapsed:l=>Je(l),renderExpanded:l=>t.jsx(Xe,{text:l})}),!s&&t.jsx(K,{text:n,label:"Copy message"})]})}function Kt({summary:e,expanded:s=!1,onToggle:n}){const a=e.totalCount===1?"technical event":"technical events",r=t.jsxs(t.Fragment,{children:[t.jsxs("span",{className:"s-observe-tech-summary-count",children:[e.totalCount," ",a]}),e.labels.length>0?t.jsx("span",{className:"s-observe-tech-summary-detail",children:e.labels.join(" · ")}):null,n?s?t.jsx(Ze,{size:12,strokeWidth:1.8,className:"s-observe-tech-summary-chevron","aria-hidden":!0}):t.jsx(Qe,{size:12,strokeWidth:1.8,className:"s-observe-tech-summary-chevron","aria-hidden":!0}):null]});return n?t.jsx("button",{type:"button",className:`s-observe-tech-summary s-observe-tech-summary--toggle s-observe-block s-observe-block--inline${s?" is-expanded":""}`,onClick:o=>{o.stopPropagation(),n()},"aria-expanded":s,"aria-label":s?`Collapse ${e.totalCount} ${a}`:`Expand ${e.totalCount} ${a}`,children:r}):t.jsx("div",{className:"s-observe-tech-summary s-observe-block s-observe-block--inline",children:r})}function Jt({collapseTechnicalEvents:e,onChange:s}){if(!s)return null;const n=e?"Concise":"Details",a=e?"Show detailed trace events":"Show concise trace summaries",r=e?Vs:Ks;return t.jsxs("label",{className:`s-observe-lane-trace-mode${e?" s-observe-lane-trace-mode--concise":" s-observe-lane-trace-mode--details"}`,title:a,children:[t.jsx("input",{type:"checkbox",checked:e,onChange:o=>s(o.currentTarget.checked),"aria-label":a}),t.jsx(r,{size:12,strokeWidth:1.8,"aria-hidden":"true"}),t.jsx("span",{children:n})]})}function Yt(e,s){return e?.trim()?s?!/^[a-z0-9._-]+ · [a-z0-9._-]+$/i.test(e.trim()):!0:!1}const Xt={turn_ended:"Turn complete",turn_started:"Turn started"};function Zt(e){const s=e.trim(),a=s.match(/^\[(.+)\]$/)?.[1]??s;return Xt[a]??a.replace(/_/g," ")}function Qt({turn:e,model:s}){return t.jsxs("div",{className:"s-observe-grok-turn s-observe-block s-observe-block--inline",children:[t.jsxs("span",{className:"s-observe-grok-turn-num",children:["turn ",e]}),s?t.jsx("span",{className:"s-observe-grok-turn-model",children:s}):null]})}function en({tool:e,decision:s}){return t.jsxs("div",{className:"s-observe-grok-permission s-observe-block s-observe-block--inline",children:[t.jsx("span",{className:`s-observe-grok-permission-decision is-${s}`,children:s}),t.jsx("span",{className:"s-observe-grok-permission-tool",children:e})]})}function sn({phase:e}){return t.jsx("div",{className:"s-observe-grok-phase s-observe-block s-observe-block--inline",children:t.jsx("span",{className:"s-observe-grok-phase-label",children:ys(e)})})}function tn({event:e,laneMode:s=!1}){if(s){const n=Ue(e.text??"");return n?.kind==="turn"&&typeof n.turn=="number"?t.jsx(Qt,{turn:n.turn,model:n.model}):t.jsx("div",{className:"s-observe-note s-observe-block s-observe-block--inline s-observe-note--lane",children:t.jsx("span",{className:"s-observe-note-text",children:Zt(e.text)})})}return t.jsxs("div",{className:"s-observe-note s-observe-block s-observe-block--inline",children:[t.jsx("span",{className:"s-observe-note-icon","aria-hidden":"true",children:"✓"}),t.jsx("span",{className:"s-observe-note-text",children:e.text}),t.jsx(K,{text:e.text??"",label:"Copy note"})]})}function nn({event:e,laneMode:s=!1}){const n=s?Ue(e.text??""):null;if(n?.kind==="permission"&&n.tool&&n.decision)return t.jsx(en,{tool:n.tool,decision:n.decision});if(n?.kind==="phase"&&n.phase)return t.jsx(sn,{phase:n.phase});const a=Yt(e.detail,s),r=a&&e.detail?`${e.text}
12
- ${e.detail}`:e.text??"";return t.jsxs("div",{className:`s-observe-system s-observe-block${s?" s-observe-system--lane":""}`,children:[t.jsxs("div",{className:"s-observe-system-line",children:[!s&&t.jsx("span",{className:"s-observe-system-arrow","aria-hidden":"true",children:"▸ "}),t.jsx("span",{className:"s-observe-system-text",children:e.text})]}),a&&e.detail&&t.jsx("div",{className:"s-observe-system-detail",children:e.detail}),t.jsx(K,{text:r,label:"Copy system event"})]})}const an={think:"think",tool:"tool",ask:"ask",message:"message",note:"note",system:"system",boot:"boot"};function rn(e){const s=ks(e);return s||(e.kind==="tool"?e.tool==="res"?"result":e.tool?.trim()||"tool":an[e.kind]??e.kind)}function He(e){return!!e?.closest("button, a, input, textarea, select, [role='slider'], [contenteditable='true']")}function on({event:e,prevT:s,prevWallMs:n,laneMode:a=!1,entering:r=!1,repeatCount:o=1,sessionStartMs:l,nowMs:u=Date.now(),preferWallAge:c=!1,highlighted:f=!1,focusAnchor:p=!1,simpleTool:y=!1,stackedTool:m=!1,laneGutter:i="time",laneOperatorName:d,onLaneEventSelect:x,laneToolHover:A,hoverPreviewActive:D=!1,technicalSummary:L,technicalExpanded:B=!1,onTechnicalToggle:R}){const _=e.t-s,W=L?"var(--dim)":ns[e.kind]??"var(--dim)",b=a?wt(e,l,u,c):Ct(e,l),k=he(e,l),T=c&&typeof n=="number"&&k!==null?Rs(k-n):null,v=!c&&_>15?`${Nt(_)} gap`:null,w=T??v,g=a&&!!x&&!L,N=["s-observe-row",`s-observe-row--kind-${e.kind}`,r?"s-observe-row--enter":"",g?"s-observe-row--selectable":"",f?"s-observe-row--highlighted":"",p?"s-observe-row--focus-anchor":"",y?"s-observe-row--tool-simple":"",m?"s-observe-row--tool-stacked":"",D?"s-observe-row--hover-preview":"",L?"s-observe-row--tech-summary":""].filter(Boolean).join(" "),S=t.jsxs(t.Fragment,{children:[w?t.jsx("div",{className:"s-observe-row-gap",children:w}):null,t.jsxs("div",{className:"s-observe-row-time",title:b.title,children:[i==="label-time"&&!m?t.jsx("span",{className:"s-observe-row-kind",children:rn(e)}):null,t.jsx("span",{className:"s-observe-row-clock",children:b.label}),o>1&&t.jsxs("span",{className:"s-observe-row-repeat",title:`${o} similar events merged`,children:["×",o]})]}),t.jsx("span",{className:"s-observe-row-bead",style:{background:W}}),L?t.jsx(Kt,{summary:L,expanded:B,onToggle:R}):t.jsxs(t.Fragment,{children:[e.kind==="think"&&t.jsx(Lt,{event:e,laneMode:a}),e.kind==="tool"&&t.jsx(Gt,{event:e,laneMode:a,simple:y,wallLabel:y?b.label:void 0,wallTitle:y?b.title:void 0}),e.kind==="ask"&&t.jsx(qt,{event:e,laneMode:a,operatorName:d,wallLabel:a?b.label:void 0,wallTitle:a?b.title:void 0}),e.kind==="message"&&t.jsx(Vt,{event:e,laneMode:a}),e.kind==="note"&&t.jsx(tn,{event:e,laneMode:a}),(e.kind==="system"||e.kind==="boot")&&t.jsx(nn,{event:e,laneMode:a})]})]}),M=a&&e.kind==="tool"&&A?A(e,{wallLabel:b.label,wallTitle:b.title,sessionOffset:ws(e.t)}):null,E=M?t.jsx("div",{ref:M.ref,className:"s-observe-row-hover-target",onMouseEnter:M.onMouseEnter,onMouseLeave:M.onMouseLeave,onFocus:M.onFocus,onBlur:M.onBlur,children:S}):S;return t.jsx("div",{className:N,"data-event-id":e.id,onClick:g?$=>{He($.target)||x?.(e)}:void 0,onKeyDown:g?$=>{$.key!=="Enter"&&$.key!==" "||He($.target)||($.preventDefault(),x?.(e))}:void 0,role:g?"button":void 0,tabIndex:g?0:void 0,"aria-label":g?e.kind==="tool"?"Open command detail at this step":"Open session detail at this step":void 0,children:E})}function ln(e,s){if(!e)return;const n=e.closest(".s-observe-main");if(n){const a=n.scrollHeight-n.clientHeight;n.scrollTo({top:a,left:n.scrollLeft,behavior:s});return}e.scrollIntoView({behavior:s,block:"end",inline:"nearest"})}function cn({events:e,followEnd:s,laneMode:n=!1,sessionStartMs:a,nowMs:r=Date.now(),preferWallAge:o=!1,focusEventId:l,inlineFocusEventId:u,inlineFocusContent:c,onLaneEventSelect:f,laneGutter:p="time",richSimpleTools:y=!1,collapseTechnicalEvents:m=!1,laneOperatorName:i}){const d=h.useRef(null),x=h.useRef(s),A=h.useRef(new Set),D=h.useRef(!1),[L,B]=h.useState(()=>new Set),[R,_]=h.useState(()=>new Set),W=h.useCallback(v=>{_(w=>{const g=new Set(w);return g.has(v)?g.delete(v):g.add(v),g})},[]);h.useEffect(()=>{m||_(new Set)},[m]);const b=h.useMemo(()=>{const v=n?bt(e):e.map(g=>({event:g,repeatCount:1}));if(!n)return v;const w=v.filter(g=>g.event.live||!us(g.event));return m?ft(w):w},[e,n,m]);h.useEffect(()=>{if(!n){D.current=!0;return}const v=A.current;if(!D.current){for(const S of b)v.add(S.event.id);D.current=!0;return}const w=[];for(const S of b)v.has(S.event.id)||(v.add(S.event.id),w.push(S.event.id));if(w.length===0)return;const g=new Set(w);B(g);const N=window.setTimeout(()=>{B(new Set)},380);return()=>window.clearTimeout(N)},[b,s,n]),h.useLayoutEffect(()=>{if(!s){x.current=!1;return}const v=!x.current;x.current=!0,ln(d.current,n||v?"instant":"smooth")},[b.length,s,n]);const k=Cs(n),T=(v,w,g,N={})=>{const S=g?.event??null,M=S?he(S,a):null,E=n&&!v.technicalSummary&&!y&&Fe(v.event),$=E&&S!=null&&!g?.technicalSummary&&Fe(S),O=!N.suppressInlineFocus&&u===v.event.id&&!!c,j=t.jsx(on,{event:v.event,prevT:S?.t??0,prevWallMs:M,laneMode:n,simpleTool:E,stackedTool:$,laneGutter:p,entering:n&&L.has(v.event.id),repeatCount:v.repeatCount,sessionStartMs:a,nowMs:r,preferWallAge:o,highlighted:!n&&l===v.event.id,focusAnchor:O,laneOperatorName:i,onLaneEventSelect:f,laneToolHover:n?k.bind:void 0,hoverPreviewActive:n&&k.hoveredEventId===v.event.id,technicalSummary:v.technicalSummary,technicalExpanded:N.technicalExpanded,onTechnicalToggle:N.onTechnicalToggle});return t.jsxs("div",{className:`s-observe-focus-group${O?" s-observe-focus-group--active":""}`,"data-focus-group":O?"true":void 0,children:[j,O?t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"s-observe-focus-connector","aria-hidden":!0}),t.jsx("div",{className:"s-observe-focus-detail",children:c})]}):null]},`${v.event.id}:${v.repeatCount}:${w}${N.keySuffix??""}`)};return t.jsxs("div",{className:"s-observe-stream",children:[t.jsx("div",{className:"s-observe-spine"}),b.map((v,w)=>{const g=w>0?b[w-1]:null,N=v.technicalSourceRows,S=!!(v.technicalSummary&&N&&N.length>0),M=S&&R.has(v.event.id);return S&&M?t.jsxs("div",{className:"s-observe-tech-rollup s-observe-tech-rollup--expanded",children:[T(v,w,g,{technicalExpanded:!0,onTechnicalToggle:()=>W(v.event.id),suppressInlineFocus:!0}),t.jsx("div",{className:"s-observe-tech-rollup-details",children:N.map((E,$)=>{const O=$>0?N[$-1]:null;return T(E,$,O,{keySuffix:`:rollup:${v.event.id}:detail`,suppressInlineFocus:!0})})})]},`${v.event.id}:${v.repeatCount}:${w}:rollup`):T(v,w,g,{onTechnicalToggle:S?()=>W(v.event.id):void 0})}),t.jsx("div",{ref:d}),k.card]})}function un({data:e,cursor:s}){const r=e.length;if(r<2)return null;const o=276/(r-1),l=e.map((c,f)=>`${f===0?"M":"L"} ${(f*o).toFixed(1)} ${((1-c)*44).toFixed(1)}`).join(" "),u=s*276;return t.jsxs("svg",{viewBox:"0 0 276 44",style:{width:"100%",height:44,display:"block"},children:[t.jsx("defs",{children:t.jsxs("linearGradient",{id:"observeCtxFill",x1:"0",y1:"0",x2:"0",y2:"1",children:[t.jsx("stop",{offset:"0%",stopColor:"var(--accent)",stopOpacity:.25}),t.jsx("stop",{offset:"100%",stopColor:"var(--accent)",stopOpacity:0})]})}),t.jsx("path",{d:`${l} L 276 44 L 0 44 Z`,fill:"url(#observeCtxFill)"}),t.jsx("path",{d:l,fill:"none",stroke:"var(--accent)",strokeWidth:1.2}),t.jsx("line",{x1:u,y1:0,x2:u,y2:44,stroke:"var(--accent)",strokeWidth:1,opacity:.6,strokeDasharray:"2 3"})]})}function dn({state:e}){const s=e==="created"?"var(--green)":e==="modified"?"var(--accent)":"var(--dim)",n=e==="created"?"+":e==="modified"?"~":"◎";return t.jsx("span",{className:"s-observe-file-glyph",style:{background:"color-mix(in srgb, var(--bg) 70%, black)",border:`1px solid color-mix(in srgb, ${s} 40%, var(--border))`,color:s},children:n})}function H({label:e,value:s,detail:n}){const a=s==="0"||s==="—"||s==="";return t.jsxs("div",{className:`s-observe-stat${a?" s-observe-stat--quiet":""}`,children:[t.jsx("div",{className:"s-observe-stat-value",children:s}),t.jsx("div",{className:"s-observe-stat-label",children:e}),n&&t.jsx("div",{className:"s-observe-stat-detail",children:n})]})}function pe({children:e="Not captured for this session"}){return t.jsx("div",{className:"s-observe-empty",children:e})}function Te({path:e,basePath:s,agentId:n,sessionId:a,className:r,children:o}){const{openFilePreview:l}=Ne(),u=e.startsWith("/")||e.startsWith("~/")?e:s?`${s.replace(/\/$/,"")}/${e}`:e;return t.jsxs("span",{className:"s-observe-path-link-group",children:[t.jsx("button",{type:"button",className:r,title:`Preview ${e} in Scout`,onClick:()=>l(u),children:o}),t.jsx("button",{type:"button",className:"s-observe-path-link-external",title:`Reveal ${e} in OS`,"aria-label":"Reveal in OS",onClick:()=>Tt({path:e,basePath:s,agentId:n,sessionId:a}),children:t.jsx(Js,{size:11,strokeWidth:1.6})})]})}function mn({path:e,basePath:s,agentId:n,sessionId:a}){return t.jsxs("div",{className:"s-observe-source",children:[t.jsx("span",{className:"s-observe-source-label",children:"Source"}),t.jsx(Te,{path:e,basePath:s,agentId:n,sessionId:a,className:"s-observe-source-link",children:ge(e)})]})}function xe({rows:e,agentId:s,sessionId:n}){return e.length===0?null:t.jsx("div",{className:"s-observe-detail-list",children:e.map(a=>{const r=`s-observe-detail-value s-observe-detail-value--${a.tone??"default"}${a.wrap?" s-observe-detail-value--wrap":""}`,o=a.display??a.value;return t.jsxs("div",{className:"s-observe-detail-row",children:[t.jsx("div",{className:"s-observe-detail-label",children:a.label}),t.jsxs("div",{className:"s-observe-detail-value-wrap",children:[a.actionPath?t.jsx(Te,{path:a.actionPath,basePath:a.actionBasePath,agentId:s,sessionId:n,className:`${r} s-observe-detail-link`,children:o}):t.jsx("div",{className:r,title:a.title??(o!==a.value?a.value:void 0),children:o}),t.jsx(K,{text:a.actionPath??a.value,label:`Copy ${a.label.toLowerCase()}`,className:"s-observe-copy-btn--inline"})]})]},a.label)})})}function hn({events:e,duration:s,cursor:n,onCursor:a,snapTimes:r=[]}){const o=h.useRef(null),l=h.useMemo(()=>vn(e,s,48),[e,s]),u=l.some(m=>m.count>0),c=l.reduce((m,i)=>m+i.count,0),f=u?`${c} message turn anchors. Click the timeline or use arrow keys to snap between turns.`:"Session timeline",p=h.useCallback(m=>{const i=o.current.getBoundingClientRect(),d=m.clientX-i.left,x=Math.max(0,Math.min(s,d/i.width*s));a(Ge(x,s,r))},[s,a,r]),y=h.useCallback(m=>{if(s<=0)return;const i=s*.01,d=s*.05;let x=n;switch(m.key){case"ArrowLeft":x=r.length?bn(n,r):n-(m.shiftKey?d:i);break;case"ArrowRight":x=r.length?ms(n,r,s):n+(m.shiftKey?d:i);break;case"PageDown":x=n-d;break;case"PageUp":x=n+d;break;case"Home":x=0;break;case"End":x=s;break;default:return}m.preventDefault(),a(r.length&&(m.key==="PageDown"||m.key==="PageUp")?Ge(x,s,r):Math.max(0,Math.min(s,x)))},[n,s,a,r]);return t.jsxs("div",{className:"s-observe-track-wrap",title:f,children:[u?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"s-observe-track-barsHead","aria-hidden":!0,children:[t.jsx("span",{children:"Turns"}),t.jsx("span",{children:c})]}),t.jsx("div",{className:"s-observe-track-bars","aria-hidden":!0,children:l.map(m=>t.jsx("span",{className:"s-observe-track-bar","data-active":m.start<=n||void 0,style:{height:`${pn(m.count,l)}%`}},m.index))})]}):null,t.jsxs("div",{ref:o,className:"s-observe-track",onClick:p,onKeyDown:y,role:"slider",tabIndex:s>0?0:-1,"aria-label":"Session timeline","aria-valuemin":0,"aria-valuemax":s,"aria-valuenow":Math.max(0,Math.min(s,n)),children:[e.map(m=>{const i=m.kind==="tool"?6:m.kind==="think"?4:5;return t.jsx("span",{className:"s-observe-track-tick",style:{left:`${s>0?m.t/s*100:0}%`,top:i===6?-2:-1,height:i,background:ns[m.kind]??"var(--dim)"}},m.id)}),t.jsx("div",{className:"s-observe-track-played",style:{width:`${s>0?n/s*100:0}%`}}),t.jsx("span",{className:"s-observe-track-cursor",style:{left:`${s>0?n/s*100:0}%`}})]})]})}function ds(e){return e.kind==="message"||e.kind==="ask"}function fn(e,s){const n=e.filter(ds).map(a=>Math.max(0,Math.min(s,a.t))).sort((a,r)=>a-r);return Array.from(new Set(n))}function Ge(e,s,n){const a=Math.max(0,Math.min(s,e));if(n.length===0)return a;let r=n[0],o=Math.abs(r-a);for(const l of n){const u=Math.abs(l-a);u<o&&(r=l,o=u)}return r}function ms(e,s,n){return s.find(r=>r>e+.01)??n}function bn(e,s){for(let n=s.length-1;n>=0;n-=1){const a=s[n];if(a<e-.01)return a}return 0}function vn(e,s,n){const a=Math.max(1,s),r=Array.from({length:n},(o,l)=>({index:l,count:0,start:l/n*a}));for(const o of e){if(!ds(o))continue;const l=Math.min(n-1,Math.max(0,Math.floor(o.t/a*n)));r[l].count+=1}return r}function pn(e,s){if(e<=0)return 0;const n=Math.max(1,...s.map(a=>a.count));return Math.max(18,e/n*100)}function xn({events:e,duration:s,cursor:n,mode:a,speed:r,snapTimes:o,onCursor:l,onPlayToggle:u,onSpeedChange:c}){const f=a==="tail"?"Following latest":a==="playing"?"Pause replay":"Play turns";return t.jsxs("div",{className:"s-observe-transport","data-snap":o.length>0||void 0,"data-mode":a,children:[t.jsx("button",{type:"button",className:"s-observe-play-btn","data-state":a,onClick:u,"aria-pressed":a==="tail"||a==="playing","aria-label":f,title:f,children:a==="playing"?"❚❚":"▶"}),t.jsx("button",{type:"button",className:"s-observe-rewind-btn",onClick:()=>{l(0)},"aria-label":"Jump to start",title:"Jump to start",children:"⏮"}),t.jsx(hn,{events:e,duration:s,cursor:n,onCursor:l,snapTimes:o}),t.jsx("div",{className:"s-observe-speed-group",children:[.5,1,2,4].map(p=>t.jsxs("button",{type:"button",className:`s-observe-speed-btn${r===p?" s-observe-speed-btn--active":""}`,onClick:()=>c(p),children:[p,"×"]},p))})]})}function qe(e){return As(e)||"unknown"}function gn(e,s){const n=Be(e),a=Be(s);return n===null||a===null?"0:00":Ye(a-n)||"0:00"}function jn({catalog:e,sessionId:s,agentId:n}){const{navigate:a,route:r}=Ne(),[o,l]=h.useState(!1),u=e.sessions.find(d=>d.id===e.activeSessionId),c=e.sessions.filter(d=>d.id!==e.activeSessionId&&d.endedAt).sort((d,x)=>(x.endedAt??0)-(d.endedAt??0)).slice(0,5),f=e.activeSessionId??s,p=f?f.slice(0,8):null,y=!!(u?.canTakeover&&e.resumeCommand),m=h.useCallback(()=>{!y||!e.resumeCommand||(Fs({command:e.resumeCommand,cwd:e.resumeCwd,agentId:n}).then(()=>{zs(a,{view:"terminal",agentId:n},{returnTo:r})}),l(!0))},[y,e.resumeCommand,e.resumeCwd,a,r,n]),i=h.useCallback(()=>{a({view:"agents-v2",agentId:n,tab:"message"})},[a,n]);return t.jsxs("div",{className:"s-observe-session-header",children:[t.jsx("div",{className:"s-observe-session-active",children:t.jsxs("div",{className:"s-observe-session-row",children:[p&&t.jsx("span",{className:"s-observe-session-id",title:f??void 0,children:p}),u&&t.jsxs("span",{className:"s-observe-session-time",children:["started ",qe(u.startedAt)]}),t.jsx("button",{className:"s-observe-pair-btn",onClick:i,title:"Send messages into the live session without taking the terminal",children:"Pair"}),y&&t.jsx("button",{className:"s-observe-takeover-btn",onClick:m,title:e.resumeCommand??void 0,children:o?"Sent":"Takeover"})]})}),c.length>0&&t.jsxs("div",{className:"s-observe-session-history",children:[t.jsxs("div",{className:"s-observe-session-history-label",children:[e.sessions.length," session",e.sessions.length!==1?"s":""," total"]}),c.map(d=>t.jsxs("div",{className:"s-observe-session-past",children:[t.jsx("span",{className:"s-observe-session-id",children:d.id.slice(0,8)}),t.jsxs("span",{className:"s-observe-session-time",children:[qe(d.startedAt),d.endedAt?` · ${gn(d.startedAt,d.endedAt)}`:""]})]},d.id))]})]})}const hs={events:[{id:"observe:empty",t:0,kind:"system",text:"No session trace is available for this agent yet.",detail:"Waiting for a live session or readable history file."}],files:[],contextUsage:[],live:!1};function fs({data:e=hs,agentId:s,sessionId:n,cursor:a,duration:r,surface:o="embedded",observeSource:l,observeFidelity:u}){const{events:c,files:f}=e,[p,y]=h.useState(null);h.useEffect(()=>{if(!s)return;let j=!1;return ye(`/api/agents/${encodeURIComponent(s)}/session-catalog`).then(V=>{j||y(V)}).catch(()=>{}),()=>{j=!0}},[s]);const m=e.metadata,i=m?.session,d=m?.usage,x=typeof r=="number"&&Number.isFinite(r)&&r>0?r:c.length>0?c[c.length-1].t+30:60,A=typeof a=="number"&&Number.isFinite(a)?a:x,D=c.filter(j=>j.kind==="tool").length,L=c.filter(j=>j.kind==="think").length,B=c.filter(j=>j.kind==="ask").length,R=c.filter(j=>j.kind==="tool"&&j.tool==="read").length,_=c.filter(j=>j.kind==="tool"&&(j.tool==="edit"||j.tool==="write")).length,W=c.length>0?c[c.length-1].t:0,b=typeof d?.contextInputTokens=="number"&&typeof d.contextWindowTokens=="number"&&d.contextWindowTokens>0?Math.max(0,Math.min(100,Math.round(d.contextInputTokens/d.contextWindowTokens*100))):null,k=[{label:"Context input",value:d?.contextInputTokens},{label:"Input",value:d?.inputTokens},{label:"Output",value:d?.outputTokens},{label:"Cache hit",value:d?.cacheReadInputTokens},{label:"Cache write",value:d?.cacheCreationInputTokens},{label:"Total",value:d?.totalTokens},{label:"Reasoning",value:d?.reasoningOutputTokens}].filter(j=>typeof j.value=="number"),T=ve([typeof d?.assistantMessages=="number"?{label:"Assistant msgs",value:te(d.assistantMessages)??"0",tone:"accent"}:null,typeof d?.webSearchRequests=="number"?{label:"Web search",value:te(d.webSearchRequests)??"0"}:null,typeof d?.webFetchRequests=="number"?{label:"Web fetch",value:te(d.webFetchRequests)??"0"}:null,d?.serviceTier?{label:"Service tier",value:d.serviceTier,tone:"good"}:null,d?.speed?{label:"Speed",value:d.speed}:null,d?.planType?{label:"Plan",value:d.planType}:null]),v=ve([typeof d?.contextWindowTokens=="number"?{label:"Model window",value:`${te(d.contextWindowTokens)} tokens`,title:te(d.contextWindowTokens)??void 0,tone:"accent"}:null,b!==null?{label:"Window load",value:`${b}%`,tone:b>=80?"warn":"default"}:null]),w=ve([i?.model?{label:"Model",value:i.model,tone:"accent"}:null,i?.adapterType?{label:"Adapter",value:i.adapterType}:null,i?.gitBranch?{label:"Branch",value:i.gitBranch}:null,i?.cwd?{label:"Workspace",value:i.cwd,display:ge(i.cwd),title:i.cwd,actionPath:i.cwd}:null,i?.entrypoint?{label:"Entrypoint",value:i.entrypoint}:null,i?.cliVersion?{label:"CLI",value:i.cliVersion}:null,i?.permissionMode?{label:"Permissions",value:i.permissionMode}:null,i?.approvalPolicy?{label:"Approval",value:i.approvalPolicy}:null,i?.sandbox?{label:"Sandbox",value:i.sandbox}:null,i?.userType?{label:"User type",value:i.userType}:null,i?.originator?{label:"Originator",value:i.originator}:null,i?.modelProvider?{label:"Provider",value:i.modelProvider}:null,i?.effort?{label:"Effort",value:i.effort}:null,i?.timezone?{label:"Timezone",value:i.timezone}:null,i?.externalSessionId?{label:"External session",value:i.externalSessionId,title:i.externalSessionId}:null,i?.threadId?{label:"Thread",value:i.threadId,title:i.threadId}:null,i?.threadPath?{label:"Thread path",value:i.threadPath,display:ge(i.threadPath),title:i.threadPath,actionPath:i.threadPath,actionBasePath:i.cwd??null}:null,i?.source?{label:"Runtime source",value:i.source}:null]),g=Me(d),N=Me(i),S=l??(e.live?"live":"history"),M=u??"timestamped",E=ts({source:S,fidelity:M,live:e.live,eventCount:c.length}),$=M==="timestamped",O=E.traceEventCount>0;return t.jsxs("aside",{className:`s-observe-rail${o==="context"?" s-observe-rail--context":""}`,children:[t.jsxs("div",{children:[t.jsx("div",{className:"s-observe-rail-label",children:"Evidence"}),t.jsxs("div",{className:"s-observe-evidence-card","data-tone":E.tone,children:[t.jsx("span",{className:"s-observe-evidence-dot","aria-hidden":"true"}),t.jsxs("span",{children:[t.jsx("strong",{children:E.label}),t.jsx("small",{children:E.detail})]})]})]}),p&&p.sessions.length>0&&t.jsxs("div",{children:[t.jsx("div",{className:"s-observe-rail-label",children:"Session"}),t.jsx(jn,{catalog:p,sessionId:n??null,agentId:s})]}),t.jsxs("div",{children:[t.jsx("div",{className:"s-observe-rail-label",children:"Trace stats"}),t.jsxs("div",{className:"s-observe-stats",children:[t.jsx(H,{label:"Turns",value:U(O?i?.turnCount:void 0)}),t.jsx(H,{label:"Tools",value:U(O?D:void 0)}),t.jsx(H,{label:"Thinks",value:U(O?L:void 0)}),t.jsx(H,{label:"Requests",value:U(O?B:void 0)}),t.jsx(H,{label:"Reads",value:U(O?R:void 0)}),t.jsx(H,{label:"Edits",value:U(O?_:void 0)}),t.jsx(H,{label:"Files",value:U(O?f.length:void 0)}),t.jsx(H,{label:"Window",value:$&&O?St(W):"—"})]})]}),t.jsxs("div",{children:[t.jsx("div",{className:"s-observe-rail-label",children:"Interacted agents"}),t.jsx(Hs,{topology:m?.topology??null,sessionId:n??m?.session?.externalSessionId??null,size:"rail",maxAgents:4})]}),t.jsxs("div",{children:[t.jsx("div",{className:"s-observe-rail-label",children:"Context window"}),t.jsx(xe,{rows:v,agentId:s??null,sessionId:n??null}),b!==null?t.jsxs(t.Fragment,{children:[t.jsx(un,{data:[b/100,b/100],cursor:A/x}),t.jsx("div",{className:"s-observe-ctx-detail",children:"Meter uses latest context input divided by the model window."})]}):v.length===0?t.jsx(pe,{}):t.jsx("div",{className:"s-observe-ctx-detail",children:"No derived load trace captured."})]}),t.jsxs("div",{children:[t.jsxs("div",{className:"s-observe-rail-label",children:["Files touched · ",f.length]}),t.jsx("div",{className:"s-observe-files",children:f.map(j=>t.jsxs("div",{className:`s-observe-file${j.lastT<=A?" s-observe-file--visible":" s-observe-file--hidden"}`,children:[t.jsx(dn,{state:j.state}),t.jsx(Te,{path:j.path,basePath:i?.cwd??null,agentId:s??null,sessionId:n??null,className:"s-observe-file-path",children:j.path}),t.jsxs("span",{className:"s-observe-file-touches",children:["×",j.touches]})]},j.path))})]}),t.jsxs("div",{children:[t.jsx("div",{className:"s-observe-rail-label",children:"Usage"}),k.length>0&&t.jsx("div",{className:"s-observe-stats s-observe-stats--usage",children:k.map(j=>t.jsx(H,{label:j.label,value:U(j.value)},j.label))}),T.length>0?t.jsx(xe,{rows:T,agentId:s??null,sessionId:n??null}):!g&&k.length===0?t.jsx(pe,{}):null]}),t.jsxs("div",{children:[t.jsx("div",{className:"s-observe-rail-label",children:"Metadata"}),w.length>0?t.jsx(xe,{rows:w,agentId:s??null,sessionId:n??null}):N?null:t.jsx(pe,{})]})]})}function kn({conversationId:e,agentId:s,sessionId:n,invoke:a}){const{navigate:r}=Ne(),[o,l]=h.useState(""),[u,c]=h.useState(!1),[f,p]=h.useState(null),[y,m]=h.useState(null),[i,d]=h.useState(()=>e?.trim()||null),x=h.useRef(null);h.useEffect(()=>{d(e?.trim()||null)},[e]);const A=s?.trim()||null,D=n?.trim()||null,L=!!(A&&D),B=!!(a?.projectPath&&a?.sessionId),R=!!(i||L||B),_=R&&o.trim().length>0&&!u,W=async()=>{const b=o.trim();if(!(!b||u)){if(!i&&!L&&!B){m("No writable session target is attached yet.");return}c(!0),p(null),m(null);try{if(i)await ye("/api/send",{method:"POST",body:JSON.stringify({body:b,conversationId:i,intent:"steer"})}),l(""),p("Sent into this session."),x.current?.focus();else if(L){const T=(await Ms({agentId:A,sessionId:D,instructions:b})).conversationId?.trim();T&&d(T),l(""),p("Sent into this session."),x.current?.focus()}else{const T=(await Ws({projectPath:a.projectPath,sessionId:a.sessionId,...a.harness?{harness:a.harness}:{},...a.model?{model:a.model}:{},...a.reasoningEffort?{reasoningEffort:a.reasoningEffort}:{},instructions:b})).conversationId?.trim();l(""),T?(d(T),p("Session invoked — opening conversation."),r({view:"conversation",conversationId:T})):(p("Session invoked."),x.current?.focus())}}catch(k){m(k instanceof Error?k.message:String(k))}finally{c(!1)}}};return t.jsx("div",{className:"s-observe-compose",children:t.jsx(Gs,{renderWhenEmbedded:!0,density:"panel",value:o,onChange:l,onSend:()=>{W()},sending:u,disabled:!R||u,canSend:_,placeholder:R?!i&&!L&&B?"Message this session to invoke it…":"Write into this session…":"This trace is read-only",textareaRef:x,rows:3,showAttach:R,onAttach:()=>x.current?.focus(),attachTitle:"Add context",attachAriaLabel:"Add context",sendTitle:"Send into this session (Cmd+Enter)",sendAriaLabel:"Send into this session",tools:R?y?t.jsx("span",{className:"s-observe-compose-status s-observe-compose-status--error",children:y}):f?t.jsx("span",{className:"s-observe-compose-status",children:f}):null:t.jsx("span",{className:"s-observe-compose-status s-observe-compose-status--muted",children:"No broker conversation or resumable agent session is attached to this trace."})})})}function yn({data:e,agentId:s,sessionId:n,conversationId:a,observeSource:r,observeFidelity:o,showRail:l=!0,variant:u="default",traceLimit:c,traceWindowMs:f,traceWindowLabel:p,nowMs:y,initialCursorT:m,focusEventId:i,inlineFocusEventId:d,inlineFocusContent:x,onLaneEventSelect:A,surface:D="scout",laneGutter:L,richSimpleTools:B,laneCollapseTechnicalEvents:R,onLaneCollapseTechnicalEventsChange:_,laneOperatorName:W}){const b=u==="lane",k=D==="scope",T=L??(k?"label-time":"time"),v=B??k,w=l&&!k,g=e??hs,{events:N}=g,S=r??(g.live?"live":"history"),E=ts({source:S,fidelity:o??"timestamped",live:g.live,eventCount:N.length}),$=g.metadata?.session?.sessionStart,[O,j]=h.useState(Date.now),V=typeof y=="number"?y:O;h.useEffect(()=>{if(!b||typeof y=="number")return;const C=setInterval(()=>j(Date.now()),1e4);return()=>clearInterval(C)},[b,y]);const P=N.length>0?N[N.length-1].t+30:60,Z=typeof m=="number"?Math.max(0,Math.min(P,m)):null,[re,oe]=h.useState(()=>Z??P),[fe,J]=h.useState(!1),[le,bs]=h.useState(1),[be,Y]=h.useState(Z==null),$e=h.useRef(P),Le=h.useRef(null),Q=h.useMemo(()=>fn(N,P),[N,P]);h.useEffect(()=>{Z!=null&&(oe(Z),Y(!1),J(!1))},[Z,i]),h.useEffect(()=>{oe(C=>{const F=$e.current;$e.current=P;const z=De(C,F);return C>P||z&&be?P:C})},[P,be]),h.useEffect(()=>{if(!fe)return;const C=Q.length>0?Math.max(220,700/le):100,F=setInterval(()=>{oe(z=>{if(Q.length>0){const ue=ms(z,Q,P);return ue>=P?(Y(!0),J(!1),P):ue}const ce=z+le;return ce>=P?(Y(!0),J(!1),P):ce})},C);return()=>clearInterval(F)},[fe,P,Q,le]);const ee=b&&!!(f&&f>0),se=(()=>{let C=N.filter(F=>F.t<=re);if(ee&&f){const F=Ss(C,$,V,f);C=F.length>=Oe?F:C.slice(-Oe)}else b&&c&&c>0&&(C=C.slice(-c));return C})(),X=h.useMemo(()=>{if(!ee||!f)return null;const C=se[0]?.id,F=C===void 0?Ts(N,$,V,f):Math.max(0,N.findIndex(z=>z.id===C));return $s(se,$,V,f,F)},[N,V,$,f,ee,se]);h.useLayoutEffect(()=>{if(b||!i)return;const C=Le.current;if(!C)return;const F=C.querySelector('[data-focus-group="true"]')??C.querySelector(`[data-event-id="${i}"]`),z=F?.closest(".s-observe-main");if(F&&z){const ce=z.getBoundingClientRect(),ue=F.getBoundingClientRect(),js=z.scrollTop+(ue.top-ce.top)-16;z.scrollTo({top:Math.max(0,js),behavior:"instant"});return}F?.scrollIntoView({block:"start",behavior:"instant"})},[i,d,b,se.length]);const ie=De(re,P)&&be,vs=ie?"tail":fe?"playing":"paused",ps=h.useCallback(C=>{Y(!1),J(!1),oe(C)},[]),xs=h.useCallback(()=>{ie?(Y(!1),J(!1)):(Y(!1),J(C=>!C))},[ie]),G=g.metadata?.session,Ee=G?.threadPath??null,Re=n?.trim()||G?.externalSessionId?.trim()||null,Pe=Ds(G?.adapterType),gs=!s&&G?.cwd&&Re&&Pe?{projectPath:G.cwd,sessionId:Re,harness:Pe,model:G.model,reasoningEffort:G.effort}:null;return t.jsxs("div",{ref:Le,className:["s-observe",(!w||b)&&"s-observe--content-only",b&&"s-observe--lane",b&&T==="label-time"&&"s-observe--lane-gutter-label",k&&"s-observe--scope"].filter(Boolean).join(" "),children:[t.jsxs("main",{className:"s-observe-main",children:[!b&&!k&&t.jsxs("div",{className:"s-observe-evidence-banner","data-tone":E.tone,children:[t.jsx("span",{className:"s-observe-evidence-dot","aria-hidden":"true"}),t.jsxs("span",{children:[t.jsx("strong",{children:E.label}),t.jsx("small",{children:E.detail})]})]}),Ee&&!b&&t.jsx(mn,{path:Ee,basePath:G?.cwd??null,agentId:s??null,sessionId:n??null}),!E.receiptOnly&&!k&&ee&&X?t.jsxs("div",{className:"s-observe-lane-trace-meta",children:[t.jsxs("span",{className:"s-observe-lane-trace-meta-leading",children:[t.jsx("span",{className:"s-observe-lane-trace-meta-label",children:"Trace"}),t.jsx(Jt,{collapseTechnicalEvents:!!R,onChange:_})]}),t.jsxs("span",{className:"s-observe-lane-trace-meta-stats",children:[t.jsxs("span",{className:"s-observe-lane-trace-meta-window",children:["last ",p??Ae(f??0)]}),t.jsx("span",{className:"s-observe-lane-trace-meta-sep","aria-hidden":"true",children:"·"}),t.jsxs("span",{children:[X.eventCount," event",X.eventCount===1?"":"s"]}),X.spanMs>0?t.jsxs(t.Fragment,{children:[t.jsx("span",{className:"s-observe-lane-trace-meta-sep","aria-hidden":"true",children:"·"}),t.jsxs("span",{children:[Ae(X.spanMs)," span"]})]}):null,X.truncatedBefore?t.jsx("span",{className:"s-observe-lane-trace-meta-tag",title:"Earlier activity in this window may not be loaded",children:"partial"}):null]})]}):null,E.receiptOnly?t.jsx(Us,{events:N}):t.jsx(cn,{events:se,followEnd:ie,laneMode:b,sessionStartMs:$,nowMs:V,preferWallAge:ee,focusEventId:i,inlineFocusEventId:d,inlineFocusContent:x,onLaneEventSelect:A,laneGutter:T,richSimpleTools:v,collapseTechnicalEvents:b&&!!R,laneOperatorName:W})]}),w&&!b&&t.jsx(fs,{data:g,agentId:s,sessionId:n,cursor:re,duration:P,observeSource:r,observeFidelity:o}),!k&&!b&&t.jsxs("footer",{className:"s-observe-scrubber",children:[E.replayable?t.jsx(xn,{events:N,duration:P,cursor:re,mode:vs,speed:le,snapTimes:Q,onCursor:ps,onPlayToggle:xs,onSpeedChange:bs}):t.jsxs("div",{className:"s-observe-static-evidence",children:[t.jsx("span",{className:"s-observe-evidence-dot","aria-hidden":"true"}),t.jsx("span",{children:E.label}),t.jsx("small",{children:"No timestamped replay is available."})]}),t.jsx(kn,{conversationId:a,agentId:s,sessionId:n,invoke:gs})]})]})}const Qn=Object.freeze(Object.defineProperty({__proto__:null,SessionObserve:yn,SessionObserveContextRail:fs},Symbol.toStringTag,{value:"Module"}));export{yn as S,fs as a,Qn as b,ts as d,Zn as h};
@@ -1 +0,0 @@
1
- import{j as s}from"./index-C1VaWNuD.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};
@@ -1 +0,0 @@
1
- import{r as c,j as e}from"./index-C1VaWNuD.js";import{a as g}from"./api-Co9aQ2Jw.js";import{u as k}from"./sse-B29iGBnw.js";import{u as I}from"./tail-events-LK29oCKm.js";import{B as N}from"./BackToPicker-BHicJyfc.js";import{ConversationScreen as S}from"./ConversationScreen-DIU7m_aC.js";import{S as R,a as y}from"./SessionObserve-BVeTkcIl.js";import{c as w,a as E,b as T,s as u}from"./session-ref-lookup-state-SATH_jAP.js";/* empty css */import"./perf-PX8Rx0EP.js";import"./index-BWHgHrtv.js";import"./router-kfcaYqZr.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-Bdt2W3Y4.js";import"./NewChatComposer-D2Ah4T-W.js";import"./runtime-picker-C20lTGhV.js";import"./scout-voice-Cg1qfepC.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-DmUG_YC7.js";import"./createLucideIcon-Dv8H8m7J.js";import"./conversation-model-C2KuZUXc.js";import"./colors-BtO5_zlx.js";import"./time-Dhsh_2EG.js";import"./index-Cx6Gbr6n.js";import"./HarnessMark-DttReffF.js";import"./NewChatOrigin-DCn5cWPZ.js";import"./keyboard-nav-B8sQ_8IF.js";import"./x-DgmmnPKt.js";import"./chevron-down-D120PY4g.js";import"./search-FB2vVxCp.js";import"./file-text-BHro8MkG.js";import"./ConversationComposer-BUIjWMBi.js";import"./AgentAvatar-Dz79iTxB.js";import"./Provider-D0bB7q6y.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-D7kGGyK_.js";import"./model-CBkMvT1w.js";import"./DocumentFocusViewer-D8iB6SMt.js";import"./TextDocumentSurface-2X1Gw4eA.js";import"./chevron-right-CowuvuE6.js";import"./code-xml-CkkNdRmu.js";import"./arrow-left-eToA6GxC.js";import"./arrow-right-DTX42clh.js";import"./chunk-HRAB3GC3-KjjrTLCU.js";import"./SpriteAvatar-DFO4Kb4Z.js";import"./CrewAvatar-CZ_faQ_s.js";import"./zap-Bcja1lHG.js";import"./message-markup-DC0QFEZn.js";import"./mentions-BZ5SBMtc.js";import"./AgentDetailCard-8viaEY8b.js";import"./AgentLiveActions-DlSKL60c.js";import"./terminal-takeover-BMeBjBB2.js";import"./openContent-C6XO6kr5.js";import"./eye-C9cGk5z6.js";import"./terminal-UDy4lzV1.js";import"./message-visibility-CGOmSSKs.js";import"./operator-attention-RqieiSY8.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-Bt2RBj93.js";import"./AstronautSuit-CwB4Dw07.js";import"./ConversationFeedRows-Bx0gFyG_.js";import"./ConversationPanels-o6W-cOoU.js";import"./tail-display-DcliDVkW.js";import"./lane-edit-display-C_Aujldz.js";import"./use-reduced-motion-CPoX8iV2.js";import"./proxy-DVDRhSRR.js";import"./activity-CzTJ-YMX.js";import"./message-circle-joGFxfj1.js";import"./ConversationStatus-CTYOywFh.js";import"./check-Dz2SRHft.js";import"./sparkles-D0vWLTyC.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-t7-XJP-h.js";import"./lane-observe-vfyACHi0.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-CJVqIqQ2.js";import"./ObserveTextFlow-DCJ5EmD8.js";import"./SessionObserveEvidence-BkOezTGV.js";import"./wrench-BfVeded5.js";import"./external-link-BvX5PfLh.js";function v(r){const o=r?.trim()??"",t=o.split(/[\\/]/).filter(Boolean).at(-1)??o;return t.endsWith(".jsonl")?t.slice(0,-6):t}function C(r){return r.startsWith("native:process:")}function x(r){const[o,t]=c.useState(()=>({sessionRef:r,lookup:null,loading:!0,error:null})),n=c.useRef(null),m=c.useRef(null);m.current||(m.current=w(l=>g(`/api/session-ref/${encodeURIComponent(l)}`),({sessionRef:l,result:a})=>{if(a.ok){t({sessionRef:l,lookup:a.lookup,loading:!1,error:null});return}t({sessionRef:l,lookup:null,loading:!1,error:a.error instanceof Error?a.error.message:String(a.error)})}));const s=c.useCallback(async()=>{await m.current.request(r)},[r]);c.useEffect(()=>(t({sessionRef:r,lookup:null,loading:!0,error:null}),s(),()=>{m.current?.invalidate(),n.current&&(clearTimeout(n.current),n.current=null)}),[s,r]);const{lookup:i,loading:d,error:p}=E(o,r),f=c.useCallback(()=>{n.current||(n.current=setTimeout(()=>{n.current=null,s()},1e3))},[s]);return k(l=>{const a=[r,i?.refId,i?.kind==="conversation"?i.conversationId:null,i?.session?.agentId,i?.kind==="observe"?i.observe.agentId:null,i?.kind==="observe"?i.observe.sessionId:null];T(l,a)&&f()}),I(l=>{const a=v(l.sessionId),j=v(r),h=i?.kind==="observe"?v(i.observe.sessionId??i.observe.refId):"",b=i?.kind==="observe"?v(i.observe.data.metadata?.session?.externalSessionId):"";!u(a,j)&&(!h||!u(a,h))&&(!b||!u(a,b))||f()}),c.useEffect(()=>()=>{n.current&&clearTimeout(n.current)},[]),{lookup:i,loading:d,error:p}}function ls({sessionRef:r}){const{lookup:o,loading:t,error:n}=x(r);return o?.kind==="observe"?e.jsx(y,{data:o.observe.data,agentId:o.observe.agentId??o.session?.agentId??void 0,sessionId:o.observe.sessionId??o.observe.refId,surface:"context",observeSource:o.observe.source,observeFidelity:o.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:o?.kind==="conversation"?"Conversation":"Session context"}),e.jsx("div",{className:"s-observe-empty",children:t?"Resolving session reference":n?"Session context unavailable":"No observe context captured for this session"})]})})}function cs({sessionRef:r,navigate:o,renderBeforeContent:t,showObserveRail:n=!0,onLookup:m}){const{lookup:s,loading:i,error:d}=x(r);if(c.useEffect(()=>{s&&m?.(s)},[s,m]),s?.kind==="conversation")return e.jsxs(e.Fragment,{children:[t?.(s),e.jsx(S,{conversationId:s.conversationId,navigate:o})]});if(s?.kind==="observe")return e.jsxs(e.Fragment,{children:[t?.(s),e.jsx(R,{data:s.observe.data,agentId:s.observe.agentId??s.session?.agentId??void 0,sessionId:s.observe.sessionId??s.observe.refId,conversationId:s.session?.id??null,showRail:n,observeSource:s.observe.source,observeFidelity:s.observe.fidelity})]});if(i)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:r.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 p=C(r);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:p?"Process trace unavailable":"Session not found"}),e.jsx("span",{className:"s-meta s-tabular",children:r.slice(0,8)})]}),e.jsx("p",{className:"s-thread-overview-summary",children:p?"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."}),d&&e.jsx("p",{className:"s-session-ref-error-detail",children:d}),e.jsx("div",{className:"s-session-ref-nav-hint",children:e.jsx(N,{slot:"sessions",fallback:{view:"sessions"},navigate:o})})]})})})}export{ls as SessionRefContextRail,cs as SessionRefScreen};
@@ -1 +0,0 @@
1
- import{j as r}from"./index-C1VaWNuD.js";import{RawSessionsTable as t}from"./RawSessionsTable-CzGhEdiZ.js";/* empty css */import"./DataTable-C6aMSilS.js";/* empty css */import"./api-Co9aQ2Jw.js";import"./perf-PX8Rx0EP.js";import"./time-Dhsh_2EG.js";import"./tail-events-LK29oCKm.js";import"./index-BWHgHrtv.js";import"./openContent-C6XO6kr5.js";import"./Provider-D0bB7q6y.js";import"./router-kfcaYqZr.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-Bdt2W3Y4.js";import"./sse-B29iGBnw.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-D7kGGyK_.js";import"./NewChatComposer-D2Ah4T-W.js";import"./runtime-picker-C20lTGhV.js";import"./scout-voice-Cg1qfepC.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-DmUG_YC7.js";import"./createLucideIcon-Dv8H8m7J.js";import"./conversation-model-C2KuZUXc.js";import"./index-Cx6Gbr6n.js";import"./HarnessMark-DttReffF.js";import"./NewChatOrigin-DCn5cWPZ.js";import"./keyboard-nav-B8sQ_8IF.js";import"./x-DgmmnPKt.js";import"./chevron-down-D120PY4g.js";import"./search-FB2vVxCp.js";import"./file-text-BHro8MkG.js";import"./model-CBkMvT1w.js";import"./DocumentFocusViewer-D8iB6SMt.js";import"./TextDocumentSurface-2X1Gw4eA.js";import"./chevron-right-CowuvuE6.js";import"./code-xml-CkkNdRmu.js";import"./arrow-left-eToA6GxC.js";import"./arrow-right-DTX42clh.js";import"./chunk-HRAB3GC3-KjjrTLCU.js";function U({navigate:o}){return r.jsx(t,{navigate:o})}export{U as SessionsScreen};
@@ -1,3 +0,0 @@
1
- import{w as X,l as je,n as ye,C as se,r as c,q as fe,j as e,u as te,a5 as Se,v as Ne}from"./index-C1VaWNuD.js";import{a as we,h as ke}from"./router-kfcaYqZr.js";import{a as W}from"./api-Co9aQ2Jw.js";import{g as Ce,a as Ae,e as Ee,s as Te,b as Re,d as Oe,c as $e}from"./credentials-BTce3VP1.js";import{u as J,N as Ie,V as Pe,W as Le,X as Me}from"./Provider-D0bB7q6y.js";import{t as De}from"./time-Dhsh_2EG.js";import{j as Ve,k as _e,l as ze}from"./scout-voice-Cg1qfepC.js";import{u as He}from"./keyboard-nav-B8sQ_8IF.js";import{C as Q}from"./CrewAvatar-CZ_faQ_s.js";import{C as Fe}from"./CastPicker-CkgTalIt.js";import{p as ae}from"./AgentAvatar-Dz79iTxB.js";import{S as ne}from"./SpriteAvatar-DFO4Kb4Z.js";import{VoiceHostStatusBanner as Be,VoicePermissionsPanel as Ue}from"./VoicePermissionsPanel-C4vkU-sU.js";import{u as Ke}from"./chunk-HRAB3GC3-KjjrTLCU.js";import{C as _}from"./check-Dz2SRHft.js";import{c as ee}from"./createLucideIcon-Dv8H8m7J.js";import{R as We}from"./refresh-cw-Bkh7Cvnd.js";import{C as qe}from"./copy-BzdzWsQd.js";import{b as Ge}from"./DocumentFocusViewer-D8iB6SMt.js";import{S as Ye}from"./sparkles-D0vWLTyC.js";const Xe=[["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"}]],Ze=ee("monitor",Xe);const Qe=[["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"}]],Je=ee("moon",Qe);const es=[["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"}]],ss=ee("sun",es);function ts(a){const[s,n]=c.useState(0),i=c.useRef([]);return c.useEffect(()=>{if(a<3||typeof window>"u"||window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;const u=()=>{i.current.push(window.setTimeout(()=>{n(1),i.current.push(window.setTimeout(()=>n(2),40)),i.current.push(window.setTimeout(()=>n(1),90)),i.current.push(window.setTimeout(()=>{n(0),u()},130))},2600+Math.random()*4200))};u();const h=i.current;return()=>{h.forEach(v=>window.clearTimeout(v)),h.length=0}},[a]),a<3?0:s}function as({slug:a,open:s=!1,onToggle:n,coin:i=56,figure:u=240,hue:h,state:v="idle",interactive:p=!0,className:y,style:d,children:o}){const t=a.toLowerCase(),l=se[t]??se.milo,g=je[t],w=X.find(V=>V.slug===t)??X[0],O=ts(g?g.roles.length+1:1),x=g&&O>0?ye[O]?.role:void 0,[S,A,P]=l.coin,f=i/P,I=u*l.w/l.h,E=u/l.h,L=s?I:i,R=s?u:i,z=s?I:l.w*f,H=s?u:l.h*f,D=s?0:-S*f,r=s?0:-A*f,b=c.useMemo(()=>fe(h??null,l.ink),[h,l.ink]),M=g?g.patch[2]*(s?E:f):0,F=g?g.patch[3]*(s?E:f):0,G=g?(s?0:D)+g.patch[0]*(s?E:f):0,Y=g?(s?0:r)+g.patch[1]*(s?E:f):0;return e.jsxs("div",{className:`xc-stage-wrapper ${y||""}`,style:d,"data-open":s?"true":"false",children:[e.jsxs("div",{className:"xc-stage",role:p?"button":void 0,tabIndex:p?0:void 0,"aria-label":`${w.name} (${s?"Full body breakout":"Coin disc"})`,onClick:p?n:void 0,onKeyDown:p&&n?V=>{(V.key==="Enter"||V.key===" ")&&(V.preventDefault(),n())}:void 0,style:{width:L,height:R,borderRadius:s?"16px":"50%"},children:[e.jsx("span",{className:"xc-stage-ground",style:{background:b,opacity:s?.92:1,borderRadius:s?"16px":"50%"}}),e.jsx("img",{src:te(`${t}-bust.webp`),alt:w.name,className:"xc-stage-img",style:{width:z,height:H,left:D,top:r}}),g&&x&&e.jsx("img",{src:te(`${g.dir}/${x}.webp`),alt:"",className:"xc-stage-patch",style:{width:M,height:F,left:G,top:Y}})]}),o]})}const ns=[195,125,300,45,355,210];function is(a){return`oklch(0.80 0.14 ${a})`}function j({label:a,right:s}){return e.jsxs("div",{className:"s-settings-section-rule",children:[e.jsx("span",{className:"s-settings-section-label",children:a}),e.jsx("span",{className:"s-settings-section-line"}),s&&e.jsx("span",{className:"s-settings-section-right",children:s})]})}function k({label:a,hint:s,children:n}){return e.jsxs("div",{className:"s-settings-field",children:[e.jsx("label",{className:"s-settings-field-label",children:a}),n,s&&e.jsx("span",{className:"s-settings-field-hint",children:s})]})}function B({value:a,onChange:s,mono:n}){return e.jsx("input",{className:`s-settings-input${n?" s-settings-input--mono":""}`,value:a,onChange:i=>s(i.target.value)})}function ie({value:a,onChange:s,rows:n=3}){return e.jsx("textarea",{className:"s-settings-textarea",value:a,onChange:i=>s(i.target.value),rows:n})}function ls({value:a,onChange:s,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:a,onChange:v=>s(Number(v.target.value))}),e.jsxs("span",{className:"s-settings-slider-value",children:[a," ",h]})]})}function U({value:a,onChange:s,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${a===h.id?" s-settings-option-btn--active":""}`,onClick:()=>s(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 rs=[{id:"system",label:"System",sub:"Follow this device",icon:Ze},{id:"light",label:"Light",sub:"Bright workspace",icon:ss},{id:"dark",label:"Dark",sub:"Low-light workspace",icon:Je}],os=[{id:"scout",label:"Scout",sub:"Control-room navigation"},{id:"slack",label:"Slack",sub:"Workspace rail and channel-style lists"}],le=[{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"}],re=[{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"}],oe=[{id:"soft",label:"Soft",sub:"Quiet separators"},{id:"balanced",label:"Defined",sub:"Clear structure"},{id:"strong",label:"Strong",sub:"High separation"}],ce=[{id:"theme",label:"Theme"},{id:"lime",label:"Lime"},{id:"cyan",label:"Cyan"},{id:"violet",label:"Violet"},{id:"amber",label:"Amber"}],cs=[{id:"crew",label:"Crew Cast",sub:"Rendered character art with 4-slot status ring & eye animation",spec:"4-SLOT CAST"},{id:"sprite",label:"Generative",sub:"Deterministic 7×7 creatures from name hashes",spec:"PRNG VECTOR"},{id:"chip",label:"Pixel Chip",sub:"Pixel portraits of the chip cast; everyone else stays generative",spec:"PIXEL ART"}],de=cs,ue=[{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"}],ds=["milo","vex","sprout"];function Z({className:a,theme:s,template:n,palette:i,contrast:u,accent:h,children:v}){return e.jsx("div",{className:a,"data-scout-theme":s,"data-scout-theme-mode":s,"data-scout-palette":i,"data-scout-contrast":u,"data-scout-accent":h,"data-hudson-theme":s,"data-hudson-template":n,children:v})}function us({palette:a,theme:s,template:n}){return e.jsxs(Z,{className:"s-settings-palette-sample",theme:s,template:n,palette:a,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 hs({theme:a,template:s,palette:n,contrast:i,accent:u}){return e.jsxs(Z,{className:"s-settings-live-preview",theme:a,template:s,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 ms(){const a=Ke(),{appearanceDetails:s,updateAppearanceDetails:n}=J();if(!a)return e.jsx("div",{className:"s-settings-inline-note",children:"Theme controls are unavailable in this embedded surface."});const i=a.resolvedTheme??"dark",u=Se(a.template)??"hudson",h=le.find(t=>t.id===s.palette)?.label??"Scout",v=re.find(t=>t.id===u)?.label??"Rounded",p=oe.find(t=>t.id===s.contrast)?.label??"Defined",y=ce.find(t=>t.id===s.accent)?.label??"Theme",d=de.find(t=>t.id===s.avatarStyle)?.label??"Generative",o=ue.find(t=>t.id===s.avatarSize)?.label??"Regular";return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(j,{label:"App layout",right:`currently ${s.shell}`}),e.jsx("div",{className:"s-settings-shell-grid",role:"group","aria-label":"App layout",children:os.map(t=>{const l=s.shell===t.id;return e.jsxs("button",{type:"button",className:"s-settings-shell-choice","data-shell":t.id,"data-active":l||void 0,"aria-pressed":l,onClick:()=>n({shell:t.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:t.label}),l?e.jsx(_,{className:"s-settings-theme-check",size:15,"aria-hidden":!0}):null]}),e.jsx("small",{children:t.sub})]})]},t.id)})}),e.jsx(j,{label:"Color mode",right:`currently ${i}`}),e.jsx("div",{className:"s-settings-theme-mode-grid",role:"group","aria-label":"Color mode",children:rs.map(t=>{const l=t.icon,g=a.theme===t.id,w=t.id==="system"?`Follow this device · resolves to ${a.resolvedTheme??"…"}`:t.sub;return e.jsxs("button",{type:"button",className:"s-settings-theme-mode","data-active":g||void 0,"aria-pressed":g,onClick:()=>a.setTheme(t.id),children:[e.jsx(l,{size:18,strokeWidth:1.7,"aria-hidden":!0}),e.jsxs("span",{children:[e.jsx("strong",{children:t.label}),e.jsx("small",{children:w})]}),g?e.jsx(_,{className:"s-settings-theme-check",size:15,"aria-hidden":!0}):null]},t.id)})}),e.jsxs("div",{className:"s-settings-appearance-workbench",children:[e.jsxs("div",{className:"s-settings-appearance-controls",children:[e.jsx(j,{label:"Color theme",right:`currently ${h.toLowerCase()}`}),e.jsx("div",{className:"s-settings-palette-grid",role:"group","aria-label":"Color theme",children:le.map(t=>{const l=s.palette===t.id;return e.jsxs("button",{type:"button",className:"s-settings-palette-choice","data-active":l||void 0,"aria-pressed":l,onClick:()=>n({palette:t.id}),children:[e.jsx(us,{palette:t.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:t.label}),l?e.jsx(_,{className:"s-settings-theme-check",size:15,"aria-hidden":!0}):null]}),e.jsx("small",{children:t.sub}),e.jsx("span",{children:t.spec})]})]},t.id)})}),e.jsx(j,{label:"Interface shape",right:`currently ${v.toLowerCase()}`}),e.jsx("div",{className:"s-settings-interface-grid",role:"group","aria-label":"Interface shape",children:re.map(t=>{const l=u===t.id;return e.jsxs("button",{type:"button",className:"s-settings-interface-choice","data-active":l||void 0,"aria-pressed":l,onClick:()=>a.setTemplate(t.id),children:[e.jsx(Z,{className:"s-settings-shape-sample",theme:i,template:t.id,palette:s.palette,contrast:s.contrast,accent:s.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:t.label}),l?e.jsx(_,{className:"s-settings-theme-check",size:14,"aria-hidden":!0}):null]}),e.jsx("small",{children:t.sub}),e.jsx("span",{children:t.spec})]})]},t.id)})}),e.jsx(j,{label:"Separation",right:`currently ${p.toLowerCase()}`}),e.jsx("div",{className:"s-settings-contrast-grid",role:"group","aria-label":"Interface contrast",children:oe.map(t=>{const l=s.contrast===t.id;return e.jsxs("button",{type:"button",className:"s-settings-contrast-choice","data-active":l||void 0,"aria-pressed":l,onClick:()=>n({contrast:t.id}),children:[e.jsxs("span",{className:"s-settings-contrast-lines","data-level":t.id,"aria-hidden":!0,children:[e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{})]}),e.jsx("strong",{children:t.label}),e.jsx("small",{children:t.sub})]},t.id)})}),e.jsx(j,{label:"Signal accent",right:`currently ${y.toLowerCase()}`}),e.jsx("div",{className:"s-settings-accent-row",role:"group","aria-label":"Signal accent",children:ce.map(t=>{const l=s.accent===t.id;return e.jsxs("button",{type:"button",className:"s-settings-accent-choice","data-accent-option":t.id,"data-active":l||void 0,"aria-pressed":l,"aria-label":`${t.label} accent`,onClick:()=>n({accent:t.id}),children:[e.jsx(Z,{className:"s-settings-accent-dot",theme:i,template:u,palette:s.palette,contrast:s.contrast,accent:t.id,children:e.jsx("i",{})}),e.jsx("span",{children:t.label}),l?e.jsx(_,{size:13,"aria-hidden":!0}):null]},t.id)})}),e.jsx(j,{label:"Avatar system",right:`currently ${d.toLowerCase()}`}),e.jsx("div",{className:"s-settings-avatar-grid",role:"group","aria-label":"Avatar system",children:de.map(t=>{const l=s.avatarStyle===t.id;return e.jsxs("button",{type:"button",className:"s-settings-palette-choice s-settings-avatar-choice","data-active":l||void 0,"aria-pressed":l,onClick:()=>n({avatarStyle:t.id}),children:[e.jsx("div",{className:"s-settings-avatar-preview",children:t.id==="crew"?e.jsx(Q,{slug:"milo",size:38,ring:!1,badge:!1}):t.id==="chip"?e.jsx(Q,{slug:"milo",size:38,chip:!0,ring:!1,badge:!1}):e.jsx(ne,{name:"Milo",size:38})}),e.jsxs("span",{className:"s-settings-choice-copy",children:[e.jsxs("span",{className:"s-settings-choice-title",children:[e.jsx("strong",{children:t.label}),l?e.jsx(_,{className:"s-settings-theme-check",size:14,"aria-hidden":!0}):null]}),e.jsx("small",{children:t.sub}),e.jsxs("span",{children:[t.spec,(()=>{const g=Ne(t.id);return g?` · ${g.covered} of ${g.total} cast`:" · every agent"})()]})]})]},t.id)})}),e.jsx(j,{label:"Avatar size",right:`currently ${o.toLowerCase()}`}),e.jsx("div",{className:"s-settings-avatar-size-row",role:"group","aria-label":"Avatar size",children:ue.map(t=>{const l=s.avatarSize===t.id,g=ae("row",t.id)??24;return e.jsxs("button",{type:"button",className:"s-settings-avatar-size-choice","data-active":l||void 0,"aria-pressed":l,onClick:()=>n({avatarSize:t.id}),children:[e.jsx("span",{className:"s-settings-avatar-size-sample","aria-hidden":!0,children:ds.map(w=>s.avatarStyle==="sprite"?e.jsx(ne,{name:w,size:g},w):e.jsx(Q,{slug:w,size:g,chip:s.avatarStyle==="chip",ring:!1,badge:!1},w))}),e.jsxs("span",{className:"s-settings-choice-title",children:[e.jsx("strong",{children:t.label}),l?e.jsx(_,{className:"s-settings-theme-check",size:14,"aria-hidden":!0}):null]}),e.jsx("small",{children:t.sub}),e.jsx("span",{className:"s-settings-avatar-size-spec",children:`${g}PX ROW · ${ae("inspector",t.id)}PX TILE`})]},t.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, and accent 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(j,{label:"Live specimen",right:i}),e.jsx(hs,{theme:i,template:u,palette:s.palette,contrast:s.contrast,accent:s.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:p})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Accent"}),e.jsx("dd",{children:y})]})]}),e.jsx("p",{className:"s-settings-preview-note",children:"Each control changes one visual axis. Success, warning, and failure colors keep their meaning."})]})]})]})}function gs({profile:a,update:s}){const{appearanceDetails:n,updateAppearanceDetails:i}=J(),[u,h]=c.useState(n.operatorCharacter||"milo"),v=u,[p,y]=c.useState(!0),d=X.find(t=>t.slug.toLowerCase()===v.toLowerCase())??X[0],o=t=>{h(t),i({operatorCharacter:t})};return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(j,{label:"Operator Character Stage",right:"cast mascot & identity"}),e.jsxs("div",{className:"s-settings-stage-hero-card","data-open":p?"true":"false",children:[e.jsxs("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:p?"FULL FIGURE BREAKOUT":"COIN DISC FRAMING"})]}),e.jsx("button",{type:"button",className:"s-settings-stage-toggle-btn",onClick:()=>y(t=>!t),title:p?"Collapse to coin framing":"Break out to full body figure",children:p?e.jsxs(e.Fragment,{children:[e.jsx(Ge,{size:13,"aria-hidden":!0}),e.jsx("span",{children:"Coin Framing"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ye,{size:13,"aria-hidden":!0}),e.jsx("span",{children:"Breakout Figure"})]})})]}),e.jsxs("div",{className:"s-settings-stage-hero-body",children:[e.jsxs("div",{className:"s-settings-stage-art-col",children:[e.jsx(as,{slug:v,open:p,onToggle:()=>y(t=>!t),coin:64,figure:256,state:"working"}),e.jsx("span",{className:"s-settings-stage-click-hint",children:p?"Click avatar to collapse":"Click avatar to break out"})]}),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:d.name}),e.jsx("span",{className:"s-settings-stage-char-title",children:d.title})]}),e.jsx("div",{className:"s-settings-stage-kernel-pill",children:e.jsx("code",{children:d.kernel})}),e.jsx("p",{className:"s-settings-stage-blurb",children:d.blurb}),e.jsxs("div",{className:"s-settings-stage-identity-group",children:[e.jsxs("div",{className:"s-settings-stage-operator-id",children:[e.jsx("strong",{children:a.name||"Operator"}),e.jsxs("span",{children:[a.handle||"@you"," · ",a.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:ns.map(t=>e.jsx("button",{type:"button",onClick:()=>s({hue:t}),className:`s-settings-hue-dot${a.hue===t?" s-settings-hue-dot--active":""}`,style:{background:is(t)},title:`Hue ${t}°`},t))})]})]})]})]})]}),e.jsxs(e.Fragment,{children:[e.jsx(j,{label:"Your character mascot",right:`currently ${d.name.toLowerCase()}`}),e.jsx("div",{className:"s-settings-cast-grid-wrap",children:e.jsx(Fe,{selectedSlug:v,onSelect:o})})]}),e.jsx(k,{label:"Display name",hint:"Shown when agents address you.",children:e.jsx(B,{value:a.name,onChange:t=>s({name:t})})}),e.jsx(k,{label:"Handle",hint:"Used in @mentions across threads.",children:e.jsx(B,{value:a.handle,onChange:t=>s({handle:t}),mono:!0})}),e.jsx(k,{label:"Pronouns",children:e.jsx(B,{value:a.pronouns,onChange:t=>s({pronouns:t})})}),e.jsx(j,{label:"How agents understand you",right:"shipped as system prompt context"}),e.jsx(k,{label:"Operator bio",hint:"How you want to be worked with. Agents read this before asking you things.",children:e.jsx(ie,{value:a.bio,onChange:t=>s({bio:t}),rows:4})}),e.jsxs("div",{className:"s-settings-two-col",children:[e.jsx(k,{label:"Timezone",children:e.jsx(B,{value:a.timezone,onChange:t=>s({timezone:t}),mono:!0})}),e.jsx(k,{label:"Working hours",children:e.jsx(B,{value:a.workingHours,onChange:t=>s({workingHours:t}),mono:!0})})]}),e.jsx(j,{label:"Ephemeral agent names",right:"rotation pool for one-off agents"}),e.jsx(k,{label:"Name pool",hint:a.provisionalAgentNames.length>0?`${a.provisionalAgentNamesResolvedCount} names active (${a.provisionalAgentNamesSource}). Preview: ${a.provisionalAgentNamesPreview.join(", ")}${a.provisionalAgentNamesResolvedCount>a.provisionalAgentNamesPreview.length?", …":""}`:"Leave empty to use Scout's built-in rotation. One short name per line.",children:e.jsx(ie,{value:a.provisionalAgentNames.join(`
2
- `),onChange:t=>s({provisionalAgentNames:t.split(/\r?\n/u).map(l=>l.trim()).filter(Boolean)}),rows:6})}),e.jsx(k,{label:"Pool mode",hint:"Replace uses only your list. Add to defaults prepends yours, then Scout's built-in names.",children:e.jsx(U,{value:a.provisionalAgentNamesMode,onChange:t=>s({provisionalAgentNamesMode:t}),options:[{id:"replace",label:"Replace",sub:"your list only"},{id:"extend",label:"Add to defaults",sub:"yours first, then Scout"}],columns:2})})]})}function ps({profile:a,update:s}){return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(j,{label:"Interrupt policy"}),e.jsx(k,{label:"When agents can ping you directly",hint:"Blocking-only means only asks that truly stall work. Others get batched.",children:e.jsx(U,{value:a.interruptThreshold,onChange:n=>s({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(k,{label:"Batch window (min)",children:e.jsx(ls,{value:a.batchWindow,min:5,max:60,step:5,onChange:n=>s({batchWindow:n}),unit:"min"})}),e.jsx(k,{label:"Quiet hours",children:e.jsx(B,{value:a.quietHours,onChange:n=>s({quietHours:n}),mono:!0})})]}),e.jsx(j,{label:"Where to reach you"}),e.jsx(k,{label:"Preferred channel",children:e.jsx(U,{value:a.channel,onChange:n=>s({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(j,{label:"Tone calibration",right:"how agents write to you"}),e.jsxs("div",{className:"s-settings-two-col",children:[e.jsx(k,{label:"Verbosity",children:e.jsx(U,{stacked:!0,value:a.verbosity,onChange:n=>s({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(k,{label:"Tone",children:e.jsx(U,{stacked:!0,value:a.tone,onChange:n=>s({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 bs({clientCredentials:a,serverCredentials:s,reloadCredentials:n}){const[i,u]=c.useState(""),[h,v]=c.useState(!1),[p,y]=c.useState(null),d=s?.openai??null,o=!!d?.configured,t=d?.source==="env"?"OPENAI_API_KEY":d?.source==="local-config"?"local Scout config":d?.source==="local-store"?"local OpenScout store":"missing",l=d?.source==="local-store"&&a?.configured?"local OpenScout store + HudVault mirror":t,g=d?.preview??a?.preview??null,w=async()=>{v(!0),y(null);try{const x=i.trim();await Te(x);let S=null;try{await Re(x)}catch(A){S=A instanceof Error?A.message:"HudVault save failed."}u(""),await n(),y(S?`Saved to local OpenScout store. Browser mirror failed: ${S}`:"Saved to local OpenScout store and Hudson Vault.")}catch(x){y(x instanceof Error?x.message:"Could not save key.")}finally{v(!1)}},O=async()=>{v(!0),y(null);try{const[x,S]=await Promise.allSettled([Oe(),$e()]);u(""),await n(),x.status==="rejected"||S.status==="rejected"?y("Cleared what I could; one credential store did not respond."):y(d?.source==="env"||d?.source==="local-config"?"Removed saved key. Server fallback is still configured.":"Removed saved key.")}catch(x){y(x instanceof Error?x.message:"Could not clear key.")}finally{v(!1)}};return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(j,{label:"Model providers",right:o?`configured · ${l}`:"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:o?"var(--green)":"var(--dim)"},children:["●"," ",o?"ready":"missing"]})]}),e.jsxs("div",{className:"s-settings-relay-meta",children:[g??"No key stored"," · ",l]}),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(k,{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:o?"Saved key configured":"sk-...",autoComplete:"off",spellCheck:!1,onChange:x=>u(x.target.value)})}),p&&e.jsx("div",{className:"s-settings-field-hint",children:p}),e.jsxs("div",{className:"s-settings-button-row",children:[e.jsx("button",{type:"button",className:"s-btn",disabled:h||!i.trim(),onClick:()=>{w()},children:h?"Saving":"Save key"}),e.jsx("button",{type:"button",className:"s-btn",disabled:h||!(a?.configured||d?.source==="local-store"),onClick:()=>{O()},children:"Clear saved key"})]})]})}const vs=[{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 xs(){const a=ke(Ie,!0),[s,n]=c.useState(null),[i,u]=c.useState(null),[h,v]=c.useState([]),[p,y]=c.useState([]),[d,o]=c.useState(!0),[t,l]=c.useState(!1),[g,w]=c.useState(!1),[O,x]=c.useState(null),S=c.useCallback(async()=>{o(!0);try{const[r,b,M]=await Promise.all([Ve(),_e(12).catch(()=>[]),Pe().catch(()=>null)]);n(r.settings),v(r.devices),y(b),u(M),x(null)}catch(r){x(r instanceof Error?r.message:String(r))}finally{o(!1)}},[]);c.useEffect(()=>{S()},[S]);const A=c.useCallback(async r=>{l(!0),x(null);try{const b=await ze(r);n(b.settings),v(b.devices)}catch(b){x(b instanceof Error?b.message:String(b))}finally{l(!1)}},[]),P=c.useCallback(async r=>{w(!0),x(null);try{const b=await Le(r);u(b),Me(b)}catch(b){x(b instanceof Error?b.message:String(b))}finally{w(!1)}},[]);if(d&&!s)return e.jsx("div",{className:"s-settings-field-hint",children:"Loading voice settings…"});const f=s?.inputDeviceId??h.find(r=>r.isDefault)?.id??"",I=s?.permissions?.find(r=>r.kind==="microphone")??null,E=s?.permissions?.find(r=>r.kind==="speechRecognition")??null,L=(s?.permissions?.length??0)>0||h.length>0,R=a&&i?.enabled===!0,z=g||!a||!i||i.locked,H=a?i?i.locked?`Controlled by OPENSCOUT_REALTIME_VOICE_ENABLED · ${i.enabled?"on":"off"}`:R?"Ready. Use Voice in the footer to start a call.":"Off. No microphone or OpenAI connection runs in the background.":"Live voice settings are temporarily unavailable.":"Unavailable in this build.",D=[L?null:"Scout voice host is offline. Launch Scout Menu on this Mac — the browser does not capture audio.",I?.status==="denied"||I?.status==="restricted"?I?.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.":I?.canRequest?"Microphone has not been requested yet. Request access or tap the mic in chat to show the macOS prompt.":null,!E?.granted&&(E?.status==="denied"||E?.status==="restricted")?E?.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,s?.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(r=>!!r);return e.jsxs("div",{className:"s-settings-col-gap",children:[O&&e.jsx("div",{className:"s-settings-field-hint",style:{color:"var(--amber)"},children:O}),e.jsx(j,{label:"Realtime conversation",right:"operator control"}),e.jsxs("div",{className:"s-settings-realtime-voice","data-enabled":R||void 0,"data-unavailable":!a||void 0,children:[e.jsxs("span",{className:"s-settings-realtime-voice-copy",children:[e.jsx("strong",{children:"Enable live voice on this Scout"}),e.jsx("span",{children:"Allows live conversations with Scoutbot. Microphone audio and OpenAI usage begin only when you explicitly start a call."}),e.jsx("em",{children:H})]}),e.jsxs("button",{type:"button",role:"switch","aria-checked":R,"aria-label":"Enable live voice on this Scout",disabled:z,"data-checked":R||void 0,className:"s-settings-switch",onClick:()=>{P(!R)},children:[e.jsx("span",{className:"s-settings-switch-thumb","aria-hidden":"true"}),e.jsx("span",{className:"sr-only",children:R?"On":"Off"})]})]}),e.jsx(Be,{hostOnline:L,micPermission:I,speechPermission:E,modelReady:s?.modelReady}),e.jsx(j,{label:"Scout Menu permissions",right:"voice host"}),e.jsx(Ue,{permissions:s?.permissions,hostOnline:L,disabled:t||d,onError:r=>x(r),onRefresh:S}),e.jsx(j,{label:"Transcription"}),e.jsx(k,{label:"Engine",hint:s?.modelReady?"Parakeet is warm and ready.":s?.modelInstalled?"Parakeet is installed; first dictation may warm the model.":"Parakeet downloads on first use. Apple Speech stays available meanwhile.",children:e.jsx(U,{value:s?.preference??"auto",onChange:r=>{n(b=>b&&{...b,preference:r}),A({preference:r})},options:vs,columns:3})}),e.jsx(k,{label:"Microphone input",hint:"Scout Menu uses the macOS system default input unless you pick a device here. The browser never captures audio.",children:h.length>0?e.jsx("select",{className:"s-settings-input",value:f,disabled:t,onChange:r=>{const b=r.target.value||null;n(M=>M&&{...M,inputDeviceId:b,inputDeviceName:h.find(F=>F.id===b)?.name??null}),A({inputDeviceId:b})},children:h.map(r=>e.jsxs("option",{value:r.id,children:[r.name,r.isDefault?" (system default)":""]},r.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(j,{label:"Diagnostics"}),e.jsx("ul",{className:"s-settings-field-hint",style:{margin:0,paddingLeft:"1.1rem",display:"grid",gap:"0.35rem"},children:D.map(r=>e.jsx("li",{children:r},r))}),e.jsx(j,{label:"Recent sessions",right:p.length?`${p.length} shown`:"none"}),p.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:p.map(r=>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:[r.status," · ",r.lastEvent??"started"]}),e.jsxs("div",{className:"s-settings-device-meta",children:[r.surface," · ",De(r.updatedAt),r.error?` · ${r.error}`:""]}),r.lastTranscript?e.jsx("div",{className:"s-settings-field-hint",style:{marginTop:"0.2rem"},children:r.lastTranscript.length>96?`${r.lastTranscript.slice(0,96)}…`:r.lastTranscript}):null]})},r.sessionId))}),e.jsx("div",{className:"s-settings-button-row",children:e.jsx("button",{type:"button",className:"s-btn",disabled:d||t,onClick:()=>{S()},children:d?"Refreshing…":"Refresh"})})]})}const js={desktop:"◻",mobile:"▯",tablet:"▭"};function ys({device:a}){const s=a.status==="this-device"?"var(--accent)":a.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:js[a.kind]??"□"}),e.jsxs("div",{children:[e.jsx("div",{className:"s-settings-device-name",children:a.name}),e.jsxs("div",{className:"s-settings-device-meta",children:[a.kind," · via ",a.relay," · ",a.lastSeen]})]}),e.jsxs("span",{className:"s-settings-device-status",style:{color:s},children:["●"," ",a.status==="this-device"?"this device":a.status]}),e.jsx("button",{className:"s-btn",disabled:a.status==="this-device",children:a.status==="this-device"?"—":"Unpair"})]})}function fs({pairing:a}){const s=[{id:"local",name:"This machine",kind:"desktop",status:"this-device",relay:"local",lastSeen:"now"}];if(a?.trustedPeers)for(const n of a.trustedPeers){const i=n.fingerprint===a.connectedPeerFingerprint;s.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(j,{label:`Paired devices · ${s.length}`}),e.jsx("div",{className:"s-settings-col-gap",style:{gap:10},children:s.map(n=>e.jsx(ys,{device:n},n.id))}),e.jsx(j,{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:a?.isRunning?"var(--green)":"var(--dim)"},children:["●"," ",a?.isRunning?"connected":"offline"]})]}),e.jsxs("div",{className:"s-settings-relay-meta",children:[a?.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 q(a,s,n=!1){if(!a&&!s)return"Not reported";const i=a||"detached";return s?`${i} @ ${s}${n?" (modified)":""}`:i}function ge(){return navigator.userAgentData?.platform||navigator.platform||"Unknown"}function C({label:a,value:s,detail:n}){return e.jsxs("div",{className:"s-settings-about-fact",children:[e.jsx("dt",{children:a}),e.jsxs("dd",{children:[e.jsx("code",{children:s}),n?e.jsx("span",{children:n}):null]})]})}function he(a){const{build:s,mesh:n}=a,i=n?.health.build??null,u=n?.localNode?n.nodes[n.localNode.id]?.host:void 0,h=ge();return["OpenScout troubleshooting report",`Collected: ${a.collectedAt.toISOString()}`,"","[Web]",`Observed: ${a.buildCollectedAt?.toISOString()??"unknown"}`,`Version: ${s?.version??"unknown"}`,`Mode: ${s?.mode??"unknown"}`,`Source: ${q(s?.branch,s?.commit,s?.dirty===!0)}`,`Server: ${s?.server?`${s.server.engine} ${s.server.engineVersion}`:"unknown"}`,`Server platform: ${s?.server?`${s.server.platform}/${s.server.arch}`:"unknown"}`,"","[Broker]",`Observed: ${a.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: ${q(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??s?.server?.arch??"unknown"}`,"","[Browser]",`Platform: ${h}`,`User agent: ${navigator.userAgent}`,`Origin: ${window.location.origin}`].join(`
3
- `)}async function Ss(a){if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(a);return}const s=document.createElement("textarea");s.value=a,s.setAttribute("readonly",""),s.style.position="fixed",s.style.opacity="0",document.body.appendChild(s),s.select();const n=document.execCommand("copy");if(s.remove(),!n)throw new Error("Clipboard access is unavailable")}function Ns(){const[a,s]=c.useState(null),[n,i]=c.useState(!0),[u,h]=c.useState(null),[v,p]=c.useState("idle"),y=c.useCallback(async(x=!1)=>{i(!0),h(null),p("idle");const[S,A]=await Promise.allSettled([W(x?"/api/build?refresh=1":"/api/build"),W("/api/mesh")]),P=new Date;if(s(f=>({build:S.status==="fulfilled"?S.value:f?.build??null,mesh:A.status==="fulfilled"?A.value:f?.mesh??null,collectedAt:P,buildCollectedAt:S.status==="fulfilled"?P:f?.buildCollectedAt??null,meshCollectedAt:A.status==="fulfilled"?P:f?.meshCollectedAt??null})),S.status==="rejected"||A.status==="rejected"){const f=[S.status==="rejected"?"web build":null,A.status==="rejected"?"broker":null].filter(Boolean).join(" and ");h(`Could not refresh ${f} details. Last reported values are kept when available.`)}i(!1)},[]);c.useEffect(()=>{y()},[y]);const d=a?.build??null,o=a?.mesh??null,t=o?.health.build??null,l=o?.localNode?o.nodes[o.localNode.id]?.host:void 0,g=ge(),w=o===null?"not reported":o.health.reachable?o.health.ok?"healthy":"degraded":"unreachable",O=c.useCallback(()=>{a&&Ss(he(a)).then(()=>{p("copied"),setTimeout(()=>p("idle"),1800)}).catch(()=>{p("error")})},[a]);return n&&!a?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:d?.version?`v${d.version}`:"Version unavailable"}),e.jsxs("span",{className:"s-settings-about-source",children:[d?.mode??"unknown mode"," · ",q(d?.branch,d?.commit,d?.dirty===!0)]}),e.jsxs("span",{className:"s-settings-about-collected",children:["Snapshot collected ",a?.collectedAt.toLocaleString()??"—"]})]}),e.jsxs("div",{className:"s-settings-about-actions",children:[e.jsxs("button",{type:"button",className:"s-btn",onClick:()=>{y(!0)},disabled:n,children:[e.jsx(We,{size:13,"aria-hidden":!0}),n?"Refreshing…":"Refresh"]}),e.jsxs("button",{type:"button",className:"s-btn s-settings-about-copy",onClick:O,disabled:!a,children:[v==="copied"?e.jsx(_,{size:13,"aria-hidden":!0}):e.jsx(qe,{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"&&a?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:he(a),"aria-label":"OpenScout troubleshooting report"})]}):null,e.jsx(j,{label:"Web application",right:"release and source identity"}),e.jsxs("dl",{className:"s-settings-about-ledger",children:[e.jsx(C,{label:"Package version",value:d?.version??"Unknown",detail:`Observed ${a?.buildCollectedAt?.toLocaleString()??"at an unknown time"}. Use this when comparing releases.`}),e.jsx(C,{label:"Run mode",value:d?.mode??"Unknown"}),e.jsx(C,{label:"Source checkout",value:q(d?.branch,d?.commit,d?.dirty===!0),detail:"A dev SHA identifies the running checkout; it is not the release version."}),e.jsx(C,{label:"Server engine",value:d?.server?`${d.server.engine} ${d.server.engineVersion}`:"Not reported",detail:d?.server?`Node compatibility ${d.server.nodeVersion} · ${d.server.platform}/${d.server.arch}`:void 0})]}),e.jsx(j,{label:"Broker",right:w}),e.jsxs("dl",{className:"s-settings-about-ledger",children:[e.jsx(C,{label:"Status",value:w,detail:[`Observed ${a?.meshCollectedAt?.toLocaleString()??"at an unknown time"}.`,o?.health.error].filter(Boolean).join(" ")}),e.jsx(C,{label:"Package",value:t?.packageName??"Not reported"}),e.jsx(C,{label:"Version",value:t?.version??"Not reported"}),e.jsx(C,{label:"Source",value:q(t?.branch,t?.commit)}),e.jsx(C,{label:"Build",value:t?.buildNumber??t?.buildId??"Not reported"}),e.jsx(C,{label:"Node",value:o?.health.nodeId??"Not reported",detail:o?.brokerUrl})]}),e.jsx(j,{label:"Host and browser",right:"troubleshooting context"}),e.jsxs("dl",{className:"s-settings-about-ledger",children:[e.jsx(C,{label:"Host",value:o?.localNode?.name??"Not reported"}),e.jsx(C,{label:"Host Scout",value:l?.scoutVersion??"Not reported"}),e.jsx(C,{label:"Host system",value:[l?.os,l?.arch??d?.server?.arch].filter(Boolean).join(" · ")||"Not reported"}),e.jsx(C,{label:"Browser platform",value:g}),e.jsx(C,{label:"Browser",value:navigator.userAgent}),e.jsx(C,{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 K=[{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"}],me={appearance:"Appearance",operator:"Operator identity",comms:"Communication",voice:"Voice",credentials:"Credentials",devices:"Paired devices",about:"About OpenScout"},ws={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."},ks={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 pe({open:a,onClose:s,section:n,onSectionChange:i,presentation:u}){const{refreshOnboarding:h}=J(),{ref:v,onKeyDown:p}=He(a&&u==="drawer"),[y,d]=c.useState("appearance"),o=n??y,t=c.useCallback(m=>{i?i(m):d(m)},[i]),[l,g]=c.useState(ks),[w,O]=c.useState(null),[x,S]=c.useState(null),[A,P]=c.useState(null),[f,I]=c.useState(!1),[E,L]=c.useState("saved"),R=c.useRef(null),z=c.useRef(!0),H=c.useRef(null);c.useEffect(()=>()=>{z.current=!1},[]);const D=c.useCallback(async()=>{const[m,$]=await Promise.allSettled([Ce(),Ae()]),T=m.status==="fulfilled"?m.value:null;let N=$.status==="fulfilled"?$.value:null;T?.configured&&!N?.openai.configured&&(N=await Ee().catch(()=>N)),S(T),P(N)},[]),r=c.useCallback(async()=>{try{const m=W("/api/user"),$=Promise.race([W("/api/pairing-state"),new Promise((Cs,xe)=>setTimeout(()=>xe(new Error("timeout")),3e3))]),[T,N]=await Promise.allSettled([m,$]);T.status==="fulfilled"&&g(T.value),N.status==="fulfilled"&&O(N.value),await D()}finally{I(!0)}},[D]);c.useEffect(()=>{a&&o!=="appearance"&&o!=="about"&&!f&&r()},[f,a,r,o]),c.useEffect(()=>{if(!a||!window.matchMedia("(max-width: 760px)").matches)return;const m=window.requestAnimationFrame(()=>{H.current?.scrollIntoView({block:"nearest",inline:"nearest"})});return()=>window.cancelAnimationFrame(m)},[a,o]);const b=c.useCallback(m=>{const T=(K.findIndex(N=>N.id===o)+m+K.length)%K.length;t(K[T].id)},[o]),M=c.useCallback(m=>{if(p(m),u==="drawer"&&m.key==="Escape"){m.preventDefault(),s();return}m.target?.closest(".s-settings-rail")&&(m.key==="ArrowDown"?(m.preventDefault(),b(1)):m.key==="ArrowUp"&&(m.preventDefault(),b(-1)))},[b,s,p,u]),F=c.useCallback(m=>{R.current&&clearTimeout(R.current),L("saving"),R.current=setTimeout(()=>{W("/api/user",{method:"POST",body:JSON.stringify(m)}).then(()=>h()).then(()=>{z.current&&L("saved")}).catch(()=>{z.current&&L("error")})},400)},[h]),G=c.useCallback(m=>{g($=>{const T={...$,...m};return F(T),T})},[F]),Y=e.jsx("nav",{className:"s-settings-rail","aria-label":"Settings pages",children:K.map(m=>{const $=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"s-settings-rail-label",children:m.label}),e.jsx("span",{className:"s-settings-rail-sub",children:m.sub})]}),T=`s-settings-rail-btn${o===m.id?" s-settings-rail-btn--active":""}`;return u==="page"?e.jsx("a",{ref:o===m.id?N=>{H.current=N}:void 0,href:we({view:"settings",section:m.id}),"aria-current":o===m.id?"page":void 0,className:T,onClick:N=>{N.button!==0||N.metaKey||N.ctrlKey||N.shiftKey||N.altKey||(N.preventDefault(),t(m.id))},children:$},m.id):e.jsx("button",{ref:o===m.id?N=>{H.current=N}:void 0,onClick:()=>t(m.id),"aria-current":o===m.id?"page":void 0,className:T,children:$},m.id)})}),V=e.jsx("main",{className:"s-settings-content",id:`settings-${o}`,"data-settings-section":o,tabIndex:-1,children:o==="appearance"?e.jsx(ms,{}):o==="about"?e.jsx(Ns,{}):f?e.jsxs(e.Fragment,{children:[o==="operator"&&e.jsx(gs,{profile:l,update:G}),o==="comms"&&e.jsx(ps,{profile:l,update:G}),o==="credentials"&&e.jsx(bs,{clientCredentials:x,serverCredentials:A,reloadCredentials:D}),o==="voice"&&e.jsx(xs,{}),o==="devices"&&e.jsx(fs,{pairing:w})]}):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:me[o]}),e.jsx("p",{children:ws[o]})]}),o==="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":E,role:"status","aria-live":"polite",children:[e.jsx("span",{"aria-hidden":"true"}),E==="saving"?"Saving changes…":E==="error"?"Couldn’t save changes":"Saved automatically"]})]}),e.jsxs("div",{className:"s-settings-page-layout",children:[Y,V]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`s-settings-scrim ${a?"s-settings-scrim--open":"s-settings-scrim--closed"}`,onClick:s}),e.jsxs("div",{ref:v,role:"dialog","aria-modal":"true","aria-label":"Settings",className:`s-settings-drawer ${a?"s-settings-drawer--open":"s-settings-drawer--closed"}`,onKeyDown:M,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:me[o]}),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:s,children:"×"})]}),Y,V,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:s,children:"Done"})]})]})]})}function be(a){return e.jsx(pe,{...a,presentation:"drawer"})}function ve({section:a="appearance",onSectionChange:s}){return e.jsx(pe,{open:!0,onClose:()=>{},section:a,onSectionChange:s,presentation:"page"})}const qs=Object.freeze(Object.defineProperty({__proto__:null,SettingsDrawer:be,SettingsPage:ve},Symbol.toStringTag,{value:"Module"})),Gs=Object.freeze(Object.defineProperty({__proto__:null,SettingsDrawer:be,SettingsPage:ve},Symbol.toStringTag,{value:"Module"}));export{ve as S,qs as a,Gs as b};
@@ -1 +0,0 @@
1
- import{j as i,r as d}from"./index-C1VaWNuD.js";import{E as it}from"./EmptyState-CKPWFSjq.js";import{S as B}from"./StatusPill-BllrY-eg.js";import{a as M}from"./api-Co9aQ2Jw.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-DDc3udYM.js";import{S as At}from"./SettingsDrawer-CPB32w0n.js";/* empty css */import"./perf-PX8Rx0EP.js";import"./CastPicker-CkgTalIt.js";import"./CrewAvatar-CZ_faQ_s.js";import"./HarnessMark-DttReffF.js";import"./check-Dz2SRHft.js";import"./createLucideIcon-Dv8H8m7J.js";import"./NewChatComposer-D2Ah4T-W.js";import"./runtime-picker-C20lTGhV.js";import"./scout-voice-Cg1qfepC.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-DmUG_YC7.js";import"./conversation-model-C2KuZUXc.js";import"./colors-BtO5_zlx.js";import"./index-Cx6Gbr6n.js";import"./NewChatOrigin-DCn5cWPZ.js";import"./keyboard-nav-B8sQ_8IF.js";import"./x-DgmmnPKt.js";import"./chevron-down-D120PY4g.js";import"./search-FB2vVxCp.js";import"./file-text-BHro8MkG.js";import"./Provider-D0bB7q6y.js";import"./router-kfcaYqZr.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-Bdt2W3Y4.js";import"./sse-B29iGBnw.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-D7kGGyK_.js";import"./model-CBkMvT1w.js";import"./DocumentFocusViewer-D8iB6SMt.js";import"./TextDocumentSurface-2X1Gw4eA.js";import"./chevron-right-CowuvuE6.js";import"./code-xml-CkkNdRmu.js";import"./arrow-left-eToA6GxC.js";import"./arrow-right-DTX42clh.js";import"./chunk-HRAB3GC3-KjjrTLCU.js";import"./openContent-C6XO6kr5.js";import"./AgentsSubnav-Ci7uWM7P.js";import"./SecondaryNav-Cs0_FQdj.js";import"./secondaryNavConfig-C0Srrmy8.js";import"./message-square-BLiFqpe_.js";import"./compass-BdpImt_W.js";import"./settings-DQEtqkM9.js";import"./terminal-UDy4lzV1.js";import"./git-branch-Bc_eDIpG.js";import"./scroll-text-DFcBYy5J.js";import"./refresh-cw-Bkh7Cvnd.js";import"./bot-WxKXYtEX.js";import"./wrench-BfVeded5.js";import"./server-WY6gsbZz.js";import"./cpu-CHFIGw87.js";import"./credentials-BTce3VP1.js";import"./AgentAvatar-Dz79iTxB.js";import"./SpriteAvatar-DFO4Kb4Z.js";import"./VoicePermissionsPanel-C4vkU-sU.js";import"./copy-BzdzWsQd.js";import"./sparkles-D0vWLTyC.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,"&amp;").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}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 ws({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{ws as SettingsScreen};
@@ -1 +0,0 @@
1
- import{H as T,r as _,s as H,j as l}from"./index-C1VaWNuD.js";import{n as M}from"./colors-BtO5_zlx.js";const N=7,e=10,R=N*e;function D({name:i,size:n,hue:x,tone:p,salt:t,spectrum:s,tile:h=!1,glow:a,corner:d,cornerPulse:m,className:g,title:f}){const u=_.useMemo(()=>H(i,{hue:x,salt:t,spectrum:s,tone:p}),[i,x,t,s,p?.l,p?.c]),b=a??(n!=null&&n>=40),y={position:"relative",display:"inline-grid",placeItems:"center",...n!=null?{width:n,height:n}:{width:"100%",height:"100%"},borderRadius:h?"26%":void 0,background:h?u.palette.soft:void 0,boxSizing:"border-box"};return l.jsxs("span",{className:g,style:y,title:f,children:[l.jsx(C,{sprite:u,glow:b,inset:h}),d&&l.jsx("span",{"aria-hidden":!0,style:{position:"absolute",right:"-4%",bottom:"-4%",width:"28%",height:"28%",minWidth:6,minHeight:6,borderRadius:"999px",background:d,boxShadow:m?`0 0 0 2px var(--scout-chrome-surface, var(--hud-bg, #000)), 0 0 0 4px color-mix(in oklab, ${d} 32%, transparent)`:"0 0 0 2px var(--scout-chrome-surface, var(--hud-bg, #000))"}})]})}function C({sprite:i,glow:n=!1,inset:x=!1}){const{cells:p,palette:t}=i,s=e*.07,h=e*.2,a=e*.24,d=.05,m=.085,g=p.length,f=c=>{const o=g>1?c/(g-1):0;return{d:d-(d+m)*o,t:o}},u=c=>Math.max(.06,Math.min(.97,c)),b=c=>{const{d:o,t:r}=f(c);return`oklch(${u(t.bodyL+o)} ${t.bodyC+r*.012} ${t.hue})`},S=c=>{const{d:o,t:r}=f(c);return`oklch(${u(t.accentL+o)} ${t.accentC+r*.012} ${t.accentHue})`},y=[n?`drop-shadow(0 1px 3.5px color-mix(in oklab, ${t.glow} 68%, transparent))`:null,`drop-shadow(0 0.35px 0.5px oklch(0.16 0.04 ${t.hue} / 0.55))`].filter(Boolean).join(" ");return l.jsx("svg",{viewBox:`0 0 ${R} ${R}`,shapeRendering:"geometricPrecision",style:{display:"block",width:x?"72%":"100%",height:"auto",aspectRatio:"1 / 1",overflow:"visible",filter:y},children:p.flatMap((c,o)=>c.map((r,k)=>{if(r==="off")return null;const w=k*e,v=o*e,$=`${o}-${k}`;if(r==="eye"){const j=w+e/2,E=v+e*.52;return l.jsxs("g",{className:"sprite-cell sprite-cell--eye",children:[l.jsx("rect",{x:w+s,y:v+s,width:e-s*2,height:e-s*2,rx:h,fill:t.sclera}),l.jsx("circle",{cx:j,cy:E,r:a,fill:t.ink}),l.jsx("ellipse",{cx:j-a*.33,cy:E-a*.36,rx:a*.34,ry:a*.34,fill:t.sclera,opacity:.9})]},$)}const A=r==="accent"?S(o):r==="mouth"?t.ink:b(o),I=r==="accent"?"sprite-cell sprite-cell--accent":"sprite-cell";return l.jsx("rect",{className:I,x:w+s,y:v+s,width:e-s*2,height:e-s*2,rx:h,fill:A},$)}))})}const L={in_turn:{l:.75,c:.16},in_flight:{l:.72,c:.14},needs_attention:{l:.78,c:.16},callable:{l:.73,c:.13},blocked:{l:.5,c:.02}};function F(i){const n=i.harness?.trim().toLowerCase();return{hue:n?T[n]:void 0,tone:L[M(i.state??null)]}}export{D as S,F as a};