@openscout/scout 0.2.79 → 0.2.80

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 (389) hide show
  1. package/bin/scoutd +0 -0
  2. package/dist/build-manifest.json +3 -3
  3. package/dist/client/assets/ActivityScreen-BXm6nJ6L.js +1 -0
  4. package/dist/client/assets/{AddProjectForm-BoVtelSP.js → AddProjectForm-CtEiLQnm.js} +1 -1
  5. package/dist/client/assets/{AgentAvatar-CufDA4A-.js → AgentAvatar-CszU5eaU.js} +1 -1
  6. package/dist/client/assets/AgentConfigurationScreen-CfBXxrsD.js +1 -0
  7. package/dist/client/assets/AgentDefinitionsWorkspace-4Z0aN8AR.js +1 -0
  8. package/dist/client/assets/{AgentDetailCard-DxxVkgT1.js → AgentDetailCard-sZuHl1de.js} +1 -1
  9. package/dist/client/assets/AgentFloorView-DMivAYHU.js +1 -0
  10. package/dist/client/assets/AgentInfoScreen-CPkLg1pK.js +1 -0
  11. package/dist/client/assets/{AgentLaneCard-DTUvE96I.js → AgentLaneCard-nB68f2CI.js} +1 -1
  12. package/dist/client/assets/{AgentLaneChrome-BfVygkgL.js → AgentLaneChrome-O9Yf0uR-.js} +1 -1
  13. package/dist/client/assets/AgentLaneDetailSheet-BfhpaEQ3.js +4 -0
  14. package/dist/client/assets/{AgentLaneSummaryResize-CMgzYvAA.js → AgentLaneSummaryResize-Ct3b0TQR.js} +1 -1
  15. package/dist/client/assets/AgentLanesEmbedScreen-CjHMvy3v.js +1 -0
  16. package/dist/client/assets/{AgentLanesPreflight-KWfLcaNB.js → AgentLanesPreflight-DNGvZvjd.js} +1 -1
  17. package/dist/client/assets/{AgentLanesView-CxfbV8Kd.js → AgentLanesView-DqRK5-d2.js} +1 -1
  18. package/dist/client/assets/{AgentLiveActions-CZdAInEu.js → AgentLiveActions-DI4ooSHW.js} +1 -1
  19. package/dist/client/assets/{AgentSessions-Bkr0lyry.js → AgentSessions-BxWIPkWh.js} +1 -1
  20. package/dist/client/assets/{AgentsConsole-WtFVqaPJ.js → AgentsConsole-D6VHSCfZ.js} +1 -1
  21. package/dist/client/assets/AgentsScreen-zR6b2bUL.js +1 -0
  22. package/dist/client/assets/AgentsSubnav-q0xcZi6C.js +1 -0
  23. package/dist/client/assets/{AtopView-_OKDlZ1h.js → AtopView-VZkk40v0.js} +1 -1
  24. package/dist/client/assets/{BackToPicker-CkUmHuuo.js → BackToPicker-DZg_4nHL.js} +1 -1
  25. package/dist/client/assets/{BriefingDetailScreen-i54EtZKW.js → BriefingDetailScreen-BZU4qMwE.js} +1 -1
  26. package/dist/client/assets/{BriefingsScreen-CBrHojlQ.js → BriefingsScreen-Bfc3tqPp.js} +1 -1
  27. package/dist/client/assets/{BrokerMetadataPanel-opTLuZU6.js → BrokerMetadataPanel-CaFe6kdh.js} +1 -1
  28. package/dist/client/assets/BrokerScreen-Chh8sGen.js +5 -0
  29. package/dist/client/assets/{ChatCollapsedStrip-Dr2vmKXQ.js → ChatCollapsedStrip-Cov54p9V.js} +1 -1
  30. package/dist/client/assets/{CodeDiffPane-CLOGjwul.js → CodeDiffPane-C1ebFt-Y.js} +1 -1
  31. package/dist/client/assets/{CodeProjectPicker-DTV8hR6A.js → CodeProjectPicker-tsCly-f3.js} +1 -1
  32. package/dist/client/assets/CodeScreen-D0hpZNLP.js +1 -0
  33. package/dist/client/assets/{ContextMenu-BlBQhpax.js → ContextMenu-N-Z6X0Z1.js} +1 -1
  34. package/dist/client/assets/ConversationComposer-CiEF7dhd.js +1 -0
  35. package/dist/client/assets/ConversationFeedRows-5it6QNBV.js +1 -0
  36. package/dist/client/assets/ConversationHeader-BGgbITvr.js +1 -0
  37. package/dist/client/assets/ConversationPanels-vI9YuQJh.js +2 -0
  38. package/dist/client/assets/ConversationScreen-C-PrCRz1.js +1 -0
  39. package/dist/client/assets/ConversationScreen-yIKEsm-8.css +1 -0
  40. package/dist/client/assets/{ConversationStatus-DSgdVofa.js → ConversationStatus-COEj5loj.js} +1 -1
  41. package/dist/client/assets/{DataTable-0DwuXyvW.js → DataTable-BoofV-_4.js} +1 -1
  42. package/dist/client/assets/{DispatchAftermath-BrreQifA.js → DispatchAftermath-OXYlMbT1.js} +1 -1
  43. package/dist/client/assets/{DocumentFocusViewer-DU_9BHsD.js → DocumentFocusViewer-BCG2kOmd.js} +1 -1
  44. package/dist/client/assets/{EmbeddableSurfacesLab-DdaswbfI.js → EmbeddableSurfacesLab-C2SZvrHJ.js} +1 -1
  45. package/dist/client/assets/{EmptyState-CoL-QuUO.js → EmptyState-DypEjx0V.js} +1 -1
  46. package/dist/client/assets/{FileViewerPane-C9Ly01Ef.js → FileViewerPane-CXCq-oKj.js} +1 -1
  47. package/dist/client/assets/{FleetSearch-DlWTLl-v.js → FleetSearch-Dj7-CfNi.js} +1 -1
  48. package/dist/client/assets/FlightObserveScreen-Yq5NtQQJ.js +1 -0
  49. package/dist/client/assets/FollowScreen-DRgYuAvp.js +1 -0
  50. package/dist/client/assets/HarnessMark-BE-YSyci.js +1 -0
  51. package/dist/client/assets/HarnessesScreen-L-emPcXd.js +1 -0
  52. package/dist/client/assets/HerdrSession-DKFCJMst.js +4 -0
  53. package/dist/client/assets/{HomeHero-Cfsow7qL.js → HomeHero-CAEg8Yg5.js} +1 -1
  54. package/dist/client/assets/{KnowledgeSearchInspector-DKashKoH.js → KnowledgeSearchInspector-C2EZsQ5i.js} +1 -1
  55. package/dist/client/assets/KnowledgeSearchScreen-DvdOFh-b.js +1 -0
  56. package/dist/client/assets/{LaneToolHoverCard-BzehBmdi.js → LaneToolHoverCard-DrPXYZvQ.js} +1 -1
  57. package/dist/client/assets/LaneTraceDetailSheet-Dl7foF88.js +1 -0
  58. package/dist/client/assets/{LaneTraceEventFocus-DYvHfs_3.js → LaneTraceEventFocus-X4-DDFEo.js} +1 -1
  59. package/dist/client/assets/{MeshCanvas-DIjlrMPU.js → MeshCanvas-rtCBD7s6.js} +1 -1
  60. package/dist/client/assets/{MeshCanvasMinimap-DEq-PkF0.js → MeshCanvasMinimap-CuvXOkc7.js} +1 -1
  61. package/dist/client/assets/MeshScreen-D5zzTn0o.js +1 -0
  62. package/dist/client/assets/{MeshTopologyView-BMHpH5BU.js → MeshTopologyView-CeTShs-U.js} +2 -2
  63. package/dist/client/assets/{MessageComposerSuggestions-zAUUcLOv.js → MessageComposerSuggestions-Cs9u-F_3.js} +1 -1
  64. package/dist/client/assets/MessagesScreen-BhOJ7_tj.js +1 -0
  65. package/dist/client/assets/MissionContextRail-0O-Zu1Tn.js +1 -0
  66. package/dist/client/assets/MissionControlView-D2JO9u-y.js +1 -0
  67. package/dist/client/assets/{MissionFocusOverlay-C7cPt6eU.js → MissionFocusOverlay-LnjmqBiW.js} +1 -1
  68. package/dist/client/assets/{MissionLeftAgentRow-CxlH3dON.js → MissionLeftAgentRow-nc1Jyq3D.js} +1 -1
  69. package/dist/client/assets/MissionLogPane-lZ9vUftY.js +1 -0
  70. package/dist/client/assets/{NewAgentModal-DprvD4EK.js → NewAgentModal-K1cvdmZr.js} +1 -1
  71. package/dist/client/assets/NewChatComposer-C5LT7MF7.css +1 -0
  72. package/dist/client/assets/NewChatComposer-DXDxV2Mh.js +19 -0
  73. package/dist/client/assets/{NewChatOrigin--pHWUb4V.js → NewChatOrigin-CnjoswTG.js} +1 -1
  74. package/dist/client/assets/{ObserveEmbedScreen-CfvrnOiZ.js → ObserveEmbedScreen-CRpzYf0Y.js} +1 -1
  75. package/dist/client/assets/{ObserveTextFlow-CBitljxi.js → ObserveTextFlow-DJxQc2H6.js} +2 -2
  76. package/dist/client/assets/{ObservedTopologyPanel-Dv6fbHzW.js → ObservedTopologyPanel-C1AQM0Mq.js} +1 -1
  77. package/dist/client/assets/OpenScoutAppShell-DrHYD_pd.js +87 -0
  78. package/dist/client/assets/OpsAgentsView-BnMX0vEY.js +1 -0
  79. package/dist/client/assets/OpsScreen-BeC0lieE.js +1 -0
  80. package/dist/client/assets/OpsSubnav-D5Bpowtk.js +1 -0
  81. package/dist/client/assets/{PlanView-DYtt8H37.js → PlanView-DDXdC19M.js} +1 -1
  82. package/dist/client/assets/ProjectAgentProfile-zE1cApxw.js +1 -0
  83. package/dist/client/assets/{ProjectAgentProfileBar-B3IvVbqS.js → ProjectAgentProfileBar-MODhG0P6.js} +1 -1
  84. package/dist/client/assets/{ProjectAgentProfileHero-D5E8yvDj.js → ProjectAgentProfileHero-C1ImgGDu.js} +1 -1
  85. package/dist/client/assets/ProjectsInbox-C3Jd6JTk.js +2 -0
  86. package/dist/client/assets/{ProjectsRail-DEDS-M1c.js → ProjectsRail-B1zrQLZe.js} +1 -1
  87. package/dist/client/assets/ProjectsScreen-PW_NH5VK.js +1 -0
  88. package/dist/client/assets/ProjectsThreadAside-DaCEUWN1.js +1 -0
  89. package/dist/client/assets/Provider-DSsb2gLR.js +1 -0
  90. package/dist/client/assets/{RailRow-BTlVAnHS.js → RailRow-DerXOXQS.js} +1 -1
  91. package/dist/client/assets/RawSessionsTable-LWEvXJzj.js +1 -0
  92. package/dist/client/assets/RealtimeVoiceScreen-XtxbCjOs.js +1 -0
  93. package/dist/client/assets/{RepoDiffEmbedScreen-CtTdlQ2A.js → RepoDiffEmbedScreen-C9oLCcZX.js} +1 -1
  94. package/dist/client/assets/{RepoDiffPageScreen-BRvaVYoC.js → RepoDiffPageScreen-CGEMAv2Z.js} +1 -1
  95. package/dist/client/assets/{RepoDiffViewer-Bo0gREMj.js → RepoDiffViewer-CB8PSVey.js} +1 -1
  96. package/dist/client/assets/RepoDiffViewerLazy-DIxkiMto.js +2 -0
  97. package/dist/client/assets/{ReposScreen-BBkJf8xT.js → ReposScreen-BN1lVjOj.js} +1 -1
  98. package/dist/client/assets/{ScoutDeckSurface-Bi9ov9Bm.js → ScoutDeckSurface-BCpl0QCx.js} +1 -1
  99. package/dist/client/assets/{ScoutSurface-DEQg_7Io.js → ScoutSurface-BEnDlynn.js} +1 -1
  100. package/dist/client/assets/{ScoutbotBroadcastChip-DJXuyn73.js → ScoutbotBroadcastChip-z9R_pC_U.js} +1 -1
  101. package/dist/client/assets/{ScoutbotFxLab-BgsuLDjo.js → ScoutbotFxLab-fAROyIfz.js} +1 -1
  102. package/dist/client/assets/{ScoutbotRealtimeVoiceCall-Bzyl0BCS.js → ScoutbotRealtimeVoiceCall-CDyFJX8m.js} +1 -1
  103. package/dist/client/assets/{SecondaryNav-Bks0CO2h.js → SecondaryNav-Hv5AJ3Fv.js} +1 -1
  104. package/dist/client/assets/{SessionEmbedScreen-b0Zgmfx5.js → SessionEmbedScreen-CDRpQc3g.js} +1 -1
  105. package/dist/client/assets/{SessionObserve-Dlx5vDaV.js → SessionObserve-BmmJ8dEh.js} +1 -1
  106. package/dist/client/assets/{SessionObserveEvidence-ChBD1d4c.js → SessionObserveEvidence-CEedIk2a.js} +1 -1
  107. package/dist/client/assets/SessionRefScreen-Dk-O4OVt.js +1 -0
  108. package/dist/client/assets/SessionsScreen-BJEjuo2X.js +1 -0
  109. package/dist/client/assets/{SettingsDrawer-C587L1i1.js → SettingsDrawer-DL-SVLdd.js} +1 -1
  110. package/dist/client/assets/SettingsScreen-DJ-BhBwR.js +1 -0
  111. package/dist/client/assets/{ShikiPane-I_OTW5NO.js → ShikiPane-B7O4if20.js} +1 -1
  112. package/dist/client/assets/{SlidePanel-FCqT1zO3.js → SlidePanel-B3gc5HnM.js} +1 -1
  113. package/dist/client/assets/{SpriteAvatar-CQs-jC-v.js → SpriteAvatar-BpQDpOkq.js} +1 -1
  114. package/dist/client/assets/{StatusPill-CbABggnQ.js → StatusPill-B33sQinT.js} +1 -1
  115. package/dist/client/assets/{TailView-C_MXVSum.js → TailView-DL3YZkzE.js} +2 -2
  116. package/dist/client/assets/Terminal-Dp1FSGIS.js +1 -0
  117. package/dist/client/assets/TerminalEmbedScreen-DP9IM4xf.js +1 -0
  118. package/dist/client/assets/{TextDocumentSurface-C-9EtYqt.js → TextDocumentSurface-DRjctOIt.js} +1 -1
  119. package/dist/client/assets/{TmuxPeek-Dz1gJ2pU.js → TmuxPeek-DNC4uWky.js} +1 -1
  120. package/dist/client/assets/{VoicePermissionsPanel-MfICy9kk.js → VoicePermissionsPanel-WLN0V-Xv.js} +1 -1
  121. package/dist/client/assets/{WorkDetailScreen-Cs7kdllj.js → WorkDetailScreen-D2Yl0mYZ.js} +1 -1
  122. package/dist/client/assets/{WorkFilesViewer-CF-nhtZ4.js → WorkFilesViewer-BbVfcUN-.js} +1 -1
  123. package/dist/client/assets/{activity-WhBf3FXP.js → activity-BxwKkT8z.js} +1 -1
  124. package/dist/client/assets/{addon-fit-q-x_HytU.js → addon-fit-B9O2vJoh.js} +1 -1
  125. package/dist/client/assets/{addon-webgl-fhhvEA9h.js → addon-webgl-BhRZFDcn.js} +1 -1
  126. package/dist/client/assets/{agent-essentials-DyJiUGpZ.js → agent-essentials-SrzMYEXV.js} +1 -1
  127. package/dist/client/assets/agent-identity-BxCsXnDp.js +1 -0
  128. package/dist/client/assets/{agent-lane-card-model-BCIwPjEh.js → agent-lane-card-model-DSWdGu-v.js} +1 -1
  129. package/dist/client/assets/agent-lane-detail-BNNm6FNu.js +2 -0
  130. package/dist/client/assets/{agent-lane-preview-BtnfNyFR.js → agent-lane-preview-C33Dwpn7.js} +1 -1
  131. package/dist/client/assets/{agent-lanes-model-Bl6xfviL.js → agent-lanes-model-CPgQRenB.js} +2 -2
  132. package/dist/client/assets/{arc.es-DPJ0xRV6.js → arc.es-NlJw-19N.js} +1 -1
  133. package/dist/client/assets/{arrow-down-DsD-dYj-.js → arrow-down-D3-IbArq.js} +1 -1
  134. package/dist/client/assets/{arrow-left-WjQIN9J6.js → arrow-left-_vS7itsV.js} +1 -1
  135. package/dist/client/assets/{arrow-up-right-CtTDrZJr.js → arrow-up-right-CcrWONpD.js} +1 -1
  136. package/dist/client/assets/{bot-B_Uzf4_O.js → bot-BRINYlC6.js} +1 -1
  137. package/dist/client/assets/{check-BbgHJX8u.js → check-COxArFXG.js} +1 -1
  138. package/dist/client/assets/{chevron-down-BFai6ZfE.js → chevron-down-DRCbnzyY.js} +1 -1
  139. package/dist/client/assets/{chevron-right-CyUa1zXx.js → chevron-right-CNE6QAVr.js} +1 -1
  140. package/dist/client/assets/{chunk-HRAB3GC3-CvwpNg-G.js → chunk-HRAB3GC3-CAeEKaf5.js} +1 -1
  141. package/dist/client/assets/chunk-JTPDIGGW-s6WbxdjC.js +46 -0
  142. package/dist/client/assets/{chunk-T65CQEWV-DI4NKdNq.js → chunk-T65CQEWV-CiZ_ICHW.js} +1 -1
  143. package/dist/client/assets/chunk-YOZR3KYS-DLOc92uD.js +2 -0
  144. package/dist/client/assets/{clock-DviOalxA.js → clock-CyfvRmj6.js} +1 -1
  145. package/dist/client/assets/{code-xml-05TD3uOC.js → code-xml--LjSM4Mv.js} +1 -1
  146. package/dist/client/assets/content-7ZeCPAEt.js +1 -0
  147. package/dist/client/assets/content-BHUcUCH5.js +1 -0
  148. package/dist/client/assets/content-BUhvLPkv.js +1 -0
  149. package/dist/client/assets/content-BomQ5YWo.js +1 -0
  150. package/dist/client/assets/content-C39ELNgC.js +1 -0
  151. package/dist/client/assets/content-C4RYKHut.js +1 -0
  152. package/dist/client/assets/content-CCiZfG4H.js +1 -0
  153. package/dist/client/assets/content-CDpDtVI-.js +1 -0
  154. package/dist/client/assets/content-CO-9CeFd.js +1 -0
  155. package/dist/client/assets/content-CuOLxp1x.js +1 -0
  156. package/dist/client/assets/content-CvtLIjXS.js +1 -0
  157. package/dist/client/assets/content-CzwTUb9n.js +1 -0
  158. package/dist/client/assets/content-DQXbo2RO.js +1 -0
  159. package/dist/client/assets/content-DRTQ9QQb.js +1 -0
  160. package/dist/client/assets/content-LCELs6zg.js +1 -0
  161. package/dist/client/assets/content-Uqt8AG-s.css +1 -0
  162. package/dist/client/assets/content-qsDjA4Au.js +1 -0
  163. package/dist/client/assets/{conversation-icons-DohQL6GI.js → conversation-icons-c-hXv7hY.js} +1 -1
  164. package/dist/client/assets/conversation-model-CHwHZNw-.js +1 -0
  165. package/dist/client/assets/conversation-motion-features-T8vF9zED.js +1 -0
  166. package/dist/client/assets/{copy-CwCAivnc.js → copy-4LfKIdQJ.js} +1 -1
  167. package/dist/client/assets/{createLucideIcon-DlxlBfLC.js → createLucideIcon-ClCdc3F9.js} +1 -1
  168. package/dist/client/assets/discover-7Ks00w-M.js +2 -0
  169. package/dist/client/assets/embed-entry-n2ThmSSX.js +2 -0
  170. package/dist/client/assets/{external-link-CnjcXf32.js → external-link-CnaI1QFS.js} +1 -1
  171. package/dist/client/assets/{eye-So8tNNK6.js → eye-BFlhMzQL.js} +1 -1
  172. package/dist/client/assets/{file-text-i3xTDUjJ.js → file-text-DG-pufl1.js} +1 -1
  173. package/dist/client/assets/{gestures-CgvAMd6F.js → gestures-CxG3Dphs.js} +1 -1
  174. package/dist/client/assets/home-live-action-BkqGLVRY.js +1 -0
  175. package/dist/client/assets/home-moving-signal-aNJusIzL.js +1 -0
  176. package/dist/client/assets/home-now-card-BQK4EFHx.js +1 -0
  177. package/dist/client/assets/{home-now-card-nano-CkLHUQ4J.js → home-now-card-nano-CdtzqSIF.js} +1 -1
  178. package/dist/client/assets/hooks-Dst1TH7n.js +2 -0
  179. package/dist/client/assets/index-9as_JTUs.css +1 -0
  180. package/dist/client/assets/index-CU9dtwJk.js +1 -0
  181. package/dist/client/assets/{index-sUomXsrf.js → index-CzVeWScw.js} +2 -2
  182. package/dist/client/assets/index-Dewd56RX.js +1 -0
  183. package/dist/client/assets/index-_YQXKEhb.js +1 -0
  184. package/dist/client/assets/{inspector-panel-DhXd-YbT.js → inspector-panel-DgOM8nCo.js} +1 -1
  185. package/dist/client/assets/keyboard-nav-BJnFoFDP.js +1 -0
  186. package/dist/client/assets/{lane-observe-DrhKkQ3A.js → lane-observe-BA3g9aVd.js} +1 -1
  187. package/dist/client/assets/{lane-roster-store-NE15Oe6M.js → lane-roster-store-pR4ZaYQm.js} +1 -1
  188. package/dist/client/assets/left-BhzPp-_E.js +1 -0
  189. package/dist/client/assets/left-CN1MABD0.js +2 -0
  190. package/dist/client/assets/left-DDgbsio7.js +1 -0
  191. package/dist/client/assets/left-Dpf2R9uD.js +1 -0
  192. package/dist/client/assets/left-HwwbMVtl.js +2 -0
  193. package/dist/client/assets/left-YfH0daht.js +1 -0
  194. package/dist/client/assets/left-agents-CYUwAy2Z.js +1 -0
  195. package/dist/client/assets/left-default-vEGZALPv.js +1 -0
  196. package/dist/client/assets/left-lanes-bphF-vlX.js +1 -0
  197. package/dist/client/assets/left-mission-B54-c3hq.js +1 -0
  198. package/dist/client/assets/left-np5USKqG.js +1 -0
  199. package/dist/client/assets/left-plan-BNBuDoPQ.js +2 -0
  200. package/dist/client/assets/library-DbCVJG_O.js +1 -0
  201. package/dist/client/assets/{loader-circle-lWOOKezu.js → loader-circle-Byb9kSFx.js} +1 -1
  202. package/dist/client/assets/{local-agents-C7fDHLVC.js → local-agents-DBaUbP-_.js} +1 -1
  203. package/dist/client/assets/{mentions-CY_wPZc5.js → mentions-fbQJ2mBI.js} +1 -1
  204. package/dist/client/assets/{mesh-ops-Kn8pCtyJ.js → mesh-ops-Cnw3vwAu.js} +1 -1
  205. package/dist/client/assets/{mesh-view-store-D14ihwkF.js → mesh-view-store-Btlyc7rW.js} +1 -1
  206. package/dist/client/assets/{message-circle-C5UZ6fO7.js → message-circle-aGOfQWm2.js} +1 -1
  207. package/dist/client/assets/{message-markup-C8Nx04sP.js → message-markup-mGF07emJ.js} +1 -1
  208. package/dist/client/assets/{message-square-BD-4UUdc.js → message-square-CIXda-Y7.js} +1 -1
  209. package/dist/client/assets/mission-control-m3BTDQ9l.css +1 -0
  210. package/dist/client/assets/{mission-control-store-xQHVQdm8.js → mission-control-store-CcoNeQHG.js} +1 -1
  211. package/dist/client/assets/mission-wall-CocIM1cF.js +1 -0
  212. package/dist/client/assets/{observe-uJfIlIUV.js → observe-BNFzh-7B.js} +1 -1
  213. package/dist/client/assets/openAgent-Dbv5wfuL.js +1 -0
  214. package/dist/client/assets/{page-status-BymFEFai.js → page-status-DDvNdA8s.js} +1 -1
  215. package/dist/client/assets/{paperclip-DL9BXPp2.js → paperclip-DfpJkR4s.js} +1 -1
  216. package/dist/client/assets/{plus-C9lTjsgd.js → plus-CmFQp9Uj.js} +1 -1
  217. package/dist/client/assets/profile-s3KRbip1.js +1 -0
  218. package/dist/client/assets/{projects-inbox-DfVmGFFk.js → projects-inbox-Diddml6e.js} +1 -1
  219. package/dist/client/assets/{radio-DedMyP8J.js → radio-PauJIekM.js} +1 -1
  220. package/dist/client/assets/{refresh-cw-D8PFyhUa.js → refresh-cw-4oeFn1Jn.js} +1 -1
  221. package/dist/client/assets/resolve-panes-cp6eNewO.js +1 -0
  222. package/dist/client/assets/resolve-sidebar-context-Dbo-5PWx.js +1 -0
  223. package/dist/client/assets/right-09W2JJFg.js +1 -0
  224. package/dist/client/assets/right-B-MKhiJ6.js +1 -0
  225. package/dist/client/assets/right-B91Zl8lQ.js +1 -0
  226. package/dist/client/assets/{right-C1sIsSHR.js → right-BcFnuse9.js} +1 -1
  227. package/dist/client/assets/right-BdtMzn35.js +1 -0
  228. package/dist/client/assets/right-BqmKXLtf.js +1 -0
  229. package/dist/client/assets/right-BzeB-Dpt.js +1 -0
  230. package/dist/client/assets/right-CkGOs-sq.js +1 -0
  231. package/dist/client/assets/right-CzGiNBzB.js +1 -0
  232. package/dist/client/assets/right-Dc7uqv7l.js +1 -0
  233. package/dist/client/assets/{rocket-CriBwkHM.js → rocket-C-AskjZH.js} +1 -1
  234. package/dist/client/assets/router-B-K15T7B.js +1 -0
  235. package/dist/client/assets/{runtime-picker-DOZpZOlt.js → runtime-picker-BCQD7d4K.js} +1 -1
  236. package/dist/client/assets/{scope-views-BF_RvGKU.js → scope-views-BhkbIFPY.js} +1 -1
  237. package/dist/client/assets/{scout-voice-BZ4KqADJ.js → scout-voice-S5_YZ2v8.js} +1 -1
  238. package/dist/client/assets/{scroll-text-BIYf6g6N.js → scroll-text-BV-BB7v-.js} +1 -1
  239. package/dist/client/assets/{search-DCT_EvPr.js → search-C3bSJluv.js} +1 -1
  240. package/dist/client/assets/{secondaryNavConfig-Drb7wPG4.js → secondaryNavConfig-Bg4Tc0gT.js} +1 -1
  241. package/dist/client/assets/{selection-bridge-CJOTyYQs.js → selection-bridge-B1dmkX3P.js} +1 -1
  242. package/dist/client/assets/{send-horizontal-DDwOgEs3.js → send-horizontal-CqogPmbY.js} +1 -1
  243. package/dist/client/assets/{server-CHZCp3cF.js → server-Brw5Y1Gh.js} +1 -1
  244. package/dist/client/assets/{session-catalog-XhGxCtP-.js → session-catalog-9FqXmjBw.js} +1 -1
  245. package/dist/client/assets/session-table-1xdSxSXq.js +1 -0
  246. package/dist/client/assets/{sliders-horizontal-B9Nj-Y4J.js → sliders-horizontal-CUiOH26y.js} +1 -1
  247. package/dist/client/assets/{sparkles-up7pVlX-.js → sparkles-BjCA3Evu.js} +1 -1
  248. package/dist/client/assets/{sse-CVoGDiKW.js → sse-QcU9bikk.js} +1 -1
  249. package/dist/client/assets/synthetic-agent-routing-aduMYO7P.js +1 -0
  250. package/dist/client/assets/system-surfaces-redesign-B7GQhfpw.css +1 -0
  251. package/dist/client/assets/{tail-display-BdyoLvzY.js → tail-display-BRcJltQa.js} +2 -2
  252. package/dist/client/assets/{tail-events-CTipUIli.js → tail-events-C6K7bCWB.js} +1 -1
  253. package/dist/client/assets/{terminal-DXQISjZn.js → terminal-DrTkVXIj.js} +1 -1
  254. package/dist/client/assets/{terminal-relay-B5Sma7fK.js → terminal-relay-BkXjjSkq.js} +1 -1
  255. package/dist/client/assets/{terminal-screen-19jAI0Cw.css → terminal-screen-BqVnCwl0.css} +1 -1
  256. package/dist/client/assets/terminal-sessions-C3qU8tnY.js +1 -0
  257. package/dist/client/assets/{terminal-takeover-X97KCSJk.js → terminal-takeover-KvmTwABa.js} +1 -1
  258. package/dist/client/assets/{use-conversation-list-B1T6J_qE.js → use-conversation-list-C5sF6WBR.js} +1 -1
  259. package/dist/client/assets/{use-fleet-active-asks-DLofGhhK.js → use-fleet-active-asks-BOMPW0nl.js} +1 -1
  260. package/dist/client/assets/{use-mesh-ops-items-ByGZk8rU.js → use-mesh-ops-items-Co05vcTV.js} +1 -1
  261. package/dist/client/assets/{use-reduced-motion-Cvk-HRKg.js → use-reduced-motion-Dla-G_Jz.js} +1 -1
  262. package/dist/client/assets/{use-scout-dev-flags-BHvg3G2c.js → use-scout-dev-flags-BOQF3fW2.js} +1 -1
  263. package/dist/client/assets/{useAgentHoverCard-D5e8Qg1z.js → useAgentHoverCard-FtCmY-b9.js} +1 -1
  264. package/dist/client/assets/useContentSecondaryNav-BX7Sq7vy.js +1 -0
  265. package/dist/client/assets/{usePierreRuntime-DIVunfX0.js → usePierreRuntime-Bo4lD7Ui.js} +1 -1
  266. package/dist/client/assets/{wrench-pEVd8JnN.js → wrench-CeCdjiPF.js} +1 -1
  267. package/dist/client/assets/{x-0XjXwGqq.js → x-D4X_y1j_.js} +1 -1
  268. package/dist/client/assets/{xterm-CRLlV1Xp.js → xterm-D2a5wrkJ.js} +1 -1
  269. package/dist/client/index.html +2 -2
  270. package/dist/main.mjs +1404 -356
  271. package/dist/node/main.mjs +63 -15
  272. package/dist/openscout-terminal-relay.mjs +16 -4
  273. package/dist/pairing-runtime-controller.mjs +3028 -2946
  274. package/dist/runtime/broker-daemon.mjs +356 -134
  275. package/dist/scout-control-plane-web.mjs +5631 -5183
  276. package/dist/scout-web-server.mjs +5631 -5183
  277. package/package.json +1 -1
  278. package/dist/client/assets/ActivityScreen-DnqqRSlS.js +0 -1
  279. package/dist/client/assets/AgentConfigurationScreen-CJqoMA0J.js +0 -1
  280. package/dist/client/assets/AgentDefinitionsWorkspace-FpEkb-tu.js +0 -1
  281. package/dist/client/assets/AgentFloorView-CycUn0Lv.js +0 -1
  282. package/dist/client/assets/AgentInfoScreen-CAQAxpAK.js +0 -1
  283. package/dist/client/assets/AgentLaneDetailSheet-CWs9wKWk.js +0 -5
  284. package/dist/client/assets/AgentLanesEmbedScreen-BUCW4nUj.js +0 -1
  285. package/dist/client/assets/AgentsScreen-BMXvuiA2.js +0 -1
  286. package/dist/client/assets/AgentsSubnav-BTNjPYoA.js +0 -1
  287. package/dist/client/assets/BrokerScreen-CObCQvoy.js +0 -5
  288. package/dist/client/assets/CodeScreen-BXqi72NK.js +0 -1
  289. package/dist/client/assets/ConversationComposer-BBNPa5S9.js +0 -1
  290. package/dist/client/assets/ConversationFeedRows-BuejHMCY.js +0 -1
  291. package/dist/client/assets/ConversationHeader-DXMT-YXv.js +0 -1
  292. package/dist/client/assets/ConversationPanels-DHCtilQF.js +0 -2
  293. package/dist/client/assets/ConversationScreen-DSxIt9pq.css +0 -1
  294. package/dist/client/assets/ConversationScreen-Dz2d_Z_F.js +0 -1
  295. package/dist/client/assets/FlightObserveScreen-C-9S0nA5.js +0 -1
  296. package/dist/client/assets/FollowScreen--Q04xSSE.js +0 -1
  297. package/dist/client/assets/HarnessMark-Dm_qm1Ku.js +0 -1
  298. package/dist/client/assets/HarnessesScreen-Y54viPX8.js +0 -1
  299. package/dist/client/assets/KnowledgeSearchScreen-DsdDz8wY.js +0 -1
  300. package/dist/client/assets/LaneTraceDetailSheet-CBf_aNZx.js +0 -1
  301. package/dist/client/assets/MeshScreen-TgDtz-1l.js +0 -1
  302. package/dist/client/assets/MessagesScreen-BTQL0UcE.js +0 -1
  303. package/dist/client/assets/MissionControlView-D59SPnAm.js +0 -1
  304. package/dist/client/assets/MissionLogPane-Ye3YlF9s.js +0 -1
  305. package/dist/client/assets/NewChatComposer-B5FnPyzS.js +0 -19
  306. package/dist/client/assets/NewChatComposer-W-t-L4oV.css +0 -1
  307. package/dist/client/assets/OpenScoutAppShell-BIp0WitK.js +0 -87
  308. package/dist/client/assets/OpsAgentsView-CoBfAigH.js +0 -1
  309. package/dist/client/assets/OpsScreen-Bbo0W64T.js +0 -1
  310. package/dist/client/assets/OpsSubnav-CoN8utF8.js +0 -1
  311. package/dist/client/assets/ProjectAgentProfile-FiiIcB5R.js +0 -1
  312. package/dist/client/assets/ProjectsInbox-BWiXjGi7.js +0 -2
  313. package/dist/client/assets/ProjectsScreen-Cxk4CuYn.js +0 -1
  314. package/dist/client/assets/ProjectsThreadAside-BF66ugT5.js +0 -1
  315. package/dist/client/assets/Provider-tFc3jqZ4.js +0 -1
  316. package/dist/client/assets/RawSessionsTable-BsGVgZB3.js +0 -1
  317. package/dist/client/assets/RealtimeVoiceScreen-B0Bem5Rc.js +0 -1
  318. package/dist/client/assets/RepoDiffViewerLazy-C8UPk4oo.js +0 -2
  319. package/dist/client/assets/SessionRefScreen-D7TfPYPN.js +0 -1
  320. package/dist/client/assets/SessionsScreen-BlknOWAd.js +0 -1
  321. package/dist/client/assets/SettingsScreen-BIlYxv_a.js +0 -1
  322. package/dist/client/assets/Terminal-DwZyo8kA.js +0 -1
  323. package/dist/client/assets/TerminalEmbedScreen-Czp3tQyd.js +0 -1
  324. package/dist/client/assets/agent-chat-Bfjd9y6c.js +0 -1
  325. package/dist/client/assets/agent-identity-xQHedtLl.js +0 -1
  326. package/dist/client/assets/agent-lane-detail-Cw4QVAgH.js +0 -1
  327. package/dist/client/assets/chunk-YOZR3KYS-BW85tiCr.js +0 -47
  328. package/dist/client/assets/content-2u_eV3fX.js +0 -1
  329. package/dist/client/assets/content-5irOghrY.js +0 -1
  330. package/dist/client/assets/content-8Z_0CwtD.js +0 -1
  331. package/dist/client/assets/content-B38YRDBu.js +0 -1
  332. package/dist/client/assets/content-BE3uK0LB.js +0 -1
  333. package/dist/client/assets/content-BtIxSqVY.js +0 -1
  334. package/dist/client/assets/content-CFsPAihU.js +0 -1
  335. package/dist/client/assets/content-CHU0wwA3.css +0 -1
  336. package/dist/client/assets/content-CKj5g5tu.js +0 -1
  337. package/dist/client/assets/content-CLDWXf9Z.js +0 -1
  338. package/dist/client/assets/content-CRr73E0r.js +0 -1
  339. package/dist/client/assets/content-CVR75_Uj.js +0 -1
  340. package/dist/client/assets/content-Czdp7_JQ.js +0 -1
  341. package/dist/client/assets/content-D0_EJ6nP.js +0 -1
  342. package/dist/client/assets/content-DNmxpNhD.js +0 -1
  343. package/dist/client/assets/content-XpbI9uxd.js +0 -1
  344. package/dist/client/assets/content-cyxWdgKQ.js +0 -1
  345. package/dist/client/assets/conversation-model-C4yb6_FA.js +0 -1
  346. package/dist/client/assets/conversation-motion-features-CifSdJtm.js +0 -1
  347. package/dist/client/assets/discover-DoiAJo4Z.js +0 -2
  348. package/dist/client/assets/embed-entry-D1Or9S4d.js +0 -2
  349. package/dist/client/assets/home-live-action-B22u89j7.js +0 -1
  350. package/dist/client/assets/home-moving-signal-BdkERL6B.js +0 -1
  351. package/dist/client/assets/home-now-card-lLkv6nQs.js +0 -1
  352. package/dist/client/assets/hooks-BPLDD9yu.js +0 -2
  353. package/dist/client/assets/index-DGoLx89y.js +0 -1
  354. package/dist/client/assets/index-DITWsjFb.css +0 -1
  355. package/dist/client/assets/index-m6dFtY5f.js +0 -1
  356. package/dist/client/assets/index-pY8-Mz7y.js +0 -1
  357. package/dist/client/assets/keyboard-nav-BhZZ5HEq.js +0 -1
  358. package/dist/client/assets/left-B6eawimv.js +0 -1
  359. package/dist/client/assets/left-BL2uBHe0.js +0 -2
  360. package/dist/client/assets/left-BNJguPDG.js +0 -1
  361. package/dist/client/assets/left-BvCtvN0f.js +0 -1
  362. package/dist/client/assets/left-CfBb6bxM.js +0 -1
  363. package/dist/client/assets/left-DTrlBF0h.js +0 -2
  364. package/dist/client/assets/left-agents-DsOHgDCY.js +0 -1
  365. package/dist/client/assets/left-d4hlBBxY.js +0 -1
  366. package/dist/client/assets/left-default-BRCwoCJr.js +0 -1
  367. package/dist/client/assets/left-lanes-DNtoRzoV.js +0 -1
  368. package/dist/client/assets/left-mission-DsTu2X5Y.js +0 -1
  369. package/dist/client/assets/left-plan-CtySjsXC.js +0 -2
  370. package/dist/client/assets/library-CLpgWNJO.js +0 -1
  371. package/dist/client/assets/mission-control-D3ikEPND.css +0 -1
  372. package/dist/client/assets/openAgent-Bjt57GdM.js +0 -1
  373. package/dist/client/assets/profile-BqY5tesX.js +0 -1
  374. package/dist/client/assets/resolve-panes-1xeZMuaw.js +0 -1
  375. package/dist/client/assets/resolve-sidebar-context-PLr32WHN.js +0 -1
  376. package/dist/client/assets/right-1x7HzabC.js +0 -1
  377. package/dist/client/assets/right-CFzPUzlF.js +0 -1
  378. package/dist/client/assets/right-CRKyeJDk.js +0 -1
  379. package/dist/client/assets/right-CagzkLWg.js +0 -1
  380. package/dist/client/assets/right-CsV149pN.js +0 -1
  381. package/dist/client/assets/right-DITNyG2s.js +0 -1
  382. package/dist/client/assets/right-E3nNcLE3.js +0 -1
  383. package/dist/client/assets/right-eUQvSjd7.js +0 -1
  384. package/dist/client/assets/right-ozp4nM44.js +0 -1
  385. package/dist/client/assets/router-Dja9_ygK.js +0 -1
  386. package/dist/client/assets/session-table-sAVe44a4.js +0 -1
  387. package/dist/client/assets/system-surfaces-redesign-CD26LFc0.css +0 -1
  388. package/dist/client/assets/terminal-sessions-D5CIR2OL.js +0 -1
  389. package/dist/client/assets/useContentSecondaryNav-ZfBNi3d4.js +0 -1
