@openscout/scout 0.2.107 → 0.2.109

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 (545) hide show
  1. package/README.md +53 -16
  2. package/bin/scoutd +0 -0
  3. package/dist/build-manifest.json +3 -3
  4. package/dist/client/assets/conversation-motion-features-PYM3Yx_M.js +1 -0
  5. package/dist/client/assets/index-DGR8nSEY.js +88 -0
  6. package/dist/client/assets/index-rA7f7Rt0.css +1 -0
  7. package/dist/client/index.html +3 -3
  8. package/dist/main.mjs +1 -1
  9. package/package.json +26 -4
  10. package/server.json +2 -2
  11. package/dist/client/assets/ActivityScreen-CZmGwQ2U.js +0 -1
  12. package/dist/client/assets/AddProjectForm-CusDRiVO.js +0 -1
  13. package/dist/client/assets/AdventureEvidence-CyegKk1V.js +0 -5
  14. package/dist/client/assets/AdventureReader-X-hbTOi0.js +0 -4
  15. package/dist/client/assets/AdventureScenery-LPXSVP67.js +0 -1
  16. package/dist/client/assets/AgentAdventures-BAgxdOF8.js +0 -1
  17. package/dist/client/assets/AgentAvatar-CrP1eXxk.js +0 -1
  18. package/dist/client/assets/AgentConfigurationScreen-1L0IQm2w.js +0 -1
  19. package/dist/client/assets/AgentDefinitionsWorkspace-DguGs7jZ.js +0 -1
  20. package/dist/client/assets/AgentDetailCard-C4WVeJvJ.css +0 -1
  21. package/dist/client/assets/AgentDetailCard-DtHT3sCo.js +0 -1
  22. package/dist/client/assets/AgentFloorView-DH4jiDgw.js +0 -1
  23. package/dist/client/assets/AgentFloorWorld-CjoIa6jA.js +0 -1
  24. package/dist/client/assets/AgentInfoScreen-DYtmKkeE.js +0 -1
  25. package/dist/client/assets/AgentLaneCard-BaZ2g-f8.js +0 -1
  26. package/dist/client/assets/AgentLaneChrome-TF1SlJSc.js +0 -1
  27. package/dist/client/assets/AgentLaneDetailSheet-EzEPsn3g.js +0 -4
  28. package/dist/client/assets/AgentLaneSummaryResize-dpp7YvrX.js +0 -1
  29. package/dist/client/assets/AgentLanesEmbedScreen-BlSof_6S.js +0 -1
  30. package/dist/client/assets/AgentLanesPreflight-Ry-aqDTr.js +0 -1
  31. package/dist/client/assets/AgentLanesView-BJi9xXz6.js +0 -2
  32. package/dist/client/assets/AgentLiveActions-CGS-Bxb7.css +0 -1
  33. package/dist/client/assets/AgentLiveActions-CfTupTEl.js +0 -1
  34. package/dist/client/assets/AgentMasterScreen-EJhmuKgl.js +0 -1
  35. package/dist/client/assets/AgentSessions-B1gOhDBf.js +0 -6
  36. package/dist/client/assets/AgentsConsole-BjSTs-TV.css +0 -1
  37. package/dist/client/assets/AgentsConsole-RXGqRvcb.js +0 -1
  38. package/dist/client/assets/AgentsScreen-ChwMBs11.js +0 -1
  39. package/dist/client/assets/AgentsSubnav-DwNX4yy0.js +0 -1
  40. package/dist/client/assets/AstronautSuit-Cchnc4Ug.js +0 -1
  41. package/dist/client/assets/AtopView-gkEp4y__.js +0 -1
  42. package/dist/client/assets/BackToPicker-CUkjnoVk.js +0 -1
  43. package/dist/client/assets/BackToPicker-CdgVu-to.css +0 -1
  44. package/dist/client/assets/BriefingDetailScreen-DrlC3qkm.js +0 -1
  45. package/dist/client/assets/BriefingsScreen-B1HlBMGZ.js +0 -1
  46. package/dist/client/assets/BrokerMetadataPanel-Dk242Yh_.js +0 -1
  47. package/dist/client/assets/BrokerScreen-DwOF6bMA.js +0 -8
  48. package/dist/client/assets/Canvas-X9pVSkw3.js +0 -1
  49. package/dist/client/assets/CastPicker-BXUtPAGC.js +0 -1
  50. package/dist/client/assets/CastPicker-zXsnkTIy.css +0 -1
  51. package/dist/client/assets/ChannelComposer-DoK7IDGa.js +0 -1
  52. package/dist/client/assets/ChannelSidebar-e9DOPulb.js +0 -1
  53. package/dist/client/assets/CharacterFamilyPreview-BniL8sEL.css +0 -1
  54. package/dist/client/assets/CharacterFamilyPreview-DMfw7UM_.js +0 -1
  55. package/dist/client/assets/ChatAvatar-C3a_o5Hj.js +0 -1
  56. package/dist/client/assets/ChatBits-CsvxbToF.js +0 -1
  57. package/dist/client/assets/ChatCollapsedStrip-FEmQ_G9J.js +0 -1
  58. package/dist/client/assets/ChatRichInput-DhtwFxQE.js +0 -31
  59. package/dist/client/assets/ChatRightPanel-C1h_aIkn.js +0 -1
  60. package/dist/client/assets/ChatSpaceSurface-BXyLYKHn.js +0 -1
  61. package/dist/client/assets/ChatSpaceTheme-3wLZGsvT.css +0 -1
  62. package/dist/client/assets/ChatSpaceTheme-CUH8bTZc.js +0 -1
  63. package/dist/client/assets/CodeDiffPane-DuQRwpgK.js +0 -1
  64. package/dist/client/assets/CodeProjectPicker-ZQ6gSBpg.js +0 -2
  65. package/dist/client/assets/CodeScreen-BXyKeL5T.js +0 -1
  66. package/dist/client/assets/CommsCanvas-BR2YS76H.css +0 -1
  67. package/dist/client/assets/CommsCanvas-THp0r_U8.js +0 -1
  68. package/dist/client/assets/CommsDeck-BVmSMV2V.js +0 -1
  69. package/dist/client/assets/CommsFlowGraph-DxoOaLF_.js +0 -1
  70. package/dist/client/assets/CommsFlowGraph-vQucylxF.css +0 -1
  71. package/dist/client/assets/CommsFlowMap-Vi8ziCPg.js +0 -1
  72. package/dist/client/assets/CommsSelection-BUoRbu9o.js +0 -1
  73. package/dist/client/assets/ComposerAttachments-DW0AIb8k.js +0 -1
  74. package/dist/client/assets/ConversationComposer-CUQyArlk.js +0 -1
  75. package/dist/client/assets/ConversationFeedRows-DWiOfT-y.js +0 -1
  76. package/dist/client/assets/ConversationHeader-C-ZWscKj.js +0 -1
  77. package/dist/client/assets/ConversationPanels-D9oC0xG5.js +0 -6
  78. package/dist/client/assets/ConversationScreen-9MlMnEo4.css +0 -1
  79. package/dist/client/assets/ConversationScreen-CUfsQ4MR.js +0 -2
  80. package/dist/client/assets/ConversationStatus--IPm2nGh.js +0 -1
  81. package/dist/client/assets/CrewAvatar-BnIPIn_Z.css +0 -1
  82. package/dist/client/assets/CrewAvatar-kTznzqcO.js +0 -1
  83. package/dist/client/assets/CrewSprite-Dhryjx2c.js +0 -1
  84. package/dist/client/assets/CrewSprite-DsQJdu3Z.css +0 -1
  85. package/dist/client/assets/CrewStage-vdO0qm3D.js +0 -1
  86. package/dist/client/assets/CrewWorkspaces-DCBzAAS4.js +0 -1
  87. package/dist/client/assets/CrewWorkspaces-DDuYMByu.css +0 -1
  88. package/dist/client/assets/DataTable-aH-jCyDq.js +0 -1
  89. package/dist/client/assets/DispatchAftermath-66uQAorV.js +0 -1
  90. package/dist/client/assets/DocumentFocusViewer-BSC_JwVE.css +0 -1
  91. package/dist/client/assets/DocumentFocusViewer-DJr0v0D_.js +0 -1
  92. package/dist/client/assets/EmbeddableSurfacesLab-BBa70EhJ.js +0 -1
  93. package/dist/client/assets/EmptyState-CZlrHXy-.js +0 -1
  94. package/dist/client/assets/FileViewerPane-BAO6mtjD.js +0 -3
  95. package/dist/client/assets/FleetRollCallHud-C5q2567n.js +0 -1
  96. package/dist/client/assets/FlightObserveScreen-DZ2mrw91.js +0 -1
  97. package/dist/client/assets/FloorContextSheet-2_NVPQor.js +0 -1
  98. package/dist/client/assets/FloorExchangePanel-B3TFhjLk.css +0 -1
  99. package/dist/client/assets/FloorExchangePanel-BU1pPu8K.js +0 -1
  100. package/dist/client/assets/FloorMessagePasses-cLW2UGNP.js +0 -1
  101. package/dist/client/assets/FloorMessagePasses-nxwwiUom.css +0 -1
  102. package/dist/client/assets/FloorReplay-VFzA6Kxc.js +0 -1
  103. package/dist/client/assets/FloorResourcesSheet-C-kQ6Ren.js +0 -1
  104. package/dist/client/assets/FloorSavedWork-BeHDejWz.js +0 -1
  105. package/dist/client/assets/FloorTacticalHUD-CO-iiFpb.js +0 -1
  106. package/dist/client/assets/FollowScreen-CFfkIbc6.js +0 -1
  107. package/dist/client/assets/HarnessMark-C4naWc16.js +0 -1
  108. package/dist/client/assets/HarnessesScreen-DX3NLcDG.js +0 -1
  109. package/dist/client/assets/HerdrSession-_t7yM8vX.js +0 -4
  110. package/dist/client/assets/HomeHero-7JwycwFY.css +0 -1
  111. package/dist/client/assets/HomeHero-DouPyNmz.js +0 -1
  112. package/dist/client/assets/HostAdvisorView-CnM1i8hW.js +0 -1
  113. package/dist/client/assets/InviteLandingScreen-CEjG2E34.js +0 -1
  114. package/dist/client/assets/InviteSheet-CwxZtWCl.js +0 -1
  115. package/dist/client/assets/JumpPalette-O1aJE9gR.js +0 -1
  116. package/dist/client/assets/KnowledgeSearchInspector-32n9baT-.js +0 -1
  117. package/dist/client/assets/KnowledgeSearchScreen-Dd6jrQ0A.js +0 -1
  118. package/dist/client/assets/LaneToolHoverCard-CJa110yk.js +0 -1
  119. package/dist/client/assets/LaneTraceDetailSheet-DYrd0BIf.js +0 -1
  120. package/dist/client/assets/LaneTraceEventFocus-TbrNHRj_.js +0 -1
  121. package/dist/client/assets/MeshCanvas-DWZHYh1A.js +0 -3
  122. package/dist/client/assets/MeshCanvasMinimap-Dv7nMbl5.css +0 -1
  123. package/dist/client/assets/MeshCanvasMinimap-iswYFpIb.js +0 -1
  124. package/dist/client/assets/MeshScreen-8nAzQVbm.js +0 -1
  125. package/dist/client/assets/MeshTopologyView-BVvtqI8q.js +0 -2
  126. package/dist/client/assets/MessageEmbeds-ksPazAKH.js +0 -1
  127. package/dist/client/assets/MessagesScreen-C3WB4T21.js +0 -1
  128. package/dist/client/assets/MissionContextRail-D62-Wis8.js +0 -1
  129. package/dist/client/assets/MissionControlView-B9cNPXvl.js +0 -1
  130. package/dist/client/assets/MissionFocusOverlay-C1zys3Jv.js +0 -1
  131. package/dist/client/assets/MissionLeftAgentRow-vycMV77n.js +0 -1
  132. package/dist/client/assets/MissionLogPane-B19lYSY9.js +0 -1
  133. package/dist/client/assets/NativeAreaScreen-B1RLa85C.js +0 -1
  134. package/dist/client/assets/NativeAreaScreen-CV0OhGra.js +0 -1
  135. package/dist/client/assets/NativeAreaScreen-CzuZt6o1.js +0 -1
  136. package/dist/client/assets/NewAgentModal-Bh-L-emz.js +0 -1
  137. package/dist/client/assets/NewAgentModal-ru8u5YdJ.css +0 -1
  138. package/dist/client/assets/NewChatComposer-C5LT7MF7.css +0 -1
  139. package/dist/client/assets/NewChatComposer-C97-iTMK.js +0 -19
  140. package/dist/client/assets/NewChatOrigin-DFbF_XvR.js +0 -1
  141. package/dist/client/assets/NodeDetailPanel-CElOEpCh.js +0 -1
  142. package/dist/client/assets/NodeMenu-B-jjHf1c.js +0 -1
  143. package/dist/client/assets/ObserveEmbedScreen-B7Qt69Ms.js +0 -2
  144. package/dist/client/assets/ObserveTextFlow-PFnG_10h.js +0 -2
  145. package/dist/client/assets/ObservedTopologyPanel-BsBsvVPL.css +0 -1
  146. package/dist/client/assets/ObservedTopologyPanel-CUTIoLZJ.js +0 -2
  147. package/dist/client/assets/OpenScoutAppShell-37PDFfA4.js +0 -31
  148. package/dist/client/assets/OpenScoutAppShell-Bh6FnEJO.css +0 -1
  149. package/dist/client/assets/OpsAgentsView-DajlX8LO.js +0 -1
  150. package/dist/client/assets/OpsScreen-jVcaBKGi.js +0 -1
  151. package/dist/client/assets/OpsSubnav-BOOYShHE.js +0 -1
  152. package/dist/client/assets/ProjectAgentProfile-D_wlW4sQ.js +0 -1
  153. package/dist/client/assets/ProjectAgentProfileBar-DHuMKJj-.js +0 -1
  154. package/dist/client/assets/ProjectAgentProfileHero-Dbebtug1.js +0 -1
  155. package/dist/client/assets/ProjectsInbox-B8zYE4vP.css +0 -1
  156. package/dist/client/assets/ProjectsInbox-Cgu7B4--.js +0 -2
  157. package/dist/client/assets/ProjectsRail-CDWocin_.js +0 -1
  158. package/dist/client/assets/ProjectsScreen-B_CJycqW.js +0 -1
  159. package/dist/client/assets/ProjectsThreadAside-1MMl_qUD.js +0 -1
  160. package/dist/client/assets/Provider-C35yu29I.js +0 -5
  161. package/dist/client/assets/Provider-CCzjtkda.css +0 -1
  162. package/dist/client/assets/RailRow-B25zKEub.css +0 -1
  163. package/dist/client/assets/RailRow-BjmWK420.js +0 -1
  164. package/dist/client/assets/RawSessionsTable-DzT90hWu.js +0 -1
  165. package/dist/client/assets/RealtimeVoiceScreen-B6ylX3WQ.js +0 -16
  166. package/dist/client/assets/RenderedWorkerSprite-Dhlyg89J.js +0 -1
  167. package/dist/client/assets/RenderedWorkerSprite-qnTfkd_4.css +0 -1
  168. package/dist/client/assets/ReplayClock-348f17bW.js +0 -1
  169. package/dist/client/assets/ReplayLog-CBnAM3ui.js +0 -1
  170. package/dist/client/assets/ReplayOutpost-DyRPfNFx.js +0 -1
  171. package/dist/client/assets/ReplayOutpost-Y1DvZgeu.css +0 -1
  172. package/dist/client/assets/RepoDiffEmbedScreen-BWxvRDrS.js +0 -1
  173. package/dist/client/assets/RepoDiffPageScreen-DN94irmY.js +0 -1
  174. package/dist/client/assets/RepoDiffViewer-_4JVXBIW.js +0 -7
  175. package/dist/client/assets/RepoDiffViewerLazy-XGVC3WXv.js +0 -2
  176. package/dist/client/assets/ReposScreen-uMCpt0e9.js +0 -6
  177. package/dist/client/assets/RiggedWorkerCharacter-BpYECnyK.css +0 -1
  178. package/dist/client/assets/RiggedWorkerCharacter-q6QRc7_o.js +0 -1
  179. package/dist/client/assets/SageModelStudio-768dRQr4.css +0 -1
  180. package/dist/client/assets/SageModelStudio-CNDhZhgD.js +0 -4108
  181. package/dist/client/assets/ScoutDeckSurface-CUaU4R6T.js +0 -1
  182. package/dist/client/assets/ScoutDeckSurface-uhmuZRzC.css +0 -1
  183. package/dist/client/assets/ScoutSurface-3_25USO_.js +0 -1
  184. package/dist/client/assets/ScoutbotFxLab-CRqhYe0a.js +0 -4
  185. package/dist/client/assets/SecondaryNav-D7dbV2qo.js +0 -1
  186. package/dist/client/assets/SessionContextStrip-CXfs9hUD.js +0 -1
  187. package/dist/client/assets/SessionContextStrip-DAIXwtHd.css +0 -1
  188. package/dist/client/assets/SessionEmbedScreen-D0zFmou-.js +0 -1
  189. package/dist/client/assets/SessionHopMenu-E6VJZrE0.js +0 -1
  190. package/dist/client/assets/SessionObserve-CDdJ7fAE.css +0 -1
  191. package/dist/client/assets/SessionObserve-DXxBvejJ.js +0 -12
  192. package/dist/client/assets/SessionObserveEvidence-Cuj_KHxR.js +0 -1
  193. package/dist/client/assets/SessionRefScreen-DqLSUlCE.js +0 -1
  194. package/dist/client/assets/SessionsScreen-BLIRkohT.js +0 -1
  195. package/dist/client/assets/SettingsDrawer-R8a0TlJD.css +0 -1
  196. package/dist/client/assets/SettingsDrawer-juCpnbH6.js +0 -3
  197. package/dist/client/assets/SettingsScreen-BtGzE2-O.js +0 -1
  198. package/dist/client/assets/SharedFloorCharacter-Bi5_md4R.css +0 -1
  199. package/dist/client/assets/SharedFloorCharacter-DNEiaOUh.js +0 -1
  200. package/dist/client/assets/SharedWorkFloor-0rqtdF-n.css +0 -1
  201. package/dist/client/assets/SharedWorkFloor-D9mf9KSg.js +0 -2
  202. package/dist/client/assets/ShikiPane-CRtTYkMj.js +0 -15
  203. package/dist/client/assets/SlidePanel-Bg5dVaIa.css +0 -1
  204. package/dist/client/assets/SlidePanel-_CHAQdOa.js +0 -1
  205. package/dist/client/assets/SpaceSwitcher-BLgSCf_T.js +0 -1
  206. package/dist/client/assets/SpriteAvatar-CpZWf54-.js +0 -1
  207. package/dist/client/assets/SproutActionSprite-BSiTS4en.js +0 -1
  208. package/dist/client/assets/StatusPill-2gCP6H7A.js +0 -1
  209. package/dist/client/assets/TailView-CYSijNTy.js +0 -2
  210. package/dist/client/assets/TailView-Mj3AU2u0.css +0 -1
  211. package/dist/client/assets/Terminal-Bi97yb5s.js +0 -4
  212. package/dist/client/assets/TerminalEmbedScreen-Bqop67Bq.js +0 -1
  213. package/dist/client/assets/TerminalHeaderMount-Cq4OD_xN.js +0 -1
  214. package/dist/client/assets/TerminalRelay-DrikpUSJ.js +0 -46
  215. package/dist/client/assets/TextDocumentSurface-D52m7Vd8.js +0 -4
  216. package/dist/client/assets/TmuxPeek-CXFeweMg.js +0 -1
  217. package/dist/client/assets/VoiceControlWell-DF3bjcYA.js +0 -1
  218. package/dist/client/assets/VoicePathDiagram-CmpHWfO-.js +0 -1
  219. package/dist/client/assets/VoicePermissionsPanel-Ok2nfxHw.js +0 -1
  220. package/dist/client/assets/VoicePermissionsPanel-RijAZ1gP.css +0 -1
  221. package/dist/client/assets/VoiceTurnDetails-wAByRaNB.js +0 -8
  222. package/dist/client/assets/VoiceTurnStage-edoJalLV.js +0 -1
  223. package/dist/client/assets/VoiceTurnView-D-8g5E4r.js +0 -1
  224. package/dist/client/assets/WorkDetailScreen-zQkNVy2F.js +0 -5
  225. package/dist/client/assets/WorkFilesViewer-vNt01sDd.js +0 -1
  226. package/dist/client/assets/WorkRunView-BDkR7Edq.js +0 -1
  227. package/dist/client/assets/WorkRunView-CxwAZ2QQ.css +0 -1
  228. package/dist/client/assets/WorldActorTalk-BvSg_b1y.js +0 -1
  229. package/dist/client/assets/WorldCharacter-CIIlutQq.js +0 -1
  230. package/dist/client/assets/WorldMinimap-B6HNgcDe.js +0 -1
  231. package/dist/client/assets/WorldSky-Jm2Z6dfW.js +0 -1
  232. package/dist/client/assets/activity-CIlFrfPJ.js +0 -1
  233. package/dist/client/assets/addon-fit-dFpj9Kfq.js +0 -1
  234. package/dist/client/assets/addon-webgl-BFCGRtGh.js +0 -82
  235. package/dist/client/assets/adventure-evidence-DgQbBmfa.css +0 -1
  236. package/dist/client/assets/adventure-habitats-v1-CVMbdB_Z.png +0 -0
  237. package/dist/client/assets/adventure-habitats-v1-M1lcpTJh.js +0 -1
  238. package/dist/client/assets/adventure-playback-DTfkhIc0.js +0 -3
  239. package/dist/client/assets/adventure-reader-DM5UDDm9.css +0 -1
  240. package/dist/client/assets/agent-adventures-DZtWpj6k.css +0 -1
  241. package/dist/client/assets/agent-definitions-CymTYqvo.css +0 -1
  242. package/dist/client/assets/agent-directory-studio-injection-Bc8590z5.css +0 -1
  243. package/dist/client/assets/agent-essentials-BGGvT5G6.js +0 -1
  244. package/dist/client/assets/agent-floor-Dmr9hZHL.css +0 -1
  245. package/dist/client/assets/agent-floor-actor-DW8zLht0.js +0 -1
  246. package/dist/client/assets/agent-floor-world-Bnd1AtwK.css +0 -1
  247. package/dist/client/assets/agent-floor-world-layout-hfMjuoui.js +0 -1
  248. package/dist/client/assets/agent-lane-card-BkWVDYM8.css +0 -1
  249. package/dist/client/assets/agent-lane-card-model-CeqQGp-8.js +0 -1
  250. package/dist/client/assets/agent-lane-detail-Ti3trpfH.js +0 -2
  251. package/dist/client/assets/agent-lane-preview-Dpa3DuOn.js +0 -4
  252. package/dist/client/assets/agent-lanes-DmgipV9D.css +0 -1
  253. package/dist/client/assets/agent-lanes-model-DMAdqCmK.js +0 -4
  254. package/dist/client/assets/agent-master-THmq-1k8.css +0 -1
  255. package/dist/client/assets/agent-master-model-Bk_yuUXJ.js +0 -1
  256. package/dist/client/assets/agent-specialization-DDc7mLCW.js +0 -1
  257. package/dist/client/assets/agent-state-DDhnFEEP.js +0 -1
  258. package/dist/client/assets/agents-detail-redesign-h34ROjOW.css +0 -1
  259. package/dist/client/assets/agents-project-DgbqDc65.css +0 -1
  260. package/dist/client/assets/agents-screen-BYakbO50.css +0 -1
  261. package/dist/client/assets/api-BQYTwoz6.js +0 -1
  262. package/dist/client/assets/api-DSqpVKC7.js +0 -1
  263. package/dist/client/assets/arc.es-C1SQHJ3k.js +0 -188
  264. package/dist/client/assets/arrow-left-MVUKauwQ.js +0 -1
  265. package/dist/client/assets/arrow-right-Bp-FpE5V.js +0 -1
  266. package/dist/client/assets/arrow-up-right-BPedAgxO.js +0 -1
  267. package/dist/client/assets/bash-format-BRV5C6Gv.js +0 -1
  268. package/dist/client/assets/book-open-CV98WMSp.js +0 -1
  269. package/dist/client/assets/bot-B4zLQ4IN.js +0 -1
  270. package/dist/client/assets/briefings-BwuAFQK6.css +0 -1
  271. package/dist/client/assets/broker-display-BkBzyvbR.js +0 -2
  272. package/dist/client/assets/cache-DGBo3vIf.js +0 -2
  273. package/dist/client/assets/chat-api-DSJMBYoT.js +0 -2
  274. package/dist/client/assets/chat-message-markup-91DIry6R.js +0 -1
  275. package/dist/client/assets/chat-space-model-aW3Fd8_U.js +0 -4
  276. package/dist/client/assets/chat-transport-DNS5CB2I.js +0 -1
  277. package/dist/client/assets/check-lrJ3a73a.js +0 -1
  278. package/dist/client/assets/chevron-down-l1mrh5S9.js +0 -1
  279. package/dist/client/assets/chevron-right-DrfqcerI.js +0 -1
  280. package/dist/client/assets/chevron-up-CETZJzjV.js +0 -1
  281. package/dist/client/assets/chunk-HRAB3GC3-DbVLgbWX.js +0 -1
  282. package/dist/client/assets/clipboard-e3fSpeo7.js +0 -1
  283. package/dist/client/assets/clock-BV1aqPkK.js +0 -1
  284. package/dist/client/assets/code-screen-DrKinCyh.css +0 -1
  285. package/dist/client/assets/code-xml-BhcNbLWU.js +0 -1
  286. package/dist/client/assets/coffee-D7EAOdCk.js +0 -1
  287. package/dist/client/assets/collapsed-strip-raJWthAH.css +0 -1
  288. package/dist/client/assets/colors-CFlbwC25.js +0 -1
  289. package/dist/client/assets/comms-deck-C8nVeMBh.css +0 -1
  290. package/dist/client/assets/comms-deck-CBhsXnY-.js +0 -2
  291. package/dist/client/assets/comms-gesture-_aGFo6g3.js +0 -2
  292. package/dist/client/assets/compass-63TUaz5_.js +0 -1
  293. package/dist/client/assets/console-B1IBqLI_.css +0 -1
  294. package/dist/client/assets/content-B1lgE8qr.js +0 -1
  295. package/dist/client/assets/content-B5l11YyQ.js +0 -1
  296. package/dist/client/assets/content-BNZOZEpX.js +0 -1
  297. package/dist/client/assets/content-BRIxP155.js +0 -1
  298. package/dist/client/assets/content-BWd8gt8L.js +0 -1
  299. package/dist/client/assets/content-BfwS2jAK.js +0 -1
  300. package/dist/client/assets/content-C4p43_eT.js +0 -1
  301. package/dist/client/assets/content-CINHz-rZ.css +0 -1
  302. package/dist/client/assets/content-CdYfaoDV.js +0 -1
  303. package/dist/client/assets/content-CzldLxw0.js +0 -1
  304. package/dist/client/assets/content-D-olnc4U.js +0 -1
  305. package/dist/client/assets/content-DTioimq4.js +0 -1
  306. package/dist/client/assets/content-LOebm3_d.js +0 -1
  307. package/dist/client/assets/content-nGlEZhUI.js +0 -1
  308. package/dist/client/assets/content-oyzDM-LK.js +0 -1
  309. package/dist/client/assets/content-x1PHxED7.js +0 -1
  310. package/dist/client/assets/content-zX3ZY3T9.js +0 -1
  311. package/dist/client/assets/context-budget-8qFKqM-j.js +0 -1
  312. package/dist/client/assets/conversation-icons-Tqba2d56.js +0 -1
  313. package/dist/client/assets/conversation-model-FxDeWlle.js +0 -1
  314. package/dist/client/assets/conversation-motion-features-C5zjuNwE.js +0 -1
  315. package/dist/client/assets/conversation-prefs-DNre-Lcx.js +0 -1
  316. package/dist/client/assets/conversations-DoAAO6kA.js +0 -1
  317. package/dist/client/assets/copy-xKeM5ZtU.js +0 -1
  318. package/dist/client/assets/cpu-BOTa_WLr.js +0 -1
  319. package/dist/client/assets/createLucideIcon-zZ8Hx7er.js +0 -1
  320. package/dist/client/assets/credentials-OeoF-VKJ.js +0 -1
  321. package/dist/client/assets/ctx-panel-BC8fpcWJ.css +0 -1
  322. package/dist/client/assets/direct-voice-BbLPuJ04.js +0 -2
  323. package/dist/client/assets/direct-voice-DbO7CSv_.css +0 -1
  324. package/dist/client/assets/discover-DJFxyV1k.js +0 -2
  325. package/dist/client/assets/embed-entry-Lyvu0Kfc.js +0 -2
  326. package/dist/client/assets/embed-navigation-DayfkQau.js +0 -1
  327. package/dist/client/assets/external-link-CUObqmgX.js +0 -1
  328. package/dist/client/assets/eye-LrO-cXQt.js +0 -1
  329. package/dist/client/assets/file-code-corner-CsU7jJpu.js +0 -1
  330. package/dist/client/assets/file-text-CnISiiw6.js +0 -1
  331. package/dist/client/assets/flag-C4wl8z2-.js +0 -1
  332. package/dist/client/assets/fleet-roll-call-BUgf7w-V.css +0 -1
  333. package/dist/client/assets/flight-observe-GFg9L8ft.css +0 -1
  334. package/dist/client/assets/floor-character-name-CqJPOlXb.js +0 -1
  335. package/dist/client/assets/floor-context-model-rWKqaKmV.js +0 -1
  336. package/dist/client/assets/floor-context-sheet-BFnkFiY3.css +0 -1
  337. package/dist/client/assets/floor-memory-YMM8AlLY.js +0 -1
  338. package/dist/client/assets/floor-message-passes-CO3Ix_wR.js +0 -1
  339. package/dist/client/assets/floor-preview-text-HrORUJ7D.js +0 -1
  340. package/dist/client/assets/floor-replay-CccYqE-f.css +0 -1
  341. package/dist/client/assets/floor-tactical-hud-HL5Vja5Y.css +0 -1
  342. package/dist/client/assets/folder-D5prSkzz.js +0 -1
  343. package/dist/client/assets/follow-route-BvcGtBIL.js +0 -1
  344. package/dist/client/assets/fx-z37u1o2z.js +0 -1
  345. package/dist/client/assets/gauge-D9_5iJEm.js +0 -1
  346. package/dist/client/assets/gestures-QZub3Ot9.js +0 -1
  347. package/dist/client/assets/git-branch-B0_fPLO7.js +0 -1
  348. package/dist/client/assets/go-shortcuts-DicR7sUf.js +0 -1
  349. package/dist/client/assets/harnesses-screen-2z36fJKE.css +0 -1
  350. package/dist/client/assets/home-live-action-BkqGLVRY.js +0 -1
  351. package/dist/client/assets/home-moving-signal-DMguaRWR.css +0 -1
  352. package/dist/client/assets/home-moving-signal-rpMhsOJB.js +0 -1
  353. package/dist/client/assets/home-now-card-ByE6Umcx.js +0 -1
  354. package/dist/client/assets/home-now-card-nano-B5Dv3-pb.js +0 -1
  355. package/dist/client/assets/hooks-D787lBmm.css +0 -1
  356. package/dist/client/assets/hooks-_eCZZPsR.js +0 -2
  357. package/dist/client/assets/host-advisor-B2Fqs5Dd.css +0 -1
  358. package/dist/client/assets/inbox-thread-redesign-B_1ocqaX.css +0 -1
  359. package/dist/client/assets/index-724SdE6r.js +0 -1
  360. package/dist/client/assets/index-BWHgHrtv.js +0 -1
  361. package/dist/client/assets/index-CHD0qcfL.js +0 -1
  362. package/dist/client/assets/index-CN4rBB_s.css +0 -1
  363. package/dist/client/assets/index-D1d98iYf.js +0 -1
  364. package/dist/client/assets/index-EsrkGBcv.js +0 -10
  365. package/dist/client/assets/index-gGHPA-By.js +0 -1
  366. package/dist/client/assets/index-wLwc74Pu.css +0 -1
  367. package/dist/client/assets/inspector-panel-BkgUDn6G.js +0 -2
  368. package/dist/client/assets/keyboard-nav-DDHegDbx.js +0 -1
  369. package/dist/client/assets/knowledge-search-BNdQweGz.css +0 -1
  370. package/dist/client/assets/lane-ask-display-BTVSakyo.js +0 -18
  371. package/dist/client/assets/lane-edit-display-BjdT9oZl.js +0 -9
  372. package/dist/client/assets/lane-observe-CteDwdD-.js +0 -7
  373. package/dist/client/assets/lane-roster-store-D-RSWjb-.js +0 -1
  374. package/dist/client/assets/lane-tool-detail-Czggx8oM.js +0 -9
  375. package/dist/client/assets/layers-C8PDiMul.js +0 -1
  376. package/dist/client/assets/layout-grid-Cor2frzj.js +0 -1
  377. package/dist/client/assets/left-BV9yMiTL.css +0 -1
  378. package/dist/client/assets/left-Bn5X7x2o.js +0 -2
  379. package/dist/client/assets/left-BqS0fYX1.js +0 -1
  380. package/dist/client/assets/left-CAaRBK9S.css +0 -1
  381. package/dist/client/assets/left-CTCeeeD3.js +0 -1
  382. package/dist/client/assets/left-DhtVPVux.js +0 -1
  383. package/dist/client/assets/left-K39b-Wvx.js +0 -2
  384. package/dist/client/assets/left-KGmueNPt.js +0 -1
  385. package/dist/client/assets/left-P_GOYB-s.js +0 -1
  386. package/dist/client/assets/left-R2OOE7VG.css +0 -1
  387. package/dist/client/assets/left-advisor-B0N47De2.js +0 -1
  388. package/dist/client/assets/left-agents-CsSNc51Y.js +0 -1
  389. package/dist/client/assets/left-default-BlO5LP2T.js +0 -1
  390. package/dist/client/assets/left-lanes-C4PhaJE6.js +0 -1
  391. package/dist/client/assets/left-mission-BjTE5vPa.js +0 -1
  392. package/dist/client/assets/left-mission-DENnfshd.css +0 -1
  393. package/dist/client/assets/library-CkWNPHRp.js +0 -1
  394. package/dist/client/assets/loader-circle-OvccU82H.js +0 -1
  395. package/dist/client/assets/local-agents-BqnoxJrq.js +0 -1
  396. package/dist/client/assets/log-in-7SnYqW5w.js +0 -1
  397. package/dist/client/assets/machine-children-DxcqCLmd.js +0 -1
  398. package/dist/client/assets/machine-scope-DJt9RZ2w.js +0 -1
  399. package/dist/client/assets/media-blobs-Bi8pxr1u.js +0 -1
  400. package/dist/client/assets/mentions-ByUvhS-v.js +0 -1
  401. package/dist/client/assets/mesh-ops-B1kDjizF.css +0 -1
  402. package/dist/client/assets/mesh-ops-CiZ8xSAx.js +0 -1
  403. package/dist/client/assets/mesh-screen-DjA4mOaN.css +0 -1
  404. package/dist/client/assets/mesh-view-store-DZvJC4KU.js +0 -1
  405. package/dist/client/assets/message-circle-CxRVKNE-.js +0 -1
  406. package/dist/client/assets/message-markup-BQW5jdJw.js +0 -15
  407. package/dist/client/assets/message-markup-Zwo3t4cI.js +0 -1
  408. package/dist/client/assets/message-square-BxesYglW.js +0 -1
  409. package/dist/client/assets/message-visibility-DwxgcgYK.js +0 -1
  410. package/dist/client/assets/mission-control-CsX3Yc58.css +0 -1
  411. package/dist/client/assets/mission-control-model-BpJHDV5D.js +0 -1
  412. package/dist/client/assets/mission-control-store-elEEsIvb.js +0 -1
  413. package/dist/client/assets/mission-wall-CAo4BKfa.js +0 -1
  414. package/dist/client/assets/model-CBkMvT1w.js +0 -1
  415. package/dist/client/assets/monitor-DTTYEb73.js +0 -1
  416. package/dist/client/assets/nav-destinations-uorRqFxf.js +0 -1
  417. package/dist/client/assets/observe-BJqERJVj.js +0 -1
  418. package/dist/client/assets/openAgent-Dbv5wfuL.js +0 -1
  419. package/dist/client/assets/openContent-C6XO6kr5.js +0 -1
  420. package/dist/client/assets/operator-attention-DBaRg5ep.js +0 -1
  421. package/dist/client/assets/ops-agents-BOYxzPTm.css +0 -1
  422. package/dist/client/assets/ops-atop-BB4B4JdE.css +0 -1
  423. package/dist/client/assets/ops-screen-CxYM0VOW.css +0 -1
  424. package/dist/client/assets/page-status-BswZLqvA.js +0 -1
  425. package/dist/client/assets/page-status-bar-ByUD7VPM.css +0 -1
  426. package/dist/client/assets/panel-right-Bv7sP_fc.js +0 -1
  427. package/dist/client/assets/paperclip-BjcuP_Hx.js +0 -1
  428. package/dist/client/assets/pause-C2XTlkjs.js +0 -1
  429. package/dist/client/assets/persistent-state-KRk_yb0q.js +0 -1
  430. package/dist/client/assets/pin-C2mFOV1l.js +0 -1
  431. package/dist/client/assets/pip-idle-v1-Tt-CZsRG.png +0 -0
  432. package/dist/client/assets/pip-thinking-v1-BoHWSEye.png +0 -0
  433. package/dist/client/assets/pip-waiting-v1-DkuvJ-dN.png +0 -0
  434. package/dist/client/assets/pip-working-v1-wWQLRS1z.png +0 -0
  435. package/dist/client/assets/play-FT6K3It1.js +0 -1
  436. package/dist/client/assets/plus-DFDDeGKu.js +0 -1
  437. package/dist/client/assets/profile-DTmzN16I.js +0 -1
  438. package/dist/client/assets/project-overview-helpers-BQTc_Ous.js +0 -1
  439. package/dist/client/assets/projects-inbox-C0FUCv_p.js +0 -1
  440. package/dist/client/assets/projects-inbox-ColX6lpx.css +0 -1
  441. package/dist/client/assets/provider-Dojd8quC.js +0 -1
  442. package/dist/client/assets/proxy-AJsmwA6h.js +0 -1
  443. package/dist/client/assets/radio-DRoOZsws.js +0 -1
  444. package/dist/client/assets/refresh-cw-BmVr7sCD.js +0 -1
  445. package/dist/client/assets/repo-diff-DyYmQMSA.css +0 -1
  446. package/dist/client/assets/resizable-columns-C7ygvLt8.css +0 -1
  447. package/dist/client/assets/resolve-panes-pbY1fCWi.js +0 -1
  448. package/dist/client/assets/resolve-sidebar-context-YWkZTq1t.js +0 -1
  449. package/dist/client/assets/right-49kO-6nD.js +0 -1
  450. package/dist/client/assets/right-APtItA8A.js +0 -1
  451. package/dist/client/assets/right-BJwhPqtn.js +0 -1
  452. package/dist/client/assets/right-BPqrf4ek.js +0 -1
  453. package/dist/client/assets/right-D7djOy6K.js +0 -1
  454. package/dist/client/assets/right-DKOUCRob.js +0 -1
  455. package/dist/client/assets/right-DMNrVzg7.js +0 -1
  456. package/dist/client/assets/right-DWPVB-nK.js +0 -2
  457. package/dist/client/assets/right-DppeMCy4.js +0 -1
  458. package/dist/client/assets/right-GAL5Mw1v.js +0 -1
  459. package/dist/client/assets/rocket-CGl4RTV7.js +0 -1
  460. package/dist/client/assets/router-DCtl8wqb.js +0 -1
  461. package/dist/client/assets/runtime-picker-C3JwrDKP.css +0 -1
  462. package/dist/client/assets/runtime-picker-DXu2bOTh.js +0 -1
  463. package/dist/client/assets/scope-views-4khCg2_z.css +0 -1
  464. package/dist/client/assets/scope-views-RUWwCVAr.js +0 -1
  465. package/dist/client/assets/scout-voice-CZx60X6E.js +0 -1
  466. package/dist/client/assets/scoutbot-Bk3nyrkj.js +0 -3
  467. package/dist/client/assets/scoutbot-markdown-BKEBSbG0.js +0 -6
  468. package/dist/client/assets/scroll-text-DNjxhyO2.js +0 -1
  469. package/dist/client/assets/search-DT42oyRW.js +0 -1
  470. package/dist/client/assets/secondaryNavConfig-CS1svh6n.js +0 -1
  471. package/dist/client/assets/secondaryNavConfig-D15P1Y9k.css +0 -1
  472. package/dist/client/assets/selection-bridge-x3wFUjxj.js +0 -1
  473. package/dist/client/assets/send-horizontal-CH0-fbZE.js +0 -1
  474. package/dist/client/assets/send-to-agent-session-DoKCDBJ4.js +0 -1
  475. package/dist/client/assets/server-QfsgMLk1.js +0 -1
  476. package/dist/client/assets/session-catalog-CvSdPHPe.js +0 -1
  477. package/dist/client/assets/session-recap-lanes-D-eVJnpY.js +0 -1
  478. package/dist/client/assets/session-recap-queue-41l2XVkI.js +0 -1
  479. package/dist/client/assets/session-ref-lookup-state-SATH_jAP.js +0 -1
  480. package/dist/client/assets/session-table-L-pns6Zl.js +0 -1
  481. package/dist/client/assets/sessionRead-CvFz2RHv.js +0 -1
  482. package/dist/client/assets/sessions-view-Dc-QAa7O.js +0 -1
  483. package/dist/client/assets/settings-BVh7kldq.js +0 -1
  484. package/dist/client/assets/shared-work-artifacts-DfNl9KTo.js +0 -1
  485. package/dist/client/assets/sliders-horizontal-782VC_yy.js +0 -1
  486. package/dist/client/assets/solar-system-scope-2k-stars-points-1FwHnkj0.png +0 -0
  487. package/dist/client/assets/sparkles-BjHq_DNK.js +0 -1
  488. package/dist/client/assets/sprout-action-sprite-DZ8C0fTl.css +0 -1
  489. package/dist/client/assets/sprout-actions-proof-v1-BzUdc812.png +0 -0
  490. package/dist/client/assets/sse-BCPRocpq.js +0 -1
  491. package/dist/client/assets/status-tone-BM_zuRy1.js +0 -1
  492. package/dist/client/assets/surface-activity-B1rgWB1i.js +0 -1
  493. package/dist/client/assets/synthetic-agent-routing-aduMYO7P.js +0 -1
  494. package/dist/client/assets/system-surfaces-redesign-q2BmCB7e.css +0 -1
  495. package/dist/client/assets/tail-display-DHSNmvor.js +0 -2
  496. package/dist/client/assets/tail-events-d0yAYxR0.js +0 -1
  497. package/dist/client/assets/terminal-hQKQygcf.js +0 -1
  498. package/dist/client/assets/terminal-relay-Bxs1hp-j.js +0 -1
  499. package/dist/client/assets/terminal-screen-Bpb2SZrn.css +0 -1
  500. package/dist/client/assets/terminal-sessions-3RfJpen8.js +0 -1
  501. package/dist/client/assets/terminal-takeover-Ay5C2c-M.js +0 -1
  502. package/dist/client/assets/theme-vars-DNK0nn3k.js +0 -1
  503. package/dist/client/assets/time-Dhsh_2EG.js +0 -1
  504. package/dist/client/assets/triangle-alert-CHoRGdVO.js +0 -1
  505. package/dist/client/assets/types-B0PlfpKc.js +0 -1
  506. package/dist/client/assets/ui-LM8pS8qE.js +0 -1
  507. package/dist/client/assets/use-beside-DoRC1nt0.js +0 -1
  508. package/dist/client/assets/use-conversation-list-CY4JciOV.js +0 -1
  509. package/dist/client/assets/use-fleet-active-asks-CymmXWH4.js +0 -1
  510. package/dist/client/assets/use-mesh-node-state-BvaqtODo.js +0 -1
  511. package/dist/client/assets/use-mesh-ops-items-BSYaqH_0.js +0 -1
  512. package/dist/client/assets/use-reduced-motion-3gMYZNIp.js +0 -1
  513. package/dist/client/assets/use-scout-dev-flags-DS_pYYQd.js +0 -1
  514. package/dist/client/assets/useAgentHoverCard-BANmpjMh.js +0 -1
  515. package/dist/client/assets/useContentSecondaryNav-C6OBu-3_.js +0 -1
  516. package/dist/client/assets/useEmbedHeadline-D6pJRxUg.js +0 -1
  517. package/dist/client/assets/usePersistentState-B8lP7TRb.js +0 -1
  518. package/dist/client/assets/usePierreRuntime-BAQdiN0L.js +0 -50
  519. package/dist/client/assets/useSidebarCollapse-OL_8J5cL.js +0 -1
  520. package/dist/client/assets/users-BUjx36gx.js +0 -1
  521. package/dist/client/assets/voice-levels-Dcr3jglk.js +0 -1
  522. package/dist/client/assets/voice-paths-CJUuBPh3.css +0 -1
  523. package/dist/client/assets/voice-turn-DftA0iIb.css +0 -1
  524. package/dist/client/assets/voice-turn-ledger-BMZxlSjg.js +0 -1
  525. package/dist/client/assets/worker-rendered-v1-DmGVMlVi.png +0 -0
  526. package/dist/client/assets/worker-thinking-v1-ujakpzrK.png +0 -0
  527. package/dist/client/assets/worker-waiting-v1-DbTSsfJJ.png +0 -0
  528. package/dist/client/assets/worker-working-v1-BROAvJ_z.png +0 -0
  529. package/dist/client/assets/world-outposts-v1-DOt0i98W.png +0 -0
  530. package/dist/client/assets/wrench-DR0i5BU7.js +0 -1
  531. package/dist/client/assets/x-DAehov0E.js +0 -1
  532. package/dist/client/assets/xterm-BXQiLVnI.js +0 -34
  533. package/dist/client/assets/zap-CEjZNZbI.js +0 -1
  534. package/dist/client/characters/sage/sage.glb +0 -0
  535. package/dist/highlights-eq9cgrbb.scm +0 -604
  536. package/dist/highlights-ghv9g403.scm +0 -205
  537. package/dist/highlights-hk7bwhj4.scm +0 -284
  538. package/dist/highlights-r812a2qc.scm +0 -150
  539. package/dist/highlights-x6tmsnaa.scm +0 -115
  540. package/dist/injections-73j83es3.scm +0 -27
  541. package/dist/tree-sitter-javascript-nd0q4pe9.wasm +0 -0
  542. package/dist/tree-sitter-markdown-411r6y9b.wasm +0 -0
  543. package/dist/tree-sitter-markdown_inline-j5349f42.wasm +0 -0
  544. package/dist/tree-sitter-typescript-zxjzwt75.wasm +0 -0
  545. package/dist/tree-sitter-zig-e78zbjpm.wasm +0 -0