@@ -1 +0,0 @@
1
- import{j as i,r as d}from"./index-sUomXsrf.js";import{E as it}from"./EmptyState-CoL-QuUO.js";import{S as B}from"./StatusPill-CbABggnQ.js";import{a as M}from"./api-h5zurxmi.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-CJqoMA0J.js";import{S as At}from"./SettingsDrawer-C587L1i1.js";/* empty css */import"./agent-chat-Bfjd9y6c.js";import"./Provider-tFc3jqZ4.js";import"./router-Dja9_ygK.js";import"./terminal-sessions-D5CIR2OL.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-BlBQhpax.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./createLucideIcon-DlxlBfLC.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./x-0XjXwGqq.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-BhZZ5HEq.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./NewChatOrigin--pHWUb4V.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";import"./openContent-C6XO6kr5.js";import"./AgentsSubnav-BTNjPYoA.js";import"./SecondaryNav-Bks0CO2h.js";import"./secondaryNavConfig-Drb7wPG4.js";import"./message-square-BD-4UUdc.js";import"./terminal-DXQISjZn.js";import"./scroll-text-BIYf6g6N.js";import"./refresh-cw-D8PFyhUa.js";import"./bot-B_Uzf4_O.js";import"./wrench-pEVd8JnN.js";import"./server-CHZCp3cF.js";import"./VoicePermissionsPanel-MfICy9kk.js";import"./check-BbgHJX8u.js";import"./copy-CwCAivnc.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 ms({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{ms as SettingsScreen};
@@ -1 +0,0 @@
1
- import{r as l,j as e,z as qe,A as He}from"./index-sUomXsrf.js";/* empty css */import{u as Ts}from"./ContextMenu-BlBQhpax.js";import{a as X}from"./api-h5zurxmi.js";import{c as ks}from"./clipboard-e3fSpeo7.js";import{d as Is}from"./colors-BtO5_zlx.js";import{r as Ce,S as Ve,a as Ye,w as Te,s as ht,b as ft,d as kt,c as bt,e as Rs,f as Ne,g as xt}from"./terminal-relay-B5Sma7fK.js";import{p as yt,k as jt,f as Es,b as Ws,s as U,c as Ue,m as Ke,r as As,d as Ms,o as gt,q as St,t as Ls}from"./terminal-sessions-D5CIR2OL.js";import{D as Nt,a as wt,L as Ds,P as vt,s as Ct,T as Tt,b as It,c as zs}from"./session-table-sAVe44a4.js";import{u as Je,a as Oe,T as Rt}from"./chunk-YOZR3KYS-BW85tiCr.js";import{q as Et}from"./terminal-takeover-X97KCSJk.js";import{t as Wt}from"./time-Dhsh_2EG.js";import{u as Os}from"./Provider-tFc3jqZ4.js";import{B as me}from"./BackToPicker-CkUmHuuo.js";import{T as At}from"./TmuxPeek-Dz1gJ2pU.js";import{R as Ge}from"./refresh-cw-D8PFyhUa.js";import{c as Xe}from"./createLucideIcon-DlxlBfLC.js";import{P as te}from"./plus-C9lTjsgd.js";import{T as K}from"./terminal-DXQISjZn.js";import{S as Mt}from"./runtime-picker-DOZpZOlt.js";import{X as ue}from"./x-0XjXwGqq.js";import{E as Lt}from"./eye-So8tNNK6.js";import{E as Ps}from"./external-link-CnjcXf32.js";import"./router-Dja9_ygK.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";import"./arrow-down-DsD-dYj-.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-BhZZ5HEq.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./NewChatOrigin--pHWUb4V.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./loader-circle-lWOOKezu.js";/* empty css */import"./voice-levels-Dcr3jglk.js";const _s=6,$s=2;function Ie(s){if(s.layout?.mode)return{mode:s.layout.mode,...s.layout.columns===void 0?{}:{columns:Dt(s.layout.columns)}};const t=s.cellCount??0,r=We(s.columns??$s);return t<=1?{mode:"solo"}:r>=t?{mode:"lanes",columns:r}:{mode:"grid",columns:r}}function Re(s,t){const r=Math.max(1,Math.floor(t.tileCount)||1);if(s.mode==="solo")return 1;if(s.columns===void 0||s.columns==="dynamic"){const i=s.mode==="lanes"?r:Math.ceil(Math.sqrt(r));return Math.max(1,Math.min(_s,i))}return We(s.columns)}function Dt(s){return s==="dynamic"?"dynamic":We(s)}function zt(s){if(s.mode==="solo")return"Solo";const t=s.mode==="lanes"?"Lanes":"Grid";return s.columns===void 0||s.columns==="dynamic"?`${t} · dynamic`:`${t} · ${s.columns} column${s.columns===1?"":"s"}`}function We(s){return typeof s!="number"||!Number.isFinite(s)?$s:Math.max(1,Math.min(_s,Math.floor(s)))}const Ot=[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],Pt=Xe("ellipsis",Ot);const _t=[["path",{d:"M12 3v18",key:"108xh3"}],["path",{d:"M3 12h18",key:"1i2n21"}],["rect",{x:"3",y:"3",width:"18",height:"18",rx:"2",key:"h1oib"}]],de=Xe("grid-2x2",_t);const $t=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],Ft=Xe("zap",$t),Qe=6;function Ut(s="main",t="Main"){return{version:1,activeWorkspaceId:s,workspaces:[{id:s,name:t,tiles:[]}]}}function Ze(){return{version:1,activeWorkspaceId:"",workspaces:[]}}function bs(s,t,r={}){const i=()=>r.allowEmpty?Ze():Ut();if(!s||typeof s!="object")return i();const c=s;if(!Array.isArray(c.workspaces))return i();const m=[],d=new Set;for(const o of c.workspaces){if(!o||typeof o!="object")continue;const x=typeof o.id=="string"?o.id.trim():"",b=typeof o.name=="string"?o.name.trim():"";if(!x||!b||d.has(x)||!Array.isArray(o.tiles))continue;d.add(x);const S=typeof o.purpose=="string"?o.purpose.trim():"",C=Bt(o.columns),L=Kt(o.layout),z=typeof o.updatedAt=="number"&&Number.isFinite(o.updatedAt)&&o.updatedAt>=0?o.updatedAt:null;m.push({id:x,name:b,tiles:o.tiles.filter(t),...S?{purpose:S}:{},...C?{columns:C}:{},...L?{layout:L}:{},...z===null?{}:{updatedAt:z}})}return m.length===0?i():{version:1,activeWorkspaceId:typeof c.activeWorkspaceId=="string"&&d.has(c.activeWorkspaceId)?c.activeWorkspaceId:m[0].id,workspaces:m}}function Kt(s){if(!s||typeof s!="object")return null;const t=s;if(t.mode!=="solo"&&t.mode!=="lanes"&&t.mode!=="grid")return null;if(t.columns===void 0)return{mode:t.mode};if(t.columns==="dynamic")return{mode:t.mode,columns:"dynamic"};const r=We(t.columns);return{mode:t.mode,columns:r}}function Bt(s){if(typeof s!="number"||!Number.isFinite(s))return null;const t=Math.floor(s);return t<1?null:Math.min(t,Qe)}function xs(s,t){const r=t.id.trim();if(!r)return s;const i={...t,id:r},m=s.workspaces.some(d=>d.id===r)?s.workspaces.map(d=>d.id===r?i:d):[i,...s.workspaces];return{...s,activeWorkspaceId:r,workspaces:m}}function ys(s,t,r){const i=s.workspaces.findIndex(h=>h.id===t);if(i<0)return s;const c=s.workspaces[i],m={...c,...r};return Object.keys(r).every(h=>c[h]===m[h])?s:{...s,workspaces:s.workspaces.map((h,o)=>o===i?m:h)}}function qt(s,t){return t===s.activeWorkspaceId||!s.workspaces.some(r=>r.id===t)?s:{...s,activeWorkspaceId:t}}function Ht(s,t,r={}){if(s.workspaces.length<=1)return r.allowEmpty&&s.workspaces[0]?.id===t?Ze():s;const i=s.workspaces.findIndex(d=>d.id===t);if(i<0)return s;const c=s.workspaces.filter(d=>d.id!==t),m=s.activeWorkspaceId===t?c[Math.min(i,c.length-1)].id:s.activeWorkspaceId;return{...s,activeWorkspaceId:m,workspaces:c}}function Vt(s,t,r){return r>1?{axis:"horizontal",edge:s.x<t.left+t.width/2?"before":"after"}:{axis:"vertical",edge:s.y<t.top+t.height/2?"before":"after"}}function Yt(s,t,r,i){if(t===r)return[...s];const c=s.findIndex(b=>b.id===t),m=s.findIndex(b=>b.id===r);if(c<0||m<0)return[...s];const d=[...s],[h]=d.splice(c,1);if(!h)return[...s];const o=d.findIndex(b=>b.id===r),x=i==="after"?o+1:o;return d.splice(Math.max(0,x),0,h),d}const Jt="openscout.terminal.workspaces.v1",Gt=2,Xt="openscout.terminal.workspace-view.v1",Pe=2;function we(s){const t=typeof globalThis.crypto?.randomUUID=="function"?globalThis.crypto.randomUUID().slice(0,8):Math.random().toString(36).slice(2,10);return`${s}-${Date.now().toString(36)}-${t}`}const Qt=24;function Fs(s,t,r){const i=t.replace(/[^A-Za-z0-9_-]+/gu,"-").replace(/^[^A-Za-z0-9_]+/u,"").slice(0,Qt).replace(/-+$/u,""),c=Zt(JSON.stringify([r,t,s]));return`scout-${s}-${i||"cell"}-${c}`}function Zt(s){let t=2166136261;for(let r=0;r<s.length;r+=1)t^=s.charCodeAt(r),t=Math.imul(t,16777619)>>>0;return t.toString(16).padStart(8,"0")}function le(s,t="shell"){return{id:we("cell"),kind:"fresh",backend:s,agent:t}}function js(s){if(!s||typeof s!="object")return!1;const t=s;return typeof t.id!="string"||!t.id.trim()?!1:t.kind==="fresh"?typeof t.backend=="string"&&typeof t.agent=="string":t.kind==="registered"?typeof t.terminalSessionId=="string"&&typeof t.terminalSurfaceKey=="string":!1}function gs(s){return{id:s.id,name:s.name,...s.purpose?{purpose:s.purpose}:{},columns:s.columns,...s.layout?{layout:s.layout}:{},updatedAt:s.updatedAt,tiles:s.cells.map(t=>t.surfaceId&&t.terminalSessionId?{id:t.id,kind:"registered",terminalSessionId:t.terminalSessionId,terminalSurfaceKey:t.surfaceId}:{id:t.id,kind:"fresh",backend:sn(t.intent.hostId)?t.intent.hostId:"pty",agent:"shell"})}}function _e(s,t={}){return{id:s.id,name:s.name,purpose:s.purpose??"",columns:Re(Ie({layout:s.layout,columns:s.columns,cellCount:s.tiles.length}),{tileCount:s.tiles.length}),layout:Ie({layout:s.layout,columns:s.columns,cellCount:s.tiles.length}),cells:s.tiles.map(r=>r.kind==="registered"?{id:r.id,surfaceId:r.terminalSurfaceKey,terminalSessionId:r.terminalSessionId,intent:en(r,t.sessions??[])}:{id:r.id,intent:{hostId:r.backend,sessionName:r.backend==="pty"?null:Fs(r.backend,r.id,s.id)}})}}function en(s,t){const r=yt(s.terminalSurfaceKey),i=t.find(c=>c.id===s.terminalSessionId||c.surfaces.some(m=>jt(m,s.terminalSurfaceKey)));return{...r?{hostId:r.backend,sessionName:r.hostSession}:{},...i?.cwd?{cwd:i.cwd}:{},...i?.harness?{harness:i.harness}:{},...i?.resumeCommand?{resumeCommand:i.resumeCommand}:{}}}function sn(s){return s==="pty"||s==="tmux"||s==="zellij"||s==="herdr"}function tn(s){if(!Array.isArray(s))return bs(s,js,{allowEmpty:!0});const t=s.flatMap(r=>{if(!r||typeof r!="object")return[];const i=r;if(typeof i.id!="string"||!i.id.trim())return[];const c=Array.isArray(i.cells)?i.cells:[];return[{id:i.id,name:typeof i.name=="string"&&i.name.trim()?i.name:i.id,purpose:i.purpose,columns:i.columns,updatedAt:i.updatedAt,tiles:c.map((m,d)=>({...m,id:`${i.id}-${d}`}))}]});return bs({activeWorkspaceId:t[0]?.id??"",workspaces:t},js,{allowEmpty:!0})}function nn(s,t,r){const i=s.find(c=>c.id===t);return i?i.capabilities.control.includes(r)||i.capabilities.harnessControl.includes(r):!1}function rn(s,t){return s.find(r=>r.id===t)??null}function an(s){return[{value:"pty",label:"Shell",detail:"Disposable local shell",relayAttach:!0},...s.filter(t=>t.availability.installed&&t.capabilities.create).map(t=>({value:t.id,label:t.label,detail:t.description,relayAttach:t.capabilities.relayAttach})).sort((t,r)=>Number(r.relayAttach)-Number(t.relayAttach)||t.value.localeCompare(r.value))]}async function on(){return X("/api/terminal-hosts")}async function ln(s,t){return X(`/api/terminal-hosts/${encodeURIComponent(s)}/sessions`,{method:"POST",body:JSON.stringify(t)})}let ve=null,$e=null;function cn(){return ve?Promise.resolve(ve):($e??=on().then(s=>(ve=s,s)).finally(()=>{$e=null}),$e)}function es(){const[s,t]=l.useState(ve);return l.useEffect(()=>{if(s)return;let r=!1;return cn().then(i=>{r||t(i)}).catch(()=>{}),()=>{r=!0}},[s]),{hosts:s?.hosts??[],preferredHostId:s?.preferredHostId??null,loaded:s!==null}}async function dn(){return X("/api/terminal-workspaces")}async function Ss(s){return(await X(`/api/terminal-workspaces/${encodeURIComponent(s.id)}`,{method:"PUT",body:JSON.stringify(s)})).workspace}async function mn(s,t){return X(`/api/terminal-workspaces/${encodeURIComponent(s)}/cells/${encodeURIComponent(t)}/revive`,{method:"POST",body:"{}"})}async function un(s){return(await X(`/api/terminal-workspaces/${encodeURIComponent(s)}`,{method:"DELETE"})).deleted}function pn(s){const t=new Map;for(const r of s?.cells??[])t.set(r.cellId,r);return t}const Ns="scout:terminal-send-line";function hn(s){const t=s.detail;if(!t||typeof t!="object"||!("line"in t))return null;const r=t.line;return typeof r=="string"&&r.trim().length>0?r:null}const ce=typeof window>"u"?l.useEffect:l.useLayoutEffect,fn="openscout.terminal.picker-view.v1",ws={mode:"grid",columns:"dynamic"},vs=[{mode:"solo",label:"Solo",detail:"One terminal, full width",minimumCells:1},{mode:"lanes",label:"Lanes",detail:"Side by side, one row",minimumCells:2},{mode:"grid",label:"Grid",detail:"Rows and columns",minimumCells:4}],kn=[{value:"shell",label:"Shell"},{value:"codex",label:"Codex"},{value:"claude",label:"Claude"},{value:"pi",label:"Pi"}],Fe="'JetBrainsMono Nerd Font', 'JetBrainsMonoNL Nerd Font', 'MesloLGS Nerd Font Mono', 'Hack Nerd Font Mono', 'JetBrains Mono', monospace",Cs=s=>{},bn=()=>{};function xn(){if(typeof window>"u")return{fontFamily:Fe,fontSize:13};const s=new URLSearchParams(window.location.search),t=s.get("terminalFontFamily")?.trim(),r=Number(s.get("terminalFontSize"));return{fontFamily:t?`'${t.replaceAll("'","\\'")}', ${Fe}`:Fe,fontSize:Number.isFinite(r)&&r>=9&&r<=32?r:13}}function ss(s){const t=xn();return e.jsx(Rt,{...s,renderer:s.renderer??"dom",fontFamily:t.fontFamily,fontSize:t.fontSize})}function yn(s,t){const[r,i]=l.useState({state:"loading",sessions:[]}),c=l.useCallback(()=>{i(d=>({state:"loading",sessions:d.sessions})),Es({includeDiscovered:!0}).then(d=>{i({state:"ready",sessions:d})}).catch(d=>{i(h=>({state:"failed",sessions:h.sessions,error:d instanceof Error?d.message:String(d)}))})},[]);return l.useEffect(()=>{c()},[c]),{target:l.useMemo(()=>As(r.sessions,s,t),[r.sessions,s,t]),loadState:r.state,loadSessions:c,hasSessionHint:!!s}}function jn(s,t,r){const i=ht(t,r),[c,m]=l.useState(i?{state:"preparing"}:{state:"ready"}),[d,h]=l.useState(0);return l.useEffect(()=>{if(!i||!s){m({state:"ready"});return}let o=!1;return m({state:"preparing"}),X(`/api/agents/${encodeURIComponent(s)}/session-catalog`).then(x=>{if(x.resumeCommand)return Et({command:x.resumeCommand,cwd:x.resumeCwd,agentId:s})}).then(()=>{o||m({state:"ready"})}).catch(x=>{o||m({state:"failed",error:x instanceof Error?x.message:String(x)})}),()=>{o=!0}},[s,i,d]),{ready:c.state==="ready",label:c.state==="failed"?"TAKEOVER FAILED":"PREPARING TAKEOVER",status:c.state==="failed"?c.error:"Resolving live session...",onRetry:c.state==="failed"?()=>h(o=>o+1):void 0}}function gn(s){const{agentId:t,agent:r,mode:i,navigate:c,registeredTarget:m,showContextMenu:d}=s,{hosts:h}=es(),o=r?Is(r.name):"var(--accent)",x=l.useRef(null),b=m?Ls(m.surface):Ce(r),S=i==="observe",C=m?.session.cwd??r?.cwd??r?.projectRoot??void 0,L=qe(),z=He(),N=ft({agentId:t,agent:r,registeredTarget:m,terminalSurface:b,relayUrl:L,harness:m?.session.harness??r?.harness,cwd:C,mode:i}),j=Je({url:N.scopedRelayUrl,healthUrl:z,autoConnect:!0,...S?{}:{sessionKey:N.relayStorageSessionKey},...N.surfaceOptions??{},...N.orphanTTL?{orphanTTL:N.orphanTTL}:{},...N.cwd?{cwd:N.cwd}:{},...N.relayAgent?{agent:N.relayAgent}:{},controlMode:N.controlMode});ce(()=>{j.resize(Ve,Ye)},[j.resize]);const I=l.useMemo(()=>S?{...j,sendInput:Cs,sendLine:Cs,restart:bn}:j,[S,j]),A=kt({agentId:t,registeredTarget:m}),$=Te(A,i),T=l.useCallback(()=>{const k=x.current;k?.querySelector(".xterm-helper-textarea")?.focus(),k?.querySelector(".xterm")?.focus()},[]);l.useEffect(()=>{const k=P=>{const _=P.detail?.line;return typeof _=="string"&&_.length>0?_:null},D=P=>{const _=k(P);!_||S||(I.sendInput(_),T())},M=P=>{const _=k(P);!_||S||(I.sendLine(_),T())};return window.addEventListener("scout:terminal-send-input",D),window.addEventListener("scout:terminal-send-line",M),()=>{window.removeEventListener("scout:terminal-send-input",D),window.removeEventListener("scout:terminal-send-line",M)}},[T,S,I]);const R=l.useCallback(k=>b?bt(b,k):null,[b]),E=l.useCallback(()=>{ks(Rs($))},[$]),q=l.useCallback(()=>{S||!navigator.clipboard?.readText||navigator.clipboard.readText().then(k=>{k&&I.sendInput(k)}).catch(()=>{})},[S,I]),B=l.useCallback(()=>{Ne(N.relayStorageSessionKey);const k=R("detach");if(k){k.finally(()=>j.disconnect());return}j.disconnect()},[N.relayStorageSessionKey,j,R]),f=l.useCallback(()=>{Ne(N.relayStorageSessionKey);const k=R("force-quit-bridge");if(k){k.finally(()=>{j.connect(),window.setTimeout(T,250)});return}j.connect(),window.setTimeout(T,250)},[N.relayStorageSessionKey,T,j,R]),g=l.useCallback(()=>{if(S)return;const k=R("interrupt");k?k.catch(()=>I.sendInput("")):I.sendInput(""),T()},[T,S,R,I]),W=l.useCallback(()=>{if(S)return;const k=R("quit");k?k.catch(()=>I.sendInput("")):I.sendInput(""),T()},[T,S,R,I]),F=l.useCallback(()=>{if(S)return;const k=R("stop-job");if(k){k.finally(T);return}T()},[T,S,R]),ne=l.useCallback(()=>{if(Ne(N.relayStorageSessionKey),b&&!window.confirm(`Force quit Claude in ${Ke(b.sessionName)}?`))return;const k=R("force-quit");if(k){k.finally(()=>j.disconnect());return}const D=j.sessionId;if(!D){j.disconnect();return}xt(D).catch(()=>{}).finally(()=>j.disconnect())},[N.relayStorageSessionKey,j,R,b]),re=l.useCallback(()=>{if(!b||!window.confirm(`Restart Claude in ${Ke(b.sessionName)} and resume its latest session?`))return;Ne(N.relayStorageSessionKey);const k=R("restart-resume");k&&k.finally(()=>{j.disconnect(),window.setTimeout(()=>{j.connect(),window.setTimeout(T,250)},600)})},[N.relayStorageSessionKey,T,j,R,b]),ae=l.useCallback(k=>{c(Te(A,k))},[c,A]),Q=l.useCallback(()=>{c(A)},[c,A]),Z=l.useMemo(()=>{const k=b?.backend??null,D=_=>nn(h,k,_),M=[];(!k||D("detach"))&&M.push({kind:"action",label:"Leave this session running",onSelect:B}),M.push({kind:"action",label:"Reconnect",onSelect:f});const P=[];return D("restart-resume")&&P.push({kind:"action",label:"Restart Claude and resume",onSelect:re}),D("force-quit")&&P.push({kind:"action",label:"Force quit Claude",onSelect:ne}),P.length>0&&M.push({kind:"separator"},...P),M},[B,ne,f,re,h,b?.backend]),pe=l.useCallback(k=>{d(k,Z)},[Z,d]),ee=l.useCallback(k=>{const D=typeof window>"u"?"":window.getSelection()?.toString()??"",M=[];D.trim()&&M.push({kind:"action",label:"Copy Selection",shortcut:"⌘C",onSelect:()=>{ks(D)}}),S||M.push({kind:"action",label:"Paste",shortcut:"⌘V",onSelect:q},{kind:"action",label:"Send Ctrl-C",shortcut:"⌃C",onSelect:g},{kind:"action",label:"Quit With Ctrl-D",shortcut:"⌃D",onSelect:W},{kind:"action",label:"Stop Running Job",onSelect:F}),M.length>0&&M.push({kind:"separator"}),M.push({kind:"action",label:"Focus Terminal",onSelect:T},...Z,{kind:"separator"},{kind:"action",label:S?"Open Takeover":"Open Observe",onSelect:()=>ae(S?"takeover":"observe")},{kind:"action",label:"Open Summary",onSelect:Q},{kind:"action",label:"Copy Terminal Link",onSelect:E}),d(k,M)},[E,T,g,ae,Q,q,W,S,Z,d,F]);return{color:o,terminalBodyRef:x,terminalSurface:b,readOnly:S,relay:j,terminalRelay:I,healthUrl:z,scopedRelayUrl:N.scopedRelayUrl,hasViewActions:!!(m||b),canSignalTerminal:!S&&!!(b||j.status==="connected"),canStopTerminalJob:!S&&!!b,handleSessionMenu:pe,handleTerminalContextMenu:ee,openMode:ae,openSummary:Q,interruptTerminal:g,quitTerminal:W,stopTerminalJob:F,terminalRouteBase:A}}function Sn({agent:s,agentId:t,color:r,navigate:i,label:c,status:m,onRetry:d}){return e.jsxs("div",{className:"s-term",children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsx(me,{slot:"terminal",fallback:{view:"terminal"},navigate:i,className:"s-term-back"}),s&&e.jsxs("div",{className:"s-term-agent",children:[e.jsx("div",{className:"s-ops-avatar",style:{"--size":"18px",background:r},children:s.name[0]?.toUpperCase()}),e.jsx("span",{className:"s-term-agent-name",children:s.name}),s.handle&&e.jsxs("span",{className:"s-term-agent-handle",children:["@",s.handle]})]}),e.jsx("span",{className:"s-term-label",children:c}),e.jsx("div",{className:"s-term-status",children:d?"OFFLINE":"CONNECTING"})]}),e.jsx("div",{className:"s-term-body s-term-body--placeholder",children:e.jsxs("div",{className:"s-term-placeholder",children:[e.jsx("span",{children:m}),d&&e.jsx("button",{type:"button",onClick:d,children:"Retry"})]})})]})}function Nn({target:s,navigate:t}){const r=l.useMemo(()=>Ws([s.session]).find(d=>U(d.surface)===U(s.surface)),[s]),i={view:"terminal",terminalSessionId:s.session.id,terminalSurfaceKey:U(s.surface)},c=gt(s.session,s.surface),m=St(s);return e.jsx("div",{className:"s-term s-term--summary",children:e.jsxs("div",{className:"s-term-summary",children:[e.jsxs("div",{className:"s-term-summary-main",children:[e.jsx(me,{slot:"terminal",fallback:{view:"terminal"},navigate:t,className:"s-term-back"}),e.jsxs("div",{className:"s-term-summary-mark",children:[e.jsx(K,{size:18,strokeWidth:1.7}),e.jsx("span",{children:"Terminal"})]}),e.jsxs("div",{className:"s-term-summary-heading",children:[e.jsx("h1",{children:r?.title??s.surface.sessionName}),e.jsxs("p",{children:[s.surface.backend," · ",c]})]}),e.jsxs("div",{className:"s-term-summary-actions",children:[e.jsxs("button",{type:"button",className:"s-term-summary-action s-term-summary-action--primary",onClick:()=>t(Te(i,"takeover")),children:[e.jsx(Ds,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Enter"})]}),e.jsxs("button",{type:"button",className:"s-term-summary-action",onClick:()=>t(Te(i,"observe")),children:[e.jsx(Lt,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Observe"})]})]})]}),e.jsx("div",{className:"s-term-summary-preview",children:e.jsx(At,{surface:Ls(s.surface),lines:26,columns:112,pollMs:3e4,idlePollMs:3e4,className:"s-term-preview-peek"})}),e.jsx("dl",{className:"s-term-summary-details",children:m.map(([d,h])=>e.jsxs("div",{className:"s-term-summary-detail",children:[e.jsx("dt",{children:d}),e.jsx("dd",{title:h,children:h})]},d))})]})})}function ts({agentId:s,agent:t,mode:r,navigate:i,registeredTarget:c,embedded:m=!1,tileActions:d}){const h=Ts(),o=gn({agentId:s,agent:t,mode:r,navigate:i,registeredTarget:c,showContextMenu:h});return e.jsxs("div",{className:`s-term${m?" s-term--embedded":""}`,children:[e.jsxs("div",{className:"s-term-bar s-term-bar--takeover",children:[e.jsxs("div",{className:"s-term-bar-left",children:[!m&&e.jsx(me,{slot:"terminal",fallback:{view:"terminal"},navigate:i,className:"s-term-back"}),t&&e.jsxs("div",{className:"s-term-agent",children:[e.jsx("div",{className:"s-ops-avatar",style:{"--size":"18px",background:o.color},children:t.name[0]?.toUpperCase()}),e.jsx("span",{className:"s-term-agent-name",children:t.name}),t.handle&&e.jsxs("span",{className:"s-term-agent-handle",children:["@",t.handle]})]}),c&&e.jsxs("div",{className:"s-term-registered-chip",children:[e.jsx(K,{size:14,strokeWidth:1.8}),e.jsx("span",{children:c.session.harness}),e.jsx("span",{children:c.session.sourceSessionId})]})]}),e.jsxs("div",{className:"s-term-bar-meta",children:[e.jsx("span",{className:"s-term-label",children:o.terminalSurface?o.readOnly?"TERMINAL OBSERVE":"TERMINAL TAKEOVER":"TAKEOVER"}),o.terminalSurface&&e.jsx("span",{className:"s-term-session",title:o.terminalSurface.sessionName,children:Ke(o.terminalSurface.sessionName)})]}),e.jsxs("div",{className:"s-term-bar-actions",children:[o.hasViewActions&&e.jsxs("div",{className:"s-term-action-cluster s-term-action-cluster--view","aria-label":"Terminal view actions",children:[c&&e.jsx("button",{type:"button",className:"s-term-action",onClick:o.openSummary,title:"Leave the terminal canvas and show the session summary",children:"Summary"}),o.terminalSurface&&e.jsx("button",{type:"button",className:"s-term-action",onClick:()=>o.openMode(o.readOnly?"takeover":"observe"),title:o.readOnly?"Switch to interactive takeover":"Switch to read-only terminal observe",children:o.readOnly?"Takeover":"Observe"})]}),(o.canSignalTerminal||o.canStopTerminalJob)&&e.jsxs("div",{className:"s-term-action-cluster s-term-action-cluster--signals","aria-label":"Terminal signal actions",children:[o.canSignalTerminal&&e.jsxs("button",{type:"button",className:"s-term-action s-term-action--warn",onClick:o.interruptTerminal,title:"Send Ctrl-C to the terminal",children:[e.jsx(Ft,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Ctrl-C"})]}),o.canSignalTerminal&&e.jsxs("button",{type:"button",className:"s-term-action s-term-action--warn",onClick:o.quitTerminal,title:"Send Ctrl-D / EOF to the terminal",children:[e.jsx(vt,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Quit"})]}),o.canStopTerminalJob&&e.jsxs("button",{type:"button",className:"s-term-action s-term-action--warn",onClick:o.stopTerminalJob,title:"Stop Claude's current shell/tool job without quitting Claude",children:[e.jsx(Mt,{size:12,strokeWidth:2}),e.jsx("span",{children:"Stop Job"})]})]}),e.jsxs("button",{type:"button",className:"s-term-action s-term-session-menu",onClick:o.handleSessionMenu,title:"Open session, recovery, and external handoff actions",children:[e.jsx(Pt,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Session"})]}),e.jsx("div",{className:"s-term-status",children:o.relay.status==="connected"?"LIVE":o.relay.status==="connecting"?"CONNECTING":"OFFLINE"}),d]})]}),e.jsx("div",{ref:o.terminalBodyRef,className:"s-term-body",onContextMenuCapture:o.handleTerminalContextMenu,children:e.jsx(ss,{relay:o.terminalRelay,readOnly:o.readOnly,quiet:!0,configItems:[...o.terminalSurface?[{label:"backend",value:o.terminalSurface.backend},{label:"session",value:o.terminalSurface.sessionName},...o.terminalSurface.paneId?[{label:"pane",value:o.terminalSurface.paneId}]:[],...o.terminalSurface.socketDir?[{label:"socket",value:o.terminalSurface.socketDir}]:[],{label:"mode",value:o.readOnly?"read-only":"takeover"}]:[],{label:"ws",value:o.scopedRelayUrl},{label:"health",value:o.healthUrl}]})})]})}function wn({terminalSessionId:s,terminalSurfaceKey:t,mode:r,navigate:i}){const{target:c,loadState:m,loadSessions:d,hasSessionHint:h}=yn(s,t);return c&&r?e.jsx(ts,{agent:null,mode:r,navigate:i,registeredTarget:c},`${U(c.surface)}:${r}`):c?e.jsx(Nn,{target:c,navigate:i}):e.jsx("div",{className:"s-term s-term--empty-main",children:e.jsxs("div",{className:"s-term-empty-main-mark",children:[e.jsx(K,{size:18,strokeWidth:1.6}),e.jsx("span",{children:m==="loading"?"Loading terminal":m==="failed"?"Terminal list unavailable":h?"Terminal unavailable":"Select a terminal"}),m==="failed"&&e.jsx("button",{type:"button",className:"s-term-empty-action",onClick:d,children:"Retry"})]})})}function vn(s,t){return s.kind!=="fresh"||!s.sessionName?!1:t.some(r=>r.surfaces.some(i=>i.backend===s.backend&&i.sessionName===s.sessionName&&i.state!=="exited"))}function Ee(s){return`${s.session.id}:${U(s.surface)}`}function Cn(s,t,r){if(s.kind==="fresh")return{id:s.id,kind:"fresh",backend:s.backend,agent:s.agent,...s.backend==="pty"?{}:{sessionName:Fs(s.backend,s.id,r)}};const i=As(t,s.terminalSessionId,s.terminalSurfaceKey);return i?{id:s.id,kind:"registered",target:i}:{id:s.id,kind:"unavailable",terminalSessionId:s.terminalSessionId,terminalSurfaceKey:s.terminalSurfaceKey}}function G(s){return{session:s.session,surface:s.surface}}function Tn(s){const t=s.backend;return t!=="pty"&&!Ms(t)?null:{view:"terminal",terminalBackend:t,terminalAgent:s.agent,terminalTabId:s.id,...s.sessionName?{terminalSessionName:s.sessionName}:{},...s.zellijSocketDir?{zellijSocketDir:s.zellijSocketDir}:{}}}function In(s,t="takeover"){return{view:"terminal",terminalSessionId:s.session.id,terminalSurfaceKey:U(s.surface),mode:t}}function Us(s,t){if(typeof window>"u"){t(s);return}window.open(Rs(s),"_blank","noopener,noreferrer")}function Rn({navigate:s}){const{agents:t}=Os(),r=Ts(),{hosts:i}=es(),c=l.useMemo(()=>an(i),[i]),[m,d]=Oe(Jt,Ze(),{version:Gt,migrate:tn}),[h,o]=Oe(Xt,"library"),x=l.useRef(new Map),[b,S]=l.useState(null),[C,L]=l.useState(""),[z,N]=l.useState(""),[j,I]=l.useState(ws),[A,$]=l.useState(()=>Array.from({length:4},()=>le("pty"))),[T,R]=l.useState(0),[E,q]=l.useState({state:"loading",sessions:[]}),[B,f]=l.useState(0),[g,W]=l.useState(!0),[F,ne]=Oe(fn,"list"),[re,ae]=l.useState(Nt),[Q,Z]=l.useState([]),[pe,ee]=l.useState(null),[k,D]=l.useState(null),[M,P]=l.useState(null),[_,rs]=l.useState(!1),[he,as]=l.useState(null),[Bs,Ae]=l.useState(null),fe=l.useRef(null),ke=l.useRef(null),be=l.useRef("after"),xe=l.useRef(null),ye=l.useRef(null),Me=l.useRef(!1),H=l.useCallback((n={})=>{n.silent||q(a=>({state:"loading",sessions:a.sessions})),Es({includeDiscovered:!0}).then(a=>q({state:"ready",sessions:a})).catch(a=>{n.silent||q(u=>({state:"failed",sessions:u.sessions,error:a instanceof Error?a.message:String(a)}))})},[]);l.useEffect(()=>{H()},[H]),l.useEffect(()=>{const n=()=>{document.visibilityState==="visible"&&H({silent:!0})},a=window.setInterval(n,8e3);return window.addEventListener("focus",n),document.addEventListener("visibilitychange",n),()=>{window.clearInterval(a),window.removeEventListener("focus",n),document.removeEventListener("visibilitychange",n)}},[H]),l.useEffect(()=>{let n=!1;return dn().then(a=>{if(!n){Z(a.resolutions);for(const u of a.workspaces)x.current.set(u.id,JSON.stringify(_e(gs(u),{sessions:E.sessions})));a.workspaces.length!==0&&d(u=>{let p=u;for(const y of a.workspaces)p=xs(p,gs(y));return{...p,activeWorkspaceId:u.activeWorkspaceId||p.activeWorkspaceId}})}}).catch(()=>{}),()=>{n=!0}},[d]);const is=l.useMemo(()=>Ws(E.sessions),[E.sessions]),V=l.useMemo(()=>is.filter(n=>n.surface.state!=="exited"),[is]);l.useMemo(()=>Pn(t),[t]);const os=E.state==="failed"?E.error:null,qs=m.workspaces,w=m.workspaces.find(n=>n.id===m.activeWorkspaceId)??null,se=Ie({layout:w?.layout,columns:w?.columns,cellCount:w?.tiles.length??0}),Y=l.useMemo(()=>(w?.tiles??[]).map(n=>Cn(n,E.sessions,w?.id??"")),[w?.id,w?.tiles,E.sessions]),Le=Re(se,{tileCount:Y.length});l.useEffect(()=>{if(!w||!x.current.has(w.id))return;const n=_e(w,{sessions:E.sessions}),a=JSON.stringify(n);x.current.get(w.id)!==a&&(x.current.set(w.id,a),Ss(n).catch(u=>ee(u instanceof Error?u.message:String(u))))},[w,E.sessions]);const ls=h==="workspace"&&!w?"library":h,O=l.useCallback(n=>{d(a=>{const u=a.workspaces.find(y=>y.id===a.activeWorkspaceId);if(!u)return a;const p=n(u.tiles);return p===u.tiles?a:ys(a,u.id,{tiles:p,updatedAt:Date.now()})})},[d]),je=l.useCallback(n=>{d(a=>a.activeWorkspaceId?ys(a,a.activeWorkspaceId,{layout:n,updatedAt:Date.now()}):a)},[d]),Hs=l.useCallback(n=>{d(a=>qt(a,n.id)),W(!1),o("workspace")},[d,o]),Vs=l.useCallback(()=>{o("library")},[o]),ie=l.useCallback(n=>{S(n?.id??null),L(n?.name??""),N(n?.purpose??""),I(n?Ie({layout:n.layout,columns:n.columns,cellCount:n.tiles.length}):ws),$(n?.tiles??Array.from({length:4},()=>le("pty"))),R(0),o("builder")},[o]),Ys=l.useCallback(n=>{I(a=>n.mode==="solo"?{mode:"solo"}:{mode:n.mode,columns:a.columns??"dynamic"}),$(a=>a.length>=n.minimumCells?a:[...a,...Array.from({length:n.minimumCells-a.length},()=>le("pty"))]),R(a=>Math.max(0,Math.min(a,n.minimumCells-1)))},[]),Js=l.useCallback(n=>{I(a=>a.mode==="solo"?{mode:"lanes",columns:n}:{...a,columns:n})},[]),Gs=l.useCallback(()=>{$(n=>{const a=[...n,le("pty")];return R(a.length-1),a})},[]),Xs=l.useCallback(n=>{$(a=>{if(a.length<=1)return a;const u=a.filter((p,y)=>y!==n);return R(p=>Math.min(p,u.length-1)),u})},[]),Qs=l.useCallback(()=>{const n=C.trim();if(!n)return;const a={id:b??we("workspace"),name:n,purpose:z.trim(),columns:Re(j,{tileCount:A.length}),layout:j,tiles:A,updatedAt:Date.now()};d(p=>xs(p,a));const u=_e(a,{sessions:E.sessions});x.current.set(a.id,JSON.stringify(u)),Ss(u).catch(p=>ee(p instanceof Error?p.message:String(p))),W(!1),o("workspace")},[b,d,o,E.sessions,A,j,C,z]),Zs=l.useCallback(n=>{d(a=>Ht(a,n,{allowEmpty:!0})),un(n).catch(()=>{})},[d]),cs=l.useCallback((n,a="shell")=>{O(u=>[...u,le(n,a)])},[O]),oe=l.useCallback((n,a)=>{const u={kind:"registered",terminalSessionId:n.session.id,terminalSurfaceKey:U(n.surface)};O(p=>{const y=p.some(v=>v.kind==="registered"&&v.terminalSessionId===u.terminalSessionId&&Ue(v.terminalSurfaceKey,u.terminalSurfaceKey));return a?p.some(v=>v.id===a)?p.map(v=>v.id===a?{...u,id:v.id}:v):p:y?p:[...p,{...u,id:we("cell")}]})},[O]),et=l.useCallback(n=>{oe(n)},[oe]),st=l.useMemo(()=>new Set(Y.filter(n=>n.kind==="registered").map(n=>Ee(n.target))),[Y]),ge=l.useCallback(n=>{n?.currentTarget.hasPointerCapture(n.pointerId)&&n.currentTarget.releasePointerCapture(n.pointerId),xe.current=null,ye.current=null,Me.current=!1,D(null),P(null),rs(!1)},[]),tt=l.useCallback((n,a)=>{const u=n.target;n.button!==0||u instanceof Element&&u.closest("button, a")||(xe.current={pointerId:n.pointerId,target:G(a),targetId:Ee(G(a)),startX:n.clientX,startY:n.clientY},n.currentTarget.setPointerCapture(n.pointerId))},[]),nt=l.useCallback(n=>{const a=xe.current;if(!a||a.pointerId!==n.pointerId||Math.hypot(n.clientX-a.startX,n.clientY-a.startY)<6&&!k)return;k||D(a.targetId);const p=document.querySelector(".s-term--workspace");if(p){const fs=p.getBoundingClientRect();n.clientY<fs.top+72&&(p.scrollTop-=28),n.clientY>fs.bottom-72&&(p.scrollTop+=28)}const y=document.elementFromPoint(n.clientX,n.clientY),v=y?.closest(".s-term-workspace-cell"),J=!!(y?.closest(".s-term-workspace-add-cell")||!v&&y?.closest(".s-term--workspace")&&!y?.closest(".s-term-picker")),hs=J?null:v?.dataset.terminalTileId??null;ye.current=hs,Me.current=J,P(hs),rs(J)},[k]),rt=l.useCallback(n=>{const a=xe.current;!a||a.pointerId!==n.pointerId||(Me.current?oe(a.target):ye.current&&oe(a.target,ye.current),ge(n))},[ge,oe]),at=l.useCallback(n=>{ge(n)},[ge]),it=l.useCallback(()=>{const n=V.map(G);n.length!==0&&O(a=>{const u=a.filter(y=>y.kind==="registered"),p=n.filter(y=>!u.some(v=>v.kind==="registered"&&v.terminalSessionId===y.session.id&&Ue(v.terminalSurfaceKey,U(y.surface)))).map(y=>({id:we("cell"),kind:"registered",terminalSessionId:y.session.id,terminalSurfaceKey:U(y.surface)}));return p.length===0?a:[...a,...p]})},[V,O]),De=l.useCallback(n=>{O(a=>{const u=a.filter(p=>p.id!==n);return u.length===a.length?a:u})},[O]),ds=l.useCallback((n,a,u)=>{n!==a&&O(p=>Yt(p,n,a,u))},[O]),ze=l.useCallback((n,a)=>{O(u=>{const p=u.findIndex(J=>J.id===n),y=p+a;if(p<0||y<0||y>=u.length)return u;const v=[...u];return[v[p],v[y]]=[v[y],v[p]],v})},[O]),ms=l.useCallback((n,a)=>{O(u=>u.map(p=>p.id===n?{id:p.id,kind:"fresh",backend:a,agent:"shell"}:p))},[O]),Se=l.useCallback(()=>[...vs.map(n=>({kind:"action",label:n.label,onSelect:()=>je(n.mode==="solo"?{mode:"solo"}:{mode:n.mode,columns:se.columns??"dynamic"})})),...se.mode==="solo"?[]:[{kind:"separator"},{kind:"action",label:"Dynamic columns",onSelect:()=>je({...se,columns:"dynamic"})},...Array.from({length:Qe},(n,a)=>({kind:"action",label:a===0?"One column":`${a+1} columns`,onSelect:()=>je({...se,columns:a+1})}))],{kind:"separator"},{kind:"action",label:"Edit workspace…",onSelect:()=>w&&ie(w)}],[w,je,ie,se]),ot=l.useCallback(n=>{r(n,Se())},[Se,r]),lt=l.useCallback((n,a)=>{const u=Y.findIndex(y=>y.id===a.id),p=[];u>0&&p.push({kind:"action",label:"Move left",onSelect:()=>ze(a.id,-1)}),u>=0&&u<Y.length-1&&p.push({kind:"action",label:"Move right",onSelect:()=>ze(a.id,1)}),p.length>0&&p.push({kind:"separator"}),p.push(...c.map(y=>({kind:"action",label:y.value==="pty"?"Replace with a disposable shell":`Replace with a session that survives (${y.label})`,onSelect:()=>ms(a.id,y.value)})),{kind:"separator"},{kind:"action",label:"Remove cell",onSelect:()=>De(a.id)},{kind:"separator"},...Se()),r(n,p)},[De,Se,ze,ms,r,c,Y]),ct=l.useCallback((n,a)=>{const u=n.target;n.button===0&&u instanceof Element&&u.closest(".s-term-bar")&&!u.closest("button, a")&&(fe.current={pointerId:n.pointerId,tileId:a,startX:n.clientX,startY:n.clientY},n.currentTarget.setPointerCapture(n.pointerId))},[]),dt=l.useCallback(n=>{const a=fe.current;if(!a||a.pointerId!==n.pointerId||Math.hypot(n.clientX-a.startX,n.clientY-a.startY)<6&&!he)return;he||as(a.tileId);const p=document.elementFromPoint(n.clientX,n.clientY)?.closest(".s-term-workspace-cell"),y=p?.dataset.terminalTileId??null;if(!p||!y||y===a.tileId){ke.current=null,be.current="after",Ae(null);return}const v=p.getBoundingClientRect(),J=Vt({x:n.clientX,y:n.clientY},{left:v.left,top:v.top,width:v.width,height:v.height},Le);ke.current=y,be.current=J.edge,Ae(y)},[he,Le]),us=l.useCallback(n=>{const a=fe.current;if(!a||a.pointerId!==n.pointerId)return;const u=ke.current;u&&ds(a.tileId,u,be.current),n.currentTarget.hasPointerCapture(n.pointerId)&&n.currentTarget.releasePointerCapture(n.pointerId),fe.current=null,ke.current=null,be.current="after",as(null),Ae(null)},[ds]),mt=l.useMemo(()=>pn(Q.find(n=>n.workspaceId===w?.id)),[w?.id,Q]),ps=l.useCallback(n=>{ae(a=>wt(a,n))},[]),ut=l.useCallback(()=>{H(),f(n=>n+1)},[H]),pt=l.useCallback(n=>{w&&mn(w.id,n).then(()=>{ee(null),H()}).catch(a=>ee(a instanceof Error?a.message:String(a)))},[w,H]);return ls==="library"?e.jsx(En,{workspaces:qs,sessionsReady:E.state!=="loading",onOpen:Hs,onCreate:()=>ie(),onEdit:ie,onDelete:Zs}):ls==="builder"?e.jsx(An,{editing:!!b,name:C,purpose:z,modes:vs,layout:j,startOptions:c,cells:A,selectedSlot:T,terminalItems:V,onNameChange:L,onPurposeChange:N,onApplyMode:Ys,onColumnsChange:Js,onSelectSlot:R,onAddCell:Gs,onRemoveCell:Xs,pickerView:F,pickerSort:re,onPickerView:ne,onPickerSort:ps,onAssignFresh:(n,a="shell")=>$(u=>u.map((p,y)=>y===T?{id:p.id,kind:"fresh",backend:n,agent:a}:p)),onAssignRegistered:n=>$(a=>a.map((u,p)=>p===T?{id:u.id,kind:"registered",terminalSessionId:n.session.id,terminalSurfaceKey:U(n.surface)}:u)),onCancel:()=>{o(w?"workspace":"library")},onSave:Qs}):e.jsx("div",{className:"s-term s-term--workspace",children:e.jsxs("div",{className:"s-term-workspace",children:[e.jsxs("header",{className:"s-term-workspace-head",children:[e.jsxs("div",{className:"s-term-workspace-title",children:[e.jsxs("span",{className:"s-term-summary-mark",children:[e.jsx(de,{size:18,strokeWidth:1.7}),e.jsxs("span",{children:["Workspaces / ",w?.name??"Workspace"]})]}),e.jsx("h1",{children:w?.name??"Workspace"}),w?.purpose&&e.jsx("p",{children:w.purpose})]}),e.jsxs("div",{className:"s-term-workspace-actions","aria-label":"Terminal workspace actions",children:[e.jsx("button",{type:"button",className:"s-term-workspace-action",onClick:Vs,children:e.jsx("span",{children:"All workspaces"})}),e.jsxs("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>w&&ie(w),children:[e.jsx(de,{size:14,strokeWidth:1.8}),e.jsx("span",{children:"Edit workspace"})]}),e.jsxs("button",{type:"button",className:"s-term-workspace-action",onClick:()=>cs("pty"),title:"Add a shell tile",children:[e.jsx(te,{size:14,strokeWidth:1.9}),e.jsx("span",{children:"Shell"})]}),e.jsxs("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>cs("pty","codex"),title:"Add a Codex TUI tile",children:[e.jsx(te,{size:14,strokeWidth:1.9}),e.jsx("span",{children:"Codex"})]}),e.jsxs("button",{type:"button",className:"s-term-workspace-action",onClick:()=>W(n=>!n),title:g?"Hide terminal picker":"Show terminal picker","aria-pressed":g,children:[e.jsx(K,{size:14,strokeWidth:1.8}),e.jsx("span",{children:g?"Hide picker":"Show picker"})]}),e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:ut,disabled:E.state==="loading",title:"Reload all terminal tiles","aria-label":"Reload all terminal tiles",children:e.jsx(Ge,{size:14,strokeWidth:1.8})})]})]}),os&&e.jsxs("div",{className:"s-term-home-error",children:[e.jsx("span",{children:"Terminal registry unavailable"}),e.jsx("code",{children:os})]}),pe&&e.jsxs("div",{className:"s-term-home-error",children:[e.jsx("span",{children:"This workspace is not saved to Scout — it will not follow you to another device"}),e.jsx("code",{children:pe})]}),(Y.length>0||g)&&e.jsxs("div",{className:"s-term-workspace-grid","aria-label":"Terminal tiles",style:{"--terminal-grid-columns":Le},onContextMenu:ot,children:[Y.map(n=>e.jsx("div",{className:`s-term-workspace-cell${he===n.id?" s-term-workspace-cell--dragging":""}${Bs===n.id||M===n.id?" s-term-workspace-cell--drop-target":""}`,"data-terminal-tile-id":n.id,onPointerDownCapture:a=>ct(a,n.id),onPointerMove:dt,onPointerUp:us,onPointerCancel:us,onContextMenu:a=>lt(a,n),children:e.jsx(Ln,{tile:n,navigate:s,onClose:De,resolution:mt.get(n.id)??null,onRevive:pt,live:vn(n,E.sessions)})},`${n.id}:${B}`)),g&&e.jsxs("button",{type:"button",className:`s-term-workspace-add-cell${_?" s-term-workspace-add-cell--target":""}`,onClick:()=>W(!0),children:[e.jsx(te,{size:20,strokeWidth:1.7}),e.jsx("strong",{children:"New slot"}),e.jsx("span",{children:k?"Drop to add":"Drag a terminal here"})]})]}),e.jsxs("section",{className:`s-term-picker${g?"":" s-term-picker--collapsed"}`,"aria-labelledby":"terminal-picker-title",onPointerDownCapture:n=>{const a=n.target;if(!(a instanceof Element))return;const u=a.closest("[data-picker-item-id]")?.dataset.pickerItemId,p=V.find(y=>y.id===u);p&&tt(n,p)},onPointerMove:nt,onPointerUp:rt,onPointerCancel:at,children:[e.jsxs("header",{className:"s-term-picker-head",children:[e.jsxs("div",{className:"s-term-picker-title",children:[e.jsx(K,{size:14,strokeWidth:1.8}),e.jsx("h2",{id:"terminal-picker-title",children:"Terminal picker"}),e.jsx("span",{children:E.state==="loading"?"syncing":V.length})]}),e.jsxs("div",{className:"s-term-picker-actions",children:[g&&e.jsx("div",{className:"s-term-picker-views",role:"group","aria-label":"Picker view",children:["list","table"].map(n=>e.jsx("button",{type:"button",className:F===n?"is-selected":"",onClick:()=>ne(n),"aria-pressed":F===n,children:n==="list"?"List":"Table"},n))}),g&&e.jsxs("button",{type:"button",className:"s-term-workspace-action",onClick:it,disabled:V.length===0,children:[e.jsx(Ds,{size:13,strokeWidth:1.8}),e.jsx("span",{children:"Attach all"})]}),e.jsxs("button",{type:"button",className:"s-term-picker-toggle",onClick:()=>W(n=>!n),"aria-expanded":g,children:[e.jsx("span",{children:g?"Hide":"Show terminal picker"}),e.jsx("span",{"aria-hidden":"true",children:g?"⌄":"⌃"})]})]})]}),g&&e.jsxs(e.Fragment,{children:[e.jsx("p",{className:"s-term-picker-hint",children:"Drag a terminal onto a cell to place it, or onto New slot to grow the grid."}),V.length===0&&E.state!=="loading"?e.jsx("div",{className:"s-term-picker-empty",children:"No live terminals"}):e.jsx(Ks,{items:V,view:F,sort:re,attachedIds:st,draggedTargetId:k,onSort:ps,onAttach:et})]})]})]})})}function En({workspaces:s,sessionsReady:t,onOpen:r,onCreate:i,onEdit:c,onDelete:m}){return e.jsx("div",{className:"s-term s-term--workspace-library",children:e.jsxs("main",{className:"s-term-workspace-library",children:[e.jsxs("header",{className:"s-term-workspace-library-head",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"s-term-summary-mark",children:[e.jsx(de,{size:18,strokeWidth:1.7}),e.jsx("span",{children:"Terminals"})]}),e.jsx("h1",{children:"Workspaces"}),e.jsx("p",{children:"Saved terminal layouts for projects, roles, and cross-project operations."})]}),e.jsxs("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:i,children:[e.jsx(te,{size:14,strokeWidth:1.9}),e.jsx("span",{children:"New workspace"})]})]}),s.length===0?e.jsxs("section",{className:"s-term-workspace-library-empty",children:[e.jsx(de,{size:24,strokeWidth:1.5}),e.jsx("h2",{children:"Create your first terminal workspace"}),e.jsx("p",{children:"Choose a layout, give it a purpose, place sessions, then enter the grid."}),e.jsxs("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:i,children:[e.jsx(te,{size:14,strokeWidth:1.9}),e.jsx("span",{children:"Create workspace"})]})]}):e.jsx("div",{className:"s-term-workspace-library-grid",children:s.map(d=>e.jsxs("article",{className:"s-term-workspace-card",children:[e.jsx("div",{className:"s-term-workspace-card-preview",style:{"--terminal-grid-columns":d.columns??Pe},children:d.tiles.map(h=>e.jsx("span",{className:h.kind==="registered"?"is-session":"is-shell"},h.id))}),e.jsxs("div",{className:"s-term-workspace-card-copy",children:[e.jsxs("span",{children:[d.columns??Pe," column",(d.columns??Pe)===1?"":"s"," · ",d.tiles.length," cells"]}),e.jsx("h2",{children:d.name}),e.jsx("p",{children:d.purpose||"No purpose added yet."})]}),e.jsxs("div",{className:"s-term-workspace-card-actions",children:[e.jsx("button",{type:"button",className:"s-term-workspace-action",onClick:()=>c(d),children:"Edit"}),e.jsx("button",{type:"button",className:"s-term-workspace-action",onClick:()=>m(d.id),children:"Delete"}),e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>r(d),disabled:!t,children:"Enter workspace"})]})]},d.id))})]})})}function Be(s,t){return s==="solo"?1:s==="lanes"?Math.max(2,Math.min(4,t)):Math.max(2,Math.min(3,t))}function Wn(s,t){return s==="solo"?1:s==="lanes"?Be(s,t):Be(s,t)*2}function An({editing:s,name:t,purpose:r,modes:i,layout:c,startOptions:m,cells:d,selectedSlot:h,terminalItems:o,onNameChange:x,onPurposeChange:b,onApplyMode:S,onColumnsChange:C,onSelectSlot:L,onAddCell:z,onRemoveCell:N,pickerView:j,pickerSort:I,onPickerView:A,onPickerSort:$,onAssignFresh:T,onAssignRegistered:R,onCancel:E,onSave:q}){const B=Re(c,{tileCount:d.length});return e.jsx("div",{className:"s-term s-term--workspace-builder",children:e.jsxs("main",{className:"s-term-workspace-builder",children:[e.jsxs("header",{className:"s-term-workspace-builder-head",children:[e.jsxs("div",{children:[e.jsxs("span",{className:"s-term-summary-mark",children:[e.jsx(de,{size:18,strokeWidth:1.7}),e.jsx("span",{children:"Workspace builder"})]}),e.jsx("h1",{children:s?"Edit workspace":"Create a workspace"}),e.jsx("p",{children:"Define the job, choose the grid, and place the sessions before entering."})]}),e.jsxs("div",{className:"s-term-workspace-builder-actions",children:[e.jsx("button",{type:"button",className:"s-term-workspace-action",onClick:E,children:"Cancel"}),e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:q,disabled:!t.trim(),children:s?"Save and enter":"Create and enter"})]})]}),e.jsxs("section",{className:"s-term-workspace-builder-identity","aria-label":"Workspace identity",children:[e.jsxs("label",{children:[e.jsx("span",{children:"Name"}),e.jsx("input",{value:t,onChange:f=>x(f.target.value),placeholder:"Release desk",autoFocus:!0})]}),e.jsxs("label",{children:[e.jsx("span",{children:"Purpose"}),e.jsx("input",{value:r,onChange:f=>b(f.target.value),placeholder:"Cross-project release monitoring"})]})]}),e.jsxs("section",{className:"s-term-workspace-builder-layout","aria-labelledby":"workspace-layout-title",children:[e.jsxs("div",{className:"s-term-workspace-builder-section-head",children:[e.jsxs("div",{children:[e.jsx("span",{children:"Step 1"}),e.jsx("h2",{id:"workspace-layout-title",children:"Choose the layout"})]}),e.jsxs("p",{children:[zt(c)," · ",d.length," cell",d.length===1?"":"s"]})]}),e.jsx("div",{className:"s-term-grid-presets","aria-label":"Workspace layout",children:i.map(f=>e.jsxs("button",{type:"button",className:`s-term-grid-preset${f.mode===c.mode?" s-term-grid-preset--selected":""}`,onClick:()=>S(f),"aria-pressed":f.mode===c.mode,children:[e.jsx("span",{className:"s-term-grid-preset-map",style:{"--terminal-preset-columns":Be(f.mode,B)},"aria-hidden":"true",children:Array.from({length:Wn(f.mode,B)},(g,W)=>e.jsx("i",{},W))}),e.jsx("span",{className:"s-term-grid-preset-label",children:f.label}),e.jsx("span",{className:"s-term-grid-preset-detail",children:f.detail})]},f.mode))}),c.mode!=="solo"&&e.jsxs("div",{className:"s-term-workspace-builder-columns",role:"group","aria-label":"Columns",children:[e.jsx("span",{children:"Columns"}),e.jsx("button",{type:"button",className:c.columns==="dynamic"||c.columns===void 0?"is-selected":"",onClick:()=>C("dynamic"),"aria-pressed":c.columns==="dynamic"||c.columns===void 0,title:"Fit the columns to the number of tiles",children:"Dynamic"}),Array.from({length:Qe},(f,g)=>e.jsx("button",{type:"button",className:c.columns===g+1?"is-selected":"",onClick:()=>C(g+1),"aria-pressed":c.columns===g+1,children:g+1},g)),(c.columns==="dynamic"||c.columns===void 0)&&e.jsxs("em",{children:[B," right now"]})]})]}),e.jsxs("section",{className:"s-term-workspace-builder-placement","aria-labelledby":"workspace-placement-title",children:[e.jsxs("div",{className:"s-term-workspace-builder-section-head",children:[e.jsxs("div",{children:[e.jsx("span",{children:"Step 2"}),e.jsx("h2",{id:"workspace-placement-title",children:"Place terminals"})]}),e.jsx("p",{children:"Select a cell, then choose a session or shell. Add as many cells as the work needs."})]}),e.jsxs("div",{className:"s-term-workspace-builder-canvas",children:[e.jsxs("div",{className:"s-term-workspace-builder-grid",style:{"--terminal-grid-columns":B},children:[d.map((f,g)=>{const W=f.kind==="registered"?o.find(F=>F.session.id===f.terminalSessionId&&Ue(U(F.surface),f.terminalSurfaceKey)):null;return e.jsxs("div",{className:`s-term-workspace-builder-cell${h===g?" is-selected":""}`,children:[e.jsxs("button",{type:"button",className:"s-term-workspace-builder-cell-select",onClick:()=>L(g),"aria-pressed":h===g,children:[e.jsx("span",{children:String(g+1).padStart(2,"0")}),e.jsx(K,{size:17,strokeWidth:1.7}),e.jsx("strong",{children:f.kind==="registered"?W?.title??"Unavailable session":ns(f.backend,f.agent).title}),e.jsx("small",{children:f.kind==="registered"?W?.cwdLabel||W?.detail:f.backend})]}),d.length>1&&e.jsx("button",{type:"button",className:"s-term-workspace-builder-cell-remove",onClick:()=>N(g),title:"Remove this cell","aria-label":`Remove cell ${g+1}`,children:e.jsx(ue,{size:13,strokeWidth:1.9})})]},f.id)}),e.jsxs("button",{type:"button",className:"s-term-workspace-builder-cell s-term-workspace-builder-cell--add",onClick:z,children:[e.jsx(te,{size:18,strokeWidth:1.7}),e.jsx("strong",{children:"Add cell"})]})]}),e.jsxs("aside",{className:"s-term-workspace-builder-source",children:[e.jsxs("span",{children:["Cell ",String(h+1).padStart(2,"0")]}),e.jsx("h3",{children:"Start something new"}),e.jsxs("div",{className:"s-term-workspace-builder-source-actions",children:[kn.map(f=>e.jsx("button",{type:"button",onClick:()=>T("pty",f.value),children:f.label},f.value)),m.filter(f=>f.value!=="pty").map(f=>e.jsxs("button",{type:"button",onClick:()=>T(f.value,"shell"),title:f.relayAttach?f.detail:`${f.detail} — Scout starts it; open it in ${f.label} to use it`,children:[f.label,!f.relayAttach&&e.jsx("sup",{"aria-label":"opens outside Scout",children:" ↗"})]},f.value))]}),e.jsxs("div",{className:"s-term-workspace-builder-source-head",children:[e.jsx("h3",{children:"Or use a live session"}),e.jsx("div",{className:"s-term-picker-views",role:"group","aria-label":"Session picker view",children:["list","table"].map(f=>e.jsx("button",{type:"button",className:j===f?"is-selected":"",onClick:()=>A(f),"aria-pressed":j===f,children:f==="list"?"List":"Table"},f))})]}),e.jsx("div",{className:"s-term-workspace-builder-sessions",children:o.length===0?e.jsx("span",{className:"s-term-workspace-builder-no-sessions",children:"No live sessions"}):e.jsx(Ks,{items:o,view:j,sort:I,attachedIds:new Set,draggedTargetId:null,onSort:$,onAttach:f=>{const g=o.find(W=>W.session.id===f.session.id&&W.surface.sessionName===f.surface.sessionName);g&&R(g)}})})]})]})]})]})})}function Mn({item:s,attached:t,dragging:r,onAttach:i}){return e.jsxs("article",{className:`s-term-picker-item${t?" s-term-picker-item--attached":""}${r?" s-term-picker-item--dragging":""}`,"data-picker-item-id":s.id,children:[e.jsx("span",{className:"s-term-picker-grip","aria-hidden":"true",children:"⠿"}),e.jsxs("div",{className:"s-term-picker-item-main",children:[e.jsx("strong",{title:s.surface.sessionName,children:s.title}),e.jsx("span",{title:s.session.cwd??s.detail,children:s.cwdLabel||s.detail})]}),e.jsxs("div",{className:"s-term-picker-item-meta",children:[e.jsx("span",{children:s.surface.backend}),e.jsx("span",{children:zs(s)}),e.jsx("span",{title:s.session.cwd??void 0,children:s.project})]}),e.jsx("button",{type:"button",className:"s-term-picker-add",onClick:()=>i(G(s)),disabled:t,children:t?"In grid":"Add"})]})}function Ks({items:s,view:t,sort:r,attachedIds:i,draggedTargetId:c,onSort:m,onAttach:d}){const h=l.useMemo(()=>Ct(s,r),[s,r]);return t==="table"?e.jsx("div",{className:"s-term-picker-table-wrap",children:e.jsxs("table",{className:"s-term-picker-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[Tt.map(o=>e.jsx("th",{scope:"col","aria-sort":r.column===o.id?r.direction==="asc"?"ascending":"descending":"none",children:e.jsxs("button",{type:"button",onClick:()=>m(o.id),children:[e.jsx("span",{children:o.label}),e.jsx("em",{"aria-hidden":"true",children:r.column===o.id?r.direction==="asc"?"▲":"▼":"·"})]})},o.id)),e.jsx("th",{scope:"col","aria-label":"Place"})]})}),e.jsx("tbody",{children:h.map(o=>{const x=Ee(G(o)),b=It(o);return e.jsxs("tr",{"data-picker-item-id":o.id,className:i.has(x)?"is-attached":void 0,children:[e.jsx("td",{title:o.surface.sessionName,children:o.title}),e.jsx("td",{children:o.surface.backend}),e.jsx("td",{children:zs(o)}),e.jsx("td",{title:o.session.cwd??void 0,children:o.project}),e.jsx("td",{children:b?Wt(b):"—"}),e.jsx("td",{children:e.jsx("button",{type:"button",className:"s-term-picker-add",onClick:()=>d(G(o)),disabled:i.has(x),children:i.has(x)?"In grid":"Add"})})]},o.id)})})]})}):e.jsx("div",{className:"s-term-picker-list","aria-label":"Available terminals",children:h.map(o=>{const x=Ee(G(o));return e.jsx(Mn,{item:o,attached:i.has(x),dragging:c===x,onAttach:d},o.id)})})}function Ln({tile:s,navigate:t,onClose:r,resolution:i,onRevive:c,live:m=!1}){if(s.kind==="registered")return e.jsx(On,{tile:s,navigate:t,onClose:r});if(s.kind==="unavailable"){const d=i?.status==="revivable"&&!!c;return e.jsxs("section",{className:"s-term-workspace-tile s-term-workspace-tile--unavailable","aria-label":"Unavailable terminal session",children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsxs("div",{className:"s-term-bar-left",children:[e.jsx("span",{className:"s-term-workspace-tile-mark",children:e.jsx(K,{size:14,strokeWidth:1.8})}),e.jsx("span",{className:"s-term-workspace-tile-name",children:"Not running"})]}),e.jsx("div",{className:"s-term-bar-actions",children:e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>r(s.id),title:"Remove cell","aria-label":"Remove cell",children:e.jsx(ue,{size:14,strokeWidth:1.8})})})]}),e.jsxs("div",{className:"s-term-workspace-unavailable-body",children:[e.jsx(K,{size:22,strokeWidth:1.5}),e.jsx("strong",{children:d?"This tile is not running.":"This saved session is not currently live."}),e.jsx("span",{children:i?.detail??"Show the terminal picker to replace it, or wait for the session to reconnect."}),d&&e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:()=>c?.(s.id),children:"Start it again"})]})]})}return!Ms(s.backend)&&s.backend!=="pty"?e.jsx(Dn,{tile:s,onClose:r,live:m}):e.jsx(zn,{tile:s,navigate:t,onClose:r})}function Dn({tile:s,onClose:t,live:r}){const{hosts:i}=es(),c=rn(i,s.backend),[m,d]=l.useState("idle"),[h,o]=l.useState(null),x=l.useCallback(()=>{s.sessionName&&(d("starting"),o(null),ln(s.backend,{sessionName:s.sessionName}).then(()=>d("idle")).catch(b=>{d("failed"),o(b instanceof Error?b.message:String(b))}))},[s.backend,s.sessionName]);return e.jsxs("section",{className:"s-term-workspace-tile s-term-workspace-tile--hosted","aria-label":`${c?.label??s.backend} session`,children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsxs("div",{className:"s-term-bar-left",children:[e.jsx("span",{className:"s-term-workspace-tile-mark",children:e.jsx(K,{size:14,strokeWidth:1.8})}),e.jsx("span",{className:"s-term-workspace-tile-name",children:c?.label??s.backend})]}),e.jsx("div",{className:"s-term-bar-meta",children:e.jsx("span",{className:"s-term-label",children:r?"running":"not running"})}),e.jsx("div",{className:"s-term-bar-actions",children:e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>t(s.id),title:"Remove cell","aria-label":"Remove cell",children:e.jsx(ue,{size:14,strokeWidth:1.8})})})]}),e.jsxs("div",{className:"s-term-workspace-unavailable-body",children:[e.jsx(K,{size:22,strokeWidth:1.5}),e.jsx("strong",{children:r?`Running in ${c?.label??s.backend}`:"Not running yet"}),e.jsx("span",{children:r?`Scout keeps this session for you. Open it in ${c?.label??s.backend} to use it.`:`Scout can start a ${c?.label??s.backend} session and keep it for you.`}),!r&&e.jsx("button",{type:"button",className:"s-term-workspace-action s-term-workspace-action--primary",onClick:x,disabled:m==="starting"||!s.sessionName,children:m==="starting"?"Starting…":"Start it"}),h&&e.jsx("code",{children:h})]})]})}function zn({tile:s,navigate:t,onClose:r}){const i=l.useRef(null),c=qe(),m=He(),d=ns(s.backend,s.agent),h=Tn(s),o=["scout-terminal-workspace",s.id,s.backend,s.agent,s.sessionName??"pty"].join("-"),x=Je({url:c,healthUrl:m,autoConnect:!0,sessionKey:o,backend:s.backend,...s.sessionName?{terminalSession:s.sessionName}:{},...s.backend==="tmux"&&s.sessionName?{tmuxSession:s.sessionName}:{},...s.backend==="zellij"&&s.sessionName?{zellijSession:s.sessionName}:{},...s.backend==="zellij"&&s.zellijSocketDir?{zellijSocketDir:s.zellijSocketDir}:{},agent:s.agent,controlMode:"takeover"});ce(()=>{x.resize(Ve,Ye)},[x.resize]);const b=l.useCallback(()=>{h&&Us(h,t)},[t,h]);return e.jsx("section",{className:"s-term-workspace-tile","aria-label":d.title,children:e.jsxs("div",{className:"s-term s-term--embedded",children:[e.jsxs("div",{className:"s-term-bar s-term-bar--fresh",children:[e.jsxs("div",{className:"s-term-bar-left",children:[e.jsx("span",{className:"s-term-workspace-tile-mark",children:e.jsx(K,{size:14,strokeWidth:1.8})}),e.jsx("span",{className:"s-term-workspace-tile-name",children:d.title})]}),e.jsxs("div",{className:"s-term-bar-meta",children:[e.jsx("span",{className:"s-term-label",children:s.backend}),e.jsx("span",{className:"s-term-session",children:d.detail})]}),e.jsxs("div",{className:"s-term-bar-actions",children:[e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:()=>x.restart(),title:"Restart terminal","aria-label":"Restart terminal",children:e.jsx(Ge,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:b,title:"Open terminal in a new window","aria-label":"Open terminal in a new window",children:e.jsx(Ps,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>r(s.id),title:"Close tile","aria-label":"Close tile",children:e.jsx(ue,{size:14,strokeWidth:1.8})})]})]}),e.jsx("div",{ref:i,className:"s-term-body",onMouseDown:()=>{i.current?.querySelector(".xterm-helper-textarea")?.focus(),i.current?.querySelector(".xterm")?.focus()},children:e.jsx(ss,{relay:x,quiet:!0,configItems:[{label:"backend",value:s.backend},{label:"agent",value:s.agent},...s.sessionName?[{label:"session",value:s.sessionName}]:[],...s.zellijSocketDir?[{label:"socket",value:s.zellijSocketDir}]:[],{label:"ws",value:c},{label:"health",value:m}]})})]})})}function On({tile:s,navigate:t,onClose:r}){const i=l.useCallback(()=>{Us(In(s.target),t)},[t,s.target]);return e.jsx("section",{className:"s-term-workspace-tile","aria-label":s.target.surface.sessionName,children:e.jsx(ts,{agent:null,mode:"takeover",navigate:t,registeredTarget:s.target,embedded:!0,tileActions:e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:i,title:"Open terminal in a new window","aria-label":"Open terminal in a new window",children:e.jsx(Ps,{size:14,strokeWidth:1.8})}),e.jsx("button",{type:"button",className:"s-term-icon-button s-term-icon-button--danger",onClick:()=>r(s.id),title:"Close tile","aria-label":"Close tile",children:e.jsx(ue,{size:14,strokeWidth:1.8})})]})})})}function Pn(s){return[...s].filter(t=>!t.retiredFromFleet).sort((t,r)=>{const i=+!!Ce(r)-+!!Ce(t);if(i!==0)return i;const c=(r.updatedAt??0)-(t.updatedAt??0);return c!==0?c:t.name.localeCompare(r.name)})}function _n({route:s,navigate:t}){const r=l.useRef(null),i=s.terminalBackend??"pty",c=s.terminalAgent??"shell",m=s.terminalTabId??"adhoc",d=i==="pty"?void 0:`scout-${i}-${m}`,h=s.terminalSessionName??d,o=qe(),x=He(),b=ns(i,c),S=["scout-terminal-new",i,c,h??m].join("-"),C=Je({url:o,healthUrl:x,autoConnect:!0,sessionKey:S,backend:i,...h?{terminalSession:h}:{},...i==="tmux"&&h?{tmuxSession:h}:{},...i==="zellij"&&h?{zellijSession:h}:{},...i==="zellij"&&s.zellijSocketDir?{zellijSocketDir:s.zellijSocketDir}:{},agent:c,controlMode:"takeover"}),L=l.useRef([]),z=l.useRef({status:C.status,sendLine:C.sendLine});return z.current={status:C.status,sendLine:C.sendLine},ce(()=>{const N=j=>{const I=hn(j);if(!I)return;const A=z.current;if(A.status==="connected"){A.sendLine(I);return}L.current=[...L.current.slice(-15),I]};return window.addEventListener(Ns,N),()=>window.removeEventListener(Ns,N)},[]),ce(()=>{if(C.status!=="connected"||L.current.length===0)return;const N=L.current;L.current=[];for(const j of N)C.sendLine(j)},[C.sendLine,C.status]),ce(()=>{C.resize(Ve,Ye)},[C.resize]),e.jsxs("div",{className:"s-term",children:[e.jsxs("div",{className:"s-term-bar",children:[e.jsx(me,{slot:"terminal",fallback:{view:"terminal"},navigate:t,className:"s-term-back"}),e.jsx("span",{className:"s-term-label",children:b.title}),e.jsx("div",{className:"s-term-status",children:b.detail}),e.jsx("div",{className:"s-term-actions",children:e.jsx("button",{type:"button",className:"s-term-icon-button",onClick:()=>C.restart(),title:"Restart terminal","aria-label":"Restart terminal",children:e.jsx(Ge,{size:14,strokeWidth:1.8})})})]}),e.jsx("div",{ref:r,className:"s-term-body",onMouseDown:()=>{r.current?.querySelector(".xterm-helper-textarea")?.focus(),r.current?.querySelector(".xterm")?.focus()},children:e.jsx(ss,{relay:C,quiet:!0,configItems:[{label:"backend",value:i},{label:"agent",value:c},...h?[{label:"session",value:h}]:[],...s.zellijSocketDir?[{label:"socket",value:s.zellijSocketDir}]:[],{label:"ws",value:o},{label:"health",value:x}]})})]})}function ns(s,t){const r=t==="shell"?"Shell":t==="codex"?"Codex":t==="pi"?"Pi":"Claude";return s==="pty"?{title:r,detail:"fresh PTY tab"}:{title:`${r} ${s}`,detail:`fresh ${s} backed tab`}}function $n({agentId:s,agent:t,mode:r,navigate:i,children:c}){const m=jn(s,t,r);return m.ready?e.jsx(e.Fragment,{children:c}):e.jsx(Sn,{agent:t,agentId:s,color:Is(t.name),navigate:i,label:m.label,status:m.status,onRetry:m.onRetry})}function Fn({navigate:s}){return e.jsx("div",{className:"s-term",children:e.jsxs("div",{className:"s-term-bar",children:[e.jsx(me,{slot:"terminal",fallback:{view:"terminal"},navigate:s,className:"s-term-back"}),e.jsx("span",{className:"s-term-label",children:"Terminal"}),e.jsx("div",{className:"s-term-status",children:"Resolving agent..."})]})})}function Un({route:s,navigate:t}){const{agentId:r,mode:i,terminalSessionId:c,terminalSurfaceKey:m}=s,{agents:d}=Os();if(s.terminalBackend)return e.jsx(_n,{route:s,navigate:t});if(!r)return!c&&!m?e.jsx(Rn,{navigate:t}):e.jsx(wn,{terminalSessionId:c,terminalSurfaceKey:m,mode:i,navigate:t});const h=d.find(b=>b.id===r)??null;if(!h)return e.jsx(Fn,{navigate:t});const o=Ce(h),x=o?`${o.backend}:${h.id}:${o.sessionName}:${i??"takeover"}`:`takeover:${r}:${i??"takeover"}`;return e.jsx($n,{agentId:r,agent:h,mode:i,navigate:t,children:e.jsx(ts,{agentId:r,agent:h,mode:i,navigate:t})},x)}function Kr({agentId:s,mode:t,terminalSessionId:r,terminalSurfaceKey:i,navigate:c}){const m={view:"terminal",agentId:s,mode:t,terminalSessionId:r,terminalSurfaceKey:i};return e.jsx(Un,{route:m,navigate:c})}export{Un as TerminalContent,Kr as TerminalScreen};
@@ -1 +0,0 @@
1
- import{r as e,j as l,a as A,b as C,S as k}from"./index-sUomXsrf.js";import{C as y}from"./ContextMenu-BlBQhpax.js";import{a as T}from"./api-h5zurxmi.js";import{L,D as x,f as R,S as P}from"./Provider-tFc3jqZ4.js";import{i as I}from"./colors-BtO5_zlx.js";import{r as j,a as D}from"./router-Dja9_ygK.js";import{TerminalContent as H}from"./Terminal-DwZyo8kA.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./createLucideIcon-DlxlBfLC.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./x-0XjXwGqq.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-BhZZ5HEq.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./time-Dhsh_2EG.js";import"./NewChatOrigin--pHWUb4V.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";import"./terminal-sessions-D5CIR2OL.js";/* empty css */import"./clipboard-e3fSpeo7.js";import"./terminal-relay-B5Sma7fK.js";import"./session-table-sAVe44a4.js";import"./chunk-YOZR3KYS-BW85tiCr.js";import"./arrow-down-DsD-dYj-.js";import"./terminal-takeover-X97KCSJk.js";import"./BackToPicker-CkUmHuuo.js";import"./TmuxPeek-Dz1gJ2pU.js";/* empty css */import"./refresh-cw-D8PFyhUa.js";import"./plus-C9lTjsgd.js";import"./terminal-DXQISjZn.js";import"./eye-So8tNNK6.js";import"./external-link-CnjcXf32.js";function g(){const t=new URLSearchParams(window.location.search).get("route")?.trim()||"/terminal",s=j(t);return s.view==="terminal"?s:{view:"terminal"}}function S(o){const t=new URLSearchParams(window.location.search);return t.set("route",D(o)),t.has("profile")||t.set("profile","macos.terminal"),`${window.location.pathname}?${t.toString()}${window.location.hash}`}function Oe(){const[o,t]=e.useState(()=>g()),s=!!(o.terminalBackend||o.agentId||o.terminalSessionId||o.terminalSurfaceKey);e.useEffect(()=>{const i=()=>t(g());return window.addEventListener("popstate",i),()=>window.removeEventListener("popstate",i)},[]);const n=e.useCallback(i=>{if(i.view!=="terminal"){const p={view:"terminal"},a=S(p);window.history.pushState(null,"",a),t(p);return}const c=S(i);window.history.pushState(null,"",c),t(i)},[]);return l.jsx(M,{route:o,navigate:n,children:l.jsx("div",{className:`s-terminal-embed${s?" s-terminal-embed--surface":""}`,children:l.jsx(H,{route:o,navigate:n})})})}function M({route:o,navigate:t,children:s}){const[n,i]=e.useState([]),[c,p]=e.useState({status:"checking",message:null,lastCheckedAt:null}),a=e.useRef(null),u=e.useMemo(()=>A(),[]),f=e.useMemo(()=>C(),[]),b=e.useMemo(()=>({...u==="light"?L:x,...f??{}}),[u,f]),h=e.useCallback(()=>{p({status:"online",message:null,lastCheckedAt:Date.now()})},[]),w=e.useCallback(r=>{p({status:"offline",message:R(r),lastCheckedAt:Date.now()})},[]),m=e.useCallback(async()=>{if(a.current)return a.current;const r=(async()=>{try{i(await T("/api/agents")),h()}catch(d){w(d)}})();a.current=r;try{await r}finally{a.current=null}},[w,h]);e.useEffect(()=>{m()},[m]),e.useEffect(()=>{const r=()=>{document.visibilityState!=="hidden"&&m()},d=window.setInterval(r,15e3);return window.addEventListener("focus",r),document.addEventListener("visibilitychange",r),()=>{window.clearInterval(d),window.removeEventListener("focus",r),document.removeEventListener("visibilitychange",r)}},[m]);const v=e.useMemo(()=>n.filter(r=>I(r.state)).length,[n]),E=e.useMemo(()=>({route:o,navigate:t,agents:n,agentsLoaded:c.status!=="checking",onlineCount:v,apiConnection:c,appearanceDetails:k,updateAppearanceDetails:()=>{},reload:m,onboarding:null,refreshOnboarding:async()=>{},onboardingSkipped:!0,skipOnboarding:()=>{},settingsOpen:!1,openSettings:()=>{},closeSettings:()=>{},scoutbotAgentId:"scoutbot",scoutbotConversationId:null,applyScoutbotUiAction:()=>{},selectedBrokerAttempt:null,inspectBrokerAttempt:()=>{},clearBrokerAttempt:()=>{},selectedKnowledgeHit:null,selectedKnowledgeQuery:"",inspectKnowledgeHit:()=>{},clearKnowledgeHit:()=>{},focusedSession:null,focusSession:()=>{},openFilePreview:()=>{},closeFilePreview:()=>{},openContextCapture:()=>{},closeContextCapture:()=>{}}),[n,c,t,v,m,o]);return l.jsx(P.Provider,{value:E,children:l.jsx("div",{"data-scout-theme":u,"data-scout-theme-mode":u,style:b,children:l.jsx(y,{children:s})})})}export{Oe as TerminalEmbedScreen};
@@ -1 +0,0 @@
1
- import{a as c}from"./api-h5zurxmi.js";async function n(t){const i=t.conversationId?.trim();if(i)return i;const o=t.projectRoot?.trim()||t.cwd?.trim(),r=await c("/api/conversations/direct",{method:"POST",body:JSON.stringify({agentId:t.id,targetLabel:t.selector??t.defaultSelector??t.name,...o?{projectPath:o}:{}})}),e=r.chatId?.trim()??r.conversationId?.trim()??r.cId?.trim()??r.id?.trim();if(!e)throw new Error("Chat was created, but no chat id was returned.");return e}export{n as e};
@@ -1 +0,0 @@
1
- function M(n){let o=1779033703^n.length;for(let t=0;t<n.length;t++)o=Math.imul(o^n.charCodeAt(t),3432918353),o=o<<13|o>>>19;return()=>(o=Math.imul(o^o>>>16,2246822507),o=Math.imul(o^o>>>13,3266489909),o^=o>>>16,o>>>0)}function x(n){let o=n>>>0;return()=>{o|=0,o=o+1831565813|0;let t=Math.imul(o^o>>>15,1|o);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}function H(n){const o=M(n.trim().toLowerCase())(),t=x(o);return{seed:o,next:t,float:(e,l)=>e+(l-e)*t(),int:(e,l)=>Math.floor(e+(l-e+1)*t()),bool:(e=.5)=>t()<e}}function S(n,o={}){const t=(n%360+360)%360,e=o.l??.72,l=o.c??.15,f=(t+38)%360,m=Math.max(.18,e-.12),h=Math.min(.92,e+.1);return{hue:t,body:`oklch(${e} ${l} ${t})`,bodyDim:`oklch(${m} ${Math.max(0,l-.02)} ${t})`,accent:`oklch(${h} ${l+.01} ${f})`,ink:`oklch(0.34 0.07 ${t})`,sclera:`oklch(0.96 0.02 ${t})`,glow:`oklch(${e} ${l} ${t} / 0.45)`,soft:`oklch(${e} ${l} ${t} / 0.12)`}}const g=[25,45,95,125,158,188,212,238,266,292,320,345],C={claude:25,codex:135,cursor:235,native:280,worker:195,pi:330,kimi:238,grok:266,"grok-acp":266};function p(n,o=!1){const t=n.next();return o?Math.floor(t*360):g[Math.floor(t*g.length)]}const E=7;function R(n,o={}){const t=H(n+(o.salt?"#"+o.salt:"")),e=p(t,o.spectrum),l=S(o.hue??e,o.tone),f=t.float(.42,.62),m=t.float(.14,.34),h=t.bool(.5),d=t.bool(.62),y=t.bool(.5),i=t.bool(.5)?2:3,k=t.bool(.6),r=E,u=(r-1)/2,b=Array.from({length:r},()=>Array.from({length:r},()=>"off")),s=(c,a,$)=>{b[c][a]=$,b[c][r-1-a]=$};for(let c=1;c<=5;c++)for(let a=0;a<=u;a++)(a===u?t.next()<.85:t.next()<f)&&s(c,a,t.next()<m?"accent":"body");for(let c=1;c<=u;c++)s(i,c,"body");if(s(i,y?1:2,"eye"),k&&i+2<r&&(s(i+2,u,"mouth"),t.bool(.4)&&s(i+2,u-1,"mouth")),h){const c=t.bool()?1:2;s(0,c,"body")}return d&&(s(r-1,1,"body"),t.bool(.5)&&s(r-1,u,"body")),{size:r,cells:b,palette:l,traits:{antennae:h,legs:d,wideEyes:y,eyeRow:i,mouth:k}}}export{C as H,R as s};
@@ -1 +0,0 @@
1
- import{p as g}from"./lane-observe-DrhKkQ3A.js";import{o as m,a as w}from"./tail-display-BdyoLvzY.js";function x(e){const{agent:s,observe:t}=e,n=t?.metadata?.session,a=t?.events??[],i=t?.files??[];return{tools:a.filter(o=>o.kind==="tool").length,edits:a.filter(o=>o.kind==="tool"&&w(o.tool)).length,reads:a.filter(o=>o.kind==="tool"&&m(o.tool)).length,thinks:a.filter(o=>o.kind==="think").length,files:i.length,events:a.length,model:n?.model??s.model??null,branch:n?.gitBranch??s.branch??null,harness:s.harness??n?.adapterType??null,cwd:n?.cwd??s.cwd??s.projectRoot??null,sessionId:n?.externalSessionId??s.harnessSessionId??null,usage:t?.metadata?.usage??null}}function S(e,s=10){return!e||e.files.length===0?[]:g(e.files).sort((t,n)=>{const a=t.state==="read"?0:1,i=n.state==="read"?0:1;return a!==i?i-a:n.lastT-t.lastT}).slice(0,s)}function j(e,s=220){const t=e.summary?.trim()||e.body.trim()||e.rawText.trim();if(!t)return"";const n=t.replace(/\s+/g," ").trim();return n.length<=s?n:`${n.slice(0,Math.max(0,s-1)).trimEnd()}…`}function k(e){const s=e.replace(/\\/g,"/").replace(/\/+$/g,""),t=s.lastIndexOf("/");return t>=0?s.slice(t+1):s}function u(e){return e.toLowerCase().replace(/[^a-z0-9_/-]+/g," ").split(/\s+/).map(s=>s.trim()).filter(s=>s.length>=4).filter(s=>!["plan","plans","todo","work","task","docs","markdown"].includes(s)).slice(0,8)}function L(e,s){const{agent:t,observe:n,source:a}=s,i=n?.metadata?.session,o=[t.project,t.name,t.branch,t.harness,t.workspaceQualifier,t.harnessSessionId,i?.cwd,i?.gitBranch,i?.model,...n?.files.map(r=>r.path)??[],...n?.events.slice(-12).flatMap(r=>[r.arg,r.text,r.detail])??[]].filter(Boolean).join(" ").toLowerCase();if(!o)return 0;const c=e.path.toLowerCase(),f=k(c).toLowerCase(),d=e.title.toLowerCase();let l=0;e.agentId&&e.agentId===t.id&&(l+=10),e.agentName&&e.agentName===t.name&&(l+=6),e.workspaceName&&t.project&&e.workspaceName.toLowerCase()===t.project.toLowerCase()&&(l+=5),c&&o.includes(c)&&(l+=8),f&&o.includes(f)&&(l+=6),d.length>8&&o.includes(d)&&(l+=6);for(const r of e.tags)r.length>=3&&o.includes(r.toLowerCase())&&(l+=2);for(const r of u(e.title))o.includes(r)&&(l+=1);for(const r of e.steps.slice(0,8))for(const h of u(r.text).slice(0,3))o.includes(h)&&(l+=1);return a==="scout"&&e.source==="openscout"&&(l+=2),l}function p(e,s,t=4){return e.map(n=>({document:n,score:L(n,s)})).filter(n=>n.score>=t).sort((n,a)=>a.score-n.score||a.document.updatedAt-n.document.updatedAt)}function b(e,s,t=4){return p(e,s).filter(n=>n.document.steps.length>0).slice(0,t).map(n=>n.document)}function C(e,s,t=6){return p(e,s).filter(n=>n.document.steps.length===0).slice(0,t).map(n=>n.document)}function y(e,s,t={}){return{plans:b(e,s,t.plans??4),docs:C(e,s,t.docs??6)}}export{S as a,x as b,j as d,y as r};
@@ -1,47 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/xterm-CRLlV1Xp.js","assets/index-sUomXsrf.js","assets/index-DITWsjFb.css","assets/addon-fit-q-x_HytU.js","assets/addon-webgl-fhhvEA9h.js"])))=>i.map(i=>d[i]);
2
- import{r as o,j as n,_ as Xe}from"./index-sUomXsrf.js";import{u as Pt}from"./chunk-HRAB3GC3-CvwpNg-G.js";import{c as Ct}from"./createLucideIcon-DlxlBfLC.js";import{A as Ft}from"./arrow-down-DsD-dYj-.js";const Ht=[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]],Wt=Ct("arrow-up-down",Ht);const Vt=[["path",{d:"m5 12 7-7 7 7",key:"hav0vg"}],["path",{d:"M12 19V5",key:"x0mq9r"}]],Ut=Ct("arrow-up",Vt);var xt=["terminal:ack"];function Tn(e={}){const{url:t="ws://localhost:3600",healthUrl:r,token:s,systemPrompt:a,cwd:i,workspaceFiles:u,autoConnect:k=!1,sessionKey:ae,orphanTTL:se,backend:G,controlMode:N="owner",tmuxSession:P,zellijSession:we,zellijSocketDir:ke,agent:Z,provider:ie,model:J,flowControl:je}=e,S=ae?`hudson.relay.${ae}`:null,$e=()=>{if(!S)return null;try{const d=localStorage.getItem(S);if(!d)return null;if(d.startsWith("{")){const p=JSON.parse(d);return typeof p.id!="string"?null:{id:p.id,reconnectToken:typeof p.reconnectToken=="string"?p.reconnectToken:null}}return{id:d,reconnectToken:null}}catch{return null}},g=o.useCallback((d,p=null)=>{if(S)try{d?localStorage.setItem(S,JSON.stringify({id:d,reconnectToken:p})):localStorage.removeItem(S)}catch{}},[S]),[ge,I]=o.useState("disconnected"),[Oe,ee]=o.useState(null),[Ne,w]=o.useState(null),[Ce,X]=o.useState(null),[A,Re]=o.useState(i||"~"),_=o.useRef(null),O=o.useRef(null),ce=o.useRef({cols:80,rows:24}),B=o.useRef(!1),Y=o.useRef([]),D=o.useRef(0),oe=o.useRef(0),he=o.useRef(0),F=o.useRef(A);F.current=A;const le=o.useRef(!1),be=o.useRef(null);le.current||(le.current=!0,be.current=$e());const v=o.useRef(be.current?.id??null),z=o.useRef(be.current?.reconnectToken??null),j=o.useRef(null),te=o.useRef(null),re=o.useRef(null),ne=o.useRef(new Set),$=je?.maxBufferedBytes??512*1024,T=o.useCallback(d=>{const p=_.current;p&&p.readyState===WebSocket.OPEN&&p.send(JSON.stringify(d))},[]),Ee=o.useCallback((d,p)=>{typeof d=="number"&&p===he.current&&T({type:"terminal:ack",seq:d})},[T]),R=o.useCallback(()=>{he.current+=1,Y.current=[],D.current=0},[]),q=o.useCallback((d,p=null)=>{const Q=he.current;if(!d){Ee(p,Q);return}let H=!1;const pe=()=>{H||(H=!0,Ee(p,Q))};if(j.current)try{j.current(d,pe)}catch{pe()}else for(Y.current.push({data:d,seq:p,ack:pe}),D.current+=d.length;D.current>$&&Y.current.length>0;){const W=Y.current.shift();if(!W)break;D.current-=W.data.length,W.ack()}if(ne.current.size>0)for(const W of ne.current)try{W(d)}catch{}},[Ee,$]),U=o.useCallback((d,p)=>{typeof d!="number"||typeof p!="number"||d<=0||p<=0||(re.current={cols:d,rows:p},te.current?.(d,p))},[]),ue=o.useCallback(()=>{const d=_.current;d&&(d.close(),_.current=null)},[]),l=o.useCallback(()=>{oe.current+=1,O.current&&(clearTimeout(O.current),O.current=null),ue(),B.current=!1,I("disconnected")},[ue]),x=o.useCallback(()=>{const d=F.current;return{type:"session:init",cols:ce.current.cols,rows:ce.current.rows,clientCapabilities:[...xt],...a?{systemPrompt:a}:{},...d?{cwd:d}:{},...u?{workspaceFiles:u}:{},...se?{orphanTTL:se}:{},...G?{backend:G}:{},...N!=="owner"?{controlMode:N}:{},...P?{tmuxSession:P}:{},...we?{zellijSession:we}:{},...ke?{zellijSocketDir:ke}:{},...Z?{agent:Z}:{},...ie?{provider:ie}:{},...J?{model:J}:{}}},[Z,G,N,J,se,ie,a,P,u,we,ke]),b=o.useCallback(()=>{B.current||(B.current=!0,v.current?T({type:"session:reconnect",sessionId:v.current,...z.current?{reconnectToken:z.current}:{},cols:ce.current.cols,rows:ce.current.rows,clientCapabilities:[...xt],...N!=="owner"?{controlMode:N}:{}}):T(x()))},[T,x,N]),y=o.useCallback(async()=>{const d=oe.current+1;oe.current=d,ue(),he.current+=1,B.current=!1,I("connecting"),w(null),X(null);const p=r||`${t.replace(/^ws(s?):\/\//,"http$1://")}/health`;try{const W=await fetch(p,{signal:AbortSignal.timeout(2e3)});if(!W.ok)throw new Error(`Relay health check failed: ${W.status}`)}catch{if(oe.current!==d)return;I("error"),w("Relay service is not running");return}if(oe.current!==d)return;ue();const Q=s?`${t}${t.includes("?")?"&":"?"}token=${encodeURIComponent(s)}`:t,H=new WebSocket(Q);_.current=H;const pe=()=>oe.current===d&&_.current===H;H.onopen=()=>{if(!pe()){H.close();return}b()},H.onmessage=W=>{if(pe())try{const C=JSON.parse(W.data);switch(C.type){case"session:ready":U(C.cols,C.rows),v.current=C.sessionId,z.current=typeof C.reconnectToken=="string"?C.reconnectToken:null,g(C.sessionId,z.current),ee(C.sessionId),I("connected"),w(null),X(null);break;case"terminal:dimensions":U(C.cols,C.rows);break;case"session:expired":{v.current=null,z.current=null,g(null),B.current=!1,R(),q("\x1B[2J\x1B[H",null),T(x()),B.current=!0;break}case"session:error":I("error"),w(C.error||"Session failed to start");break;case"terminal:data":q(C.data||"",typeof C.seq=="number"?C.seq:null);break;case"session:exit":v.current=null,z.current=null,g(null),R(),ee(null),X(C.exitCode??null),C.exitCode!==0?(I("error"),w(C.reason||`Process exited with code ${C.exitCode}`)):I("disconnected");break;case"session:detached":v.current=null,z.current=null,g(null),ee(null);break}}catch{}},H.onclose=()=>{pe()&&(_.current=null,B.current=!1,I(W=>W==="error"?W:"disconnected"))},H.onerror=()=>{pe()&&(I("error"),w("Could not connect to relay"))}},[t,r,s,b,ue,T,q,x,g,R]),de=o.useCallback(d=>{N!=="observe"&&T({type:"terminal:input",data:d})},[N,T]),Ae=o.useCallback(d=>{N!=="observe"&&T({type:"terminal:input",data:d+"\r"})},[N,T]),fe=o.useCallback((d,p)=>{ce.current={cols:d,rows:p},B.current&&T({type:"terminal:resize",cols:d,rows:p})},[T]),M=o.useCallback(d=>{if(j.current=d,!d||Y.current.length===0)return;const p=Y.current;Y.current=[],D.current=0;for(const Q of p)try{d(Q.data,Q.ack)}catch{Q.ack()}},[]),L=o.useCallback(d=>{te.current=d;const p=re.current;d&&p&&d(p.cols,p.rows)},[]),Se=o.useCallback(d=>(ne.current.add(d),()=>{ne.current.delete(d)}),[]);o.useEffect(()=>(k&&y(),()=>{l()}),[]);const me=o.useCallback(()=>{l(),v.current=null,z.current=null,ee(null),g(null),R(),w(null),X(null),O.current=setTimeout(()=>{O.current=null,y()},200)},[l,y,g,R]);return{status:ge,sessionId:Oe,error:Ne,exitCode:Ce,cwd:A,controlMode:N,setCwd:Re,onData:M,onDimensions:L,subscribeData:Se,sendInput:de,sendLine:Ae,resize:fe,connect:y,disconnect:l,restart:me}}var Kt={titleBarInset:0,dragRegionProps:{},onInteractiveMouseDown:void 0,isSSR:!0,apiBaseUrl:"",serviceApiUrl:""},Gt=o.createContext(Kt);function Jt(){return o.useContext(Gt)}var gt="hudson:terminal:voice-transcript",ht="hudson:terminal:voice-submit",In='[data-hudson-terminal-drawer-content="true"]',Xt=o.createContext(void 0),Yt={background:"#091112",foreground:"#d7e5e2",cursor:"#35d7d0",cursorAccent:"#091112",selectionBackground:"#173739",selectionForeground:"#f3fbf9",black:"#091112",red:"#ff6b6b",green:"#35d07f",yellow:"#f5c451",blue:"#62b4ff",magenta:"#ff7ab6",cyan:"#32d5ca",white:"#d7e5e2",brightBlack:"#667777",brightRed:"#ff8f8f",brightGreen:"#5ee79f",brightYellow:"#ffd36e",brightBlue:"#8dccff",brightMagenta:"#ff9fca",brightCyan:"#67eee3",brightWhite:"#ffffff"},qt={background:"#f7faf9",foreground:"#111a19",cursor:"#006f6a",cursorAccent:"#f7faf9",selectionBackground:"#c0e7e2",selectionForeground:"#0d1716",black:"#111a19",red:"#9f1f18",green:"#006c46",yellow:"#704600",blue:"#075985",magenta:"#9d174d",cyan:"#006f6a",white:"#dbe5e2",brightBlack:"#52635f",brightRed:"#c2271f",brightGreen:"#007f55",brightYellow:"#865b00",brightBlue:"#0369a1",brightMagenta:"#be185d",brightCyan:"#007f89",brightWhite:"#ffffff"},Qt=`
3
- .xterm { cursor: text; position: relative; user-select: none; -ms-user-select: none; -webkit-user-select: none; }
4
- .xterm.focus, .xterm:focus { outline: none; }
5
- .xterm .xterm-helpers { position: absolute; top: 0; z-index: 5; }
6
- .xterm .xterm-helper-textarea { padding: 0; border: 0; margin: 0; position: absolute; opacity: 0; left: -9999em; top: 0; width: 0; height: 0; z-index: -5; white-space: nowrap; overflow: hidden; resize: none; }
7
- .xterm .composition-view { background: var(--hud-terminal-bg, #091112); color: var(--hud-terminal-fg, #d7e5e2); display: none; position: absolute; white-space: nowrap; z-index: 1; }
8
- .xterm .composition-view.active { display: block; }
9
- .xterm .xterm-viewport { background-color: var(--hud-terminal-bg, transparent); overflow-y: scroll; cursor: default; position: absolute; right: 0; left: 0; top: 0; bottom: 0; }
10
- .xterm .xterm-screen { position: relative; }
11
- .xterm .xterm-screen canvas { position: absolute; left: 0; top: 0; }
12
- .xterm-char-measure-element { display: inline-block; visibility: hidden; position: absolute; top: 0; left: -9999em; line-height: normal; }
13
- .xterm.enable-mouse-events { cursor: default; }
14
- .xterm.xterm-cursor-pointer, .xterm .xterm-cursor-pointer { cursor: pointer; }
15
- .xterm.column-select.focus { cursor: crosshair; }
16
- .xterm .xterm-accessibility:not(.debug), .xterm .xterm-message { position: absolute; left: 0; top: 0; bottom: 0; right: 0; z-index: 10; color: transparent; pointer-events: none; }
17
- .xterm .xterm-accessibility-tree:not(.debug) *::selection { color: transparent; }
18
- .xterm .xterm-accessibility-tree { font-family: monospace; user-select: text; white-space: pre; }
19
- .xterm .xterm-accessibility-tree > div { transform-origin: left; width: fit-content; }
20
- .xterm .live-region { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
21
- .xterm-dim { opacity: 1 !important; }
22
- .xterm-underline-1 { text-decoration: underline; }
23
- .xterm-underline-2 { text-decoration: double underline; }
24
- .xterm-underline-3 { text-decoration: wavy underline; }
25
- .xterm-underline-4 { text-decoration: dotted underline; }
26
- .xterm-underline-5 { text-decoration: dashed underline; }
27
- .xterm-overline { text-decoration: overline; }
28
- .xterm-overline.xterm-underline-1 { text-decoration: overline underline; }
29
- .xterm-overline.xterm-underline-2 { text-decoration: overline double underline; }
30
- .xterm-overline.xterm-underline-3 { text-decoration: overline wavy underline; }
31
- .xterm-overline.xterm-underline-4 { text-decoration: overline dotted underline; }
32
- .xterm-overline.xterm-underline-5 { text-decoration: overline dashed underline; }
33
- .xterm-strikethrough { text-decoration: line-through; }
34
- .xterm-screen .xterm-decoration-container .xterm-decoration { z-index: 6; position: absolute; }
35
- .xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer { z-index: 7; }
36
- .xterm-decoration-overview-ruler { z-index: 8; position: absolute; top: 0; right: 0; pointer-events: none; }
37
- .xterm-decoration-top { z-index: 2; position: relative; }
38
- .xterm .xterm-scrollable-element > .scrollbar { cursor: default; }
39
- .xterm .xterm-scrollable-element > .scrollbar > .scra { cursor: pointer; font-size: 11px !important; }
40
- .xterm .xterm-scrollable-element > .visible { opacity: 1; background: rgba(0,0,0,0); transition: opacity 100ms linear; z-index: 11; }
41
- .xterm .xterm-scrollable-element > .invisible { opacity: 0; pointer-events: none; }
42
- .xterm .xterm-scrollable-element > .invisible.fade { transition: opacity 800ms linear; }
43
- .xterm .xterm-scrollable-element > .shadow { position: absolute; display: none; }
44
- .xterm .xterm-scrollable-element > .shadow.top { display: block; top: 0; left: 3px; height: 3px; width: 100%; }
45
- .xterm .xterm-scrollable-element > .shadow.left { display: block; top: 3px; left: 0; height: 100%; width: 3px; }
46
- `;function Zt(){if(typeof document>"u"||document.querySelector("[data-xterm-css]"))return;const e=document.createElement("style");e.setAttribute("data-xterm-css",""),e.textContent=Qt,document.head.appendChild(e)}function Ye(e,t){if(typeof e!="object"||e===null)return;const r=e,s=r[t];if(s)return s;const a=r.default;if(!(typeof a!="object"||a===null))return a[t]}function bt(e,t){if(!e||t&&!e.closest(t))return!1;const r=e.getBoundingClientRect();if(r.width<=0||r.height<=0)return!1;const s=window.getComputedStyle(e);return s.display!=="none"&&s.visibility!=="hidden"}var er="\x1B[13;2u",yt="\r";function tr(e){return new Promise((t,r)=>{const s=new FileReader;s.onload=()=>{const a=s.result;t(a.split(",")[1])},s.onerror=r,s.readAsDataURL(e)})}function rr({relay:e,fontSize:t=12,fontFamily:r="'JetBrains Mono', 'Hack Nerd Font', monospace",scrollback:s=5e3,renderer:a="auto",readOnly:i=!1,ariaLabel:u="Terminal",className:k,style:ae,colorScheme:se="auto",configItems:G,onOpenSettings:N,onStartService:P,quiet:we=!1,voiceVisibilityScope:ke,imageUploadUrl:Z,onReady:ie,onDispose:J,onResize:je,onRendererChange:S},$e){const{status:g,error:ge,exitCode:I,cwd:Oe,setCwd:ee,sendInput:Ne,resize:w,onData:Ce,onDimensions:X,connect:A,disconnect:Re,controlMode:_="owner"}=e,O=i||_==="observe",ce=o.useContext(Xt),B=ke===!1?void 0:ke??ce,[Y,D]=o.useState(!1),{apiBaseUrl:oe}=Jt(),he=Pt(),F=se==="auto"?he?.resolvedTheme==="light"?"light":"dark":se,le=F==="light"?qt:Yt,be=F==="light"?4.5:3,v=o.useRef(null),z=o.useRef(null),j=o.useRef(null),te=o.useRef(null),re=o.useRef(null),ne=o.useRef(!1),[$,T]=o.useState(!1),[Ee,R]=o.useState(!1),q=o.useRef(0),U=o.useRef(O),ue=o.useRef(null),l=o.useRef(null),x=o.useRef(null),b=o.useRef(null),y=o.useRef(ie),de=o.useRef(J),Ae=o.useRef(je),fe=o.useRef(S);o.useEffect(()=>{U.current=O,O&&(re.current=null,ne.current=!1,q.current=0,R(!1))},[O]),o.useEffect(()=>{y.current=ie},[ie]),o.useEffect(()=>{de.current=J},[J]),o.useEffect(()=>{Ae.current=je},[je]),o.useEffect(()=>{fe.current=S},[S]),o.useEffect(()=>{const c=v.current;if(!c)return;const f=m=>{m.key===" "&&!m.metaKey&&!m.ctrlKey&&!m.altKey&&m.stopPropagation()};return c.addEventListener("keydown",f),()=>c.removeEventListener("keydown",f)},[]);const M=Z===void 0?`${oe}/api/relay/upload`:Z,L=o.useCallback(c=>{U.current||Ne(c)},[Ne]),Se=o.useCallback((c,f)=>{if(!Number.isFinite(c)||!Number.isFinite(f)||c<=0||f<=0)return;const m=ue.current;m&&m.cols===c&&m.rows===f||(ue.current={cols:c,rows:f},w(c,f),Ae.current?.(c,f))},[w]),me=o.useCallback(()=>{const c=te.current,f=j.current;if(!c||!f)return null;try{const m=c.proposeDimensions();return m?((_!=="observe"||!l.current)&&c.fit(),Se(m.cols,m.rows),l.current??{cols:f.cols,rows:f.rows}):null}catch{return null}},[_,Se]),d=o.useCallback(()=>{x.current===null&&(x.current=window.requestAnimationFrame(()=>{x.current=null,me()}))},[me]);o.useImperativeHandle($e,()=>({focus:()=>{j.current?.focus()},fit:me,clear:()=>{j.current?.clear()},getDimensions:()=>{const c=j.current;return c?{cols:c.cols,rows:c.rows}:null},getTerminal:()=>j.current}),[me]);const p=o.useCallback(c=>{const f=c.transcript.replace(/\s+/g," ").trim();f&&L(c.submit?`${f}${yt}`:f)},[L]),Q=o.useCallback(()=>{L(yt)},[L]);o.useEffect(()=>{const c=f=>{if(U.current||!bt(v.current,B))return;const m=f.detail;if(!(!m||typeof m.transcript!="string")){if(g==="connected"){p(m);return}re.current=m,g!=="connecting"&&A()}};return window.addEventListener(gt,c),()=>window.removeEventListener(gt,c)},[A,p,g,B]),o.useEffect(()=>{if(g!=="connected"||!re.current)return;const c=re.current;re.current=null,p(c)},[p,g]),o.useEffect(()=>{const c=()=>{if(!U.current&&bt(v.current,B)){if(g==="connected"){Q();return}ne.current=!0,g!=="connecting"&&A()}};return window.addEventListener(ht,c),()=>window.removeEventListener(ht,c)},[A,Q,g,B]),o.useEffect(()=>{g!=="connected"||!ne.current||(ne.current=!1,Q())},[Q,g]);const H=o.useCallback(async c=>{if(!M)return null;try{const f=await tr(c),m=await fetch(M,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:c.name,data:f})}),{path:K}=await m.json();return K||null}catch(f){return console.error("File upload failed:",f),null}},[M]);o.useEffect(()=>{const c=v.current;if(!c)return;const f=async m=>{if(!m.clipboardData||!M)return;const K=Array.from(m.clipboardData.items).filter(ye=>ye.type.startsWith("image/"));if(K.length!==0&&(m.preventDefault(),m.stopPropagation(),!U.current))for(const ye of K){const Be=ye.getAsFile();if(!Be)continue;const ze=await H(Be);ze&&L(ze)}};return c.addEventListener("paste",f),()=>c.removeEventListener("paste",f)},[L,H,M]);const pe=o.useCallback(c=>{if(c.preventDefault(),U.current||!M){c.dataTransfer.dropEffect="none";return}c.dataTransfer.dropEffect="copy"},[M]),W=o.useCallback(c=>{if(c.preventDefault(),U.current||!M){q.current=0,R(!1);return}q.current++,c.dataTransfer.types.includes("Files")&&R(!0)},[M]),C=o.useCallback(c=>{if(c.preventDefault(),U.current){q.current=0,R(!1);return}q.current--,q.current===0&&R(!1)},[]),Lt=o.useCallback(async c=>{if(c.preventDefault(),q.current=0,R(!1),U.current||!M)return;const f=Array.from(c.dataTransfer.files).filter(m=>m.type.startsWith("image/"));if(f.length!==0)for(const m of f){const K=await H(m);K&&L(K)}},[L,H,M]);o.useEffect(()=>{let c=!1,f=null;T(!1);async function m(){const[K,ye,Be]=await Promise.all([Xe(()=>import("./xterm-CRLlV1Xp.js").then(E=>E.x),__vite__mapDeps([0,1,2])),Xe(()=>import("./addon-fit-q-x_HytU.js").then(E=>E.a),__vite__mapDeps([3,1,2])),Xe(()=>import("./addon-webgl-fhhvEA9h.js").then(E=>E.a),__vite__mapDeps([4,1,2])).catch(()=>null)]),ze=Ye(K,"Terminal"),dt=Ye(ye,"FitAddon"),ft=Be?Ye(Be,"WebglAddon"):void 0;if(!ze||!dt){console.error("[TerminalRelay] @xterm/xterm or @xterm/addon-fit missing constructors",{xtermMod:K,fitMod:ye});return}if(Zt(),c||!z.current)return;f=new ze({fontSize:t,fontFamily:r,theme:le,minimumContrastRatio:be,cursorBlink:!0,cursorStyle:"bar",allowTransparency:!0,scrollback:s,convertEol:!1,allowProposedApi:!0});const mt=new dt;f.loadAddon(mt),f.open(z.current),j.current=f,te.current=mt;let pt="dom";if(a!=="dom"&&ft)try{const E=new ft;E.onContextLoss(()=>{E.dispose(),fe.current?.("dom")}),f.loadAddon(E),pt="webgl"}catch{}fe.current?.(pt),me(),f.attachCustomKeyEventHandler(E=>E.type==="keydown"&&E.key==="Enter"&&E.shiftKey&&!E.ctrlKey&&!E.altKey&&!E.metaKey?(E.preventDefault(),E.stopPropagation(),L(er),!1):!0),f.onData(E=>{L(E)}),T(!0),y.current?.(f)}return m(),()=>{c=!0,T(!1),x.current!==null&&(window.cancelAnimationFrame(x.current),x.current=null),f&&(f.dispose(),j.current=null,te.current=null),de.current?.()}},[me,a,s,L]),o.useEffect(()=>{const c=j.current;c&&(c.options.fontSize=t,c.options.fontFamily=r,me())},[me,t,r]),o.useEffect(()=>{const c=j.current;c&&(c.options.theme=le,c.options.minimumContrastRatio=be)},[be,le]),o.useEffect(()=>{if(!(!$||!X))return X((c,f)=>{l.current={cols:c,rows:f};const m=j.current;m&&(m.cols!==c||m.rows!==f)&&m.resize(c,f)}),()=>X(null)},[$,X]),o.useEffect(()=>{if($)return Ce((c,f)=>{let m=!1;const K=()=>{m||(m=!0,f())},ye=j.current;if(!ye){K();return}try{ye.write(c,K)}catch{K()}}),()=>{Ce(null)}},[$,Ce]),o.useEffect(()=>{const c=z.current;if(!c||!$)return;const f=new ResizeObserver(()=>{d()});return f.observe(c),()=>{f.disconnect(),x.current!==null&&(window.cancelAnimationFrame(x.current),x.current=null)}},[$,d]),o.useEffect(()=>{g==="connected"&&j.current&&j.current.focus()},[g]);const Ot=o.useCallback(()=>{g==="connected"&&j.current&&j.current.focus()},[g]),Bt=g==="error"&&ge==="Relay service is not running",zt=o.useCallback(async()=>{if(P){D(!0);try{await P()&&(b.current&&clearTimeout(b.current),b.current=setTimeout(()=>{b.current=null,A()},500))}finally{D(!1)}}},[P,A]);o.useEffect(()=>()=>{b.current&&(clearTimeout(b.current),b.current=null)},[]);let _e=null;return Bt?_e=n.jsxs("div",{className:"flex flex-col items-center gap-4 max-w-xs text-center px-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-amber-500/10 border border-amber-500/20 flex items-center justify-center",children:n.jsx("span",{className:"text-amber-400 text-[14px]",children:"!"})}),n.jsxs("div",{children:[n.jsx("div",{className:"text-[12px] text-foreground font-medium mb-1",children:"Relay service not running"}),n.jsx("div",{className:"text-[11px] text-muted-foreground/80 leading-relaxed",children:P?"Start the relay service to open a terminal session.":"Start the relay service from the Workspace Manager."})]}),n.jsxs("div",{className:"flex items-center gap-2",children:[P&&n.jsx("button",{type:"button",onClick:zt,disabled:Y,className:"text-[11px] px-4 py-1.5 rounded-full border border-accent/30 text-accent hover:bg-accent/10 transition-colors font-medium disabled:opacity-50",children:Y?"Starting":"Start Service"}),n.jsx("button",{type:"button",onClick:()=>A(),className:"text-[11px] px-3 py-1.5 rounded-full border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:"Retry"}),N&&n.jsx("button",{type:"button",onClick:N,className:"text-[11px] px-3 py-1.5 rounded-full border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:"Settings"})]})]}):g==="error"&&ge?_e=n.jsxs("div",{className:"flex flex-col items-center gap-3 max-w-md text-center px-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-red-500/10 flex items-center justify-center",children:n.jsx("span",{className:"text-red-400 text-sm",children:"!"})}),n.jsx("span",{className:"text-red-400 text-[12px] font-medium",children:"Session failed"}),n.jsx("code",{className:"text-[11px] text-muted-foreground bg-muted/80 px-3 py-2 rounded-md whitespace-pre-wrap leading-relaxed max-h-32 overflow-y-auto w-full text-left",children:ge}),I!==null&&I!==0&&n.jsxs("span",{className:"text-[10px] text-muted-foreground/60",children:["Exit code ",I]}),n.jsx("button",{type:"button",onClick:()=>A(),className:"text-[11px] px-3 py-1 rounded-full border border-cyan-500/30 text-cyan-400 hover:bg-cyan-500/10 transition-colors",children:"Retry"})]}):g==="disconnected"&&!we?_e=n.jsxs("div",{className:"flex flex-col items-center gap-4 max-w-xs text-center px-4",children:[n.jsx("div",{className:"w-8 h-8 rounded-full bg-muted border border-border flex items-center justify-center",children:n.jsx("span",{className:"text-muted-foreground/80 text-[14px]",children:"▷"})}),n.jsxs("div",{children:[n.jsx("div",{className:"text-[12px] text-foreground font-medium mb-1",children:"Terminal relay disconnected"}),n.jsx("div",{className:"text-[11px] text-muted-foreground/80 leading-relaxed",children:"Set working directory and connect."})]}),n.jsxs("form",{className:"w-full",onSubmit:c=>{c.preventDefault(),A()},children:[n.jsx("label",{className:"text-[10px] font-mono text-muted-foreground/80 uppercase tracking-wider mb-1 block text-left",children:"Working Directory"}),n.jsx("input",{type:"text",value:Oe,onChange:c=>ee(c.target.value),placeholder:"~/dev/my-project",className:"w-full bg-muted/80 border border-border/50 rounded px-3 py-1.5 text-[11px] font-mono text-foreground placeholder:text-muted-foreground/60 outline-none focus:border-accent/40 transition-colors",spellCheck:!1,autoComplete:"off"})]}),G&&G.length>0&&n.jsx("div",{className:"w-full grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 text-[10px] font-mono bg-muted/60 border border-border/40 rounded-md px-3 py-2",children:G.map(c=>n.jsxs("div",{className:"contents",children:[n.jsx("span",{className:"text-muted-foreground/80",children:c.label}),n.jsx("span",{className:"text-muted-foreground truncate text-left",children:c.value})]},c.label))}),n.jsxs("div",{className:"flex items-center gap-2",children:[n.jsx("button",{type:"button",onClick:()=>A(),className:"text-[11px] px-4 py-1.5 rounded-full border border-cyan-500/30 text-cyan-400 hover:bg-cyan-500/10 transition-colors font-medium",children:"Connect"}),N&&n.jsx("button",{type:"button",onClick:N,className:"text-[11px] px-3 py-1.5 rounded-full border border-border text-muted-foreground hover:text-foreground hover:bg-muted transition-colors",children:"Settings"})]})]}):g==="connecting"&&!we&&(_e=n.jsxs("div",{className:"flex flex-col items-center gap-3 text-center",children:[n.jsx("div",{className:"w-6 h-6 border-2 border-muted-foreground/30 border-t-cyan-500 rounded-full animate-spin"}),n.jsx("span",{className:"text-[12px] text-muted-foreground",children:"Connecting to relay"}),n.jsx("button",{type:"button",onClick:()=>{Re()},className:"text-[10px] px-3 py-1 rounded-full border border-border text-muted-foreground/80 hover:text-foreground hover:bg-muted transition-colors",children:"Cancel"})]})),n.jsxs("div",{ref:v,className:k?`relative flex flex-col h-full overflow-hidden ${k}`:"relative flex flex-col h-full overflow-hidden",style:ae,role:"application","aria-label":O?`${u} (read only)`:u,"data-readonly":O?"true":void 0,onClick:Ot,onDragOver:pe,onDragEnter:W,onDragLeave:C,onDrop:Lt,children:[_e&&n.jsx("div",{className:"flex items-center justify-center h-full font-mono text-[12px] absolute inset-0 z-10 bg-background/95",children:_e}),Ee&&n.jsx("div",{className:"absolute inset-0 z-20 flex items-center justify-center bg-cyan-500/10 border-2 border-dashed border-cyan-500/50 rounded pointer-events-none",children:n.jsx("span",{className:"text-cyan-400 font-mono text-sm",children:"Drop image to get path"})}),n.jsx("div",{ref:z,className:"flex-1 min-h-0 min-w-0 overflow-hidden",style:{visibility:_e?"hidden":"visible",backgroundColor:le.background,"--hud-terminal-bg":le.background,"--hud-terminal-fg":le.foreground}})]})}var nr=o.forwardRef(rr);nr.displayName="TerminalRelay";function Ve(e){if(typeof window>"u")return null;try{return e==="local"?window.localStorage:window.sessionStorage}catch{return null}}function sr(e,t){const r=Ve(e);if(!r)return null;try{return r.getItem(t)}catch{return null}}function or(e,t,r){const s=Ve(e);if(!s)return!1;try{return s.setItem(t,r),!0}catch{return!1}}function ar(e,t){const r=Ve(e);if(!r)return!1;try{return r.removeItem(t),!0}catch{return!1}}function ir(e){const t=Ve(e);if(!t)return[];try{const r=[],s=t.length;for(let a=0;a<s;a++){const i=t.key(a);typeof i=="string"&&r.push(i)}return r}catch{return[]}}var Et={getItem(e){return sr("local",e)},setItem(e,t){return or("local",e,t)},removeItem(e){return ar("local",e)},keys(){return ir("local")},isAvailable(){return Ve("local")!==null}};function cr(e="h",t=12){const r=globalThis.crypto;if(r&&typeof r.randomUUID=="function"){const a=r.randomUUID().replace(/-/g,"").slice(0,t);return e?`${e}_${a}`:a}if(r&&typeof r.getRandomValues=="function"){const a=new Uint8Array(Math.ceil(t/2));r.getRandomValues(a);const i=Array.from(a,u=>u.toString(16).padStart(2,"0")).join("").slice(0,t);return e?`${e}_${i}`:i}const s=Math.random().toString(36).slice(2,2+t);return e?`${e}_${s}`:s}var lr=200,ur=()=>Date.now(),dr=()=>cr("h",12),fr=e=>e instanceof Error?{name:e.name,message:e.message}:{message:String(e)},mr=()=>{const e=globalThis;return e.H_OBSERVABILITY===!0||e.H_DEBUG===!0},pr=class{constructor(){this.sinks=new Map}get size(){return this.sinks.size}add(e,t={}){const r=t.kinds?new Set(t.kinds):null;return this.sinks.set(e,{kinds:r}),()=>{this.sinks.delete(e)}}emit(e){for(const[t,r]of this.sinks)if(!(r.kinds&&!r.kinds.has(e.kind)))try{t(e)}catch{}}},xr=class{constructor(e){this.owner=e}log(e,t,r={}){const s={id:this.owner.createId(),kind:"log",timestamp:this.owner.now(),level:e,message:t,category:r.category,data:r.data};return this.owner.emit(s),s}debug(e,t){return this.log("debug",e,t)}info(e,t){return this.log("info",e,t)}warn(e,t){return this.log("warn",e,t)}error(e,t){return this.log("error",e,t)}},gr=class{constructor(e){this.owner=e}counter(e,t=1,r={}){return this.record("counter",e,t,r)}gauge(e,t,r={}){return this.record("gauge",e,t,r)}timing(e,t,r={}){return this.record("timing",e,t,{...r,unit:r.unit??"ms"})}record(e,t,r,s){const a={id:this.owner.createId(),kind:"metric",timestamp:this.owner.now(),metricType:e,name:t,value:r,category:s.category,unit:s.unit,tags:s.tags,data:s.data};return this.owner.emit(a),a}},hr=class{constructor(e,t){this.owner=e,this.event=t,this.ended=!1,this.owner.emit({...t})}end(e){if(this.ended)return this.event;const t=this.owner.now();return this.ended=!0,this.event.endTime=t,this.event.durationMs=Math.max(0,t-this.event.startTime),this.event.status="ok",e&&(this.event.data={...this.event.data,...e}),this.owner.emit({...this.event}),this.event}error(e,t){if(this.ended)return this.event;const r=this.owner.now();return this.ended=!0,this.event.endTime=r,this.event.durationMs=Math.max(0,r-this.event.startTime),this.event.status="error",this.event.error=fr(e),t&&(this.event.data={...this.event.data,...t}),this.owner.emit({...this.event}),this.event}},br=class{constructor(e){this.owner=e}start(e,t={}){const r=this.owner.createId(),s=this.owner.now(),a={id:r,kind:"span",timestamp:s,name:e,traceId:t.traceId??r,parentId:t.parentId,startTime:s,status:"active",category:t.category,data:t.data};return new hr(this.owner,a)}},yr=class St{constructor(t={}){this.logger=new xr(this),this.metrics=new gr(this),this.trace=new br(this),this.sinks=new pr,this.buffer=[],this.enabled=t.enabled??!0,this.maxBufferSize=Math.max(0,t.maxBufferSize??lr),this.nowFn=t.now??ur,this.createIdFn=t.createId??dr}static global(t={}){return new St({...t,enabled:t.enabled??mr()})}get isEnabled(){return this.enabled}setEnabled(t){this.enabled=t}subscribe(t,r={}){const s=this.sinks.add(t,r);if(r.replay)for(const a of this.buffer)r.kinds&&!r.kinds.includes(a.kind)||t(a);return s}flush(){const t=this.buffer.slice();return this.buffer.length=0,t}snapshot(){return this.buffer.slice()}emit(t){return this.enabled&&(this.remember(t),this.sinks.size>0&&this.sinks.emit(t)),t}now(){return this.nowFn()}createId(){return this.createIdFn()}remember(t){this.maxBufferSize!==0&&(this.buffer.push(t),this.buffer.length>this.maxBufferSize&&this.buffer.splice(0,this.buffer.length-this.maxBufferSize))}},Ue=yr.global(),vr=100,wr=class{constructor(e={}){this.entries=[],this.listeners=new Set,this.maxEntries=Math.max(0,e.maxEntries??vr)}snapshot(){return this.entries}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}add(e){return this.maxEntries===0||(this.entries=[e,...this.entries].slice(0,this.maxEntries),this.notify()),e}update(e,t){let r=!1;this.entries=this.entries.map(s=>s.id!==e?s:(r=!0,t(s))),r&&this.notify()}clear(){this.entries.length!==0&&(this.entries=[],this.notify())}notify(){for(const e of this.listeners)try{e()}catch{}}};new wr;var Tt="hudsonTrace",kr=new Set(["cat","find","fd","grep","head","ls","pwd","rg","sed","tail","wc","which"]),jr=new Set(["branch","diff","ls-files","log","rev-parse","show","status"]),It=new Set(["","agent.task"]);function Nr(e,t){const r=e.filter(Me),s=Sr(r);if(t==="raw")return{events:r,hiddenDetailEvents:0,collapsedEvents:0,relatedEventsByTrace:s};const a=Er(r),i=[];let u=0;for(const k of a.values())(t==="details"||Ir(k))&&(u+=k.length,i.push(Tr(k)));return{events:i,hiddenDetailEvents:Math.max(0,r.length-u),collapsedEvents:Math.max(0,u-i.length),relatedEventsByTrace:s}}function Me(e){const t=V(e);return e.category==="agent-action"||t.triggeredBy==="agent"||t.source==="workspace-ai"}function V(e){return e.data&&typeof e.data=="object"&&!Array.isArray(e.data)?e.data:{}}function h(e,t){const r=e[t];return typeof r=="string"&&r.trim()?r:null}function Le(e){return e.kind==="span"?e.traceId:h(V(e),"traceId")}function at(e){return h(V(e),"parentTraceId")}function Je(e){const t=V(e).metadata;if(!ct(t))return null;const r=t.command;return Array.isArray(r)&&r.every(s=>typeof s=="string")?r:typeof r=="string"&&r.trim()?r.trim().split(/\s+/):null}function rt(e){if(!e||e.length===0)return!1;const t=_t(e[0]);if(kr.has(t))return!0;if(t==="git"){const r=e.find((s,a)=>a>0&&!s.startsWith("-"));return r?jr.has(r):!1}return!1}function it(e){const t=V(e),r=h(t,"appId")??h(t,"targetAppId");if(r)return r;const s=h(t,"action")??h(t,"playbook")??h(t,"commandId"),a=s&&!It.has(s)?Ar(s):null;if(a)return a;const i=Je(e);for(const u of i??[]){const k=At(u);if(k)return k}return null}function Cr(e){const t=V(e)[Tt];if(!ct(t))return null;const r=h(t,"traceId"),s=Pe(t,"eventCount"),a=Pe(t,"startedAt"),i=Pe(t,"endedAt"),u=Pe(t,"durationMs"),k=Pe(t,"hiddenDetailEvents")??0;return!r||s===void 0||a===void 0||i===void 0||u===void 0?null:{traceId:r,eventCount:s,startedAt:a,endedAt:i,durationMs:u,hiddenDetailEvents:k}}function Rt(e){if(!e||e.length===0)return null;const t=_t(e[0]),r=e.map(_r).find(Boolean);return rt(e)?r?`Read ${r} with ${t}`:`Read with ${t}`:t==="bun"&&e[1]==="run"&&e[2]?`Run bun ${e[2]}`:e.slice(0,4).join(" ")}function vt(e){return!e||e==="agent.task"?"Agent task":e.replace(/^hudson\./,"").replace(/[._:-]+/g," ").replace(/\s+/g," ").trim().split(" ").map((r,s)=>s===0?Dr(r):r).join(" ")}function Er(e){const t=new Map;for(const r of e){const s=Le(r)??r.id,a=t.get(s);a?a.push(r):t.set(s,[r])}return t}function Sr(e){const t=new Map,r=(s,a)=>{if(!s)return;const i=t.get(s);i?i.some(u=>u.id===a.id)||i.push(a):t.set(s,[a])};for(const s of e)r(Le(s)??s.id,s),r(at(s),s),r(s.kind==="span"?s.parentId??null:null,s);for(const s of t.values())s.sort((a,i)=>a.timestamp-i.timestamp);return t}function Tr(e){const t=[...e].sort((u,k)=>u.timestamp-k.timestamp),r=Qe(t,u=>qe(u)===3)??Qe(t,u=>qe(u)===2)??Qe(t,u=>qe(u)===1)??t[t.length-1],s=Le(r)??r.id,a=t[0]?.timestamp??r.timestamp,i=t[t.length-1]?.timestamp??r.timestamp;return{...r,data:{...V(r),[Tt]:{traceId:s,eventCount:t.length,startedAt:a,endedAt:i,durationMs:Math.max(0,i-a),hiddenDetailEvents:Math.max(0,t.length-1)}}}}function Ir(e){return e.every(t=>at(t))?!1:e.some(t=>{if(t.kind==="span")return!0;const r=V(t),s=h(r,"action")??h(r,"playbook")??"",a=!It.has(s),i=Je(t);return a||h(r,"commandId")||it(t)&&!i||Rr(r)&&!rt(i)?!0:!!(i&&!rt(i))})}function Rr(e){const t=e.args;return ct(t)&&typeof t.prompt=="string"&&t.prompt.trim().length>0}function qe(e){if(e.kind==="span")return e.status==="error"?3:e.status==="ok"?2:e.status==="active"?1:0;const t=h(V(e),"status")??(e.kind==="log"?e.level:void 0);return t==="failed"||t==="error"?3:t==="completed"||t==="ok"?2:t==="started"||t==="active"?1:0}function Qe(e,t){for(let r=e.length-1;r>=0;r--)if(t(e[r]))return e[r]}function Ar(e){if(!e)return null;const[t]=e.split(/[.:_-]/);return t||null}function At(e){const t=e.match(/(?:^|\/)app\/apps\/([^/\s]+)/);return t?t[1]:null}function _r(e){const t=At(e);return t||null}function _t(e){return e.split("/").pop()??e}function ct(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function Pe(e,t){const r=e[t];return typeof r=="number"&&Number.isFinite(r)?r:void 0}function Dr(e){return e&&`${e[0].toUpperCase()}${e.slice(1)}`}var $r=o.createContext(null);function Mr(){return o.useContext($r)}function Lr(e){const t=Mr();return!t||e.startsWith("inst:")||e.startsWith("hudson.ws.")?e:`inst:${t.instanceId}:${e}`}function Or(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)&&typeof e.__v=="number"&&"value"in e}function Br(e,t){const r=Et.getItem(e);if(!r)return;let s;try{s=JSON.parse(r)}catch{return}const a=t?.version;if(a===void 0)return s;const[i,u]=Or(s)?[s.value,s.__v]:[s,0];if(u===a)return i;if(t?.migrate)try{return t.migrate(i,u)}catch{return}}function zr(e,t,r){let s;try{s=JSON.stringify(r===void 0?t:{__v:r,value:t})}catch{return}if(typeof s=="string"&&Et.setItem(e,s))try{window.dispatchEvent(new CustomEvent("hudson:saved",{detail:{key:e}}))}catch{}}var Pr=()=>()=>{},Fr=()=>!0,Hr=()=>!1;function Wr(){return o.useSyncExternalStore(Pr,Fr,Hr)}function Vr(e,t,r={}){const s=Wr(),a=Lr(e),i=r.enabled??!0,{version:u}=r,[k,ae]=o.useState(t),se=o.useRef(!1);if(s&&i&&!se.current){se.current=!0;const G=Br(a,r);G!==void 0&&ae(G)}return o.useEffect(()=>{!s||!i||zr(a,k,u)},[a,k,s,i,u]),[k,ae]}var Ur=["debug","info","warn","error"],Kr=["log","metric","span"],Gr="hudson:open-app",Ze=340,Ge=440,wt=900,Jr=420,Xr="hudson.hud-logger.inspector-width",Yr=1,kt={key:"time",direction:"desc"},jt="grid-cols-[62px_64px_76px_58px_72px_112px_128px_minmax(260px,1fr)_92px]";function qr(e){return typeof e!="number"||e===380?Ge:e}function Dt(e=Ue,t={}){const r=t.maxEvents??200,[s,a]=o.useState(()=>e.snapshot().slice(-r).reverse());return o.useEffect(()=>{const i=()=>{a(e.snapshot().slice(-r).reverse())},u=e.subscribe(i);return i(),u},[r,e]),s}function $t(e){const t=new Map;for(const r of e){if(r.kind!=="span")continue;(!t.get(r.id)||r.status!=="active")&&t.set(r.id,r.status)}return{total:e.length,errors:e.filter(r=>r.kind==="log"&&r.level==="error").length,warnings:e.filter(r=>r.kind==="log"&&r.level==="warn").length,agentActions:e.filter(Me).length,activeSpans:Array.from(t.values()).filter(r=>r==="active").length,lastEvent:e[0]??null}}function Qr(e=Ue,t={}){const r=Dt(e,t);return o.useMemo(()=>$t(r),[r])}function Rn({observability:e=Ue,maxEvents:t=200,label:r="Logs",className:s="",showCounts:a=!1}){const i=Qr(e,{maxEvents:t}),u=i.errors>0?"red":i.warnings>0||i.activeSpans>0?"amber":"emerald";return n.jsxs("span",{className:`inline-flex min-w-0 items-center gap-2 font-mono text-[9px] font-light uppercase tracking-[0.18em] ${vn(u)} ${s}`,title:`${i.total} events, ${i.errors} errors, ${i.activeSpans} active spans`,children:[n.jsx("span",{className:`h-1.5 w-1.5 rounded-full ${wn(u)}`}),n.jsx("span",{children:r}),a&&i.errors>0?n.jsxs("span",{className:"tabular-nums font-semibold",children:[i.errors," err"]}):a&&i.warnings>0?n.jsxs("span",{className:"tabular-nums",children:[i.warnings," warn"]}):null]})}function An({observability:e=Ue,events:t,replayEvents:r,maxEvents:s=200,title:a="HudLogger",className:i="",emptyMessage:u="No events match the current filters.",showHeader:k=!0,showInspector:ae=!0,initialTail:se=!0,initialScope:G="all"}){const N=Dt(e,{maxEvents:s}),P=o.useMemo(()=>t?t.slice(0,s):!r||r.length===0?N:yn(r,N,s),[t,r,N,s]),[we,ke]=o.useState(null),[Z,ie]=o.useState("all"),[J,je]=o.useState("all"),[S,$e]=o.useState(G),[g,ge]=o.useState(G==="agent-actions"?"actions":"raw"),[I,Oe]=o.useState(""),[ee,Ne]=o.useState(se),[w,Ce]=o.useState(kt),[X,A]=o.useState(null),[Re,_]=Vr(Xr,Ge,{version:Yr,migrate:qr}),O=o.useRef(null),ce=o.useRef(null),[B,Y]=o.useState(!1),D=o.useMemo(()=>Nr(P,S==="agent-actions"?g:"raw"),[g,P,S]),oe=S==="agent-actions"?D.events:P,he=o.useMemo(()=>oe.filter(l=>{if(J!=="all"&&l.kind!==J||Z!=="all"&&(l.kind!=="log"||l.level!==Z))return!1;if(!I.trim())return!0;const x=Le(l)??l.id,b=D.relatedEventsByTrace.get(x)??[];return dn(l,b).includes(I.trim().toLowerCase())}),[D.relatedEventsByTrace,J,Z,I,oe]),F=o.useMemo(()=>gn(he,w),[he,w]),be=ee&&w.key==="time"&&w.direction==="desc"?F[0]?Te(F[0]):null:we,v=F.find(l=>Te(l)===be)??F[0]??null,z=v?Le(v)??v.id:null,j=z?D.relatedEventsByTrace.get(z)??[]:[],te=o.useMemo(()=>$t(P),[P]),re=o.useCallback(async(l,x)=>{await bn(l)&&(A(x),window.setTimeout(()=>{A(y=>y===x?null:y)},1200))},[]),ne=o.useCallback(l=>{Ne(!1),ke(Te(l))},[]),$=o.useCallback(l=>{Ne(!1),Ce(x=>x.key!==l?{key:l,direction:xn(l)}:{key:l,direction:x.direction==="asc"?"desc":"asc"})},[]),T=o.useCallback(()=>{ee||Ce(kt),Ne(l=>!l)},[ee]),Ee=o.useCallback(l=>{const x=nt(l);!x||typeof window>"u"||window.dispatchEvent(new CustomEvent(Gr,{detail:{appId:x,workspaceId:on(l),source:"hud-logger"}}))},[]),R=o.useCallback((l,x)=>{const b=Math.min(wt,Math.max(Ze,x-Jr));return Math.max(Ze,Math.min(b,l))},[]),q=o.useCallback(l=>{if(l.button!==0)return;const x=O.current,b=ce.current;if(!x||!b)return;l.preventDefault();const y=l.clientX,de=b.getBoundingClientRect().width;Y(!0),document.body.style.cursor="col-resize",document.body.style.userSelect="none";const Ae=M=>{const L=x.getBoundingClientRect().width,Se=R(de+(y-M.clientX),L);b.style.setProperty("--inspector-width",`${Se}px`)},fe=M=>{const L=x.getBoundingClientRect().width,Se=R(de+(y-M.clientX),L);_(Se),Y(!1),document.body.style.cursor="",document.body.style.userSelect="",window.removeEventListener("pointermove",Ae),window.removeEventListener("pointerup",fe),window.removeEventListener("pointercancel",fe)};window.addEventListener("pointermove",Ae),window.addEventListener("pointerup",fe),window.addEventListener("pointercancel",fe)},[R,_]),U=o.useCallback(()=>{_(Ge)},[_]);o.useEffect(()=>{if(typeof window>"u")return;const l=O.current;if(!l)return;const x=new ResizeObserver(()=>{const b=l.getBoundingClientRect().width;_(y=>{const de=R(y,b);return de===y?y:de})});return x.observe(l),()=>x.disconnect()},[R,_]);const ue=o.useMemo(()=>({"--inspector-width":`${Re}px`}),[Re]);return n.jsxs("section",{ref:O,className:`flex min-h-[520px] flex-col overflow-hidden rounded-md border border-border bg-background text-foreground lg:flex-row ${i}`,children:[n.jsxs("main",{className:"flex min-h-0 min-w-0 flex-col border-b border-border/70 lg:flex-1 lg:border-b-0",children:[k&&n.jsxs("div",{className:"shrink-0 border-b border-border/70 bg-card/80 px-3 py-2.5",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[n.jsx(en,{ariaLabel:"copy filtered table",copied:X==="table",disabled:F.length===0,label:"copy all",onClick:()=>{re(mn(F),"table")}}),n.jsxs("div",{className:"flex flex-wrap items-center gap-x-3 gap-y-1 font-mono text-[11px] font-normal uppercase tracking-[0.14em] text-muted-foreground",children:[n.jsx("span",{children:a}),n.jsxs("span",{className:"text-accent",children:[F.length," shown"]}),n.jsxs("span",{children:[te.total," buffered"]}),n.jsxs("span",{children:[te.agentActions," agent"]}),n.jsxs("span",{children:[te.errors," errors"]}),te.activeSpans>0&&n.jsxs("span",{className:"text-warning",children:[te.activeSpans," active"]}),S==="agent-actions"&&g!=="raw"&&D.hiddenDetailEvents>0&&n.jsxs("span",{children:[D.hiddenDetailEvents," detail hidden"]}),S==="agent-actions"&&D.collapsedEvents>0&&n.jsxs("span",{children:[D.collapsedEvents," collapsed"]})]})]}),n.jsxs("label",{className:"mt-2 flex min-w-0 items-center gap-2 rounded-md border border-border/70 bg-muted/20 px-2.5 py-2 font-mono text-[13px] font-normal text-accent transition-colors focus-within:border-accent/40 focus-within:bg-muted/30",children:[n.jsx("span",{className:"shrink-0 text-success",children:"$"}),n.jsx("input",{value:I,onChange:l=>Oe(l.target.value),placeholder:"grep message, category, payload",className:"min-w-0 flex-1 bg-transparent text-foreground outline-none placeholder:text-muted-foreground"})]}),n.jsxs("details",{className:"mt-2 text-left",children:[n.jsx("summary",{className:"cursor-pointer font-mono text-[11px] font-normal uppercase tracking-[0.14em] text-muted-foreground hover:text-foreground",children:"filters / controls"}),n.jsxs("div",{className:"mt-3 grid gap-3 border-t border-border/60 pt-3 md:grid-cols-[1fr_1fr_1fr_1fr_auto]",children:[n.jsxs(Ke,{label:"Scope",children:[n.jsx(ve,{active:S==="all",onClick:()=>$e("all"),children:"all"}),n.jsx(ve,{active:S==="agent-actions",onClick:()=>$e("agent-actions"),children:"agent actions"})]}),S==="agent-actions"?n.jsxs(Ke,{label:"Rows",children:[n.jsx(ve,{active:g==="actions",onClick:()=>ge("actions"),children:"actions"}),n.jsx(ve,{active:g==="details",onClick:()=>ge("details"),children:"details"}),n.jsx(ve,{active:g==="raw",onClick:()=>ge("raw"),children:"raw"})]}):n.jsx("div",{}),n.jsxs(Ke,{label:"Kind",children:[n.jsx(ve,{active:J==="all",onClick:()=>je("all"),children:"all"}),Kr.map(l=>n.jsx(ve,{active:J===l,onClick:()=>je(l),children:l},l))]}),n.jsxs(Ke,{label:"Level",children:[n.jsx(ve,{active:Z==="all",onClick:()=>ie("all"),children:"all"}),Ur.map(l=>n.jsx(ve,{active:Z===l,onClick:()=>ie(l),children:l},l))]}),n.jsx("div",{className:"flex flex-wrap items-end gap-2",children:n.jsxs("button",{type:"button",onClick:T,className:`rounded-md border px-2.5 py-1.5 font-mono text-[11px] font-normal uppercase tracking-[0.12em] transition-colors ${ee?"border-accent/30 bg-accent/10 text-accent":"border-border/70 bg-muted/20 text-muted-foreground hover:border-border hover:text-foreground"}`,children:["tail ",ee?"on":"off"]})})]})]})]}),n.jsx("div",{className:"max-h-[650px] overflow-auto lg:max-h-none lg:flex-1 lg:min-h-0",children:n.jsxs("div",{className:"min-w-[980px] font-mono text-[11px] font-normal",children:[n.jsxs("div",{className:`sticky top-0 z-10 grid min-h-8 ${jt} items-center border-b border-border/70 bg-card px-3 py-1.5 font-medium uppercase tracking-[0.12em] text-muted-foreground`,children:[n.jsx("span",{className:"sticky left-0 bg-card pr-2",children:"Copy"}),n.jsx("span",{children:"Open"}),n.jsx(De,{column:"time",label:"Time",sort:w,onSort:$}),n.jsx(De,{column:"kind",label:"Kind",sort:w,onSort:$}),n.jsx(De,{column:"level",label:"Level",sort:w,onSort:$}),n.jsx(De,{column:"category",label:"Category",sort:w,onSort:$}),n.jsx(De,{column:"target",label:"Target",sort:w,onSort:$}),n.jsx(De,{column:"message",label:"Message",sort:w,onSort:$}),n.jsx(De,{column:"id",label:"Id",sort:w,onSort:$})]}),F.map(l=>{const x=nt(l),b=Te(l);return n.jsxs("div",{role:"button",tabIndex:0,onClick:()=>ne(l),onKeyDown:y=>{(y.key==="Enter"||y.key===" ")&&(y.preventDefault(),ne(l))},className:`grid min-h-[34px] w-full ${jt} items-center border-b border-l-2 px-3 py-2 text-left transition-colors ${v&&Te(v)===b?"border-b-border/40 border-l-accent bg-accent/[0.08]":"border-b-border/40 border-l-transparent hover:bg-muted/30"}`,children:[n.jsx("button",{type:"button","aria-label":`copy row ${st(l.id)}`,onClick:y=>{y.stopPropagation(),re(ot(l).join(" "),`row:${b}`)},className:`sticky left-0 z-[1] justify-self-start rounded border border-border/70 px-1.5 py-0.5 font-mono text-[10px] font-normal uppercase tracking-[0.1em] text-muted-foreground transition-colors hover:border-accent/30 hover:text-accent ${v&&Te(v)===b?"bg-accent/[0.08]":"bg-background"}`,children:X===`row:${b}`?"copied":"copy"}),x?n.jsx("button",{type:"button","aria-label":`open ${He(l)}`,onClick:y=>{y.stopPropagation(),Ee(l)},className:"justify-self-start rounded border border-border/70 bg-muted/20 px-1.5 py-0.5 font-mono text-[10px] font-normal uppercase tracking-[0.1em] text-muted-foreground transition-colors hover:border-accent/30 hover:text-accent",children:"open"}):n.jsx("span",{className:"text-muted-foreground/45",children:"-"}),n.jsx("span",{className:"tabular-nums text-muted-foreground",children:ut(l)}),n.jsx("span",{className:"uppercase tracking-[0.13em] text-muted-foreground",children:l.kind}),n.jsx("span",{className:`uppercase tracking-[0.13em] ${lt(l)}`,children:xe(l)}),n.jsx("span",{className:"truncate uppercase tracking-[0.13em] text-muted-foreground",children:l.category??"-"}),n.jsx("span",{className:"truncate font-sans text-[12px] font-normal normal-case tracking-normal text-muted-foreground",children:He(l)}),n.jsx("span",{className:"truncate font-sans text-[13px] font-normal normal-case tracking-normal text-foreground",children:Ie(l)}),n.jsx("span",{className:"truncate text-muted-foreground",children:st(l.id)})]},b)}),F.length===0&&n.jsx("div",{className:"border-b border-border/40 px-3 py-5 font-sans text-[13px] text-muted-foreground",children:u})]})})]}),ae&&n.jsxs(n.Fragment,{children:[n.jsx("div",{role:"separator","aria-orientation":"vertical","aria-label":"Resize payload inspector","aria-valuenow":Re,"aria-valuemin":Ze,"aria-valuemax":wt,title:"Drag to resize · Double-click to reset",onPointerDown:q,onDoubleClick:U,className:`group hidden shrink-0 cursor-col-resize items-stretch justify-center transition-colors lg:flex lg:w-[5px] ${B?"bg-accent/15":"hover:bg-accent/10"}`,children:n.jsx("div",{className:`w-px transition-colors ${B?"bg-accent/80":"bg-border group-hover:bg-accent/60"}`})}),n.jsx("aside",{ref:ce,style:ue,className:"flex w-full shrink-0 flex-col bg-background lg:w-[var(--inspector-width)]",children:n.jsx(Zr,{copied:v?X===`inspector:${Te(v)}`:!1,event:v,relatedEvents:j,onCopyRow:l=>{re(ot(l).join(" "),`inspector:${Te(l)}`)},onOpenTarget:Ee})})]})]})}function Zr({copied:e,event:t,relatedEvents:r,onCopyRow:s,onOpenTarget:a}){const i=t?nt(t):null;return n.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[n.jsxs("div",{className:"flex shrink-0 items-center justify-between gap-2 border-b border-border/70 bg-card/40 px-3 py-2.5 lg:px-4",children:[n.jsx("div",{className:"font-mono text-[11px] font-medium uppercase tracking-[0.15em] text-foreground/80",children:"Payload inspector"}),t?n.jsxs("div",{className:"flex items-center gap-2",children:[i?n.jsx("button",{type:"button",onClick:()=>a(t),className:"rounded-md border border-border/70 bg-muted/20 px-2 py-1 font-mono text-[11px] font-normal uppercase tracking-[0.11em] text-muted-foreground transition hover:border-accent/30 hover:text-accent",children:"open app"}):null,n.jsx("button",{type:"button",onClick:()=>s(t),className:"rounded-md border border-border/70 bg-muted/20 px-2 py-1 font-mono text-[11px] font-normal uppercase tracking-[0.11em] text-muted-foreground transition hover:border-accent/30 hover:text-accent",children:e?"copied":"copy row"}),n.jsx("div",{className:`font-mono text-[11px] uppercase tracking-[0.12em] ${lt(t)}`,children:xe(t)})]}):null]}),n.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto px-3 py-3 lg:px-4 lg:py-4",children:t?n.jsxs("div",{className:"grid gap-3",children:[n.jsxs("div",{className:"overflow-hidden rounded-md border border-accent/25 bg-accent/[0.07]",children:[n.jsxs("div",{className:"flex flex-wrap items-center gap-2 border-b border-accent/15 px-3 py-2",children:[n.jsx(tn,{event:t}),n.jsx("span",{className:"font-mono text-[11px] uppercase tracking-[0.12em] text-muted-foreground",children:t.kind})]}),n.jsxs("div",{className:"px-3 py-2",children:[n.jsx("div",{className:"font-mono text-[11px] font-medium uppercase tracking-[0.13em] text-accent",children:"selected event"}),n.jsx("div",{className:"mt-1 break-words text-[14px] font-normal leading-5 text-foreground",children:Ie(t)})]})]}),an(t).map(u=>n.jsx(rn,{section:u},u.title)),n.jsx(nn,{events:r,selectedId:t.id}),n.jsx(et,{label:"payload.data",value:t.data??{}}),t.kind==="metric"&&t.tags?n.jsx(et,{label:"metric.tags",value:t.tags}):null,t.kind==="span"&&t.error?n.jsx(et,{label:"span.error",value:t.error}):null]}):n.jsx("div",{className:"rounded-md border border-border/60 bg-muted/20 p-4 text-[13px] leading-6 text-muted-foreground",children:"No event selected."})})]})}function Ke({label:e,children:t}){return n.jsxs("div",{children:[n.jsx("div",{className:"font-mono text-[11px] uppercase tracking-[0.14em] text-muted-foreground",children:e}),n.jsx("div",{className:"mt-2 flex flex-wrap gap-2",children:t})]})}function ve({active:e,onClick:t,children:r}){return n.jsx("button",{type:"button",onClick:t,className:`rounded-md border px-2 py-1 font-mono text-[11px] uppercase tracking-[0.1em] transition-colors ${e?"border-accent/30 bg-accent/10 text-accent":"border-border/70 bg-muted/20 text-muted-foreground hover:border-border hover:text-foreground"}`,children:r})}function De({column:e,label:t,sort:r,onSort:s}){const a=r.key===e,i=a?r.direction==="asc"?Ut:Ft:Wt,u=r.direction==="asc"?"ascending":"descending";return n.jsxs("button",{type:"button","aria-label":`Sort by ${t}${a?`, currently ${u}`:""}`,"aria-pressed":a,onClick:()=>s(e),className:`flex min-w-0 items-center gap-1.5 text-left uppercase tracking-[0.14em] transition ${a?"text-accent":"text-muted-foreground hover:text-foreground"}`,children:[n.jsx("span",{className:"min-w-0 truncate",children:t}),n.jsx(i,{size:10,strokeWidth:1.75,"aria-hidden":"true",className:"shrink-0"})]})}function en({ariaLabel:e,copied:t,disabled:r=!1,label:s,onClick:a}){return n.jsx("button",{type:"button","aria-label":e,disabled:r,onClick:a,className:"rounded-md border border-border/70 bg-muted/20 px-2 py-1 font-mono text-[11px] font-normal uppercase tracking-[0.11em] text-muted-foreground transition hover:border-accent/30 hover:text-accent disabled:cursor-not-allowed disabled:opacity-40",children:t?"copied":s})}function tn({event:e}){const t=xe(e),r=Fe(e),s=r==="red"?"border-destructive/30 bg-destructive/10 text-destructive":r==="amber"?"border-warning/30 bg-warning/10 text-warning":r==="emerald"?"border-success/30 bg-success/10 text-success":"border-accent/30 bg-accent/10 text-accent";return n.jsx("span",{className:`rounded-full border px-2 py-0.5 font-mono text-[10px] uppercase tracking-[0.11em] ${s}`,children:t})}function rn({section:e}){return n.jsxs("section",{className:"overflow-hidden rounded-md border border-border/60 bg-muted/15",children:[n.jsx("div",{className:"border-b border-border/50 bg-muted/30 px-3 py-2 font-mono text-[10px] font-medium uppercase tracking-[0.14em] text-foreground/70",children:e.title}),n.jsx("div",{className:"divide-y divide-border/40",children:e.rows.map(t=>n.jsx(sn,{row:t},`${e.title}-${t.label}`))})]})}function nn({events:e,selectedId:t}){return e.length<=1?null:n.jsxs("section",{className:"overflow-hidden rounded-md border border-border/60 bg-muted/15",children:[n.jsxs("div",{className:"flex items-center justify-between border-b border-border/50 bg-muted/30 px-3 py-2",children:[n.jsx("div",{className:"font-mono text-[10px] font-medium uppercase tracking-[0.14em] text-foreground/70",children:"Trace lines"}),n.jsx("div",{className:"font-mono text-[10px] font-light uppercase tracking-[0.12em] text-muted-foreground",children:e.length})]}),n.jsx("div",{className:"divide-y divide-border/40",children:e.map(r=>{const s=Rt(Je(r));return n.jsxs("div",{className:`grid grid-cols-[74px_82px_minmax(0,1fr)] gap-2 px-3 py-1.5 ${r.id===t?"bg-accent/10":""}`,children:[n.jsx("span",{className:"font-mono text-[10px] tabular-nums text-muted-foreground",children:ut(r)}),n.jsx("span",{className:`font-mono text-[10px] uppercase tracking-[0.11em] ${lt(r)}`,children:xe(r)}),n.jsx("span",{className:"min-w-0 truncate text-[12px] text-foreground/80",children:s??Ie(r)})]},`${r.id}-${r.timestamp}`)})})]})}function sn({row:e}){return n.jsxs("div",{className:"grid grid-cols-[96px_minmax(0,1fr)] items-start gap-3 px-3 py-2",children:[n.jsx("div",{className:"font-mono text-[10px] font-light uppercase tracking-[0.12em] text-muted-foreground",children:e.label}),n.jsx("div",{className:`min-w-0 break-words text-[12px] leading-5 ${e.mono?"font-mono tabular-nums":"font-sans"} ${cn(e.tone)}`,children:e.value})]})}function et({label:e,value:t}){return n.jsxs("div",{className:"overflow-hidden rounded-md border border-border/60 bg-muted/15",children:[n.jsx("div",{className:"border-b border-border/50 bg-muted/30 px-3 py-2 font-mono text-[10px] font-medium uppercase tracking-[0.14em] text-foreground/70",children:e}),n.jsx("pre",{className:"max-h-[360px] overflow-auto whitespace-pre-wrap break-words p-3 font-mono text-[12px] font-light leading-5 text-foreground/80 lg:max-h-none lg:overflow-x-auto",children:JSON.stringify(t,null,2)})]})}function nt(e){return it(e)}function on(e){const t=V(e);return h(t,"workspaceId")??h(t,"targetWorkspaceId")}function He(e){const t=V(e),r=it(e);return h(t,"appName")??h(t,"appId")??r??h(t,"workspaceName")??h(t,"workspaceId")??h(t,"serviceId")??h(t,"target")??"-"}function an(e){const t=[{title:"Identity",rows:[{label:"id",value:e.id,mono:!0},{label:"kind",value:e.kind,tone:"cyan",mono:!0},{label:"category",value:e.category??"none",mono:!0}]},{title:"Signal",rows:[{label:ln(e),value:xe(e),tone:Fe(e),mono:!0},{label:"timestamp",value:tt(e.timestamp),mono:!0}]}];if(Me(e)){const r=V(e),s=Le(e),a=at(e);t.push({title:"Agent Action",rows:[{label:"source",value:h(r,"source")??"agent",mono:!0},{label:"status",value:h(r,"status")??xe(e),tone:Fe(e),mono:!0},{label:"action",value:h(r,"action")??Ie(e),mono:!0},{label:"target",value:He(e),mono:!0},{label:"workspace",value:h(r,"workspaceName")??h(r,"workspaceId")??"unknown",mono:!0},...s?[{label:"trace",value:s,mono:!0}]:[],...a?[{label:"parent",value:a,mono:!0}]:[]]});const i=fn(e),u=Cr(e);(i||u)&&t.push({title:"Request",rows:[...i?[{label:"prompt",value:i}]:[],...u?[{label:"lines",value:String(u.eventCount),mono:!0},{label:"duration",value:`${u.durationMs}ms`,mono:!0}]:[]]})}return e.kind==="log"&&t.push({title:"Log",rows:[{label:"message",value:e.message},{label:"level",value:e.level,tone:Fe(e),mono:!0}]}),e.kind==="metric"&&t.push({title:"Metric",rows:[{label:"name",value:e.name},{label:"type",value:e.metricType,tone:"emerald",mono:!0},{label:"value",value:un(e),tone:"emerald",mono:!0},{label:"unit",value:e.unit??"none",mono:!0}]}),e.kind==="span"&&t.push({title:"Trace",rows:[{label:"name",value:e.name},{label:"trace id",value:e.traceId,mono:!0},{label:"parent id",value:e.parentId??"none",mono:!0},{label:"status",value:e.status,tone:Fe(e),mono:!0},{label:"duration",value:e.durationMs===void 0?"active":`${e.durationMs}ms`,mono:!0},{label:"started",value:tt(e.startTime),mono:!0},{label:"ended",value:e.endTime===void 0?"pending":tt(e.endTime),mono:!0}]}),t}function Ie(e){if(e.kind==="log"){if(Me(e)){const t=V(e),r=Rt(Je(e));if(r){const u=h(t,"status");return u?`${r} ${u}`:r}const s=h(t,"action")??h(t,"commandId")??e.message,a=h(t,"status"),i=vt(s);return a?`${i} ${a}`:i}return e.message}return Me(e)?vt(e.name):e.name}function xe(e){return e.kind==="log"?Me(e)?h(V(e),"status")??e.level:e.level:e.kind==="metric"?e.metricType:e.status}function lt(e){const t=xe(e);return t==="error"||t==="failed"?"text-destructive":t==="warn"||t==="active"||t==="started"?"text-warning":e.kind==="metric"||t==="ok"||t==="completed"?"text-success":"text-accent"}function Fe(e){const t=xe(e);return t==="error"||t==="failed"?"red":t==="warn"||t==="active"||t==="started"?"amber":e.kind==="metric"||t==="ok"||t==="completed"?"emerald":"cyan"}function cn(e="neutral"){return e==="red"?"text-destructive":e==="amber"?"text-warning":e==="emerald"?"text-success":e==="cyan"?"text-accent":"text-foreground"}function ln(e){return e.kind==="log"?"level":e.kind==="metric"?"type":"status"}function un(e){return`${e.value}${e.unit?` ${e.unit}`:""}`}function tt(e){const t=new Date(e);return`${t.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}.${String(t.getMilliseconds()).padStart(3,"0")}`}function st(e){return e.length>10?e.slice(-10):e}function Te(e){return e.kind==="span"?`${e.kind}:${e.id}:${e.status}:${e.endTime??"active"}`:`${e.kind}:${e.id}:${e.timestamp}`}function ut(e){return new Date(e.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function ot(e){return[ut(e),e.kind,xe(e),e.category??"",He(e),Ie(e),e.id,JSON.stringify(e.data??{})].map(pn)}function dn(e,t){return[Ie(e),e.category??"",JSON.stringify(e.data??{}),...t.map(s=>`${Ie(s)} ${JSON.stringify(s.data??{})}`)].join(" ").toLowerCase()}function fn(e){const r=V(e).args,s=r&&typeof r=="object"&&!Array.isArray(r)?r.prompt:void 0;return typeof s!="string"||!s.trim()?null:s.replace(/\s+/g," ").trim().slice(0,360)}function mn(e){return[["time","kind","signal","category","target","message","id","payload"].join(" "),...e.map(t=>ot(t).join(" "))].join(`
47
- `)}function pn(e){return e.replace(/\s+/g," ").trim()}function xn(e){return e==="time"?"desc":"asc"}function gn(e,t){const r=t.direction==="asc"?1:-1;return e.map((s,a)=>({event:s,index:a})).sort((s,a)=>{const i=hn(Nt(s.event,t.key),Nt(a.event,t.key));return i===0?s.index-a.index:i*r}).map(({event:s})=>s)}function Nt(e,t){switch(t){case"time":return e.timestamp;case"kind":return e.kind;case"level":return xe(e);case"category":return e.category??"";case"target":return He(e);case"message":return Ie(e);case"id":return st(e.id)}}function hn(e,t){return typeof e=="number"&&typeof t=="number"?e-t:String(e).localeCompare(String(t),void 0,{numeric:!0,sensitivity:"base"})}async function bn(e){if(navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}const t=document.createElement("textarea");t.value=e,t.setAttribute("readonly","true"),t.style.position="fixed",t.style.left="-9999px",t.style.top="0",document.body.appendChild(t),t.focus(),t.select();try{return document.execCommand("copy")}finally{document.body.removeChild(t)}}function yn(e,t,r){const s=new Set,a=[];for(const i of t)s.has(i.id)||(s.add(i.id),a.push(i));for(let i=e.length-1;i>=0;i--){const u=e[i];s.has(u.id)||(s.add(u.id),a.push(u))}return a.sort((i,u)=>u.timestamp-i.timestamp),a.slice(0,r)}function vn(e){return e==="red"?"text-destructive":e==="amber"?"text-warning":"text-success"}function wn(e){return e==="red"?"bg-destructive":e==="amber"?"bg-warning":"bg-success"}function Mt(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}function kn(e,t){const r=e.toLowerCase();return r.includes("secret")||r.includes("token")||r.includes("password")||r.includes("apikey")||r.includes("api_key")||t[0]==="set_environment_variable"&&r==="value"}function We(e,t=[]){if(Array.isArray(e))return e.map(s=>We(s,t));if(!Mt(e))return e;const r={};for(const[s,a]of Object.entries(e))r[s]=kn(s,t)?"[redacted]":We(a,[...t,s]);return r}function jn(e){if(e)return e instanceof Error?{name:e.name,message:e.message}:Mt(e)?We(e):{message:String(e)}}function _n(e,t=Ue){const r=e.status??"started",s=r==="failed"?"error":"info";return t.logger[s]("hudson.agent.action",{category:"agent-action",data:{triggeredBy:"agent",source:e.source??"external",origin:e.origin,actor:e.actor,status:r,toolset:e.toolset,chatId:e.chatId,action:e.action,commandId:e.commandId,appId:e.appId,appName:e.appName,workspaceId:e.workspaceId,workspaceName:e.workspaceName,traceId:e.traceId,parentTraceId:e.parentTraceId,args:e.args?We(e.args,[e.action??""]):void 0,metadata:e.metadata?We(e.metadata):void 0,error:jn(e.error)}})}export{In as H,nr as T,Vr as a,Jt as b,cr as c,Xt as d,Ue as e,An as f,Rn as g,_n as l,Tn as u};
@@ -1 +0,0 @@
1
- import{j as r}from"./index-sUomXsrf.js";import{RepoDiffPageScreen as p}from"./RepoDiffPageScreen-BRvaVYoC.js";import{ReposScreen as t}from"./ReposScreen-BBkJf8xT.js";import"./RepoDiffViewerLazy-C8UPk4oo.js";/* empty css */import"./EmptyState-CoL-QuUO.js";import"./ContextMenu-BlBQhpax.js";import"./api-BkjHJfgJ.js";import"./api-h5zurxmi.js";import"./clipboard-e3fSpeo7.js";import"./keyboard-nav-BhZZ5HEq.js";/* empty css */import"./ui-LM8pS8qE.js";import"./selection-bridge-CJOTyYQs.js";import"./SlidePanel-FCqT1zO3.js";import"./cache-Dr0why2k.js";import"./Provider-tFc3jqZ4.js";import"./router-Dja9_ygK.js";import"./terminal-sessions-D5CIR2OL.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./createLucideIcon-DlxlBfLC.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./x-0XjXwGqq.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./time-Dhsh_2EG.js";import"./NewChatOrigin--pHWUb4V.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";import"./refresh-cw-D8PFyhUa.js";import"./sliders-horizontal-B9Nj-Y4J.js";function ti({route:i,navigate:o}){return i.view==="repo-diff"?r.jsx(p,{path:i.path,layers:i.layers,files:i.files,sessionId:i.sessionId,agentId:i.agentId,include:i.include,navigate:o}):i.view==="repos"?r.jsx(t,{navigate:o,focusRoot:i.root??null}):null}export{ti as ReposContent};
@@ -1 +0,0 @@
1
- import{j as e,r as c}from"./index-sUomXsrf.js";import{b as os,c as F,s as as}from"./router-Dja9_ygK.js";import{t as B}from"./time-Dhsh_2EG.js";import{H as ns}from"./agent-identity-xQHedtLl.js";import{i as ls}from"./use-scout-dev-flags-BHvg3G2c.js";import{u as is,r as rs,a as E,b as cs,f as _,c as y,i as D,t as C,M as P,d as A,e as ds,g as ms,h as hs,s as U}from"./mesh-ops-Kn8pCtyJ.js";import{u as us}from"./use-mesh-ops-items-ByGZk8rU.js";/* empty css */import"./terminal-sessions-D5CIR2OL.js";import"./api-h5zurxmi.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";const ps=[{id:"family",label:"family"},{id:"host",label:"host"}],bs=[{key:"lastLook",label:"last-look divider"},{key:"routeStrip",label:"route strip"},{key:"compact",label:"compact rows"},{key:"relays",label:"relay sessions"},{key:"simulateHosts",label:"simulate hosts"}],$=[{nodeId:"sim:studio-tower",label:"studio-tower"},{nodeId:"sim:gpu-box",label:"gpu-box"},{nodeId:"sim:cloud-eu-1",label:"cloud-eu-1"}];function xs(t){let i=0;for(let u=0;u<t.length;u++)i=i*31+t.charCodeAt(u)|0;return Math.abs(i)%($.length+1)}function Ns(t,i,u){return i==="family"?_(t):i==="host"?t.hostLabel??"unattributed":A[C(t,u)]}function fs(t){const i=ns[t.trim().toLowerCase()];return i===void 0?"var(--dim)":`oklch(0.65 0.14 ${i})`}function vs({item:t,selected:i,fresh:u,showHost:f,onSelect:x}){const m=t.attention,b=t.kind==="session"&&t.session?.live===!0,n=m==="interrupt"?"blocked":t.kind==="session"?b?"working":"ended":t.state,p=m==="interrupt"?"danger":m==="badge"||t.state==="review"?"warning":b||t.state==="working"?"accent":"faint",H=m==="interrupt"?" dot--danger dot--pulse":m==="badge"?" dot--warning":b?" dot--working dot--pulse":"",k=m==="silent"&&!b;return e.jsxs("button",{type:"button",className:`mesh-ops-row${i?" mesh-ops-row--selected":""}`,"data-kind":t.kind,"data-fresh":u||void 0,onClick:x,children:[e.jsx("span",{className:`dot${H}`,"data-quiet":k||void 0,"data-hollow":k||void 0,"aria-hidden":!0}),e.jsxs("span",{className:"mesh-ops-row-main",children:[e.jsx("span",{className:"mesh-ops-row-title",children:t.title}),e.jsxs("span",{className:"mesh-ops-row-sub",children:[t.kind," · ",_(t)]})]}),e.jsxs("span",{className:"mesh-ops-row-owner",children:[t.session&&e.jsx("span",{className:"mesh-ops-row-harness",style:{background:fs(t.session.harness)},title:t.session.harness,"aria-hidden":!0}),t.ownerName&&e.jsxs("span",{children:["@",t.ownerName]})]}),e.jsx("span",{className:"mesh-ops-row-route",children:f?t.hostLabel??"—":""}),e.jsxs("span",{className:"mesh-ops-row-state",children:[e.jsx("span",{className:"mesh-ops-row-state-word","data-tone":p,children:m==="badge"&&t.state!=="review"?"flagged":n}),e.jsx("span",{className:"mesh-ops-row-age",children:B(y(t))})]})]})}function ks({hosts:t,newCounts:i,unattributedCount:u,activeHostId:f,unattributedActive:x,onSelect:m,onSelectUnattributed:b}){return e.jsxs("div",{className:"mesh-ops-hosts",role:"group","aria-label":"Hosts",children:[e.jsx("span",{className:"mesh-ops-groupby-label",children:"hosts"}),e.jsx("button",{type:"button",className:`mesh-ops-host${f===null&&!x?" mesh-ops-host--active":""}`,onClick:()=>m(null),title:"Show items across all hosts",children:"all"}),t.map(n=>{const p=i.get(n.nodeId)??0;return e.jsxs("button",{type:"button",className:`mesh-ops-host${f===n.nodeId?" mesh-ops-host--active":""}`,onClick:()=>m(f===n.nodeId?null:n.nodeId),title:n.hostName??n.label,children:[e.jsx("span",{className:`dot${p>0?" dot--warning":n.liveSessionCount>0?" dot--working":""}`,"data-quiet":p===0&&n.liveSessionCount===0?!0:void 0,"aria-hidden":!0}),e.jsx("span",{className:"mesh-ops-host-name",children:n.label}),p>0&&e.jsxs("span",{className:"mesh-ops-host-new",children:[p," new"]}),e.jsxs("span",{className:"mesh-ops-host-meta",children:[n.liveSessionCount>0?`${n.liveSessionCount} live · `:"",n.sessionCount]}),n.lastActivityAt!==null&&e.jsx("span",{className:"mesh-ops-host-age",children:B(n.lastActivityAt)})]},n.nodeId)}),u>0&&e.jsxs("button",{type:"button",className:`mesh-ops-host${x?" mesh-ops-host--active":""}`,onClick:b,title:"Items with no venue host",children:[e.jsx("span",{className:"mesh-ops-host-name",children:"unattributed"}),e.jsx("span",{className:"mesh-ops-host-meta",children:u})]})]})}function js({route:t,navigate:i}){const u=os(t),{loading:f,error:x}=us(u),{items:m,hosts:b,selectedItemId:n,groupBy:p,attnFilter:H,unattributedOnly:k,lab:l}=is(),[G]=c.useState(()=>ls()),[M]=c.useState(()=>rs()),[j,q]=c.useState(()=>Date.now()),[K,z]=c.useState({}),[S,T]=c.useState(null);c.useEffect(()=>{t.itemId&&t.itemId!==n?E(t.itemId):!t.itemId&&n!==null&&E(null)},[t.itemId]),c.useEffect(()=>{const s=window.setInterval(()=>q(Date.now()),3e4);return()=>window.clearInterval(s)},[]),c.useEffect(()=>()=>cs(),[]);const N=c.useMemo(()=>{const s=l.relays?m:m.filter(o=>o.kind!=="session"||o.session?.relay!==!0),d=l.simulateHosts?s.map(o=>{const a=xs(_(o));if(a===0)return o;const h=$[a-1];return{...o,hostNodeId:h.nodeId,hostLabel:h.label}}):s;return k?d.filter(o=>o.hostNodeId===null):d},[m,k,l.relays,l.simulateHosts]),V=l.simulateHosts?S:u,O=c.useMemo(()=>l.simulateHosts&&S?N.filter(s=>s.hostNodeId===S):N,[l.simulateHosts,S,N]),W=c.useMemo(()=>{if(!l.simulateHosts)return b;const s=$.map(d=>{const o=N.filter(a=>a.hostNodeId===d.nodeId);return{nodeId:d.nodeId,label:d.label,hostName:null,brokerUrl:null,tailnetName:null,lastSeenAt:null,registeredAt:null,sessionCount:o.filter(a=>a.kind==="session").length,liveSessionCount:o.filter(a=>a.kind==="session"&&a.session?.live).length,lastActivityAt:o.length>0?Math.max(...o.map(y)):null}});return[...b,...s]},[l.simulateHosts,b,N]),Y=c.useMemo(()=>N.filter(s=>s.hostNodeId===null).length,[N]),J=c.useMemo(()=>{const s=new Map;if(!l.lastLook)return s;for(const d of N)!D(d,M)||!d.hostNodeId||s.set(d.hostNodeId,(s.get(d.hostNodeId)??0)+1);return s},[N,l.lastLook,M]),Q=c.useMemo(()=>{const s={active:0,moving:0,done:0,archive:0};for(const d of O)s[C(d,j)]+=1;return s},[O,j]),v=H??"active",g=c.useMemo(()=>O.filter(s=>C(s,j)===v),[O,v,j]),X=c.useMemo(()=>new Set(g.map(s=>s.hostLabel).filter(Boolean)).size>1,[g]),w=c.useMemo(()=>l.lastLook?s=>D(s,M):()=>!1,[l.lastLook,M]),Z=c.useMemo(()=>{const s=new Map;for(const o of g){const a=Ns(o,p,j),h=s.get(a);h?h.push(o):s.set(a,[o])}return(p==="attention"?P.map(o=>A[o]).filter(o=>s.has(o)):[...s.entries()].sort((o,a)=>{const h=r=>r.some(w)?0:r.some(I=>C(I,j)==="moving")?1:2,L=h(o[1])-h(a[1]);return L!==0?L:Math.max(...a[1].map(y))-Math.max(...o[1].map(y))}).map(([o])=>o)).map(o=>({key:o,items:(s.get(o)??[]).sort((a,h)=>y(h)-y(a))}))},[g,p,w,j]),ss=s=>{E(s.id),i({...t,itemId:s.id})},R=s=>{if(l.simulateHosts){T(s);return}U(!1),i(s?as(t,s):F(t))},es=()=>{if(k){R(null);return}l.simulateHosts&&T(null),i(F(t)),U(!0)};return e.jsxs("div",{className:`mesh-ops-list${l.compact?" mesh-ops-list--compact":""}${l.lastLook?" mesh-ops-list--lastlook":""}`,children:[e.jsxs("div",{className:"mesh-ops-summary",children:[e.jsx("div",{className:"mesh-ops-tabs",role:"tablist","aria-label":"Triage tabs",children:P.map(s=>e.jsxs("button",{type:"button",role:"tab","aria-selected":v===s,className:`mesh-ops-tab${v===s?" mesh-ops-tab--active":""}`,onClick:()=>ds(v===s?null:s),children:[e.jsx("span",{className:`dot${s==="active"||s==="moving"?" dot--working":""}`,"data-quiet":s==="done"||s==="archive"?!0:void 0,"aria-hidden":!0}),A[s],e.jsx("span",{className:"mesh-ops-tab-count",children:Q[s]})]},s))}),e.jsx("span",{className:"mesh-ops-summary-spacer"}),e.jsxs("span",{className:"mesh-ops-groupby",role:"group","aria-label":"Group items by",children:[e.jsx("span",{className:"mesh-ops-groupby-label",children:"group"}),ps.map(s=>e.jsx("button",{type:"button",className:`mesh-ops-groupby-option${p===s.id?" mesh-ops-groupby-option--active":""}`,"aria-pressed":p===s.id,onClick:()=>ms(s.id),children:s.label},s.id))]})]}),e.jsx(ks,{hosts:W,newCounts:J,unattributedCount:Y,activeHostId:V,unattributedActive:k,onSelect:R,onSelectUnattributed:es}),x&&e.jsx("div",{className:"ctx-panel-empty","data-tone":"error",children:x}),!x&&f&&m.length===0&&e.jsx("div",{className:"ctx-panel-empty",children:"Loading mesh ops…"}),!x&&!f&&g.length===0&&e.jsxs("div",{className:"ctx-panel-empty",children:["Nothing in ",A[v],"."]}),Z.map(s=>{const d=v==="done"||v==="archive",o=d?s.items.filter(r=>r.kind!=="session"||r.session?.live===!0):[...s.items],a=d?s.items.filter(r=>r.kind==="session"&&r.session?.live!==!0):[],h=K[s.key]===!0;h&&o.push(...a);const L=l.lastLook?o.findIndex((r,I)=>!w(r)&&o.slice(0,I).some(ts=>w(ts))):-1;return e.jsxs("div",{className:"mesh-ops-group",children:[e.jsxs("div",{className:"mesh-ops-group-head",children:[e.jsx("span",{className:`dot${s.items.some(w)?" dot--warning":""}`,"data-quiet":!s.items.some(w)||void 0,"aria-hidden":!0}),e.jsx("span",{className:"label-sm mesh-ops-group-name",children:s.key}),e.jsx("span",{className:"mesh-ops-group-spacer"}),a.length>0&&e.jsx("button",{type:"button",className:"mesh-ops-group-more",onClick:()=>z(r=>({...r,[s.key]:!h})),children:h?`hide ${a.length} ended`:`+${a.length} ended`}),e.jsx("span",{className:"mesh-ops-group-count",children:s.items.length})]}),o.map((r,I)=>e.jsxs("div",{children:[I===L&&e.jsxs("div",{className:"mesh-ops-lastlook",role:"separator",children:[e.jsx("span",{className:"mesh-ops-lastlook-rule"}),e.jsx("span",{className:"mesh-ops-lastlook-label",children:"last look — above changed since you scanned"}),e.jsx("span",{className:"mesh-ops-lastlook-rule"})]}),e.jsx(vs,{item:r,selected:r.id===n,fresh:w(r),showHost:X,onSelect:()=>ss(r)})]},r.id))]},s.key)}),G&&e.jsxs("div",{className:"mesh-ops-lab",children:[e.jsx("span",{className:"label-xs",children:"lab"}),bs.map(s=>e.jsx("button",{type:"button",className:"mesh-ops-lab-toggle","data-on":l[s.key]||void 0,"aria-pressed":l[s.key],onClick:()=>hs(s.key),children:s.label},s.key))]})]})}function $s({route:t,navigate:i}){return t.view!=="mesh-ops"?null:e.jsx(js,{route:t,navigate:i})}export{$s as MeshOpsContent};
@@ -1 +0,0 @@
1
- import{j as o}from"./index-sUomXsrf.js";import{SessionRefScreen as t}from"./SessionRefScreen-D7TfPYPN.js";import{SessionsScreen as m}from"./SessionsScreen-BlknOWAd.js";import{FlightObserveScreen as p}from"./FlightObserveScreen-C-9S0nA5.js";import"./api-h5zurxmi.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";import"./tail-events-CTipUIli.js";import"./BackToPicker-CkUmHuuo.js";import"./router-Dja9_ygK.js";import"./terminal-sessions-D5CIR2OL.js";import"./ConversationScreen-Dz2d_Z_F.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./createLucideIcon-DlxlBfLC.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./colors-BtO5_zlx.js";import"./time-Dhsh_2EG.js";import"./NewChatOrigin--pHWUb4V.js";import"./keyboard-nav-BhZZ5HEq.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./x-0XjXwGqq.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./file-text-i3xTDUjJ.js";import"./ConversationComposer-BBNPa5S9.js";import"./Provider-tFc3jqZ4.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-BlBQhpax.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";import"./message-markup-C8Nx04sP.js";import"./mentions-CY_wPZc5.js";import"./AgentDetailCard-DxxVkgT1.js";import"./AgentLiveActions-CZdAInEu.js";import"./terminal-takeover-X97KCSJk.js";import"./openContent-C6XO6kr5.js";import"./eye-So8tNNK6.js";import"./terminal-DXQISjZn.js";import"./message-visibility-kJM8XcSG.js";import"./sessionRead-CvFz2RHv.js";import"./clipboard-e3fSpeo7.js";import"./AgentAvatar-CufDA4A-.js";import"./SpriteAvatar-CQs-jC-v.js";import"./agent-identity-xQHedtLl.js";import"./types-B0PlfpKc.js";/* empty css */import"./ConversationHeader-DXMT-YXv.js";import"./ConversationFeedRows-BuejHMCY.js";import"./ConversationPanels-DHCtilQF.js";import"./use-reduced-motion-Cvk-HRKg.js";import"./activity-WhBf3FXP.js";import"./message-circle-C5UZ6fO7.js";import"./tail-display-BdyoLvzY.js";import"./lane-edit-display-C_Aujldz.js";import"./ConversationStatus-DSgdVofa.js";import"./conversation-icons-DohQL6GI.js";import"./SessionObserve-Dlx5vDaV.js";import"./bash-format-BRV5C6Gv.js";import"./lane-tool-detail-0WhMf4Vj.js";import"./LaneToolHoverCard-BzehBmdi.js";import"./lane-observe-DrhKkQ3A.js";import"./lane-ask-display-B6iCAVcd.js";import"./ObservedTopologyPanel-Dv6fbHzW.js";import"./ObserveTextFlow-CBitljxi.js";import"./SessionObserveEvidence-ChBD1d4c.js";import"./wrench-pEVd8JnN.js";import"./external-link-CnjcXf32.js";/* empty css */import"./RawSessionsTable-BsGVgZB3.js";/* empty css */import"./DataTable-0DwuXyvW.js";/* empty css *//* empty css */function Ni({route:i,navigate:r}){return i.view!=="sessions"?null:i.flightId?o.jsx(p,{route:{...i,flightId:i.flightId},navigate:r}):i.sessionId?o.jsx(t,{sessionRef:i.sessionId,navigate:r}):o.jsx(m,{navigate:r})}export{Ni as SessionsContent};
@@ -1 +0,0 @@
1
- import{j as i}from"./index-sUomXsrf.js";import{KnowledgeSearchScreen as o}from"./KnowledgeSearchScreen-DsdDz8wY.js";/* empty css */import"./api-h5zurxmi.js";import"./time-Dhsh_2EG.js";import"./Provider-tFc3jqZ4.js";import"./router-Dja9_ygK.js";import"./terminal-sessions-D5CIR2OL.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";import"./surface-activity-B1rgWB1i.js";import"./colors-BtO5_zlx.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-BlBQhpax.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./createLucideIcon-DlxlBfLC.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./x-0XjXwGqq.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-BhZZ5HEq.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./NewChatOrigin--pHWUb4V.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";import"./sparkles-up7pVlX-.js";import"./clock-DviOalxA.js";function V({route:r,navigate:t}){return r.view!=="search"?null:i.jsx(o,{navigate:t,mode:r.mode,hitId:r.hitId,routeFilters:r.filters})}export{V as SearchContent};
@@ -1 +0,0 @@
1
- import{j as r}from"./index-sUomXsrf.js";import{ActivityScreen as o}from"./ActivityScreen-DnqqRSlS.js";import"./api-h5zurxmi.js";import"./clipboard-e3fSpeo7.js";import"./sse-CVoGDiKW.js";import"./index-BWHgHrtv.js";import"./colors-BtO5_zlx.js";import"./Provider-tFc3jqZ4.js";import"./router-Dja9_ygK.js";import"./terminal-sessions-D5CIR2OL.js";import"./surface-activity-B1rgWB1i.js";import"./scoutbot-BTIErYHo.js";import"./ContextMenu-BlBQhpax.js";import"./DocumentFocusViewer-DU_9BHsD.js";import"./createLucideIcon-DlxlBfLC.js";import"./TextDocumentSurface-C-9EtYqt.js";/* empty css */import"./file-text-i3xTDUjJ.js";import"./x-0XjXwGqq.js";import"./chevron-right-CyUa1zXx.js";import"./code-xml-05TD3uOC.js";import"./arrow-left-WjQIN9J6.js";import"./scout-voice-BZ4KqADJ.js";import"./fx-z37u1o2z.js";import"./keyboard-nav-BhZZ5HEq.js";import"./MessageComposerSuggestions-zAUUcLOv.js";import"./NewChatComposer-B5FnPyzS.js";import"./runtime-picker-DOZpZOlt.js";import"./voice-levels-Dcr3jglk.js";import"./loader-circle-lWOOKezu.js";import"./index-m6dFtY5f.js";import"./HarnessMark-Dm_qm1Ku.js";import"./conversation-model-C4yb6_FA.js";import"./time-Dhsh_2EG.js";import"./NewChatOrigin--pHWUb4V.js";import"./agent-chat-Bfjd9y6c.js";import"./model-Co0zkMIc.js";import"./text-DsBWV_4k.js";import"./chevron-down-BFai6ZfE.js";import"./search-DCT_EvPr.js";import"./chunk-HRAB3GC3-CvwpNg-G.js";import"./mentions-CY_wPZc5.js";import"./AgentDetailCard-DxxVkgT1.js";import"./AgentLiveActions-CZdAInEu.js";import"./terminal-takeover-X97KCSJk.js";import"./openContent-C6XO6kr5.js";import"./eye-So8tNNK6.js";import"./terminal-DXQISjZn.js";import"./EmptyState-CoL-QuUO.js";/* empty css */function tt({route:t,navigate:i}){return t.view!=="activity"?null:r.jsx(o,{navigate:i})}export{tt as ActivityContent};