@@ -1,3 +0,0 @@
1
- import{j as e,r as o,ac as je,G as ye,k as ee}from"./index-EsrkGBcv.js";import{a as fe}from"./provider-Dojd8quC.js";import{a as M}from"./api-DSqpVKC7.js";import{g as Se,a as Ne,e as we,s as ke,b as Ce,d as Ae,c as Ee}from"./credentials-OeoF-VKJ.js";import{u as Q,F as Te,J as Oe,M as Pe,N as Ie}from"./Provider-C35yu29I.js";import{t as Re}from"./time-Dhsh_2EG.js";import{m as $e,v as Le,w as Me}from"./scout-voice-CZx60X6E.js";import{u as De}from"./keyboard-nav-DDHegDbx.js";import{a as Ve}from"./router-DCtl8wqb.js";import{C as J}from"./CrewAvatar-kTznzqcO.js";import{C as _e}from"./CastPicker-BXUtPAGC.js";import{p as se}from"./AgentAvatar-CrP1eXxk.js";import{C as He}from"./CrewStage-vdO0qm3D.js";import{S as te}from"./SpriteAvatar-CpZWf54-.js";import{VoiceHostStatusBanner as ze,VoicePermissionsPanel as Be}from"./VoicePermissionsPanel-Ok2nfxHw.js";import{u as Fe}from"./chunk-HRAB3GC3-DbVLgbWX.js";import{C as R}from"./check-lrJ3a73a.js";import{M as Ue}from"./monitor-DTTYEb73.js";import{c as he}from"./createLucideIcon-zZ8Hx7er.js";import{R as Ke}from"./refresh-cw-BmVr7sCD.js";import{C as We}from"./copy-xKeM5ZtU.js";import{a as Ge}from"./DocumentFocusViewer-DJr0v0D_.js";import{S as qe}from"./sparkles-BjHq_DNK.js";const Ye=[["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"}]],Xe=he("moon",Ye);const Ze=[["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"}]],Je=he("sun",Ze),me="/api/voice/playback/settings",Qe="scout:voice-playback-settings",es="OPENSCOUT_VOICE_PLAYBACK",ss="openscout.voice-playback-settings";function ts(s){return M(me,{signal:s,cache:"no-store"})}function as(s){return M(me,{method:"PUT",body:JSON.stringify({playback:s})})}function ns(s){if(window.dispatchEvent(new CustomEvent(Qe,{detail:s})),!("BroadcastChannel"in window))return;const a=new BroadcastChannel(ss);a.postMessage(s),a.close()}const is=[195,125,300,45,355,210];function ls(s){return`oklch(0.80 0.14 ${s})`}function p({label:s,right:a}){return e.jsxs("div",{className:"s-settings-section-rule",children:[e.jsx("span",{className:"s-settings-section-label",children:s}),e.jsx("span",{className:"s-settings-section-line"}),a&&e.jsx("span",{className:"s-settings-section-right",children:a})]})}function N({label:s,hint:a,children:n}){return e.jsxs("div",{className:"s-settings-field",children:[e.jsx("label",{className:"s-settings-field-label",children:s}),n,a&&e.jsx("span",{className:"s-settings-field-hint",children:a})]})}function _({value:s,onChange:a,mono:n}){return e.jsx("input",{className:`s-settings-input${n?" s-settings-input--mono":""}`,value:s,onChange:l=>a(l.target.value)})}function ae({value:s,onChange:a,rows:n=3}){return e.jsx("textarea",{className:"s-settings-textarea",value:s,onChange:l=>a(l.target.value),rows:n})}function rs({value:s,onChange:a,min:n,max:l,step:m=1,unit:g=""}){return e.jsxs("div",{className:"s-settings-slider-wrap",children:[e.jsx("input",{type:"range",min:n,max:l,step:m,value:s,onChange:x=>a(Number(x.target.value))}),e.jsxs("span",{className:"s-settings-slider-value",children:[s," ",g]})]})}function H({value:s,onChange:a,options:n,stacked:l,columns:m}){return e.jsx("div",{className:l?"s-settings-option-stacked":"s-settings-option-grid",style:l?void 0:{gridTemplateColumns:`repeat(${m??n.length}, 1fr)`},children:n.map(g=>e.jsxs("button",{className:`s-settings-option-btn${s===g.id?" s-settings-option-btn--active":""}`,onClick:()=>a(g.id),children:[e.jsx("span",{className:"s-settings-option-label",children:g.label}),e.jsx("span",{className:"s-settings-option-sub",children:g.sub})]},g.id))})}const os=[{id:"system",label:"System",sub:"Follow this device",icon:Ue},{id:"light",label:"Light",sub:"Bright workspace",icon:Je},{id:"dark",label:"Dark",sub:"Low-light workspace",icon:Xe}],cs=[{id:"scout",label:"Scout",sub:"Control-room navigation"},{id:"slack",label:"Slack",sub:"Workspace rail and channel-style lists"}],ne=[{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"}],ie=[{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"}],le=[{id:"soft",label:"Soft",sub:"Quiet separators"},{id:"balanced",label:"Defined",sub:"Clear structure"},{id:"strong",label:"Strong",sub:"High separation"}],re=[{id:"theme",label:"Theme"},{id:"lime",label:"Lime"},{id:"cyan",label:"Cyan"},{id:"violet",label:"Violet"},{id:"amber",label:"Amber"}],ds=[{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"}],oe=ds,ce=[{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"}],us=["milo","vex","sprout"];function X({className:s,theme:a,template:n,palette:l,contrast:m,accent:g,children:x}){return e.jsx("div",{className:s,"data-scout-theme":a,"data-scout-theme-mode":a,"data-scout-palette":l,"data-scout-contrast":m,"data-scout-accent":g,"data-hudson-theme":a,"data-hudson-template":n,children:x})}function hs({palette:s,theme:a,template:n}){return e.jsxs(X,{className:"s-settings-palette-sample",theme:a,template:n,palette:s,contrast:"balanced",accent:"theme",children:[e.jsxs("span",{className:"s-settings-palette-rail",children:[e.jsx("i",{}),e.jsx("i",{"data-active":!0}),e.jsx("i",{}),e.jsx("i",{})]}),e.jsxs("span",{className:"s-settings-palette-list",children:[e.jsx("i",{}),e.jsx("i",{"data-selected":!0}),e.jsx("i",{})]}),e.jsxs("span",{className:"s-settings-palette-detail",children:[e.jsx("i",{"data-title":!0}),e.jsx("i",{}),e.jsx("i",{}),e.jsx("i",{"data-action":!0})]})]})}function ms({theme:s,template:a,palette:n,contrast:l,accent:m}){return e.jsxs(X,{className:"s-settings-live-preview",theme:s,template:a,palette:n,contrast:l,accent:m,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 gs(){const s=Fe(),{appearanceDetails:a,updateAppearanceDetails:n}=Q();if(!s)return e.jsx("div",{className:"s-settings-inline-note",children:"Theme controls are unavailable in this embedded surface."});const l=s.resolvedTheme??"dark",m=je(s.template)??"hudson",g=ne.find(t=>t.id===a.palette)?.label??"Scout",x=ie.find(t=>t.id===m)?.label??"Rounded",b=le.find(t=>t.id===a.contrast)?.label??"Defined",j=re.find(t=>t.id===a.accent)?.label??"Theme",d=oe.find(t=>t.id===a.avatarStyle)?.label??"Generative",r=ce.find(t=>t.id===a.avatarSize)?.label??"Regular";return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(p,{label:"App layout",right:`currently ${a.shell}`}),e.jsx("div",{className:"s-settings-shell-grid",role:"group","aria-label":"App layout",children:cs.map(t=>{const u=a.shell===t.id;return e.jsxs("button",{type:"button",className:"s-settings-shell-choice","data-shell":t.id,"data-active":u||void 0,"aria-pressed":u,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}),u?e.jsx(R,{className:"s-settings-theme-check",size:15,"aria-hidden":!0}):null]}),e.jsx("small",{children:t.sub})]})]},t.id)})}),e.jsx(p,{label:"Color mode",right:`currently ${l}`}),e.jsx("div",{className:"s-settings-theme-mode-grid",role:"group","aria-label":"Color mode",children:os.map(t=>{const u=t.icon,y=s.theme===t.id,w=t.id==="system"?`Follow this device · resolves to ${s.resolvedTheme??"…"}`:t.sub;return e.jsxs("button",{type:"button",className:"s-settings-theme-mode","data-active":y||void 0,"aria-pressed":y,onClick:()=>s.setTheme(t.id),children:[e.jsx(u,{size:18,strokeWidth:1.7,"aria-hidden":!0}),e.jsxs("span",{children:[e.jsx("strong",{children:t.label}),e.jsx("small",{children:w})]}),y?e.jsx(R,{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(p,{label:"Color theme",right:`currently ${g.toLowerCase()}`}),e.jsx("div",{className:"s-settings-palette-grid",role:"group","aria-label":"Color theme",children:ne.map(t=>{const u=a.palette===t.id;return e.jsxs("button",{type:"button",className:"s-settings-palette-choice","data-active":u||void 0,"aria-pressed":u,onClick:()=>n({palette:t.id}),children:[e.jsx(hs,{palette:t.id,theme:l,template:m}),e.jsxs("span",{className:"s-settings-choice-copy",children:[e.jsxs("span",{className:"s-settings-choice-title",children:[e.jsx("strong",{children:t.label}),u?e.jsx(R,{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(p,{label:"Interface shape",right:`currently ${x.toLowerCase()}`}),e.jsx("div",{className:"s-settings-interface-grid",role:"group","aria-label":"Interface shape",children:ie.map(t=>{const u=m===t.id;return e.jsxs("button",{type:"button",className:"s-settings-interface-choice","data-active":u||void 0,"aria-pressed":u,onClick:()=>s.setTemplate(t.id),children:[e.jsx(X,{className:"s-settings-shape-sample",theme:l,template:t.id,palette:a.palette,contrast:a.contrast,accent:a.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}),u?e.jsx(R,{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(p,{label:"Separation",right:`currently ${b.toLowerCase()}`}),e.jsx("div",{className:"s-settings-contrast-grid",role:"group","aria-label":"Interface contrast",children:le.map(t=>{const u=a.contrast===t.id;return e.jsxs("button",{type:"button",className:"s-settings-contrast-choice","data-active":u||void 0,"aria-pressed":u,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(p,{label:"Signal accent",right:`currently ${j.toLowerCase()}`}),e.jsx("div",{className:"s-settings-accent-row",role:"group","aria-label":"Signal accent",children:re.map(t=>{const u=a.accent===t.id;return e.jsxs("button",{type:"button",className:"s-settings-accent-choice","data-accent-option":t.id,"data-active":u||void 0,"aria-pressed":u,"aria-label":`${t.label} accent`,onClick:()=>n({accent:t.id}),children:[e.jsx(X,{className:"s-settings-accent-dot",theme:l,template:m,palette:a.palette,contrast:a.contrast,accent:t.id,children:e.jsx("i",{})}),e.jsx("span",{children:t.label}),u?e.jsx(R,{size:13,"aria-hidden":!0}):null]},t.id)})}),e.jsx(p,{label:"Avatar system",right:`currently ${d.toLowerCase()}`}),e.jsx("div",{className:"s-settings-avatar-grid",role:"group","aria-label":"Avatar system",children:oe.map(t=>{const u=a.avatarStyle===t.id;return e.jsxs("button",{type:"button",className:"s-settings-palette-choice s-settings-avatar-choice","data-active":u||void 0,"aria-pressed":u,onClick:()=>n({avatarStyle:t.id}),children:[e.jsx("div",{className:"s-settings-avatar-preview",children:t.id==="crew"?e.jsx(J,{slug:"milo",size:38,ring:!1,badge:!1}):t.id==="chip"?e.jsx(J,{slug:"milo",size:38,chip:!0,ring:!1,badge:!1}):e.jsx(te,{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}),u?e.jsx(R,{className:"s-settings-theme-check",size:14,"aria-hidden":!0}):null]}),e.jsx("small",{children:t.sub}),e.jsxs("span",{children:[t.spec,(()=>{const y=ye(t.id);return y?` · ${y.covered} of ${y.total} cast`:" · every agent"})()]})]})]},t.id)})}),e.jsx(p,{label:"Avatar size",right:`currently ${r.toLowerCase()}`}),e.jsx("div",{className:"s-settings-avatar-size-row",role:"group","aria-label":"Avatar size",children:ce.map(t=>{const u=a.avatarSize===t.id,y=se("row",t.id)??24;return e.jsxs("button",{type:"button",className:"s-settings-avatar-size-choice","data-active":u||void 0,"aria-pressed":u,onClick:()=>n({avatarSize:t.id}),children:[e.jsx("span",{className:"s-settings-avatar-size-sample","aria-hidden":!0,children:us.map(w=>a.avatarStyle==="sprite"?e.jsx(te,{name:w,size:y},w):e.jsx(J,{slug:w,size:y,chip:a.avatarStyle==="chip",ring:!1,badge:!1},w))}),e.jsxs("span",{className:"s-settings-choice-title",children:[e.jsx("strong",{children:t.label}),u?e.jsx(R,{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:`${y}PX ROW · ${se("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(p,{label:"Live specimen",right:l}),e.jsx(ms,{theme:l,template:m,palette:a.palette,contrast:a.contrast,accent:a.accent}),e.jsxs("dl",{className:"s-settings-theme-readout",children:[e.jsxs("div",{children:[e.jsx("dt",{children:"Palette"}),e.jsx("dd",{children:g})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Shape"}),e.jsx("dd",{children:x})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Separation"}),e.jsx("dd",{children:b})]}),e.jsxs("div",{children:[e.jsx("dt",{children:"Accent"}),e.jsx("dd",{children:j})]})]}),e.jsx("p",{className:"s-settings-preview-note",children:"Each control changes one visual axis. Success, warning, and failure colors keep their meaning."})]})]})]})}function ps({profile:s,update:a}){const{appearanceDetails:n,updateAppearanceDetails:l}=Q(),[m,g]=o.useState(n.operatorCharacter||"milo"),x=m,[b,j]=o.useState(!0),d=ee.find(t=>t.slug.toLowerCase()===x.toLowerCase())??ee[0],r=t=>{g(t),l({operatorCharacter:t})};return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(p,{label:"Operator Character Stage",right:"cast mascot & identity"}),e.jsxs("div",{className:"s-settings-stage-hero-card","data-open":b?"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:b?"FULL FIGURE BREAKOUT":"COIN DISC FRAMING"})]}),e.jsx("button",{type:"button",className:"s-settings-stage-toggle-btn",onClick:()=>j(t=>!t),title:b?"Collapse to coin framing":"Break out to full body figure",children:b?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(qe,{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(He,{slug:x,open:b,onToggle:()=>j(t=>!t),coin:64,figure:256,state:"working"}),e.jsx("span",{className:"s-settings-stage-click-hint",children:b?"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:s.name||"Operator"}),e.jsxs("span",{children:[s.handle||"@you"," · ",s.pronouns||"—"]})]}),e.jsxs("div",{className:"s-settings-hue-wrap",children:[e.jsx("span",{className:"s-settings-field-label",children:"Stage & Identity Hue"}),e.jsx("div",{className:"s-settings-hue-row",children:is.map(t=>e.jsx("button",{type:"button",onClick:()=>a({hue:t}),className:`s-settings-hue-dot${s.hue===t?" s-settings-hue-dot--active":""}`,style:{background:ls(t)},title:`Hue ${t}°`},t))})]})]})]})]})]}),e.jsxs(e.Fragment,{children:[e.jsx(p,{label:"Your character mascot",right:`currently ${d.name.toLowerCase()}`}),e.jsx("div",{className:"s-settings-cast-grid-wrap",children:e.jsx(_e,{selectedSlug:x,onSelect:r})})]}),e.jsx(N,{label:"Display name",hint:"Shown when agents address you.",children:e.jsx(_,{value:s.name,onChange:t=>a({name:t})})}),e.jsx(N,{label:"Handle",hint:"Used in @mentions across threads.",children:e.jsx(_,{value:s.handle,onChange:t=>a({handle:t}),mono:!0})}),e.jsx(N,{label:"Pronouns",children:e.jsx(_,{value:s.pronouns,onChange:t=>a({pronouns:t})})}),e.jsx(p,{label:"How agents understand you",right:"shipped as system prompt context"}),e.jsx(N,{label:"Operator bio",hint:"How you want to be worked with. Agents read this before asking you things.",children:e.jsx(ae,{value:s.bio,onChange:t=>a({bio:t}),rows:4})}),e.jsxs("div",{className:"s-settings-two-col",children:[e.jsx(N,{label:"Timezone",children:e.jsx(_,{value:s.timezone,onChange:t=>a({timezone:t}),mono:!0})}),e.jsx(N,{label:"Working hours",children:e.jsx(_,{value:s.workingHours,onChange:t=>a({workingHours:t}),mono:!0})})]}),e.jsx(p,{label:"Ephemeral agent names",right:"rotation pool for one-off agents"}),e.jsx(N,{label:"Name pool",hint:s.provisionalAgentNames.length>0?`${s.provisionalAgentNamesResolvedCount} names active (${s.provisionalAgentNamesSource}). Preview: ${s.provisionalAgentNamesPreview.join(", ")}${s.provisionalAgentNamesResolvedCount>s.provisionalAgentNamesPreview.length?", …":""}`:"Leave empty to use Scout's built-in rotation. One short name per line.",children:e.jsx(ae,{value:s.provisionalAgentNames.join(`
2
- `),onChange:t=>a({provisionalAgentNames:t.split(/\r?\n/u).map(u=>u.trim()).filter(Boolean)}),rows:6})}),e.jsx(N,{label:"Pool mode",hint:"Replace uses only your list. Add to defaults prepends yours, then Scout's built-in names.",children:e.jsx(H,{value:s.provisionalAgentNamesMode,onChange:t=>a({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 bs({profile:s,update:a}){return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(p,{label:"Interrupt policy"}),e.jsx(N,{label:"When agents can ping you directly",hint:"Blocking-only means only asks that truly stall work. Others get batched.",children:e.jsx(H,{value:s.interruptThreshold,onChange:n=>a({interruptThreshold:n}),options:[{id:"always",label:"Always",sub:"any ask, any time"},{id:"blocking-only",label:"Blocking only",sub:"stuck agents · default"},{id:"batched",label:"Batched",sub:"grouped every 15m"},{id:"never",label:"Never",sub:"queue only, I'll check in"}]})}),e.jsxs("div",{className:"s-settings-two-col",children:[e.jsx(N,{label:"Batch window (min)",children:e.jsx(rs,{value:s.batchWindow,min:5,max:60,step:5,onChange:n=>a({batchWindow:n}),unit:"min"})}),e.jsx(N,{label:"Quiet hours",children:e.jsx(_,{value:s.quietHours,onChange:n=>a({quietHours:n}),mono:!0})})]}),e.jsx(p,{label:"Where to reach you"}),e.jsx(N,{label:"Preferred channel",children:e.jsx(H,{value:s.channel,onChange:n=>a({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(p,{label:"Tone calibration",right:"how agents write to you"}),e.jsxs("div",{className:"s-settings-two-col",children:[e.jsx(N,{label:"Verbosity",children:e.jsx(H,{stacked:!0,value:s.verbosity,onChange:n=>a({verbosity:n}),options:[{id:"terse",label:"Terse",sub:"one-liners, answers only"},{id:"normal",label:"Normal",sub:"context + answer"},{id:"detailed",label:"Detailed",sub:"show reasoning"}]})}),e.jsx(N,{label:"Tone",children:e.jsx(H,{stacked:!0,value:s.tone,onChange:n=>a({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 vs({clientCredentials:s,serverCredentials:a,reloadCredentials:n}){const[l,m]=o.useState(""),[g,x]=o.useState(!1),[b,j]=o.useState(null),d=a?.openai??null,r=!!d?.configured,t=d?.source==="env"?"OPENAI_API_KEY":d?.source==="local-config"?"local Scout config":d?.source==="local-store"?"local OpenScout store":"missing",u=d?.source==="local-store"&&s?.configured?"local OpenScout store + HudVault mirror":t,y=d?.preview??s?.preview??null,w=async()=>{x(!0),j(null);try{const S=l.trim();await ke(S);let C=null;try{await Ce(S)}catch(A){C=A instanceof Error?A.message:"HudVault save failed."}m(""),await n(),j(C?`Saved to local OpenScout store. Browser mirror failed: ${C}`:"Saved to local OpenScout store and Hudson Vault.")}catch(S){j(S instanceof Error?S.message:"Could not save key.")}finally{x(!1)}},$=async()=>{x(!0),j(null);try{const[S,C]=await Promise.allSettled([Ae(),Ee()]);m(""),await n(),S.status==="rejected"||C.status==="rejected"?j("Cleared what I could; one credential store did not respond."):j(d?.source==="env"||d?.source==="local-config"?"Removed saved key. Server fallback is still configured.":"Removed saved key.")}catch(S){j(S instanceof Error?S.message:"Could not clear key.")}finally{x(!1)}};return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(p,{label:"Model providers",right:r?`configured · ${u}`:"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:r?"var(--green)":"var(--dim)"},children:["●"," ",r?"ready":"missing"]})]}),e.jsxs("div",{className:"s-settings-relay-meta",children:[y??"No key stored"," · ",u]}),e.jsx("div",{className:"s-settings-relay-desc",children:"Scout stores user-entered keys in the local OpenScout credential store and keeps a HudVault mirror for this browser profile."})]})}),e.jsx(N,{label:"OpenAI API key",hint:"Saved locally. Existing keys are never shown again.",children:e.jsx("input",{className:"s-settings-input s-settings-input--mono",type:"password",value:l,placeholder:r?"Saved key configured":"sk-...",autoComplete:"off",spellCheck:!1,onChange:S=>m(S.target.value)})}),b&&e.jsx("div",{className:"s-settings-field-hint",children:b}),e.jsxs("div",{className:"s-settings-button-row",children:[e.jsx("button",{type:"button",className:"s-btn",disabled:g||!l.trim(),onClick:()=>{w()},children:g?"Saving":"Save key"}),e.jsx("button",{type:"button",className:"s-btn",disabled:g||!(s?.configured||d?.source==="local-store"),onClick:()=>{$()},children:"Clear saved key"})]})]})}const xs=[{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 js(){const s=fe(Te,!0),[a,n]=o.useState(null),[l,m]=o.useState(null),[g,x]=o.useState(null),[b,j]=o.useState([]),[d,r]=o.useState([]),[t,u]=o.useState(!0),[y,w]=o.useState(!1),[$,S]=o.useState(!1),[C,A]=o.useState(!1),[I,f]=o.useState(null),D=o.useCallback(async()=>{u(!0);try{const[i,c,v,Y]=await Promise.all([$e(),Le(12).catch(()=>[]),Oe().catch(()=>null),ts().catch(()=>null)]);n(i.settings),j(i.devices),r(c),m(v),x(Y),f(null)}catch(i){f(i instanceof Error?i.message:String(i))}finally{u(!1)}},[]);o.useEffect(()=>{D()},[D]);const V=o.useCallback(async i=>{w(!0),f(null);try{const c=await Me(i);n(c.settings),j(c.devices)}catch(c){f(c instanceof Error?c.message:String(c))}finally{w(!1)}},[]),z=o.useCallback(async i=>{S(!0),f(null);try{const c=await Pe(i);m(c),Ie(c)}catch(c){f(c instanceof Error?c.message:String(c))}finally{S(!1)}},[]),B=o.useCallback(async i=>{A(!0),f(null);try{const c=await as(i?"host":"browser");x(c),ns(c)}catch(c){f(c instanceof Error?c.message:String(c))}finally{A(!1)}},[]);if(t&&!a)return e.jsx("div",{className:"s-settings-field-hint",children:"Loading voice settings…"});const F=a?.inputDeviceId??b.find(i=>i.isDefault)?.id??"",T=a?.permissions?.find(i=>i.kind==="microphone")??null,O=a?.permissions?.find(i=>i.kind==="speechRecognition")??null,L=(a?.permissions?.length??0)>0||b.length>0,E=s&&l?.enabled===!0,Z=$||!s||!l||l.locked,W=s?l?l.locked?`Controlled by OPENSCOUT_REALTIME_VOICE_ENABLED · ${l.enabled?"on":"off"}`:E?"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.",P=g?.playback==="host",G=C||!g||g.locked,q=g?g.locked?`Controlled by ${es} · ${g.playback}`:P?L?"On. Scout Menu speaks replies on this Mac in its own voice.":"On, but Scout Menu is offline. Launch it on this Mac to hear replies.":"Off. Replies play in this browser.":"Playback settings are temporarily unavailable.",h=[L?null:"Scout voice host is offline. Launch Scout Menu on this Mac — the browser does not capture audio.",T?.status==="denied"||T?.status==="restricted"?T?.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.":T?.canRequest?"Microphone has not been requested yet. Request access or tap the mic in chat to show the macOS prompt.":null,!O?.granted&&(O?.status==="denied"||O?.status==="restricted")?O?.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,a?.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(i=>!!i);return e.jsxs("div",{className:"s-settings-col-gap",children:[I&&e.jsx("div",{className:"s-settings-field-hint",style:{color:"var(--amber)"},children:I}),e.jsx(p,{label:"Realtime conversation",right:"operator control"}),e.jsxs("div",{className:"s-settings-realtime-voice","data-enabled":E||void 0,"data-unavailable":!s||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:W})]}),e.jsxs("button",{type:"button",role:"switch","aria-checked":E,"aria-label":"Enable live voice on this Scout",disabled:Z,"data-checked":E||void 0,className:"s-settings-switch",onClick:()=>{z(!E)},children:[e.jsx("span",{className:"s-settings-switch-thumb","aria-hidden":"true"}),e.jsx("span",{className:"sr-only",children:E?"On":"Off"})]})]}),e.jsx(p,{label:"Spoken replies",right:"where they play"}),e.jsxs("div",{className:"s-settings-realtime-voice","data-enabled":P||void 0,children:[e.jsxs("span",{className:"s-settings-realtime-voice-copy",children:[e.jsx("strong",{children:"Speak on this Mac"}),e.jsx("span",{children:"Spoken replies and briefs play through Scout Menu on the Mac instead of this browser tab, in the voice chosen in Scout Menu › Voice. Installed voices such as Kokoro work only this way. A surface or agent can still name the browser for one utterance."}),e.jsx("em",{children:q})]}),e.jsxs("button",{type:"button",role:"switch","aria-checked":P,"aria-label":"Speak on this Mac",disabled:G,"data-checked":P||void 0,className:"s-settings-switch",onClick:()=>{B(!P)},children:[e.jsx("span",{className:"s-settings-switch-thumb","aria-hidden":"true"}),e.jsx("span",{className:"sr-only",children:P?"On":"Off"})]})]}),e.jsx(ze,{hostOnline:L,micPermission:T,speechPermission:O,modelReady:a?.modelReady}),e.jsx(p,{label:"Scout Menu permissions",right:"voice host"}),e.jsx(Be,{permissions:a?.permissions,hostOnline:L,disabled:y||t,onError:i=>f(i),onRefresh:D}),e.jsx(p,{label:"Transcription"}),e.jsx(N,{label:"Engine",hint:a?.modelReady?"Parakeet is warm and ready.":a?.modelInstalled?"Parakeet is installed; first dictation may warm the model.":"Parakeet downloads on first use. Apple Speech stays available meanwhile.",children:e.jsx(H,{value:a?.preference??"auto",onChange:i=>{n(c=>c&&{...c,preference:i}),V({preference:i})},options:xs,columns:3})}),e.jsx(N,{label:"Microphone input",hint:"Scout Menu uses the macOS system default input unless you pick a device here. The browser never captures audio.",children:b.length>0?e.jsx("select",{className:"s-settings-input",value:F,disabled:y,onChange:i=>{const c=i.target.value||null;n(v=>v&&{...v,inputDeviceId:c,inputDeviceName:b.find(Y=>Y.id===c)?.name??null}),V({inputDeviceId:c})},children:b.map(i=>e.jsxs("option",{value:i.id,children:[i.name,i.isDefault?" (system default)":""]},i.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(p,{label:"Diagnostics"}),e.jsx("ul",{className:"s-settings-field-hint",style:{margin:0,paddingLeft:"1.1rem",display:"grid",gap:"0.35rem"},children:h.map(i=>e.jsx("li",{children:i},i))}),e.jsx(p,{label:"Recent sessions",right:d.length?`${d.length} shown`:"none"}),d.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:d.map(i=>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:[i.status," · ",i.lastEvent??"started"]}),e.jsxs("div",{className:"s-settings-device-meta",children:[i.surface," · ",Re(i.updatedAt),i.error?` · ${i.error}`:""]}),i.lastTranscript?e.jsx("div",{className:"s-settings-field-hint",style:{marginTop:"0.2rem"},children:i.lastTranscript.length>96?`${i.lastTranscript.slice(0,96)}…`:i.lastTranscript}):null]})},i.sessionId))}),e.jsx("div",{className:"s-settings-button-row",children:e.jsx("button",{type:"button",className:"s-btn",disabled:t||y,onClick:()=>{D()},children:t?"Refreshing…":"Refresh"})})]})}const ys={desktop:"◻",mobile:"▯",tablet:"▭"};function fs({device:s}){const a=s.status==="this-device"?"var(--accent)":s.status==="online"?"var(--green)":"var(--dim)";return e.jsxs("div",{className:"s-settings-device-row",children:[e.jsx("span",{className:"s-settings-device-icon",children:ys[s.kind]??"□"}),e.jsxs("div",{children:[e.jsx("div",{className:"s-settings-device-name",children:s.name}),e.jsxs("div",{className:"s-settings-device-meta",children:[s.kind," · via ",s.relay," · ",s.lastSeen]})]}),e.jsxs("span",{className:"s-settings-device-status",style:{color:a},children:["●"," ",s.status==="this-device"?"this device":s.status]}),e.jsx("button",{className:"s-btn",disabled:s.status==="this-device",children:s.status==="this-device"?"—":"Unpair"})]})}function Ss({pairing:s}){const a=[{id:"local",name:"This machine",kind:"desktop",status:"this-device",relay:"local",lastSeen:"now"}];if(s?.trustedPeers)for(const n of s.trustedPeers){const l=n.fingerprint===s.connectedPeerFingerprint;a.push({id:n.fingerprint,name:n.name??"Paired device",kind:"mobile",status:l?"online":"offline",relay:"tailscale",lastSeen:n.lastSeenLabel??"—"})}return e.jsxs("div",{className:"s-settings-col-gap",children:[e.jsx(p,{label:`Paired devices · ${a.length}`}),e.jsx("div",{className:"s-settings-col-gap",style:{gap:10},children:a.map(n=>e.jsx(fs,{device:n},n.id))}),e.jsx(p,{label:"Relay"}),e.jsxs("div",{className:"s-settings-relay-card",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"s-settings-relay-title",children:["Relay · ",e.jsxs("span",{className:"s-settings-device-status",style:{color:s?.isRunning?"var(--green)":"var(--dim)"},children:["●"," ",s?.isRunning?"connected":"offline"]})]}),e.jsxs("div",{className:"s-settings-relay-meta",children:[s?.relay??"not configured"," · tailscale"]}),e.jsx("div",{className:"s-settings-relay-desc",children:"Agents route through your relay to reach mobile when the app is backgrounded. End-to-end encrypted; keys never leave your devices."})]}),e.jsx("button",{className:"s-btn",children:"Configure"})]})]})}function K(s,a,n=!1){if(!s&&!a)return"Not reported";const l=s||"detached";return a?`${l} @ ${a}${n?" (modified)":""}`:l}function ge(){return navigator.userAgentData?.platform||navigator.platform||"Unknown"}function k({label:s,value:a,detail:n}){return e.jsxs("div",{className:"s-settings-about-fact",children:[e.jsx("dt",{children:s}),e.jsxs("dd",{children:[e.jsx("code",{children:a}),n?e.jsx("span",{children:n}):null]})]})}function de(s){const{build:a,mesh:n}=s,l=n?.health.build??null,m=n?.localNode?n.nodes[n.localNode.id]?.host:void 0,g=ge();return["OpenScout troubleshooting report",`Collected: ${s.collectedAt.toISOString()}`,"","[Web]",`Observed: ${s.buildCollectedAt?.toISOString()??"unknown"}`,`Version: ${a?.version??"unknown"}`,`Mode: ${a?.mode??"unknown"}`,`Source: ${K(a?.branch,a?.commit,a?.dirty===!0)}`,`Server: ${a?.server?`${a.server.engine} ${a.server.engineVersion}`:"unknown"}`,`Server platform: ${a?.server?`${a.server.platform}/${a.server.arch}`:"unknown"}`,"","[Broker]",`Observed: ${s.meshCollectedAt?.toISOString()??"unknown"}`,`Reachable: ${n?.health.reachable===void 0?"unknown":n.health.reachable?"yes":"no"}`,`Healthy: ${n?.health.ok===void 0?"unknown":n.health.ok?"yes":"no"}`,`Error: ${n?.health.error??"none reported"}`,`Package: ${l?.packageName??"unknown"}`,`Version: ${l?.version??"unknown"}`,`Mode: ${l?.mode??"unknown"}`,`Source: ${K(l?.branch,l?.commit)}`,`Build: ${l?.buildNumber??l?.buildId??"not reported"}`,`Node: ${n?.health.nodeId??"unknown"}`,`Broker URL: ${n?.brokerUrl??"unknown"}`,"","[Host]",`Name: ${n?.localNode?.name??"unknown"}`,`Scout version: ${m?.scoutVersion??"not reported"}`,`System: ${m?.os??"unknown"}`,`Architecture: ${m?.arch??a?.server?.arch??"unknown"}`,"","[Browser]",`Platform: ${g}`,`User agent: ${navigator.userAgent}`,`Origin: ${window.location.origin}`].join(`
3
- `)}async function Ns(s){if(navigator.clipboard?.writeText){await navigator.clipboard.writeText(s);return}const a=document.createElement("textarea");a.value=s,a.setAttribute("readonly",""),a.style.position="fixed",a.style.opacity="0",document.body.appendChild(a),a.select();const n=document.execCommand("copy");if(a.remove(),!n)throw new Error("Clipboard access is unavailable")}function ws(){const[s,a]=o.useState(null),[n,l]=o.useState(!0),[m,g]=o.useState(null),[x,b]=o.useState("idle"),j=o.useCallback(async(S=!1)=>{l(!0),g(null),b("idle");const[C,A]=await Promise.allSettled([M(S?"/api/build?refresh=1":"/api/build"),M("/api/mesh")]),I=new Date;if(a(f=>({build:C.status==="fulfilled"?C.value:f?.build??null,mesh:A.status==="fulfilled"?A.value:f?.mesh??null,collectedAt:I,buildCollectedAt:C.status==="fulfilled"?I:f?.buildCollectedAt??null,meshCollectedAt:A.status==="fulfilled"?I:f?.meshCollectedAt??null})),C.status==="rejected"||A.status==="rejected"){const f=[C.status==="rejected"?"web build":null,A.status==="rejected"?"broker":null].filter(Boolean).join(" and ");g(`Could not refresh ${f} details. Last reported values are kept when available.`)}l(!1)},[]);o.useEffect(()=>{j()},[j]);const d=s?.build??null,r=s?.mesh??null,t=r?.health.build??null,u=r?.localNode?r.nodes[r.localNode.id]?.host:void 0,y=ge(),w=r===null?"not reported":r.health.reachable?r.health.ok?"healthy":"degraded":"unreachable",$=o.useCallback(()=>{s&&Ns(de(s)).then(()=>{b("copied"),setTimeout(()=>b("idle"),1800)}).catch(()=>{b("error")})},[s]);return n&&!s?e.jsx("div",{className:"s-settings-loading",children:"Collecting version details…"}):e.jsxs("div",{className:"s-settings-about",children:[e.jsxs("div",{className:"s-settings-about-summary",children:[e.jsxs("div",{children:[e.jsx("span",{className:"s-settings-about-product",children:"OpenScout Web"}),e.jsx("strong",{children:d?.version?`v${d.version}`:"Version unavailable"}),e.jsxs("span",{className:"s-settings-about-source",children:[d?.mode??"unknown mode"," · ",K(d?.branch,d?.commit,d?.dirty===!0)]}),e.jsxs("span",{className:"s-settings-about-collected",children:["Snapshot collected ",s?.collectedAt.toLocaleString()??"—"]})]}),e.jsxs("div",{className:"s-settings-about-actions",children:[e.jsxs("button",{type:"button",className:"s-btn",onClick:()=>{j(!0)},disabled:n,children:[e.jsx(Ke,{size:13,"aria-hidden":!0}),n?"Refreshing…":"Refresh"]}),e.jsxs("button",{type:"button",className:"s-btn s-settings-about-copy",onClick:$,disabled:!s,children:[x==="copied"?e.jsx(R,{size:13,"aria-hidden":!0}):e.jsx(We,{size:13,"aria-hidden":!0}),x==="copied"?"Copied report":x==="error"?"Copy failed":"Copy report"]})]})]}),m?e.jsx("div",{className:"s-settings-about-warning",role:"status",children:m}):null,x==="error"&&s?e.jsxs("div",{className:"s-settings-about-copy-fallback",role:"alert",children:[e.jsx("strong",{children:"Clipboard access was denied."}),e.jsx("span",{children:"Select and copy the report below."}),e.jsx("textarea",{readOnly:!0,value:de(s),"aria-label":"OpenScout troubleshooting report"})]}):null,e.jsx(p,{label:"Web application",right:"release and source identity"}),e.jsxs("dl",{className:"s-settings-about-ledger",children:[e.jsx(k,{label:"Package version",value:d?.version??"Unknown",detail:`Observed ${s?.buildCollectedAt?.toLocaleString()??"at an unknown time"}. Use this when comparing releases.`}),e.jsx(k,{label:"Run mode",value:d?.mode??"Unknown"}),e.jsx(k,{label:"Source checkout",value:K(d?.branch,d?.commit,d?.dirty===!0),detail:"A dev SHA identifies the running checkout; it is not the release version."}),e.jsx(k,{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(p,{label:"Broker",right:w}),e.jsxs("dl",{className:"s-settings-about-ledger",children:[e.jsx(k,{label:"Status",value:w,detail:[`Observed ${s?.meshCollectedAt?.toLocaleString()??"at an unknown time"}.`,r?.health.error].filter(Boolean).join(" ")}),e.jsx(k,{label:"Package",value:t?.packageName??"Not reported"}),e.jsx(k,{label:"Version",value:t?.version??"Not reported"}),e.jsx(k,{label:"Source",value:K(t?.branch,t?.commit)}),e.jsx(k,{label:"Build",value:t?.buildNumber??t?.buildId??"Not reported"}),e.jsx(k,{label:"Node",value:r?.health.nodeId??"Not reported",detail:r?.brokerUrl})]}),e.jsx(p,{label:"Host and browser",right:"troubleshooting context"}),e.jsxs("dl",{className:"s-settings-about-ledger",children:[e.jsx(k,{label:"Host",value:r?.localNode?.name??"Not reported"}),e.jsx(k,{label:"Host Scout",value:u?.scoutVersion??"Not reported"}),e.jsx(k,{label:"Host system",value:[u?.os,u?.arch??d?.server?.arch].filter(Boolean).join(" · ")||"Not reported"}),e.jsx(k,{label:"Browser platform",value:y}),e.jsx(k,{label:"Browser",value:navigator.userAgent}),e.jsx(k,{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 U=[{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 · playback · 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"}],ue={appearance:"Appearance",operator:"Operator identity",comms:"Communication",voice:"Voice",credentials:"Credentials",devices:"Paired devices",about:"About OpenScout"},ks={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."},Cs={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:s,onClose:a,section:n,onSectionChange:l,presentation:m}){const{refreshOnboarding:g}=Q(),{ref:x,onKeyDown:b}=De(s&&m==="drawer"),[j,d]=o.useState("appearance"),r=n??j,t=o.useCallback(h=>{l?l(h):d(h)},[l]),[u,y]=o.useState(Cs),[w,$]=o.useState(null),[S,C]=o.useState(null),[A,I]=o.useState(null),[f,D]=o.useState(!1),[V,z]=o.useState("saved"),B=o.useRef(null),F=o.useRef(!0),T=o.useRef(null);o.useEffect(()=>()=>{F.current=!1},[]);const O=o.useCallback(async()=>{const[h,i]=await Promise.allSettled([Se(),Ne()]),c=h.status==="fulfilled"?h.value:null;let v=i.status==="fulfilled"?i.value:null;c?.configured&&!v?.openai.configured&&(v=await we().catch(()=>v)),C(c),I(v)},[]),L=o.useCallback(async()=>{try{const h=M("/api/user"),i=Promise.race([M("/api/pairing-state"),new Promise((Y,xe)=>setTimeout(()=>xe(new Error("timeout")),3e3))]),[c,v]=await Promise.allSettled([h,i]);c.status==="fulfilled"&&y(c.value),v.status==="fulfilled"&&$(v.value),await O()}finally{D(!0)}},[O]);o.useEffect(()=>{s&&r!=="appearance"&&r!=="about"&&!f&&L()},[f,s,L,r]),o.useEffect(()=>{if(!s||!window.matchMedia("(max-width: 760px)").matches)return;const h=window.requestAnimationFrame(()=>{T.current?.scrollIntoView({block:"nearest",inline:"nearest"})});return()=>window.cancelAnimationFrame(h)},[s,r]);const E=o.useCallback(h=>{const c=(U.findIndex(v=>v.id===r)+h+U.length)%U.length;t(U[c].id)},[r]),Z=o.useCallback(h=>{if(b(h),m==="drawer"&&h.key==="Escape"){h.preventDefault(),a();return}h.target?.closest(".s-settings-rail")&&(h.key==="ArrowDown"?(h.preventDefault(),E(1)):h.key==="ArrowUp"&&(h.preventDefault(),E(-1)))},[E,a,b,m]),W=o.useCallback(h=>{B.current&&clearTimeout(B.current),z("saving"),B.current=setTimeout(()=>{M("/api/user",{method:"POST",body:JSON.stringify(h)}).then(()=>g()).then(()=>{F.current&&z("saved")}).catch(()=>{F.current&&z("error")})},400)},[g]),P=o.useCallback(h=>{y(i=>{const c={...i,...h};return W(c),c})},[W]),G=e.jsx("nav",{className:"s-settings-rail","aria-label":"Settings pages",children:U.map(h=>{const i=e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"s-settings-rail-label",children:h.label}),e.jsx("span",{className:"s-settings-rail-sub",children:h.sub})]}),c=`s-settings-rail-btn${r===h.id?" s-settings-rail-btn--active":""}`;return m==="page"?e.jsx("a",{ref:r===h.id?v=>{T.current=v}:void 0,href:Ve({view:"settings",section:h.id}),"aria-current":r===h.id?"page":void 0,className:c,onClick:v=>{v.button!==0||v.metaKey||v.ctrlKey||v.shiftKey||v.altKey||(v.preventDefault(),t(h.id))},children:i},h.id):e.jsx("button",{ref:r===h.id?v=>{T.current=v}:void 0,onClick:()=>t(h.id),"aria-current":r===h.id?"page":void 0,className:c,children:i},h.id)})}),q=e.jsx("main",{className:"s-settings-content",id:`settings-${r}`,"data-settings-section":r,tabIndex:-1,children:r==="appearance"?e.jsx(gs,{}):r==="about"?e.jsx(ws,{}):f?e.jsxs(e.Fragment,{children:[r==="operator"&&e.jsx(ps,{profile:u,update:P}),r==="comms"&&e.jsx(bs,{profile:u,update:P}),r==="credentials"&&e.jsx(vs,{clientCredentials:S,serverCredentials:A,reloadCredentials:O}),r==="voice"&&e.jsx(js,{}),r==="devices"&&e.jsx(Ss,{pairing:w})]}):e.jsx("div",{className:"s-settings-loading",children:"Loading settings…"})});return m==="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:ue[r]}),e.jsx("p",{children:ks[r]})]}),r==="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":V,role:"status","aria-live":"polite",children:[e.jsx("span",{"aria-hidden":"true"}),V==="saving"?"Saving changes…":V==="error"?"Couldn’t save changes":"Saved automatically"]})]}),e.jsxs("div",{className:"s-settings-page-layout",children:[G,q]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:`s-settings-scrim ${s?"s-settings-scrim--open":"s-settings-scrim--closed"}`,onClick:a}),e.jsxs("div",{ref:x,role:"dialog","aria-modal":"true","aria-label":"Settings",className:`s-settings-drawer ${s?"s-settings-drawer--open":"s-settings-drawer--closed"}`,onKeyDown:Z,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:ue[r]}),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:a,children:"×"})]}),G,q,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:a,children:"Done"})]})]})]})}function be(s){return e.jsx(pe,{...s,presentation:"drawer"})}function ve({section:s="appearance",onSectionChange:a}){return e.jsx(pe,{open:!0,onClose:()=>{},section:s,onSectionChange:a,presentation:"page"})}const Xs=Object.freeze(Object.defineProperty({__proto__:null,SettingsDrawer:be,SettingsPage:ve},Symbol.toStringTag,{value:"Module"})),Zs=Object.freeze(Object.defineProperty({__proto__:null,SettingsDrawer:be,SettingsPage:ve},Symbol.toStringTag,{value:"Module"}));export{ve as S,Xs as a,Zs as b};
@@ -1 +0,0 @@
1
- import{j as i,r as d}from"./index-EsrkGBcv.js";import{E as it}from"./EmptyState-CZlrHXy-.js";import{S as B}from"./StatusPill-2gCP6H7A.js";import{a as M}from"./api-DSqpVKC7.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-1L0IQm2w.js";import{S as At}from"./SettingsDrawer-juCpnbH6.js";/* empty css */import"./CastPicker-BXUtPAGC.js";import"./CrewAvatar-kTznzqcO.js";import"./HarnessMark-C4naWc16.js";import"./runtime-picker-DXu2bOTh.js";import"./scout-voice-CZx60X6E.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-OvccU82H.js";import"./createLucideIcon-zZ8Hx7er.js";import"./router-DCtl8wqb.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-3RfJpen8.js";import"./check-lrJ3a73a.js";import"./NewChatComposer-C97-iTMK.js";import"./media-blobs-Bi8pxr1u.js";import"./index-724SdE6r.js";import"./conversation-model-FxDeWlle.js";import"./agent-state-DDhnFEEP.js";import"./conversations-DoAAO6kA.js";import"./colors-CFlbwC25.js";import"./NewChatOrigin-DFbF_XvR.js";import"./keyboard-nav-DDHegDbx.js";import"./x-DAehov0E.js";import"./chevron-down-l1mrh5S9.js";import"./search-DT42oyRW.js";import"./file-text-CnISiiw6.js";import"./Provider-C35yu29I.js";import"./theme-vars-DNK0nn3k.js";import"./provider-Dojd8quC.js";import"./machine-scope-DJt9RZ2w.js";import"./sse-BCPRocpq.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-Bk3nyrkj.js";import"./model-CBkMvT1w.js";import"./DocumentFocusViewer-DJr0v0D_.js";import"./TextDocumentSurface-D52m7Vd8.js";import"./index-CHD0qcfL.js";import"./chevron-right-DrfqcerI.js";import"./folder-D5prSkzz.js";import"./chevron-up-CETZJzjV.js";import"./code-xml-BhcNbLWU.js";import"./arrow-left-MVUKauwQ.js";import"./arrow-right-Bp-FpE5V.js";import"./voice-turn-ledger-BMZxlSjg.js";import"./chunk-HRAB3GC3-DbVLgbWX.js";import"./openContent-C6XO6kr5.js";import"./AgentsSubnav-DwNX4yy0.js";import"./SecondaryNav-D7dbV2qo.js";import"./secondaryNavConfig-CS1svh6n.js";import"./nav-destinations-uorRqFxf.js";import"./message-square-BxesYglW.js";import"./terminal-hQKQygcf.js";import"./compass-63TUaz5_.js";import"./settings-BVh7kldq.js";import"./git-branch-B0_fPLO7.js";import"./scroll-text-DNjxhyO2.js";import"./refresh-cw-BmVr7sCD.js";import"./bot-B4zLQ4IN.js";import"./wrench-DR0i5BU7.js";import"./server-QfsgMLk1.js";import"./cpu-BOTa_WLr.js";import"./credentials-OeoF-VKJ.js";import"./AgentAvatar-CrP1eXxk.js";import"./SpriteAvatar-CpZWf54-.js";import"./CrewStage-vdO0qm3D.js";import"./VoicePermissionsPanel-Ok2nfxHw.js";import"./monitor-DTTYEb73.js";import"./copy-xKeM5ZtU.js";import"./sparkles-BjHq_DNK.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 Fs({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{Fs as SettingsScreen};
@@ -1 +0,0 @@
1
- .shared-floor__crew .shared-floor-character{position:relative;flex:0 0 84px;display:grid;place-items:start center;width:84px;height:94px;padding:0;border:0;border-radius:10px;background:transparent;color:var(--floor-ink, #e8edf4);cursor:pointer;transform:translateY(10px);transition:transform .65s cubic-bezier(.16,1,.3,1);isolation:isolate}.shared-floor-character.is-at-work{transform:translateY(-9px)}.shared-floor-character:hover,.shared-floor-character:focus-visible{z-index:8}.shared-floor-character:focus-visible{outline:2px solid var(--floor-accent, #85c6af);outline-offset:4px}.shared-floor-character__sprite{display:block;transform-origin:50% 92%;animation:shared-character-breathe 5.2s ease-in-out infinite;animation-delay:var(--character-delay)}.shared-floor-character.is-working .shared-floor-character__sprite{animation-name:shared-character-work;animation-duration:2.8s}.shared-floor-character__shadow{position:absolute;z-index:-1;top:66px;left:21px;width:42px;height:10px;border-radius:50%;background:#0004}.shared-floor-character__attention{position:absolute;top:-2px;right:2px;display:grid;place-items:center;width:18px;height:21px;border-radius:6px;background:#e6b85b;color:#332714;font-size:15px;font-weight:800}.shared-floor-character__label{position:absolute;top:83px;left:50%;width:max-content;max-width:240px;padding:7px 10px;border-radius:6px;background:var(--floor-bg, #17201f);pointer-events:none;opacity:0;transform:translate(-50%);transition:opacity .12s ease-out;text-align:center}.shared-floor-character__label strong,.shared-floor-character__label small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.4}.shared-floor-character .shared-floor-character__label strong{max-width:220px;font-size:15px;font-weight:600}.shared-floor-character .shared-floor-character__label small{color:var(--floor-muted, #a6b5b0);font-size:12px}.shared-floor-character:hover .shared-floor-character__label,.shared-floor-character:focus-visible .shared-floor-character__label{opacity:1}.shared-floor-character.is-still .shared-floor-character__sprite{animation-play-state:paused}@keyframes shared-character-breathe{0%,to{transform:translateY(0) scaleY(1)}50%{transform:translateY(-1px) scaleY(1.018)}}@keyframes shared-character-work{0%,36%,to{transform:rotate(0) translateY(0)}43%,57%{transform:rotate(-2deg) translateY(-1px)}50%,64%{transform:rotate(1deg) translateY(0)}}.shared-floor-character.has-run .shared-floor-character__sprite{animation-name:shared-character-run;animation-duration:.7s}.shared-floor-character.has-hop .shared-floor-character__sprite{animation-name:shared-character-hop;animation-duration:4.8s}@keyframes shared-character-run{0%,to{transform:translateY(0) rotate(-3deg)}25%{transform:translateY(-3px) rotate(0)}50%{transform:translateY(0) rotate(3deg)}75%{transform:translateY(-3px) rotate(0)}}@keyframes shared-character-hop{0%,75%,to{transform:translateY(0)}80%{transform:translateY(1px) scaleY(.97)}85%{transform:translateY(-6px) scaleY(1.02)}91%{transform:translateY(0) scaleY(.98)}95%{transform:translateY(0) scaleY(1)}}@media(prefers-reduced-motion:reduce){.shared-floor__crew .shared-floor-character{transition:none}.shared-floor-character__sprite{animation:none!important}.shared-floor-character__label{transition:none}}.shared-floor-character__rendered{display:block;width:76px;height:76px;object-fit:contain;-webkit-user-select:none;user-select:none;pointer-events:none}.shared-floor-character__context{display:none;position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%);width:250px;box-sizing:border-box;grid-template-columns:minmax(0,1fr);white-space:normal;overflow-wrap:anywhere;padding:12px 14px;border:1px solid #ffffff20;border-radius:12px;background:#111715f5;box-shadow:0 10px 28px #0006;text-align:left;pointer-events:none;font-size:13px;line-height:1.45;color:#e8edf4}.shared-floor-character:hover .shared-floor-character__context,.shared-floor-character:focus-visible .shared-floor-character__context,.shared-floor-character.is-pinned .shared-floor-character__context{display:grid;gap:7px}.shared-floor-character.is-pinned .shared-floor-character__context{border-color:color-mix(in oklab,var(--floor-accent) 55%,transparent)}.shared-floor-character__context strong{color:var(--floor-accent);font-size:11px}.shared-floor-character__context small{color:var(--floor-muted);font-size:10px}.shared-floor-character__context-activity{color:#bdc8c2}.shared-floor-character__context>*{min-width:0;max-width:100%}.shared-floor__crew .shared-floor-character__label{max-width:145px}.shared-floor__wanderer:focus-within{z-index:7}.shared-floor-character__label strong.shared-floor-character__identity{display:flex;align-items:center;justify-content:center;gap:5px}.shared-floor-character__identity>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shared-floor-character__runtime{display:flex;align-items:center;gap:7px;color:#b8c3c0;font-size:11px;overflow-wrap:anywhere}.shared-floor-character__sprite{position:relative}.shared-floor-character__runtime-mark{position:absolute;display:inline-flex;width:16px;height:16px;transform:translate(-50%,-50%);color:var(--floor-ink, #e8edf4);opacity:1;pointer-events:none}
@@ -1 +0,0 @@
1
- import{C as B,r as h,j as s,h as D}from"./index-EsrkGBcv.js";import{h as J,H as I}from"./HarnessMark-C4naWc16.js";import{C as Q}from"./CrewSprite-Dhryjx2c.js";import{WorldCharacter as X}from"./WorldCharacter-CIIlutQq.js";import{a as Y,S as w}from"./SpriteAvatar-CpZWf54-.js";import{o as Z}from"./lane-observe-CteDwdD-.js";import{f as A}from"./agent-floor-actor-DW8zLht0.js";import{f as tt}from"./floor-character-name-CqJPOlXb.js";import{f as et}from"./floor-preview-text-HrORUJ7D.js";import{f as P}from"./floor-context-model-rWKqaKmV.js";import{R as st}from"./RenderedWorkerSprite-Dhlyg89J.js";import"./RiggedWorkerCharacter-q6QRc7_o.js";import"./agent-state-DDhnFEEP.js";import"./time-Dhsh_2EG.js";import"./tail-display-DHSNmvor.js";import"./lane-edit-display-BjdT9oZl.js";function b(t,r){const e=et(t,r);return!e||/<realtime_|^\s*(?:\{|\[|```|text\(|const |await )/.test(e)?"":e.length>r?`${e.slice(0,r-1).trimEnd()}…`:e}function rt(t,r){const e=A(t,r),c=P([t],r,["tool","message","ask"],1)[0],a=b(t.facts?.currentTask,220);let o="";if(c){const d=c.event;if(d.kind==="tool"){const i=d.tool||"tool";o=/read|open|view/i.test(i)?"Reading context":/edit|write|patch/i.test(i)?"Updating files":/search|grep|find/i.test(i)?"Searching the workspace":/bash|exec|terminal/i.test(i)?"Running a command":`Using ${i}`;const m=b(d.arg,120);m&&/read|open|view|edit|write|search|grep|find/i.test(i)&&(o+=` · ${m}`)}else o=b(d.text,180)||(d.kind==="ask"?"Asking for input":"Sharing an update")}const n=e.posture==="quiet",v=e.posture==="attention"||e.posture==="blocked"?`${e.label}${a?` · ${a}`:""}`:n?a?`Last task · ${a}`:o?`Last activity · ${o}`:"No recent updates":o||a||e.label;return{summary:b(v,76),task:a,activity:o,at:c?.at,state:e.label}}function ot(t,r){if(A(t,r).posture!=="working")return null;const e=new Map;for(const o of t.observe?.events??[]){if(o.kind!=="tool"&&o.kind!=="message")continue;const n=Z(o,t.observe?.metadata?.session?.sessionStart);n===null||n>r||r-n>12e4||(o.kind==="tool"||!e.has(n))&&e.set(n,o.kind)}const c=[...e.keys()].sort((o,n)=>o-n),a=c.at(-1);return a===void 0||r-a>15e3?null:c.length>=3&&a-c[0]>=3e4?"run":e.get(a)==="tool"?"hop":null}function $t({lane:t,now:r,paused:e,playful:c=!1,character:a,rigged:o=!1,pinned:n=!1,onActor:v,displayName:d,crewSlug:i,pixelCrew:m=!1}){const u=A(t,r),l=rt(t,r),$=t.agent.harness||t.facts?.attribution,H=t.facts?.model||t.agent.model,E=i&&!m?B[i.toLowerCase()]?.runtimeAnchor??[.82,.94]:[.82,.94],j=`${J($)} · ${H||"Model not reported"}`,R=h.useId(),M=P([t],r,["think","tool","message","ask"],1)[0],z=M?.event.kind==="think"&&r-M.at<9e4&&t.facts?.turn?.phase!=="complete",p=u.posture==="attention"||u.posture==="blocked"?"waiting":z?"thinking":u.posture==="working"?"working":"idle",L=c?ot(t,r):null,k=Y(t.agent),f=tt(t),y=f.named?f.name:d||f.name,O=f.named?y:`${y} · ${t.id.slice(-4)}`,S=h.useRef(null),[_,T]=h.useState(!0),[N,V]=h.useState(()=>typeof document>"u"||!document.hidden),C=u.posture==="working",[U,q]=h.useState(C);h.useEffect(()=>{e||q(C)},[C,e]),h.useEffect(()=>{const x=S.current;if(!x)return;const g=new IntersectionObserver(([K])=>T(K.isIntersecting));g.observe(x);const W=()=>V(!document.hidden);return document.addEventListener("visibilitychange",W),()=>{g.disconnect(),document.removeEventListener("visibilitychange",W)}},[]);const F=[...t.id].reduce((x,g)=>(x+g.charCodeAt(0))%37,0),G=u.posture==="attention"||u.posture==="blocked";return s.jsxs("button",{ref:S,type:"button",className:`shared-floor-character is-${u.posture}${L?` has-${L}`:""}${U?" is-at-work":""}${n?" is-pinned":""}${e||!_||!N?" is-still":""}`,style:{"--character-delay":`${-F/10}s`},onClick:()=>v(t),"aria-describedby":R,"aria-pressed":n,"aria-label":`${y} ${t.id.slice(-5)}, ${l.summary}. ${j}. ${n?"Release this actor's card":"Inspect actor and keep its card open"}`,children:[s.jsx("span",{className:"shared-floor-character__shadow","aria-hidden":"true"}),s.jsxs("span",{className:`shared-floor-character__sprite${i||a||o?" is-rendered":""}`,"aria-hidden":"true",children:[i&&(!m||D(i))?s.jsx(Q,{slug:i,pixel:m,size:86,paused:e||!_||!N,expression:z?"look-up":"rest"}):i&&m?s.jsx(w,{name:t.agent.name,size:76,hue:k.hue,tone:k.tone}):o?s.jsx(X,{identity:f.named?f.name:t.id,state:{mood:p==="waiting"?"concerned":p==="thinking"?"curious":p==="working"?"focused":"neutral",action:p==="waiting"?"idle":p,interaction:{}},motion:e||!_||!N?"paused":"normal",size:76}):a?s.jsx(st,{character:a,posture:p,paused:e,size:76}):s.jsx(w,{name:t.agent.name,size:76,hue:k.hue,tone:k.tone}),s.jsx("span",{className:"shared-floor-character__runtime-mark",style:{left:`${E[0]*100}%`,top:`${E[1]*100}%`},title:j,children:s.jsx(I,{harness:$,size:16,title:null})})]}),G?s.jsx("span",{className:"shared-floor-character__attention","aria-hidden":"true",children:"!"}):null,s.jsxs("span",{className:"shared-floor-character__label","aria-hidden":"true",children:[s.jsx("strong",{className:"shared-floor-character__identity",children:s.jsx("span",{children:O})}),s.jsx("small",{children:l.summary})]}),s.jsxs("span",{id:R,className:"shared-floor-character__context",role:"tooltip",children:[s.jsx("strong",{children:l.state}),s.jsxs("span",{className:"shared-floor-character__runtime",children:[s.jsx(I,{harness:$,size:14,title:null}),j]}),s.jsx("span",{children:l.task||"No task summary reported."}),l.activity?s.jsx("span",{className:"shared-floor-character__context-activity",children:l.activity}):null,s.jsxs("small",{children:[l.at?`Observed ${Math.max(0,Math.floor((r-l.at)/6e4))<1?"just now":`${Math.floor((r-l.at)/6e4)}m ago`}`:"No recent observation"," · ",n?"Kept open · click to release":"Click to keep open"]})]})]})}export{$t as SharedFloorCharacter,ot as sharedCharacterGesture};
@@ -1 +0,0 @@
1
- .shared-floor{position:absolute;inset:80px 14px 14px;color:var(--floor-ink)}.shared-floor.is-map{container-type:inline-size;display:flex;flex-direction:column;overflow:hidden;border-radius:12px}.s-discovered-embed .shared-floor{inset:0;border-radius:0}.s-discovered-embed .shared-floor__teams{top:60px}.agent-floor:has(.shared-floor) .agent-floor__dock,.agent-floor:has(.shared-floor) .agent-floor__legend{display:none}.agent-floor:has(.shared-floor) .agent-floor__trace-panel{bottom:72px;max-height:calc(100% - 140px)}.shared-floor button:focus-visible{outline:2px solid var(--floor-accent);outline-offset:3px}@media(prefers-reduced-motion:reduce){.shared-floor__wanderer{transition:none}}.shared-floor__viewport{position:relative;flex:1;min-height:0;overflow:hidden;touch-action:none;cursor:grab;background-color:#05070d}.shared-floor__viewport:active{cursor:grabbing}.shared-floor__sky-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}.shared-floor__benches{position:absolute;left:50%;top:50%;z-index:1;transform-origin:center}.shared-floor__connections{position:absolute;inset:0;pointer-events:none;overflow:visible}.shared-floor__connections path{fill:none;stroke:var(--floor-accent);stroke-width:1.5;opacity:.4}.shared-floor__connections .is-shared{stroke-dasharray:5 6}.shared-floor__island{position:absolute;cursor:grab;touch-action:none}.shared-floor__island.is-dragging{cursor:grabbing;filter:drop-shadow(0 18px 28px #0009)}.has-boundaries .shared-floor__island{border:1px dashed var(--floor-line-2);border-radius:25px}.shared-floor__place-presentation{position:absolute;inset:0;pointer-events:none;transform-origin:center}.is-iso .shared-floor__place-presentation{transform:matrix(.57735027,-.57735027,1,1,0,0)}.shared-floor__sky{position:absolute;inset:0;pointer-events:none;background-repeat:no-repeat;background-size:240% auto;opacity:.9;-webkit-mask-image:radial-gradient(ellipse 52% 52% at center,#000 30%,transparent 100%);mask-image:radial-gradient(ellipse 52% 52% at center,#000 30%,transparent 100%)}.shared-floor__outpost{position:absolute;inset:0;pointer-events:none;background-size:300% 100%;background-repeat:no-repeat;opacity:.9;-webkit-mask-image:radial-gradient(ellipse 50% 50% at center,#000 60%,transparent 100%);mask-image:radial-gradient(ellipse 50% 50% at center,#000 60%,transparent 100%)}.shared-floor__label-anchor{position:absolute;left:50%;top:89.4%;width:1px;height:7.8%;background:linear-gradient(#c0d5d580,#c0d5d530);pointer-events:none}.shared-floor__label-anchor:before{content:"";position:absolute;top:-2px;left:-2px;width:5px;height:5px;border-radius:50%;background:#b6ccc7}.shared-floor__island button.shared-floor__gathering-label{position:absolute;top:98.1%;left:50%;transform:translate(-50%);transform-origin:top center;z-index:3;display:flex;flex-direction:column;align-items:center;gap:4px;width:max-content;max-width:460px;padding:8px 12px;border:0;border-radius:8px;background:transparent;color:#e4ece5;font-family:inherit;font-size:16px;letter-spacing:.025em;text-align:center;text-shadow:0 2px 5px #03090c;opacity:.8;cursor:pointer;pointer-events:auto;transition:opacity .16s ease,background .16s ease}.shared-floor__island button.shared-floor__gathering-label:hover{background:#adcac024;opacity:1}.shared-floor__island button.shared-floor__gathering-label:focus-visible{outline:2px solid #c7d79e;outline-offset:4px}.shared-floor__gathering-label strong{font-weight:500;font-size:16px}.shared-floor__gathering-label small{font-size:11px;line-height:1.4;letter-spacing:0;overflow-wrap:anywhere;color:#b0c2ce}.shared-floor__optional-table{position:absolute;left:100px;right:30px;bottom:0;min-height:65px;border:1px solid var(--floor-line-2);border-bottom:6px solid var(--floor-face-3);border-radius:20px;background:var(--floor-face-2);padding:15px;z-index:1}.shared-floor__optional-table>span{color:var(--floor-muted);font-size:13px}.shared-floor__optional-table>div{display:flex;gap:8px}.shared-floor__optional-table button{border:1px solid var(--floor-line-soft);background:var(--floor-bg);color:var(--floor-ink);border-radius:5px;padding:7px;width:64px;cursor:pointer}.shared-floor__optional-table small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.is-iso .shared-floor__optional-table>span,.is-iso .shared-floor__optional-table button small{display:inline-block;transform-origin:center;transform:matrix(.57735027,-.57735027,1,1,0,0)}.shared-floor__crew{position:relative;width:100%;height:100%}.shared-floor__wanderer{position:absolute;width:84px;height:94px;z-index:2;touch-action:none;-webkit-user-select:none;user-select:none;transition:opacity .18s ease}.shared-floor__wanderer:hover{z-index:6}.shared-floor__wanderer.is-pinned:hover{z-index:11}.is-iso .shared-floor__wanderer{transform:matrix(.57735027,-.57735027,1,1,0,0)}.has-selection .shared-floor__wanderer:not(.is-selected):not(.is-connected){opacity:.8}.shared-floor__wanderer.is-selected:after{content:"";position:absolute;top:57px;left:-5px;width:94px;height:37px;border:0;border-radius:50%;background:radial-gradient(ellipse,#ffffff38,#ffffff18 35%,#fff0 72%);filter:blur(5px);mix-blend-mode:screen;pointer-events:none;z-index:-1}.shared-floor__wanderer.is-selected .shared-floor-character__sprite{filter:drop-shadow(0 4px 5px #ffffff30)}.shared-floor__wanderer.is-connected:not(.is-selected):after{content:"";position:absolute;top:68px;left:22px;width:40px;height:9px;border-bottom:2px solid var(--floor-accent);border-radius:50%;pointer-events:none;opacity:.5}.shared-floor__wanderer[data-dragging] .shared-floor-character{cursor:grabbing}.shared-floor__wanderer[data-dragging] .shared-floor-character__context{display:none}.shared-floor-character__sprite.is-rendered{animation:none!important}.shared-floor__crew .shared-floor-character{cursor:grab;--actor-status-ink: #bdc8d0}.shared-floor__crew .shared-floor-character.is-working{--actor-status-ink: #b9d2c4}.shared-floor__crew .shared-floor-character.is-attention,.shared-floor__crew .shared-floor-character.is-blocked{--actor-status-ink: #ddc5a0}.shared-floor-character.is-attention .shared-floor-character__shadow,.shared-floor-character.is-blocked .shared-floor-character__shadow{background:#e6b85b40;width:50px;left:17px}.shared-floor__crew .shared-floor-character:before{content:"";position:absolute;left:50%;top:75px;width:66px;height:22px;transform:translate(-50%);z-index:0;border-radius:50%;background:#b7dbeb16;border:1px solid #d9efff28;box-shadow:inset 0 1px #ffffff12,0 3px 8px #03101925;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);pointer-events:none}.shared-floor__crew .shared-floor-character__sprite{z-index:1}.shared-floor__crew .shared-floor-character__runtime-mark{z-index:2}.shared-floor__crew .shared-floor-character .shared-floor-character__label{position:absolute;top:99px;left:50%;transform:translate(-50%);z-index:2;padding:4px 9px;line-height:1.4;opacity:1;visibility:visible;background:#0d1b2514;border:1px solid #e5f4ff08;border-radius:7px;box-shadow:none;text-shadow:none;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:background .16s ease,border-color .16s ease}.shared-floor__crew .shared-floor-character:hover .shared-floor-character__label,.shared-floor__crew .shared-floor-character:focus-visible .shared-floor-character__label,.shared-floor__crew .is-selected .shared-floor-character__label{background:#0d1b2545;border-color:#e5f4ff24;backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px)}.shared-floor__crew .shared-floor-character .shared-floor-character__label strong{font-size:12px;font-weight:500;text-transform:capitalize;color:#e7ecee}.shared-floor__crew .shared-floor-character .shared-floor-character__label small{display:none;font-size:12px;color:var(--actor-status-ink)}.shared-floor__crew .shared-floor-character:hover .shared-floor-character__label small,.shared-floor__crew .shared-floor-character:focus-visible .shared-floor-character__label small,.shared-floor__crew .is-selected .shared-floor-character__label small{display:block}.shared-floor__crew .shared-floor-character .shared-floor-character__context strong{color:var(--actor-status-ink)}.shared-floor__crew .shared-floor-character .shared-floor-character__context-activity{color:#bdc8d0}.shared-floor__crew .shared-floor-character .shared-floor-character__context small{color:#a6b4be}.shared-floor__talk-follow{position:absolute;bottom:105px;left:50%;transform:translate(-50%);white-space:nowrap;color:#b9d2c4;font-size:10px;pointer-events:none}.shared-floor__talk-follow span{margin-left:6px;color:#bdc8d0}.shared-floor__camera{position:absolute;z-index:10;bottom:12px;right:12px;display:flex;gap:4px;padding:5px;background:var(--floor-bg);border:1px solid var(--floor-line-soft);border-radius:7px}.shared-floor__camera button,.shared-floor__layers>button,.shared-floor__teams>button{padding:7px 9px;border:0;border-radius:4px;background:transparent;color:var(--floor-muted);cursor:pointer;font-size:11px}.shared-floor__camera [role=group]{display:flex;gap:3px;padding-right:5px;border-right:1px solid var(--floor-line-soft)}.shared-floor__camera button[aria-pressed=true]{color:var(--floor-accent);background:var(--floor-face-2)}.shared-floor__zoom-readout{align-self:center;min-width:58px;padding:0 7px 0 6px;border-left:1px solid var(--floor-line-soft);color:var(--floor-muted);font-size:10px;font-variant-numeric:tabular-nums;text-align:right}.shared-floor__layers{position:absolute;z-index:10;top:0;right:12px;font-size:11px}.shared-floor__layers>button{display:block;margin-left:auto}.shared-floor__layers>div{margin-top:5px;padding:10px;border:1px solid var(--floor-line-2);border-radius:6px;background:var(--floor-bg)}.shared-floor__layers label{display:flex;align-items:center;gap:8px;padding:5px}.shared-floor__layers input{accent-color:var(--floor-accent)}.shared-floor__layout-actions{padding:5px 5px 9px;margin-bottom:7px;border-bottom:1px solid var(--floor-line-2)}.shared-floor__layout-actions button{padding:7px 9px;border:1px solid var(--floor-line-soft);border-radius:4px;background:var(--floor-face-2);color:var(--floor-ink);cursor:pointer;font-size:11px}.shared-floor__layout-actions small{display:block;padding-top:6px;color:var(--floor-muted);font-size:10px;max-width:210px}.shared-floor__teams{position:absolute;top:10px;left:18px;z-index:20}.shared-floor__teams section{width:230px;max-height:300px;overflow:auto;background:#111715f5;border:1px solid #ffffff20;border-radius:12px;padding:12px}.shared-floor__teams section>strong{display:block;font-size:11px;color:var(--floor-muted);margin-bottom:8px}.shared-floor__teams section button{display:block;width:100%;text-align:left;border:0;border-radius:5px;padding:7px;background:transparent;color:var(--floor-ink);cursor:pointer}.shared-floor__teams section button:hover{background:#ffffff0b}.shared-floor__teams section .shared-floor__team-child{padding-left:20px;color:var(--floor-accent)}.shared-floor__teams small{float:right;color:var(--floor-muted);font-size:10px}.shared-floor__teams p{color:var(--floor-muted);font-size:12px}.shared-floor__minimap{position:absolute;z-index:10;left:12px;bottom:12px;width:176px;height:112px;overflow:hidden;border:1px solid var(--floor-line-soft);border-radius:6px;background:#09161db8;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);opacity:.8;touch-action:none;cursor:grab}.shared-floor__minimap:active{cursor:grabbing}.shared-floor__minimap svg{display:block;width:100%;height:100%;pointer-events:none}.shared-floor__mini-ground{fill:var(--floor-bg)}.shared-floor__mini-camera{fill:#b9e46c08;stroke:var(--floor-accent);stroke-width:1;pointer-events:none}.shared-floor__minimap button{position:absolute;width:12px;height:12px;transform:translate(-50%,-50%);padding:0;border:1px solid var(--floor-bg);background:var(--floor-accent);border-radius:50%;cursor:pointer}.shared-floor__minimap button:focus-visible{outline:2px solid white;outline-offset:3px}.shared-floor:has(.shared-floor__workspace-panel) .shared-floor__minimap{visibility:hidden}.shared-floor__workspace-panel{position:absolute;bottom:12px;left:12px;z-index:12;width:350px;max-width:calc(100% - 24px);max-height:55%;overflow:auto;padding:16px;background:#101d26f5;color:#e4ece5;border:1px solid #b6ccc725;border-radius:10px;box-shadow:0 8px 24px #0006}.shared-floor__workspace-panel header{display:flex;align-items:center;justify-content:space-between;gap:12px}.shared-floor__workspace-panel header button{background:transparent;border:0;color:inherit;font-size:22px;cursor:pointer}.shared-floor__workspace-panel p{overflow-wrap:anywhere;font-size:12px;color:#b0c2ce;margin:10px 0}.shared-floor__workspace-panel>small{color:#c7d79e;font-size:11px;overflow-wrap:anywhere}.shared-floor__workspace-panel h4{font-size:11px;margin:16px 0 6px;color:#b0c2ce}.shared-floor__workspace-panel button:focus-visible{outline:2px solid #c7d79e;outline-offset:3px}.shared-floor__workspace-actor{display:flex;flex-direction:column;gap:5px;width:100%;padding:12px 0;border:0;border-bottom:1px solid #b6ccc718;background:transparent;color:inherit;text-align:left;font-size:12px;cursor:pointer}.shared-floor__workspace-actor:last-child{border-bottom:0}.shared-floor__workspace-actor:hover{color:#c7d79e}.shared-floor__workspace-actor small{color:#b0c2ce;font-size:10px}.shared-floor__workspace-actor-heading{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.shared-floor__workspace-runtime{font-size:10px;line-height:1.5;color:#b0c2ce;overflow-wrap:anywhere}.shared-floor__workspace-task{font-size:12px;line-height:1.5;color:#dbe5df;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.world-actor-talk{position:fixed;z-index:1000;width:360px;max-width:calc(100vw - 24px);padding:12px;border:1px solid #c7dce02b;border-radius:12px;background:#102029f5;box-shadow:0 12px 36px #0005;color:#e7ecee}.world-actor-talk>button{display:flex;justify-content:space-between;width:100%;padding:10px;border:0;border-radius:6px;background:transparent;color:inherit;text-align:left;cursor:pointer}.world-actor-talk>button:hover,.world-actor-talk button:focus-visible{background:#ffffff12}.world-actor-talk header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;font-size:13px}.world-actor-talk header button{background:none;border:0;color:inherit;font-size:22px;cursor:pointer}.world-actor-talk small{color:#a6b4be;font-size:11px}.world-actor-talk__header-actions{display:flex;align-items:center;gap:4px}.world-actor-talk__talkback{align-items:center;gap:10px;margin-top:4px}.world-actor-talk__talkback>span:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}.world-actor-talk__state{display:flex;align-items:center;gap:8px;flex:none}.world-actor-talk__state small{color:#8d9aa2}.world-actor-talk__switch{position:relative;width:30px;height:17px;border:1px solid #c7dce03d;border-radius:9px;background:#ffffff0f;transition:background .14s ease,border-color .14s ease}.world-actor-talk__switch:after{content:"";position:absolute;top:2px;left:2px;width:11px;height:11px;border-radius:50%;background:#8d9aa2;transition:transform .14s ease,background .14s ease}.world-actor-talk__talkback.is-on .world-actor-talk__switch{border-color:var(--floor-accent, #4fd1a5);background:color-mix(in oklab,var(--floor-accent, #4fd1a5) 30%,transparent)}.world-actor-talk__talkback.is-on .world-actor-talk__switch:after{transform:translate(13px);background:var(--floor-accent, #4fd1a5)}.world-actor-talk__talkback.is-on .world-actor-talk__state small{color:var(--floor-accent, #4fd1a5)}@media(prefers-reduced-motion:reduce){.world-actor-talk__switch,.world-actor-talk__switch:after{transition:none}}.world-actor-talk__receipt{display:flex;flex-direction:column;gap:6px;margin-top:10px;padding:8px 10px;border:1px solid #c7dce02b;border-radius:8px}.world-actor-talk__receipt strong{font-size:12px}.world-actor-talk__links{display:flex;flex-wrap:wrap;gap:6px}.world-actor-talk__links button{padding:4px 8px;border:1px solid currentColor;border-radius:6px;background:none;color:var(--floor-accent, #4fd1a5);font-size:11px;cursor:pointer}.shared-floor__experiment{display:flex;flex-direction:column;overflow:hidden;background:var(--floor-bg)}.shared-floor__back{align-self:flex-start;flex:none;margin-bottom:10px;padding:8px 10px;color:var(--floor-muted);background:none;border:0;font-size:11px;cursor:pointer}.shared-floor__experiment>.work-run{flex:1;min-height:0}.shared-floor__run-link{padding:8px;margin-top:5px;width:100%;text-align:left;border:0;border-top:1px solid var(--floor-line-soft);background:none;color:var(--floor-accent);font-size:11px;cursor:pointer}@container (max-width: 560px){.shared-floor__minimap{bottom:62px}.shared-floor__camera{left:12px;right:12px;justify-content:flex-end}.shared-floor__camera button{padding-inline:6px}}
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SageModelStudio-CNDhZhgD.js","assets/index-EsrkGBcv.js","assets/index-CN4rBB_s.css","assets/SageModelStudio-768dRQr4.css"])))=>i.map(i=>d[i]);
2
- import{r as a,k as Gt,m as Ee,j as e,_ as Re}from"./index-EsrkGBcv.js";import{a as Ie}from"./api-DSqpVKC7.js";import{u as we,p as $e,z as Zt,W as De,w as Oe,c as We,a as Fe,t as Le,C as ze,Z as ue}from"./WorldMinimap-B6HNgcDe.js";import{WorldSky as He}from"./WorldSky-Jm2Z6dfW.js";import{WorldActorTalk as Ye}from"./WorldActorTalk-BvSg_b1y.js";import{f as Xe,F as Be}from"./FloorExchangePanel-BU1pPu8K.js";import{CharacterFamilyPreview as Ke}from"./CharacterFamilyPreview-DMfw7UM_.js";import{w as he}from"./RenderedWorkerSprite-Dhlyg89J.js";import{f as Ge}from"./floor-preview-text-HrORUJ7D.js";import{FloorMessagePasses as Ze}from"./FloorMessagePasses-cLW2UGNP.js";import{f as Ue}from"./floor-character-name-CqJPOlXb.js";import{WorkRunView as qe}from"./WorkRunView-BDkR7Edq.js";import{b as Dt}from"./agent-lane-detail-Ti3trpfH.js";import{f as Je}from"./floor-memory-YMM8AlLY.js";import{f as Ve}from"./floor-context-model-rWKqaKmV.js";import{f as $t}from"./agent-floor-actor-DW8zLht0.js";import{b as pe}from"./shared-work-artifacts-DfNl9KTo.js";import{u as Qe}from"./Provider-C35yu29I.js";import{SharedFloorCharacter as to}from"./SharedFloorCharacter-DNEiaOUh.js";import{j as eo}from"./agent-lanes-model-DMAdqCmK.js";import{F as oo}from"./file-code-corner-CsU7jJpu.js";import"./runtime-picker-DXu2bOTh.js";import"./scout-voice-CZx60X6E.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-OvccU82H.js";import"./createLucideIcon-zZ8Hx7er.js";import"./router-DCtl8wqb.js";import"./synthetic-agent-routing-aduMYO7P.js";import"./terminal-sessions-3RfJpen8.js";import"./index-724SdE6r.js";import"./NewChatComposer-C97-iTMK.js";import"./media-blobs-Bi8pxr1u.js";import"./HarnessMark-C4naWc16.js";import"./conversation-model-FxDeWlle.js";import"./agent-state-DDhnFEEP.js";import"./time-Dhsh_2EG.js";import"./conversations-DoAAO6kA.js";import"./colors-CFlbwC25.js";import"./NewChatOrigin-DFbF_XvR.js";import"./keyboard-nav-DDHegDbx.js";import"./x-DAehov0E.js";import"./chevron-down-l1mrh5S9.js";import"./search-DT42oyRW.js";import"./file-text-CnISiiw6.js";import"./send-to-agent-session-DoKCDBJ4.js";import"./theme-vars-DNK0nn3k.js";import"./provider-Dojd8quC.js";import"./machine-scope-DJt9RZ2w.js";import"./sse-BCPRocpq.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-Bk3nyrkj.js";import"./model-CBkMvT1w.js";import"./DocumentFocusViewer-DJr0v0D_.js";import"./TextDocumentSurface-D52m7Vd8.js";import"./index-CHD0qcfL.js";import"./chevron-right-DrfqcerI.js";import"./folder-D5prSkzz.js";import"./chevron-up-CETZJzjV.js";import"./code-xml-BhcNbLWU.js";import"./arrow-left-MVUKauwQ.js";import"./arrow-right-Bp-FpE5V.js";import"./voice-turn-ledger-BMZxlSjg.js";import"./chunk-HRAB3GC3-DbVLgbWX.js";import"./floor-message-passes-CO3Ix_wR.js";import"./lane-observe-CteDwdD-.js";import"./tail-display-DHSNmvor.js";import"./lane-edit-display-BjdT9oZl.js";import"./CrewSprite-Dhryjx2c.js";import"./SpriteAvatar-CpZWf54-.js";import"./lane-ask-display-BTVSakyo.js";import"./context-budget-8qFKqM-j.js";import"./WorldCharacter-CIIlutQq.js";import"./RiggedWorkerCharacter-q6QRc7_o.js";function so(){const[r,i]=a.useState([]);return a.useEffect(()=>{let h=!1,d;const x=async()=>{try{const w=await Ie("/api/world/messages");h||i(w)}catch{}h||(d=setTimeout(x,3e3))};return x(),()=>{h=!0,clearTimeout(d)}},[]),r}const ro=5;function no(r,i){return Math.hypot(r,i)>=ro}function ao(r,i,h,d,x){const w=we(i/d,h/d,x);return{x:Math.max($,Math.round(r.x+w.x)),y:Math.max($,Math.round(r.y+w.y))}}const St=715,Ot=Math.round(St*809/647),io=647/809,Wt=.22,Ut=.78,Ft=.36,qt=.58,co=.16,me=.981,fe=64,je=84,lo=84,uo=132,ho=95,ge=.12,po=.85,mo=.5,xe=[6,-5,3,-3,5],Z=205,Ct=60,$=30,fo=(Ut-Wt)*St/((qt-Ft)*Ot);function ke(r){const i=Math.max(1,Math.min(r,Math.floor(Math.sqrt(r*fo))));return{columns:i,rows:Math.max(1,Math.ceil(Math.max(r,1)/i))}}function go(r,i){let h=0,d=$;for(const x of r)d>$&&d+x>i&&(h++,d=$),d+=x+Z;return r.length?h+1:0}function xo(r,i){const h=r.length,d=Math.min(i,h);if(d<=1)return[];const x=(b,M)=>{let g=0;for(let k=b;k<M;k++)g+=r[k]+(k>b?Z:0);return g},w=Array.from({length:h+1},()=>Array(d+1).fill(1/0)),N=Array.from({length:h+1},()=>Array(d+1).fill(0));w[0][0]=0;for(let b=1;b<=h;b++)for(let M=1;M<=Math.min(b,d);M++)for(let g=b-1;g>=M-1;g--){const k=Math.max(w[g][M-1],x(g,b));k<w[b][M]&&(w[b][M]=k,N[b][M]=g)}const j=[];let P=h;for(let b=d;b>1;b--)P=N[P][b],j.unshift(P);return j}function yo(r){const{columns:i,rows:h}=ke(r),d=(Ut-Wt)*St,x=(qt-Ft)*Ot,w=Math.max(1,i*uo/d,h*ho/x);return Math.round(Ot*w)}function bo(r,i,h){const{columns:d,rows:x}=ke(r),w=Wt*i,N=(Ut-Wt)*i,j=Ft*h,P=(qt-Ft)*h;return Array.from({length:r},(b,M)=>{const g=Math.floor(M/d),k=M%d,T=Math.min(d,r-g*d),U=x===1?mo:ge+(po-ge)*(g/(x-1)),_=(1-U)*co*N,S=N-_*2-je,q=d>1?S*(T-1)/(d-1):0,V=T>1?q/(T-1):0,F=Math.max(0,S-q),Q=T>1?(g%2===1?1:-1)*Math.min(F/2,V/4):0;return{x:Math.round(w+_+(S-q)/2+Q+k*V),y:Math.round(j+U*P-lo+xe[(k+g)%xe.length])}})}function wo(r){const i=(r.facts?.cwd||Dt(r).cwd||"").trim();if(!i.startsWith("/"))return"";const h=[];for(const d of i.split("/"))d===".."?h.pop():d&&d!=="."&&h.push(d);return`/${h.join("/")}`}function jo(r,i,h){const d=new Map;for(const n of r){const p=wo(n),m=JSON.stringify(p?["workspace",p]:["lane",n.id]),y=d.get(m)??{cwd:p,lanes:new Map};y.lanes.set(n.id,n),d.set(m,y)}const x={groups:i?.groups.map(n=>({...n,laneIds:[...n.laneIds]}))??[]};for(const[n,p]of d){let m=x.groups.find(y=>y.key===n);m||(m={key:n,laneIds:[],height:Ot},x.groups.push(m));for(const y of p.lanes.keys())m.laneIds.includes(y)||m.laneIds.push(y);m.height=Math.max(m.height,yo(m.laneIds.length))}const w=h?.positions??{},N=h?.targetAspect&&Number.isFinite(h.targetAspect)&&h.targetAspect>0?h.targetAspect:1.5,j=n=>Math.round(n.height*io),P=n=>Math.round(n*me)+fe,b=new Map,M=[],g=x.groups.filter(n=>{const p=w[n.key];if(!p)return!0;const m=Math.round(p.x),y=Math.round(p.y);return b.set(n.key,{x:m,y}),M.push({x:m,y,right:m+j(n),bottom:y+P(n.height)}),!1});M.sort((n,p)=>n.x-p.x||n.y-p.y);const k=(n,p,m,y)=>{const ft=p+P(y);return M.find(L=>n<L.right&&L.x<n+m&&p<L.bottom&&L.y<ft)},T=Math.max(St,...g.map(j)),U=g.reduce((n,p)=>n+(j(p)+Z)*(P(p.height)+Ct),0),_=Math.max(T+Z,Math.sqrt(U*N)),S=$+_,q=g.map(j),V=new Set(xo(q,go(q,S))),F=[];for(let n=0;n<g.length;n++)(V.has(n)||F.length===0)&&F.push([]),F[F.length-1].push(n);const Q=F.map(n=>n.reduce((p,m)=>p+j(g[m])+Z,-Z)),ht=Math.max(0,...Q);let At=0,E=$+Math.round(Math.max(0,ht-(Q[0]??0))/2),R=E,v=0,Y=$;for(let n=0;n<g.length;n++){const p=g[n],m=j(p);V.has(n)?(At++,Y+=v+Ct,E=$+Math.round(Math.max(0,ht-Q[At])/2),R=E,v=0):R>E&&R+m>S&&(Y+=v+Ct,R=E,v=0);for(let y=k(R,Y,m,p.height);y;y=k(R,Y,m,p.height))y.right+Z+m<=S?R=y.right+Z:(Y=Math.max(Y+v+Ct,y.bottom+Ct),R=E,v=0);b.set(p.key,{x:R,y:Y}),R+=m+Z,v=Math.max(v,P(p.height))}const pt=[];let mt=$*2+St,nt=320;for(const n of x.groups){const p=b.get(n.key),m=j(n);mt=Math.max(mt,p.x+m+$),nt=Math.max(nt,p.y+Math.round(n.height*me)+fe+$);const y=d.get(n.key);if(!y)continue;const ft=bo(n.laneIds.length,m,n.height),L=n.laneIds.flatMap((gt,xt)=>{const Nt=y.lanes.get(gt);if(!Nt)return[];const{x:at,y:tt}=ft[xt];return[{lane:Nt,x:at,y:tt,centerX:p.x+at+je/2,centerY:p.y+tt+70}]});pt.push({key:n.key,cwd:y.cwd,lanes:L.map(gt=>gt.lane),x:p.x,y:p.y,width:m,height:n.height,actors:L})}return{memory:x,groups:pt,worldWidth:mt,worldHeight:nt}}const Me="openscout:world-island-layout:v1";function ko(){try{const r=globalThis.localStorage?.getItem(Me);if(!r)return{};const i=JSON.parse(r);if(!i||typeof i!="object")return{};const h={};for(const[d,x]of Object.entries(i)){if(!x||typeof x!="object")continue;const{x:w,y:N}=x;typeof w=="number"&&Number.isFinite(w)&&typeof N=="number"&&Number.isFinite(N)&&(h[d]={x:w,y:N})}return h}catch{return{}}}function ye(r){try{globalThis.localStorage?.setItem(Me,JSON.stringify(r))}catch{}}const Mo="/assets/world-outposts-v1-DOt0i98W.png",_o="/assets/solar-system-scope-2k-stars-points-1FwHnkj0.png",Po=a.lazy(()=>Re(()=>import("./SageModelStudio-CNDhZhgD.js"),__vite__mapDeps([0,1,2,3])));function be(r){return r>=1?`${Number(r.toFixed(r<10?1:0))}:1`:`1:${Math.round(1/r).toLocaleString()}`}function Co(r){let i=0;for(const h of r)i=i*31+h.charCodeAt(0)>>>0;return{outpostPosition:`${i%3*50}% center`,skyPosition:`${i%100}% ${18+i%58}%`}}function Zs({lanes:r,now:i,onActor:h}){const{openFilePreview:d}=Qe(),x=so(),[w,N]=a.useState(null),[j,P]=a.useState(null),[b,M]=a.useState(!1),[g,k]=a.useState(null),[T,U]=a.useState([]),[_,S]=a.useState(null),[q,V]=a.useState(null),[F,Q]=a.useState(!1),[ht,At]=a.useState(!0),[E,R]=a.useState("crew"),v=a.useRef({});for(const t of[...r].sort((o,c)=>o.id.localeCompare(c.id)))if(!v.current[t.id]){const o=Object.values(v.current);v.current[t.id]=Ee(t.agent.name)??Gt.find(c=>!o.includes(c.slug))?.slug??Gt[o.length%Gt.length].slug}const[Y,pt]=a.useState(!1),[mt,nt]=a.useState(!1),[n,p]=a.useState(!0),m=a.useRef([]);for(const t of r){if(m.current.length>=he.length)break;m.current.includes(t.id)||m.current.push(t.id)}const[y,ft]=a.useState(!1),[L,gt]=a.useState(!1),[xt,Nt]=a.useState(!1),[at,tt]=a.useState(!1),[it,_e]=a.useState(!1),Tt=a.useRef(null),[et,Pe]=a.useState({width:900,height:500}),[X,Jt]=a.useState(null),[z,Ce]=a.useState("flat"),[B,Vt]=a.useState(1),[K,Lt]=a.useState({x:0,y:0}),[yt,Se]=a.useState({}),[zt,Ht]=a.useState(null),ct=a.useRef(null),lt=a.useRef(!1),[Yt,vt]=a.useState(ko),[Qt,Xt]=a.useState(null),dt=a.useRef(null),D=a.useRef(null);a.useEffect(()=>{if(!Tt.current)return;const t=new ResizeObserver(([o])=>Pe({width:o.contentRect.width,height:o.contentRect.height}));return t.observe(Tt.current),()=>t.disconnect()},[b]);const te=a.useRef(void 0),J=a.useMemo(()=>jo(r,te.current,{positions:Yt,targetAspect:et.width/Math.max(et.height,1)}),[r,Yt,et]);a.useEffect(()=>{te.current=J.memory},[J]);const H=new Map(J.groups.map(t=>[t.key,t]));[...H];const Et=H,ot=r.find(t=>t.id===g)??null,Ae=ot?pe(r).filter(t=>t.owners.some(o=>o.id===ot.id)):[],bt=new Map;for(const t of Ae)for(const o of t.owners)o.id!==g&&bt.set(o.id,{lane:o,reason:"Shared file activity"});const ut=Je(r),ee=[...new Map(ut.map(({parent:t})=>[t.id,t])).values()],Rt=t=>Ue(t).label;for(const t of ut)t.child.id===g&&bt.set(t.parent.id,{lane:t.parent,reason:"Parent session"}),t.parent.id===g&&bt.set(t.child.id,{lane:t.child,reason:"Child session"});const oe=new Set(bt.keys());_&&_.forEach(t=>oe.add(t));const se=Xe(r,i,x),wt=new Map;for(const t of se)wt.set([t.from,t.to].sort().join(":"),[t.from,t.to]);for(const{parent:t,child:o}of ut){const c=[t.id,o.id].sort().join(":");wt.has(c)||wt.set(c,[t.id,o.id])}const re=!!_&&[...wt.values()].some(t=>t.every(o=>_.includes(o)));a.useEffect(()=>{_&&!re&&S(null)},[re,_]);const ne=t=>{k(null),S(t)},jt=new Map(J.groups.flatMap(t=>t.actors.map(o=>[o.lane.id,{x:o.centerX+(yt[o.lane.id]?.x??0),y:o.centerY+(yt[o.lane.id]?.y??0)}]))),kt=g?jt.get(g):null;ot&&Ve([ot],i,["tool","message","ask"]).slice(0,3),ot&&$t(ot,i);const O=J.worldWidth,W=J.worldHeight,ae=z==="iso"?Math.sqrt(3)/2*(O+W):O,ie=z==="iso"?(O+W)/2:W,ce=Math.min((et.width-36)/ae,(et.height-70)/ie),G=Math.max(.12,ce)*B,A=a.useRef({zoom:B,pan:K});A.current={zoom:B,pan:K};const Mt=(t,o)=>{const c=Math.max(.12,ce)*o;return We(t,{width:ae*c,height:ie*c},et)},Bt=t=>{A.current=t,Vt(t.zoom),Lt(t.pan)},_t=a.useRef(null),st=()=>{_t.current!==null&&(cancelAnimationFrame(_t.current),_t.current=null)},It=t=>{st();const o={zoom:t.zoom,pan:Mt(t.pan,t.zoom)};if(window.matchMedia("(prefers-reduced-motion: reduce)").matches){Bt(o);return}const c={zoom:A.current.zoom,pan:A.current.pan},s=performance.now(),f=C=>{const l=Math.min(1,(C-s)/ze),u=Le(c,o,l);u.pan=Mt(u.pan,u.zoom),Bt(u),_t.current=l<1?requestAnimationFrame(f):null};_t.current=requestAnimationFrame(f)};a.useEffect(()=>st,[]);const Ne=(t,o)=>{st();const c=Zt(A.current.zoom,A.current.pan,t,o);c.pan=Mt(c.pan,c.zoom),Bt(c)};a.useEffect(()=>{const t=Tt.current;if(!t)return;const o=c=>{if(c.target.closest(".shared-floor__inspect"))return;c.preventDefault();const s=t.getBoundingClientRect();Ne(Oe(c.deltaY,c.deltaMode),{x:c.clientX-s.left-s.width/2,y:c.clientY-s.top-s.height/2})};return t.addEventListener("wheel",o,{passive:!1}),()=>t.removeEventListener("wheel",o)});const Kt=Fe(B),Te=a.useMemo(()=>J.groups.map(t=>{const o=$e(t.x+t.width/2-O/2,t.y+t.height/2-W/2,z);return{x:o.x*G+K.x,y:o.y*G+K.y,spread:t.width*G}}),[J.groups,z,G,K,O,W]),Pt=t=>{S(null),k(t.id),h(t)},le=t=>{U(o=>o.includes(t.id)?o.filter(c=>c!==t.id):[...o,t.id]),Pt(t)};return a.useEffect(()=>{U(t=>{const o=t.filter(c=>r.some(s=>s.id===c));return o.length===t.length?t:o})},[r]),a.useEffect(()=>{if(!g&&!_&&T.length===0)return;const t=o=>{o.key==="Escape"&&(k(null),S(null),U([]))};return window.addEventListener("keydown",t),()=>window.removeEventListener("keydown",t)},[g,_,T.length]),b?e.jsxs("div",{className:"shared-floor shared-floor__experiment",children:[e.jsx("button",{className:"shared-floor__back",type:"button",onClick:()=>M(!1),children:"← Back to world"}),e.jsx(qe,{lanes:r,now:i,onActor:h})]}):e.jsxs("div",{className:`shared-floor is-map is-${z}${ot||_?" has-selection":""}${L?" has-boundaries":""}${it?" is-paused":""}`,children:[j?e.jsx(Ye,{...j,onSent:()=>{N(j.lane.id),k(j.lane.id)},onTalk:()=>P({...j,compose:!0,voice:!1}),onDictate:()=>P({...j,compose:!0,voice:!0}),onProfile:()=>{Pt(j.lane),P(null)},onClose:()=>P(null)},j.lane.id):null,mt?e.jsx(a.Suspense,{fallback:e.jsx("div",{role:"status",children:"Loading 3D studio…"}),children:e.jsx(Po,{onClose:()=>nt(!1)})}):null,_?e.jsx(Be,{pair:_,lanes:r,now:i,onClose:()=>S(null),onFile:d,onSpeaker:V},_.join(":")):null,Y?e.jsx(Ke,{onClose:()=>pt(!1)}):null,e.jsxs("div",{className:"shared-floor__teams",children:[e.jsxs("button",{type:"button","aria-expanded":xt,onClick:()=>Nt(!xt),children:["Agent teams",ut.length?` · ${ut.length}`:""]}),xt?e.jsxs("section",{"aria-label":"Agent families",children:[e.jsx("strong",{children:"Parent → subagents"}),ee.length?ee.map(t=>e.jsxs("div",{children:[e.jsx("button",{type:"button",onClick:()=>Pt(t),children:Rt(t)}),ut.filter(o=>o.parent.id===t.id).map(({child:o})=>e.jsxs("button",{className:"shared-floor__team-child",type:"button",onClick:()=>Pt(o),children:["↳ ",Rt(o),e.jsx("small",{children:$t(o,i).label})]},o.id))]},t.id)):e.jsx("p",{children:"No parent links reported in this roster yet."})]}):null]}),e.jsxs("div",{className:"shared-floor__layers",children:[e.jsx("button",{type:"button","aria-expanded":at,onClick:()=>tt(!at),children:"Layers"}),at?e.jsxs("div",{children:[e.jsxs("div",{className:"shared-floor__layout-actions",role:"group","aria-label":"Island layout",children:[e.jsx("button",{type:"button",onClick:()=>{ye({}),vt({})},children:"Auto-arrange islands"}),e.jsx("small",{children:"Drag an island's backdrop to place it; auto-arrange repacks."})]}),e.jsxs("label",{children:[e.jsx("input",{type:"checkbox","aria-label":"Work surfaces",checked:y,onChange:t=>ft(t.target.checked)}),"Work surfaces"]}),e.jsxs("label",{children:[e.jsx("input",{type:"checkbox","aria-label":"Boundaries",checked:L,onChange:t=>gt(t.target.checked)}),"Boundaries"]}),e.jsxs("label",{children:[e.jsx("input",{type:"checkbox","aria-label":"Playful motion",checked:F,onChange:t=>Q(t.target.checked)}),"Playful motion"]}),e.jsxs("label",{children:["Characters",e.jsxs("select",{"aria-label":"Map character style",value:E,onChange:t=>R(t.target.value),children:[e.jsx("option",{value:"crew",children:"Crew"}),e.jsx("option",{value:"chip",children:"Pixel Chip"}),e.jsx("option",{value:"prototype",children:"Prototype rigs"})]})]}),E==="prototype"?e.jsxs("label",{children:[e.jsx("input",{type:"checkbox","aria-label":"Character rig",checked:ht,onChange:t=>At(t.target.checked)}),"Character rig"]}):null,e.jsx("button",{type:"button",onClick:()=>{pt(!0),tt(!1)},children:"Preview character family →"}),e.jsx("button",{type:"button",onClick:()=>{nt(!0),tt(!1)},children:"3D character studio →"}),E==="prototype"?e.jsxs("label",{children:[e.jsx("input",{type:"checkbox","aria-label":"Rendered characters",checked:n,onChange:t=>p(t.target.checked)}),"Rendered characters"]}):null,e.jsx("button",{type:"button",className:"shared-floor__run-link",onClick:()=>{tt(!1),M(!0)},children:"Try Work run →"})]}):null]}),e.jsxs("div",{className:"shared-floor__camera","aria-label":"Map camera",children:[e.jsx("button",{type:"button","aria-pressed":it,onClick:()=>_e(!it),children:it?"Resume":"Pause"}),e.jsx("div",{role:"group","aria-label":"Map projection",children:["flat","iso"].map(t=>e.jsx("button",{type:"button","aria-pressed":z===t,onClick:()=>Ce(t),children:t==="iso"?"Iso":"Flat"},t))}),e.jsx("button",{type:"button","aria-label":"Zoom shared map out",onClick:()=>It(Zt(A.current.zoom,A.current.pan,1/ue)),children:"−"}),e.jsx("button",{type:"button",onClick:()=>It({zoom:1,pan:{x:0,y:0}}),children:"Fit"}),e.jsx("button",{type:"button","aria-label":"Zoom shared map in",onClick:()=>It(Zt(A.current.zoom,A.current.pan,ue)),children:"+"}),e.jsx("output",{className:"shared-floor__zoom-readout","aria-label":`Zoom ${be(B)}`,children:be(B)})]}),e.jsx(De,{width:O,height:W,projection:z,size:et,scale:G,zoom:B,pan:K,onPan:t=>{st(),Lt(Mt(t,A.current.zoom))},onZoom:t=>{st(),Vt(t)},onLocate:t=>It({zoom:A.current.zoom,pan:t}),workspaces:[...H].map(([t,o])=>({id:t,label:`Locate workspace ${o.cwd||"unknown"}, ${o.lanes.length} actors`,x:o.x+o.width/2,y:o.y+o.height/2}))}),X&&H.has(X)?e.jsxs("aside",{className:"shared-floor__workspace-panel","aria-label":"Workspace details",children:[e.jsxs("header",{children:[e.jsx("strong",{children:H.get(X).cwd.split("/").filter(Boolean).at(-1)||"Workspace"}),e.jsx("button",{type:"button","aria-label":"Close workspace details",onClick:()=>Jt(null),children:"×"})]}),e.jsx("p",{children:H.get(X).cwd}),e.jsx("h4",{children:"Reported branches"}),e.jsx("small",{children:[...new Set(H.get(X).lanes.map(t=>t.facts?.branch||Dt(t).branch).filter(Boolean))].join(" · ")||"Branch not reported"}),e.jsx("h4",{children:"Actors in this workspace"}),H.get(X).lanes.map(t=>e.jsxs("button",{className:"shared-floor__workspace-actor",type:"button",onClick:()=>Pt(t),children:[e.jsxs("span",{className:"shared-floor__workspace-actor-heading",children:[e.jsx("strong",{children:Rt(t)}),e.jsx("small",{children:$t(t,i).label})]}),e.jsx("span",{className:"shared-floor__workspace-runtime",children:[t.agent.harness,t.facts?.model||Dt(t).model].filter(Boolean).join(" · ")||"Runtime not reported"}),e.jsx("span",{className:"shared-floor__workspace-task",children:Ge(t.facts?.currentTask)||"No task reported"}),e.jsxs("span",{className:"shared-floor__workspace-runtime",children:[t.facts?.branch||Dt(t).branch||"Branch not reported"," · ",t.id.slice(-5)]})]},t.id))]}):null,e.jsxs("div",{className:"shared-floor__viewport",ref:Tt,onPointerDown:t=>{t.button!==0||t.target.closest("button")||(st(),D.current={x:t.clientX,y:t.clientY,px:A.current.pan.x,py:A.current.pan.y},t.currentTarget.setPointerCapture(t.pointerId))},onPointerMove:t=>{D.current&&Lt(Mt({x:D.current.px+t.clientX-D.current.x,y:D.current.py+t.clientY-D.current.y},B))},onPointerUp:t=>{D.current&&Math.hypot(t.clientX-D.current.x,t.clientY-D.current.y)<4&&(k(null),S(null)),D.current=null},onPointerCancel:()=>{D.current=null},children:[e.jsx(He,{zoom:B,pan:K,beacons:Te,beaconStrength:Kt.beacons}),e.jsxs("div",{className:"shared-floor__benches",style:{opacity:Kt.world,visibility:Kt.world>0?void 0:"hidden",width:O,height:W,transform:`translate(${K.x}px, ${K.y}px) scale(${G})${z==="iso"?" matrix(0.8660254, 0.5, -0.8660254, 0.5, 0, 0)":""}`,marginLeft:-O/2,marginTop:-W/2},children:[e.jsx("svg",{className:"floor-exchange-links",width:O,height:W,"aria-label":"Agent exchange links",children:[...wt].map(([t,o])=>{const c=jt.get(o[0]),s=jt.get(o[1]);if(!c||!s)return null;const f=o.map(u=>{const I=r.find(rt=>rt.id===u);return I?Rt(I):"Actor"}).join(" and "),C=se.some(u=>o.includes(u.from)&&o.includes(u.to)),l=`M ${c.x} ${c.y} Q ${(c.x+s.x)/2} ${Math.min(c.y,s.y)-30} ${s.x} ${s.y}`;return e.jsxs("g",{role:"button",tabIndex:0,"aria-label":`${C?"Open exchanges":"Inspect relationship"} between ${f}`,className:`${C?"is-exchange":"is-family"}${_?.includes(o[0])&&_.includes(o[1])?" is-active":""}`,onPointerDown:u=>u.stopPropagation(),onClick:u=>{u.stopPropagation(),ne(o)},onKeyDown:u=>{(u.key==="Enter"||u.key===" ")&&(u.preventDefault(),ne(o))},children:[e.jsxs("title",{children:[C?"Recent exchanges":"Parent relationship"," · ",f]}),e.jsx("path",{className:"exchange-line",d:l}),e.jsx("path",{className:"exchange-hit",d:l})]},t)})}),e.jsx(Ze,{broker:x,lanes:r,now:i,positions:jt,paused:it}),kt?e.jsx("svg",{className:"shared-floor__connections",width:O,height:W,"aria-hidden":"true",children:[...bt].map(([t,o])=>{const c=jt.get(t);return c?e.jsx("path",{className:o.reason==="Shared file activity"?"is-shared":"is-lineage",d:`M ${kt.x} ${kt.y} Q ${(kt.x+c.x)/2} ${Math.min(kt.y,c.y)-35} ${c.x} ${c.y}`},t):null})}):null,[...H].map(([t,o])=>{const c=Co(t);return e.jsxs("section",{className:`shared-floor__island${o.actors.length>1||y?" has-place":""}${X===t?" is-open":""}${Qt===t?" is-dragging":""}`,"aria-label":o.cwd||"Agent gathering",style:{left:Et.get(t).x,top:Et.get(t).y,height:Et.get(t).height,width:Et.get(t).width,zIndex:Qt===t?5:void 0},onPointerDown:s=>{if(s.button!==0||s.target.closest("button"))return;const f=s.currentTarget.getBoundingClientRect(),C=(s.clientX-f.left)/f.width-.5,l=(s.clientY-f.top)/f.height-.5;if(C*C+l*l>.25)return;s.stopPropagation(),st();const u={};for(const[I,rt]of H)I!==t&&(u[I]={x:rt.x,y:rt.y});dt.current={key:t,sx:s.clientX,sy:s.clientY,baseX:o.x,baseY:o.y,moved:!1,before:Yt,hold:u},s.currentTarget.setPointerCapture(s.pointerId)},onPointerMove:s=>{const f=dt.current;if(!f||f.key!==t)return;s.stopPropagation();const C=s.clientX-f.sx,l=s.clientY-f.sy;!f.moved&&!no(C,l)||(f.moved=!0,Xt(t),f.last=ao({x:f.baseX,y:f.baseY},C,l,G,z),vt({...f.hold,[t]:f.last}))},onPointerUp:s=>{const f=dt.current;if(!f||f.key!==t)return;if(s.stopPropagation(),dt.current=null,Xt(null),s.currentTarget.hasPointerCapture(s.pointerId)&&s.currentTarget.releasePointerCapture(s.pointerId),!f.moved){k(null),S(null);return}const C={...f.before,[t]:f.last??{x:f.baseX,y:f.baseY}};ye(C),vt(C)},onPointerCancel:()=>{const s=dt.current;!s||s.key!==t||(dt.current=null,Xt(null),vt(s.before))},children:[e.jsxs("div",{className:"shared-floor__place-presentation",children:[e.jsx("div",{className:"shared-floor__sky","aria-hidden":"true",style:{backgroundImage:`url(${_o})`,backgroundPosition:c.skyPosition}}),e.jsx("div",{className:"shared-floor__outpost","aria-hidden":"true",style:{backgroundImage:`url(${Mo})`,backgroundPosition:c.outpostPosition}}),e.jsx("span",{className:"shared-floor__label-anchor","aria-hidden":"true"}),e.jsxs("button",{type:"button",className:"shared-floor__gathering-label","aria-expanded":X===t,onPointerDown:s=>s.stopPropagation(),onClick:()=>Jt(X===t?null:t),children:[e.jsx("strong",{children:o.cwd==="~"?"Home":o.cwd.split("/").filter(Boolean).at(-1)||"Unassigned"}),e.jsx("small",{children:o.cwd||"Workspace not reported"})]})]}),y?e.jsxs("div",{className:"shared-floor__optional-table",children:[e.jsx("span",{children:o.cwd.split("/").filter(Boolean).at(-1)||"Workspace"}),e.jsx("div",{children:pe(o.lanes).slice(0,4).map(s=>e.jsxs("button",{type:"button",title:s.path,"aria-label":`Preview ${s.path}`,disabled:!s.resolvedPath,onClick:()=>s.resolvedPath&&d(s.resolvedPath),children:[e.jsx(oo,{size:25}),e.jsx("small",{children:s.path.split("/").at(-1)})]},s.id))})]}):null,e.jsx("div",{className:"shared-floor__crew",children:o.actors.map(({lane:s,x:f,y:C})=>e.jsxs("div",{className:`shared-floor__wanderer${g===s.id?" is-selected":""}${T.includes(s.id)?" is-pinned":""}${oe.has(s.id)?" is-connected":""}${q===s.id?" is-speaking":""}`,style:{left:f+(yt[s.id]?.x??0),top:C+(yt[s.id]?.y??0),zIndex:zt===s.id?10:T.includes(s.id)?7+T.indexOf(s.id):void 0},"data-dragging":zt===s.id||void 0,onPointerDown:l=>{if(l.button!==0)return;if(l.shiftKey||l.altKey||l.metaKey||l.ctrlKey){l.stopPropagation(),lt.current=!0;const I=l.currentTarget.getBoundingClientRect();P({lane:s,x:I.left+I.width/2,y:I.bottom+32,compose:!0,voice:l.shiftKey});return}l.stopPropagation(),lt.current=!1;const u=yt[s.id]??{x:0,y:0};ct.current={id:s.id,sx:l.clientX,sy:l.clientY,...u,baseX:o.x+f,baseY:o.y+C,moved:!1},l.currentTarget.setPointerCapture(l.pointerId)},onPointerMove:l=>{const u=ct.current;if(!u||u.id!==s.id)return;l.stopPropagation();const I=l.clientX-u.sx,rt=l.clientY-u.sy;if(!u.moved&&Math.hypot(I,rt)<5)return;u.moved=!0,Ht(s.id);const de=we(I/G,rt/G,z);Se(ve=>({...ve,[s.id]:{x:Math.max(0,Math.min(O-84,u.baseX+u.x+de.x))-u.baseX,y:Math.max(20,Math.min(W-120,u.baseY+u.y+de.y))-u.baseY}}))},onPointerUp:l=>{ct.current?.id===s.id&&(l.stopPropagation(),ct.current.moved||le(s),lt.current=!0,ct.current=null,Ht(null),l.currentTarget.hasPointerCapture(l.pointerId)&&l.currentTarget.releasePointerCapture(l.pointerId))},onContextMenu:l=>{l.preventDefault(),l.stopPropagation();const u=l.currentTarget.getBoundingClientRect();P({lane:s,x:u.left+u.width/2,y:u.bottom+32,compose:!1})},onPointerCancel:()=>{ct.current=null,lt.current=!0,Ht(null)},onClickCapture:l=>{lt.current&&(l.stopPropagation(),lt.current=!1)},children:[w===s.id?e.jsxs("span",{className:"shared-floor__talk-follow",title:"Message accepted · following observed agent status",children:["↗ You ",e.jsx("span",{children:$t(s,i).label})]}):null,e.jsx(to,{crewSlug:E!=="prototype"?v.current[s.id]:void 0,pixelCrew:E==="chip",rigged:ht,lane:s,now:i,paused:it||zt===s.id,playful:F,character:n?he[m.current.indexOf(s.id)]:void 0,displayName:eo(s.agent)?s.agent.harness||"Agent":void 0,pinned:T.includes(s.id),onActor:le})]},s.id))})]},t)})]})]})]})}export{Zs as SharedWorkFloor};